mirror of
				https://github.com/datahub-project/datahub.git
				synced 2025-10-31 02:37:05 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import Ember from 'ember';
 | |
| 
 | |
| const {
 | |
|   Component,
 | |
|   computed,
 | |
|   getProperties,
 | |
|   get
 | |
| } = Ember;
 | |
| 
 | |
| export default Component.extend({
 | |
|   tagName: '',
 | |
| 
 | |
|   classNames: ['nacho-pager'],
 | |
| 
 | |
|   pages: computed('numberOfPages', function () {
 | |
|     const numberOfPages = get(this, 'numberOfPages');
 | |
| 
 | |
|     return [...Array(numberOfPages).keys()].map(x => x + 1);
 | |
|   }),
 | |
| 
 | |
|   numberOfPages: computed('data', 'limit', function () {
 | |
|     const { data, limit: rowsPerPage = 1 } = getProperties(
 | |
|       this,
 | |
|       'data',
 | |
|       'limit'
 | |
|     );
 | |
|     let numberOfPages = 1;
 | |
| 
 | |
|     if (Array.isArray(data)) {
 | |
|       const needsExtraPage = data.length % rowsPerPage;
 | |
|       numberOfPages = Math.floor(data.length / rowsPerPage);
 | |
|       needsExtraPage && ++numberOfPages;
 | |
|     }
 | |
| 
 | |
|     return numberOfPages;
 | |
|   }),
 | |
| 
 | |
|   actions: {
 | |
|     onDecrementPage() {
 | |
|       let page = get(this, 'page');
 | |
| 
 | |
|       if (page > 1) {
 | |
|         get(this, 'onPageChanged')(page - 1);
 | |
|       }
 | |
|     },
 | |
| 
 | |
|     onIncrementPage() {
 | |
|       let page = get(this, 'page');
 | |
|       let max = Math.max(...get(this, 'pages'));
 | |
| 
 | |
|       if (page < max) {
 | |
|         get(this, 'onPageChanged')(page + 1);
 | |
|       }
 | |
|     },
 | |
| 
 | |
|     changePage(page) {
 | |
|       get(this, 'onPageChanged')(page);
 | |
|     },
 | |
| 
 | |
|     changeLimit(limit) {
 | |
|       get(this, 'onLimitChanged')(limit);
 | |
|     }
 | |
|   }
 | |
| });
 | 
