UNPKG

angular-material-datatransfer-lib

Version:

A HTML5 datatransfer UI for handling upload and download of multiple simultaneous files.

250 lines 17.9 kB
/** * @fileoverview added by tsickle * Generated from: lib/services/pagination.service.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injectable } from '@angular/core'; import { PaginationContainer } from '../models/pagination-container.model'; import { DatatransferStore } from '../stores/datatransfer.store'; var PaginationService = /** @class */ (function () { function PaginationService(datatransferStore) { this.datatransferStore = datatransferStore; this.paginatedItems = []; this.pagination = new PaginationContainer(); } /** * @param {?} rppOptions * @return {?} */ PaginationService.prototype.setRppOptions = /** * @param {?} rppOptions * @return {?} */ function (rppOptions) { this.pagination.rppOptions = rppOptions; this.setPaginationContainer(); }; /** * @param {?} total * @return {?} */ PaginationService.prototype.update = /** * @param {?} total * @return {?} */ function (total) { if (total <= 0) { this.paginatedItems.length = 0; } this.pagination.total = total; this.setPaginationContainer(); }; /** * @return {?} */ PaginationService.prototype.setPaginationContainer = /** * @return {?} */ function () { /** @type {?} */ var pageCount = this.pageCount(); if (this.pagination.pages.length > pageCount) { this.pagination.pages.splice(pageCount); } else { for (var i = this.pagination.pages.length; i < pageCount; i++) { this.pagination.pages.push(i + 1); } } if (!this.pagination.pages.includes(this.pagination.page)) { this.pagination.page = 1; } if (!!this.pagination.rppOptions && this.pagination.rppOptions.length > 0 && !this.pagination.rppOptions.includes(this.pagination.rpp)) { this.pagination.rpp = this.pagination.rppOptions[0]; } this.onPaginationChange(); }; /** * @return {?} */ PaginationService.prototype.max = /** * @return {?} */ function () { return this.hasNext() ? this.pagination.page * this.pagination.rpp : this.pagination.total; }; /** * @return {?} */ PaginationService.prototype.min = /** * @return {?} */ function () { return this.pagination.total > 0 ? this.pagination.page * this.pagination.rpp - this.pagination.rpp + 1 : 0; }; /** * @return {?} */ PaginationService.prototype.first = /** * @return {?} */ function () { this.pagination.page = 1; this.onPaginationChange(); }; /** * @return {?} */ PaginationService.prototype.last = /** * @return {?} */ function () { this.pagination.page = this.pageCount(); this.onPaginationChange(); }; /** * @return {?} */ PaginationService.prototype.hasNext = /** * @return {?} */ function () { return this.pagination.page * this.pagination.rpp < this.pagination.total; }; /** * @return {?} */ PaginationService.prototype.hasPrevious = /** * @return {?} */ function () { return this.pagination.page > 1; }; /** * @return {?} */ PaginationService.prototype.moveNext = /** * @return {?} */ function () { this.pagination.page++; this.onPaginationChange(); }; /** * @return {?} */ PaginationService.prototype.movePrevious = /** * @return {?} */ function () { this.pagination.page--; this.onPaginationChange(); }; /** * @param {?} page * @return {?} */ PaginationService.prototype.setPage = /** * @param {?} page * @return {?} */ function (page) { this.pagination.page = page; this.onPageChange(); }; /** * @return {?} */ PaginationService.prototype.onPageChange = /** * @return {?} */ function () { this.setPaginationContainer(); this.onPaginationChange(); }; /** * @return {?} */ PaginationService.prototype.onRppChange = /** * @return {?} */ function () { this.setPaginationContainer(); this.pagination.page = 1; this.onPaginationChange(); }; /** * @return {?} */ PaginationService.prototype.onPaginationChange = /** * @return {?} */ function () { /** @type {?} */ var startIndex = (this.pagination.page - 1) * this.pagination.rpp; /** @type {?} */ var endIndex = Math.min(startIndex + this.pagination.rpp, this.pagination.total); this.paginatedItems = this.datatransferStore.getItems().slice(startIndex, endIndex); }; /** * @return {?} */ PaginationService.prototype.pageCount = /** * @return {?} */ function () { return this.pagination.total > 0 ? Math.ceil(this.pagination.total / (this.pagination.rpp > 0 ? this.pagination.rpp : 1)) : 1; }; /** * @param {?} id * @return {?} */ PaginationService.prototype.getPageByItemId = /** * @param {?} id * @return {?} */ function (id) { /** @type {?} */ var index = this.datatransferStore.getIndexById(id); if (index > -1) { return Math.ceil((index + 1) / this.pagination.rpp); } }; /** * @param {?} id * @return {?} */ PaginationService.prototype.setPageByItemId = /** * @param {?} id * @return {?} */ function (id) { /** @type {?} */ var page = this.getPageByItemId(id); if (this.pagination.page !== page) { this.setPage(page); } }; PaginationService.decorators = [ { type: Injectable } ]; /** @nocollapse */ PaginationService.ctorParameters = function () { return [ { type: DatatransferStore } ]; }; return PaginationService; }()); export { PaginationService }; if (false) { /** @type {?} */ PaginationService.prototype.pagination; /** @type {?} */ PaginationService.prototype.paginatedItems; /** * @type {?} * @private */ PaginationService.prototype.datatransferStore; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhci1tYXRlcmlhbC1kYXRhdHJhbnNmZXItbGliLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL3BhZ2luYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUF3QixtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRWpHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWpFO0lBTUksMkJBQW9CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBRmpELG1CQUFjLEdBQXdCLEVBQUUsQ0FBQztRQUc1QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksbUJBQW1CLEVBQUUsQ0FBQztJQUNoRCxDQUFDOzs7OztJQUVELHlDQUFhOzs7O0lBQWIsVUFBYyxVQUFvQjtRQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDeEMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDbEMsQ0FBQzs7Ozs7SUFFRCxrQ0FBTTs7OztJQUFOLFVBQU8sS0FBYTtRQUNoQixJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUU7WUFDWixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7U0FDbEM7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDbEMsQ0FBQzs7OztJQUVELGtEQUFzQjs7O0lBQXRCOztZQUNVLFNBQVMsR0FBVyxJQUFJLENBQUMsU0FBUyxFQUFFO1FBQzFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFNBQVMsRUFBRTtZ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QyxDQUFDLENBQUM7SUFDbEksQ0FBQzs7Ozs7SUFFRCwyQ0FBZTs7OztJQUFmLFVBQWdCLEVBQVU7O1lBQ2hCLEtBQUssR0FBVyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUM3RCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRTtZQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3ZEO0lBQ0wsQ0FBQzs7Ozs7SUFFRCwyQ0FBZTs7OztJQUFmLFVBQWdCLEVBQVU7O1lBQ2hCLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztRQUNyQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRTtZQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQzs7Z0JBcEhKLFVBQVU7Ozs7Z0JBRkYsaUJBQWlCOztJQXVIMUIsd0JBQUM7Q0FBQSxBQXJIRCxJQXFIQztTQXBIWSxpQkFBaUI7OztJQUUxQix1Q0FBd0M7O0lBQ3hDLDJDQUFnRDs7Ozs7SUFFcEMsOENBQTRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJUGFnaW5hdGlvbkNvbnRhaW5lciwgUGFnaW5hdGlvbkNvbnRhaW5lciB9IGZyb20gJy4uL21vZGVscy9wYWdpbmF0aW9uLWNvbnRhaW5lci5tb2RlbCc7XHJcbmltcG9ydCB7IElEYXRhdHJhbnNmZXJJdGVtIH0gZnJvbSAnLi4vbW9kZWxzL2RhdGF0cmFuc2Zlci1pdGVtLm1vZGVsJztcclxuaW1wb3J0IHsgRGF0YXRyYW5zZmVyU3RvcmUgfSBmcm9tICcuLi9zdG9yZXMvZGF0YXRyYW5zZmVyLnN0b3JlJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFBhZ2luYXRpb25TZXJ2aWNlIHtcclxuXHJcbiAgICBwdWJsaWMgcGFnaW5hdGlvbjogSVBhZ2luYXRpb25Db250YWluZXI7XHJcbiAgICBwdWJsaWMgcGFnaW5hdGVkSXRlbXM6IElEYXRhdHJhbnNmZXJJdGVtW10gPSBbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGF0cmFuc2ZlclN0b3JlOiBEYXRhdHJhbnNmZXJTdG9yZSkge1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvbiA9IG5ldyBQYWdpbmF0aW9uQ29udGFpbmVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0UnBwT3B0aW9ucyhycHBPcHRpb25zOiBudW1iZXJbXSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvbi5ycHBPcHRpb25zID0gcnBwT3B0aW9ucztcclxuICAgICAgICB0aGlzLnNldFBhZ2luYXRpb25Db250YWluZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGUodG90YWw6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIGlmICh0b3RhbCA8PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGVkSXRlbXMubGVuZ3RoID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uLnRvdGFsID0gdG90YWw7XHJcbiAgICAgICAgdGhpcy5zZXRQYWdpbmF0aW9uQ29udGFpbmVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0UGFnaW5hdGlvbkNvbnRhaW5lcigpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBwYWdlQ291bnQ6IG51bWJlciA9IHRoaXMucGFnZUNvdW50KCk7XHJcbiAgICAgICAgaWYgKHRoaXMucGFnaW5hdGlvbi5wYWdlcy5sZW5ndGggPiBwYWdlQ291bnQpIHtcclxuICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uLnBhZ2VzLnNwbGljZShwYWdlQ291bnQpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnBhZ2luYXRpb24ucGFnZXMubGVuZ3RoOyBpIDwgcGFnZUNvdW50OyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbi5wYWdlcy5wdXNoKGkgKyAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMucGFnaW5hdGlvbi5wYWdlcy5pbmNsdWRlcyh0aGlzLnBhZ2luYXRpb24ucGFnZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uLnBhZ2UgPSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoISF0aGlzLnBhZ2luYXRpb24ucnBwT3B0aW9ucyAmJiB0aGlzLnBhZ2luYXRpb24ucnBwT3B0aW9ucy5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICYmICF0aGlzLnBhZ2luYXRpb24ucnBwT3B0aW9ucy5pbmNsdWRlcyh0aGlzLnBhZ2luYXRpb24ucnBwKSkge1xyXG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRpb24ucnBwID0gdGhpcy5wYWdpbmF0aW9uLnJwcE9wdGlvbnNbMF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub25QYWdpbmF0aW9uQ2hhbmdlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbWF4KCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzTmV4dCgpID8gdGhpcy5wYWdpbmF0aW9uLnBhZ2UgKiB0aGlzLnBhZ2luYXRpb24ucnBwIDogdGhpcy5wYWdpbmF0aW9uLnRvdGFsO1xyXG4gICAgfVxyXG5cclxuICAgIG1pbigpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBhZ2luYXRpb24udG90YWwgPiAwID8gdGhpcy5wYWdpbmF0aW9uLnBhZ2UgKiB0aGlzLnBhZ2luYXRpb24ucnBwIC0gdGhpcy5wYWdpbmF0aW9uLnJwcCArIDEgOiAwO1xyXG4gICAgfVxyXG5cclxuICAgIGZpcnN0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvbi5wYWdlID0gMTtcclxuICAgICAgICB0aGlzLm9uUGFnaW5hdGlvbkNoYW5nZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGxhc3QoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uLnBhZ2UgPSB0aGlzLnBhZ2VDb3VudCgpO1xyXG4gICAgICAgIHRoaXMub25QYWdpbmF0aW9uQ2hhbmdlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaGFzTmV4dCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wYWdpbmF0aW9uLnBhZ2UgKiB0aGlzLnBhZ2luYXRpb24ucnBwIDwgdGhpcy5wYWdpbmF0aW9uLnRvdGFsO1xyXG4gICAgfVxyXG5cclxuICAgIGhhc1ByZXZpb3VzKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBhZ2luYXRpb24ucGFnZSA+IDE7XHJcbiAgICB9XHJcblxyXG4gICAgbW92ZU5leHQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uLnBhZ2UrKztcclxuICAgICAgICB0aGlzLm9uUGFnaW5hdGlvbkNoYW5nZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG1vdmVQcmV2aW91cygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb24ucGFnZS0tO1xyXG4gICAgICAgIHRoaXMub25QYWdpbmF0aW9uQ2hhbmdlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0UGFnZShwYWdlOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb24ucGFnZSA9IHBhZ2U7XHJcbiAgICAgICAgdGhpcy5vblBhZ2VDaGFuZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBvblBhZ2VDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zZXRQYWdpbmF0aW9uQ29udGFpbmVyKCk7XHJcbiAgICAgICAgdGhpcy5vblBhZ2luYXRpb25DaGFuZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBvblJwcENoYW5nZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNldFBhZ2luYXRpb25Db250YWluZXIoKTtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb24ucGFnZSA9IDE7XHJcbiAgICAgICAgdGhpcy5vblBhZ2luYXRpb25DaGFuZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBvblBhZ2luYXRpb25DaGFuZ2UoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgc3RhcnRJbmRleCA9ICh0aGlzLnBhZ2luYXRpb24ucGFnZSAtIDEpICogdGhpcy5wYWdpbmF0aW9uLnJwcDtcclxuICAgICAgICBjb25zdCBlbmRJbmRleCA9IE1hdGgubWluKHN0YXJ0SW5kZXggKyB0aGlzLnBhZ2luYXRpb24ucnBwLCB0aGlzLnBhZ2luYXRpb24udG90YWwpO1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGVkSXRlbXMgPSB0aGlzLmRhdGF0cmFuc2ZlclN0b3JlLmdldEl0ZW1zKCkuc2xpY2Uoc3RhcnRJbmRleCwgZW5kSW5kZXgpO1xyXG4gICAgfVxyXG5cclxuICAgIHBhZ2VDb3VudCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBhZ2luYXRpb24udG90YWwgPiAwID8gTWF0aC5jZWlsKHRoaXMucGFnaW5hdGlvbi50b3RhbCAvICh0aGlzLnBhZ2luYXRpb24ucnBwID4gMCA/IHRoaXMucGFnaW5hdGlvbi5ycHAgOiAxKSkgOiAxO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFBhZ2VCeUl0ZW1JZChpZDogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgICAgICBjb25zdCBpbmRleDogbnVtYmVyID0gdGhpcy5kYXRhdHJhbnNmZXJTdG9yZS5nZXRJbmRleEJ5SWQoaWQpO1xyXG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmNlaWwoKGluZGV4ICsgMSkgLyB0aGlzLnBhZ2luYXRpb24ucnBwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0UGFnZUJ5SXRlbUlkKGlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBwYWdlID0gdGhpcy5nZXRQYWdlQnlJdGVtSWQoaWQpO1xyXG4gICAgICAgIGlmICh0aGlzLnBhZ2luYXRpb24ucGFnZSAhPT0gcGFnZSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFBhZ2UocGFnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==