@mediusinc/mng-commons 0.8.0-rc.3 → 0.8.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/assets/i18n/en.json +3 -1
- package/esm2020/lib/api/models/builders/query-param.builder.mjs +58 -58
- package/esm2020/lib/api/models/filter-match-type.model.mjs +24 -24
- package/esm2020/lib/api/models/filter-param.model.mjs +32 -32
- package/esm2020/lib/api/models/index.mjs +8 -8
- package/esm2020/lib/api/models/mappers.mjs +12 -12
- package/esm2020/lib/api/models/query-mode.model.mjs +17 -17
- package/esm2020/lib/api/models/query-param.model.mjs +67 -67
- package/esm2020/lib/api/models/query-result.model.mjs +17 -17
- package/esm2020/lib/api/models/serialization.model.mjs +1 -1
- package/esm2020/lib/api/services/api.abstract.service.mjs +55 -55
- package/esm2020/lib/api/services/crud-api.abstract.service.mjs +66 -66
- package/esm2020/lib/api/services/get-all-api.abstract.service.mjs +22 -22
- package/esm2020/lib/api/services/index.mjs +3 -3
- package/esm2020/lib/api/utils/index.mjs +2 -2
- package/esm2020/lib/api/utils/medius-rest.util.mjs +151 -151
- package/esm2020/lib/api/utils/object-serializer.util.mjs +243 -243
- package/esm2020/lib/components/action/action.component.mjs +176 -176
- package/esm2020/lib/components/action/editor/action-editor.component.mjs +247 -230
- package/esm2020/lib/components/action/index.mjs +3 -3
- package/esm2020/lib/components/action/models/action-confirmation-service.model.mjs +1 -1
- package/esm2020/lib/components/action/models/action-execution.model.mjs +234 -234
- package/esm2020/lib/components/action/models/index.mjs +2 -2
- package/esm2020/lib/components/action/route/action-route.component.mjs +124 -124
- package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +268 -268
- package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +160 -160
- package/esm2020/lib/components/form/editor/form-editor.component.mjs +189 -189
- package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +18 -18
- package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +42 -42
- package/esm2020/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +24 -24
- package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +95 -95
- package/esm2020/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.mjs +16 -16
- package/esm2020/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +178 -178
- package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +155 -155
- package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +126 -126
- package/esm2020/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +16 -16
- package/esm2020/lib/components/form/formly/fields/index.mjs +9 -9
- package/esm2020/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +14 -14
- package/esm2020/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.mjs +14 -14
- package/esm2020/lib/components/form/formly/wrappers/index.mjs +2 -2
- package/esm2020/lib/components/form/index.mjs +3 -3
- package/esm2020/lib/components/form/models/form-editor.event.mjs +33 -33
- package/esm2020/lib/components/form/models/index.mjs +1 -1
- package/esm2020/lib/components/layout/breadcrumb.component.mjs +16 -16
- package/esm2020/lib/components/layout/footer.component.mjs +16 -16
- package/esm2020/lib/components/layout/index.mjs +6 -6
- package/esm2020/lib/components/layout/main-layout.component.mjs +51 -51
- package/esm2020/lib/components/layout/menu-item.component.mjs +216 -216
- package/esm2020/lib/components/layout/menu.component.mjs +19 -19
- package/esm2020/lib/components/layout/services/index.mjs +1 -1
- package/esm2020/lib/components/layout/services/main-layout.component.service.mjs +192 -192
- package/esm2020/lib/components/layout/topbar.component.mjs +57 -57
- package/esm2020/lib/components/tableview/index.mjs +6 -6
- package/esm2020/lib/components/tableview/models/index.mjs +1 -1
- package/esm2020/lib/components/tableview/models/table.event.mjs +15 -15
- package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +56 -56
- package/esm2020/lib/components/tableview/route/tableview-route.component.mjs +53 -53
- package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +101 -101
- package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +70 -70
- package/esm2020/lib/components/tableview/table/table.component.mjs +429 -429
- package/esm2020/lib/components/tableview/tableview.component.mjs +91 -91
- package/esm2020/lib/config/formly.config.mjs +180 -180
- package/esm2020/lib/config/index.mjs +1 -1
- package/esm2020/lib/config/models/index.mjs +1 -1
- package/esm2020/lib/config/models/mng-config.model.mjs +1 -1
- package/esm2020/lib/data-providers/base.data-provider.mjs +16 -16
- package/esm2020/lib/data-providers/editor.data-provider.mjs +36 -36
- package/esm2020/lib/data-providers/index.mjs +5 -5
- package/esm2020/lib/data-providers/lookup.data-provider.mjs +15 -15
- package/esm2020/lib/data-providers/table.data-provider.mjs +16 -16
- package/esm2020/lib/data-providers/tableview.data-provider.mjs +16 -16
- package/esm2020/lib/descriptors/action.descriptor.mjs +622 -622
- package/esm2020/lib/descriptors/column.descriptor.mjs +271 -271
- package/esm2020/lib/descriptors/editor.descriptor.mjs +154 -154
- package/esm2020/lib/descriptors/field-validation.descriptor.mjs +20 -20
- package/esm2020/lib/descriptors/field.descriptor.interface.mjs +1 -1
- package/esm2020/lib/descriptors/field.descriptor.mjs +863 -863
- package/esm2020/lib/descriptors/filter.descriptor.mjs +294 -294
- package/esm2020/lib/descriptors/index.mjs +11 -11
- package/esm2020/lib/descriptors/lookup.descriptor.mjs +1 -1
- package/esm2020/lib/descriptors/model.descriptor.mjs +33 -33
- package/esm2020/lib/descriptors/table.descriptor.mjs +213 -213
- package/esm2020/lib/descriptors/tableview.descriptor.mjs +134 -134
- package/esm2020/lib/directives/component.directive.mjs +43 -43
- package/esm2020/lib/directives/index.mjs +2 -2
- package/esm2020/lib/directives/template.directive.mjs +27 -27
- package/esm2020/lib/mng-commons.module.mjs +426 -426
- package/esm2020/lib/models/column-value.model.mjs +1 -1
- package/esm2020/lib/models/enum.model.mjs +1 -1
- package/esm2020/lib/models/error.model.mjs +1 -1
- package/esm2020/lib/models/index.mjs +6 -6
- package/esm2020/lib/models/menu.model.mjs +1 -1
- package/esm2020/lib/models/user.model.mjs +1 -1
- package/esm2020/lib/models/view-container.model.mjs +1 -1
- package/esm2020/lib/pipes/boolean.pipe.mjs +26 -26
- package/esm2020/lib/pipes/enum.pipe.mjs +24 -24
- package/esm2020/lib/pipes/i18n-property.pipe.mjs +17 -17
- package/esm2020/lib/pipes/index.mjs +5 -5
- package/esm2020/lib/pipes/json-path.pipe.mjs +79 -79
- package/esm2020/lib/pipes/link-formatter.pipe.mjs +38 -38
- package/esm2020/lib/router/index.mjs +1 -1
- package/esm2020/lib/router/models/index.mjs +1 -1
- package/esm2020/lib/router/models/router.model.mjs +1 -1
- package/esm2020/lib/router/route-builder.mjs +431 -431
- package/esm2020/lib/services/action-executor.service.mjs +535 -535
- package/esm2020/lib/services/commons.service.mjs +343 -343
- package/esm2020/lib/services/configuration.service.mjs +110 -110
- package/esm2020/lib/services/error-mapper.service.mjs +13 -13
- package/esm2020/lib/services/index.mjs +6 -6
- package/esm2020/lib/services/internal/commons-init.provider.mjs +3 -3
- package/esm2020/lib/services/internal/commons-init.service.mjs +43 -43
- package/esm2020/lib/services/internal/index.mjs +2 -2
- package/esm2020/lib/services/navigation.service.mjs +47 -47
- package/esm2020/lib/services/providers/config-service.provider.mjs +29 -29
- package/esm2020/lib/services/providers/formly-config.provider.mjs +30 -30
- package/esm2020/lib/services/providers/index.mjs +2 -2
- package/esm2020/lib/services/tokens/browser-storage.token.mjs +5 -5
- package/esm2020/lib/services/tokens/commons-init.token.mjs +2 -2
- package/esm2020/lib/services/tokens/default-setting.token.mjs +2 -2
- package/esm2020/lib/services/tokens/index.mjs +4 -4
- package/esm2020/lib/services/tokens/module-config.token.mjs +2 -2
- package/esm2020/lib/services/view-container.component.service.mjs +34 -34
- package/esm2020/lib/types/index.mjs +2 -2
- package/esm2020/lib/types/type.decorator.mjs +12 -12
- package/esm2020/lib/types/type.model.mjs +1 -1
- package/esm2020/lib/utils/action-data-provider.util.mjs +144 -144
- package/esm2020/lib/utils/editor-formly.util.mjs +209 -209
- package/esm2020/lib/utils/enum.util.mjs +81 -81
- package/esm2020/lib/utils/i18n.util.mjs +232 -232
- package/esm2020/lib/utils/index.mjs +7 -7
- package/esm2020/lib/utils/model.util.mjs +59 -59
- package/esm2020/lib/utils/notification.util.mjs +45 -45
- package/esm2020/lib/utils/route.util.mjs +23 -23
- package/esm2020/lib/utils/styles.util.mjs +40 -40
- package/esm2020/lib/utils/type.util.mjs +76 -76
- package/esm2020/mediusinc-mng-commons.mjs +4 -4
- package/esm2020/public-api.mjs +39 -39
- package/fesm2015/mediusinc-mng-commons.mjs +9908 -9891
- package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
- package/fesm2020/mediusinc-mng-commons.mjs +9774 -9757
- package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
- package/lib/api/models/builders/query-param.builder.d.ts +13 -13
- package/lib/api/models/filter-match-type.model.d.ts +23 -23
- package/lib/api/models/filter-param.model.d.ts +23 -23
- package/lib/api/models/index.d.ts +8 -8
- package/lib/api/models/mappers.d.ts +6 -6
- package/lib/api/models/query-mode.model.d.ts +16 -16
- package/lib/api/models/query-param.model.d.ts +31 -31
- package/lib/api/models/query-result.model.d.ts +23 -23
- package/lib/api/models/serialization.model.d.ts +8 -8
- package/lib/api/services/api.abstract.service.d.ts +24 -24
- package/lib/api/services/crud-api.abstract.service.d.ts +22 -22
- package/lib/api/services/get-all-api.abstract.service.d.ts +14 -14
- package/lib/api/services/index.d.ts +3 -3
- package/lib/api/utils/index.d.ts +2 -2
- package/lib/api/utils/medius-rest.util.d.ts +14 -14
- package/lib/api/utils/object-serializer.util.d.ts +33 -33
- package/lib/components/action/action.component.d.ts +68 -68
- package/lib/components/action/editor/action-editor.component.d.ts +64 -62
- package/lib/components/action/index.d.ts +3 -3
- package/lib/components/action/models/action-confirmation-service.model.d.ts +6 -6
- package/lib/components/action/models/action-execution.model.d.ts +129 -129
- package/lib/components/action/models/index.d.ts +2 -2
- package/lib/components/action/route/action-route.component.d.ts +31 -31
- package/lib/components/form/autocomplete/autocomplete.component.d.ts +53 -53
- package/lib/components/form/dropdown/dropdown.component.d.ts +44 -44
- package/lib/components/form/editor/form-editor.component.d.ts +45 -45
- package/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +12 -12
- package/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +14 -14
- package/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +12 -12
- package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +21 -21
- package/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.d.ts +6 -6
- package/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +44 -44
- package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +22 -22
- package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +37 -37
- package/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +6 -6
- package/lib/components/form/formly/fields/index.d.ts +9 -9
- package/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +6 -6
- package/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.d.ts +6 -6
- package/lib/components/form/formly/wrappers/index.d.ts +2 -2
- package/lib/components/form/index.d.ts +3 -3
- package/lib/components/form/models/form-editor.event.d.ts +37 -37
- package/lib/components/form/models/index.d.ts +1 -1
- package/lib/components/layout/breadcrumb.component.d.ts +8 -8
- package/lib/components/layout/footer.component.d.ts +9 -9
- package/lib/components/layout/index.d.ts +6 -6
- package/lib/components/layout/main-layout.component.d.ts +20 -20
- package/lib/components/layout/menu-item.component.d.ts +37 -37
- package/lib/components/layout/menu.component.d.ts +10 -10
- package/lib/components/layout/services/index.d.ts +1 -1
- package/lib/components/layout/services/main-layout.component.service.d.ts +65 -65
- package/lib/components/layout/topbar.component.d.ts +24 -24
- package/lib/components/tableview/index.d.ts +6 -6
- package/lib/components/tableview/models/index.d.ts +1 -1
- package/lib/components/tableview/models/table.event.d.ts +17 -17
- package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +20 -20
- package/lib/components/tableview/route/tableview-route.component.d.ts +18 -18
- package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +31 -31
- package/lib/components/tableview/table/column-value/column-value.component.d.ts +28 -28
- package/lib/components/tableview/table/table.component.d.ts +104 -104
- package/lib/components/tableview/tableview.component.d.ts +41 -41
- package/lib/config/formly.config.d.ts +15 -15
- package/lib/config/index.d.ts +1 -1
- package/lib/config/models/index.d.ts +1 -1
- package/lib/config/models/mng-config.model.d.ts +34 -34
- package/lib/data-providers/base.data-provider.d.ts +14 -14
- package/lib/data-providers/editor.data-provider.d.ts +25 -25
- package/lib/data-providers/index.d.ts +5 -5
- package/lib/data-providers/lookup.data-provider.d.ts +14 -14
- package/lib/data-providers/table.data-provider.d.ts +14 -14
- package/lib/data-providers/tableview.data-provider.d.ts +15 -15
- package/lib/descriptors/action.descriptor.d.ts +277 -277
- package/lib/descriptors/column.descriptor.d.ts +91 -91
- package/lib/descriptors/editor.descriptor.d.ts +44 -44
- package/lib/descriptors/field-validation.descriptor.d.ts +18 -18
- package/lib/descriptors/field.descriptor.d.ts +342 -342
- package/lib/descriptors/field.descriptor.interface.d.ts +9 -9
- package/lib/descriptors/filter.descriptor.d.ts +127 -127
- package/lib/descriptors/index.d.ts +11 -11
- package/lib/descriptors/lookup.descriptor.d.ts +17 -17
- package/lib/descriptors/model.descriptor.d.ts +15 -15
- package/lib/descriptors/table.descriptor.d.ts +80 -80
- package/lib/descriptors/tableview.descriptor.d.ts +42 -42
- package/lib/directives/component.directive.d.ts +16 -16
- package/lib/directives/index.d.ts +2 -2
- package/lib/directives/template.directive.d.ts +13 -13
- package/lib/mng-commons.module.d.ts +86 -86
- package/lib/models/column-value.model.d.ts +4 -4
- package/lib/models/enum.model.d.ts +6 -6
- package/lib/models/error.model.d.ts +14 -14
- package/lib/models/index.d.ts +6 -6
- package/lib/models/menu.model.d.ts +25 -25
- package/lib/models/user.model.d.ts +8 -8
- package/lib/models/view-container.model.d.ts +6 -6
- package/lib/pipes/boolean.pipe.d.ts +7 -7
- package/lib/pipes/enum.pipe.d.ts +8 -8
- package/lib/pipes/i18n-property.pipe.d.ts +8 -8
- package/lib/pipes/index.d.ts +5 -5
- package/lib/pipes/json-path.pipe.d.ts +13 -13
- package/lib/pipes/link-formatter.pipe.d.ts +11 -11
- package/lib/router/index.d.ts +1 -1
- package/lib/router/models/index.d.ts +1 -1
- package/lib/router/models/router.model.d.ts +22 -22
- package/lib/router/route-builder.d.ts +86 -86
- package/lib/services/action-executor.service.d.ts +149 -149
- package/lib/services/commons.service.d.ts +72 -72
- package/lib/services/configuration.service.d.ts +36 -36
- package/lib/services/error-mapper.service.d.ts +7 -7
- package/lib/services/index.d.ts +6 -6
- package/lib/services/internal/commons-init.provider.d.ts +3 -3
- package/lib/services/internal/commons-init.service.d.ts +16 -16
- package/lib/services/internal/index.d.ts +2 -2
- package/lib/services/navigation.service.d.ts +14 -14
- package/lib/services/providers/config-service.provider.d.ts +6 -6
- package/lib/services/providers/formly-config.provider.d.ts +4 -4
- package/lib/services/providers/index.d.ts +2 -2
- package/lib/services/tokens/browser-storage.token.d.ts +2 -2
- package/lib/services/tokens/commons-init.token.d.ts +3 -3
- package/lib/services/tokens/default-setting.token.d.ts +2 -2
- package/lib/services/tokens/index.d.ts +4 -4
- package/lib/services/tokens/module-config.token.d.ts +3 -3
- package/lib/services/view-container.component.service.d.ts +22 -22
- package/lib/types/index.d.ts +2 -2
- package/lib/types/type.decorator.d.ts +4 -4
- package/lib/types/type.model.d.ts +20 -20
- package/lib/utils/action-data-provider.util.d.ts +20 -20
- package/lib/utils/editor-formly.util.d.ts +10 -10
- package/lib/utils/enum.util.d.ts +50 -50
- package/lib/utils/i18n.util.d.ts +56 -56
- package/lib/utils/index.d.ts +7 -7
- package/lib/utils/model.util.d.ts +8 -8
- package/lib/utils/notification.util.d.ts +11 -11
- package/lib/utils/route.util.d.ts +4 -4
- package/lib/utils/styles.util.d.ts +14 -14
- package/lib/utils/type.util.d.ts +36 -36
- package/mediusinc-mng-commons.d.ts +5 -5
- package/package.json +3 -3
- package/public-api.d.ts +28 -28
- package/mediusinc-mng-commons-0.8.0-rc.3.tgz +0 -0
|
@@ -1,295 +1,295 @@
|
|
|
1
|
-
import { of } from 'rxjs';
|
|
2
|
-
import { LookupDataProvider } from '../data-providers';
|
|
3
|
-
import { EnumUtil, ModelUtil, TypeUtil } from '../utils';
|
|
4
|
-
export class FilterDescriptor {
|
|
5
|
-
constructor(property) {
|
|
6
|
-
this._filterType = FilterDescriptor.TypeEnum.String;
|
|
7
|
-
this._matchModes = null;
|
|
8
|
-
this._numberUseGrouping = true;
|
|
9
|
-
this._datePickerShowTime = false;
|
|
10
|
-
this._className = '';
|
|
11
|
-
this._columnClassName = '';
|
|
12
|
-
this._columnWidth = null;
|
|
13
|
-
this._columnMinWidth = null;
|
|
14
|
-
this._property = property;
|
|
15
|
-
}
|
|
16
|
-
get filterType() {
|
|
17
|
-
return this._filterType;
|
|
18
|
-
}
|
|
19
|
-
get filterProperty() {
|
|
20
|
-
return this._filterProperty;
|
|
21
|
-
}
|
|
22
|
-
get matchModes() {
|
|
23
|
-
return this._matchModes;
|
|
24
|
-
}
|
|
25
|
-
get numberMinFractionDigits() {
|
|
26
|
-
return this._numberMinFractionDigits;
|
|
27
|
-
}
|
|
28
|
-
get numberMaxFractionDigits() {
|
|
29
|
-
return this._numberMaxFractionDigits;
|
|
30
|
-
}
|
|
31
|
-
get numberUseGrouping() {
|
|
32
|
-
return this._numberUseGrouping;
|
|
33
|
-
}
|
|
34
|
-
get datePickerFormat() {
|
|
35
|
-
return this._datePickerFormat;
|
|
36
|
-
}
|
|
37
|
-
get datePickerShowTime() {
|
|
38
|
-
return this._datePickerShowTime;
|
|
39
|
-
}
|
|
40
|
-
get placeholder() {
|
|
41
|
-
return this._placeholder;
|
|
42
|
-
}
|
|
43
|
-
get className() {
|
|
44
|
-
return this._className;
|
|
45
|
-
}
|
|
46
|
-
get columnClassName() {
|
|
47
|
-
return this._columnClassName;
|
|
48
|
-
}
|
|
49
|
-
get columnWidth() {
|
|
50
|
-
return this._columnWidth;
|
|
51
|
-
}
|
|
52
|
-
get columnMinWidth() {
|
|
53
|
-
return this._columnMinWidth;
|
|
54
|
-
}
|
|
55
|
-
get property() {
|
|
56
|
-
return this._property;
|
|
57
|
-
}
|
|
58
|
-
asFilterType(filterType) {
|
|
59
|
-
this._filterType = filterType;
|
|
60
|
-
return this;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Sets different filter property name instead of default property. Use this if API requires different property provided to perform correct filter.
|
|
64
|
-
* @param filterProperty
|
|
65
|
-
*/
|
|
66
|
-
withFilterProperty(filterProperty) {
|
|
67
|
-
this._filterProperty = filterProperty;
|
|
68
|
-
return this;
|
|
69
|
-
}
|
|
70
|
-
withNumberFractions(min, max) {
|
|
71
|
-
this._numberMinFractionDigits = min;
|
|
72
|
-
this._numberMaxFractionDigits = max;
|
|
73
|
-
return this;
|
|
74
|
-
}
|
|
75
|
-
withNumberGrouping(useGrouping = true) {
|
|
76
|
-
this._numberUseGrouping = useGrouping;
|
|
77
|
-
return this;
|
|
78
|
-
}
|
|
79
|
-
withDateFormat(format, showTime = false) {
|
|
80
|
-
this._datePickerFormat = format;
|
|
81
|
-
this._datePickerShowTime = showTime;
|
|
82
|
-
return this;
|
|
83
|
-
}
|
|
84
|
-
withPlaceholder(placeholder) {
|
|
85
|
-
this._placeholder = placeholder;
|
|
86
|
-
return this;
|
|
87
|
-
}
|
|
88
|
-
withClassName(className) {
|
|
89
|
-
this._className = className;
|
|
90
|
-
return this;
|
|
91
|
-
}
|
|
92
|
-
withColumnClassName(className) {
|
|
93
|
-
this._columnClassName = className;
|
|
94
|
-
return this;
|
|
95
|
-
}
|
|
96
|
-
withColumnWidth(width, minWidth) {
|
|
97
|
-
this._columnWidth = width ?? null;
|
|
98
|
-
this._columnMinWidth = minWidth ?? null;
|
|
99
|
-
return this;
|
|
100
|
-
}
|
|
101
|
-
withMatchModes(matchModes) {
|
|
102
|
-
this._matchModes = matchModes;
|
|
103
|
-
return this;
|
|
104
|
-
}
|
|
105
|
-
copy() {
|
|
106
|
-
const descriptor = new FilterDescriptor(this._property);
|
|
107
|
-
this.copyFieldsTo(descriptor);
|
|
108
|
-
return descriptor;
|
|
109
|
-
}
|
|
110
|
-
copyFieldsTo(descriptor) {
|
|
111
|
-
descriptor._filterType = this._filterType;
|
|
112
|
-
descriptor._filterProperty = this._filterProperty;
|
|
113
|
-
descriptor._numberMinFractionDigits = this._numberMinFractionDigits;
|
|
114
|
-
descriptor._numberMaxFractionDigits = this._numberMaxFractionDigits;
|
|
115
|
-
descriptor._numberUseGrouping = this._numberUseGrouping;
|
|
116
|
-
descriptor._datePickerFormat = this._datePickerFormat;
|
|
117
|
-
descriptor._datePickerShowTime = this._datePickerShowTime;
|
|
118
|
-
descriptor._placeholder = this._placeholder;
|
|
119
|
-
descriptor._className = this._className;
|
|
120
|
-
descriptor._columnWidth = this._columnWidth;
|
|
121
|
-
descriptor._columnMinWidth = this._columnMinWidth;
|
|
122
|
-
descriptor._columnClassName = this._columnClassName;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
(function (FilterDescriptor) {
|
|
126
|
-
let TypeEnum;
|
|
127
|
-
(function (TypeEnum) {
|
|
128
|
-
TypeEnum[TypeEnum["String"] = 0] = "String";
|
|
129
|
-
TypeEnum[TypeEnum["Number"] = 1] = "Number";
|
|
130
|
-
TypeEnum[TypeEnum["Boolean"] = 2] = "Boolean";
|
|
131
|
-
TypeEnum[TypeEnum["Date"] = 3] = "Date";
|
|
132
|
-
TypeEnum[TypeEnum["Lookup"] = 4] = "Lookup";
|
|
133
|
-
TypeEnum[TypeEnum["LookupEnum"] = 5] = "LookupEnum";
|
|
134
|
-
})(TypeEnum = FilterDescriptor.TypeEnum || (FilterDescriptor.TypeEnum = {}));
|
|
135
|
-
let MatchModeEnum;
|
|
136
|
-
(function (MatchModeEnum) {
|
|
137
|
-
MatchModeEnum["StartsWith"] = "startsWith";
|
|
138
|
-
MatchModeEnum["Contains"] = "contains";
|
|
139
|
-
MatchModeEnum["EndsWith"] = "endsWith";
|
|
140
|
-
MatchModeEnum["Equals"] = "equals";
|
|
141
|
-
MatchModeEnum["NotEquals"] = "notEquals";
|
|
142
|
-
MatchModeEnum["In"] = "in";
|
|
143
|
-
MatchModeEnum["LessThan"] = "lt";
|
|
144
|
-
MatchModeEnum["GreaterThan"] = "gt";
|
|
145
|
-
MatchModeEnum["Between"] = "between";
|
|
146
|
-
MatchModeEnum["DateIs"] = "dateIs";
|
|
147
|
-
MatchModeEnum["DateIsNot"] = "dateIsNot";
|
|
148
|
-
MatchModeEnum["DateBefore"] = "dateBefore";
|
|
149
|
-
MatchModeEnum["DateAfter"] = "dateAfter";
|
|
150
|
-
})(MatchModeEnum = FilterDescriptor.MatchModeEnum || (FilterDescriptor.MatchModeEnum = {}));
|
|
151
|
-
})(FilterDescriptor || (FilterDescriptor = {}));
|
|
152
|
-
export class FilterLookupDescriptor extends FilterDescriptor {
|
|
153
|
-
constructor(property, modelType) {
|
|
154
|
-
super(property);
|
|
155
|
-
this._modelType = null;
|
|
156
|
-
this._lookupType = FilterLookupDescriptor.LookupTypeEnum.Dropdown;
|
|
157
|
-
this._itemsLabelTranslate = false;
|
|
158
|
-
this._multiselect = false;
|
|
159
|
-
this._dropdownClassName = 'mng-filter-lookup-dropdown';
|
|
160
|
-
this._autocompleteOpenOnFocus = false;
|
|
161
|
-
this._autocompleteInlineSearch = false;
|
|
162
|
-
this._modelType = modelType;
|
|
163
|
-
this._filterType = FilterDescriptor.TypeEnum.Lookup;
|
|
164
|
-
ModelUtil.trySetLookupItemsProperties(this);
|
|
165
|
-
}
|
|
166
|
-
get lookupType() {
|
|
167
|
-
return this._lookupType;
|
|
168
|
-
}
|
|
169
|
-
get dataProvider() {
|
|
170
|
-
return this._dataProvider;
|
|
171
|
-
}
|
|
172
|
-
get itemsLabelProperty() {
|
|
173
|
-
return this._itemsLabelProperty;
|
|
174
|
-
}
|
|
175
|
-
get itemsLabelTranslate() {
|
|
176
|
-
return this._itemsLabelTranslate;
|
|
177
|
-
}
|
|
178
|
-
get itemsValueProperty() {
|
|
179
|
-
return this._itemsValueProperty;
|
|
180
|
-
}
|
|
181
|
-
get dataKeyProperty() {
|
|
182
|
-
return this._dataKeyProperty;
|
|
183
|
-
}
|
|
184
|
-
get multiselect() {
|
|
185
|
-
return this._multiselect;
|
|
186
|
-
}
|
|
187
|
-
get autocompleteOpenOnFocus() {
|
|
188
|
-
return this._autocompleteOpenOnFocus;
|
|
189
|
-
}
|
|
190
|
-
get autocompleteInlineSearch() {
|
|
191
|
-
return this._autocompleteInlineSearch;
|
|
192
|
-
}
|
|
193
|
-
get dropdownClassName() {
|
|
194
|
-
return this._dropdownClassName;
|
|
195
|
-
}
|
|
196
|
-
get modelType() {
|
|
197
|
-
return this._modelType;
|
|
198
|
-
}
|
|
199
|
-
withItemsLabelProperty(itemsLabelProperty, translate = false) {
|
|
200
|
-
this._itemsLabelProperty = itemsLabelProperty;
|
|
201
|
-
this._itemsLabelTranslate = translate;
|
|
202
|
-
return this;
|
|
203
|
-
}
|
|
204
|
-
withItemsValueProperty(itemsValueProperty) {
|
|
205
|
-
this._itemsValueProperty = itemsValueProperty;
|
|
206
|
-
this._dataKeyProperty = itemsValueProperty;
|
|
207
|
-
return this;
|
|
208
|
-
}
|
|
209
|
-
withDataKeyProperty(dataKeyProperty) {
|
|
210
|
-
this._dataKeyProperty = dataKeyProperty;
|
|
211
|
-
this._itemsValueProperty = dataKeyProperty;
|
|
212
|
-
return this;
|
|
213
|
-
}
|
|
214
|
-
withLookup(lookup, serviceType) {
|
|
215
|
-
const dataProvider = new LookupDataProvider(this._modelType);
|
|
216
|
-
if (serviceType) {
|
|
217
|
-
dataProvider.withServiceType(serviceType);
|
|
218
|
-
}
|
|
219
|
-
dataProvider.withLookup(lookup);
|
|
220
|
-
this._dataProvider = dataProvider;
|
|
221
|
-
return this;
|
|
222
|
-
}
|
|
223
|
-
withLookupDataProvider(dataProvider) {
|
|
224
|
-
this._dataProvider = dataProvider;
|
|
225
|
-
return this;
|
|
226
|
-
}
|
|
227
|
-
withMultiselect(multiselect = true) {
|
|
228
|
-
this._multiselect = multiselect;
|
|
229
|
-
return this;
|
|
230
|
-
}
|
|
231
|
-
withDropdownClassName(dropdownClassName) {
|
|
232
|
-
this._dropdownClassName = dropdownClassName;
|
|
233
|
-
return this;
|
|
234
|
-
}
|
|
235
|
-
asAutocomplete(openOnFocus = false, inlineSearch = false) {
|
|
236
|
-
this._lookupType = FilterLookupDescriptor.LookupTypeEnum.Autocomplete;
|
|
237
|
-
this._autocompleteOpenOnFocus = openOnFocus;
|
|
238
|
-
this._autocompleteInlineSearch = inlineSearch;
|
|
239
|
-
return this;
|
|
240
|
-
}
|
|
241
|
-
copy() {
|
|
242
|
-
const descriptor = new FilterLookupDescriptor(this._property, this._modelType);
|
|
243
|
-
this.copyFieldsTo(descriptor);
|
|
244
|
-
return descriptor;
|
|
245
|
-
}
|
|
246
|
-
copyFieldsTo(filter) {
|
|
247
|
-
super.copyFieldsTo(filter);
|
|
248
|
-
filter._dataProvider = this._dataProvider;
|
|
249
|
-
filter._lookupType = this._lookupType;
|
|
250
|
-
filter._itemsLabelProperty = this._itemsLabelProperty;
|
|
251
|
-
filter._itemsLabelTranslate = this._itemsLabelTranslate;
|
|
252
|
-
filter._itemsValueProperty = this._itemsValueProperty;
|
|
253
|
-
filter._dataKeyProperty = this._dataKeyProperty;
|
|
254
|
-
filter._multiselect = this._multiselect;
|
|
255
|
-
filter._dropdownClassName = this._dropdownClassName;
|
|
256
|
-
filter._autocompleteOpenOnFocus = this._autocompleteOpenOnFocus;
|
|
257
|
-
filter._autocompleteInlineSearch = this._autocompleteInlineSearch;
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
export class FilterLookupEnumDescriptor extends FilterLookupDescriptor {
|
|
261
|
-
constructor(property, enumType, options, nameAsValue = false, optionsTitlePath) {
|
|
262
|
-
super(property, null);
|
|
263
|
-
this._enumType = enumType;
|
|
264
|
-
if (typeof optionsTitlePath === 'undefined') {
|
|
265
|
-
optionsTitlePath = TypeUtil.findEnumName(enumType);
|
|
266
|
-
}
|
|
267
|
-
const optionEnumValues = Array.isArray(options)
|
|
268
|
-
? EnumUtil.fromValuesAsEnumValueArray(enumType, options, nameAsValue, optionsTitlePath ?? undefined)
|
|
269
|
-
: EnumUtil.fromConstantsAsEnumValueArray(enumType, nameAsValue, optionsTitlePath ?? undefined);
|
|
270
|
-
const dataProvider = new LookupDataProvider(null).withLookup(() => of(optionEnumValues));
|
|
271
|
-
this.withLookupDataProvider(dataProvider);
|
|
272
|
-
this.withItemsLabelProperty('title', optionsTitlePath !== null);
|
|
273
|
-
this.withItemsValueProperty('value');
|
|
274
|
-
}
|
|
275
|
-
get enumType() {
|
|
276
|
-
return this._enumType;
|
|
277
|
-
}
|
|
278
|
-
asAutocomplete(openOnFocus = true) {
|
|
279
|
-
super.asAutocomplete(openOnFocus, true);
|
|
280
|
-
return this;
|
|
281
|
-
}
|
|
282
|
-
copy() {
|
|
283
|
-
const field = new FilterLookupEnumDescriptor(this._property, this._enumType, []);
|
|
284
|
-
this.copyFieldsTo(field);
|
|
285
|
-
return field;
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
(function (FilterLookupDescriptor) {
|
|
289
|
-
let LookupTypeEnum;
|
|
290
|
-
(function (LookupTypeEnum) {
|
|
291
|
-
LookupTypeEnum[LookupTypeEnum["Dropdown"] = 0] = "Dropdown";
|
|
292
|
-
LookupTypeEnum[LookupTypeEnum["Autocomplete"] = 1] = "Autocomplete";
|
|
293
|
-
})(LookupTypeEnum = FilterLookupDescriptor.LookupTypeEnum || (FilterLookupDescriptor.LookupTypeEnum = {}));
|
|
294
|
-
})(FilterLookupDescriptor || (FilterLookupDescriptor = {}));
|
|
1
|
+
import { of } from 'rxjs';
|
|
2
|
+
import { LookupDataProvider } from '../data-providers';
|
|
3
|
+
import { EnumUtil, ModelUtil, TypeUtil } from '../utils';
|
|
4
|
+
export class FilterDescriptor {
|
|
5
|
+
constructor(property) {
|
|
6
|
+
this._filterType = FilterDescriptor.TypeEnum.String;
|
|
7
|
+
this._matchModes = null;
|
|
8
|
+
this._numberUseGrouping = true;
|
|
9
|
+
this._datePickerShowTime = false;
|
|
10
|
+
this._className = '';
|
|
11
|
+
this._columnClassName = '';
|
|
12
|
+
this._columnWidth = null;
|
|
13
|
+
this._columnMinWidth = null;
|
|
14
|
+
this._property = property;
|
|
15
|
+
}
|
|
16
|
+
get filterType() {
|
|
17
|
+
return this._filterType;
|
|
18
|
+
}
|
|
19
|
+
get filterProperty() {
|
|
20
|
+
return this._filterProperty;
|
|
21
|
+
}
|
|
22
|
+
get matchModes() {
|
|
23
|
+
return this._matchModes;
|
|
24
|
+
}
|
|
25
|
+
get numberMinFractionDigits() {
|
|
26
|
+
return this._numberMinFractionDigits;
|
|
27
|
+
}
|
|
28
|
+
get numberMaxFractionDigits() {
|
|
29
|
+
return this._numberMaxFractionDigits;
|
|
30
|
+
}
|
|
31
|
+
get numberUseGrouping() {
|
|
32
|
+
return this._numberUseGrouping;
|
|
33
|
+
}
|
|
34
|
+
get datePickerFormat() {
|
|
35
|
+
return this._datePickerFormat;
|
|
36
|
+
}
|
|
37
|
+
get datePickerShowTime() {
|
|
38
|
+
return this._datePickerShowTime;
|
|
39
|
+
}
|
|
40
|
+
get placeholder() {
|
|
41
|
+
return this._placeholder;
|
|
42
|
+
}
|
|
43
|
+
get className() {
|
|
44
|
+
return this._className;
|
|
45
|
+
}
|
|
46
|
+
get columnClassName() {
|
|
47
|
+
return this._columnClassName;
|
|
48
|
+
}
|
|
49
|
+
get columnWidth() {
|
|
50
|
+
return this._columnWidth;
|
|
51
|
+
}
|
|
52
|
+
get columnMinWidth() {
|
|
53
|
+
return this._columnMinWidth;
|
|
54
|
+
}
|
|
55
|
+
get property() {
|
|
56
|
+
return this._property;
|
|
57
|
+
}
|
|
58
|
+
asFilterType(filterType) {
|
|
59
|
+
this._filterType = filterType;
|
|
60
|
+
return this;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Sets different filter property name instead of default property. Use this if API requires different property provided to perform correct filter.
|
|
64
|
+
* @param filterProperty
|
|
65
|
+
*/
|
|
66
|
+
withFilterProperty(filterProperty) {
|
|
67
|
+
this._filterProperty = filterProperty;
|
|
68
|
+
return this;
|
|
69
|
+
}
|
|
70
|
+
withNumberFractions(min, max) {
|
|
71
|
+
this._numberMinFractionDigits = min;
|
|
72
|
+
this._numberMaxFractionDigits = max;
|
|
73
|
+
return this;
|
|
74
|
+
}
|
|
75
|
+
withNumberGrouping(useGrouping = true) {
|
|
76
|
+
this._numberUseGrouping = useGrouping;
|
|
77
|
+
return this;
|
|
78
|
+
}
|
|
79
|
+
withDateFormat(format, showTime = false) {
|
|
80
|
+
this._datePickerFormat = format;
|
|
81
|
+
this._datePickerShowTime = showTime;
|
|
82
|
+
return this;
|
|
83
|
+
}
|
|
84
|
+
withPlaceholder(placeholder) {
|
|
85
|
+
this._placeholder = placeholder;
|
|
86
|
+
return this;
|
|
87
|
+
}
|
|
88
|
+
withClassName(className) {
|
|
89
|
+
this._className = className;
|
|
90
|
+
return this;
|
|
91
|
+
}
|
|
92
|
+
withColumnClassName(className) {
|
|
93
|
+
this._columnClassName = className;
|
|
94
|
+
return this;
|
|
95
|
+
}
|
|
96
|
+
withColumnWidth(width, minWidth) {
|
|
97
|
+
this._columnWidth = width ?? null;
|
|
98
|
+
this._columnMinWidth = minWidth ?? null;
|
|
99
|
+
return this;
|
|
100
|
+
}
|
|
101
|
+
withMatchModes(matchModes) {
|
|
102
|
+
this._matchModes = matchModes;
|
|
103
|
+
return this;
|
|
104
|
+
}
|
|
105
|
+
copy() {
|
|
106
|
+
const descriptor = new FilterDescriptor(this._property);
|
|
107
|
+
this.copyFieldsTo(descriptor);
|
|
108
|
+
return descriptor;
|
|
109
|
+
}
|
|
110
|
+
copyFieldsTo(descriptor) {
|
|
111
|
+
descriptor._filterType = this._filterType;
|
|
112
|
+
descriptor._filterProperty = this._filterProperty;
|
|
113
|
+
descriptor._numberMinFractionDigits = this._numberMinFractionDigits;
|
|
114
|
+
descriptor._numberMaxFractionDigits = this._numberMaxFractionDigits;
|
|
115
|
+
descriptor._numberUseGrouping = this._numberUseGrouping;
|
|
116
|
+
descriptor._datePickerFormat = this._datePickerFormat;
|
|
117
|
+
descriptor._datePickerShowTime = this._datePickerShowTime;
|
|
118
|
+
descriptor._placeholder = this._placeholder;
|
|
119
|
+
descriptor._className = this._className;
|
|
120
|
+
descriptor._columnWidth = this._columnWidth;
|
|
121
|
+
descriptor._columnMinWidth = this._columnMinWidth;
|
|
122
|
+
descriptor._columnClassName = this._columnClassName;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
(function (FilterDescriptor) {
|
|
126
|
+
let TypeEnum;
|
|
127
|
+
(function (TypeEnum) {
|
|
128
|
+
TypeEnum[TypeEnum["String"] = 0] = "String";
|
|
129
|
+
TypeEnum[TypeEnum["Number"] = 1] = "Number";
|
|
130
|
+
TypeEnum[TypeEnum["Boolean"] = 2] = "Boolean";
|
|
131
|
+
TypeEnum[TypeEnum["Date"] = 3] = "Date";
|
|
132
|
+
TypeEnum[TypeEnum["Lookup"] = 4] = "Lookup";
|
|
133
|
+
TypeEnum[TypeEnum["LookupEnum"] = 5] = "LookupEnum";
|
|
134
|
+
})(TypeEnum = FilterDescriptor.TypeEnum || (FilterDescriptor.TypeEnum = {}));
|
|
135
|
+
let MatchModeEnum;
|
|
136
|
+
(function (MatchModeEnum) {
|
|
137
|
+
MatchModeEnum["StartsWith"] = "startsWith";
|
|
138
|
+
MatchModeEnum["Contains"] = "contains";
|
|
139
|
+
MatchModeEnum["EndsWith"] = "endsWith";
|
|
140
|
+
MatchModeEnum["Equals"] = "equals";
|
|
141
|
+
MatchModeEnum["NotEquals"] = "notEquals";
|
|
142
|
+
MatchModeEnum["In"] = "in";
|
|
143
|
+
MatchModeEnum["LessThan"] = "lt";
|
|
144
|
+
MatchModeEnum["GreaterThan"] = "gt";
|
|
145
|
+
MatchModeEnum["Between"] = "between";
|
|
146
|
+
MatchModeEnum["DateIs"] = "dateIs";
|
|
147
|
+
MatchModeEnum["DateIsNot"] = "dateIsNot";
|
|
148
|
+
MatchModeEnum["DateBefore"] = "dateBefore";
|
|
149
|
+
MatchModeEnum["DateAfter"] = "dateAfter";
|
|
150
|
+
})(MatchModeEnum = FilterDescriptor.MatchModeEnum || (FilterDescriptor.MatchModeEnum = {}));
|
|
151
|
+
})(FilterDescriptor || (FilterDescriptor = {}));
|
|
152
|
+
export class FilterLookupDescriptor extends FilterDescriptor {
|
|
153
|
+
constructor(property, modelType) {
|
|
154
|
+
super(property);
|
|
155
|
+
this._modelType = null;
|
|
156
|
+
this._lookupType = FilterLookupDescriptor.LookupTypeEnum.Dropdown;
|
|
157
|
+
this._itemsLabelTranslate = false;
|
|
158
|
+
this._multiselect = false;
|
|
159
|
+
this._dropdownClassName = 'mng-filter-lookup-dropdown';
|
|
160
|
+
this._autocompleteOpenOnFocus = false;
|
|
161
|
+
this._autocompleteInlineSearch = false;
|
|
162
|
+
this._modelType = modelType;
|
|
163
|
+
this._filterType = FilterDescriptor.TypeEnum.Lookup;
|
|
164
|
+
ModelUtil.trySetLookupItemsProperties(this);
|
|
165
|
+
}
|
|
166
|
+
get lookupType() {
|
|
167
|
+
return this._lookupType;
|
|
168
|
+
}
|
|
169
|
+
get dataProvider() {
|
|
170
|
+
return this._dataProvider;
|
|
171
|
+
}
|
|
172
|
+
get itemsLabelProperty() {
|
|
173
|
+
return this._itemsLabelProperty;
|
|
174
|
+
}
|
|
175
|
+
get itemsLabelTranslate() {
|
|
176
|
+
return this._itemsLabelTranslate;
|
|
177
|
+
}
|
|
178
|
+
get itemsValueProperty() {
|
|
179
|
+
return this._itemsValueProperty;
|
|
180
|
+
}
|
|
181
|
+
get dataKeyProperty() {
|
|
182
|
+
return this._dataKeyProperty;
|
|
183
|
+
}
|
|
184
|
+
get multiselect() {
|
|
185
|
+
return this._multiselect;
|
|
186
|
+
}
|
|
187
|
+
get autocompleteOpenOnFocus() {
|
|
188
|
+
return this._autocompleteOpenOnFocus;
|
|
189
|
+
}
|
|
190
|
+
get autocompleteInlineSearch() {
|
|
191
|
+
return this._autocompleteInlineSearch;
|
|
192
|
+
}
|
|
193
|
+
get dropdownClassName() {
|
|
194
|
+
return this._dropdownClassName;
|
|
195
|
+
}
|
|
196
|
+
get modelType() {
|
|
197
|
+
return this._modelType;
|
|
198
|
+
}
|
|
199
|
+
withItemsLabelProperty(itemsLabelProperty, translate = false) {
|
|
200
|
+
this._itemsLabelProperty = itemsLabelProperty;
|
|
201
|
+
this._itemsLabelTranslate = translate;
|
|
202
|
+
return this;
|
|
203
|
+
}
|
|
204
|
+
withItemsValueProperty(itemsValueProperty) {
|
|
205
|
+
this._itemsValueProperty = itemsValueProperty;
|
|
206
|
+
this._dataKeyProperty = itemsValueProperty;
|
|
207
|
+
return this;
|
|
208
|
+
}
|
|
209
|
+
withDataKeyProperty(dataKeyProperty) {
|
|
210
|
+
this._dataKeyProperty = dataKeyProperty;
|
|
211
|
+
this._itemsValueProperty = dataKeyProperty;
|
|
212
|
+
return this;
|
|
213
|
+
}
|
|
214
|
+
withLookup(lookup, serviceType) {
|
|
215
|
+
const dataProvider = new LookupDataProvider(this._modelType);
|
|
216
|
+
if (serviceType) {
|
|
217
|
+
dataProvider.withServiceType(serviceType);
|
|
218
|
+
}
|
|
219
|
+
dataProvider.withLookup(lookup);
|
|
220
|
+
this._dataProvider = dataProvider;
|
|
221
|
+
return this;
|
|
222
|
+
}
|
|
223
|
+
withLookupDataProvider(dataProvider) {
|
|
224
|
+
this._dataProvider = dataProvider;
|
|
225
|
+
return this;
|
|
226
|
+
}
|
|
227
|
+
withMultiselect(multiselect = true) {
|
|
228
|
+
this._multiselect = multiselect;
|
|
229
|
+
return this;
|
|
230
|
+
}
|
|
231
|
+
withDropdownClassName(dropdownClassName) {
|
|
232
|
+
this._dropdownClassName = dropdownClassName;
|
|
233
|
+
return this;
|
|
234
|
+
}
|
|
235
|
+
asAutocomplete(openOnFocus = false, inlineSearch = false) {
|
|
236
|
+
this._lookupType = FilterLookupDescriptor.LookupTypeEnum.Autocomplete;
|
|
237
|
+
this._autocompleteOpenOnFocus = openOnFocus;
|
|
238
|
+
this._autocompleteInlineSearch = inlineSearch;
|
|
239
|
+
return this;
|
|
240
|
+
}
|
|
241
|
+
copy() {
|
|
242
|
+
const descriptor = new FilterLookupDescriptor(this._property, this._modelType);
|
|
243
|
+
this.copyFieldsTo(descriptor);
|
|
244
|
+
return descriptor;
|
|
245
|
+
}
|
|
246
|
+
copyFieldsTo(filter) {
|
|
247
|
+
super.copyFieldsTo(filter);
|
|
248
|
+
filter._dataProvider = this._dataProvider;
|
|
249
|
+
filter._lookupType = this._lookupType;
|
|
250
|
+
filter._itemsLabelProperty = this._itemsLabelProperty;
|
|
251
|
+
filter._itemsLabelTranslate = this._itemsLabelTranslate;
|
|
252
|
+
filter._itemsValueProperty = this._itemsValueProperty;
|
|
253
|
+
filter._dataKeyProperty = this._dataKeyProperty;
|
|
254
|
+
filter._multiselect = this._multiselect;
|
|
255
|
+
filter._dropdownClassName = this._dropdownClassName;
|
|
256
|
+
filter._autocompleteOpenOnFocus = this._autocompleteOpenOnFocus;
|
|
257
|
+
filter._autocompleteInlineSearch = this._autocompleteInlineSearch;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
export class FilterLookupEnumDescriptor extends FilterLookupDescriptor {
|
|
261
|
+
constructor(property, enumType, options, nameAsValue = false, optionsTitlePath) {
|
|
262
|
+
super(property, null);
|
|
263
|
+
this._enumType = enumType;
|
|
264
|
+
if (typeof optionsTitlePath === 'undefined') {
|
|
265
|
+
optionsTitlePath = TypeUtil.findEnumName(enumType);
|
|
266
|
+
}
|
|
267
|
+
const optionEnumValues = Array.isArray(options)
|
|
268
|
+
? EnumUtil.fromValuesAsEnumValueArray(enumType, options, nameAsValue, optionsTitlePath ?? undefined)
|
|
269
|
+
: EnumUtil.fromConstantsAsEnumValueArray(enumType, nameAsValue, optionsTitlePath ?? undefined);
|
|
270
|
+
const dataProvider = new LookupDataProvider(null).withLookup(() => of(optionEnumValues));
|
|
271
|
+
this.withLookupDataProvider(dataProvider);
|
|
272
|
+
this.withItemsLabelProperty('title', optionsTitlePath !== null);
|
|
273
|
+
this.withItemsValueProperty('value');
|
|
274
|
+
}
|
|
275
|
+
get enumType() {
|
|
276
|
+
return this._enumType;
|
|
277
|
+
}
|
|
278
|
+
asAutocomplete(openOnFocus = true) {
|
|
279
|
+
super.asAutocomplete(openOnFocus, true);
|
|
280
|
+
return this;
|
|
281
|
+
}
|
|
282
|
+
copy() {
|
|
283
|
+
const field = new FilterLookupEnumDescriptor(this._property, this._enumType, []);
|
|
284
|
+
this.copyFieldsTo(field);
|
|
285
|
+
return field;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
(function (FilterLookupDescriptor) {
|
|
289
|
+
let LookupTypeEnum;
|
|
290
|
+
(function (LookupTypeEnum) {
|
|
291
|
+
LookupTypeEnum[LookupTypeEnum["Dropdown"] = 0] = "Dropdown";
|
|
292
|
+
LookupTypeEnum[LookupTypeEnum["Autocomplete"] = 1] = "Autocomplete";
|
|
293
|
+
})(LookupTypeEnum = FilterLookupDescriptor.LookupTypeEnum || (FilterLookupDescriptor.LookupTypeEnum = {}));
|
|
294
|
+
})(FilterLookupDescriptor || (FilterLookupDescriptor = {}));
|
|
295
295
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2Rlc2NyaXB0b3JzL2ZpbHRlci5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFHcEMsT0FBTyxFQUFzQixrQkFBa0IsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBRzFFLE9BQU8sRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUd2RCxNQUFNLE9BQU8sZ0JBQWdCO0lBc0J6QixZQUFZLFFBQWdCO1FBcEJsQixnQkFBVyxHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFHL0MsZ0JBQVcsR0FBb0IsSUFBSSxDQUFDO1FBS3BDLHVCQUFrQixHQUFHLElBQUksQ0FBQztRQUkxQix3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFHNUIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDdEIsaUJBQVksR0FBa0IsSUFBSSxDQUFDO1FBQ25DLG9CQUFlLEdBQWtCLElBQUksQ0FBQztRQUc1QyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxjQUFjO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyx1QkFBdUI7UUFDOUIsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUM7SUFDekMsQ0FBQztJQUVELElBQVcsdUJBQXVCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLHdC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Q2hCLENBQUMsRUFIVyxjQUFjLEdBQWQscUNBQWMsS0FBZCxxQ0FBYyxRQUd6QjtBQUNMLENBQUMsRUFMZ0Isc0JBQXNCLEtBQXRCLHNCQUFzQixRQUt0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge01lZGl1c1F1ZXJ5UGFyYW19IGZyb20gJy4uL2FwaS9tb2RlbHMnO1xuaW1wb3J0IHtJTG9va3VwRGF0YVByb3ZpZGVyLCBMb29rdXBEYXRhUHJvdmlkZXJ9IGZyb20gJy4uL2RhdGEtcHJvdmlkZXJzJztcbmltcG9ydCB7RW51bVZhbHVlfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtDbGFzc1R5cGUsIEVudW1Db25zdGFudFR5cGUsIEVudW1UeXBlfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge0VudW1VdGlsLCBNb2RlbFV0aWwsIFR5cGVVdGlsfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQge0lMb29rdXBEZXNjcmlwdG9yfSBmcm9tICcuL2xvb2t1cC5kZXNjcmlwdG9yJztcblxuZXhwb3J0IGNsYXNzIEZpbHRlckRlc2NyaXB0b3I8VD4ge1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfcHJvcGVydHk6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgX2ZpbHRlclR5cGUgPSBGaWx0ZXJEZXNjcmlwdG9yLlR5cGVFbnVtLlN0cmluZztcbiAgICBwcm90ZWN0ZWQgX2ZpbHRlclByb3BlcnR5Pzogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIF9tYXRjaE1vZGVzOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsO1xuXG4gICAgLy8gbnVtYmVyIGZpbHRlciBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gICAgcHJvdGVjdGVkIF9udW1iZXJNaW5GcmFjdGlvbkRpZ2l0cz86IG51bWJlcjtcbiAgICBwcm90ZWN0ZWQgX251bWJlck1heEZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xuICAgIHByb3RlY3RlZCBfbnVtYmVyVXNlR3JvdXBpbmcgPSB0cnVlO1xuXG4gICAgLy8gZGF0ZSBmaWx0ZXIgc3BlY2lmaWMgcHJvcGVydGllc1xuICAgIHByb3RlY3RlZCBfZGF0ZVBpY2tlckZvcm1hdD86IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgX2RhdGVQaWNrZXJTaG93VGltZSA9IGZhbHNlO1xuXG4gICAgcHJvdGVjdGVkIF9wbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgX2NsYXNzTmFtZSA9ICcnO1xuICAgIHByb3RlY3RlZCBfY29sdW1uQ2xhc3NOYW1lID0gJyc7XG4gICAgcHJvdGVjdGVkIF9jb2x1bW5XaWR0aDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgcHJvdGVjdGVkIF9jb2x1bW5NaW5XaWR0aDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3Byb3BlcnR5ID0gcHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWx0ZXJUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsdGVyVHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpbHRlclByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsdGVyUHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtYXRjaE1vZGVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWF0Y2hNb2RlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG51bWJlck1pbkZyYWN0aW9uRGlnaXRzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbnVtYmVyTWluRnJhY3Rpb25EaWdpdHM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBudW1iZXJNYXhGcmFjdGlvbkRpZ2l0cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX251bWJlck1heEZyYWN0aW9uRGlnaXRzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbnVtYmVyVXNlR3JvdXBpbmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9udW1iZXJVc2VHcm91cGluZztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGVQaWNrZXJGb3JtYXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlUGlja2VyRm9ybWF0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGF0ZVBpY2tlclNob3dUaW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVBpY2tlclNob3dUaW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGxhY2Vob2xkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNsYXNzTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NsYXNzTmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNvbHVtbkNsYXNzTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbHVtbkNsYXNzTmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNvbHVtbldpZHRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29sdW1uV2lkdGg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb2x1bW5NaW5XaWR0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbHVtbk1pbldpZHRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNGaWx0ZXJUeXBlKGZpbHRlclR5cGU6IEZpbHRlckRlc2NyaXB0b3IuVHlwZUVudW0pIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyVHlwZSA9IGZpbHRlclR5cGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgZGlmZmVyZW50IGZpbHRlciBwcm9wZXJ0eSBuYW1lIGluc3RlYWQgb2YgZGVmYXVsdCBwcm9wZXJ0eS4gVXNlIHRoaXMgaWYgQVBJIHJlcXVpcmVzIGRpZmZlcmVudCBwcm9wZXJ0eSBwcm92aWRlZCB0byBwZXJmb3JtIGNvcnJlY3QgZmlsdGVyLlxuICAgICAqIEBwYXJhbSBmaWx0ZXJQcm9wZXJ0eVxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoRmlsdGVyUHJvcGVydHkoZmlsdGVyUHJvcGVydHk6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWx0ZXJQcm9wZXJ0eSA9IGZpbHRlclByb3BlcnR5O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aE51bWJlckZyYWN0aW9ucyhtaW4/OiBudW1iZXIsIG1heD86IG51bWJlcikge1xuICAgICAgICB0aGlzLl9udW1iZXJNaW5GcmFjdGlvbkRpZ2l0cyA9IG1pbjtcbiAgICAgICAgdGhpcy5fbnVtYmVyTWF4RnJhY3Rpb25EaWdpdHMgPSBtYXg7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTnVtYmVyR3JvdXBpbmcodXNlR3JvdXBpbmcgPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX251bWJlclVzZUdyb3VwaW5nID0gdXNlR3JvdXBpbmc7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGF0ZUZvcm1hdChmb3JtYXQ/OiBzdHJpbmcsIHNob3dUaW1lID0gZmFsc2UpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlckZvcm1hdCA9IGZvcm1hdDtcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlclNob3dUaW1lID0gc2hvd1RpbWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUGxhY2Vob2xkZXIocGxhY2Vob2xkZXI6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9wbGFjZWhvbGRlciA9IHBsYWNlaG9sZGVyO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENsYXNzTmFtZShjbGFzc05hbWU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9jbGFzc05hbWUgPSBjbGFzc05hbWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ29sdW1uQ2xhc3NOYW1lKGNsYXNzTmFtZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NvbHVtbkNsYXNzTmFtZSA9IGNsYXNzTmFtZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhDb2x1bW5XaWR0aCh3aWR0aD86IG51bWJlciwgbWluV2lkdGg/OiBudW1iZXIpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29sdW1uV2lkdGggPSB3aWR0aCA/PyBudWxsO1xuICAgICAgICB0aGlzLl9jb2x1bW5NaW5XaWR0aCA9IG1pbldpZHRoID8/IG51bGw7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTWF0Y2hNb2RlcyhtYXRjaE1vZGVzOiBBcnJheTxGaWx0ZXJEZXNjcmlwdG9yLk1hdGNoTW9kZUVudW0+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX21hdGNoTW9kZXMgPSBtYXRjaE1vZGVzO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weSgpOiBGaWx0ZXJEZXNjcmlwdG9yPFQ+IHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IG5ldyBGaWx0ZXJEZXNjcmlwdG9yPFQ+KHRoaXMuX3Byb3BlcnR5KTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZGVzY3JpcHRvcik7XG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjb3B5RmllbGRzVG8oZGVzY3JpcHRvcjogRmlsdGVyRGVzY3JpcHRvcjxUPikge1xuICAgICAgICBkZXNjcmlwdG9yLl9maWx0ZXJUeXBlID0gdGhpcy5fZmlsdGVyVHlwZTtcbiAgICAgICAgZGVzY3JpcHRvci5fZmlsdGVyUHJvcGVydHkgPSB0aGlzLl9maWx0ZXJQcm9wZXJ0eTtcbiAgICAgICAgZGVzY3JpcHRvci5fbnVtYmVyTWluRnJhY3Rpb25EaWdpdHMgPSB0aGlzLl9udW1iZXJNaW5GcmFjdGlvbkRpZ2l0cztcbiAgICAgICAgZGVzY3JpcHRvci5fbnVtYmVyTWF4RnJhY3Rpb25EaWdpdHMgPSB0aGlzLl9udW1iZXJNYXhGcmFjdGlvbkRpZ2l0cztcbiAgICAgICAgZGVzY3JpcHRvci5fbnVtYmVyVXNlR3JvdXBpbmcgPSB0aGlzLl9udW1iZXJVc2VHcm91cGluZztcbiAgICAgICAgZGVzY3JpcHRvci5fZGF0ZVBpY2tlckZvcm1hdCA9IHRoaXMuX2RhdGVQaWNrZXJGb3JtYXQ7XG4gICAgICAgIGRlc2NyaXB0b3IuX2RhdGVQaWNrZXJTaG93VGltZSA9IHRoaXMuX2RhdGVQaWNrZXJTaG93VGltZTtcbiAgICAgICAgZGVzY3JpcHRvci5fcGxhY2Vob2xkZXIgPSB0aGlzLl9wbGFjZWhvbGRlcjtcbiAgICAgICAgZGVzY3JpcHRvci5fY2xhc3NOYW1lID0gdGhpcy5fY2xhc3NOYW1lO1xuICAgICAgICBkZXNjcmlwdG9yLl9jb2x1bW5XaWR0aCA9IHRoaXMuX2NvbHVtbldpZHRoO1xuICAgICAgICBkZXNjcmlwdG9yLl9jb2x1bW5NaW5XaWR0aCA9IHRoaXMuX2NvbHVtbk1pbldpZHRoO1xuICAgICAgICBkZXNjcmlwdG9yLl9jb2x1bW5DbGFzc05hbWUgPSB0aGlzLl9jb2x1bW5DbGFzc05hbWU7XG4gICAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIEZpbHRlckRlc2NyaXB0b3Ige1xuICAgIGV4cG9ydCBlbnVtIFR5cGVFbnVtIHtcbiAgICAgICAgU3RyaW5nLFxuICAgICAgICBOdW1iZXIsXG4gICAgICAgIEJvb2xlYW4sXG4gICAgICAgIERhdGUsXG4gICAgICAgIExvb2t1cCxcbiAgICAgICAgTG9va3VwRW51bVxuICAgIH1cblxuICAgIGV4cG9ydCBlbnVtIE1hdGNoTW9kZUVudW0ge1xuICAgICAgICBTdGFydHNXaXRoID0gJ3N0YXJ0c1dpdGgnLFxuICAgICAgICBDb250YWlucyA9ICdjb250YWlucycsXG4gICAgICAgIEVuZHNXaXRoID0gJ2VuZHNXaXRoJyxcbiAgICAgICAgRXF1YWxzID0gJ2VxdWFscycsXG4gICAgICAgIE5vdEVxdWFscyA9ICdub3RFcXVhbHMnLFxuICAgICAgICBJbiA9ICdpbicsXG4gICAgICAgIExlc3NUaGFuID0gJ2x0JyxcbiAgICAgICAgR3JlYXRlclRoYW4gPSAnZ3QnLFxuICAgICAgICBCZXR3ZWVuID0gJ2JldHdlZW4nLFxuICAgICAgICBEYXRlSXMgPSAnZGF0ZUlzJyxcbiAgICAgICAgRGF0ZUlzTm90ID0gJ2RhdGVJc05vdCcsXG4gICAgICAgIERhdGVCZWZvcmUgPSAnZGF0ZUJlZm9yZScsXG4gICAgICAgIERhdGVBZnRlciA9ICdkYXRlQWZ0ZXInXG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmlsdGVyTG9va3VwRGVzY3JpcHRvcjxUPiBleHRlbmRzIEZpbHRlckRlc2NyaXB0b3I8VD4gaW1wbGVtZW50cyBJTG9va3VwRGVzY3JpcHRvcjxUPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9tb2RlbFR5cGU6IENsYXNzVHlwZTxUPiB8IG51bGwgPSBudWxsO1xuICAgIHByb3RlY3RlZCBfbG9va3VwVHlwZT86IEZpbHRlckxvb2t1cERlc2NyaXB0b3IuTG9va3VwVHlwZUVudW0gPSBGaWx0ZXJMb29rdXBEZXNjcmlwdG9yLkxvb2t1cFR5cGVFbnVtLkRyb3Bkb3duO1xuXG4gICAgcHJvdGVjdGVkIF9kYXRhUHJvdmlkZXI/OiBJTG9va3VwRGF0YVByb3ZpZGVyPFQsIGFueT47XG4gICAgcHJvdGVjdGVkIF9pdGVtc0xhYmVsUHJvcGVydHk/OiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIF9pdGVtc0xhYmVsVHJhbnNsYXRlID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIF9pdGVtc1ZhbHVlUHJvcGVydHk/OiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIF9kYXRhS2V5UHJvcGVydHk/OiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIF9tdWx0aXNlbGVjdCA9IGZhbHNlO1xuXG4gICAgcHJvdGVjdGVkIF9kcm9wZG93bkNsYXNzTmFtZSA9ICdtbmctZmlsdGVyLWxvb2t1cC1kcm9wZG93bic7XG5cbiAgICBwcm90ZWN0ZWQgX2F1dG9jb21wbGV0ZU9wZW5PbkZvY3VzID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIF9hdXRvY29tcGxldGVJbmxpbmVTZWFyY2ggPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKHByb3BlcnR5OiBzdHJpbmcsIG1vZGVsVHlwZTogQ2xhc3NUeXBlPFQ+IHwgbnVsbCkge1xuICAgICAgICBzdXBlcihwcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuX21vZGVsVHlwZSA9IG1vZGVsVHlwZTtcbiAgICAgICAgdGhpcy5fZmlsdGVyVHlwZSA9IEZpbHRlckRlc2NyaXB0b3IuVHlwZUVudW0uTG9va3VwO1xuICAgICAgICBNb2RlbFV0aWwudHJ5U2V0TG9va3VwSXRlbXNQcm9wZXJ0aWVzKHRoaXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbG9va3VwVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvb2t1cFR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkYXRhUHJvdmlkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhUHJvdmlkZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpdGVtc0xhYmVsUHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtc0xhYmVsUHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpdGVtc0xhYmVsVHJhbnNsYXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXNMYWJlbFRyYW5zbGF0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGl0ZW1zVmFsdWVQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zVmFsdWVQcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGFLZXlQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFLZXlQcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG11bHRpc2VsZWN0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbXVsdGlzZWxlY3Q7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhdXRvY29tcGxldGVPcGVuT25Gb2N1cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9jb21wbGV0ZU9wZW5PbkZvY3VzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXV0b2NvbXBsZXRlSW5saW5lU2VhcmNoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXV0b2NvbXBsZXRlSW5saW5lU2VhcmNoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZHJvcGRvd25DbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kcm9wZG93bkNsYXNzTmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1vZGVsVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21vZGVsVHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEl0ZW1zTGFiZWxQcm9wZXJ0eShpdGVtc0xhYmVsUHJvcGVydHk6IHN0cmluZywgdHJhbnNsYXRlID0gZmFsc2UpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faXRlbXNMYWJlbFByb3BlcnR5ID0gaXRlbXNMYWJlbFByb3BlcnR5O1xuICAgICAgICB0aGlzLl9pdGVtc0xhYmVsVHJhbnNsYXRlID0gdHJhbnNsYXRlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEl0ZW1zVmFsdWVQcm9wZXJ0eShpdGVtc1ZhbHVlUHJvcGVydHk6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9pdGVtc1ZhbHVlUHJvcGVydHkgPSBpdGVtc1ZhbHVlUHJvcGVydHk7XG4gICAgICAgIHRoaXMuX2RhdGFLZXlQcm9wZXJ0eSA9IGl0ZW1zVmFsdWVQcm9wZXJ0eTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEYXRhS2V5UHJvcGVydHkoZGF0YUtleVByb3BlcnR5OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGF0YUtleVByb3BlcnR5ID0gZGF0YUtleVByb3BlcnR5O1xuICAgICAgICB0aGlzLl9pdGVtc1ZhbHVlUHJvcGVydHkgPSBkYXRhS2V5UHJvcGVydHk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTG9va3VwPFM+KGxvb2t1cDogKHF1ZXJ5UGFyYW0/OiBNZWRpdXNRdWVyeVBhcmFtLCBzZXJ2aWNlPzogUywgc2VhcmNoPzogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPEFycmF5PFQ+Piwgc2VydmljZVR5cGU/OiBUeXBlPFM+KTogdGhpcyB7XG4gICAgICAgIGNvbnN0IGRhdGFQcm92aWRlciA9IG5ldyBMb29rdXBEYXRhUHJvdmlkZXI8VCwgUz4odGhpcy5fbW9kZWxUeXBlKTtcbiAgICAgICAgaWYgKHNlcnZpY2VUeXBlKSB7XG4gICAgICAgICAgICBkYXRhUHJvdmlkZXIud2l0aFNlcnZpY2VUeXBlKHNlcnZpY2VUeXBlKTtcbiAgICAgICAgfVxuICAgICAgICBkYXRhUHJvdmlkZXIud2l0aExvb2t1cChsb29rdXApO1xuICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIgPSBkYXRhUHJvdmlkZXI7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTG9va3VwRGF0YVByb3ZpZGVyKGRhdGFQcm92aWRlcjogSUxvb2t1cERhdGFQcm92aWRlcjxULCBhbnk+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2RhdGFQcm92aWRlciA9IGRhdGFQcm92aWRlcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhNdWx0aXNlbGVjdChtdWx0aXNlbGVjdCA9IHRydWUpIHtcbiAgICAgICAgdGhpcy5fbXVsdGlzZWxlY3QgPSBtdWx0aXNlbGVjdDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEcm9wZG93bkNsYXNzTmFtZShkcm9wZG93bkNsYXNzTmFtZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2Ryb3Bkb3duQ2xhc3NOYW1lID0gZHJvcGRvd25DbGFzc05hbWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0F1dG9jb21wbGV0ZShvcGVuT25Gb2N1cyA9IGZhbHNlLCBpbmxpbmVTZWFyY2ggPSBmYWxzZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9sb29rdXBUeXBlID0gRmlsdGVyTG9va3VwRGVzY3JpcHRvci5Mb29rdXBUeXBlRW51bS5BdXRvY29tcGxldGU7XG4gICAgICAgIHRoaXMuX2F1dG9jb21wbGV0ZU9wZW5PbkZvY3VzID0gb3Blbk9uRm9jdXM7XG4gICAgICAgIHRoaXMuX2F1dG9jb21wbGV0ZUlubGluZVNlYXJjaCA9IGlubGluZVNlYXJjaDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGNvcHkoKTogRmlsdGVyTG9va3VwRGVzY3JpcHRvcjxUPiB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgRmlsdGVyTG9va3VwRGVzY3JpcHRvcjxUPih0aGlzLl9wcm9wZXJ0eSwgdGhpcy5fbW9kZWxUeXBlKTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZGVzY3JpcHRvcik7XG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBjb3B5RmllbGRzVG8oZmlsdGVyOiBGaWx0ZXJMb29rdXBEZXNjcmlwdG9yPFQ+KSB7XG4gICAgICAgIHN1cGVyLmNvcHlGaWVsZHNUbyhmaWx0ZXIpO1xuICAgICAgICBmaWx0ZXIuX2RhdGFQcm92aWRlciA9IHRoaXMuX2RhdGFQcm92aWRlcjtcbiAgICAgICAgZmlsdGVyLl9sb29rdXBUeXBlID0gdGhpcy5fbG9va3VwVHlwZTtcbiAgICAgICAgZmlsdGVyLl9pdGVtc0xhYmVsUHJvcGVydHkgPSB0aGlzLl9pdGVtc0xhYmVsUHJvcGVydHk7XG4gICAgICAgIGZpbHRlci5faXRlbXNMYWJlbFRyYW5zbGF0ZSA9IHRoaXMuX2l0ZW1zTGFiZWxUcmFuc2xhdGU7XG4gICAgICAgIGZpbHRlci5faXRlbXNWYWx1ZVByb3BlcnR5ID0gdGhpcy5faXRlbXNWYWx1ZVByb3BlcnR5O1xuICAgICAgICBmaWx0ZXIuX2RhdGFLZXlQcm9wZXJ0eSA9IHRoaXMuX2RhdGFLZXlQcm9wZXJ0eTtcbiAgICAgICAgZmlsdGVyLl9tdWx0aXNlbGVjdCA9IHRoaXMuX211bHRpc2VsZWN0O1xuICAgICAgICBmaWx0ZXIuX2Ryb3Bkb3duQ2xhc3NOYW1lID0gdGhpcy5fZHJvcGRvd25DbGFzc05hbWU7XG4gICAgICAgIGZpbHRlci5fYXV0b2NvbXBsZXRlT3Blbk9uRm9jdXMgPSB0aGlzLl9hdXRvY29tcGxldGVPcGVuT25Gb2N1cztcbiAgICAgICAgZmlsdGVyLl9hdXRvY29tcGxldGVJbmxpbmVTZWFyY2ggPSB0aGlzLl9hdXRvY29tcGxldGVJbmxpbmVTZWFyY2g7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmlsdGVyTG9va3VwRW51bURlc2NyaXB0b3IgZXh0ZW5kcyBGaWx0ZXJMb29rdXBEZXNjcmlwdG9yPEVudW1WYWx1ZTxzdHJpbmcgfCBudW1iZXI+PiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfZW51bVR5cGU6IEVudW1UeXBlO1xuXG4gICAgY29uc3RydWN0b3IocHJvcGVydHk6IHN0cmluZywgZW51bVR5cGU6IEVudW1UeXBlLCBvcHRpb25zPzogQXJyYXk8RW51bUNvbnN0YW50VHlwZT4sIG5hbWVBc1ZhbHVlID0gZmFsc2UsIG9wdGlvbnNUaXRsZVBhdGg/OiBzdHJpbmcgfCBudWxsKSB7XG4gICAgICAgIHN1cGVyKHByb3BlcnR5LCBudWxsKTtcbiAgICAgICAgdGhpcy5fZW51bVR5cGUgPSBlbnVtVHlwZTtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zVGl0bGVQYXRoID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgb3B0aW9uc1RpdGxlUGF0aCA9IFR5cGVVdGlsLmZpbmRFbnVtTmFtZShlbnVtVHlwZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3B0aW9uRW51bVZhbHVlcyA9IEFycmF5LmlzQXJyYXkob3B0aW9ucylcbiAgICAgICAgICAgID8gRW51bVV0aWwuZnJvbVZhbHVlc0FzRW51bVZhbHVlQXJyYXkoZW51bVR5cGUsIG9wdGlvbnMsIG5hbWVBc1ZhbHVlLCBvcHRpb25zVGl0bGVQYXRoID8/IHVuZGVmaW5lZClcbiAgICAgICAgICAgIDogRW51bVV0aWwuZnJvbUNvbnN0YW50c0FzRW51bVZhbHVlQXJyYXkoZW51bVR5cGUsIG5hbWVBc1ZhbHVlLCBvcHRpb25zVGl0bGVQYXRoID8/IHVuZGVmaW5lZCk7XG4gICAgICAgIGNvbnN0IGRhdGFQcm92aWRlciA9IG5ldyBMb29rdXBEYXRhUHJvdmlkZXI8RW51bVZhbHVlPHN0cmluZyB8IG51bWJlcj4sIGFueT4obnVsbCkud2l0aExvb2t1cCgoKSA9PiBvZihvcHRpb25FbnVtVmFsdWVzKSk7XG4gICAgICAgIHRoaXMud2l0aExvb2t1cERhdGFQcm92aWRlcihkYXRhUHJvdmlkZXIpO1xuICAgICAgICB0aGlzLndpdGhJdGVtc0xhYmVsUHJvcGVydHkoJ3RpdGxlJywgb3B0aW9uc1RpdGxlUGF0aCAhPT0gbnVsbCk7XG4gICAgICAgIHRoaXMud2l0aEl0ZW1zVmFsdWVQcm9wZXJ0eSgndmFsdWUnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVudW1UeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZW51bVR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGFzQXV0b2NvbXBsZXRlKG9wZW5PbkZvY3VzID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICBzdXBlci5hc0F1dG9jb21wbGV0ZShvcGVuT25Gb2N1cywgdHJ1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBjb3B5KCk6IEZpbHRlckxvb2t1cEVudW1EZXNjcmlwdG9yIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBuZXcgRmlsdGVyTG9va3VwRW51bURlc2NyaXB0b3IodGhpcy5fcHJvcGVydHksIHRoaXMuX2VudW1UeXBlLCBbXSk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBGaWx0ZXJMb29rdXBEZXNjcmlwdG9yIHtcbiAgICBleHBvcnQgZW51bSBMb29rdXBUeXBlRW51bSB7XG4gICAgICAgIERyb3Bkb3duLFxuICAgICAgICBBdXRvY29tcGxldGVcbiAgICB9XG59XG4iXX0=
|