UNPKG

@cloukit/pagination

Version:

87 lines 9.19 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc */ /*! * @license MIT * Copyright (c) 2017 Bernhard Grünewaldt - codeclou.io * https://github.com/cloukit/legal */ import { PaginationItem } from '../pagination.model'; // // HELPER FUNCTIONS // /** @type {?} */ const createFiller = () => new PaginationItem(-1, false, true, '...'); const ɵ0 = createFiller; /** @type {?} */ const createAnItem = (page, active) => new PaginationItem(page, active, false, `${page}`); const ɵ1 = createAnItem; /** * Provides the pages with a total of seven. See Unit Test. * Examples: * CASE 1: 1 2 3 *4* 5 6 7 * 1 2 3 *4* 5 * CASE 2: 1 2 3 *4* 5 .. 50 * CASE 3: 1 .. 46 *47* 48 49 50 * CASE 4: 1 .. 49 *50* 51 .. 90 * @type {?} */ const calculatePaginationItems = (total, current) => { /** @type {?} */ const paginationItems = []; if (total === undefined || total === null || current === undefined || current === null) { return paginationItems; } // // CASE 1: Total is smaller or equal seven // if (total <= 7) { for (let i = 1; i <= total; i++) { paginationItems.push(new PaginationItem(i, current === i, false, `${i}`)); } } else // // CASE 2: Total is greater than seven AND page is in range of [1-4] // if (total > 7 && current <= 4) { for (let i = 1; i <= 5; i++) { paginationItems.push(createAnItem(i, current === i)); } paginationItems.push(createFiller()); paginationItems.push(createAnItem(total, false)); } else // // CASE 3: Total is greater than seven AND page is greater than four AND page is near total // if (total > 7 && current > 4 && current + 3 >= total) { paginationItems.push(createAnItem(1, false)); paginationItems.push(createFiller()); for (let i = total - 4; i <= total; i++) { paginationItems.push(createAnItem(i, current === i)); } } else // // CASE 4: Total is greater than seven AND page is greater than four // if (total > 7 && current > 4) { paginationItems.push(createAnItem(1, false)); paginationItems.push(createFiller()); paginationItems.push(createAnItem(current - 1, false)); paginationItems.push(createAnItem(current, true)); paginationItems.push(createAnItem(current + 1, false)); paginationItems.push(createFiller()); paginationItems.push(createAnItem(total, false)); } // // END // return paginationItems; }; const ɵ2 = calculatePaginationItems; export { calculatePaginationItems, createFiller }; export { ɵ0, ɵ1, ɵ2 }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi1oZWxwZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY2xvdWtpdC9wYWdpbmF0aW9uLyIsInNvdXJjZXMiOlsibGliL2xvZ2ljL3BhZ2luYXRpb24taGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUtBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7TUFLL0MsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDOzs7TUFDL0QsWUFBWSxHQUFHLENBQUMsSUFBWSxFQUFFLE1BQWUsRUFBRSxFQUFFLENBQUMsSUFBSSxjQUFjLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQzs7Ozs7Ozs7Ozs7O01BV3BHLHdCQUF3QixHQUFHLENBQUMsS0FBYSxFQUFFLE9BQWUsRUFBRSxFQUFFOztVQUM1RCxlQUFlLEdBQXFCLEVBQUU7SUFDNUMsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLFNBQVMsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFO1FBQ3RGLE9BQU8sZUFBZSxDQUFDO0tBQ3hCO0lBQ0QsRUFBRTtJQUNGLDBDQUEwQztJQUMxQyxFQUFFO0lBQ0YsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO1FBQ2QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMvQixlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksY0FBYyxDQUFDLENBQUMsRUFBRSxPQUFPLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUMzRTtLQUNGOztJQUNELEVBQUU7SUFDRixvRUFBb0U7SUFDcEUsRUFBRTtJQUNGLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxFQUFFO1FBQzdCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDM0IsZUFBZSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3REO1FBQ0QsZUFBZSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLGVBQWUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0tBQ2xEOztJQUNELEVBQUU7SUFDRiwyRkFBMkY7SUFDM0YsRUFBRTtJQUNGLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxJQUFJLE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxFQUFFO1FBQ3BELGVBQWUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzdDLGVBQWUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUNyQyxLQUFLLElBQUksQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN2QyxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEQ7S0FDRjs7SUFDRCxFQUFFO0lBQ0Ysb0VBQW9FO0lBQ3BFLEVBQUU7SUFDRixJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksT0FBTyxHQUFHLENBQUMsRUFBRTtRQUM1QixlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM3QyxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDckMsZUFBZSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELGVBQWUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2xELGVBQWUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN2RCxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDckMsZUFBZSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7S0FDbEQ7SUFDRCxFQUFFO0lBQ0YsTUFBTTtJQUNOLEVBQUU7SUFDRixPQUFPLGVBQWUsQ0FBQztBQUN6QixDQUFDOztBQUVELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxZQUFZLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2UgTUlUXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTcgQmVybmhhcmQgR3LDvG5ld2FsZHQgLSBjb2RlY2xvdS5pb1xuICogaHR0cHM6Ly9naXRodWIuY29tL2Nsb3VraXQvbGVnYWxcbiAqL1xuaW1wb3J0IHsgUGFnaW5hdGlvbkl0ZW0gfSBmcm9tICcuLi9wYWdpbmF0aW9uLm1vZGVsJztcblxuLy9cbi8vIEhFTFBFUiBGVU5DVElPTlNcbi8vXG5jb25zdCBjcmVhdGVGaWxsZXIgPSAoKSA9PiBuZXcgUGFnaW5hdGlvbkl0ZW0oLTEsIGZhbHNlLCB0cnVlLCAnLi4uJyk7XG5jb25zdCBjcmVhdGVBbkl0ZW0gPSAocGFnZTogbnVtYmVyLCBhY3RpdmU6IGJvb2xlYW4pID0+IG5ldyBQYWdpbmF0aW9uSXRlbShwYWdlLCBhY3RpdmUsIGZhbHNlLCBgJHtwYWdlfWApO1xuXG4vKipcbiAqIFByb3ZpZGVzIHRoZSBwYWdlcyB3aXRoIGEgdG90YWwgb2Ygc2V2ZW4uIFNlZSBVbml0IFRlc3QuXG4gKiBFeGFtcGxlczpcbiAqICAgQ0FTRSAxOiAgMSAgIDIgICAzICAgKjQqICAgNSAgIDYgICA3XG4gKiAgICAgICAgICAgIDEgICAyICAgMyAgICo0KiAgIDVcbiAqICAgQ0FTRSAyOiAgMSAgIDIgICAzICAgKjQqICAgNSAgIC4uICA1MFxuICogICBDQVNFIDM6ICAxICAgLi4gIDQ2ICAqNDcqICA0OCAgNDkgIDUwXG4gKiAgIENBU0UgNDogIDEgICAuLiAgNDkgICo1MCogIDUxICAuLiAgOTBcbiAqL1xuY29uc3QgY2FsY3VsYXRlUGFnaW5hdGlvbkl0ZW1zID0gKHRvdGFsOiBudW1iZXIsIGN1cnJlbnQ6IG51bWJlcikgPT4ge1xuICBjb25zdCBwYWdpbmF0aW9uSXRlbXM6IFBhZ2luYXRpb25JdGVtW10gPSBbXTtcbiAgaWYgKHRvdGFsID09PSB1bmRlZmluZWQgfHwgdG90YWwgPT09IG51bGwgfHwgY3VycmVudCA9PT0gdW5kZWZpbmVkIHx8IGN1cnJlbnQgPT09IG51bGwpIHtcbiAgICByZXR1cm4gcGFnaW5hdGlvbkl0ZW1zO1xuICB9XG4gIC8vXG4gIC8vIENBU0UgMTogVG90YWwgaXMgc21hbGxlciBvciBlcXVhbCBzZXZlblxuICAvL1xuICBpZiAodG90YWwgPD0gNykge1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHRvdGFsOyBpKyspIHtcbiAgICAgIHBhZ2luYXRpb25JdGVtcy5wdXNoKG5ldyBQYWdpbmF0aW9uSXRlbShpLCBjdXJyZW50ID09PSBpLCBmYWxzZSwgYCR7aX1gKSk7XG4gICAgfVxuICB9IGVsc2VcbiAgLy9cbiAgLy8gQ0FTRSAyOiBUb3RhbCBpcyBncmVhdGVyIHRoYW4gc2V2ZW4gQU5EIHBhZ2UgaXMgaW4gcmFuZ2Ugb2YgWzEtNF1cbiAgLy9cbiAgaWYgKHRvdGFsID4gNyAmJiBjdXJyZW50IDw9IDQpIHtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSA1OyBpKyspIHtcbiAgICAgIHBhZ2luYXRpb25JdGVtcy5wdXNoKGNyZWF0ZUFuSXRlbShpLCBjdXJyZW50ID09PSBpKSk7XG4gICAgfVxuICAgIHBhZ2luYXRpb25JdGVtcy5wdXNoKGNyZWF0ZUZpbGxlcigpKTtcbiAgICBwYWdpbmF0aW9uSXRlbXMucHVzaChjcmVhdGVBbkl0ZW0odG90YWwsIGZhbHNlKSk7XG4gIH0gZWxzZVxuICAvL1xuICAvLyBDQVNFIDM6IFRvdGFsIGlzIGdyZWF0ZXIgdGhhbiBzZXZlbiBBTkQgcGFnZSBpcyBncmVhdGVyIHRoYW4gZm91ciBBTkQgcGFnZSBpcyBuZWFyIHRvdGFsXG4gIC8vXG4gIGlmICh0b3RhbCA+IDcgJiYgY3VycmVudCA+IDQgJiYgY3VycmVudCArIDMgPj0gdG90YWwpIHtcbiAgICBwYWdpbmF0aW9uSXRlbXMucHVzaChjcmVhdGVBbkl0ZW0oMSwgZmFsc2UpKTtcbiAgICBwYWdpbmF0aW9uSXRlbXMucHVzaChjcmVhdGVGaWxsZXIoKSk7XG4gICAgZm9yIChsZXQgaSA9IHRvdGFsIC0gNDsgaSA8PSB0b3RhbDsgaSsrKSB7XG4gICAgICBwYWdpbmF0aW9uSXRlbXMucHVzaChjcmVhdGVBbkl0ZW0oaSwgY3VycmVudCA9PT0gaSkpO1xuICAgIH1cbiAgfSBlbHNlXG4gIC8vXG4gIC8vIENBU0UgNDogVG90YWwgaXMgZ3JlYXRlciB0aGFuIHNldmVuIEFORCBwYWdlIGlzIGdyZWF0ZXIgdGhhbiBmb3VyXG4gIC8vXG4gIGlmICh0b3RhbCA+IDcgJiYgY3VycmVudCA+IDQpIHtcbiAgICBwYWdpbmF0aW9uSXRlbXMucHVzaChjcmVhdGVBbkl0ZW0oMSwgZmFsc2UpKTtcbiAgICBwYWdpbmF0aW9uSXRlbXMucHVzaChjcmVhdGVGaWxsZXIoKSk7XG4gICAgcGFnaW5hdGlvbkl0ZW1zLnB1c2goY3JlYXRlQW5JdGVtKGN1cnJlbnQgLSAxLCBmYWxzZSkpO1xuICAgIHBhZ2luYXRpb25JdGVtcy5wdXNoKGNyZWF0ZUFuSXRlbShjdXJyZW50LCB0cnVlKSk7XG4gICAgcGFnaW5hdGlvbkl0ZW1zLnB1c2goY3JlYXRlQW5JdGVtKGN1cnJlbnQgKyAxLCBmYWxzZSkpO1xuICAgIHBhZ2luYXRpb25JdGVtcy5wdXNoKGNyZWF0ZUZpbGxlcigpKTtcbiAgICBwYWdpbmF0aW9uSXRlbXMucHVzaChjcmVhdGVBbkl0ZW0odG90YWwsIGZhbHNlKSk7XG4gIH1cbiAgLy9cbiAgLy8gRU5EXG4gIC8vXG4gIHJldHVybiBwYWdpbmF0aW9uSXRlbXM7XG59O1xuXG5leHBvcnQgeyBjYWxjdWxhdGVQYWdpbmF0aW9uSXRlbXMsIGNyZWF0ZUZpbGxlciB9O1xuIl19