@vicoders/angular
Version:
- [Vicoders Angular Common Module](#vicoders-angular-common-module) - [Install](#install) - [How to use](#how-to-use) - [Pipes](#pipes) - [hasItem](#hasitem) - [isArray](#isarray) - [length](#length) - [orderBy](#orderby)
128 lines • 10.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, Input, EventEmitter, Output } from '@angular/core';
export class PaginationComponent {
constructor() {
this.goPrev = new EventEmitter();
this.goNext = new EventEmitter();
this.goPage = new EventEmitter();
}
/**
* @return {?}
*/
getMin() {
return this.perPage * this.page - this.perPage + 1;
}
/**
* @return {?}
*/
getMax() {
/** @type {?} */
let max = this.perPage * this.page;
if (max > this.count) {
max = this.count;
}
return max;
}
/**
* @param {?} n
* @return {?}
*/
onPage(n) {
this.goPage.emit(n);
}
/**
* @return {?}
*/
onPrev() {
this.goPrev.emit(true);
}
/**
* @param {?} next
* @return {?}
*/
onNext(next) {
this.goNext.emit(next);
}
/**
* @return {?}
*/
totalPages() {
return Math.ceil(this.count / this.perPage) || 0;
}
/**
* @return {?}
*/
lastPage() {
return this.perPage * this.page > this.count;
}
/**
* @return {?}
*/
getPages() {
/** @type {?} */
const c = Math.ceil(this.count / this.perPage);
/** @type {?} */
const p = this.page || 1;
/** @type {?} */
const pagesToShow = this.pagesToShow || 9;
/** @type {?} */
const pages = [];
pages.push(p);
/** @type {?} */
const times = pagesToShow - 1;
for (let i = 0; i < times; i++) {
if (pages.length < pagesToShow) {
if (Math.min.apply(null, pages) > 1) {
pages.push(Math.min.apply(null, pages) - 1);
}
}
if (pages.length < pagesToShow) {
if (Math.max.apply(null, pages) < c) {
pages.push(Math.max.apply(null, pages) + 1);
}
}
}
pages.sort((a, b) => a - b);
return pages;
}
}
PaginationComponent.decorators = [
{ type: Component, args: [{
selector: 'app-pagination',
template: "<div class=\"row\">\n <div class=\"col-md-5 col-sm-7\">\n <div class=\"description\">\n <span class=\"page-counts\">{{ getMin() }} - {{ getMax() }} of {{ count }}</span>\n <span class=\"page-totals\">{{ totalPages() }} pages</span>\n </div>\n </div>\n <div class=\"col-md-7 col-sm-7\">\n <div class=\"dataTables_paginate paging_simple_numbers\" *ngIf=\"count > 0\">\n\n <ul class=\"pagination\">\n <li class=\"paginate_button previous\" [ngClass]=\"{ 'disabled': page === 1 || loading }\">\n <button class=\"link\" (click)=\"onPrev()\" [disabled]=\"page === 1 || loading\">\n Previous\n </button>\n </li>\n <li class=\"paginate_button\" *ngFor=\"let pageNum of getPages()\" (click)=\"onPage(pageNum)\" [ngClass]=\"{'active': pageNum === page, 'disabled': loading}\">\n <a href=\"javascript:;\">{{ pageNum }}</a>\n </li>\n <li class=\"paginate_button next\" [ngClass]=\"{ 'disabled': lastPage() || loading }\">\n <button class=\"link\" (click)=\"onNext(true)\" [disabled]=\"lastPage() || loading\">\n Next\n </button>\n </li>\n </ul>\n </div>\n </div>\n</div>",
styles: [""]
}] }
];
PaginationComponent.ctorParameters = () => [];
PaginationComponent.propDecorators = {
pagesToShow: [{ type: Input }],
page: [{ type: Input }],
count: [{ type: Input }],
perPage: [{ type: Input }],
loading: [{ type: Input }],
goPrev: [{ type: Output }],
goNext: [{ type: Output }],
goPage: [{ type: Output }]
};
if (false) {
/** @type {?} */
PaginationComponent.prototype.pagesToShow;
/** @type {?} */
PaginationComponent.prototype.page;
/** @type {?} */
PaginationComponent.prototype.count;
/** @type {?} */
PaginationComponent.prototype.perPage;
/** @type {?} */
PaginationComponent.prototype.loading;
/** @type {?} */
PaginationComponent.prototype.goPrev;
/** @type {?} */
PaginationComponent.prototype.goNext;
/** @type {?} */
PaginationComponent.prototype.goPage;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Admljb2RlcnMvYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9kaXJlY3RpdmVzL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPdkUsTUFBTTtJQVdKO1FBSlUsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDckMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDckMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFFL0IsQ0FBQzs7OztJQUVoQixNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDckQsQ0FBQzs7OztJQUVELE1BQU07O1lBQ0EsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUk7UUFDbEMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNwQixHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNsQjtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQzs7Ozs7SUFFRCxNQUFNLENBQUMsQ0FBUztRQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7Ozs7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQzs7Ozs7SUFFRCxNQUFNLENBQUMsSUFBYTtRQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDOzs7O0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkQsQ0FBQzs7OztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQy9DLENBQUM7Ozs7SUFFRCxRQUFROztjQUNBLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQzs7Y0FDeEMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQzs7Y0FDbEIsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQzs7Y0FDbkMsS0FBSyxHQUFhLEVBQUU7UUFDMUIsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzs7Y0FDUixLQUFLLEdBQUcsV0FBVyxHQUFHLENBQUM7UUFDN0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM5QixJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsV0FBVyxFQUFFO2dCQUM5QixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ25DLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2lCQUM3QzthQUNGO1lBQ0QsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLFdBQVcsRUFBRTtnQkFDOUIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNuQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztpQkFDN0M7YUFDRjtTQUNGO1FBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM1QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7OztZQXZFRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIsK3JDQUEwQzs7YUFFM0M7Ozs7MEJBRUUsS0FBSzttQkFDTCxLQUFLO29CQUNMLEtBQUs7c0JBQ0wsS0FBSztzQkFDTCxLQUFLO3FCQUVMLE1BQU07cUJBQ04sTUFBTTtxQkFDTixNQUFNOzs7O0lBUlAsMENBQTZCOztJQUM3QixtQ0FBc0I7O0lBQ3RCLG9DQUF1Qjs7SUFDdkIsc0NBQXlCOztJQUN6QixzQ0FBMEI7O0lBRTFCLHFDQUErQzs7SUFDL0MscUNBQStDOztJQUMvQyxxQ0FBOEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcGFnaW5hdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGFnaW5hdGlvbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2luYXRpb25Db21wb25lbnQge1xuICBASW5wdXQoKSBwYWdlc1RvU2hvdzogbnVtYmVyO1xuICBASW5wdXQoKSBwYWdlOiBudW1iZXI7XG4gIEBJbnB1dCgpIGNvdW50OiBudW1iZXI7XG4gIEBJbnB1dCgpIHBlclBhZ2U6IG51bWJlcjtcbiAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbjtcblxuICBAT3V0cHV0KCkgZ29QcmV2ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgZ29OZXh0ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgZ29QYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIGdldE1pbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBlclBhZ2UgKiB0aGlzLnBhZ2UgLSB0aGlzLnBlclBhZ2UgKyAxO1xuICB9XG5cbiAgZ2V0TWF4KCk6IG51bWJlciB7XG4gICAgbGV0IG1heCA9IHRoaXMucGVyUGFnZSAqIHRoaXMucGFnZTtcbiAgICBpZiAobWF4ID4gdGhpcy5jb3VudCkge1xuICAgICAgbWF4ID0gdGhpcy5jb3VudDtcbiAgICB9XG4gICAgcmV0dXJuIG1heDtcbiAgfVxuXG4gIG9uUGFnZShuOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmdvUGFnZS5lbWl0KG4pO1xuICB9XG5cbiAgb25QcmV2KCk6IHZvaWQge1xuICAgIHRoaXMuZ29QcmV2LmVtaXQodHJ1ZSk7XG4gIH1cblxuICBvbk5leHQobmV4dDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZ29OZXh0LmVtaXQobmV4dCk7XG4gIH1cblxuICB0b3RhbFBhZ2VzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGguY2VpbCh0aGlzLmNvdW50IC8gdGhpcy5wZXJQYWdlKSB8fCAwO1xuICB9XG5cbiAgbGFzdFBhZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucGVyUGFnZSAqIHRoaXMucGFnZSA+IHRoaXMuY291bnQ7XG4gIH1cblxuICBnZXRQYWdlcygpOiBudW1iZXJbXSB7XG4gICAgY29uc3QgYyA9IE1hdGguY2VpbCh0aGlzLmNvdW50IC8gdGhpcy5wZXJQYWdlKTtcbiAgICBjb25zdCBwID0gdGhpcy5wYWdlIHx8IDE7XG4gICAgY29uc3QgcGFnZXNUb1Nob3cgPSB0aGlzLnBhZ2VzVG9TaG93IHx8IDk7XG4gICAgY29uc3QgcGFnZXM6IG51bWJlcltdID0gW107XG4gICAgcGFnZXMucHVzaChwKTtcbiAgICBjb25zdCB0aW1lcyA9IHBhZ2VzVG9TaG93IC0gMTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRpbWVzOyBpKyspIHtcbiAgICAgIGlmIChwYWdlcy5sZW5ndGggPCBwYWdlc1RvU2hvdykge1xuICAgICAgICBpZiAoTWF0aC5taW4uYXBwbHkobnVsbCwgcGFnZXMpID4gMSkge1xuICAgICAgICAgIHBhZ2VzLnB1c2goTWF0aC5taW4uYXBwbHkobnVsbCwgcGFnZXMpIC0gMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChwYWdlcy5sZW5ndGggPCBwYWdlc1RvU2hvdykge1xuICAgICAgICBpZiAoTWF0aC5tYXguYXBwbHkobnVsbCwgcGFnZXMpIDwgYykge1xuICAgICAgICAgIHBhZ2VzLnB1c2goTWF0aC5tYXguYXBwbHkobnVsbCwgcGFnZXMpICsgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcGFnZXMuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICAgIHJldHVybiBwYWdlcztcbiAgfVxufVxuIl19