@solidev/data 0.4.8 → 0.5.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/fesm2022/solidev-data.mjs +158 -157
- package/fesm2022/solidev-data.mjs.map +1 -1
- package/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.d.ts +2 -2
- package/package.json +5 -7
- package/esm2022/lib/auth/auth-interceptor.service.mjs +0 -113
- package/esm2022/lib/auth/auth.service.mjs +0 -216
- package/esm2022/lib/auth/jwt.mjs +0 -21
- package/esm2022/lib/data/data-backend.mjs +0 -162
- package/esm2022/lib/data/data-collection.mjs +0 -125
- package/esm2022/lib/data/data-collection.mock.mjs +0 -39
- package/esm2022/lib/data/data-model.mjs +0 -291
- package/esm2022/lib/data/data-parameters.mjs +0 -34
- package/esm2022/lib/data/data-query.mjs +0 -154
- package/esm2022/lib/data/data-query.mock.mjs +0 -46
- package/esm2022/lib/data/fields/base.mjs +0 -144
- package/esm2022/lib/data/fields/boolean.mjs +0 -38
- package/esm2022/lib/data/fields/computed.mjs +0 -10
- package/esm2022/lib/data/fields/datetime.mjs +0 -167
- package/esm2022/lib/data/fields/index.mjs +0 -8
- package/esm2022/lib/data/fields/numbers.mjs +0 -38
- package/esm2022/lib/data/fields/primaryfield.mjs +0 -9
- package/esm2022/lib/data/fields/relations.mjs +0 -53
- package/esm2022/lib/data/fields/stringfields.mjs +0 -71
- package/esm2022/lib/dispedit/choice.pipe.mjs +0 -79
- package/esm2022/lib/dispedit/dispedit/dispedit.component.mjs +0 -480
- package/esm2022/lib/dispedit/dispedit/dispedit.constants.mjs +0 -2
- package/esm2022/lib/dispedit/factor.pipe.mjs +0 -81
- package/esm2022/lib/dispedit/factorc.pipe.mjs +0 -99
- package/esm2022/lib/dispedit/fkselect/fkselect.component.mjs +0 -139
- package/esm2022/lib/dispedit/flags/flags.component.mjs +0 -137
- package/esm2022/lib/dispedit/m2mselect/m2mselect.component.mjs +0 -312
- package/esm2022/lib/dispedit/richedit/richedit.component.mjs +0 -126
- package/esm2022/lib/dispedit/sdelete/sdelete.component.mjs +0 -103
- package/esm2022/lib/messages/message-zone/message-zone.component.mjs +0 -53
- package/esm2022/lib/messages/message.service.mjs +0 -151
- package/esm2022/lib/modellist/model-list-fields/model-list-field-header/messages.mjs +0 -2
- package/esm2022/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.mjs +0 -61
- package/esm2022/lib/modellist/model-list-fields/model-list-fields-selector/model-list-fields-selector.component.mjs +0 -64
- package/esm2022/lib/modellist/model-list-fields/model-list-fields.mjs +0 -273
- package/esm2022/lib/modellist/model-list-filters/filters/filtertypes.mjs +0 -3
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component.mjs +0 -109
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.mjs +0 -28
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.mjs +0 -29
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.mjs +0 -9
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.component.mjs +0 -40
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.mjs +0 -14
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.component.mjs +0 -40
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.mjs +0 -14
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.mjs +0 -21
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetimerange-filter.mjs +0 -14
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.component.mjs +0 -49
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.mjs +0 -23
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/adapters/ban.mjs +0 -24
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.mjs +0 -63
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.mjs +0 -16
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.component.mjs +0 -46
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.mjs +0 -49
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.mjs +0 -56
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.mjs +0 -40
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.mjs +0 -51
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.mjs +0 -21
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.component.mjs +0 -40
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.mjs +0 -17
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.mjs +0 -174
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.mjs +0 -18
- package/esm2022/lib/modellist/model-list-filters/model-list-filter-group.mjs +0 -19
- package/esm2022/lib/modellist/model-list-filters/model-list-filter.mjs +0 -157
- package/esm2022/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.mjs +0 -50
- package/esm2022/lib/modellist/model-list-filters/model-list-filters-select/model-list-filters-select.component.mjs +0 -51
- package/esm2022/lib/modellist/model-list-filters/model-list-filters.mjs +0 -134
- package/esm2022/lib/modellist/model-list-paginator/model-list-paginator/model-list-paginator.component.mjs +0 -69
- package/esm2022/lib/modellist/model-list-paginator/model-list-paginator.mjs +0 -47
- package/esm2022/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.mjs +0 -49
- package/esm2022/lib/modellist/model-list-sorter/model-list-sorter.mjs +0 -116
- package/esm2022/lib/modellist/model-list.service.mjs +0 -168
- package/esm2022/lib/routing/breadcrumb/breadcrumb.component.mjs +0 -138
- package/esm2022/lib/routing/routing.mjs +0 -57
- package/esm2022/lib/updates/update/update.component.mjs +0 -17
- package/esm2022/lib/updates/update.service.mjs +0 -58
- package/esm2022/lib/uploader/index.mjs +0 -6
- package/esm2022/lib/uploader/interfaces.mjs +0 -8
- package/esm2022/lib/uploader/ng-file-drop.directive.mjs +0 -81
- package/esm2022/lib/uploader/ng-file-select.directive.mjs +0 -51
- package/esm2022/lib/uploader/ngx-uploader.class.mjs +0 -308
- package/esm2022/lib/uploader/ngx-uploader.module.mjs +0 -17
- package/esm2022/lib/utils/slugify.mjs +0 -16
- package/esm2022/lib/utils/tab-memory.service.mjs +0 -80
- package/esm2022/lib/utils/template.mjs +0 -72
- package/esm2022/public-api.mjs +0 -56
- package/esm2022/solidev-data.mjs +0 -5
- package/solidev-data-0.4.8.tgz +0 -0
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
4
|
-
import { combineLatest, debounceTime } from 'rxjs';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/common";
|
|
7
|
-
import * as i2 from "@angular/forms";
|
|
8
|
-
export class ModelListSelectMultiFilterComponent {
|
|
9
|
-
constructor() {
|
|
10
|
-
this.classes = '';
|
|
11
|
-
this.fc = new FormControl(null);
|
|
12
|
-
}
|
|
13
|
-
ngOnInit() {
|
|
14
|
-
combineLatest([
|
|
15
|
-
this.filter.choices,
|
|
16
|
-
this.fc.valueChanges.pipe(debounceTime(250)),
|
|
17
|
-
]).subscribe(([choices, val]) => {
|
|
18
|
-
for (const ch of choices) {
|
|
19
|
-
if (ch.value === val) {
|
|
20
|
-
if (this.filter.set(ch.value, ch.desc)) {
|
|
21
|
-
this.list.filters.update();
|
|
22
|
-
break;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
this.fc.setValue(null, { emitEvent: false });
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
unset(value, desc) {
|
|
30
|
-
this.fc.setValue(null);
|
|
31
|
-
this.filter.unset(value, desc);
|
|
32
|
-
this.list.filters.update();
|
|
33
|
-
}
|
|
34
|
-
disable() {
|
|
35
|
-
this.filter.enabled = false;
|
|
36
|
-
this.list.filters.update();
|
|
37
|
-
}
|
|
38
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ModelListSelectMultiFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: ModelListSelectMultiFilterComponent, isStandalone: true, selector: "data-model-list-select-multi-filter", inputs: { list: "list", filter: "filter", classes: "classes" }, ngImport: i0, template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <select class=\"form-select\" [formControl]=\"fc\">\n <option [ngValue]=\"null\">-- {{filter.help}} --</option>\n <option *ngFor=\"let c of filter.choices|async\" [ngValue]=\"c.value\">{{c.desc}}</option>\n </select>\n <div class=\"enabled mt-1\">\n <div *ngFor=\"let e of filter.mcurrent$|async\"><i class=\"bi bi-trash me-2\" (click)=\"unset(e.value, e.desc)\" role=\"button\"></i>{{e.desc}}</div>\n </div>\n</div>", 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: "pipe", type: i1.AsyncPipe, name: "async" }, { 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.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"] }] }); }
|
|
40
|
-
}
|
|
41
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ModelListSelectMultiFilterComponent, decorators: [{
|
|
42
|
-
type: Component,
|
|
43
|
-
args: [{ selector: 'data-model-list-select-multi-filter', standalone: true, imports: [CommonModule, ReactiveFormsModule], template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <select class=\"form-select\" [formControl]=\"fc\">\n <option [ngValue]=\"null\">-- {{filter.help}} --</option>\n <option *ngFor=\"let c of filter.choices|async\" [ngValue]=\"c.value\">{{c.desc}}</option>\n </select>\n <div class=\"enabled mt-1\">\n <div *ngFor=\"let e of filter.mcurrent$|async\"><i class=\"bi bi-trash me-2\" (click)=\"unset(e.value, e.desc)\" role=\"button\"></i>{{e.desc}}</div>\n </div>\n</div>" }]
|
|
44
|
-
}], ctorParameters: () => [], propDecorators: { list: [{
|
|
45
|
-
type: Input
|
|
46
|
-
}], filter: [{
|
|
47
|
-
type: Input
|
|
48
|
-
}], classes: [{
|
|
49
|
-
type: Input
|
|
50
|
-
}] } });
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC1zZWxlY3QtbXVsdGktZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9tb2RlbGxpc3QvbW9kZWwtbGlzdC1maWx0ZXJzL2ZpbHRlcnMvbW9kZWwtbGlzdC1zZWxlY3QtbXVsdGktZmlsdGVyL21vZGVsLWxpc3Qtc2VsZWN0LW11bHRpLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtZmlsdGVycy9maWx0ZXJzL21vZGVsLWxpc3Qtc2VsZWN0LW11bHRpLWZpbHRlci9tb2RlbC1saXN0LXNlbGVjdC1tdWx0aS1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFHekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQVNuRCxNQUFNLE9BQU8sbUNBQW1DO0lBUTlDO1FBSGdCLFlBQU8sR0FBc0IsRUFBRSxDQUFDO1FBQ3pDLE9BQUUsR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVuQixDQUFDO0lBRVQsUUFBUTtRQUNiLGFBQWEsQ0FBQztZQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTztZQUNuQixJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzdDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFO1lBQzlCLEtBQUssTUFBTSxFQUFFLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksRUFBRSxDQUFDLEtBQUssS0FBSyxHQUFHLEVBQUUsQ0FBQztvQkFDckIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO3dCQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDM0IsTUFBTTtvQkFDUixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1lBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQVUsRUFBRSxJQUFZO1FBQ25DLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUM3QixDQUFDOzhHQXBDVSxtQ0FBbUM7a0dBQW5DLG1DQUFtQywrSkNmaEQsNG5CQVdNLHlEREVNLFlBQVksOFNBQUUsbUJBQW1COzsyRkFFaEMsbUNBQW1DO2tCQVAvQyxTQUFTOytCQUNFLHFDQUFxQyxjQUduQyxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsbUJBQW1CLENBQUM7d0RBSzVCLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RlbExpc3QgfSBmcm9tICcuLi8uLi8uLi9tb2RlbC1saXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgTW9kZWxMaXN0U2VsZWN0TXVsdGlGaWx0ZXIgfSBmcm9tICcuL21vZGVsLWxpc3Qtc2VsZWN0LW11bHRpLWZpbHRlcic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEYXRhTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9kYXRhL2RhdGEtbW9kZWwnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdGEtbW9kZWwtbGlzdC1zZWxlY3QtbXVsdGktZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGVsLWxpc3Qtc2VsZWN0LW11bHRpLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vZGVsLWxpc3Qtc2VsZWN0LW11bHRpLWZpbHRlci5jb21wb25lbnQuc2FzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgTW9kZWxMaXN0U2VsZWN0TXVsdGlGaWx0ZXJDb21wb25lbnQ8VCBleHRlbmRzIERhdGFNb2RlbD5cbiAgaW1wbGVtZW50cyBPbkluaXRcbntcbiAgQElucHV0KCkgcHVibGljIGxpc3QhOiBNb2RlbExpc3Q8VD47XG4gIEBJbnB1dCgpIHB1YmxpYyBmaWx0ZXIhOiBNb2RlbExpc3RTZWxlY3RNdWx0aUZpbHRlcjxUPjtcbiAgQElucHV0KCkgcHVibGljIGNsYXNzZXM6IHN0cmluZ1tdIHwgc3RyaW5nID0gJyc7XG4gIHB1YmxpYyBmYyA9IG5ldyBGb3JtQ29udHJvbChudWxsKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5maWx0ZXIuY2hvaWNlcyxcbiAgICAgIHRoaXMuZmMudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDI1MCkpLFxuICAgIF0pLnN1YnNjcmliZSgoW2Nob2ljZXMsIHZhbF0pID0+IHtcbiAgICAgIGZvciAoY29uc3QgY2ggb2YgY2hvaWNlcykge1xuICAgICAgICBpZiAoY2gudmFsdWUgPT09IHZhbCkge1xuICAgICAgICAgIGlmICh0aGlzLmZpbHRlci5zZXQoY2gudmFsdWUsIGNoLmRlc2MpKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3QuZmlsdGVycy51cGRhdGUoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5mYy5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgdW5zZXQodmFsdWU6IGFueSwgZGVzYzogc3RyaW5nKSB7XG4gICAgdGhpcy5mYy5zZXRWYWx1ZShudWxsKTtcbiAgICB0aGlzLmZpbHRlci51bnNldCh2YWx1ZSwgZGVzYyk7XG4gICAgdGhpcy5saXN0LmZpbHRlcnMudXBkYXRlKCk7XG4gIH1cblxuICBwdWJsaWMgZGlzYWJsZSgpIHtcbiAgICB0aGlzLmZpbHRlci5lbmFibGVkID0gZmFsc2U7XG4gICAgdGhpcy5saXN0LmZpbHRlcnMudXBkYXRlKCk7XG4gIH1cbn1cbiIsIlxuPGRpdiBjbGFzcz1cImZpbHRlcml0ZW1cIiBbbmdDbGFzc109XCJmaWx0ZXIuZGlzcGxheUNsYXNzZXMgfHwgY2xhc3Nlc1wiPlxuICA8ZGl2IGNsYXNzPVwidHJhc2ggZmxvYXQtZW5kXCIgKGNsaWNrKT1cImRpc2FibGUoKVwiPjxpIGNsYXNzPVwiYmkgYmktdHJhc2hcIj48L2k+PC9kaXY+XG4gIDxsYWJlbD57e2ZpbHRlci5sYWJlbH19PC9sYWJlbD5cbiAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgW2Zvcm1Db250cm9sXT1cImZjXCI+XG4gICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJudWxsXCI+LS0ge3tmaWx0ZXIuaGVscH19IC0tPC9vcHRpb24+XG4gICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgYyBvZiBmaWx0ZXIuY2hvaWNlc3xhc3luY1wiIFtuZ1ZhbHVlXT1cImMudmFsdWVcIj57e2MuZGVzY319PC9vcHRpb24+XG4gIDwvc2VsZWN0PlxuICA8ZGl2IGNsYXNzPVwiZW5hYmxlZCBtdC0xXCI+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgZSBvZiBmaWx0ZXIubWN1cnJlbnQkfGFzeW5jXCI+PGkgY2xhc3M9XCJiaSBiaS10cmFzaCBtZS0yXCIgKGNsaWNrKT1cInVuc2V0KGUudmFsdWUsIGUuZGVzYylcIiByb2xlPVwiYnV0dG9uXCI+PC9pPnt7ZS5kZXNjfX08L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { ModelListSelectFilter, } from '../model-list-select-filter/model-list-select-filter';
|
|
2
|
-
export class ModelListSelectMultiFilter extends ModelListSelectFilter {
|
|
3
|
-
constructor(params) {
|
|
4
|
-
super(params);
|
|
5
|
-
this.multi = true;
|
|
6
|
-
this.type = 'selectmulti';
|
|
7
|
-
if (this.label == '') {
|
|
8
|
-
this.label = 'Sélectionnez un élément';
|
|
9
|
-
}
|
|
10
|
-
if (this.help == '') {
|
|
11
|
-
this.help = 'Choix par liste déroulante (multiple)';
|
|
12
|
-
}
|
|
13
|
-
// Set default only for cur type
|
|
14
|
-
if (this.default && this.type == 'selectmulti') {
|
|
15
|
-
for (const f of this.default) {
|
|
16
|
-
this.set(f.value, f.desc, true);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC1zZWxlY3QtbXVsdGktZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL21vZGVsbGlzdC9tb2RlbC1saXN0LWZpbHRlcnMvZmlsdGVycy9tb2RlbC1saXN0LXNlbGVjdC1tdWx0aS1maWx0ZXIvbW9kZWwtbGlzdC1zZWxlY3QtbXVsdGktZmlsdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxxQkFBcUIsR0FFdEIsTUFBTSxzREFBc0QsQ0FBQztBQVM5RCxNQUFNLE9BQU8sMEJBRVgsU0FBUSxxQkFBd0I7SUFJaEMsWUFBWSxNQUEyQztRQUNyRCxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFKQSxVQUFLLEdBQUcsSUFBSSxDQUFDO1FBTTNCLElBQUksQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDO1FBQzFCLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLHlCQUF5QixDQUFDO1FBQ3pDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyx1Q0FBdUMsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsZ0NBQWdDO1FBQ2hDLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQy9DLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNsQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIE1vZGVsTGlzdFNlbGVjdEZpbHRlcixcbiAgTW9kZWxMaXN0U2VsZWN0RmlsdGVyUGFyYW1zLFxufSBmcm9tICcuLi9tb2RlbC1saXN0LXNlbGVjdC1maWx0ZXIvbW9kZWwtbGlzdC1zZWxlY3QtZmlsdGVyJztcbmltcG9ydCB7IERhdGFNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL2RhdGEvZGF0YS1tb2RlbCc7XG5pbXBvcnQgeyBJRGlzcEVkaXRDaG9pY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9kaXNwZWRpdC9kaXNwZWRpdC9kaXNwZWRpdC5jb25zdGFudHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1vZGVsTGlzdE11bHRpU2VsZWN0RmlsdGVyUGFyYW1zPFQgZXh0ZW5kcyBEYXRhTW9kZWw+XG4gIGV4dGVuZHMgTW9kZWxMaXN0U2VsZWN0RmlsdGVyUGFyYW1zPFQ+IHtcbiAgZGVmYXVsdD86IElEaXNwRWRpdENob2ljZVtdO1xufVxuXG5leHBvcnQgY2xhc3MgTW9kZWxMaXN0U2VsZWN0TXVsdGlGaWx0ZXI8XG4gIFQgZXh0ZW5kcyBEYXRhTW9kZWxcbj4gZXh0ZW5kcyBNb2RlbExpc3RTZWxlY3RGaWx0ZXI8VD4ge1xuICBwdWJsaWMgb3ZlcnJpZGUgbXVsdGkgPSB0cnVlO1xuICBwdWJsaWMgb3ZlcnJpZGUgZGVmYXVsdD86IElEaXNwRWRpdENob2ljZVtdO1xuXG4gIGNvbnN0cnVjdG9yKHBhcmFtczogTW9kZWxMaXN0TXVsdGlTZWxlY3RGaWx0ZXJQYXJhbXM8VD4pIHtcbiAgICBzdXBlcihwYXJhbXMpO1xuXG4gICAgdGhpcy50eXBlID0gJ3NlbGVjdG11bHRpJztcbiAgICBpZiAodGhpcy5sYWJlbCA9PSAnJykge1xuICAgICAgdGhpcy5sYWJlbCA9ICdTw6lsZWN0aW9ubmV6IHVuIMOpbMOpbWVudCc7XG4gICAgfVxuICAgIGlmICh0aGlzLmhlbHAgPT0gJycpIHtcbiAgICAgIHRoaXMuaGVscCA9ICdDaG9peCBwYXIgbGlzdGUgZMOpcm91bGFudGUgKG11bHRpcGxlKSc7XG4gICAgfVxuICAgIC8vIFNldCBkZWZhdWx0IG9ubHkgZm9yIGN1ciB0eXBlXG4gICAgaWYgKHRoaXMuZGVmYXVsdCAmJiB0aGlzLnR5cGUgPT0gJ3NlbGVjdG11bHRpJykge1xuICAgICAgZm9yIChjb25zdCBmIG9mIHRoaXMuZGVmYXVsdCkge1xuICAgICAgICB0aGlzLnNldChmLnZhbHVlLCBmLmRlc2MsIHRydWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
3
|
-
import { debounceTime } from 'rxjs';
|
|
4
|
-
import { CommonModule } from '@angular/common';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/common";
|
|
7
|
-
import * as i2 from "@angular/forms";
|
|
8
|
-
export class ModelListTextFilterComponent {
|
|
9
|
-
constructor() {
|
|
10
|
-
this.classes = '';
|
|
11
|
-
this.fc = new FormControl(null);
|
|
12
|
-
}
|
|
13
|
-
ngOnInit() {
|
|
14
|
-
this.filter.valueChanges.subscribe((val) => {
|
|
15
|
-
this.fc.setValue(val.value, { emitEvent: false });
|
|
16
|
-
});
|
|
17
|
-
this.fc.valueChanges.pipe(debounceTime(250)).subscribe((val) => {
|
|
18
|
-
if (this.filter.set(val, val || '')) {
|
|
19
|
-
this.list.filters.update();
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
disable() {
|
|
24
|
-
this.filter.enabled = false;
|
|
25
|
-
this.list.filters.update();
|
|
26
|
-
}
|
|
27
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ModelListTextFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: ModelListTextFilterComponent, isStandalone: true, selector: "data-model-list-text-filter", inputs: { list: "list", filter: "filter", classes: "classes" }, ngImport: i0, template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <input class=\"form-control\" type=\"text\" [formControl]=\"fc\" [placeholder]=\"filter.help\">\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
|
|
29
|
-
}
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ModelListTextFilterComponent, decorators: [{
|
|
31
|
-
type: Component,
|
|
32
|
-
args: [{ selector: 'data-model-list-text-filter', standalone: true, imports: [CommonModule, ReactiveFormsModule], template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <input class=\"form-control\" type=\"text\" [formControl]=\"fc\" [placeholder]=\"filter.help\">\n</div>" }]
|
|
33
|
-
}], ctorParameters: () => [], propDecorators: { list: [{
|
|
34
|
-
type: Input
|
|
35
|
-
}], filter: [{
|
|
36
|
-
type: Input
|
|
37
|
-
}], classes: [{
|
|
38
|
-
type: Input
|
|
39
|
-
}] } });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC10ZXh0LWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtZmlsdGVycy9maWx0ZXJzL21vZGVsLWxpc3QtdGV4dC1maWx0ZXIvbW9kZWwtbGlzdC10ZXh0LWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtZmlsdGVycy9maWx0ZXJzL21vZGVsLWxpc3QtdGV4dC1maWx0ZXIvbW9kZWwtbGlzdC10ZXh0LWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFVL0MsTUFBTSxPQUFPLDRCQUE0QjtJQU12QztRQUhnQixZQUFPLEdBQXNCLEVBQUUsQ0FBQztRQUN6QyxPQUFFLEdBQUcsSUFBSSxXQUFXLENBQWdCLElBQUksQ0FBQyxDQUFDO0lBRWxDLENBQUM7SUFFVCxRQUFRO1FBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDekMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUUsR0FBdUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN6RSxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUM3RCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0IsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLE9BQU87UUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDN0IsQ0FBQzs4R0F0QlUsNEJBQTRCO2tHQUE1Qiw0QkFBNEIsdUpDZnpDLHVUQUtNLHlERFFNLFlBQVksNEhBQUUsbUJBQW1COzsyRkFFaEMsNEJBQTRCO2tCQVB4QyxTQUFTOytCQUNFLDZCQUE2QixjQUczQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsbUJBQW1CLENBQUM7d0RBRzVCLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RlbExpc3QgfSBmcm9tICcuLi8uLi8uLi9tb2RlbC1saXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1vZGVsTGlzdFRleHRGaWx0ZXIgfSBmcm9tICcuL21vZGVsLWxpc3QtdGV4dC1maWx0ZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IElEaXNwRWRpdENob2ljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2Rpc3BlZGl0L2Rpc3BlZGl0L2Rpc3BlZGl0LmNvbnN0YW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdGEtbW9kZWwtbGlzdC10ZXh0LWZpbHRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RlbC1saXN0LXRleHQtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbW9kZWwtbGlzdC10ZXh0LWZpbHRlci5jb21wb25lbnQuc2FzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgTW9kZWxMaXN0VGV4dEZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHB1YmxpYyBsaXN0ITogTW9kZWxMaXN0PGFueT47XG4gIEBJbnB1dCgpIHB1YmxpYyBmaWx0ZXIhOiBNb2RlbExpc3RUZXh0RmlsdGVyO1xuICBASW5wdXQoKSBwdWJsaWMgY2xhc3Nlczogc3RyaW5nW10gfCBzdHJpbmcgPSAnJztcbiAgcHVibGljIGZjID0gbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5maWx0ZXIudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsKSA9PiB7XG4gICAgICB0aGlzLmZjLnNldFZhbHVlKCh2YWwgYXMgSURpc3BFZGl0Q2hvaWNlKS52YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH0pO1xuICAgIHRoaXMuZmMudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDI1MCkpLnN1YnNjcmliZSgodmFsKSA9PiB7XG4gICAgICBpZiAodGhpcy5maWx0ZXIuc2V0KHZhbCwgdmFsIHx8ICcnKSkge1xuICAgICAgICB0aGlzLmxpc3QuZmlsdGVycy51cGRhdGUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNhYmxlKCkge1xuICAgIHRoaXMuZmlsdGVyLmVuYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLmxpc3QuZmlsdGVycy51cGRhdGUoKTtcbiAgfVxufVxuIiwiXG48ZGl2IGNsYXNzPVwiZmlsdGVyaXRlbVwiIFtuZ0NsYXNzXT1cImZpbHRlci5kaXNwbGF5Q2xhc3NlcyB8fCBjbGFzc2VzXCI+XG4gIDxkaXYgY2xhc3M9XCJ0cmFzaCBmbG9hdC1lbmRcIiAoY2xpY2spPVwiZGlzYWJsZSgpXCI+PGkgY2xhc3M9XCJiaSBiaS10cmFzaFwiPjwvaT48L2Rpdj5cbiAgPGxhYmVsPnt7ZmlsdGVyLmxhYmVsfX08L2xhYmVsPlxuICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiB0eXBlPVwidGV4dFwiIFtmb3JtQ29udHJvbF09XCJmY1wiIFtwbGFjZWhvbGRlcl09XCJmaWx0ZXIuaGVscFwiPlxuPC9kaXY+Il19
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { ModelListFilter, } from '../../model-list-filter';
|
|
2
|
-
export class ModelListTextFilter extends ModelListFilter {
|
|
3
|
-
constructor(params) {
|
|
4
|
-
super(params);
|
|
5
|
-
this.type = 'text';
|
|
6
|
-
if (this.label == '') {
|
|
7
|
-
this.label = 'Recherche par texte';
|
|
8
|
-
}
|
|
9
|
-
if (this.help == '') {
|
|
10
|
-
this.help = 'Texte à rechercher';
|
|
11
|
-
}
|
|
12
|
-
if (this.default) {
|
|
13
|
-
this.set(this.default, '', true);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC10ZXh0LWZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9tb2RlbGxpc3QvbW9kZWwtbGlzdC1maWx0ZXJzL2ZpbHRlcnMvbW9kZWwtbGlzdC10ZXh0LWZpbHRlci9tb2RlbC1saXN0LXRleHQtZmlsdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxlQUFlLEdBRWhCLE1BQU0seUJBQXlCLENBQUM7QUFFakMsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGVBQWU7SUFDdEQsWUFBWSxNQUE2QjtRQUN2QyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztRQUNuQixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxxQkFBcUIsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxJQUFJLEdBQUcsb0JBQW9CLENBQUM7UUFDbkMsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIE1vZGVsTGlzdEZpbHRlcixcbiAgTW9kZWxMaXN0RmlsdGVyUGFyYW1zLFxufSBmcm9tICcuLi8uLi9tb2RlbC1saXN0LWZpbHRlcic7XG5cbmV4cG9ydCBjbGFzcyBNb2RlbExpc3RUZXh0RmlsdGVyIGV4dGVuZHMgTW9kZWxMaXN0RmlsdGVyIHtcbiAgY29uc3RydWN0b3IocGFyYW1zOiBNb2RlbExpc3RGaWx0ZXJQYXJhbXMpIHtcbiAgICBzdXBlcihwYXJhbXMpO1xuICAgIHRoaXMudHlwZSA9ICd0ZXh0JztcbiAgICBpZiAodGhpcy5sYWJlbCA9PSAnJykge1xuICAgICAgdGhpcy5sYWJlbCA9ICdSZWNoZXJjaGUgcGFyIHRleHRlJztcbiAgICB9XG4gICAgaWYgKHRoaXMuaGVscCA9PSAnJykge1xuICAgICAgdGhpcy5oZWxwID0gJ1RleHRlIMOgIHJlY2hlcmNoZXInO1xuICAgIH1cbiAgICBpZiAodGhpcy5kZWZhdWx0KSB7XG4gICAgICB0aGlzLnNldCh0aGlzLmRlZmF1bHQsICcnLCB0cnVlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
4
|
-
import { debounceTime, firstValueFrom, Subject } from 'rxjs';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/common";
|
|
7
|
-
import * as i2 from "@angular/forms";
|
|
8
|
-
class Level {
|
|
9
|
-
constructor(tree, level, choices) {
|
|
10
|
-
this.tree = tree;
|
|
11
|
-
this.level = level;
|
|
12
|
-
this.fc = new FormControl('');
|
|
13
|
-
this.choices = choices;
|
|
14
|
-
this.subs = this.fc.valueChanges.subscribe((val) => {
|
|
15
|
-
if (this.selected !== val) {
|
|
16
|
-
this.selected = val;
|
|
17
|
-
this.tree.updated(this);
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
close() {
|
|
22
|
-
this.subs.unsubscribe();
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
class Tree {
|
|
26
|
-
constructor(qs, maxLevel, display, filter) {
|
|
27
|
-
this.qs = qs;
|
|
28
|
-
this.maxLevel = maxLevel;
|
|
29
|
-
this.display = display;
|
|
30
|
-
this.filter = filter;
|
|
31
|
-
this.levels = [];
|
|
32
|
-
this.changed = new Subject();
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Conditionnaly add level to current tree.
|
|
36
|
-
*
|
|
37
|
-
* - if previous level have non-empty selected value
|
|
38
|
-
* - if current level choices are non empty
|
|
39
|
-
*/
|
|
40
|
-
async addLevel(fparent) {
|
|
41
|
-
let values = [];
|
|
42
|
-
if (this.levels.length === 0) {
|
|
43
|
-
values = await firstValueFrom(this.qs
|
|
44
|
-
.filter({ level: this.levels.length, parent: 'null', ...this.filter })
|
|
45
|
-
.get());
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
const parent = fparent
|
|
49
|
-
? fparent
|
|
50
|
-
: this.levels[this.levels.length - 1].selected;
|
|
51
|
-
if (parent) {
|
|
52
|
-
values = await firstValueFrom(this.qs
|
|
53
|
-
.filter({
|
|
54
|
-
level: this.levels.length,
|
|
55
|
-
parent: this.levels[this.levels.length - 1].selected || 'null',
|
|
56
|
-
...this.filter,
|
|
57
|
-
})
|
|
58
|
-
.get());
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
if (values.length > 0) {
|
|
62
|
-
const level = new Level(this, this.levels.length, []);
|
|
63
|
-
for (const v of values) {
|
|
64
|
-
level.choices.push({ value: v.id, desc: this.display(v) });
|
|
65
|
-
}
|
|
66
|
-
this.levels.push(level);
|
|
67
|
-
return level;
|
|
68
|
-
}
|
|
69
|
-
return null;
|
|
70
|
-
}
|
|
71
|
-
updated(level) {
|
|
72
|
-
const newLevels = [];
|
|
73
|
-
for (const l of this.levels) {
|
|
74
|
-
if (l.level <= level.level) {
|
|
75
|
-
newLevels.push(l);
|
|
76
|
-
}
|
|
77
|
-
else if (l.level > level.level) {
|
|
78
|
-
l.close();
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
this.levels = newLevels;
|
|
82
|
-
this.addLevel();
|
|
83
|
-
if (level.selected) {
|
|
84
|
-
this.changed.next(level.selected);
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
this.changed.next(this.levels[level.level - 1]?.selected || null);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
async prepare(value) {
|
|
91
|
-
// console.log('prepare', value);
|
|
92
|
-
const levels = [];
|
|
93
|
-
let cur = (await firstValueFrom(this.qs.filter({ id: value, ...this.filter }).get()))[0];
|
|
94
|
-
levels.push(cur);
|
|
95
|
-
let nlev = 0;
|
|
96
|
-
while (cur.parent !== null) {
|
|
97
|
-
cur = (await firstValueFrom(this.qs
|
|
98
|
-
.filter({
|
|
99
|
-
id: cur.parent,
|
|
100
|
-
...this.filter,
|
|
101
|
-
})
|
|
102
|
-
.get()))[0];
|
|
103
|
-
levels.push(cur);
|
|
104
|
-
nlev++;
|
|
105
|
-
if (nlev > this.maxLevel) {
|
|
106
|
-
throw Error('Max level error, could not find root');
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
for (let i = levels.length - 1; i >= 0; i--) {
|
|
110
|
-
const lv = await this.addLevel();
|
|
111
|
-
if (lv !== null) {
|
|
112
|
-
lv.selected = levels[i].id;
|
|
113
|
-
lv.fc.setValue(levels[i].id, { emitEvent: false });
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
if (this.levels.length <= this.maxLevel) {
|
|
117
|
-
await this.addLevel();
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
reset() { }
|
|
121
|
-
}
|
|
122
|
-
export class ModelListTreeFilterComponent {
|
|
123
|
-
constructor() {
|
|
124
|
-
this.classes = '';
|
|
125
|
-
}
|
|
126
|
-
async ngOnInit() {
|
|
127
|
-
this.tree = new Tree(this.filter.queryset, this.filter.maxLevel, this.filter.display, this.filter.filter);
|
|
128
|
-
if (this.filter.get()) {
|
|
129
|
-
await this.tree.prepare(this.filter.get()?.value);
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
await this.tree.addLevel();
|
|
133
|
-
}
|
|
134
|
-
this.tree.changed.pipe(debounceTime(250)).subscribe((val) => {
|
|
135
|
-
// console.log('changed', val);
|
|
136
|
-
if (val === null) {
|
|
137
|
-
this.filter.clear();
|
|
138
|
-
this.list.filters.update();
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
if (this.filter.set(val, '')) {
|
|
142
|
-
this.list.filters.update();
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
});
|
|
146
|
-
// this.tree.changed.subscribe((selected) => {
|
|
147
|
-
// console.log('tree changed', selected);
|
|
148
|
-
// this.filter.set(selected, '');
|
|
149
|
-
// });
|
|
150
|
-
// if (this.filter.getValue()) {
|
|
151
|
-
// console.log('filter value', this.filter.getValue());
|
|
152
|
-
// await this.tree.prepare(this.filter.getValue() as number);
|
|
153
|
-
// } else {
|
|
154
|
-
// await this.tree.addLevel();
|
|
155
|
-
// }
|
|
156
|
-
}
|
|
157
|
-
disable() {
|
|
158
|
-
this.filter.enabled = false;
|
|
159
|
-
this.list.filters.update();
|
|
160
|
-
}
|
|
161
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ModelListTreeFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
162
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: ModelListTreeFilterComponent, isStandalone: true, selector: "data-model-list-tree-filter", inputs: { list: "list", filter: "filter", classes: "classes" }, ngImport: i0, template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <div class=\"levelselect\" *ngFor=\"let l of tree.levels\">\n <select class=\"form-select form-select-sm\" [formControl]=\"l.fc\">\n <option value=\"\">{{filter.help}}</option>\n <option *ngFor=\"let ch of l.choices\" [value]=\"ch.value\">{{ch.desc}}</option>\n </select>\n </div>\n</div>", 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: "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.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"] }] }); }
|
|
163
|
-
}
|
|
164
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ModelListTreeFilterComponent, decorators: [{
|
|
165
|
-
type: Component,
|
|
166
|
-
args: [{ selector: 'data-model-list-tree-filter', standalone: true, imports: [CommonModule, ReactiveFormsModule], template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <div class=\"levelselect\" *ngFor=\"let l of tree.levels\">\n <select class=\"form-select form-select-sm\" [formControl]=\"l.fc\">\n <option value=\"\">{{filter.help}}</option>\n <option *ngFor=\"let ch of l.choices\" [value]=\"ch.value\">{{ch.desc}}</option>\n </select>\n </div>\n</div>" }]
|
|
167
|
-
}], ctorParameters: () => [], propDecorators: { list: [{
|
|
168
|
-
type: Input
|
|
169
|
-
}], filter: [{
|
|
170
|
-
type: Input
|
|
171
|
-
}], classes: [{
|
|
172
|
-
type: Input
|
|
173
|
-
}] } });
|
|
174
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC10cmVlLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtZmlsdGVycy9maWx0ZXJzL21vZGVsLWxpc3QtdHJlZS1maWx0ZXIvbW9kZWwtbGlzdC10cmVlLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtZmlsdGVycy9maWx0ZXJzL21vZGVsLWxpc3QtdHJlZS1maWx0ZXIvbW9kZWwtbGlzdC10cmVlLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUd6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7Ozs7QUFHM0UsTUFBTSxLQUFLO0lBUVQsWUFDRSxJQUFhLEVBQ2IsS0FBYSxFQUNiLE9BQTBDO1FBRTFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxH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QUM5QywyQ0FBMkM7UUFDM0MsbUNBQW1DO1FBQ25DLE1BQU07UUFDTixnQ0FBZ0M7UUFDaEMseURBQXlEO1FBQ3pELCtEQUErRDtRQUMvRCxXQUFXO1FBQ1gsZ0NBQWdDO1FBQ2hDLElBQUk7SUFDTixDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUM3QixDQUFDOzhHQWxEVSw0QkFBNEI7a0dBQTVCLDRCQUE0Qix1SkM1SnpDLGlnQkFVTSx5RERnSk0sWUFBWSx5UEFBRSxtQkFBbUI7OzJGQUVoQyw0QkFBNEI7a0JBUHhDLFNBQVM7K0JBQ0UsNkJBQTZCLGNBRzNCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxtQkFBbUIsQ0FBQzt3REFLNUIsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO2dCQUNVLE9BQU87c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1vZGVsTGlzdCB9IGZyb20gJy4uLy4uLy4uL21vZGVsLWxpc3Quc2VydmljZSc7XG5pbXBvcnQgeyBNb2RlbExpc3RUcmVlRmlsdGVyIH0gZnJvbSAnLi9tb2RlbC1saXN0LXRyZWUtZmlsdGVyJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEYXRhTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9kYXRhL2RhdGEtbW9kZWwnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpcnN0VmFsdWVGcm9tLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZpbHRlckRhdGEsIFF1ZXJ5c2V0IH0gZnJvbSAnLi4vLi4vLi4vLi4vZGF0YS9kYXRhLXF1ZXJ5JztcblxuY2xhc3MgTGV2ZWw8VCBleHRlbmRzIERhdGFNb2RlbD4ge1xuICBwdWJsaWMgbGV2ZWw6IG51bWJlcjtcbiAgcHVibGljIHRyZWU6IFRyZWU8VD47XG4gIHB1YmxpYyBjaG9pY2VzOiB7IHZhbHVlOiBudW1iZXI7IGRlc2M6IHN0cmluZyB9W107XG4gIHB1YmxpYyBmYzogRm9ybUNvbnRyb2w7XG4gIHB1YmxpYyBzZWxlY3RlZCE6IG51bWJlcjtcbiAgcHVibGljIHN1YnM6IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICB0cmVlOiBUcmVlPFQ+LFxuICAgIGxldmVsOiBudW1iZXIsXG4gICAgY2hvaWNlczogeyB2YWx1ZTogbnVtYmVyOyBkZXNjOiBzdHJpbmcgfVtdXG4gICkge1xuICAgIHRoaXMudHJlZSA9IHRyZWU7XG4gICAgdGhpcy5sZXZlbCA9IGxldmVsO1xuICAgIHRoaXMuZmMgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuICAgIHRoaXMuY2hvaWNlcyA9IGNob2ljZXM7XG4gICAgdGhpcy5zdWJzID0gdGhpcy5mYy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWwpID0+IHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkICE9PSB2YWwpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHZhbDtcbiAgICAgICAgdGhpcy50cmVlLnVwZGF0ZWQodGhpcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2UoKSB7XG4gICAgdGhpcy5zdWJzLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cblxuY2xhc3MgVHJlZTxUIGV4dGVuZHMgRGF0YU1vZGVsPiB7XG4gIGxldmVsczogTGV2ZWw8VD5bXSA9IFtdO1xuICBjaGFuZ2VkOiBTdWJqZWN0PG51bWJlciB8IG51bGw+ID0gbmV3IFN1YmplY3Q8bnVtYmVyIHwgbnVsbD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHFzOiBRdWVyeXNldDxUPixcbiAgICBwcml2YXRlIG1heExldmVsOiBudW1iZXIsXG4gICAgcHJpdmF0ZSBkaXNwbGF5OiBhbnksXG4gICAgcHJpdmF0ZSBmaWx0ZXI6IEZpbHRlckRhdGFcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBDb25kaXRpb25uYWx5IGFkZCBsZXZlbCB0byBjdXJyZW50IHRyZWUuXG4gICAqXG4gICAqIC0gaWYgcHJldmlvdXMgbGV2ZWwgaGF2ZSBub24tZW1wdHkgc2VsZWN0ZWQgdmFsdWVcbiAgICogLSBpZiBjdXJyZW50IGxldmVsIGNob2ljZXMgYXJlIG5vbiBlbXB0eVxuICAgKi9cbiAgcHVibGljIGFzeW5jIGFkZExldmVsKGZwYXJlbnQ/OiBudW1iZXIpOiBQcm9taXNlPExldmVsPFQ+IHwgbnVsbD4ge1xuICAgIGxldCB2YWx1ZXM6IFRbXSA9IFtdO1xuICAgIGlmICh0aGlzLmxldmVscy5sZW5ndGggPT09IDApIHtcbiAgICAgIHZhbHVlcyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICB0aGlzLnFzXG4gICAgICAgICAgLmZpbHRlcih7IGxldmVsOiB0aGlzLmxldmVscy5sZW5ndGgsIHBhcmVudDogJ251bGwnLCAuLi50aGlzLmZpbHRlciB9KVxuICAgICAgICAgIC5nZXQoKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcGFyZW50ID0gZnBhcmVudFxuICAgICAgICA/IGZwYXJlbnRcbiAgICAgICAgOiB0aGlzLmxldmVsc1t0aGlzLmxldmVscy5sZW5ndGggLSAxXS5zZWxlY3RlZDtcbiAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgdmFsdWVzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgdGhpcy5xc1xuICAgICAgICAgICAgLmZpbHRlcih7XG4gICAgICAgICAgICAgIGxldmVsOiB0aGlzLmxldmVscy5sZW5ndGgsXG4gICAgICAgICAgICAgIHBhcmVudDogdGhpcy5sZXZlbHNbdGhpcy5sZXZlbHMubGVuZ3RoIC0gMV0uc2VsZWN0ZWQgfHwgJ251bGwnLFxuICAgICAgICAgICAgICAuLi50aGlzLmZpbHRlcixcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuZ2V0KClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBsZXZlbCA9IG5ldyBMZXZlbCh0aGlzLCB0aGlzLmxldmVscy5sZW5ndGgsIFtdKTtcbiAgICAgIGZvciAoY29uc3QgdiBvZiB2YWx1ZXMpIHtcbiAgICAgICAgbGV2ZWwuY2hvaWNlcy5wdXNoKHsgdmFsdWU6IHYuaWQgYXMgbnVtYmVyLCBkZXNjOiB0aGlzLmRpc3BsYXkodikgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLmxldmVscy5wdXNoKGxldmVsKTtcbiAgICAgIHJldHVybiBsZXZlbDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlZChsZXZlbDogTGV2ZWw8VD4pIHtcbiAgICBjb25zdCBuZXdMZXZlbHM6IExldmVsPFQ+W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGwgb2YgdGhpcy5sZXZlbHMpIHtcbiAgICAgIGlmIChsLmxldmVsIDw9IGxldmVsLmxldmVsKSB7XG4gICAgICAgIG5ld0xldmVscy5wdXNoKGwpO1xuICAgICAgfSBlbHNlIGlmIChsLmxldmVsID4gbGV2ZWwubGV2ZWwpIHtcbiAgICAgICAgbC5jbG9zZSgpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmxldmVscyA9IG5ld0xldmVscztcbiAgICB0aGlzLmFkZExldmVsKCk7XG4gICAgaWYgKGxldmVsLnNlbGVjdGVkKSB7XG4gICAgICB0aGlzLmNoYW5nZWQubmV4dChsZXZlbC5zZWxlY3RlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2hhbmdlZC5uZXh0KHRoaXMubGV2ZWxzW2xldmVsLmxldmVsIC0gMV0/LnNlbGVjdGVkIHx8IG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmVwYXJlKHZhbHVlOiBudW1iZXIpIHtcbiAgICAvLyBjb25zb2xlLmxvZygncHJlcGFyZScsIHZhbHVlKTtcbiAgICBjb25zdCBsZXZlbHM6IFRbXSA9IFtdO1xuICAgIGxldCBjdXIgPSAoXG4gICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnFzLmZpbHRlcih7IGlkOiB2YWx1ZSwgLi4udGhpcy5maWx0ZXIgfSkuZ2V0KCkpXG4gICAgKVswXTtcbiAgICBsZXZlbHMucHVzaChjdXIpO1xuICAgIGxldCBubGV2ID0gMDtcbiAgICB3aGlsZSAoKGN1ciBhcyBhbnkpLnBhcmVudCAhPT0gbnVsbCkge1xuICAgICAgY3VyID0gKFxuICAgICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgICB0aGlzLnFzXG4gICAgICAgICAgICAuZmlsdGVyKHtcbiAgICAgICAgICAgICAgaWQ6IChjdXIgYXMgYW55KS5wYXJlbnQsXG4gICAgICAgICAgICAgIC4uLnRoaXMuZmlsdGVyLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5nZXQoKVxuICAgICAgICApXG4gICAgICApWzBdO1xuICAgICAgbGV2ZWxzLnB1c2goY3VyKTtcbiAgICAgIG5sZXYrKztcbiAgICAgIGlmIChubGV2ID4gdGhpcy5tYXhMZXZlbCkge1xuICAgICAgICB0aHJvdyBFcnJvcignTWF4IGxldmVsIGVycm9yLCBjb3VsZCBub3QgZmluZCByb290Jyk7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSBsZXZlbHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGNvbnN0IGx2ID0gYXdhaXQgdGhpcy5hZGRMZXZlbCgpO1xuICAgICAgaWYgKGx2ICE9PSBudWxsKSB7XG4gICAgICAgIGx2LnNlbGVjdGVkID0gbGV2ZWxzW2ldLmlkIGFzIG51bWJlcjtcbiAgICAgICAgbHYuZmMuc2V0VmFsdWUobGV2ZWxzW2ldLmlkIGFzIG51bWJlciwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5sZXZlbHMubGVuZ3RoIDw9IHRoaXMubWF4TGV2ZWwpIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRkTGV2ZWwoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKSB7fVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRhLW1vZGVsLWxpc3QtdHJlZS1maWx0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kZWwtbGlzdC10cmVlLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vZGVsLWxpc3QtdHJlZS1maWx0ZXIuY29tcG9uZW50LnNhc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIE1vZGVsTGlzdFRyZWVGaWx0ZXJDb21wb25lbnQ8VCBleHRlbmRzIERhdGFNb2RlbD5cbiAgaW1wbGVtZW50cyBPbkluaXRcbntcbiAgQElucHV0KCkgcHVibGljIGxpc3QhOiBNb2RlbExpc3Q8YW55PjtcbiAgQElucHV0KCkgcHVibGljIGZpbHRlciE6IE1vZGVsTGlzdFRyZWVGaWx0ZXI8VD47XG4gIEBJbnB1dCgpIHB1YmxpYyBjbGFzc2VzOiBzdHJpbmdbXSB8IHN0cmluZyA9ICcnO1xuICBwdWJsaWMgdHJlZSE6IFRyZWU8VD47XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIHB1YmxpYyBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnRyZWUgPSBuZXcgVHJlZShcbiAgICAgIHRoaXMuZmlsdGVyLnF1ZXJ5c2V0LFxuICAgICAgdGhpcy5maWx0ZXIubWF4TGV2ZWwsXG4gICAgICB0aGlzLmZpbHRlci5kaXNwbGF5LFxuICAgICAgdGhpcy5maWx0ZXIuZmlsdGVyXG4gICAgKTtcbiAgICBpZiAodGhpcy5maWx0ZXIuZ2V0KCkpIHtcbiAgICAgIGF3YWl0IHRoaXMudHJlZS5wcmVwYXJlKHRoaXMuZmlsdGVyLmdldCgpPy52YWx1ZSBhcyBudW1iZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLnRyZWUuYWRkTGV2ZWwoKTtcbiAgICB9XG5cbiAgICB0aGlzLnRyZWUuY2hhbmdlZC5waXBlKGRlYm91bmNlVGltZSgyNTApKS5zdWJzY3JpYmUoKHZhbCkgPT4ge1xuICAgICAgLy8gY29uc29sZS5sb2coJ2NoYW5nZWQnLCB2YWwpO1xuICAgICAgaWYgKHZhbCA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLmZpbHRlci5jbGVhcigpO1xuICAgICAgICB0aGlzLmxpc3QuZmlsdGVycy51cGRhdGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlci5zZXQodmFsLCAnJykpIHtcbiAgICAgICAgICB0aGlzLmxpc3QuZmlsdGVycy51cGRhdGUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gdGhpcy50cmVlLmNoYW5nZWQuc3Vic2NyaWJlKChzZWxlY3RlZCkgPT4ge1xuICAgIC8vICAgY29uc29sZS5sb2coJ3RyZWUgY2hhbmdlZCcsIHNlbGVjdGVkKTtcbiAgICAvLyAgIHRoaXMuZmlsdGVyLnNldChzZWxlY3RlZCwgJycpO1xuICAgIC8vIH0pO1xuICAgIC8vIGlmICh0aGlzLmZpbHRlci5nZXRWYWx1ZSgpKSB7XG4gICAgLy8gICBjb25zb2xlLmxvZygnZmlsdGVyIHZhbHVlJywgdGhpcy5maWx0ZXIuZ2V0VmFsdWUoKSk7XG4gICAgLy8gICBhd2FpdCB0aGlzLnRyZWUucHJlcGFyZSh0aGlzLmZpbHRlci5nZXRWYWx1ZSgpIGFzIG51bWJlcik7XG4gICAgLy8gfSBlbHNlIHtcbiAgICAvLyAgIGF3YWl0IHRoaXMudHJlZS5hZGRMZXZlbCgpO1xuICAgIC8vIH1cbiAgfVxuXG4gIHB1YmxpYyBkaXNhYmxlKCkge1xuICAgIHRoaXMuZmlsdGVyLmVuYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLmxpc3QuZmlsdGVycy51cGRhdGUoKTtcbiAgfVxufVxuIiwiXG48ZGl2IGNsYXNzPVwiZmlsdGVyaXRlbVwiIFtuZ0NsYXNzXT1cImZpbHRlci5kaXNwbGF5Q2xhc3NlcyB8fCBjbGFzc2VzXCI+XG4gIDxkaXYgY2xhc3M9XCJ0cmFzaCBmbG9hdC1lbmRcIiAoY2xpY2spPVwiZGlzYWJsZSgpXCI+PGkgY2xhc3M9XCJiaSBiaS10cmFzaFwiPjwvaT48L2Rpdj5cbiAgPGxhYmVsPnt7ZmlsdGVyLmxhYmVsfX08L2xhYmVsPlxuICA8ZGl2IGNsYXNzPVwibGV2ZWxzZWxlY3RcIiAqbmdGb3I9XCJsZXQgbCBvZiB0cmVlLmxldmVsc1wiPlxuICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbVwiIFtmb3JtQ29udHJvbF09XCJsLmZjXCI+XG4gICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+e3tmaWx0ZXIuaGVscH19PC9vcHRpb24+XG4gICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjaCBvZiBsLmNob2ljZXNcIiBbdmFsdWVdPVwiY2gudmFsdWVcIj57e2NoLmRlc2N9fTwvb3B0aW9uPlxuICAgIDwvc2VsZWN0PlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { ModelListAutocompleteFilter, } from '../model-list-autocomplete-filter/model-list-autocomplete-filter';
|
|
2
|
-
export class ModelListTreeFilter extends ModelListAutocompleteFilter {
|
|
3
|
-
constructor(params) {
|
|
4
|
-
super(params);
|
|
5
|
-
this.maxLevel = 5;
|
|
6
|
-
this.type = 'tree';
|
|
7
|
-
if (this.label == '') {
|
|
8
|
-
this.label = 'Sélectionnez dans la hiérarchie';
|
|
9
|
-
}
|
|
10
|
-
if (this.help == '') {
|
|
11
|
-
this.help = 'Texte à rechercher';
|
|
12
|
-
}
|
|
13
|
-
if (params.maxLevel) {
|
|
14
|
-
this.maxLevel = params.maxLevel;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC10cmVlLWZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9tb2RlbGxpc3QvbW9kZWwtbGlzdC1maWx0ZXJzL2ZpbHRlcnMvbW9kZWwtbGlzdC10cmVlLWZpbHRlci9tb2RlbC1saXN0LXRyZWUtZmlsdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCwyQkFBMkIsR0FFNUIsTUFBTSxrRUFBa0UsQ0FBQztBQU8xRSxNQUFNLE9BQU8sbUJBQ1gsU0FBUSwyQkFBOEI7SUFLdEMsWUFBWSxNQUE4QjtRQUN4QyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFIVCxhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBSTFCLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO1FBQ25CLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLGlDQUFpQyxDQUFDO1FBQ2pELENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyxvQkFBb0IsQ0FBQztRQUNuQyxDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9kYXRhL2RhdGEtbW9kZWwnO1xuaW1wb3J0IHtcbiAgTW9kZWxMaXN0QXV0b2NvbXBsZXRlRmlsdGVyLFxuICBNb2RlbExpc3RBdXRvY29tcGxldGVQYXJhbXMsXG59IGZyb20gJy4uL21vZGVsLWxpc3QtYXV0b2NvbXBsZXRlLWZpbHRlci9tb2RlbC1saXN0LWF1dG9jb21wbGV0ZS1maWx0ZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1vZGVsTGlzdFRyZWVQYXJhbXM8VCBleHRlbmRzIERhdGFNb2RlbD5cbiAgZXh0ZW5kcyBNb2RlbExpc3RBdXRvY29tcGxldGVQYXJhbXM8VD4ge1xuICBtYXhMZXZlbD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIE1vZGVsTGlzdFRyZWVGaWx0ZXI8VCBleHRlbmRzIERhdGFNb2RlbD5cbiAgZXh0ZW5kcyBNb2RlbExpc3RBdXRvY29tcGxldGVGaWx0ZXI8VD5cbiAgaW1wbGVtZW50cyBNb2RlbExpc3RUcmVlUGFyYW1zPFQ+XG57XG4gIHB1YmxpYyBtYXhMZXZlbDogbnVtYmVyID0gNTtcblxuICBjb25zdHJ1Y3RvcihwYXJhbXM6IE1vZGVsTGlzdFRyZWVQYXJhbXM8VD4pIHtcbiAgICBzdXBlcihwYXJhbXMpO1xuICAgIHRoaXMudHlwZSA9ICd0cmVlJztcbiAgICBpZiAodGhpcy5sYWJlbCA9PSAnJykge1xuICAgICAgdGhpcy5sYWJlbCA9ICdTw6lsZWN0aW9ubmV6IGRhbnMgbGEgaGnDqXJhcmNoaWUnO1xuICAgIH1cbiAgICBpZiAodGhpcy5oZWxwID09ICcnKSB7XG4gICAgICB0aGlzLmhlbHAgPSAnVGV4dGUgw6AgcmVjaGVyY2hlcic7XG4gICAgfVxuICAgIGlmIChwYXJhbXMubWF4TGV2ZWwpIHtcbiAgICAgIHRoaXMubWF4TGV2ZWwgPSBwYXJhbXMubWF4TGV2ZWw7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export class ModelListFilterGroup {
|
|
2
|
-
constructor(params) {
|
|
3
|
-
this.name = '';
|
|
4
|
-
this.label = '';
|
|
5
|
-
this.desc = '';
|
|
6
|
-
this.position = 0;
|
|
7
|
-
this.allowed = true;
|
|
8
|
-
this.enabled = true;
|
|
9
|
-
this.filters = [];
|
|
10
|
-
this.name = params.name || '';
|
|
11
|
-
this.label = params.label || '';
|
|
12
|
-
this.desc = params.desc || '';
|
|
13
|
-
this.position = params.position || 0;
|
|
14
|
-
this.allowed = params.allowed || true;
|
|
15
|
-
this.enabled = params.enabled || true;
|
|
16
|
-
this.filters = params.filters || [];
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC1maWx0ZXItZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtZmlsdGVycy9tb2RlbC1saXN0LWZpbHRlci1ncm91cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sb0JBQW9CO0lBUy9CLFlBQVksTUFBcUM7UUFSMUMsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUNsQixVQUFLLEdBQVcsRUFBRSxDQUFDO1FBQ25CLFNBQUksR0FBVyxFQUFFLENBQUM7UUFDbEIsYUFBUSxHQUFXLENBQUMsQ0FBQztRQUNyQixZQUFPLEdBQVksSUFBSSxDQUFDO1FBQ3hCLFlBQU8sR0FBWSxJQUFJLENBQUM7UUFDeEIsWUFBTyxHQUFzQixFQUFFLENBQUM7UUFHckMsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUM7UUFDdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RlbExpc3RGaWx0ZXIgfSBmcm9tICcuL21vZGVsLWxpc3QtZmlsdGVyJztcblxuZXhwb3J0IGNsYXNzIE1vZGVsTGlzdEZpbHRlckdyb3VwIHtcbiAgcHVibGljIG5hbWU6IHN0cmluZyA9ICcnO1xuICBwdWJsaWMgbGFiZWw6IHN0cmluZyA9ICcnO1xuICBwdWJsaWMgZGVzYzogc3RyaW5nID0gJyc7XG4gIHB1YmxpYyBwb3NpdGlvbjogbnVtYmVyID0gMDtcbiAgcHVibGljIGFsbG93ZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBwdWJsaWMgZW5hYmxlZDogYm9vbGVhbiA9IHRydWU7XG4gIHB1YmxpYyBmaWx0ZXJzOiBNb2RlbExpc3RGaWx0ZXJbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHBhcmFtczogUGFydGlhbDxNb2RlbExpc3RGaWx0ZXJHcm91cD4pIHtcbiAgICB0aGlzLm5hbWUgPSBwYXJhbXMubmFtZSB8fCAnJztcbiAgICB0aGlzLmxhYmVsID0gcGFyYW1zLmxhYmVsIHx8ICcnO1xuICAgIHRoaXMuZGVzYyA9IHBhcmFtcy5kZXNjIHx8ICcnO1xuICAgIHRoaXMucG9zaXRpb24gPSBwYXJhbXMucG9zaXRpb24gfHwgMDtcbiAgICB0aGlzLmFsbG93ZWQgPSBwYXJhbXMuYWxsb3dlZCB8fCB0cnVlO1xuICAgIHRoaXMuZW5hYmxlZCA9IHBhcmFtcy5lbmFibGVkIHx8IHRydWU7XG4gICAgdGhpcy5maWx0ZXJzID0gcGFyYW1zLmZpbHRlcnMgfHwgW107XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
import { ReplaySubject } from 'rxjs';
|
|
2
|
-
export class ModelListFilter {
|
|
3
|
-
constructor(params) {
|
|
4
|
-
this.pristine = true;
|
|
5
|
-
this.multi = false;
|
|
6
|
-
/** Single current value */
|
|
7
|
-
this._value = null;
|
|
8
|
-
/** Multiple current value */
|
|
9
|
-
this._mvalue = new Map();
|
|
10
|
-
/** Single current value observable */
|
|
11
|
-
this._current = new ReplaySubject(1);
|
|
12
|
-
/** Multiple current value observable */
|
|
13
|
-
this._mcurrent = new ReplaySubject(1);
|
|
14
|
-
this.name = params.name;
|
|
15
|
-
this.field = params.field;
|
|
16
|
-
this.label = params.label || '';
|
|
17
|
-
this.help = params.help || '';
|
|
18
|
-
this.desc = params.desc;
|
|
19
|
-
this.displayClasses = params.displayClasses;
|
|
20
|
-
this.allowed = false;
|
|
21
|
-
this.enabled = false;
|
|
22
|
-
this.type = 'text';
|
|
23
|
-
this.default = params.default;
|
|
24
|
-
// FIXME: add value init
|
|
25
|
-
}
|
|
26
|
-
get mcurrent$() {
|
|
27
|
-
return this._mcurrent.asObservable();
|
|
28
|
-
}
|
|
29
|
-
get current$() {
|
|
30
|
-
return this._current.asObservable();
|
|
31
|
-
}
|
|
32
|
-
get valueChanges() {
|
|
33
|
-
if (this.multi) {
|
|
34
|
-
return this._mcurrent.asObservable();
|
|
35
|
-
}
|
|
36
|
-
return this._current.asObservable();
|
|
37
|
-
}
|
|
38
|
-
get summary() {
|
|
39
|
-
if (this.multi) {
|
|
40
|
-
return Array.from(this._mvalue.values()).join(', ');
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
return this._value?.desc || '';
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
updateFilter(filter) {
|
|
47
|
-
if (this.multi && this._mvalue.size > 0) {
|
|
48
|
-
filter[this.field] = this.getMultiValue();
|
|
49
|
-
}
|
|
50
|
-
else if (!this.multi &&
|
|
51
|
-
this._value !== undefined &&
|
|
52
|
-
this._value !== null) {
|
|
53
|
-
filter[this.field] = this.getValue();
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
clear(notify = true) {
|
|
57
|
-
if (this.multi) {
|
|
58
|
-
this._mvalue = new Map();
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
this._value = null;
|
|
62
|
-
}
|
|
63
|
-
this.notify(notify);
|
|
64
|
-
}
|
|
65
|
-
set(value, desc, notify = true) {
|
|
66
|
-
if (this.multi) {
|
|
67
|
-
return this.mset(value, desc, notify);
|
|
68
|
-
}
|
|
69
|
-
return this.sset(value, desc, notify);
|
|
70
|
-
}
|
|
71
|
-
unset(value, desc, notify = true) {
|
|
72
|
-
if (this.multi) {
|
|
73
|
-
return this.munset(value, desc, notify);
|
|
74
|
-
}
|
|
75
|
-
return this.sunset(value, desc, notify);
|
|
76
|
-
}
|
|
77
|
-
toggle(value, desc, notify = true) {
|
|
78
|
-
if (this.multi) {
|
|
79
|
-
return this.mtoggle(value, desc, notify);
|
|
80
|
-
}
|
|
81
|
-
return this.stoggle(value, desc, notify);
|
|
82
|
-
}
|
|
83
|
-
getValue() {
|
|
84
|
-
return `${this._value?.value}`;
|
|
85
|
-
}
|
|
86
|
-
get() {
|
|
87
|
-
return this._value;
|
|
88
|
-
}
|
|
89
|
-
mtoggle(value, desc, notify = true) {
|
|
90
|
-
if (this._mvalue.has(`${value}`)) {
|
|
91
|
-
this._mvalue.delete(`${value}`);
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
this._mvalue.set(`${value}`, desc);
|
|
95
|
-
}
|
|
96
|
-
this.notify(notify);
|
|
97
|
-
return true;
|
|
98
|
-
}
|
|
99
|
-
mset(value, desc, notify = true) {
|
|
100
|
-
if (!this._mvalue.has(`${value}`)) {
|
|
101
|
-
this._mvalue.set(`${value}`, desc);
|
|
102
|
-
this.notify(notify);
|
|
103
|
-
return true;
|
|
104
|
-
}
|
|
105
|
-
return false;
|
|
106
|
-
}
|
|
107
|
-
munset(value, desc, notify = true) {
|
|
108
|
-
if (this._mvalue.has(`${value}`)) {
|
|
109
|
-
this._mvalue.delete(`${value}`);
|
|
110
|
-
this.notify(notify);
|
|
111
|
-
return true;
|
|
112
|
-
}
|
|
113
|
-
return false;
|
|
114
|
-
}
|
|
115
|
-
stoggle(value, desc, notify = true) {
|
|
116
|
-
if (this._value !== null && this._value.value === value) {
|
|
117
|
-
this._value = null;
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
this._value = { value, desc };
|
|
121
|
-
}
|
|
122
|
-
this.notify(notify);
|
|
123
|
-
return true;
|
|
124
|
-
}
|
|
125
|
-
sset(value, desc, notify = true) {
|
|
126
|
-
if (!(this._value !== null && this._value.value === value)) {
|
|
127
|
-
this._value = { value, desc };
|
|
128
|
-
this.notify(notify);
|
|
129
|
-
return true;
|
|
130
|
-
}
|
|
131
|
-
return false;
|
|
132
|
-
}
|
|
133
|
-
sunset(value, desc, notify = true) {
|
|
134
|
-
if (this._value !== null) {
|
|
135
|
-
this._value = null;
|
|
136
|
-
this.notify(notify);
|
|
137
|
-
return true;
|
|
138
|
-
}
|
|
139
|
-
return false;
|
|
140
|
-
}
|
|
141
|
-
getMultiValue() {
|
|
142
|
-
return Array.from(this._mvalue.keys()).join(',');
|
|
143
|
-
}
|
|
144
|
-
notify(notify = true) {
|
|
145
|
-
if (notify) {
|
|
146
|
-
if (this.multi) {
|
|
147
|
-
this._mcurrent.next(Array.from(this._mvalue.entries()).map(([k, v]) => {
|
|
148
|
-
return { desc: v, value: k };
|
|
149
|
-
}));
|
|
150
|
-
}
|
|
151
|
-
else {
|
|
152
|
-
this._current.next(this._value);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC1maWx0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtZmlsdGVycy9tb2RlbC1saXN0LWZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBaUJqRCxNQUFNLE9BQU8sZUFBZTtJQXdCMUIsWUFBWSxNQUE2QjtRQWJsQyxhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLFVBQUssR0FBRyxLQUFLLENBQUM7UUFHckIsMkJBQTJCO1FBQ2pCLFdBQU0sR0FBMkIsSUFBSSxDQUFDO1FBQ2hELDZCQUE2QjtRQUNuQixZQUFPLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7UUFDOUMsc0NBQXNDO1FBQzVCLGFBQVEsR0FBRyxJQUFJLGFBQWEsQ0FBeUIsQ0FBQyxDQUFDLENBQUM7UUFDbEUsd0NBQXdDO1FBQzlCLGNBQVMsR0FBRyxJQUFJLGFBQWEsQ0FBb0IsQ0FBQyxDQUFDLENBQUM7UUFHNUQsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQztRQUM1QyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNy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LENBQUM7SUFDZixDQUFDO0lBRU8sTUFBTSxDQUFDLEtBQVUsRUFBRSxJQUFZLEVBQUUsU0FBa0IsSUFBSTtRQUM3RCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxhQUFhO1FBQ25CLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTyxNQUFNLENBQUMsU0FBa0IsSUFBSTtRQUNuQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQ2pCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQ2hELE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsQ0FBQyxDQUFDLENBQ0gsQ0FBQztZQUNKLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWx0ZXJEYXRhIH0gZnJvbSAnLi4vLi4vZGF0YS9kYXRhLXF1ZXJ5JztcbmltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZJTFRFUl9UWVBFIH0gZnJvbSAnLi9maWx0ZXJzL2ZpbHRlcnR5cGVzJztcbmltcG9ydCB7IElEaXNwRWRpdENob2ljZSB9IGZyb20gJy4uLy4uL2Rpc3BlZGl0L2Rpc3BlZGl0L2Rpc3BlZGl0LmNvbnN0YW50cyc7XG5pbXBvcnQgeyBNb2RlbExpc3RGaWx0ZXJHcm91cCB9IGZyb20gJy4vbW9kZWwtbGlzdC1maWx0ZXItZ3JvdXAnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1vZGVsTGlzdEZpbHRlclBhcmFtcyB7XG4gIG5hbWU6IHN0cmluZztcbiAgZmllbGQ6IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIGhlbHA/OiBzdHJpbmc7XG4gIHZhbHVlPzogYW55O1xuICBkZXNjPzogYW55O1xuICBkZWZhdWx0PzogYW55O1xuICBkaXNwbGF5Q2xhc3Nlcz86IHN0cmluZ1tdIHwgc3RyaW5nO1xuICBncm91cD86IE1vZGVsTGlzdEZpbHRlckdyb3VwO1xufVxuXG5leHBvcnQgY2xhc3MgTW9kZWxMaXN0RmlsdGVyIGltcGxlbWVudHMgTW9kZWxMaXN0RmlsdGVyUGFyYW1zIHtcbiAgcHVibGljIG5hbWU6IHN0cmluZztcbiAgcHVibGljIGZpZWxkOiBzdHJpbmc7XG4gIHB1YmxpYyBsYWJlbDogc3RyaW5nO1xuICBwdWJsaWMgaGVscDogc3RyaW5nO1xuICBwdWJsaWMgZGVzYz86IGFueTtcbiAgcHVibGljIGRlZmF1bHQ/OiBhbnk7XG4gIHB1YmxpYyB0eXBlOiBGSUxURVJfVFlQRTtcbiAgcHVibGljIGFsbG93ZWQ6IGJvb2xlYW47XG4gIHB1YmxpYyBlbmFibGVkOiBib29sZWFuO1xuICBwdWJsaWMgZGlzcGxheUNsYXNzZXM/OiBzdHJpbmdbXSB8IHN0cmluZztcbiAgcHVibGljIHByaXN0aW5lID0gdHJ1ZTtcbiAgcHVibGljIG11bHRpID0gZmFsc2U7XG4gIHB1YmxpYyBncm91cD86IE1vZGVsTGlzdEZpbHRlckdyb3VwO1xuXG4gIC8qKiBTaW5nbGUgY3VycmVudCB2YWx1ZSAqL1xuICBwcm90ZWN0ZWQgX3ZhbHVlOiBJRGlzcEVkaXRDaG9pY2UgfCBudWxsID0gbnVsbDtcbiAgLyoqIE11bHRpcGxlIGN1cnJlbnQgdmFsdWUgKi9cbiAgcHJvdGVjdGVkIF9tdmFsdWUgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAvKiogU2luZ2xlIGN1cnJlbnQgdmFsdWUgb2JzZXJ2YWJsZSAqL1xuICBwcm90ZWN0ZWQgX2N1cnJlbnQgPSBuZXcgUmVwbGF5U3ViamVjdDxJRGlzcEVkaXRDaG9pY2UgfCBudWxsPigxKTtcbiAgLyoqIE11bHRpcGxlIGN1cnJlbnQgdmFsdWUgb2JzZXJ2YWJsZSAqL1xuICBwcm90ZWN0ZWQgX21jdXJyZW50ID0gbmV3IFJlcGxheVN1YmplY3Q8SURpc3BFZGl0Q2hvaWNlW10+KDEpO1xuXG4gIGNvbnN0cnVjdG9yKHBhcmFtczogTW9kZWxMaXN0RmlsdGVyUGFyYW1zKSB7XG4gICAgdGhpcy5uYW1lID0gcGFyYW1zLm5hbWU7XG4gICAgdGhpcy5maWVsZCA9IHBhcmFtcy5maWVsZDtcbiAgICB0aGlzLmxhYmVsID0gcGFyYW1zLmxhYmVsIHx8ICcnO1xuICAgIHRoaXMuaGVscCA9IHBhcmFtcy5oZWxwIHx8ICcnO1xuICAgIHRoaXMuZGVzYyA9IHBhcmFtcy5kZXNjO1xuICAgIHRoaXMuZGlzcGxheUNsYXNzZXMgPSBwYXJhbXMuZGlzcGxheUNsYXNzZXM7XG4gICAgdGhpcy5hbGxvd2VkID0gZmFsc2U7XG4gICAgdGhpcy5lbmFibGVkID0gZmFsc2U7XG4gICAgdGhpcy50eXBlID0gJ3RleHQnO1xuICAgIHRoaXMuZGVmYXVsdCA9IHBhcmFtcy5kZWZhdWx0O1xuICAgIC8vIEZJWE1FOiBhZGQgdmFsdWUgaW5pdFxuICB9XG5cbiAgcHVibGljIGdldCBtY3VycmVudCQoKTogT2JzZXJ2YWJsZTxJRGlzcEVkaXRDaG9pY2VbXT4ge1xuICAgIHJldHVybiB0aGlzLl9tY3VycmVudC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY3VycmVudCQoKTogT2JzZXJ2YWJsZTxJRGlzcEVkaXRDaG9pY2UgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZhbHVlQ2hhbmdlcygpOiBPYnNlcnZhYmxlPFxuICAgIElEaXNwRWRpdENob2ljZSB8IElEaXNwRWRpdENob2ljZVtdIHwgbnVsbFxuICA+IHtcbiAgICBpZiAodGhpcy5tdWx0aSkge1xuICAgICAgcmV0dXJuIHRoaXMuX21jdXJyZW50LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY3VycmVudC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3VtbWFyeSgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLm11bHRpKSB7XG4gICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9tdmFsdWUudmFsdWVzKCkpLmpvaW4oJywgJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl92YWx1ZT8uZGVzYyB8fCAnJztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRmlsdGVyKGZpbHRlcjogRmlsdGVyRGF0YSkge1xuICAgIGlmICh0aGlzLm11bHRpICYmIHRoaXMuX212YWx1ZS5zaXplID4gMCkge1xuICAgICAgZmlsdGVyW3RoaXMuZmllbGRdID0gdGhpcy5nZXRNdWx0aVZhbHVlKCk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICF0aGlzLm11bHRpICYmXG4gICAgICB0aGlzLl92YWx1ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLl92YWx1ZSAhPT0gbnVsbFxuICAgICkge1xuICAgICAgZmlsdGVyW3RoaXMuZmllbGRdID0gdGhpcy5nZXRWYWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbGVhcihub3RpZnk6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgaWYgKHRoaXMubXVsdGkpIHtcbiAgICAgIHRoaXMuX212YWx1ZSA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5ub3RpZnkobm90aWZ5KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQodmFsdWU6IGFueSwgZGVzYzogc3RyaW5nLCBub3RpZnk6IGJvb2xlYW4gPSB0cnVlKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubXVsdGkpIHtcbiAgICAgIHJldHVybiB0aGlzLm1zZXQodmFsdWUsIGRlc2MsIG5vdGlmeSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNzZXQodmFsdWUsIGRlc2MsIG5vdGlmeSk7XG4gIH1cblxuICBwdWJsaWMgdW5zZXQodmFsdWU6IGFueSwgZGVzYzogc3RyaW5nLCBub3RpZnk6IGJvb2xlYW4gPSB0cnVlKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubXVsdGkpIHtcbiAgICAgIHJldHVybiB0aGlzLm11bnNldCh2YWx1ZSwgZGVzYywgbm90aWZ5KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3Vuc2V0KHZhbHVlLCBkZXNjLCBub3RpZnkpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZSh2YWx1ZTogYW55LCBkZXNjOiBzdHJpbmcsIG5vdGlmeTogYm9vbGVhbiA9IHRydWUpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5tdWx0aSkge1xuICAgICAgcmV0dXJuIHRoaXMubXRvZ2dsZSh2YWx1ZSwgZGVzYywgbm90aWZ5KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3RvZ2dsZSh2YWx1ZSwgZGVzYywgbm90aWZ5KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRWYWx1ZSgpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgIHJldHVybiBgJHt0aGlzLl92YWx1ZT8udmFsdWV9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQoKTogSURpc3BFZGl0Q2hvaWNlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBtdG9nZ2xlKHZhbHVlOiBhbnksIGRlc2M6IHN0cmluZywgbm90aWZ5OiBib29sZWFuID0gdHJ1ZSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLl9tdmFsdWUuaGFzKGAke3ZhbHVlfWApKSB7XG4gICAgICB0aGlzLl9tdmFsdWUuZGVsZXRlKGAke3ZhbHVlfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9tdmFsdWUuc2V0KGAke3ZhbHVlfWAsIGRlc2MpO1xuICAgIH1cbiAgICB0aGlzLm5vdGlmeShub3RpZnkpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBtc2V0KHZhbHVlOiBhbnksIGRlc2M6IHN0cmluZywgbm90aWZ5OiBib29sZWFuID0gdHJ1ZSk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5fbXZhbHVlLmhhcyhgJHt2YWx1ZX1gKSkge1xuICAgICAgdGhpcy5fbXZhbHVlLnNldChgJHt2YWx1ZX1gLCBkZXNjKTtcbiAgICAgIHRoaXMubm90aWZ5KG5vdGlmeSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBtdW5zZXQodmFsdWU6IGFueSwgZGVzYzogc3RyaW5nLCBub3RpZnk6IGJvb2xlYW4gPSB0cnVlKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX212YWx1ZS5oYXMoYCR7dmFsdWV9YCkpIHtcbiAgICAgIHRoaXMuX212YWx1ZS5kZWxldGUoYCR7dmFsdWV9YCk7XG4gICAgICB0aGlzLm5vdGlmeShub3RpZnkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RvZ2dsZSh2YWx1ZTogYW55LCBkZXNjOiBzdHJpbmcsIG5vdGlmeTogYm9vbGVhbiA9IHRydWUpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fdmFsdWUgIT09IG51bGwgJiYgdGhpcy5fdmFsdWUudmFsdWUgPT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0geyB2YWx1ZSwgZGVzYyB9O1xuICAgIH1cbiAgICB0aGlzLm5vdGlmeShub3RpZnkpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzc2V0KHZhbHVlOiBhbnksIGRlc2M6IHN0cmluZywgbm90aWZ5OiBib29sZWFuID0gdHJ1ZSk6IGJvb2xlYW4ge1xuICAgIGlmICghKHRoaXMuX3ZhbHVlICE9PSBudWxsICYmIHRoaXMuX3ZhbHVlLnZhbHVlID09PSB2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0geyB2YWx1ZSwgZGVzYyB9O1xuICAgICAgdGhpcy5ub3RpZnkobm90aWZ5KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHN1bnNldCh2YWx1ZTogYW55LCBkZXNjOiBzdHJpbmcsIG5vdGlmeTogYm9vbGVhbiA9IHRydWUpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fdmFsdWUgIT09IG51bGwpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMubm90aWZ5KG5vdGlmeSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNdWx0aVZhbHVlKCk6IHN0cmluZyB8IG51bWJlciB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5fbXZhbHVlLmtleXMoKSkuam9pbignLCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBub3RpZnkobm90aWZ5OiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGlmIChub3RpZnkpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpKSB7XG4gICAgICAgIHRoaXMuX21jdXJyZW50Lm5leHQoXG4gICAgICAgICAgQXJyYXkuZnJvbSh0aGlzLl9tdmFsdWUuZW50cmllcygpKS5tYXAoKFtrLCB2XSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHsgZGVzYzogdiwgdmFsdWU6IGsgfTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnQubmV4dCh0aGlzLl92YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|