angular-material-datatransfer-lib
Version:
A HTML5 datatransfer UI for handling upload and download of multiple simultaneous files.
250 lines • 17.9 kB
JavaScript
/**
* @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==