@solidev/data 0.0.1-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/esm2020/lib/auth/auth-interceptor.service.mjs +73 -0
- package/esm2020/lib/auth/auth.service.mjs +114 -0
- package/esm2020/lib/auth/jwt.mjs +21 -0
- package/esm2020/lib/data/data-backend.mjs +106 -0
- package/esm2020/lib/data/data-collection.mjs +109 -0
- package/esm2020/lib/data/data-collection.mock.mjs +39 -0
- package/esm2020/lib/data/data-model.mjs +287 -0
- package/esm2020/lib/data/data-parameters.mjs +34 -0
- package/esm2020/lib/data/data-query.mjs +143 -0
- package/esm2020/lib/data/data-query.mock.mjs +46 -0
- package/esm2020/lib/data/fields/base.mjs +142 -0
- package/esm2020/lib/data/fields/boolean.mjs +38 -0
- package/esm2020/lib/data/fields/datetime.mjs +109 -0
- package/esm2020/lib/data/fields/index.mjs +7 -0
- package/esm2020/lib/data/fields/numbers.mjs +28 -0
- package/esm2020/lib/data/fields/primaryfield.mjs +9 -0
- package/esm2020/lib/data/fields/relations.mjs +53 -0
- package/esm2020/lib/data/fields/stringfields.mjs +71 -0
- package/esm2020/lib/dispedit/choice.pipe.mjs +38 -0
- package/esm2020/lib/dispedit/dispedit/dispedit.component.mjs +457 -0
- package/esm2020/lib/dispedit/dispedit/dispedit.constants.mjs +2 -0
- package/esm2020/lib/dispedit/dispedit.module.mjs +60 -0
- package/esm2020/lib/dispedit/fkselect/fkselect.component.mjs +140 -0
- package/esm2020/lib/dispedit/m2mselect/m2mselect.component.mjs +316 -0
- package/esm2020/lib/dispedit/sdelete/sdelete.component.mjs +43 -0
- package/esm2020/lib/messages/message-zone/message-zone.component.mjs +57 -0
- package/esm2020/lib/messages/message.service.mjs +151 -0
- package/esm2020/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.mjs +34 -0
- package/esm2020/lib/modellist/model-list-fields/model-list-fields-selector/model-list-fields-selector.component.mjs +63 -0
- package/esm2020/lib/modellist/model-list-fields/model-list-fields.mjs +225 -0
- package/esm2020/lib/modellist/model-list-filters/filters/filtertypes.mjs +3 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component.mjs +104 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.mjs +31 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.mjs +25 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.mjs +40 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.component.mjs +21 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.mjs +14 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.mjs +21 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetimerange-filter.mjs +14 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.component.mjs +21 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.mjs +14 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.mjs +21 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.mjs +14 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.component.mjs +44 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.mjs +49 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.mjs +45 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.mjs +26 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.mjs +21 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.mjs +14 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.component.mjs +40 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.mjs +14 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.mjs +21 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.mjs +14 -0
- package/esm2020/lib/modellist/model-list-filters/model-list-filter.mjs +41 -0
- package/esm2020/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.mjs +48 -0
- package/esm2020/lib/modellist/model-list-filters/model-list-filters-select/model-list-filters-select.component.mjs +30 -0
- package/esm2020/lib/modellist/model-list-filters/model-list-filters.mjs +80 -0
- package/esm2020/lib/modellist/model-list-paginator/model-list-paginator/model-list-paginator.component.mjs +70 -0
- package/esm2020/lib/modellist/model-list-paginator/model-list-paginator.mjs +47 -0
- package/esm2020/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.mjs +49 -0
- package/esm2020/lib/modellist/model-list-sorter/model-list-sorter.mjs +116 -0
- package/esm2020/lib/modellist/model-list.service.mjs +115 -0
- package/esm2020/lib/routing/breadcrumb/breadcrumb.component.mjs +142 -0
- package/esm2020/lib/routing/routing.mjs +57 -0
- package/esm2020/lib/uploader/index.mjs +6 -0
- package/esm2020/lib/uploader/interfaces.mjs +8 -0
- package/esm2020/lib/uploader/ng-file-drop.directive.mjs +81 -0
- package/esm2020/lib/uploader/ng-file-select.directive.mjs +51 -0
- package/esm2020/lib/uploader/ngx-uploader.class.mjs +308 -0
- package/esm2020/lib/uploader/ngx-uploader.module.mjs +17 -0
- package/esm2020/lib/utils/slugify.mjs +16 -0
- package/esm2020/lib/utils/tab-memory.service.mjs +71 -0
- package/esm2020/public-api.mjs +41 -0
- package/esm2020/solidev-data.mjs +5 -0
- package/fesm2015/solidev-data.mjs +4791 -0
- package/fesm2015/solidev-data.mjs.map +1 -0
- package/fesm2020/solidev-data.mjs +4757 -0
- package/fesm2020/solidev-data.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/auth/auth-interceptor.service.d.ts +16 -0
- package/lib/auth/auth.service.d.ts +38 -0
- package/lib/auth/jwt.d.ts +22 -0
- package/lib/data/data-backend.d.ts +47 -0
- package/lib/data/data-collection.d.ts +87 -0
- package/lib/data/data-collection.mock.d.ts +19 -0
- package/lib/data/data-model.d.ts +91 -0
- package/lib/data/data-parameters.d.ts +26 -0
- package/lib/data/data-query.d.ts +100 -0
- package/lib/data/data-query.mock.d.ts +25 -0
- package/lib/data/fields/base.d.ts +116 -0
- package/lib/data/fields/boolean.d.ts +9 -0
- package/lib/data/fields/datetime.d.ts +39 -0
- package/lib/data/fields/index.d.ts +6 -0
- package/lib/data/fields/numbers.d.ts +31 -0
- package/lib/data/fields/primaryfield.d.ts +8 -0
- package/lib/data/fields/relations.d.ts +45 -0
- package/lib/data/fields/stringfields.d.ts +50 -0
- package/lib/dispedit/choice.pipe.d.ts +8 -0
- package/lib/dispedit/dispedit/dispedit.component.d.ts +177 -0
- package/lib/dispedit/dispedit/dispedit.constants.d.ts +6 -0
- package/lib/dispedit/dispedit.module.d.ts +20 -0
- package/lib/dispedit/fkselect/fkselect.component.d.ts +43 -0
- package/lib/dispedit/m2mselect/m2mselect.component.d.ts +120 -0
- package/lib/dispedit/sdelete/sdelete.component.d.ts +26 -0
- package/lib/messages/message-zone/message-zone.component.d.ts +14 -0
- package/lib/messages/message.service.d.ts +59 -0
- package/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.d.ts +15 -0
- package/lib/modellist/model-list-fields/model-list-fields-selector/model-list-fields-selector.component.d.ts +19 -0
- package/lib/modellist/model-list-fields/model-list-fields.d.ts +67 -0
- package/lib/modellist/model-list-filters/filters/filtertypes.d.ts +1 -0
- package/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component.d.ts +30 -0
- package/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.d.ts +24 -0
- package/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.d.ts +10 -0
- package/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.d.ts +15 -0
- package/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.component.d.ts +11 -0
- package/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.d.ts +4 -0
- package/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.d.ts +11 -0
- package/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetimerange-filter.d.ts +4 -0
- package/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.component.d.ts +11 -0
- package/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.d.ts +4 -0
- package/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.d.ts +11 -0
- package/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.d.ts +4 -0
- package/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.component.d.ts +17 -0
- package/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.d.ts +19 -0
- package/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.d.ts +17 -0
- package/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.d.ts +16 -0
- package/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.d.ts +11 -0
- package/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.d.ts +4 -0
- package/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.component.d.ts +16 -0
- package/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.d.ts +4 -0
- package/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.d.ts +11 -0
- package/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.d.ts +4 -0
- package/lib/modellist/model-list-filters/model-list-filter.d.ts +31 -0
- package/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.d.ts +9 -0
- package/lib/modellist/model-list-filters/model-list-filters-select/model-list-filters-select.component.d.ts +13 -0
- package/lib/modellist/model-list-filters/model-list-filters.d.ts +15 -0
- package/lib/modellist/model-list-paginator/model-list-paginator/model-list-paginator.component.d.ts +23 -0
- package/lib/modellist/model-list-paginator/model-list-paginator.d.ts +16 -0
- package/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.d.ts +22 -0
- package/lib/modellist/model-list-sorter/model-list-sorter.d.ts +61 -0
- package/lib/modellist/model-list.service.d.ts +79 -0
- package/lib/routing/breadcrumb/breadcrumb.component.d.ts +42 -0
- package/lib/routing/routing.d.ts +64 -0
- package/lib/uploader/index.d.ts +5 -0
- package/lib/uploader/interfaces.d.ts +67 -0
- package/lib/uploader/ng-file-drop.directive.d.ts +22 -0
- package/lib/uploader/ng-file-select.directive.d.ts +19 -0
- package/lib/uploader/ngx-uploader.class.d.ts +35 -0
- package/lib/uploader/ngx-uploader.module.d.ts +8 -0
- package/lib/utils/slugify.d.ts +1 -0
- package/lib/utils/tab-memory.service.d.ts +29 -0
- package/package.json +32 -0
- package/public-api.d.ts +37 -0
- package/src/lib/data/README.md +35 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
export class ModelListFiltersSelectComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.containerClasses = '';
|
|
8
|
+
this.itemActiveClasses = 'badge bg-success mx-1';
|
|
9
|
+
this.itemInactiveClasses = 'badge bg-secondary mx-1';
|
|
10
|
+
}
|
|
11
|
+
toggle(f) {
|
|
12
|
+
f.enabled = !f.enabled;
|
|
13
|
+
this.list.filters.update();
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
ModelListFiltersSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ModelListFiltersSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
17
|
+
ModelListFiltersSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: ModelListFiltersSelectComponent, isStandalone: true, selector: "data-model-list-filters-select", inputs: { list: "list", containerClasses: "containerClasses", itemActiveClasses: "itemActiveClasses", itemInactiveClasses: "itemInactiveClasses" }, ngImport: i0, template: "<span *ngFor=\"let f of list.filters.available|async\" (click)=\"toggle(f)\" [ngClass]=\"containerClasses\"><span *ngIf=\"f.enabled\" role=\"button\" [ngClass]=\"itemActiveClasses\"><i class=\"bi bi-check2-square me-2\"></i><span>{{f.label}}</span></span><span *ngIf=\"!f.enabled\" role=\"button\" [ngClass]=\"itemInactiveClasses\"><i class=\"bi bi-square me-2\"></i><span>{{f.label}}</span></span></span>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ModelListFiltersSelectComponent, decorators: [{
|
|
19
|
+
type: Component,
|
|
20
|
+
args: [{ selector: 'data-model-list-filters-select', standalone: true, imports: [CommonModule], template: "<span *ngFor=\"let f of list.filters.available|async\" (click)=\"toggle(f)\" [ngClass]=\"containerClasses\"><span *ngIf=\"f.enabled\" role=\"button\" [ngClass]=\"itemActiveClasses\"><i class=\"bi bi-check2-square me-2\"></i><span>{{f.label}}</span></span><span *ngIf=\"!f.enabled\" role=\"button\" [ngClass]=\"itemInactiveClasses\"><i class=\"bi bi-square me-2\"></i><span>{{f.label}}</span></span></span>" }]
|
|
21
|
+
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
22
|
+
type: Input
|
|
23
|
+
}], containerClasses: [{
|
|
24
|
+
type: Input
|
|
25
|
+
}], itemActiveClasses: [{
|
|
26
|
+
type: Input
|
|
27
|
+
}], itemInactiveClasses: [{
|
|
28
|
+
type: Input
|
|
29
|
+
}] } });
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC1maWx0ZXJzLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtZmlsdGVycy9tb2RlbC1saXN0LWZpbHRlcnMtc2VsZWN0L21vZGVsLWxpc3QtZmlsdGVycy1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL21vZGVsbGlzdC9tb2RlbC1saXN0LWZpbHRlcnMvbW9kZWwtbGlzdC1maWx0ZXJzLXNlbGVjdC9tb2RlbC1saXN0LWZpbHRlcnMtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBUy9DLE1BQU0sT0FBTywrQkFBK0I7SUFRMUM7UUFOZ0IscUJBQWdCLEdBQXNCLEVBQUUsQ0FBQztRQUN6QyxzQkFBaUIsR0FDL0IsdUJBQXVCLENBQUM7UUFDVix3QkFBbUIsR0FDakMseUJBQXlCLENBQUM7SUFFYixDQUFDO0lBRVQsTUFBTSxDQUFDLENBQWtCO1FBQzlCLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzdCLENBQUM7OzRIQWJVLCtCQUErQjtnSEFBL0IsK0JBQStCLDhPQ1o1Qyx1WkFBK1gseUREVW5YLFlBQVk7MkZBRVgsK0JBQStCO2tCQVAzQyxTQUFTOytCQUNFLGdDQUFnQyxjQUc5QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUM7MEVBR1AsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBQ1UsaUJBQWlCO3NCQUFoQyxLQUFLO2dCQUVVLG1CQUFtQjtzQkFBbEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1vZGVsTGlzdCB9IGZyb20gJy4uLy4uL21vZGVsLWxpc3Quc2VydmljZSc7XG5pbXBvcnQgeyBNb2RlbExpc3RGaWx0ZXIgfSBmcm9tICcuLi9tb2RlbC1saXN0LWZpbHRlcic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRhLW1vZGVsLWxpc3QtZmlsdGVycy1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kZWwtbGlzdC1maWx0ZXJzLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vZGVsLWxpc3QtZmlsdGVycy1zZWxlY3QuY29tcG9uZW50LnNhc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIE1vZGVsTGlzdEZpbHRlcnNTZWxlY3RDb21wb25lbnQge1xuICBASW5wdXQoKSBwdWJsaWMgbGlzdCE6IE1vZGVsTGlzdDxhbnk+O1xuICBASW5wdXQoKSBwdWJsaWMgY29udGFpbmVyQ2xhc3Nlczogc3RyaW5nW10gfCBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcHVibGljIGl0ZW1BY3RpdmVDbGFzc2VzOiBzdHJpbmdbXSB8IHN0cmluZyA9XG4gICAgJ2JhZGdlIGJnLXN1Y2Nlc3MgbXgtMSc7XG4gIEBJbnB1dCgpIHB1YmxpYyBpdGVtSW5hY3RpdmVDbGFzc2VzOiBzdHJpbmdbXSB8IHN0cmluZyA9XG4gICAgJ2JhZGdlIGJnLXNlY29uZGFyeSBteC0xJztcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgcHVibGljIHRvZ2dsZShmOiBNb2RlbExpc3RGaWx0ZXIpIHtcbiAgICBmLmVuYWJsZWQgPSAhZi5lbmFibGVkO1xuICAgIHRoaXMubGlzdC5maWx0ZXJzLnVwZGF0ZSgpO1xuICB9XG59XG4iLCI8c3BhbiAqbmdGb3I9XCJsZXQgZiBvZiBsaXN0LmZpbHRlcnMuYXZhaWxhYmxlfGFzeW5jXCIgKGNsaWNrKT1cInRvZ2dsZShmKVwiIFtuZ0NsYXNzXT1cImNvbnRhaW5lckNsYXNzZXNcIj48c3BhbiAqbmdJZj1cImYuZW5hYmxlZFwiIHJvbGU9XCJidXR0b25cIiBbbmdDbGFzc109XCJpdGVtQWN0aXZlQ2xhc3Nlc1wiPjxpIGNsYXNzPVwiYmkgYmktY2hlY2syLXNxdWFyZSBtZS0yXCI+PC9pPjxzcGFuPnt7Zi5sYWJlbH19PC9zcGFuPjwvc3Bhbj48c3BhbiAqbmdJZj1cIiFmLmVuYWJsZWRcIiByb2xlPVwiYnV0dG9uXCIgW25nQ2xhc3NdPVwiaXRlbUluYWN0aXZlQ2xhc3Nlc1wiPjxpIGNsYXNzPVwiYmkgYmktc3F1YXJlIG1lLTJcIj48L2k+PHNwYW4+e3tmLmxhYmVsfX08L3NwYW4+PC9zcGFuPjwvc3Bhbj4iXX0=
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { ReplaySubject } from 'rxjs';
|
|
2
|
+
export class ModelListFilters {
|
|
3
|
+
constructor(params) {
|
|
4
|
+
this._output = new ReplaySubject(1);
|
|
5
|
+
this._enabled = new ReplaySubject(1);
|
|
6
|
+
this._available = new ReplaySubject(1);
|
|
7
|
+
const tmp = Array.from(params?.filters || []);
|
|
8
|
+
// Prepare allowed filters (all filters if not set or empty)
|
|
9
|
+
let allowed = [];
|
|
10
|
+
if (params?.allowed === undefined || params?.allowed === []) {
|
|
11
|
+
for (const f of tmp) {
|
|
12
|
+
allowed.push(f.name);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
allowed = params.allowed;
|
|
17
|
+
}
|
|
18
|
+
// Prepare excluded filters
|
|
19
|
+
const excluded = params?.excluded || [];
|
|
20
|
+
// Process default filters
|
|
21
|
+
// Use all allowed filters if empty of not set
|
|
22
|
+
const defaults = params?.defaults || allowed;
|
|
23
|
+
// Prepare filters status
|
|
24
|
+
// Set allowed
|
|
25
|
+
for (const fe of allowed) {
|
|
26
|
+
for (const f of tmp) {
|
|
27
|
+
if (f.name === fe) {
|
|
28
|
+
f.allowed = true;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
// Set defaults
|
|
33
|
+
for (const fe of defaults) {
|
|
34
|
+
for (const f of tmp) {
|
|
35
|
+
if (f.name === fe) {
|
|
36
|
+
f.enabled = true;
|
|
37
|
+
f.allowed = true;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// remove excluded
|
|
42
|
+
for (const fe of excluded) {
|
|
43
|
+
for (const f of tmp) {
|
|
44
|
+
if (f.name === fe) {
|
|
45
|
+
f.enabled = false;
|
|
46
|
+
f.allowed = false;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
this._filters = tmp;
|
|
51
|
+
this.update();
|
|
52
|
+
}
|
|
53
|
+
get output() {
|
|
54
|
+
return this._output.asObservable();
|
|
55
|
+
}
|
|
56
|
+
get enabled() {
|
|
57
|
+
return this._enabled.asObservable();
|
|
58
|
+
}
|
|
59
|
+
get available() {
|
|
60
|
+
return this._available.asObservable();
|
|
61
|
+
}
|
|
62
|
+
update() {
|
|
63
|
+
const filter = {};
|
|
64
|
+
const enabled = [];
|
|
65
|
+
const available = [];
|
|
66
|
+
for (const f of this._filters) {
|
|
67
|
+
if (f.enabled) {
|
|
68
|
+
f.updateFilter(filter);
|
|
69
|
+
enabled.push(f);
|
|
70
|
+
}
|
|
71
|
+
if (f.allowed) {
|
|
72
|
+
available.push(f);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
this._output.next(filter);
|
|
76
|
+
this._enabled.next(enabled);
|
|
77
|
+
this._available.next(available);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC1maWx0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL21vZGVsbGlzdC9tb2RlbC1saXN0LWZpbHRlcnMvbW9kZWwtbGlzdC1maWx0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJakQsTUFBTSxPQUFPLGdCQUFnQjtJQUczQixZQUFZLE1BQXNCO1FBaUQxQixZQUFPLEdBQUcsSUFBSSxhQUFhLENBQWEsQ0FBQyxDQUFDLENBQUM7UUFLNUMsYUFBUSxHQUFHLElBQUksYUFBYSxDQUFvQixDQUFDLENBQUMsQ0FBQztRQUtuRCxlQUFVLEdBQUcsSUFBSSxhQUFhLENBQW9CLENBQUMsQ0FBQyxDQUFDO1FBMUQxRCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUMsNERBQTREO1FBQzVELElBQUksT0FBTyxHQUFhLEVBQUUsQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxPQUFPLEtBQUssU0FBUyxJQUFJLE1BQU0sRUFBRSxPQUFPLEtBQUssRUFBRSxFQUFFO1lBQzNELEtBQUssTUFBTSxDQUFDLElBQUksR0FBRyxFQUFFO2dCQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN0QjtTQUNGO2FBQU07WUFDTCxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztTQUMxQjtRQUNELDJCQUEyQjtRQUMzQixNQUFNLFFBQVEsR0FBYSxNQUFNLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUVsRCwwQkFBMEI7UUFDMUIsOENBQThDO1FBQzlDLE1BQU0sUUFBUSxHQUFhLE1BQU0sRUFBRSxRQUFRLElBQUksT0FBTyxDQUFDO1FBRXZELHlCQUF5QjtRQUN6QixjQUFjO1FBQ2QsS0FBSyxNQUFNLEVBQUUsSUFBSSxPQUFPLEVBQUU7WUFDeEIsS0FBSyxNQUFNLENBQUMsSUFBSSxHQUFHLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxFQUFFLEVBQUU7b0JBQ2pCLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2lCQUNsQjthQUNGO1NBQ0Y7UUFDRCxlQUFlO1FBQ2YsS0FBSyxNQUFNLEVBQUUsSUFBSSxRQUFRLEVBQUU7WUFDekIsS0FBSyxNQUFNLENBQUMsSUFBSSxHQUFHLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxFQUFFLEVBQUU7b0JBQ2pCLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO29CQUNqQixDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztpQkFDbEI7YUFDRjtTQUNGO1FBQ0Qsa0JBQWtCO1FBQ2xCLEtBQUssTUFBTSxFQUFFLElBQUksUUFBUSxFQUFFO1lBQ3pCLEtBQUssTUFBTSxDQUFDLElBQUksR0FBRyxFQUFFO2dCQUNuQixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO29CQUNqQixDQUFDLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztvQkFDbEIsQ0FBQyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7aUJBQ25CO2FBQ0Y7U0FDRjtRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBR0QsSUFBVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFHRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFHRCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFTSxNQUFNO1FBQ1gsTUFBTSxNQUFNLEdBQWUsRUFBRSxDQUFDO1FBQzlCLE1BQU0sT0FBTyxHQUFzQixFQUFFLENBQUM7UUFDdEMsTUFBTSxTQUFTLEdBQXNCLEVBQUUsQ0FBQztRQUN4QyxLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDN0IsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFO2dCQUNiLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3ZCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDakI7WUFDRCxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUU7Z0JBQ2IsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNuQjtTQUNGO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmlsdGVyRGF0YSB9IGZyb20gJy4uLy4uL2RhdGEvZGF0YS1xdWVyeSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGaWx0ZXJzUGFyYW1zIH0gZnJvbSAnLi4vbW9kZWwtbGlzdC5zZXJ2aWNlJztcbmltcG9ydCB7IE1vZGVsTGlzdEZpbHRlciB9IGZyb20gJy4vbW9kZWwtbGlzdC1maWx0ZXInO1xuXG5leHBvcnQgY2xhc3MgTW9kZWxMaXN0RmlsdGVycyB7XG4gIHByaXZhdGUgX2ZpbHRlcnM6IE1vZGVsTGlzdEZpbHRlcltdO1xuXG4gIGNvbnN0cnVjdG9yKHBhcmFtcz86IEZpbHRlcnNQYXJhbXMpIHtcbiAgICBjb25zdCB0bXAgPSBBcnJheS5mcm9tKHBhcmFtcz8uZmlsdGVycyB8fCBbXSk7XG4gICAgLy8gUHJlcGFyZSBhbGxvd2VkIGZpbHRlcnMgKGFsbCBmaWx0ZXJzIGlmIG5vdCBzZXQgb3IgZW1wdHkpXG4gICAgbGV0IGFsbG93ZWQ6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKHBhcmFtcz8uYWxsb3dlZCA9PT0gdW5kZWZpbmVkIHx8IHBhcmFtcz8uYWxsb3dlZCA9PT0gW10pIHtcbiAgICAgIGZvciAoY29uc3QgZiBvZiB0bXApIHtcbiAgICAgICAgYWxsb3dlZC5wdXNoKGYubmFtZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGFsbG93ZWQgPSBwYXJhbXMuYWxsb3dlZDtcbiAgICB9XG4gICAgLy8gUHJlcGFyZSBleGNsdWRlZCBmaWx0ZXJzXG4gICAgY29uc3QgZXhjbHVkZWQ6IHN0cmluZ1tdID0gcGFyYW1zPy5leGNsdWRlZCB8fCBbXTtcblxuICAgIC8vIFByb2Nlc3MgZGVmYXVsdCBmaWx0ZXJzXG4gICAgLy8gVXNlIGFsbCBhbGxvd2VkIGZpbHRlcnMgaWYgZW1wdHkgb2Ygbm90IHNldFxuICAgIGNvbnN0IGRlZmF1bHRzOiBzdHJpbmdbXSA9IHBhcmFtcz8uZGVmYXVsdHMgfHwgYWxsb3dlZDtcblxuICAgIC8vIFByZXBhcmUgZmlsdGVycyBzdGF0dXNcbiAgICAvLyBTZXQgYWxsb3dlZFxuICAgIGZvciAoY29uc3QgZmUgb2YgYWxsb3dlZCkge1xuICAgICAgZm9yIChjb25zdCBmIG9mIHRtcCkge1xuICAgICAgICBpZiAoZi5uYW1lID09PSBmZSkge1xuICAgICAgICAgIGYuYWxsb3dlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gU2V0IGRlZmF1bHRzXG4gICAgZm9yIChjb25zdCBmZSBvZiBkZWZhdWx0cykge1xuICAgICAgZm9yIChjb25zdCBmIG9mIHRtcCkge1xuICAgICAgICBpZiAoZi5uYW1lID09PSBmZSkge1xuICAgICAgICAgIGYuZW5hYmxlZCA9IHRydWU7XG4gICAgICAgICAgZi5hbGxvd2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyByZW1vdmUgZXhjbHVkZWRcbiAgICBmb3IgKGNvbnN0IGZlIG9mIGV4Y2x1ZGVkKSB7XG4gICAgICBmb3IgKGNvbnN0IGYgb2YgdG1wKSB7XG4gICAgICAgIGlmIChmLm5hbWUgPT09IGZlKSB7XG4gICAgICAgICAgZi5lbmFibGVkID0gZmFsc2U7XG4gICAgICAgICAgZi5hbGxvd2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fZmlsdGVycyA9IHRtcDtcbiAgICB0aGlzLnVwZGF0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfb3V0cHV0ID0gbmV3IFJlcGxheVN1YmplY3Q8RmlsdGVyRGF0YT4oMSk7XG4gIHB1YmxpYyBnZXQgb3V0cHV0KCk6IE9ic2VydmFibGU8RmlsdGVyRGF0YT4ge1xuICAgIHJldHVybiB0aGlzLl9vdXRwdXQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgX2VuYWJsZWQgPSBuZXcgUmVwbGF5U3ViamVjdDxNb2RlbExpc3RGaWx0ZXJbXT4oMSk7XG4gIHB1YmxpYyBnZXQgZW5hYmxlZCgpOiBPYnNlcnZhYmxlPE1vZGVsTGlzdEZpbHRlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2VuYWJsZWQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgX2F2YWlsYWJsZSA9IG5ldyBSZXBsYXlTdWJqZWN0PE1vZGVsTGlzdEZpbHRlcltdPigxKTtcbiAgcHVibGljIGdldCBhdmFpbGFibGUoKTogT2JzZXJ2YWJsZTxNb2RlbExpc3RGaWx0ZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hdmFpbGFibGUuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlKCkge1xuICAgIGNvbnN0IGZpbHRlcjogRmlsdGVyRGF0YSA9IHt9O1xuICAgIGNvbnN0IGVuYWJsZWQ6IE1vZGVsTGlzdEZpbHRlcltdID0gW107XG4gICAgY29uc3QgYXZhaWxhYmxlOiBNb2RlbExpc3RGaWx0ZXJbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgZiBvZiB0aGlzLl9maWx0ZXJzKSB7XG4gICAgICBpZiAoZi5lbmFibGVkKSB7XG4gICAgICAgIGYudXBkYXRlRmlsdGVyKGZpbHRlcik7XG4gICAgICAgIGVuYWJsZWQucHVzaChmKTtcbiAgICAgIH1cbiAgICAgIGlmIChmLmFsbG93ZWQpIHtcbiAgICAgICAgYXZhaWxhYmxlLnB1c2goZik7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX291dHB1dC5uZXh0KGZpbHRlcik7XG4gICAgdGhpcy5fZW5hYmxlZC5uZXh0KGVuYWJsZWQpO1xuICAgIHRoaXMuX2F2YWlsYWJsZS5uZXh0KGF2YWlsYWJsZSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { FormControl, ReactiveFormsModule, } from '@angular/forms';
|
|
3
|
+
import { debounceTime, Subject, takeUntil } from 'rxjs';
|
|
4
|
+
import { NgbPaginationModule } from '@ng-bootstrap/ng-bootstrap';
|
|
5
|
+
import { CommonModule } from '@angular/common';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/common";
|
|
8
|
+
import * as i2 from "@angular/forms";
|
|
9
|
+
import * as i3 from "@ng-bootstrap/ng-bootstrap";
|
|
10
|
+
export class ModelListPaginatorComponent {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.maxPages = 200;
|
|
13
|
+
this.hide = false;
|
|
14
|
+
this.perPageControl = new FormControl(10);
|
|
15
|
+
this.showDirectAccess = false;
|
|
16
|
+
this.directAccess = new FormControl(0);
|
|
17
|
+
this.curPage = 1;
|
|
18
|
+
this._unsubscribe = new Subject();
|
|
19
|
+
}
|
|
20
|
+
onPageChange(page) {
|
|
21
|
+
if (!page) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
this.list.paginator.setPage(page);
|
|
25
|
+
}
|
|
26
|
+
ngOnDestroy() {
|
|
27
|
+
this._unsubscribe.next();
|
|
28
|
+
this._unsubscribe.complete();
|
|
29
|
+
}
|
|
30
|
+
ngOnChanges() {
|
|
31
|
+
if (this.list) {
|
|
32
|
+
this.perPageControl.setValue(this.list.paginator.getPageSize(), {
|
|
33
|
+
emitEvent: false,
|
|
34
|
+
});
|
|
35
|
+
this.list.meta.pipe(takeUntil(this._unsubscribe)).subscribe((meta) => {
|
|
36
|
+
if (meta.nav) {
|
|
37
|
+
this.list.paginator.updatePage(meta.nav.page || 1);
|
|
38
|
+
this.curPage = meta.nav.page || 1;
|
|
39
|
+
this.curCount = meta.nav.count;
|
|
40
|
+
this.list.paginator.updatePageSize(meta.nav.size);
|
|
41
|
+
this.pageSize = this.list.paginator.getPageSize();
|
|
42
|
+
this.perPageControl.setValue(this.pageSize, { emitEvent: false });
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
this.perPageControl.valueChanges
|
|
46
|
+
.pipe(takeUntil(this._unsubscribe))
|
|
47
|
+
.subscribe((count) => {
|
|
48
|
+
this.list.paginator.setPageSize(count);
|
|
49
|
+
});
|
|
50
|
+
this.directAccess.valueChanges
|
|
51
|
+
.pipe(takeUntil(this._unsubscribe), debounceTime(400))
|
|
52
|
+
.subscribe((count) => {
|
|
53
|
+
this.list.paginator.setPage(+count);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
ModelListPaginatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ModelListPaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
59
|
+
ModelListPaginatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: ModelListPaginatorComponent, isStandalone: true, selector: "data-model-list-paginator", inputs: { list: "list", maxPages: "maxPages", hide: "hide" }, usesOnChanges: true, ngImport: i0, template: "\n<div class=\"row\" *ngIf=\"!hide\">\n <div class=\"col-sm-4\">\n <select class=\"form-select perpage\" [formControl]=\"perPageControl\">\n <option value=\"10\" *ngIf=\"maxPages>=10\">10 / page</option>\n <option value=\"20\" *ngIf=\"maxPages>=20\">20 / page</option>\n <option value=\"50\" *ngIf=\"maxPages>=50\">50 / page</option>\n <option value=\"100\" *ngIf=\"maxPages>=100\">100 / page</option>\n <option value=\"200\" *ngIf=\"maxPages>=200\">200 / page</option>\n <option value=\"500\" *ngIf=\"maxPages>=500\">500 / page</option>\n <option value=\"1000\" *ngIf=\"maxPages>=1000\">1000 / page</option>\n <option value=\"2000\" *ngIf=\"maxPages>=2000\">2000 / page</option>\n <option value=\"5000\" *ngIf=\"maxPages>=5000\">5000 / page</option>\n <option value=\"10000\" *ngIf=\"maxPages>=10000\">10000 / page</option>\n </select>\n </div>\n <div class=\"col-sm-5 pagination\" *ngIf=\"list\">\n <div class=\"text-xs-center\">\n <ngb-pagination [pageSize]=\"pageSize\" [collectionSize]=\"curCount\" [page]=\"curPage\" (pageChange)=\"onPageChange($event)\" [maxSize]=\"5\" [rotate]=\"true\"></ngb-pagination>\n </div>\n </div>\n <div class=\"col-sm-3 results\">\n <div>{{curCount}} r\u00E9sultats -<span (click)=\"showDirectAccess=!showDirectAccess\" role=\"button\">acces direct</span></div>\n <div *ngIf=\"showDirectAccess\">\n <input class=\"form-control\" [formControl]=\"directAccess\" type=\"number\" placeholder=\"Aller \u00E0 la page\">\n </div>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: NgbPaginationModule }, { kind: "component", type: i3.NgbPagination, selector: "ngb-pagination", inputs: ["disabled", "boundaryLinks", "directionLinks", "ellipses", "rotate", "collectionSize", "maxSize", "page", "pageSize", "size"], outputs: ["pageChange"] }] });
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ModelListPaginatorComponent, decorators: [{
|
|
61
|
+
type: Component,
|
|
62
|
+
args: [{ selector: 'data-model-list-paginator', standalone: true, imports: [CommonModule, ReactiveFormsModule, NgbPaginationModule], template: "\n<div class=\"row\" *ngIf=\"!hide\">\n <div class=\"col-sm-4\">\n <select class=\"form-select perpage\" [formControl]=\"perPageControl\">\n <option value=\"10\" *ngIf=\"maxPages>=10\">10 / page</option>\n <option value=\"20\" *ngIf=\"maxPages>=20\">20 / page</option>\n <option value=\"50\" *ngIf=\"maxPages>=50\">50 / page</option>\n <option value=\"100\" *ngIf=\"maxPages>=100\">100 / page</option>\n <option value=\"200\" *ngIf=\"maxPages>=200\">200 / page</option>\n <option value=\"500\" *ngIf=\"maxPages>=500\">500 / page</option>\n <option value=\"1000\" *ngIf=\"maxPages>=1000\">1000 / page</option>\n <option value=\"2000\" *ngIf=\"maxPages>=2000\">2000 / page</option>\n <option value=\"5000\" *ngIf=\"maxPages>=5000\">5000 / page</option>\n <option value=\"10000\" *ngIf=\"maxPages>=10000\">10000 / page</option>\n </select>\n </div>\n <div class=\"col-sm-5 pagination\" *ngIf=\"list\">\n <div class=\"text-xs-center\">\n <ngb-pagination [pageSize]=\"pageSize\" [collectionSize]=\"curCount\" [page]=\"curPage\" (pageChange)=\"onPageChange($event)\" [maxSize]=\"5\" [rotate]=\"true\"></ngb-pagination>\n </div>\n </div>\n <div class=\"col-sm-3 results\">\n <div>{{curCount}} r\u00E9sultats -<span (click)=\"showDirectAccess=!showDirectAccess\" role=\"button\">acces direct</span></div>\n <div *ngIf=\"showDirectAccess\">\n <input class=\"form-control\" [formControl]=\"directAccess\" type=\"number\" placeholder=\"Aller \u00E0 la page\">\n </div>\n </div>\n</div>" }]
|
|
63
|
+
}], propDecorators: { list: [{
|
|
64
|
+
type: Input
|
|
65
|
+
}], maxPages: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}], hide: [{
|
|
68
|
+
type: Input
|
|
69
|
+
}] } });
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC1wYWdpbmF0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL21vZGVsbGlzdC9tb2RlbC1saXN0LXBhZ2luYXRvci9tb2RlbC1saXN0LXBhZ2luYXRvci9tb2RlbC1saXN0LXBhZ2luYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtcGFnaW5hdG9yL21vZGVsLWxpc3QtcGFnaW5hdG9yL21vZGVsLWxpc3QtcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUF3QixNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQ0wsV0FBVyxFQUNYLG1CQUFtQixHQUVwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBVy9DLE1BQU0sT0FBTywyQkFBMkI7SUFQeEM7UUFXa0IsYUFBUSxHQUFHLEdBQUcsQ0FBQztRQUNmLFNBQUksR0FBRyxLQUFLLENBQUM7UUFFdEIsbUJBQWMsR0FBZ0IsSUFBSSxXQUFXLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDMUQscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLGlCQUFZLEdBQWdCLElBQUksV0FBVyxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELFlBQU8sR0FBRyxDQUFDLENBQUM7UUFHWixpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7S0E0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ZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RlbExpc3QgfSBmcm9tICcuLi8uLi9tb2RlbC1saXN0LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgRm9ybUNvbnRyb2wsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5nYlBhZ2luYXRpb25Nb2R1bGUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBEYXRhTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9kYXRhL2RhdGEtbW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRhLW1vZGVsLWxpc3QtcGFnaW5hdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGVsLWxpc3QtcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbW9kZWwtbGlzdC1wYWdpbmF0b3IuY29tcG9uZW50LnNhc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgTmdiUGFnaW5hdGlvbk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIE1vZGVsTGlzdFBhZ2luYXRvckNvbXBvbmVudDxUIGV4dGVuZHMgRGF0YU1vZGVsPlxuICBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25DaGFuZ2VzXG57XG4gIEBJbnB1dCgpIHB1YmxpYyBsaXN0ITogTW9kZWxMaXN0PFQ+O1xuICBASW5wdXQoKSBwdWJsaWMgbWF4UGFnZXMgPSAyMDA7XG4gIEBJbnB1dCgpIHB1YmxpYyBoaWRlID0gZmFsc2U7XG5cbiAgcHVibGljIHBlclBhZ2VDb250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxudW1iZXI+KDEwKTtcbiAgcHVibGljIHNob3dEaXJlY3RBY2Nlc3MgPSBmYWxzZTtcbiAgcHVibGljIGRpcmVjdEFjY2VzczogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyPigwKTtcbiAgcHVibGljIGN1clBhZ2UgPSAxO1xuICBwdWJsaWMgY3VyQ291bnQhOiBudW1iZXI7XG4gIHB1YmxpYyBwYWdlU2l6ZSE6IG51bWJlcjtcbiAgcHVibGljIF91bnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHVibGljIG9uUGFnZUNoYW5nZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoIXBhZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5saXN0LnBhZ2luYXRvci5zZXRQYWdlKHBhZ2UpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLl91bnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxpc3QpIHtcbiAgICAgIHRoaXMucGVyUGFnZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5saXN0LnBhZ2luYXRvci5nZXRQYWdlU2l6ZSgpLCB7XG4gICAgICAgIGVtaXRFdmVudDogZmFsc2UsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5saXN0Lm1ldGEucGlwZSh0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKG1ldGEpID0+IHtcbiAgICAgICAgaWYgKG1ldGEubmF2KSB7XG4gICAgICAgICAgdGhpcy5saXN0LnBhZ2luYXRvci51cGRhdGVQYWdlKG1ldGEubmF2LnBhZ2UgfHwgMSk7XG4gICAgICAgICAgdGhpcy5jdXJQYWdlID0gbWV0YS5uYXYucGFnZSB8fCAxO1xuICAgICAgICAgIHRoaXMuY3VyQ291bnQgPSBtZXRhLm5hdi5jb3VudDtcbiAgICAgICAgICB0aGlzLmxpc3QucGFnaW5hdG9yLnVwZGF0ZVBhZ2VTaXplKG1ldGEubmF2LnNpemUpO1xuICAgICAgICAgIHRoaXMucGFnZVNpemUgPSB0aGlzLmxpc3QucGFnaW5hdG9yLmdldFBhZ2VTaXplKCk7XG4gICAgICAgICAgdGhpcy5wZXJQYWdlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnBhZ2VTaXplLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnBlclBhZ2VDb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKChjb3VudCkgPT4ge1xuICAgICAgICAgIHRoaXMubGlzdC5wYWdpbmF0b3Iuc2V0UGFnZVNpemUoY291bnQpO1xuICAgICAgICB9KTtcblxuICAgICAgdGhpcy5kaXJlY3RBY2Nlc3MudmFsdWVDaGFuZ2VzXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSksIGRlYm91bmNlVGltZSg0MDApKVxuICAgICAgICAuc3Vic2NyaWJlKChjb3VudCkgPT4ge1xuICAgICAgICAgIHRoaXMubGlzdC5wYWdpbmF0b3Iuc2V0UGFnZSgrY291bnQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIlxuPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiIWhpZGVcIj5cbiAgPGRpdiBjbGFzcz1cImNvbC1zbS00XCI+XG4gICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0IHBlcnBhZ2VcIiBbZm9ybUNvbnRyb2xdPVwicGVyUGFnZUNvbnRyb2xcIj5cbiAgICAgIDxvcHRpb24gdmFsdWU9XCIxMFwiICpuZ0lmPVwibWF4UGFnZXMmZ3Q7PTEwXCI+MTAgLyBwYWdlPC9vcHRpb24+XG4gICAgICA8b3B0aW9uIHZhbHVlPVwiMjBcIiAqbmdJZj1cIm1heFBhZ2VzJmd0Oz0yMFwiPjIwIC8gcGFnZTwvb3B0aW9uPlxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIjUwXCIgKm5nSWY9XCJtYXhQYWdlcyZndDs9NTBcIj41MCAvIHBhZ2U8L29wdGlvbj5cbiAgICAgIDxvcHRpb24gdmFsdWU9XCIxMDBcIiAqbmdJZj1cIm1heFBhZ2VzJmd0Oz0xMDBcIj4xMDAgLyBwYWdlPC9vcHRpb24+XG4gICAgICA8b3B0aW9uIHZhbHVlPVwiMjAwXCIgKm5nSWY9XCJtYXhQYWdlcyZndDs9MjAwXCI+MjAwIC8gcGFnZTwvb3B0aW9uPlxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIjUwMFwiICpuZ0lmPVwibWF4UGFnZXMmZ3Q7PTUwMFwiPjUwMCAvIHBhZ2U8L29wdGlvbj5cbiAgICAgIDxvcHRpb24gdmFsdWU9XCIxMDAwXCIgKm5nSWY9XCJtYXhQYWdlcyZndDs9MTAwMFwiPjEwMDAgLyBwYWdlPC9vcHRpb24+XG4gICAgICA8b3B0aW9uIHZhbHVlPVwiMjAwMFwiICpuZ0lmPVwibWF4UGFnZXMmZ3Q7PTIwMDBcIj4yMDAwIC8gcGFnZTwvb3B0aW9uPlxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIjUwMDBcIiAqbmdJZj1cIm1heFBhZ2VzJmd0Oz01MDAwXCI+NTAwMCAvIHBhZ2U8L29wdGlvbj5cbiAgICAgIDxvcHRpb24gdmFsdWU9XCIxMDAwMFwiICpuZ0lmPVwibWF4UGFnZXMmZ3Q7PTEwMDAwXCI+MTAwMDAgLyBwYWdlPC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY29sLXNtLTUgcGFnaW5hdGlvblwiICpuZ0lmPVwibGlzdFwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXhzLWNlbnRlclwiPlxuICAgICAgPG5nYi1wYWdpbmF0aW9uIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiIFtjb2xsZWN0aW9uU2l6ZV09XCJjdXJDb3VudFwiIFtwYWdlXT1cImN1clBhZ2VcIiAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiIFttYXhTaXplXT1cIjVcIiBbcm90YXRlXT1cInRydWVcIj48L25nYi1wYWdpbmF0aW9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNvbC1zbS0zIHJlc3VsdHNcIj5cbiAgICA8ZGl2Pnt7Y3VyQ291bnR9fSByw6lzdWx0YXRzIC08c3BhbiAoY2xpY2spPVwic2hvd0RpcmVjdEFjY2Vzcz0hc2hvd0RpcmVjdEFjY2Vzc1wiIHJvbGU9XCJidXR0b25cIj5hY2NlcyBkaXJlY3Q8L3NwYW4+PC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInNob3dEaXJlY3RBY2Nlc3NcIj5cbiAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtmb3JtQ29udHJvbF09XCJkaXJlY3RBY2Nlc3NcIiB0eXBlPVwibnVtYmVyXCIgcGxhY2Vob2xkZXI9XCJBbGxlciDDoCBsYSBwYWdlXCI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+Il19
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { ReplaySubject } from 'rxjs';
|
|
2
|
+
export class ModelListPaginator {
|
|
3
|
+
constructor(defaults) {
|
|
4
|
+
this._output = new ReplaySubject(1);
|
|
5
|
+
if (!defaults) {
|
|
6
|
+
defaults = { page_size: 20, page: 1 };
|
|
7
|
+
}
|
|
8
|
+
this._page_size = defaults.page_size || 20;
|
|
9
|
+
this._page = defaults.page || 1;
|
|
10
|
+
this._updateOutput('constructor');
|
|
11
|
+
}
|
|
12
|
+
get output() {
|
|
13
|
+
return this._output.asObservable();
|
|
14
|
+
}
|
|
15
|
+
setPage(page) {
|
|
16
|
+
if (page !== this._page) {
|
|
17
|
+
this._page = page;
|
|
18
|
+
this._updateOutput('setPage');
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
updatePage(page) {
|
|
22
|
+
if (page !== this._page) {
|
|
23
|
+
this._page = page;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
setPageSize(size) {
|
|
27
|
+
if (size !== this._page_size) {
|
|
28
|
+
this._page_size = size;
|
|
29
|
+
this._updateOutput('setPageSize');
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
updatePageSize(size) {
|
|
33
|
+
if (size !== this._page_size) {
|
|
34
|
+
this._page_size = size;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
getPageSize() {
|
|
38
|
+
return this._page_size;
|
|
39
|
+
}
|
|
40
|
+
getPage() {
|
|
41
|
+
return this._page;
|
|
42
|
+
}
|
|
43
|
+
_updateOutput(from = '') {
|
|
44
|
+
this._output.next({ page: this._page, page_size: this._page_size });
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC1wYWdpbmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtcGFnaW5hdG9yL21vZGVsLWxpc3QtcGFnaW5hdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakQsTUFBTSxPQUFPLGtCQUFrQjtJQUk3QixZQUFZLFFBQW9CO1FBU3hCLFlBQU8sR0FBRyxJQUFJLGFBQWEsQ0FBWSxDQUFDLENBQUMsQ0FBQztRQVJoRCxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2IsUUFBUSxHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7U0FDdkM7UUFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBSUQsSUFBVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFTSxPQUFPLENBQUMsSUFBWTtRQUN6QixJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRU0sVUFBVSxDQUFDLElBQVk7UUFDNUIsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRTtZQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNuQjtJQUNILENBQUM7SUFFTSxXQUFXLENBQUMsSUFBWTtRQUM3QixJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzVCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDbkM7SUFDSCxDQUFDO0lBRU0sY0FBYyxDQUFDLElBQVk7UUFDaEMsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRU0sT0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRU8sYUFBYSxDQUFDLE9BQWUsRUFBRTtRQUNyQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUN0RSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJUXVlcnlOYXYgfSBmcm9tICcuLi8uLi9kYXRhL2RhdGEtcXVlcnknO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY2xhc3MgTW9kZWxMaXN0UGFnaW5hdG9yIHtcbiAgcHJpdmF0ZSBfcGFnZV9zaXplITogbnVtYmVyO1xuICBwcml2YXRlIF9wYWdlITogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGRlZmF1bHRzPzogSVF1ZXJ5TmF2KSB7XG4gICAgaWYgKCFkZWZhdWx0cykge1xuICAgICAgZGVmYXVsdHMgPSB7IHBhZ2Vfc2l6ZTogMjAsIHBhZ2U6IDEgfTtcbiAgICB9XG4gICAgdGhpcy5fcGFnZV9zaXplID0gZGVmYXVsdHMucGFnZV9zaXplIHx8IDIwO1xuICAgIHRoaXMuX3BhZ2UgPSBkZWZhdWx0cy5wYWdlIHx8IDE7XG4gICAgdGhpcy5fdXBkYXRlT3V0cHV0KCdjb25zdHJ1Y3RvcicpO1xuICB9XG5cbiAgcHJpdmF0ZSBfb3V0cHV0ID0gbmV3IFJlcGxheVN1YmplY3Q8SVF1ZXJ5TmF2PigxKTtcblxuICBwdWJsaWMgZ2V0IG91dHB1dCgpOiBPYnNlcnZhYmxlPElRdWVyeU5hdj4ge1xuICAgIHJldHVybiB0aGlzLl9vdXRwdXQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0UGFnZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAocGFnZSAhPT0gdGhpcy5fcGFnZSkge1xuICAgICAgdGhpcy5fcGFnZSA9IHBhZ2U7XG4gICAgICB0aGlzLl91cGRhdGVPdXRwdXQoJ3NldFBhZ2UnKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUGFnZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAocGFnZSAhPT0gdGhpcy5fcGFnZSkge1xuICAgICAgdGhpcy5fcGFnZSA9IHBhZ2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFBhZ2VTaXplKHNpemU6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChzaXplICE9PSB0aGlzLl9wYWdlX3NpemUpIHtcbiAgICAgIHRoaXMuX3BhZ2Vfc2l6ZSA9IHNpemU7XG4gICAgICB0aGlzLl91cGRhdGVPdXRwdXQoJ3NldFBhZ2VTaXplJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZVBhZ2VTaXplKHNpemU6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChzaXplICE9PSB0aGlzLl9wYWdlX3NpemUpIHtcbiAgICAgIHRoaXMuX3BhZ2Vfc2l6ZSA9IHNpemU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFBhZ2VTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BhZ2Vfc2l6ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRQYWdlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BhZ2U7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVPdXRwdXQoZnJvbTogc3RyaW5nID0gJycpOiB2b2lkIHtcbiAgICB0aGlzLl9vdXRwdXQubmV4dCh7IHBhZ2U6IHRoaXMuX3BhZ2UsIHBhZ2Vfc2l6ZTogdGhpcy5fcGFnZV9zaXplIH0pO1xuICB9XG59XG4iXX0=
|
package/esm2020/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.mjs
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
export class ModelListSorterComponent {
|
|
6
|
+
constructor() { }
|
|
7
|
+
isUp() {
|
|
8
|
+
const f = this.list.sorter.get(this.field);
|
|
9
|
+
if (f) {
|
|
10
|
+
return f.direction === 'asc';
|
|
11
|
+
}
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
isDown() {
|
|
15
|
+
const f = this.list.sorter.get(this.field);
|
|
16
|
+
if (f) {
|
|
17
|
+
return f.direction === 'desc';
|
|
18
|
+
}
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
setUp() {
|
|
22
|
+
this.list.sorter.set(this.field, 'asc');
|
|
23
|
+
}
|
|
24
|
+
setDown() {
|
|
25
|
+
this.list.sorter.set(this.field, 'desc');
|
|
26
|
+
}
|
|
27
|
+
getCount() {
|
|
28
|
+
return this.list.sorter.get(this.field)
|
|
29
|
+
? this.list.sorter.getAll().length
|
|
30
|
+
: 0;
|
|
31
|
+
}
|
|
32
|
+
getOrder() {
|
|
33
|
+
return this.list.sorter.getOrder(this.field);
|
|
34
|
+
}
|
|
35
|
+
cancel() {
|
|
36
|
+
this.list.sorter.unset(this.field);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
ModelListSorterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ModelListSorterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
40
|
+
ModelListSorterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: ModelListSorterComponent, isStandalone: true, selector: "data-model-list-sorter", inputs: { list: "list", field: "field" }, ngImport: i0, template: "<span class=\"dirs\"><span *ngIf=\"getOrder()>=0 || getCount()>1\" (click)=\"cancel()\" role=\"button\"><span class=\"count\" *ngIf=\"getCount()>1\"> {{getOrder()}}</span><span class=\"bi bi-x\"></span></span><span class=\"bi bi-sort-down-alt\" (click)=\"setUp()\" [class.active]=\"isUp()\" role=\"button\"></span><span class=\"bi bi-sort-down\" (click)=\"setDown()\" [class.active]=\"isDown()\" role=\"button\"></span> </span>\n<ng-content></ng-content>", styles: [".dirs{color:#d3d3d3}.dirs .count{font-size:.7rem;margin-right:-.1rem;vertical-align:super}.active{color:#000}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ModelListSorterComponent, decorators: [{
|
|
42
|
+
type: Component,
|
|
43
|
+
args: [{ selector: 'data-model-list-sorter', standalone: true, imports: [CommonModule], template: "<span class=\"dirs\"><span *ngIf=\"getOrder()>=0 || getCount()>1\" (click)=\"cancel()\" role=\"button\"><span class=\"count\" *ngIf=\"getCount()>1\"> {{getOrder()}}</span><span class=\"bi bi-x\"></span></span><span class=\"bi bi-sort-down-alt\" (click)=\"setUp()\" [class.active]=\"isUp()\" role=\"button\"></span><span class=\"bi bi-sort-down\" (click)=\"setDown()\" [class.active]=\"isDown()\" role=\"button\"></span> </span>\n<ng-content></ng-content>", styles: [".dirs{color:#d3d3d3}.dirs .count{font-size:.7rem;margin-right:-.1rem;vertical-align:super}.active{color:#000}\n"] }]
|
|
44
|
+
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
45
|
+
type: Input
|
|
46
|
+
}], field: [{
|
|
47
|
+
type: Input
|
|
48
|
+
}] } });
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC1zb3J0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL21vZGVsbGlzdC9tb2RlbC1saXN0LXNvcnRlci9tb2RlbC1saXN0LXNvcnRlci9tb2RlbC1saXN0LXNvcnRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3Qtc29ydGVyL21vZGVsLWxpc3Qtc29ydGVyL21vZGVsLWxpc3Qtc29ydGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBUy9DLE1BQU0sT0FBTyx3QkFBd0I7SUFVbkMsZ0JBQWUsQ0FBQztJQUVULElBQUk7UUFDVCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxFQUFFO1lBQ0wsT0FBTyxDQUFDLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQztTQUM5QjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLE1BQU07UUFDWCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxFQUFFO1lBQ0wsT0FBTyxDQUFDLENBQUMsU0FBUyxLQUFLLE1BQU0sQ0FBQztTQUMvQjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFTSxRQUFRO1FBQ2IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNyQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTTtZQUNsQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7O3FIQWhEVSx3QkFBd0I7eUdBQXhCLHdCQUF3Qiw0SENYckMsc2RBQ3lCLHdLRFFiLFlBQVk7MkZBRVgsd0JBQXdCO2tCQVBwQyxTQUFTOytCQUNFLHdCQUF3QixjQUd0QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUM7MEVBTVAsSUFBSTtzQkFBbkIsS0FBSztnQkFJVSxLQUFLO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9kZWxMaXN0IH0gZnJvbSAnLi4vLi4vbW9kZWwtbGlzdC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdGEtbW9kZWwtbGlzdC1zb3J0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kZWwtbGlzdC1zb3J0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tb2RlbC1saXN0LXNvcnRlci5jb21wb25lbnQuc2FzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgTW9kZWxMaXN0U29ydGVyQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIE1vZGVsTGlzdCByZWZlcmVuY2UuXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgbGlzdCE6IE1vZGVsTGlzdDxhbnk+O1xuICAvKipcbiAgICogU29ydCBmaWVsZCBuYW1lLlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGZpZWxkITogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBwdWJsaWMgaXNVcCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBmID0gdGhpcy5saXN0LnNvcnRlci5nZXQodGhpcy5maWVsZCk7XG4gICAgaWYgKGYpIHtcbiAgICAgIHJldHVybiBmLmRpcmVjdGlvbiA9PT0gJ2FzYyc7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBpc0Rvd24oKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZiA9IHRoaXMubGlzdC5zb3J0ZXIuZ2V0KHRoaXMuZmllbGQpO1xuICAgIGlmIChmKSB7XG4gICAgICByZXR1cm4gZi5kaXJlY3Rpb24gPT09ICdkZXNjJztcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHNldFVwKCk6IHZvaWQge1xuICAgIHRoaXMubGlzdC5zb3J0ZXIuc2V0KHRoaXMuZmllbGQsICdhc2MnKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXREb3duKCk6IHZvaWQge1xuICAgIHRoaXMubGlzdC5zb3J0ZXIuc2V0KHRoaXMuZmllbGQsICdkZXNjJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5saXN0LnNvcnRlci5nZXQodGhpcy5maWVsZClcbiAgICAgID8gdGhpcy5saXN0LnNvcnRlci5nZXRBbGwoKS5sZW5ndGhcbiAgICAgIDogMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRPcmRlcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmxpc3Quc29ydGVyLmdldE9yZGVyKHRoaXMuZmllbGQpO1xuICB9XG5cbiAgcHVibGljIGNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3Quc29ydGVyLnVuc2V0KHRoaXMuZmllbGQpO1xuICB9XG59XG4iLCI8c3BhbiBjbGFzcz1cImRpcnNcIj48c3BhbiAqbmdJZj1cImdldE9yZGVyKCkmZ3Q7PTAgfHwgZ2V0Q291bnQoKSZndDsxXCIgKGNsaWNrKT1cImNhbmNlbCgpXCIgcm9sZT1cImJ1dHRvblwiPjxzcGFuIGNsYXNzPVwiY291bnRcIiAqbmdJZj1cImdldENvdW50KCkmZ3Q7MVwiPiB7e2dldE9yZGVyKCl9fTwvc3Bhbj48c3BhbiBjbGFzcz1cImJpIGJpLXhcIj48L3NwYW4+PC9zcGFuPjxzcGFuIGNsYXNzPVwiYmkgYmktc29ydC1kb3duLWFsdFwiIChjbGljayk9XCJzZXRVcCgpXCIgW2NsYXNzLmFjdGl2ZV09XCJpc1VwKClcIiByb2xlPVwiYnV0dG9uXCI+PC9zcGFuPjxzcGFuIGNsYXNzPVwiYmkgYmktc29ydC1kb3duXCIgKGNsaWNrKT1cInNldERvd24oKVwiIFtjbGFzcy5hY3RpdmVdPVwiaXNEb3duKClcIiByb2xlPVwiYnV0dG9uXCI+PC9zcGFuPiZuYnNwOzwvc3Bhbj5cbjxuZy1jb250ZW50PjwvbmctY29udGVudD4iXX0=
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { ReplaySubject } from 'rxjs';
|
|
2
|
+
export class ModelListSorter {
|
|
3
|
+
/**
|
|
4
|
+
* Create ModelListSorter instance, using defaults.
|
|
5
|
+
* @param defaults defaults sort values, as a list of strings (+field, -field, field)
|
|
6
|
+
*/
|
|
7
|
+
constructor(defaults = []) {
|
|
8
|
+
this._values = [];
|
|
9
|
+
this._output = new ReplaySubject(1);
|
|
10
|
+
this._values = [];
|
|
11
|
+
for (const d of defaults) {
|
|
12
|
+
if (d.length < 1) {
|
|
13
|
+
continue;
|
|
14
|
+
}
|
|
15
|
+
if (d[0] == '+') {
|
|
16
|
+
this._values.push({ field: d.substring(1), direction: 'asc' });
|
|
17
|
+
}
|
|
18
|
+
else if (d[0] == '-') {
|
|
19
|
+
this._values.push({ field: d.substring(1), direction: 'desc' });
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
this._values.push({ field: d, direction: 'asc' });
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
this._updateOutput('constructor');
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Returns a list of "+/-field" sort strings observable.
|
|
29
|
+
* @returns sort strings observable
|
|
30
|
+
*/
|
|
31
|
+
get output() {
|
|
32
|
+
return this._output.asObservable();
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Set sorting for `name` key, in direction `direction`.
|
|
36
|
+
* If sorting is already set for `name` key, updates direction without changing order.
|
|
37
|
+
* If sorting isn't set for `name` key, adds it at the end of sorting directions.
|
|
38
|
+
*
|
|
39
|
+
* @param name field name
|
|
40
|
+
* @param direction sort direction
|
|
41
|
+
* @returns model list sorter
|
|
42
|
+
*/
|
|
43
|
+
set(name, direction) {
|
|
44
|
+
for (const v of this._values) {
|
|
45
|
+
if (v.field === name) {
|
|
46
|
+
v.direction = direction;
|
|
47
|
+
this._updateOutput();
|
|
48
|
+
return this;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
this._values.push({ field: name, direction });
|
|
52
|
+
this._updateOutput('set');
|
|
53
|
+
return this;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Removes `name` sorting key from current keys.
|
|
57
|
+
*
|
|
58
|
+
* @param name sort key to be removed
|
|
59
|
+
* @returns model list sorter
|
|
60
|
+
*/
|
|
61
|
+
unset(name) {
|
|
62
|
+
for (let i = 0; i < this._values.length; i++) {
|
|
63
|
+
if (this._values[i].field === name) {
|
|
64
|
+
this._values.splice(i, 1);
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
this._updateOutput('unset');
|
|
69
|
+
return this;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get sorting status for `field` argument.
|
|
73
|
+
* If `field` is not found, returns null.
|
|
74
|
+
*
|
|
75
|
+
* @param field field name
|
|
76
|
+
* @returns ordering direction / null
|
|
77
|
+
*/
|
|
78
|
+
get(field) {
|
|
79
|
+
for (const v of this._values) {
|
|
80
|
+
if (v.field === field) {
|
|
81
|
+
return v;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Return all sorter data values.
|
|
88
|
+
*
|
|
89
|
+
* @returns all sorter data values.
|
|
90
|
+
*/
|
|
91
|
+
getAll() {
|
|
92
|
+
return this._values;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Get the ordering position for `field` argument. If not found, returns -1.
|
|
96
|
+
*
|
|
97
|
+
* @param field field name
|
|
98
|
+
* @returns ordering position for field
|
|
99
|
+
*/
|
|
100
|
+
getOrder(field) {
|
|
101
|
+
for (let i = 0; i < this._values.length; i++) {
|
|
102
|
+
if (this._values[i].field === field) {
|
|
103
|
+
return i + 1;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return -1;
|
|
107
|
+
}
|
|
108
|
+
_updateOutput(_from = '') {
|
|
109
|
+
let out = [];
|
|
110
|
+
for (const v of this._values) {
|
|
111
|
+
out.push(`${v.direction === 'asc' ? '' : '-'}${v.field}`);
|
|
112
|
+
}
|
|
113
|
+
this._output.next(out);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC1zb3J0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3Qtc29ydGVyL21vZGVsLWxpc3Qtc29ydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFhakQsTUFBTSxPQUFPLGVBQWU7SUFHMUI7OztPQUdHO0lBQ0gsWUFBWSxXQUEyQixFQUFFO1FBTnhCLFlBQU8sR0FBZSxFQUFFLENBQUM7UUFPeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixLQUFLLE1BQU0sQ0FBQyxJQUFJLFFBQVEsRUFBRTtZQUN4QixJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUNoQixTQUFTO2FBQ1Y7WUFDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQzthQUNoRTtpQkFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7YUFDakU7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO2FBQ25EO1NBQ0Y7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFJRDs7O09BR0c7SUFDSCxJQUFXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksR0FBRyxDQUFDLElBQVksRUFBRSxTQUF3QjtRQUMvQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDNUIsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtnQkFDcEIsQ0FBQyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckIsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxJQUFZO1FBQ3ZCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM1QyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtnQkFDbEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixNQUFNO2FBQ1A7U0FDRjtRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksR0FBRyxDQUFDLEtBQWE7UUFDdEIsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQzVCLElBQUksQ0FBQyxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUU7Z0JBQ3JCLE9BQU8sQ0FBQyxDQUFDO2FBQ1Y7U0FDRjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLFFBQVEsQ0FBQyxLQUFhO1FBQzNCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM1QyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEtBQUssRUFBRTtnQkFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2Q7U0FDRjtRQUNELE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRU8sYUFBYSxDQUFDLFFBQWdCLEVBQUU7UUFDdEMsSUFBSSxHQUFHLEdBQWEsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUM1QixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQzNEO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU29ydGVyRGVmYXVsdHMgfSBmcm9tICcuLi9tb2RlbC1saXN0LnNlcnZpY2UnO1xuXG4vLyBUT0RPOiBhZGQgYW4gb3B0aW9uIHRvIGxpbWl0IHRoZSBudW1iZXIgb2Ygb3JkZXJpbmcgZmllbGRzIChlZy4gZm9yIHRyZWUgcXVlcmllcylcbmV4cG9ydCB0eXBlIFNvcnREaXJlY3Rpb24gPSAnYXNjJyB8ICdkZXNjJztcblxuZXhwb3J0IGludGVyZmFjZSBGaWVsZFNvcnREYXRhIHtcbiAgZmllbGQ6IHN0cmluZztcbiAgZGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uO1xufVxuXG5leHBvcnQgdHlwZSBTb3J0ZXJEYXRhID0gRmllbGRTb3J0RGF0YVtdO1xuXG5leHBvcnQgY2xhc3MgTW9kZWxMaXN0U29ydGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdmFsdWVzOiBTb3J0ZXJEYXRhID0gW107XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBNb2RlbExpc3RTb3J0ZXIgaW5zdGFuY2UsIHVzaW5nIGRlZmF1bHRzLlxuICAgKiBAcGFyYW0gZGVmYXVsdHMgZGVmYXVsdHMgc29ydCB2YWx1ZXMsIGFzIGEgbGlzdCBvZiBzdHJpbmdzICgrZmllbGQsIC1maWVsZCwgZmllbGQpXG4gICAqL1xuICBjb25zdHJ1Y3RvcihkZWZhdWx0czogU29ydGVyRGVmYXVsdHMgPSBbXSkge1xuICAgIHRoaXMuX291dHB1dCA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuICAgIHRoaXMuX3ZhbHVlcyA9IFtdO1xuICAgIGZvciAoY29uc3QgZCBvZiBkZWZhdWx0cykge1xuICAgICAgaWYgKGQubGVuZ3RoIDwgMSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChkWzBdID09ICcrJykge1xuICAgICAgICB0aGlzLl92YWx1ZXMucHVzaCh7IGZpZWxkOiBkLnN1YnN0cmluZygxKSwgZGlyZWN0aW9uOiAnYXNjJyB9KTtcbiAgICAgIH0gZWxzZSBpZiAoZFswXSA9PSAnLScpIHtcbiAgICAgICAgdGhpcy5fdmFsdWVzLnB1c2goeyBmaWVsZDogZC5zdWJzdHJpbmcoMSksIGRpcmVjdGlvbjogJ2Rlc2MnIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fdmFsdWVzLnB1c2goeyBmaWVsZDogZCwgZGlyZWN0aW9uOiAnYXNjJyB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fdXBkYXRlT3V0cHV0KCdjb25zdHJ1Y3RvcicpO1xuICB9XG5cbiAgcHJpdmF0ZSBfb3V0cHV0OiBSZXBsYXlTdWJqZWN0PHN0cmluZ1tdPjtcblxuICAvKipcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgXCIrLy1maWVsZFwiIHNvcnQgc3RyaW5ncyBvYnNlcnZhYmxlLlxuICAgKiBAcmV0dXJucyBzb3J0IHN0cmluZ3Mgb2JzZXJ2YWJsZVxuICAgKi9cbiAgcHVibGljIGdldCBvdXRwdXQoKTogT2JzZXJ2YWJsZTxzdHJpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9vdXRwdXQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHNvcnRpbmcgZm9yIGBuYW1lYCBrZXksIGluIGRpcmVjdGlvbiBgZGlyZWN0aW9uYC5cbiAgICogSWYgc29ydGluZyBpcyBhbHJlYWR5IHNldCBmb3IgYG5hbWVgIGtleSwgdXBkYXRlcyBkaXJlY3Rpb24gd2l0aG91dCBjaGFuZ2luZyBvcmRlci5cbiAgICogSWYgc29ydGluZyBpc24ndCBzZXQgZm9yIGBuYW1lYCBrZXksIGFkZHMgaXQgYXQgdGhlIGVuZCBvZiBzb3J0aW5nIGRpcmVjdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIGZpZWxkIG5hbWVcbiAgICogQHBhcmFtIGRpcmVjdGlvbiBzb3J0IGRpcmVjdGlvblxuICAgKiBAcmV0dXJucyBtb2RlbCBsaXN0IHNvcnRlclxuICAgKi9cbiAgcHVibGljIHNldChuYW1lOiBzdHJpbmcsIGRpcmVjdGlvbjogU29ydERpcmVjdGlvbik6IE1vZGVsTGlzdFNvcnRlciB7XG4gICAgZm9yIChjb25zdCB2IG9mIHRoaXMuX3ZhbHVlcykge1xuICAgICAgaWYgKHYuZmllbGQgPT09IG5hbWUpIHtcbiAgICAgICAgdi5kaXJlY3Rpb24gPSBkaXJlY3Rpb247XG4gICAgICAgIHRoaXMuX3VwZGF0ZU91dHB1dCgpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fdmFsdWVzLnB1c2goeyBmaWVsZDogbmFtZSwgZGlyZWN0aW9uIH0pO1xuICAgIHRoaXMuX3VwZGF0ZU91dHB1dCgnc2V0Jyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBgbmFtZWAgc29ydGluZyBrZXkgZnJvbSBjdXJyZW50IGtleXMuXG4gICAqXG4gICAqIEBwYXJhbSAgbmFtZSBzb3J0IGtleSB0byBiZSByZW1vdmVkXG4gICAqIEByZXR1cm5zIG1vZGVsIGxpc3Qgc29ydGVyXG4gICAqL1xuICBwdWJsaWMgdW5zZXQobmFtZTogc3RyaW5nKTogTW9kZWxMaXN0U29ydGVyIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX3ZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRoaXMuX3ZhbHVlc1tpXS5maWVsZCA9PT0gbmFtZSkge1xuICAgICAgICB0aGlzLl92YWx1ZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fdXBkYXRlT3V0cHV0KCd1bnNldCcpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBzb3J0aW5nIHN0YXR1cyBmb3IgYGZpZWxkYCBhcmd1bWVudC5cbiAgICogSWYgYGZpZWxkYCBpcyBub3QgZm91bmQsIHJldHVybnMgbnVsbC5cbiAgICpcbiAgICogQHBhcmFtICBmaWVsZCBmaWVsZCBuYW1lXG4gICAqIEByZXR1cm5zIG9yZGVyaW5nIGRpcmVjdGlvbiAvIG51bGxcbiAgICovXG4gIHB1YmxpYyBnZXQoZmllbGQ6IHN0cmluZyk6IEZpZWxkU29ydERhdGEgfCBudWxsIHtcbiAgICBmb3IgKGNvbnN0IHYgb2YgdGhpcy5fdmFsdWVzKSB7XG4gICAgICBpZiAodi5maWVsZCA9PT0gZmllbGQpIHtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbGwgc29ydGVyIGRhdGEgdmFsdWVzLlxuICAgKlxuICAgKiBAcmV0dXJucyBhbGwgc29ydGVyIGRhdGEgdmFsdWVzLlxuICAgKi9cbiAgcHVibGljIGdldEFsbCgpOiBTb3J0ZXJEYXRhIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgb3JkZXJpbmcgcG9zaXRpb24gZm9yIGBmaWVsZGAgYXJndW1lbnQuIElmIG5vdCBmb3VuZCwgcmV0dXJucyAtMS5cbiAgICpcbiAgICogQHBhcmFtICBmaWVsZCBmaWVsZCBuYW1lXG4gICAqIEByZXR1cm5zIG9yZGVyaW5nIHBvc2l0aW9uIGZvciBmaWVsZFxuICAgKi9cbiAgcHVibGljIGdldE9yZGVyKGZpZWxkOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fdmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5fdmFsdWVzW2ldLmZpZWxkID09PSBmaWVsZCkge1xuICAgICAgICByZXR1cm4gaSArIDE7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZU91dHB1dChfZnJvbTogc3RyaW5nID0gJycpOiB2b2lkIHtcbiAgICBsZXQgb3V0OiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgdiBvZiB0aGlzLl92YWx1ZXMpIHtcbiAgICAgIG91dC5wdXNoKGAke3YuZGlyZWN0aW9uID09PSAnYXNjJyA/ICcnIDogJy0nfSR7di5maWVsZH1gKTtcbiAgICB9XG4gICAgdGhpcy5fb3V0cHV0Lm5leHQob3V0KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { combineLatest, debounceTime, of, Subject, takeUntil, } from 'rxjs';
|
|
3
|
+
import { switchMap } from 'rxjs/operators';
|
|
4
|
+
import { ModelListFields } from './model-list-fields/model-list-fields';
|
|
5
|
+
import { ModelListPaginator } from './model-list-paginator/model-list-paginator';
|
|
6
|
+
import { ModelListSorter } from './model-list-sorter/model-list-sorter';
|
|
7
|
+
import { ModelListFilters } from './model-list-filters/model-list-filters';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
export class ModelList {
|
|
10
|
+
constructor(name) {
|
|
11
|
+
this.started = false;
|
|
12
|
+
this.name = name;
|
|
13
|
+
}
|
|
14
|
+
get results() {
|
|
15
|
+
return this.queryset.results;
|
|
16
|
+
}
|
|
17
|
+
get meta() {
|
|
18
|
+
return this.queryset.meta;
|
|
19
|
+
}
|
|
20
|
+
get loading() {
|
|
21
|
+
return this.queryset.loading;
|
|
22
|
+
}
|
|
23
|
+
get full() {
|
|
24
|
+
return this.queryset.full;
|
|
25
|
+
}
|
|
26
|
+
start(params) {
|
|
27
|
+
let filter$;
|
|
28
|
+
if (params.filter && !params.filter.subscribe) {
|
|
29
|
+
filter$ = of(params.filter);
|
|
30
|
+
}
|
|
31
|
+
else if (params.filter && params.filter.subscribe) {
|
|
32
|
+
filter$ = params.filter;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
filter$ = of({});
|
|
36
|
+
}
|
|
37
|
+
combineLatest([
|
|
38
|
+
this.reload,
|
|
39
|
+
this.filters.output,
|
|
40
|
+
filter$,
|
|
41
|
+
this.paginator.output,
|
|
42
|
+
this.sorter.output,
|
|
43
|
+
this.fields.output,
|
|
44
|
+
])
|
|
45
|
+
.pipe(takeUntil(this.unsubscribe), debounceTime(200), switchMap(([reload, filter, manualFilter, paginator, sorter, fields]) => {
|
|
46
|
+
this.queryset
|
|
47
|
+
.filter(filter)
|
|
48
|
+
.filter(manualFilter || {}, true)
|
|
49
|
+
.paginateBy(paginator.page_size)
|
|
50
|
+
.setPage(paginator.page)
|
|
51
|
+
.sort(...sorter)
|
|
52
|
+
.setFields(fields);
|
|
53
|
+
return this.queryset.get(true);
|
|
54
|
+
}))
|
|
55
|
+
.subscribe({
|
|
56
|
+
next: (results) => { },
|
|
57
|
+
error: (error) => {
|
|
58
|
+
console.error('Error while getting model list results : ', error);
|
|
59
|
+
},
|
|
60
|
+
complete: () => {
|
|
61
|
+
console.log('modellist:completed', this.name);
|
|
62
|
+
this.started = false;
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
this.reload.next();
|
|
66
|
+
this.started = true;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
export class ModelListService {
|
|
70
|
+
constructor() {
|
|
71
|
+
this._instances = {};
|
|
72
|
+
}
|
|
73
|
+
get(name, collection, defaults) {
|
|
74
|
+
let ml;
|
|
75
|
+
if (!name || !this._instances[name] || !defaults.keep) {
|
|
76
|
+
ml = new ModelList(name);
|
|
77
|
+
ml.queryset = collection.queryset();
|
|
78
|
+
ml.fields = new ModelListFields(collection, defaults.fields);
|
|
79
|
+
ml.sorter = new ModelListSorter(defaults.sorter || []);
|
|
80
|
+
ml.paginator = new ModelListPaginator(defaults.paginator);
|
|
81
|
+
ml.filters = new ModelListFilters(defaults.filters);
|
|
82
|
+
if (defaults.keep) {
|
|
83
|
+
this._instances[name] = ml;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
ml = this._instances[name];
|
|
88
|
+
}
|
|
89
|
+
if (!ml.started) {
|
|
90
|
+
if (defaults.reload) {
|
|
91
|
+
ml.reload = defaults.reload;
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
ml.reload = new Subject();
|
|
95
|
+
}
|
|
96
|
+
if (defaults.unsubscribe) {
|
|
97
|
+
ml.unsubscribe = defaults.unsubscribe;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
ml.unsubscribe = new Subject();
|
|
101
|
+
}
|
|
102
|
+
ml.start(defaults);
|
|
103
|
+
}
|
|
104
|
+
return ml;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
ModelListService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ModelListService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
108
|
+
ModelListService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ModelListService, providedIn: 'root' });
|
|
109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ModelListService, decorators: [{
|
|
110
|
+
type: Injectable,
|
|
111
|
+
args: [{
|
|
112
|
+
providedIn: 'root',
|
|
113
|
+
}]
|
|
114
|
+
}], ctorParameters: function () { return []; } });
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL21vZGVsbGlzdC9tb2RlbC1saXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsYUFBYSxFQUNiLFlBQVksRUFFWixFQUFFLEVBQ0YsT0FBTyxFQUNQLFNBQVMsR0FDVixNQUFNLE1BQU0sQ0FBQztBQVFkLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDakYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOztBQXdEM0UsTUFBTSxPQUFPLFNBQVM7SUFXcEIsWUFBWSxJQUFZO1FBRmpCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFHckIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUM1QixDQUFDO0lBRU0sS0FBSyxDQUFDLE1B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Q0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUM7WUFDdkQsRUFBRSxDQUFDLFNBQVMsR0FBRyxJQUFJLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMxRCxFQUFFLENBQUMsT0FBTyxHQUFHLElBQUksZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3BELElBQUksUUFBUSxDQUFDLElBQUksRUFBRTtnQkFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDNUI7U0FDRjthQUFNO1lBQ0wsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDNUI7UUFDRCxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRTtZQUNmLElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRTtnQkFDbkIsRUFBRSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO2FBQzdCO2lCQUFNO2dCQUNMLEVBQUUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQzthQUNqQztZQUNELElBQUksUUFBUSxDQUFDLFdBQVcsRUFBRTtnQkFDeEIsRUFBRSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNMLEVBQUUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQzthQUN0QztZQUNELEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDcEI7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7OzZHQXZDVSxnQkFBZ0I7aUhBQWhCLGdCQUFnQixjQUZmLE1BQU07MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGNvbWJpbmVMYXRlc3QsXG4gIGRlYm91bmNlVGltZSxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIFN1YmplY3QsXG4gIHRha2VVbnRpbCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYXRhTW9kZWwgfSBmcm9tICcuLi9kYXRhL2RhdGEtbW9kZWwnO1xuaW1wb3J0IHtcbiAgSVF1ZXJ5TWV0YSxcbiAgSVF1ZXJ5TWV0YU5hdlBhcmFtcyxcbiAgSVF1ZXJ5TmF2LFxuICBRdWVyeXNldCxcbn0gZnJvbSAnLi4vZGF0YS9kYXRhLXF1ZXJ5JztcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1vZGVsTGlzdEZpZWxkcyB9IGZyb20gJy4vbW9kZWwtbGlzdC1maWVsZHMvbW9kZWwtbGlzdC1maWVsZHMnO1xuaW1wb3J0IHsgTW9kZWxMaXN0UGFnaW5hdG9yIH0gZnJvbSAnLi9tb2RlbC1saXN0LXBhZ2luYXRvci9tb2RlbC1saXN0LXBhZ2luYXRvcic7XG5pbXBvcnQgeyBNb2RlbExpc3RTb3J0ZXIgfSBmcm9tICcuL21vZGVsLWxpc3Qtc29ydGVyL21vZGVsLWxpc3Qtc29ydGVyJztcbmltcG9ydCB7IE1vZGVsTGlzdEZpbHRlcnMgfSBmcm9tICcuL21vZGVsLWxpc3QtZmlsdGVycy9tb2RlbC1saXN0LWZpbHRlcnMnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJy4uL2RhdGEvZGF0YS1jb2xsZWN0aW9uJztcbmltcG9ydCB7IE1vZGVsTGlzdEZpbHRlciB9IGZyb20gJy4vbW9kZWwtbGlzdC1maWx0ZXJzL21vZGVsLWxpc3QtZmlsdGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21GaWVsZCB7XG4gIG5hbWU6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJEZWZhdWx0cyB7XG4gIFtpbmRleDogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgdHlwZSBTb3J0ZXJEZWZhdWx0cyA9IHN0cmluZ1tdO1xuXG4vKipcbiAqIEZpZWxkcyBwYXJhbWV0ZXJzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpZWxkc1BhcmFtcyB7XG4gIC8qKiBBbGxvd2VkIGZpZWxkcywgYWxsIG1vZGVsIGZpZWxkcyBhcmUgYWxsb3dlZCBpZiBlbXB0eSAqL1xuICBhbGxvd2VkPzogc3RyaW5nW107XG4gIC8qKiBEZWZhdWx0IGVuYWJsZWQgZmllbGRzICovXG4gIGRlZmF1bHRzPzogc3RyaW5nW107XG4gIC8qKiBFeGNsdWRlZCBmaWVsZHMgKi9cbiAgZXhjbHVkZWQ/OiBzdHJpbmdbXTtcbiAgLyoqIEN1c3RvbSBmaWVsZHMgKi9cbiAgY3VzdG9tPzogQ3VzdG9tRmllbGRbXTtcbn1cblxuLyoqXG4gKiBGaWx0ZXJzIHBhcmFtZXRlcnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyc1BhcmFtcyB7XG4gIC8qKiBBbGxvd2VkIGZpbHRlciBuYW1lcyAqL1xuICBhbGxvd2VkPzogc3RyaW5nW107XG4gIC8qKiBEZWZhdWx0IGFjdGl2ZSBmaWx0ZXIgbmFtZXMgKi9cbiAgZGVmYXVsdHM/OiBzdHJpbmdbXTtcbiAgLyoqIEV4Y2x1ZGVkIGZpbHRlciBuYW1lcyAqL1xuICBleGNsdWRlZD86IHN0cmluZ1tdO1xuICAvKiogRmlsdGVycyBkZWZpbml0aW9ucyAqL1xuICBmaWx0ZXJzPzogTW9kZWxMaXN0RmlsdGVyW107XG59XG5cbmV4cG9ydCB0eXBlIFBhZ2luYXRpb25QYXJhbXMgPSBJUXVlcnlNZXRhTmF2UGFyYW1zO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1vZGVsTGlzdFBhcmFtcyB7XG4gIGZpZWxkcz86IEZpZWxkc1BhcmFtcztcbiAgZmlsdGVycz86IEZpbHRlcnNQYXJhbXM7XG4gIGZpbHRlcj86IEZpbHRlckRlZmF1bHRzIHwgT2JzZXJ2YWJsZTxGaWx0ZXJEZWZhdWx0cz47XG4gIHNvcnRlcj86IFNvcnRlckRlZmF1bHRzO1xuICBwYWdpbmF0b3I/OiBJUXVlcnlOYXY7XG4gIGtlZXA/OiBib29sZWFuO1xuICByZWxvYWQ/OiBTdWJqZWN0PHZvaWQ+O1xuICB1bnN1YnNjcmliZT86IFN1YmplY3Q8dm9pZD47XG59XG5cbmV4cG9ydCBjbGFzcyBNb2RlbExpc3Q8VCBleHRlbmRzIERhdGFNb2RlbD4ge1xuICBwdWJsaWMgbmFtZSE6IHN0cmluZztcbiAgcHVibGljIGZpbHRlcnMhOiBNb2RlbExpc3RGaWx0ZXJzO1xuICBwdWJsaWMgc29ydGVyITogTW9kZWxMaXN0U29ydGVyO1xuICBwdWJsaWMgcGFnaW5hdG9yITogTW9kZWxMaXN0UGFnaW5hdG9yO1xuICBwdWJsaWMgcXVlcnlzZXQhOiBRdWVyeXNldDxUPjtcbiAgcHVibGljIGZpZWxkcyE6IE1vZGVsTGlzdEZpZWxkczxUPjtcbiAgcHVibGljIHJlbG9hZCE6IFN1YmplY3Q8dm9pZD47XG4gIHB1YmxpYyB1bnN1YnNjcmliZSE6IFN1YmplY3Q8dm9pZD47XG4gIHB1YmxpYyBzdGFydGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVzdWx0cygpOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgIHJldHVybiB0aGlzLnF1ZXJ5c2V0LnJlc3VsdHM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1ldGEoKTogT2JzZXJ2YWJsZTxJUXVlcnlNZXRhPiB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlzZXQubWV0YTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbG9hZGluZygpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeXNldC5sb2FkaW5nO1xuICB9XG5cbiAgcHVibGljIGdldCBmdWxsKCk6IE9ic2VydmFibGU8W1RbXSwgYm9vbGVhbiwgSVF1ZXJ5TWV0YV0+IHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeXNldC5mdWxsO1xuICB9XG5cbiAgcHVibGljIHN0YXJ0KHBhcmFtczogTW9kZWxMaXN0UGFyYW1zKSB7XG4gICAgbGV0IGZpbHRlciQ6IE9ic2VydmFibGU8RmlsdGVyRGVmYXVsdHM+O1xuICAgIGlmIChwYXJhbXMuZmlsdGVyICYmICFwYXJhbXMuZmlsdGVyLnN1YnNjcmliZSkge1xuICAgICAgZmlsdGVyJCA9IG9mKHBhcmFtcy5maWx0ZXIgYXMgRmlsdGVyRGVmYXVsdHMpO1xuICAgIH0gZWxzZSBpZiAocGFyYW1zLmZpbHRlciAmJiBwYXJhbXMuZmlsdGVyLnN1YnNjcmliZSkge1xuICAgICAgZmlsdGVyJCA9IHBhcmFtcy5maWx0ZXIgYXMgT2JzZXJ2YWJsZTxGaWx0ZXJEZWZhdWx0cz47XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpbHRlciQgPSBvZih7fSk7XG4gICAgfVxuICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5yZWxvYWQsXG4gICAgICB0aGlzLmZpbHRlcnMub3V0cHV0LFxuICAgICAgZmlsdGVyJCxcbiAgICAgIHRoaXMucGFnaW5hdG9yLm91dHB1dCxcbiAgICAgIHRoaXMuc29ydGVyLm91dHB1dCxcbiAgICAgIHRoaXMuZmllbGRzLm91dHB1dCxcbiAgICBdKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlKSxcbiAgICAgICAgZGVib3VuY2VUaW1lKDIwMCksXG4gICAgICAgIHN3aXRjaE1hcChcbiAgICAgICAgICAoW3JlbG9hZCwgZmlsdGVyLCBtYW51YWxGaWx0ZXIsIHBhZ2luYXRvciwgc29ydGVyLCBmaWVsZHNdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5c2V0XG4gICAgICAgICAgICAgIC5maWx0ZXIoZmlsdGVyKVxuICAgICAgICAgICAgICAuZmlsdGVyKG1hbnVhbEZpbHRlciB8fCB7fSwgdHJ1ZSlcbiAgICAgICAgICAgICAgLnBhZ2luYXRlQnkocGFnaW5hdG9yLnBhZ2Vfc2l6ZSlcbiAgICAgICAgICAgICAgLnNldFBhZ2UocGFnaW5hdG9yLnBhZ2UpXG4gICAgICAgICAgICAgIC5zb3J0KC4uLnNvcnRlcilcbiAgICAgICAgICAgICAgLnNldEZpZWxkcyhmaWVsZHMpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucXVlcnlzZXQuZ2V0KHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXN1bHRzOiBhbnkpOiB2b2lkID0+IHt9LFxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igd2hpbGUgZ2V0dGluZyBtb2RlbCBsaXN0IHJlc3VsdHMgOiAnLCBlcnJvcik7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ21vZGVsbGlzdDpjb21wbGV0ZWQnLCB0aGlzLm5hbWUpO1xuICAgICAgICAgIHRoaXMuc3RhcnRlZCA9IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgdGhpcy5yZWxvYWQubmV4dCgpO1xuICAgIHRoaXMuc3RhcnRlZCA9IHRydWU7XG4gIH1cbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE1vZGVsTGlzdFNlcnZpY2Uge1xuICBwcml2YXRlIF9pbnN0YW5jZXM6IHsgW2luZGV4OiBzdHJpbmddOiBNb2RlbExpc3Q8YW55PiB9ID0ge307XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIHB1YmxpYyBnZXQ8VCBleHRlbmRzIERhdGFNb2RlbD4oXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIGNvbGxlY3Rpb246IENvbGxlY3Rpb248VD4sXG4gICAgZGVmYXVsdHM6IE1vZGVsTGlzdFBhcmFtc1xuICApIHtcbiAgICBsZXQgbWw6IE1vZGVsTGlzdDxUPjtcblxuICAgIGlmICghbmFtZSB8fCAhdGhpcy5faW5zdGFuY2VzW25hbWVdIHx8ICFkZWZhdWx0cy5rZWVwKSB7XG4gICAgICBtbCA9IG5ldyBNb2RlbExpc3Q8VD4obmFtZSk7XG4gICAgICBtbC5xdWVyeXNldCA9IGNvbGxlY3Rpb24ucXVlcnlzZXQoKTtcbiAgICAgIG1sLmZpZWxkcyA9IG5ldyBNb2RlbExpc3RGaWVsZHMoY29sbGVjdGlvbiwgZGVmYXVsdHMuZmllbGRzKTtcbiAgICAgIG1sLnNvcnRlciA9IG5ldyBNb2RlbExpc3RTb3J0ZXIoZGVmYXVsdHMuc29ydGVyIHx8IFtdKTtcbiAgICAgIG1sLnBhZ2luYXRvciA9IG5ldyBNb2RlbExpc3RQYWdpbmF0b3IoZGVmYXVsdHMucGFnaW5hdG9yKTtcbiAgICAgIG1sLmZpbHRlcnMgPSBuZXcgTW9kZWxMaXN0RmlsdGVycyhkZWZhdWx0cy5maWx0ZXJzKTtcbiAgICAgIGlmIChkZWZhdWx0cy5rZWVwKSB7XG4gICAgICAgIHRoaXMuX2luc3RhbmNlc1tuYW1lXSA9IG1sO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBtbCA9IHRoaXMuX2luc3RhbmNlc1tuYW1lXTtcbiAgICB9XG4gICAgaWYgKCFtbC5zdGFydGVkKSB7XG4gICAgICBpZiAoZGVmYXVsdHMucmVsb2FkKSB7XG4gICAgICAgIG1sLnJlbG9hZCA9IGRlZmF1bHRzLnJlbG9hZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1sLnJlbG9hZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgICB9XG4gICAgICBpZiAoZGVmYXVsdHMudW5zdWJzY3JpYmUpIHtcbiAgICAgICAgbWwudW5zdWJzY3JpYmUgPSBkZWZhdWx0cy51bnN1YnNjcmliZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1sLnVuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAgIH1cbiAgICAgIG1sLnN0YXJ0KGRlZmF1bHRzKTtcbiAgICB9XG4gICAgcmV0dXJuIG1sO1xuICB9XG59XG4iXX0=
|