UNPKG

systelab-components

Version:

systelab-components is a set of components that use wide accepted and adopted standard technologies like Angular and Bootstrap, as well as other popular libraries. Please read the ATTRIBUTION.md file for a complete list of dependencies.

102 lines 15.9 kB
import { Directive } from '@angular/core'; import { AbstractListBox } from './abstract-listbox.component'; import * as i0 from "@angular/core"; export class AbstractApiListBox extends AbstractListBox { constructor() { super(); } ngOnInit() { super.ngOnInit(); this.gridOptions.rowModelType = 'infinite'; this.gridOptions.paginationPageSize = 50; this.gridOptions.cacheBlockSize = 50; this.gridOptions.cacheOverflowSize = 2; this.gridOptions.maxConcurrentDatasourceRequests = 4; this.gridOptions.maxBlocksInCache = 15; // this.gridOptions.paginationInitialRowCount = 0; this.gridOptions.infiniteInitialRowCount = 0; this.gridOptions.datasource = this; } getRows(params) { this.gridOptions.api.showLoadingOverlay(); const page = params.endRow / this.gridOptions.paginationPageSize; const pageSize = this.gridOptions.paginationPageSize; const showAllElementNumber = this.showAll ? 1 : 0; const totalItems = this.getTotalItems() + showAllElementNumber; const modulus = totalItems % pageSize; if (page === 1 || page <= totalItems / pageSize || modulus > 1 || (modulus === 1 && !this.showAll)) { this.getElements(page, pageSize, showAllElementNumber, params); } else { this.getData(page - 1, this.gridOptions.paginationPageSize) .subscribe({ next: (previousPage) => { this.gridOptions.api.hideOverlay(); const itemArray = []; const totItems = Number(this.getTotalItems() + showAllElementNumber); const lastItemFromPreviousPage = previousPage[this.gridOptions.paginationPageSize - 1]; itemArray.push(lastItemFromPreviousPage); params.successCallback(itemArray, totItems); }, error: () => { this.gridOptions.api.hideOverlay(); params.failCallback(); } }); } } getElements(page, pageSize, emptyElemNumber, params) { this.getData(page, pageSize) .subscribe({ next: (v) => { this.gridOptions.api.hideOverlay(); const itemArray = []; const totalItems = Number(this.getTotalItems() + emptyElemNumber); if (this.showAll === true) { if (page === 1) { const newElement = this.getInstance(); newElement[this.getIdField()] = this.getAllFieldID(); newElement[this.getDescriptionField()] = this.getAllFieldDescription(); itemArray.push(newElement); for (const originalElement of v) { itemArray.push(originalElement); } params.successCallback(itemArray, totalItems); } else { this.getData(page - 1, this.gridOptions.paginationPageSize) .subscribe((previousPage) => { const lastItemFromPreviousPage = previousPage[this.gridOptions.paginationPageSize - 1]; itemArray.push(lastItemFromPreviousPage); for (const originalElement of v) { itemArray.push(originalElement); } params.successCallback(itemArray, totalItems); }, () => { params.failCallback(); }); } } else { for (const originalElement of v) { itemArray.push(originalElement); } params.successCallback(itemArray, totalItems); } }, error: () => { this.gridOptions.api.hideOverlay(); params.failCallback(); } }); } refresh() { this.gridOptions.api.setDatasource(this); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AbstractApiListBox, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.9", type: AbstractApiListBox, usesInheritance: true, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AbstractApiListBox, decorators: [{ type: Directive }], ctorParameters: () => [] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtYXBpLWxpc3Rib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3lzdGVsYWItY29tcG9uZW50cy9zcmMvbGliL2xpc3Rib3gvYWJzdHJhY3QtYXBpLWxpc3Rib3guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFHbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQUcvRCxNQUFNLE9BQWdCLGtCQUFzQixTQUFRLGVBQWtCO0lBSXJFO1FBQ0MsS0FBSyxFQUFFLENBQUM7SUFDVCxDQUFDO0lBRWUsUUFBUTtRQUV2QixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFakIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDO1FBQzNDLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsV0FBVyxDQUFDLCtCQUErQixHQUFHLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUN2QyxrREFBa0Q7UUFDbEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsR0FBRyxDQUFDLENBQUM7UUFFN0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3BDLENBQUM7SUFNTSxPQUFPLENBQUMsTUFBc0I7UUFFcEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQyxNQUFNLElBQUksR0FBVyxNQUFN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LENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDOzhHQXZIb0Isa0JBQWtCO2tHQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBRHZDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSURhdGFzb3VyY2UsIElHZXRSb3dzUGFyYW1zIH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWJzdHJhY3RMaXN0Qm94IH0gZnJvbSAnLi9hYnN0cmFjdC1saXN0Ym94LmNvbXBvbmVudCc7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0QXBpTGlzdEJveDxUPiBleHRlbmRzIEFic3RyYWN0TGlzdEJveDxUPiBpbXBsZW1lbnRzIElEYXRhc291cmNlLCBPbkluaXQge1xuXG5cdHB1YmxpYyBhYnN0cmFjdCBvdmVycmlkZSBnZXRJbnN0YW5jZSgpOiBUO1xuXG5cdHByb3RlY3RlZCBjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXHR9XG5cblx0cHVibGljIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuXG5cdFx0c3VwZXIubmdPbkluaXQoKTtcblxuXHRcdHRoaXMuZ3JpZE9wdGlvbnMucm93TW9kZWxUeXBlID0gJ2luZmluaXRlJztcblx0XHR0aGlzLmdyaWRPcHRpb25zLnBhZ2luYXRpb25QYWdlU2l6ZSA9IDUwO1xuXHRcdHRoaXMuZ3JpZE9wdGlvbnMuY2FjaGVCbG9ja1NpemUgPSA1MDtcblx0XHR0aGlzLmdyaWRPcHRpb25zLmNhY2hlT3ZlcmZsb3dTaXplID0gMjtcblx0XHR0aGlzLmdyaWRPcHRpb25zLm1heENvbmN1cnJlbnREYXRhc291cmNlUmVxdWVzdHMgPSA0O1xuXHRcdHRoaXMuZ3JpZE9wdGlvbnMubWF4QmxvY2tzSW5DYWNoZSA9IDE1O1xuXHRcdC8vIHRoaXMuZ3JpZE9wdGlvbnMucGFnaW5hdGlvbkluaXRpYWxSb3dDb3VudCA9IDA7XG5cdFx0dGhpcy5ncmlkT3B0aW9ucy5pbmZpbml0ZUluaXRpYWxSb3dDb3VudCA9IDA7XG5cblx0XHR0aGlzLmdyaWRPcHRpb25zLmRhdGFzb3VyY2UgPSB0aGlzO1xuXHR9XG5cblx0cHVibGljIGFic3RyYWN0IGdldFRvdGFsSXRlbXMoKTogbnVtYmVyO1xuXG5cdHByb3RlY3RlZCBhYnN0cmFjdCBnZXREYXRhKHBhZ2U6IG51bWJlciwgaXRlbXNQZXJQYWdlOiBudW1iZXIpOiBPYnNlcnZhYmxlPEFycmF5PFQ+PjtcblxuXHRwdWJsaWMgZ2V0Um93cyhwYXJhbXM6IElHZXRSb3dzUGFyYW1zKTogdm9pZCB7XG5cblx0XHR0aGlzLmdyaWRPcHRpb25zLmFwaS5zaG93TG9hZGluZ092ZXJsYXkoKTtcblx0XHRjb25zdCBwYWdlOiBudW1iZXIgPSBwYXJhbXMuZW5kUm93IC8gdGhpcy5ncmlkT3B0aW9ucy5wYWdpbmF0aW9uUGFnZVNpemU7XG5cdFx0Y29uc3QgcGFnZVNpemU6IG51bWJlciA9IHRoaXMuZ3JpZE9wdGlvbnMucGFnaW5hdGlvblBhZ2VTaXplO1xuXG5cdFx0Y29uc3Qgc2hvd0FsbEVsZW1lbnROdW1iZXI6IG51bWJlciA9IHRoaXMuc2hvd0FsbCA/IDEgOiAwO1xuXHRcdGNvbnN0IHRvdGFsSXRlbXM6IG51bWJlciA9IHRoaXMuZ2V0VG90YWxJdGVtcygpICsgc2hvd0FsbEVsZW1lbnROdW1iZXI7XG5cdFx0Y29uc3QgbW9kdWx1czogbnVtYmVyID0gdG90YWxJdGVtcyAlIHBhZ2VTaXplO1xuXG5cdFx0aWYgKHBhZ2UgPT09IDEgfHwgcGFnZSA8PSB0b3RhbEl0ZW1zIC8gcGFnZVNpemUgfHwgbW9kdWx1cyA+IDEgfHwgKG1vZHVsdXMgPT09IDEgJiYgIXRoaXMuc2hvd0FsbCkpIHtcblx0XHRcdHRoaXMuZ2V0RWxlbWVudHMocGFnZSwgcGFnZVNpemUsIHNob3dBbGxFbGVtZW50TnVtYmVyLCBwYXJhbXMpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmdldERhdGEocGFnZSAtIDEsIHRoaXMuZ3JpZE9wdGlvbnMucGFnaW5hdGlvblBhZ2VTaXplKVxuXHRcdFx0XHQuc3Vic2NyaWJlKHtcblx0XHRcdFx0XHRcdG5leHQ6ICAocHJldmlvdXNQYWdlOiBBcnJheTxUPikgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLmdyaWRPcHRpb25zLmFwaS5oaWRlT3ZlcmxheSgpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBpdGVtQXJyYXk6IEFycmF5PFQ+ID0gW107XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHRvdEl0ZW1zOiBudW1iZXIgPSBOdW1iZXIodGhpcy5nZXRUb3RhbEl0ZW1zKCkgKyBzaG93QWxsRWxlbWVudE51bWJlcik7XG5cblx0XHRcdFx0XHRcdFx0Y29uc3QgbGFzdEl0ZW1Gcm9tUHJldmlvdXNQYWdlID0gcHJldmlvdXNQYWdlW3RoaXMuZ3JpZE9wdGlvbnMucGFnaW5hdGlvblBhZ2VTaXplIC0gMV07XG5cdFx0XHRcdFx0XHRcdGl0ZW1BcnJheS5wdXNoKGxhc3RJdGVtRnJvbVByZXZpb3VzUGFnZSk7XG5cblx0XHRcdFx0XHRcdFx0cGFyYW1zLnN1Y2Nlc3NDYWxsYmFjayhpdGVtQXJyYXksIHRvdEl0ZW1zKTtcblxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGVycm9yOiAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuZ3JpZE9wdGlvbnMuYXBpLmhpZGVPdmVybGF5KCk7XG5cdFx0XHRcdFx0XHRcdHBhcmFtcy5mYWlsQ2FsbGJhY2soKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBnZXRFbGVtZW50cyhwYWdlOiBudW1iZXIsIHBhZ2VTaXplOiBudW1iZXIsIGVtcHR5RWxlbU51bWJlcjogbnVtYmVyLCBwYXJhbXM6IElHZXRSb3dzUGFyYW1zKSB7XG5cdFx0dGhpcy5nZXREYXRhKHBhZ2UsIHBhZ2VTaXplKVxuXHRcdFx0LnN1YnNjcmliZShcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5leHQ6ICAodjogQXJyYXk8VD4pID0+IHtcblx0XHRcdFx0XHRcdHRoaXMuZ3JpZE9wdGlvbnMuYXBpLmhpZGVPdmVybGF5KCk7XG5cdFx0XHRcdFx0XHRjb25zdCBpdGVtQXJyYXk6IEFycmF5PFQ+ID0gW107XG5cdFx0XHRcdFx0XHRjb25zdCB0b3RhbEl0ZW1zOiBudW1iZXIgPSBOdW1iZXIodGhpcy5nZXRUb3RhbEl0ZW1zKCkgKyBlbXB0eUVsZW1OdW1iZXIpO1xuXG5cdFx0XHRcdFx0XHRpZiAodGhpcy5zaG93QWxsID09PSB0cnVlKSB7XG5cblx0XHRcdFx0XHRcdFx0aWYgKHBhZ2UgPT09IDEpIHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBuZXdFbGVtZW50OiBUID0gdGhpcy5nZXRJbnN0YW5jZSgpO1xuXHRcdFx0XHRcdFx0XHRcdG5ld0VsZW1lbnRbdGhpcy5nZXRJZEZpZWxkKCldID0gdGhpcy5nZXRBbGxGaWVsZElEKCk7XG5cdFx0XHRcdFx0XHRcdFx0bmV3RWxlbWVudFt0aGlzLmdldERlc2NyaXB0aW9uRmllbGQoKV0gPSB0aGlzLmdldEFsbEZpZWxkRGVzY3JpcHRpb24oKTtcblx0XHRcdFx0XHRcdFx0XHRpdGVtQXJyYXkucHVzaChuZXdFbGVtZW50KTtcblxuXHRcdFx0XHRcdFx0XHRcdGZvciAoY29uc3Qgb3JpZ2luYWxFbGVtZW50IG9mIHYpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1BcnJheS5wdXNoKG9yaWdpbmFsRWxlbWVudCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHBhcmFtcy5zdWNjZXNzQ2FsbGJhY2soaXRlbUFycmF5LCB0b3RhbEl0ZW1zKTtcblxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ2V0RGF0YShwYWdlIC0gMSwgdGhpcy5ncmlkT3B0aW9ucy5wYWdpbmF0aW9uUGFnZVNpemUpXG5cdFx0XHRcdFx0XHRcdFx0XHQuc3Vic2NyaWJlKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQocHJldmlvdXNQYWdlOiBBcnJheTxUPikgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IGxhc3RJdGVtRnJvbVByZXZpb3VzUGFnZSA9IHByZXZpb3VzUGFnZVt0aGlzLmdyaWRPcHRpb25zLnBhZ2luYXRpb25QYWdlU2l6ZSAtIDFdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1BcnJheS5wdXNoKGxhc3RJdGVtRnJvbVByZXZpb3VzUGFnZSk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKGNvbnN0IG9yaWdpbmFsRWxlbWVudCBvZiB2KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtQXJyYXkucHVzaChvcmlnaW5hbEVsZW1lbnQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwYXJhbXMuc3VjY2Vzc0NhbGxiYWNrKGl0ZW1BcnJheSwgdG90YWxJdGVtcyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwYXJhbXMuZmFpbENhbGxiYWNrKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGZvciAoY29uc3Qgb3JpZ2luYWxFbGVtZW50IG9mIHYpIHtcblx0XHRcdFx0XHRcdFx0XHRpdGVtQXJyYXkucHVzaChvcmlnaW5hbEVsZW1lbnQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHBhcmFtcy5zdWNjZXNzQ2FsbGJhY2soaXRlbUFycmF5LCB0b3RhbEl0ZW1zKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGVycm9yOiAoKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLmdyaWRPcHRpb25zLmFwaS5oaWRlT3ZlcmxheSgpO1xuXHRcdFx0XHRcdFx0cGFyYW1zLmZhaWxDYWxsYmFjaygpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0KTtcblx0fVxuXG5cdHB1YmxpYyByZWZyZXNoKCkge1xuXHRcdHRoaXMuZ3JpZE9wdGlvbnMuYXBpLnNldERhdGFzb3VyY2UodGhpcyk7XG5cdH1cblxufVxuIl19