UNPKG

@cascade/pagination

Version:

Array and Service Pagination powered by Cascade.

148 lines 4.85 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports, "__esModule", { value: true }); const cascade_1 = require("cascade"); class Pagination { constructor(refreshData) { this.pageSize = 20; this.page = 0; this.activeRows = []; this.allRows = []; this.rowCount = 0; this.error = false; this.loaded = false; this.refreshing = false; this.lockRefresh = true; this.runCount = 0; this.initialized = false; this.infinite = false; this.length = 0; this.refreshData = refreshData; } get dataComputed() { this.pageSize; this.page; if (this.initialized && !this.lockRefresh) { return this.run(); } else { throw new Error('Pagination did not run'); } } init() { this.initialized = true; return this.run(); } async run() { this.runCount++; var runID = this.runCount; this.lockRefresh = false; var pageSize = this.pageSize; var offset = this.infinite ? this.length : Math.abs(this.page * pageSize); this.refreshing = true; try { let result = await this.refreshData(offset, pageSize); if (runID == this.runCount) { let data = result.data || []; this.activeRows = data; if (this.infinite) { this.allRows = this.allRows.concat(data); this.length += data.length; } this.rowCount = result.count || 0; this.error = false; this.loaded = true; } return result; } catch (e) { if (runID == this.runCount) { this.error = true; this.loaded = false; } throw e; } finally { if (runID == this.runCount) { this.refreshing = false; } } } reset() { this.activeRows = []; this.allRows = []; this.page = 0; this.rowCount = 0; this.length = 0; this.runCount = 0; this.loaded = false; this.initialized = true; return this.run(); } clear() { var lockRefresh = this.lockRefresh; this.page = 0; this.rowCount = 0; this.activeRows = []; this.allRows = []; this.length = 0; this.initialized = false; this.lockRefresh = lockRefresh; this.loaded = false; } nextPage() { this.page++; } itemDeleted(count = 1) { this.length -= count; } } __decorate([ cascade_1.observable, __metadata("design:type", Number) ], Pagination.prototype, "pageSize", void 0); __decorate([ cascade_1.observable, __metadata("design:type", Number) ], Pagination.prototype, "page", void 0); __decorate([ cascade_1.observable, __metadata("design:type", Array) ], Pagination.prototype, "activeRows", void 0); __decorate([ cascade_1.observable, __metadata("design:type", Array) ], Pagination.prototype, "allRows", void 0); __decorate([ cascade_1.observable, __metadata("design:type", Number) ], Pagination.prototype, "rowCount", void 0); __decorate([ cascade_1.observable, __metadata("design:type", Boolean) ], Pagination.prototype, "error", void 0); __decorate([ cascade_1.observable, __metadata("design:type", Boolean) ], Pagination.prototype, "loaded", void 0); __decorate([ cascade_1.observable, __metadata("design:type", Boolean) ], Pagination.prototype, "refreshing", void 0); __decorate([ cascade_1.observable, __metadata("design:type", Object), __metadata("design:paramtypes", []) ], Pagination.prototype, "dataComputed", null); exports.default = Pagination; //# sourceMappingURL=Pagination.js.map