datahub/wherehows-web/app/components/dataset-table-pager.js

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);
}
}
});