All files / addon/components/bootstrap/tables -pagination-control.js

61.11% Statements 11/18
37.5% Branches 3/8
57.14% Functions 4/7
61.11% Lines 11/18

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56                      4x 4x 4x 4x                             4x 4x 4x 4x       4x 4x       4x                            
import Component from '@ember/component';
import { computed } from '@ember/object';
import layout from '../../../templates/components/bootstrap/tables/-pagination-control';
import { task } from 'ember-concurrency';
import { isPresent } from '@ember/utils';
import { A } from '@ember/array';
 
export default Component.extend({
  layout,
  classNames: ['row','no-gutters'],
  showPaginationNav: computed('totalPages', 'pageRecordsMeta', function() {
    const onePage = this.get('totalPages') === 1;
    const moreThanFiveRecords = this.get('pageRecordsMeta.countTotal') > 5;
    const moreThanOnePage = this.get('totalPages') > 1;
    return onePage && moreThanFiveRecords ||
      moreThanOnePage && isPresent(this.get('pageRecordsMeta'));
  }),
  onPageTask: task(function * (pageNumber, pageSize) {
    const onPage = yield this.get('onPage');
    this.setProperties({
      pageNumber: pageNumber,
      pageSize: pageSize,
    });
    if(isPresent(onPage)) {
      return yield onPage(pageNumber, pageSize);
    }
  }).restartable(),
 
  calculatePageSizesTask: task(function * () {
    const pageSize = yield this.get('pageSize');
    const defaultPageSizes = yield this.get('defaultPageSizes');
    const validPageSizes = A(A(defaultPageSizes.concat(pageSize)).compact()).uniq();
    return yield this.set('validPageSizes', validPageSizes);
  }).restartable(),
 
  init() {
    this._super(...arguments);
    this.defaultPageSizes = [5, 10, 25, 50, 100];
  },
 
  didReceiveAttrs() {
    this.get('calculatePageSizesTask').perform();
  },
 
  actions: {
    moveToPage(pageNumber){
      return this.get('onPageTask').perform(pageNumber, this.get('pageSize'));
    },
    onPerPage(pageSize) {
      if(isPresent(pageSize)) {
        return this.get('onPageTask').perform(1, pageSize);
      }
    },
  }
});