@c8y/ngx-components 1021.7.0 → 1021.13.3
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/alarms/alarms-date-filter.component.d.ts +34 -0
- package/alarms/alarms-date-filter.component.d.ts.map +1 -0
- package/alarms/alarms-filter.component.d.ts +2 -1
- package/alarms/alarms-filter.component.d.ts.map +1 -1
- package/alarms/alarms-view.service.d.ts +4 -2
- package/alarms/alarms-view.service.d.ts.map +1 -1
- package/alarms/alarms.component.d.ts +3 -1
- package/alarms/alarms.component.d.ts.map +1 -1
- package/alarms/alarms.model.d.ts +17 -1
- package/alarms/alarms.model.d.ts.map +1 -1
- package/alarms/alarms.module.d.ts +15 -13
- package/alarms/alarms.module.d.ts.map +1 -1
- package/branding/shared/data/store-branding.service.d.ts +5 -0
- package/branding/shared/data/store-branding.service.d.ts.map +1 -1
- package/branding/shared/lazy/branding/branding.component.d.ts.map +1 -1
- package/cockpit-config/cockpit-config.model.d.ts +1 -0
- package/cockpit-config/cockpit-config.model.d.ts.map +1 -1
- package/context-dashboard/dashboard-manager/dashboard-manager.module.d.ts.map +1 -1
- package/core/common/options.service.d.ts +1 -1
- package/core/common/options.service.d.ts.map +1 -1
- package/core/dashboard/dashboard.module.d.ts +19 -19
- package/core/dashboard/widget-change-event.model.d.ts +1 -1
- package/core/dashboard/widget-change-event.model.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context-helper.service.d.ts +2 -1
- package/core/dashboard/wiget-time-context/widget-time-context-helper.service.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context-query.service.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts +2 -1
- package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context.model.d.ts +1 -14
- package/core/dashboard/wiget-time-context/widget-time-context.model.d.ts.map +1 -1
- package/core/date-time-picker/date-time-picker.component.d.ts.map +1 -1
- package/core/forms/validation-pattern.d.ts +4 -0
- package/core/forms/validation-pattern.d.ts.map +1 -1
- package/core/plugins/plugins.service.d.ts +1 -1
- package/core/plugins/plugins.service.d.ts.map +1 -1
- package/esm2022/alarm-event-selector/alarm-event-selection-list/alarm-event-selection-list.component.mjs +4 -4
- package/esm2022/alarm-event-selector/alarm-event-selector-list-item/alarm-event-selector-list-item.component.mjs +3 -3
- package/esm2022/alarms/alarms-date-filter.component.mjs +139 -0
- package/esm2022/alarms/alarms-filter.component.mjs +11 -5
- package/esm2022/alarms/alarms-type-filter.component.mjs +3 -3
- package/esm2022/alarms/alarms-view.service.mjs +15 -2
- package/esm2022/alarms/alarms.component.mjs +12 -6
- package/esm2022/alarms/alarms.model.mjs +17 -1
- package/esm2022/alarms/alarms.module.mjs +11 -4
- package/esm2022/assets-navigator/asset-selector/asset-selector-node.component.mjs +3 -3
- package/esm2022/branding/shared/data/store-branding.service.mjs +24 -1
- package/esm2022/branding/shared/lazy/branding/branding.component.mjs +3 -1
- package/esm2022/cockpit-config/cockpit-config.model.mjs +3 -2
- package/esm2022/cockpit-config/feature-config.component.mjs +3 -3
- package/esm2022/context-dashboard/dashboard-manager/dashboard-manager.module.mjs +5 -3
- package/esm2022/core/action-bar/action-bar.component.mjs +3 -3
- package/esm2022/core/common/options.service.mjs +3 -3
- package/esm2022/core/dashboard/dashboard.module.mjs +5 -4
- package/esm2022/core/dashboard/widget-change-event.model.mjs +1 -1
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context-helper.service.mjs +3 -2
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context-query.service.mjs +1 -1
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context.component.mjs +6 -5
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context.model.mjs +3 -47
- package/esm2022/core/date-time-picker/date-time-picker.component.mjs +7 -1
- package/esm2022/core/docs/defaults.items.mjs +2 -2
- package/esm2022/core/forms/validation-pattern.mjs +5 -1
- package/esm2022/core/list-display-switch/list-display-switch.component.mjs +3 -3
- package/esm2022/core/plugins/plugins.service.mjs +3 -3
- package/esm2022/core/router/context-route.guard.mjs +2 -2
- package/esm2022/core/search/search-input.component.mjs +3 -3
- package/esm2022/interval-picker/c8y-ngx-components-interval-picker.mjs +5 -0
- package/esm2022/interval-picker/index.mjs +3 -0
- package/esm2022/interval-picker/interval-picker.component.mjs +68 -0
- package/esm2022/interval-picker/interval-picker.model.mjs +47 -0
- package/esm2022/operations/bulk-operation-scheduler/operation-scheduler.component.mjs +7 -5
- package/esm2022/search/search-action.component.mjs +3 -3
- package/esm2022/tenants/custom-properties/custom-properties.component.mjs +90 -0
- package/esm2022/tenants/custom-properties/custom-properties.service.mjs +76 -0
- package/esm2022/tenants/custom-properties/custom-property-field/custom-property-field.component.mjs +29 -0
- package/esm2022/tenants/index.mjs +2 -1
- package/esm2022/tenants/tenant-limits/tenant-limits-definitions.mjs +92 -0
- package/esm2022/tenants/tenant-limits/tenant-limits.component.mjs +124 -0
- package/esm2022/tenants/tenants.module.mjs +42 -4
- package/esm2022/widgets/implementations/help-and-service-widget/help-and-service-view/help-and-service-view.component.mjs +2 -2
- package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +5 -5
- package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarms.mjs +184 -16
- package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-assets-navigator.mjs +2 -2
- package/fesm2022/c8y-ngx-components-assets-navigator.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +23 -0
- package/fesm2022/c8y-ngx-components-branding-shared-data.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +2 -0
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-cockpit-config.mjs +4 -3
- package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs +4 -2
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-interval-picker.mjs +120 -0
- package/fesm2022/c8y-ngx-components-interval-picker.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +6 -4
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-search.mjs +2 -2
- package/fesm2022/c8y-ngx-components-search.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-tenants.mjs +416 -11
- package/fesm2022/c8y-ngx-components-tenants.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +292 -372
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/interval-picker/c8y-ngx-components-interval-picker.d.ts.map +1 -0
- package/interval-picker/index.d.ts +3 -0
- package/interval-picker/index.d.ts.map +1 -0
- package/{core/dashboard/wiget-time-context/interval-picker → interval-picker}/interval-picker.component.d.ts +10 -2
- package/interval-picker/interval-picker.component.d.ts.map +1 -0
- package/interval-picker/interval-picker.model.d.ts +15 -0
- package/interval-picker/interval-picker.model.d.ts.map +1 -0
- package/locales/de.po +4 -1
- package/locales/en.po +3 -0
- package/locales/en_US.po +3 -0
- package/locales/es.po +3 -0
- package/locales/fr.po +3 -0
- package/locales/ja_JP.po +3 -0
- package/locales/locales.pot +47 -3
- package/locales/nl.po +3 -0
- package/locales/pl.po +3 -0
- package/locales/pt_BR.po +3 -0
- package/operations/bulk-operation-scheduler/operation-scheduler.component.d.ts.map +1 -1
- package/package.json +1 -1
- package/tenants/custom-properties/custom-properties.component.d.ts +26 -0
- package/tenants/custom-properties/custom-properties.component.d.ts.map +1 -0
- package/tenants/custom-properties/custom-properties.service.d.ts +26 -0
- package/tenants/custom-properties/custom-properties.service.d.ts.map +1 -0
- package/tenants/custom-properties/custom-property-field/custom-property-field.component.d.ts +10 -0
- package/tenants/custom-properties/custom-property-field/custom-property-field.component.d.ts.map +1 -0
- package/tenants/index.d.ts +1 -0
- package/tenants/index.d.ts.map +1 -1
- package/tenants/tenant-limits/tenant-limits-definitions.d.ts +117 -0
- package/tenants/tenant-limits/tenant-limits-definitions.d.ts.map +1 -0
- package/tenants/tenant-limits/tenant-limits.component.d.ts +39 -0
- package/tenants/tenant-limits/tenant-limits.component.d.ts.map +1 -0
- package/tenants/tenants.module.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/interval-picker/interval-picker.component.d.ts.map +0 -1
- package/esm2022/core/dashboard/wiget-time-context/interval-picker/interval-picker.component.mjs +0 -55
|
@@ -40,15 +40,15 @@ export class SearchActionComponent {
|
|
|
40
40
|
.then(() => this.router.navigate(commands, extras));
|
|
41
41
|
}
|
|
42
42
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: SearchActionComponent, deps: [{ token: i1.RouterService }, { token: i2.Router }, { token: SEARCH_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
43
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: SearchActionComponent, selector: "c8y-search-action", ngImport: i0, template: "<c8y-search-input\n (filter)=\"onFilter($event)\"\n (search)=\"onSearch($event)\"\n (onClick)=\"onClick($event)\"\n [enableCustomTemplatePlaceholder]=\"true\"\n [customPlaceholder]=\"customPlaceholder\"\n [customDataQuery]=\"customQuery\"\n [externalTerm]=\"typeaheadReload\"\n>\n <c8y-search-custom-filters\n *ngIf=\"showAdvancedFilters\"\n class=\"d-flex gap-16 p-l-4\"\n (refresh)=\"triggerDataLoad()\"\n (customDataQuery)=\"customQuery = $event\"\n ></c8y-search-custom-filters>\n</c8y-search-input>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.SearchInputComponent, selector: "c8y-search-input", inputs: ["mode", "enableCustomTemplatePlaceholder", "customPlaceholder", "externalTerm", "customDataQuery", "container", "groupsOnly"], outputs: ["filter", "search", "reset", "onClick"] }, { kind: "component", type: i4.SearchCustomFiltersComponent, selector: "c8y-search-custom-filters", outputs: ["customDataQuery", "refresh"] }] }); }
|
|
43
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: SearchActionComponent, selector: "c8y-search-action", ngImport: i0, template: "<c8y-search-input\n (filter)=\"onFilter($event)\"\n (search)=\"onSearch($event)\"\n (onClick)=\"onClick($event)\"\n [enableCustomTemplatePlaceholder]=\"true\"\n [customPlaceholder]=\"customPlaceholder\"\n [customDataQuery]=\"customQuery\"\n [externalTerm]=\"typeaheadReload\"\n>\n <c8y-search-custom-filters\n *ngIf=\"showAdvancedFilters\"\n class=\"d-flex gap-16 p-l-4 p-l-24 p-r-24\"\n (refresh)=\"triggerDataLoad()\"\n (customDataQuery)=\"customQuery = $event\"\n ></c8y-search-custom-filters>\n</c8y-search-input>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.SearchInputComponent, selector: "c8y-search-input", inputs: ["mode", "enableCustomTemplatePlaceholder", "customPlaceholder", "externalTerm", "customDataQuery", "container", "groupsOnly"], outputs: ["filter", "search", "reset", "onClick"] }, { kind: "component", type: i4.SearchCustomFiltersComponent, selector: "c8y-search-custom-filters", outputs: ["customDataQuery", "refresh"] }] }); }
|
|
44
44
|
}
|
|
45
45
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: SearchActionComponent, decorators: [{
|
|
46
46
|
type: Component,
|
|
47
|
-
args: [{ selector: 'c8y-search-action', template: "<c8y-search-input\n (filter)=\"onFilter($event)\"\n (search)=\"onSearch($event)\"\n (onClick)=\"onClick($event)\"\n [enableCustomTemplatePlaceholder]=\"true\"\n [customPlaceholder]=\"customPlaceholder\"\n [customDataQuery]=\"customQuery\"\n [externalTerm]=\"typeaheadReload\"\n>\n <c8y-search-custom-filters\n *ngIf=\"showAdvancedFilters\"\n class=\"d-flex gap-16 p-l-4\"\n (refresh)=\"triggerDataLoad()\"\n (customDataQuery)=\"customQuery = $event\"\n ></c8y-search-custom-filters>\n</c8y-search-input>\n" }]
|
|
47
|
+
args: [{ selector: 'c8y-search-action', template: "<c8y-search-input\n (filter)=\"onFilter($event)\"\n (search)=\"onSearch($event)\"\n (onClick)=\"onClick($event)\"\n [enableCustomTemplatePlaceholder]=\"true\"\n [customPlaceholder]=\"customPlaceholder\"\n [customDataQuery]=\"customQuery\"\n [externalTerm]=\"typeaheadReload\"\n>\n <c8y-search-custom-filters\n *ngIf=\"showAdvancedFilters\"\n class=\"d-flex gap-16 p-l-4 p-l-24 p-r-24\"\n (refresh)=\"triggerDataLoad()\"\n (customDataQuery)=\"customQuery = $event\"\n ></c8y-search-custom-filters>\n</c8y-search-input>\n" }]
|
|
48
48
|
}], ctorParameters: () => [{ type: i1.RouterService }, { type: i2.Router }, { type: undefined, decorators: [{
|
|
49
49
|
type: Optional
|
|
50
50
|
}, {
|
|
51
51
|
type: Inject,
|
|
52
52
|
args: [SEARCH_CONFIG]
|
|
53
53
|
}] }] });
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWFjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zZWFyY2gvc2VhcmNoLWFjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9zZWFyY2gvc2VhcmNoLWFjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBb0IsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsSUFBSSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRSxPQUFPLEVBQWdCLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7QUFNcEUsTUFBTSxPQUFPLHFCQUFxQjtJQU1oQyxZQUNVLFNBQW9CLEVBQ3BCLE1BQWMsRUFDb0IsWUFBMEI7UUFGNUQsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ29CLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBTHRFLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQU9uQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsWUFBWSxFQUFFLG1CQUFtQixJQUFJLElBQUksQ0FBQztRQUNyRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsWUFBWSxFQUFFLFdBQVcsQ0FBQztJQUNyRCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxRQUFRLENBQUMsRUFBVTtRQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDOUIsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTtZQUMzQixVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUSxDQUFDLEVBQVU7UUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQzlCLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7WUFDM0IsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sQ0FBQyxFQUFrQjtRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU8sUUFBUSxDQUFDLFFBQWUsRUFBRSxNQUF5QjtRQUN6RCxJQUFJLENBQUMsTUFBTTthQUNSLGFBQWEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUNoRCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQzs4R0F6Q1UscUJBQXFCLHFFQVNWLGFBQWE7a0dBVHhCLHFCQUFxQix5RENYbEMsOGhCQWdCQTs7MkZETGEscUJBQXFCO2tCQUpqQyxTQUFTOytCQUNFLG1CQUFtQjs7MEJBWTFCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSVJlc3VsdExpc3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRXh0cmFzLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUm91dGVyU2VydmljZSBhcyBDOHlSb3V0ZXIgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFVuYXJ5RnVuY3Rpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNlYXJjaENvbmZpZywgU0VBUkNIX0NPTkZJRyB9IGZyb20gJy4vc2VhcmNoLWNvbmZpZy5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1zZWFyY2gtYWN0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1hY3Rpb24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaEFjdGlvbkNvbXBvbmVudCB7XG4gIHNob3dBZHZhbmNlZEZpbHRlcnM6IGJvb2xlYW47XG4gIGN1c3RvbVBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIGN1c3RvbVF1ZXJ5OiBVbmFyeUZ1bmN0aW9uPHN0cmluZywgT2JzZXJ2YWJsZTxJUmVzdWx0TGlzdDxJTWFuYWdlZE9iamVjdD4+PjtcbiAgdHlwZWFoZWFkUmVsb2FkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYzh5Um91dGVyOiBDOHlSb3V0ZXIsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFNFQVJDSF9DT05GSUcpIHB1YmxpYyBtb2R1bGVDb25maWc6IFNlYXJjaENvbmZpZ1xuICApIHtcbiAgICB0aGlzLnNob3dBZHZhbmNlZEZpbHRlcnMgPSBtb2R1bGVDb25maWc/LnNob3dBZHZhbmNlZEZpbHRlcnMgPz8gdHJ1ZTtcbiAgICB0aGlzLmN1c3RvbVBsYWNlaG9sZGVyID0gbW9kdWxlQ29uZmlnPy5wbGFjZWhvbGRlcjtcbiAgfVxuXG4gIHRyaWdnZXJEYXRhTG9hZCgpIHtcbiAgICB0aGlzLnR5cGVhaGVhZFJlbG9hZC5uZXh0KG51bGwpO1xuICB9XG5cbiAgb25TZWFyY2gob246IHN0cmluZykge1xuICAgIHRoaXMubmF2aWdhdGUoWycvYXNzZXRzZWFyY2gnXSwge1xuICAgICAgcXVlcnlQYXJhbXM6IHsgc2VhcmNoOiBvbiB9LFxuICAgICAgcmVwbGFjZVVybDogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgb25GaWx0ZXIob246IHN0cmluZykge1xuICAgIHRoaXMubmF2aWdhdGUoWycvYXNzZXRzZWFyY2gnXSwge1xuICAgICAgcXVlcnlQYXJhbXM6IHsgZmlsdGVyOiBvbiB9LFxuICAgICAgcmVwbGFjZVVybDogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgb25DbGljayhtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMuYzh5Um91dGVyLmdldEhyZWYobW8sICcvJykpO1xuICB9XG5cbiAgcHJpdmF0ZSBuYXZpZ2F0ZShjb21tYW5kczogYW55W10sIGV4dHJhcz86IE5hdmlnYXRpb25FeHRyYXMpIHtcbiAgICB0aGlzLnJvdXRlclxuICAgICAgLm5hdmlnYXRlQnlVcmwoJy8nLCB7IHNraXBMb2NhdGlvbkNoYW5nZTogdHJ1ZSB9KVxuICAgICAgLnRoZW4oKCkgPT4gdGhpcy5yb3V0ZXIubmF2aWdhdGUoY29tbWFuZHMsIGV4dHJhcykpO1xuICB9XG59XG4iLCI8Yzh5LXNlYXJjaC1pbnB1dFxuICAoZmlsdGVyKT1cIm9uRmlsdGVyKCRldmVudClcIlxuICAoc2VhcmNoKT1cIm9uU2VhcmNoKCRldmVudClcIlxuICAob25DbGljayk9XCJvbkNsaWNrKCRldmVudClcIlxuICBbZW5hYmxlQ3VzdG9tVGVtcGxhdGVQbGFjZWhvbGRlcl09XCJ0cnVlXCJcbiAgW2N1c3RvbVBsYWNlaG9sZGVyXT1cImN1c3RvbVBsYWNlaG9sZGVyXCJcbiAgW2N1c3RvbURhdGFRdWVyeV09XCJjdXN0b21RdWVyeVwiXG4gIFtleHRlcm5hbFRlcm1dPVwidHlwZWFoZWFkUmVsb2FkXCJcbj5cbiAgPGM4eS1zZWFyY2gtY3VzdG9tLWZpbHRlcnNcbiAgICAqbmdJZj1cInNob3dBZHZhbmNlZEZpbHRlcnNcIlxuICAgIGNsYXNzPVwiZC1mbGV4IGdhcC0xNiBwLWwtNCBwLWwtMjQgcC1yLTI0XCJcbiAgICAocmVmcmVzaCk9XCJ0cmlnZ2VyRGF0YUxvYWQoKVwiXG4gICAgKGN1c3RvbURhdGFRdWVyeSk9XCJjdXN0b21RdWVyeSA9ICRldmVudFwiXG4gID48L2M4eS1zZWFyY2gtY3VzdG9tLWZpbHRlcnM+XG48L2M4eS1zZWFyY2gtaW5wdXQ+XG4iXX0=
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { FormGroup, ReactiveFormsModule } from '@angular/forms';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { TenantService } from '@c8y/client';
|
|
5
|
+
import { ActivatedRoute, RouterLink } from '@angular/router';
|
|
6
|
+
import { AlertService, CoreModule, FormsModule, gettext } from '@c8y/ngx-components';
|
|
7
|
+
import { CustomPropertiesService } from '../custom-properties/custom-properties.service';
|
|
8
|
+
import { CustomPropertyFieldComponent } from '../custom-properties/custom-property-field/custom-property-field.component';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@c8y/client";
|
|
11
|
+
import * as i2 from "@c8y/ngx-components";
|
|
12
|
+
import * as i3 from "@angular/router";
|
|
13
|
+
import * as i4 from "../custom-properties/custom-properties.service";
|
|
14
|
+
import * as i5 from "@angular/common";
|
|
15
|
+
import * as i6 from "@angular/forms";
|
|
16
|
+
export class CustomPropertiesComponent {
|
|
17
|
+
constructor(tenantService, alertService, activatedRoute, customPropertiesService) {
|
|
18
|
+
this.tenantService = tenantService;
|
|
19
|
+
this.alertService = alertService;
|
|
20
|
+
this.activatedRoute = activatedRoute;
|
|
21
|
+
this.customPropertiesService = customPropertiesService;
|
|
22
|
+
this.customPropsForm = new FormGroup({});
|
|
23
|
+
this.tenant = null;
|
|
24
|
+
this.initialized = false;
|
|
25
|
+
}
|
|
26
|
+
async ngOnInit() {
|
|
27
|
+
await this.loadTenantDetails();
|
|
28
|
+
const { form, fields } = await this.customPropertiesService.getFormAndFieldList();
|
|
29
|
+
this.customPropsForm = form;
|
|
30
|
+
this.fieldDefinitions = fields;
|
|
31
|
+
this.applyValuesFromTenant();
|
|
32
|
+
this.initialized = true;
|
|
33
|
+
}
|
|
34
|
+
async onSubmit() {
|
|
35
|
+
if (this.customPropsForm.invalid || !this.tenant) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const updatedTenant = {
|
|
39
|
+
...this.tenant,
|
|
40
|
+
customProperties: {
|
|
41
|
+
...this.tenant.customProperties,
|
|
42
|
+
...this.getDirtyValues()
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
try {
|
|
46
|
+
await this.tenantService.update(updatedTenant);
|
|
47
|
+
this.alertService.success(gettext('Custom properties values saved.'));
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
this.alertService.addServerFailure(error);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async loadTenantDetails() {
|
|
54
|
+
try {
|
|
55
|
+
const result = await this.tenantService.detail(this.activatedRoute.snapshot.parent.data.contextData.id);
|
|
56
|
+
this.tenant = result.data;
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
this.alertService.addServerFailure(error);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
applyValuesFromTenant() {
|
|
63
|
+
const customProps = this.tenant?.customProperties || {};
|
|
64
|
+
this.customPropsForm.patchValue(customProps);
|
|
65
|
+
}
|
|
66
|
+
getDirtyValues() {
|
|
67
|
+
const dirtyValues = {};
|
|
68
|
+
Object.keys(this.customPropsForm.controls).forEach(key => {
|
|
69
|
+
const control = this.customPropsForm.controls[key];
|
|
70
|
+
if (control && control.dirty && control.value !== null) {
|
|
71
|
+
dirtyValues[key] = control.value;
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
return dirtyValues;
|
|
75
|
+
}
|
|
76
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CustomPropertiesComponent, deps: [{ token: i1.TenantService }, { token: i2.AlertService }, { token: i3.ActivatedRoute }, { token: i4.CustomPropertiesService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
77
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: CustomPropertiesComponent, isStandalone: true, selector: "c8y-custom-properties", ngImport: i0, template: "<c8y-title *ngIf=\"tenant\">\n {{ tenant.company }}\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-layers'\"\n [label]=\"'Tenants' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-layers'\"\n [label]=\"'Subtenants' | translate\"\n [path]=\"'/tenants'\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<ng-container>\n <form\n [formGroup]=\"customPropsForm\"\n (ngSubmit)=\"onSubmit()\"\n >\n <div class=\"card card--fullpage m-b-0\">\n <div class=\"card-header separator\">\n <div\n class=\"card-title\"\n translate\n >\n Custom properties\n </div>\n </div>\n\n <div class=\"inner-scroll\">\n <div\n class=\"card-block\"\n *ngIf=\"!initialized\"\n >\n <c8y-loading></c8y-loading>\n </div>\n\n <c8y-help src=\"/docs/enterprise-tenant/managing-tenants/#custom-properties\"></c8y-help>\n\n <!-- empty state -->\n <c8y-ui-empty-state\n [icon]=\"'property-script'\"\n [title]=\"'No custom properties to display.' | translate\"\n [subtitle]=\"'Add a new tenant property in Properties library.' | translate\"\n *ngIf=\"fieldDefinitions?.length === 0 && initialized\"\n >\n <p c8y-guide-docs>\n <small translate>\n Find out more in the\n <a c8y-guide-href=\"/docs/enterprise-tenant/managing-tenants/#custom-properties\">\n User guide\n </a>\n .\n </small>\n </p>\n </c8y-ui-empty-state>\n\n <div\n class=\"card-block\"\n *ngIf=\"initialized\"\n >\n <ng-container *ngFor=\"let field of fieldDefinitions\">\n <c8y-custom-property-field\n [fieldDefinition]=\"field\"\n [form]=\"customPropsForm\"\n ></c8y-custom-property-field>\n </ng-container>\n </div>\n </div>\n\n <div\n class=\"card-footer separator\"\n *ngIf=\"initialized\"\n >\n <button\n class=\"btn btn-default\"\n type=\"button\"\n [routerLink]=\"['/tenants']\"\n translate\n data-cy=\"custom-properties--cancel-button\"\n >\n Cancel\n </button>\n <button\n class=\"btn btn-primary\"\n type=\"submit\"\n [disabled]=\"!(!customPropsForm.invalid && customPropsForm.dirty)\"\n translate\n data-cy=\"custom-properties--save-button\"\n >\n Save\n </button>\n </div>\n </div>\n </form>\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: CoreModule }, { kind: "component", type: i2.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i2.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: i2.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "component", type: i2.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i2.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i2.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "component", type: i2.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: CustomPropertyFieldComponent, selector: "c8y-custom-property-field", inputs: ["fieldDefinition", "form"] }] }); }
|
|
78
|
+
}
|
|
79
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CustomPropertiesComponent, decorators: [{
|
|
80
|
+
type: Component,
|
|
81
|
+
args: [{ selector: 'c8y-custom-properties', standalone: true, imports: [
|
|
82
|
+
CommonModule,
|
|
83
|
+
ReactiveFormsModule,
|
|
84
|
+
FormsModule,
|
|
85
|
+
CoreModule,
|
|
86
|
+
RouterLink,
|
|
87
|
+
CustomPropertyFieldComponent
|
|
88
|
+
], template: "<c8y-title *ngIf=\"tenant\">\n {{ tenant.company }}\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-layers'\"\n [label]=\"'Tenants' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-layers'\"\n [label]=\"'Subtenants' | translate\"\n [path]=\"'/tenants'\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<ng-container>\n <form\n [formGroup]=\"customPropsForm\"\n (ngSubmit)=\"onSubmit()\"\n >\n <div class=\"card card--fullpage m-b-0\">\n <div class=\"card-header separator\">\n <div\n class=\"card-title\"\n translate\n >\n Custom properties\n </div>\n </div>\n\n <div class=\"inner-scroll\">\n <div\n class=\"card-block\"\n *ngIf=\"!initialized\"\n >\n <c8y-loading></c8y-loading>\n </div>\n\n <c8y-help src=\"/docs/enterprise-tenant/managing-tenants/#custom-properties\"></c8y-help>\n\n <!-- empty state -->\n <c8y-ui-empty-state\n [icon]=\"'property-script'\"\n [title]=\"'No custom properties to display.' | translate\"\n [subtitle]=\"'Add a new tenant property in Properties library.' | translate\"\n *ngIf=\"fieldDefinitions?.length === 0 && initialized\"\n >\n <p c8y-guide-docs>\n <small translate>\n Find out more in the\n <a c8y-guide-href=\"/docs/enterprise-tenant/managing-tenants/#custom-properties\">\n User guide\n </a>\n .\n </small>\n </p>\n </c8y-ui-empty-state>\n\n <div\n class=\"card-block\"\n *ngIf=\"initialized\"\n >\n <ng-container *ngFor=\"let field of fieldDefinitions\">\n <c8y-custom-property-field\n [fieldDefinition]=\"field\"\n [form]=\"customPropsForm\"\n ></c8y-custom-property-field>\n </ng-container>\n </div>\n </div>\n\n <div\n class=\"card-footer separator\"\n *ngIf=\"initialized\"\n >\n <button\n class=\"btn btn-default\"\n type=\"button\"\n [routerLink]=\"['/tenants']\"\n translate\n data-cy=\"custom-properties--cancel-button\"\n >\n Cancel\n </button>\n <button\n class=\"btn btn-primary\"\n type=\"submit\"\n [disabled]=\"!(!customPropsForm.invalid && customPropsForm.dirty)\"\n translate\n data-cy=\"custom-properties--save-button\"\n >\n Save\n </button>\n </div>\n </div>\n </form>\n</ng-container>\n" }]
|
|
89
|
+
}], ctorParameters: () => [{ type: i1.TenantService }, { type: i2.AlertService }, { type: i3.ActivatedRoute }, { type: i4.CustomPropertiesService }] });
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXByb3BlcnRpZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVuYW50cy9jdXN0b20tcHJvcGVydGllcy9jdXN0b20tcHJvcGVydGllcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi90ZW5hbnRzL2N1c3RvbS1wcm9wZXJ0aWVzL2N1c3RvbS1wcm9wZXJ0aWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQW9CLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRixPQUFPLEVBQ0wsdUJBQXVCLEVBRXhCLE1BQU0sZ0RBQWdELENBQUM7QUFDeEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNEVBQTRFLENBQUM7Ozs7Ozs7O0FBZTFILE1BQU0sT0FBTyx5QkFBeUI7SUFNcEMsWUFDVSxhQUE0QixFQUM1QixZQUEwQixFQUMxQixjQUE4QixFQUM5Qix1QkFBZ0Q7UUFIaEQsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFSMUQsb0JBQWUsR0FBYyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvQyxXQUFN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QUNWLFVBQVUsb09BQ1YsNEJBQTRCOzsyRkFJbkIseUJBQXlCO2tCQWJyQyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsVUFBVTt3QkFDVixVQUFVO3dCQUNWLDRCQUE0QjtxQkFDN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IElSZXN1bHQsIElUZW5hbnQsIFRlbmFudFNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UsIENvcmVNb2R1bGUsIEZvcm1zTW9kdWxlLCBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBDdXN0b21Qcm9wZXJ0aWVzU2VydmljZSxcbiAgVGVuYW50Q3VzdG9tUHJvcGVydHlGaWVsZFxufSBmcm9tICcuLi9jdXN0b20tcHJvcGVydGllcy9jdXN0b20tcHJvcGVydGllcy5zZXJ2aWNlJztcbmltcG9ydCB7IEN1c3RvbVByb3BlcnR5RmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9jdXN0b20tcHJvcGVydGllcy9jdXN0b20tcHJvcGVydHktZmllbGQvY3VzdG9tLXByb3BlcnR5LWZpZWxkLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1jdXN0b20tcHJvcGVydGllcycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBDb3JlTW9kdWxlLFxuICAgIFJvdXRlckxpbmssXG4gICAgQ3VzdG9tUHJvcGVydHlGaWVsZENvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tLXByb3BlcnRpZXMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbVByb3BlcnRpZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBmaWVsZERlZmluaXRpb25zOiBUZW5hbnRDdXN0b21Qcm9wZXJ0eUZpZWxkW107XG4gIGN1c3RvbVByb3BzRm9ybTogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIHRlbmFudDogSVRlbmFudCB8IG51bGwgPSBudWxsO1xuICBpbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGVuYW50U2VydmljZTogVGVuYW50U2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgY3VzdG9tUHJvcGVydGllc1NlcnZpY2U6IEN1c3RvbVByb3BlcnRpZXNTZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBhd2FpdCB0aGlzLmxvYWRUZW5hbnREZXRhaWxzKCk7XG4gICAgY29uc3QgeyBmb3JtLCBmaWVsZHMgfSA9IGF3YWl0IHRoaXMuY3VzdG9tUHJvcGVydGllc1NlcnZpY2UuZ2V0Rm9ybUFuZEZpZWxkTGlzdCgpO1xuICAgIHRoaXMuY3VzdG9tUHJvcHNGb3JtID0gZm9ybTtcbiAgICB0aGlzLmZpZWxkRGVmaW5pdGlvbnMgPSBmaWVsZHM7XG4gICAgdGhpcy5hcHBseVZhbHVlc0Zyb21UZW5hbnQoKTtcbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIG9uU3VibWl0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmN1c3RvbVByb3BzRm9ybS5pbnZhbGlkIHx8ICF0aGlzLnRlbmFudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZWRUZW5hbnQ6IElUZW5hbnQgPSB7XG4gICAgICAuLi50aGlzLnRlbmFudCxcbiAgICAgIGN1c3RvbVByb3BlcnRpZXM6IHtcbiAgICAgICAgLi4udGhpcy50ZW5hbnQuY3VzdG9tUHJvcGVydGllcyxcbiAgICAgICAgLi4udGhpcy5nZXREaXJ0eVZhbHVlcygpXG4gICAgICB9XG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnRlbmFudFNlcnZpY2UudXBkYXRlKHVwZGF0ZWRUZW5hbnQpO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhnZXR0ZXh0KCdDdXN0b20gcHJvcGVydGllcyB2YWx1ZXMgc2F2ZWQuJykpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRUZW5hbnREZXRhaWxzKCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQ6IElSZXN1bHQ8SVRlbmFudD4gPSBhd2FpdCB0aGlzLnRlbmFudFNlcnZpY2UuZGV0YWlsKFxuICAgICAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnBhcmVudC5kYXRhLmNvbnRleHREYXRhLmlkXG4gICAgICApO1xuICAgICAgdGhpcy50ZW5hbnQgPSByZXN1bHQuZGF0YTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVZhbHVlc0Zyb21UZW5hbnQoKTogdm9pZCB7XG4gICAgY29uc3QgY3VzdG9tUHJvcHMgPSB0aGlzLnRlbmFudD8uY3VzdG9tUHJvcGVydGllcyB8fCB7fTtcbiAgICB0aGlzLmN1c3RvbVByb3BzRm9ybS5wYXRjaFZhbHVlKGN1c3RvbVByb3BzKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGlydHlWYWx1ZXMoKTogeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0ge1xuICAgIGNvbnN0IGRpcnR5VmFsdWVzOiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSA9IHt9O1xuICAgIE9iamVjdC5rZXlzKHRoaXMuY3VzdG9tUHJvcHNGb3JtLmNvbnRyb2xzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jdXN0b21Qcm9wc0Zvcm0uY29udHJvbHNba2V5XTtcbiAgICAgIGlmIChjb250cm9sICYmIGNvbnRyb2wuZGlydHkgJiYgY29udHJvbC52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICBkaXJ0eVZhbHVlc1trZXldID0gY29udHJvbC52YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBkaXJ0eVZhbHVlcztcbiAgfVxufVxuIiwiPGM4eS10aXRsZSAqbmdJZj1cInRlbmFudFwiPlxuICB7eyB0ZW5hbnQuY29tcGFueSB9fVxuPC9jOHktdGl0bGU+XG5cbjxjOHktYnJlYWRjcnVtYj5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBbaWNvbl09XCInYzh5LWxheWVycydcIlxuICAgIFtsYWJlbF09XCInVGVuYW50cycgfCB0cmFuc2xhdGVcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIFtpY29uXT1cIidjOHktbGF5ZXJzJ1wiXG4gICAgW2xhYmVsXT1cIidTdWJ0ZW5hbnRzJyB8IHRyYW5zbGF0ZVwiXG4gICAgW3BhdGhdPVwiJy90ZW5hbnRzJ1wiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG48L2M4eS1icmVhZGNydW1iPlxuXG48bmctY29udGFpbmVyPlxuICA8Zm9ybVxuICAgIFtmb3JtR3JvdXBdPVwiY3VzdG9tUHJvcHNGb3JtXCJcbiAgICAobmdTdWJtaXQpPVwib25TdWJtaXQoKVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLS1mdWxscGFnZSBtLWItMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvclwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjYXJkLXRpdGxlXCJcbiAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgPlxuICAgICAgICAgIEN1c3RvbSBwcm9wZXJ0aWVzXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGxcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY2FyZC1ibG9ja1wiXG4gICAgICAgICAgKm5nSWY9XCIhaW5pdGlhbGl6ZWRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGM4eS1sb2FkaW5nPjwvYzh5LWxvYWRpbmc+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxjOHktaGVscCBzcmM9XCIvZG9jcy9lbnRlcnByaXNlLXRlbmFudC9tYW5hZ2luZy10ZW5hbnRzLyNjdXN0b20tcHJvcGVydGllc1wiPjwvYzh5LWhlbHA+XG5cbiAgICAgICAgPCEtLSBlbXB0eSBzdGF0ZSAtLT5cbiAgICAgICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgICAgIFtpY29uXT1cIidwcm9wZXJ0eS1zY3JpcHQnXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ05vIGN1c3RvbSBwcm9wZXJ0aWVzIHRvIGRpc3BsYXkuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW3N1YnRpdGxlXT1cIidBZGQgYSBuZXcgdGVuYW50IHByb3BlcnR5IGluIFByb3BlcnRpZXMgbGlicmFyeS4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAqbmdJZj1cImZpZWxkRGVmaW5pdGlvbnM/Lmxlbmd0aCA9PT0gMCAmJiBpbml0aWFsaXplZFwiXG4gICAgICAgID5cbiAgICAgICAgICA8cCBjOHktZ3VpZGUtZG9jcz5cbiAgICAgICAgICAgIDxzbWFsbCB0cmFuc2xhdGU+XG4gICAgICAgICAgICAgIEZpbmQgb3V0IG1vcmUgaW4gdGhlXG4gICAgICAgICAgICAgIDxhIGM4eS1ndWlkZS1ocmVmPVwiL2RvY3MvZW50ZXJwcmlzZS10ZW5hbnQvbWFuYWdpbmctdGVuYW50cy8jY3VzdG9tLXByb3BlcnRpZXNcIj5cbiAgICAgICAgICAgICAgICBVc2VyIGd1aWRlXG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgLlxuICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNhcmQtYmxvY2tcIlxuICAgICAgICAgICpuZ0lmPVwiaW5pdGlhbGl6ZWRcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2YgZmllbGREZWZpbml0aW9uc1wiPlxuICAgICAgICAgICAgPGM4eS1jdXN0b20tcHJvcGVydHktZmllbGRcbiAgICAgICAgICAgICAgW2ZpZWxkRGVmaW5pdGlvbl09XCJmaWVsZFwiXG4gICAgICAgICAgICAgIFtmb3JtXT1cImN1c3RvbVByb3BzRm9ybVwiXG4gICAgICAgICAgICA+PC9jOHktY3VzdG9tLXByb3BlcnR5LWZpZWxkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiY2FyZC1mb290ZXIgc2VwYXJhdG9yXCJcbiAgICAgICAgKm5nSWY9XCJpbml0aWFsaXplZFwiXG4gICAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvdGVuYW50cyddXCJcbiAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICBkYXRhLWN5PVwiY3VzdG9tLXByb3BlcnRpZXMtLWNhbmNlbC1idXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAgQ2FuY2VsXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhKCFjdXN0b21Qcm9wc0Zvcm0uaW52YWxpZCAmJiBjdXN0b21Qcm9wc0Zvcm0uZGlydHkpXCJcbiAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICBkYXRhLWN5PVwiY3VzdG9tLXByb3BlcnRpZXMtLXNhdmUtYnV0dG9uXCJcbiAgICAgICAgPlxuICAgICAgICAgIFNhdmVcbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { InventoryService } from '@c8y/client';
|
|
3
|
+
import { FormControl, FormGroup, Validators } from '@angular/forms';
|
|
4
|
+
import { ValidationPattern } from '@c8y/ngx-components';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@c8y/client";
|
|
7
|
+
const defaultFilters = { pageSize: 1000, type: 'c8y_JsonSchema', withTotalPages: true };
|
|
8
|
+
export class CustomPropertiesService {
|
|
9
|
+
constructor(inventoryService) {
|
|
10
|
+
this.inventoryService = inventoryService;
|
|
11
|
+
}
|
|
12
|
+
async getFormAndFieldList() {
|
|
13
|
+
const schema = await this.getCustomProperties();
|
|
14
|
+
const formGroup = this.buildFormGroup(schema);
|
|
15
|
+
const fields = this.buildFieldList(formGroup, schema);
|
|
16
|
+
return { form: formGroup, fields };
|
|
17
|
+
}
|
|
18
|
+
async getCustomProperties() {
|
|
19
|
+
let customFieldsSchema = {};
|
|
20
|
+
const customProperties = await this.inventoryService.list(defaultFilters);
|
|
21
|
+
customProperties.data.forEach(item => {
|
|
22
|
+
const fieldSchema = item['c8y_JsonSchema'].properties;
|
|
23
|
+
customFieldsSchema = { ...customFieldsSchema, ...fieldSchema };
|
|
24
|
+
});
|
|
25
|
+
return customFieldsSchema;
|
|
26
|
+
}
|
|
27
|
+
buildFormGroup(schema) {
|
|
28
|
+
const fg = new FormGroup({});
|
|
29
|
+
for (const [key, value] of Object.entries(schema)) {
|
|
30
|
+
const control = new FormControl(value.default, []);
|
|
31
|
+
this.applyValidators(control, value);
|
|
32
|
+
fg.addControl(key, control);
|
|
33
|
+
}
|
|
34
|
+
return fg;
|
|
35
|
+
}
|
|
36
|
+
applyValidators(control, props) {
|
|
37
|
+
const validatorsMap = {
|
|
38
|
+
required: Validators.required,
|
|
39
|
+
minimum: Validators.min(props.minimum),
|
|
40
|
+
maximum: Validators.max(props.maximum),
|
|
41
|
+
minLength: Validators.minLength(props.minLength),
|
|
42
|
+
maxLength: Validators.maxLength(props.maxLength),
|
|
43
|
+
pattern: Validators.pattern(props.pattern)
|
|
44
|
+
};
|
|
45
|
+
Object.entries(validatorsMap).forEach(([key, validator]) => {
|
|
46
|
+
if (props[key] !== undefined) {
|
|
47
|
+
control.addValidators(validator);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
if (props.type === 'integer') {
|
|
51
|
+
control.addValidators(Validators.pattern(ValidationPattern.rules.integer.pattern));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
buildFieldList(form, schema) {
|
|
55
|
+
const fieldList = [];
|
|
56
|
+
Object.entries(schema).forEach(([key, value]) => {
|
|
57
|
+
fieldList.push({
|
|
58
|
+
id: key,
|
|
59
|
+
label: value.title,
|
|
60
|
+
type: value.type,
|
|
61
|
+
format: value.format,
|
|
62
|
+
formControlReference: form.get(key)
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
return fieldList;
|
|
66
|
+
}
|
|
67
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CustomPropertiesService, deps: [{ token: i1.InventoryService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
68
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CustomPropertiesService, providedIn: 'root' }); }
|
|
69
|
+
}
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CustomPropertiesService, decorators: [{
|
|
71
|
+
type: Injectable,
|
|
72
|
+
args: [{
|
|
73
|
+
providedIn: 'root'
|
|
74
|
+
}]
|
|
75
|
+
}], ctorParameters: () => [{ type: i1.InventoryService }] });
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXByb3BlcnRpZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RlbmFudHMvY3VzdG9tLXByb3BlcnRpZXMvY3VzdG9tLXByb3BlcnRpZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQW1CLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQWF4RCxNQUFNLGNBQWMsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUt4RixNQUFNLE9BQU8sdUJBQXVCO0lBQ2xDLFlBQW9CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQUcsQ0FBQztJQUUxRCxLQUFLLENBQUMsbUJBQW1CO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDaEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRU8sS0FBSyxDQUFDLG1CQUFtQjtRQUMvQixJQUFJLGtCQUFrQixHQUFtQixFQUFFLENBQUM7UUFDNUMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFB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R0FsRVUsdUJBQXVCO2tIQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTs7MkZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEludmVudG9yeVNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBKU09OU2NoZW1hNywgSlNPTlNjaGVtYTdUeXBlTmFtZSB9IGZyb20gJ2pzb24tc2NoZW1hJztcbmltcG9ydCB7IFZhbGlkYXRpb25QYXR0ZXJuIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5cbnR5cGUgUHJvcGVydGllc1R5cGUgPSB7IFtrZXk6IHN0cmluZ106IEpTT05TY2hlbWE3IH07XG5cbi8vIE1vZGVsIGZvciBpbmRpdmlkdWFsIHRlbmFudCBjdXN0b20gcHJvcGVydHkgZmllbGRcbmV4cG9ydCBpbnRlcmZhY2UgVGVuYW50Q3VzdG9tUHJvcGVydHlGaWVsZCB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHR5cGU6IEpTT05TY2hlbWE3VHlwZU5hbWUgfCBKU09OU2NoZW1hN1R5cGVOYW1lW107XG4gIGZvcm1hdD86ICdkYXRldGltZScgfCBzdHJpbmc7XG4gIGZvcm1Db250cm9sUmVmZXJlbmNlOiBBYnN0cmFjdENvbnRyb2w7XG59XG5cbmNvbnN0IGRlZmF1bHRGaWx0ZXJzID0geyBwYWdlU2l6ZTogMTAwMCwgdHlwZTogJ2M4eV9Kc29uU2NoZW1hJywgd2l0aFRvdGFsUGFnZXM6IHRydWUgfTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tUHJvcGVydGllc1NlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGludmVudG9yeVNlcnZpY2U6IEludmVudG9yeVNlcnZpY2UpIHt9XG5cbiAgYXN5bmMgZ2V0Rm9ybUFuZEZpZWxkTGlzdCgpOiBQcm9taXNlPHsgZm9ybTogRm9ybUdyb3VwOyBmaWVsZHM6IFRlbmFudEN1c3RvbVByb3BlcnR5RmllbGRbXSB9PiB7XG4gICAgY29uc3Qgc2NoZW1hID0gYXdhaXQgdGhpcy5nZXRDdXN0b21Qcm9wZXJ0aWVzKCk7XG4gICAgY29uc3QgZm9ybUdyb3VwID0gdGhpcy5idWlsZEZvcm1Hcm91cChzY2hlbWEpO1xuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuYnVpbGRGaWVsZExpc3QoZm9ybUdyb3VwLCBzY2hlbWEpO1xuICAgIHJldHVybiB7IGZvcm06IGZvcm1Hcm91cCwgZmllbGRzIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldEN1c3RvbVByb3BlcnRpZXMoKTogUHJvbWlzZTxQcm9wZXJ0aWVzVHlwZT4ge1xuICAgIGxldCBjdXN0b21GaWVsZHNTY2hlbWE6IFByb3BlcnRpZXNUeXBlID0ge307XG4gICAgY29uc3QgY3VzdG9tUHJvcGVydGllcyA9IGF3YWl0IHRoaXMuaW52ZW50b3J5U2VydmljZS5saXN0KGRlZmF1bHRGaWx0ZXJzKTtcblxuICAgIGN1c3RvbVByb3BlcnRpZXMuZGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgY29uc3QgZmllbGRTY2hlbWE6IFByb3BlcnRpZXNUeXBlID0gaXRlbVsnYzh5X0pzb25TY2hlbWEnXS5wcm9wZXJ0aWVzO1xuICAgICAgY3VzdG9tRmllbGRzU2NoZW1hID0geyAuLi5jdXN0b21GaWVsZHNTY2hlbWEsIC4uLihmaWVsZFNjaGVtYSBhcyBvYmplY3QpIH07XG4gICAgfSk7XG4gICAgcmV0dXJuIGN1c3RvbUZpZWxkc1NjaGVtYTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRGb3JtR3JvdXAoc2NoZW1hOiBQcm9wZXJ0aWVzVHlwZSk6IEZvcm1Hcm91cCB7XG4gICAgY29uc3QgZmcgPSBuZXcgRm9ybUdyb3VwKHt9KTtcblxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHNjaGVtYSkpIHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wodmFsdWUuZGVmYXVsdCwgW10pO1xuICAgICAgdGhpcy5hcHBseVZhbGlkYXRvcnMoY29udHJvbCwgdmFsdWUpO1xuICAgICAgZmcuYWRkQ29udHJvbChrZXksIGNvbnRyb2wpO1xuICAgIH1cbiAgICByZXR1cm4gZmc7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5VmFsaWRhdG9ycyhjb250cm9sOiBGb3JtQ29udHJvbCwgcHJvcHM6IEpTT05TY2hlbWE3KTogdm9pZCB7XG4gICAgY29uc3QgdmFsaWRhdG9yc01hcCA9IHtcbiAgICAgIHJlcXVpcmVkOiBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgbWluaW11bTogVmFsaWRhdG9ycy5taW4ocHJvcHMubWluaW11bSksXG4gICAgICBtYXhpbXVtOiBWYWxpZGF0b3JzLm1heChwcm9wcy5tYXhpbXVtKSxcbiAgICAgIG1pbkxlbmd0aDogVmFsaWRhdG9ycy5taW5MZW5ndGgocHJvcHMubWluTGVuZ3RoKSxcbiAgICAgIG1heExlbmd0aDogVmFsaWRhdG9ycy5tYXhMZW5ndGgocHJvcHMubWF4TGVuZ3RoKSxcbiAgICAgIHBhdHRlcm46IFZhbGlkYXRvcnMucGF0dGVybihwcm9wcy5wYXR0ZXJuKVxuICAgIH07XG5cbiAgICBPYmplY3QuZW50cmllcyh2YWxpZGF0b3JzTWFwKS5mb3JFYWNoKChba2V5LCB2YWxpZGF0b3JdKSA9PiB7XG4gICAgICBpZiAocHJvcHNba2V5IGFzIGtleW9mIEpTT05TY2hlbWE3XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnRyb2wuYWRkVmFsaWRhdG9ycyh2YWxpZGF0b3IpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLnR5cGUgPT09ICdpbnRlZ2VyJykge1xuICAgICAgY29udHJvbC5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucGF0dGVybihWYWxpZGF0aW9uUGF0dGVybi5ydWxlcy5pbnRlZ2VyLnBhdHRlcm4pKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRmllbGRMaXN0KGZvcm06IEZvcm1Hcm91cCwgc2NoZW1hOiBQcm9wZXJ0aWVzVHlwZSk6IFRlbmFudEN1c3RvbVByb3BlcnR5RmllbGRbXSB7XG4gICAgY29uc3QgZmllbGRMaXN0OiBUZW5hbnRDdXN0b21Qcm9wZXJ0eUZpZWxkW10gPSBbXTtcbiAgICBPYmplY3QuZW50cmllcyhzY2hlbWEpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgZmllbGRMaXN0LnB1c2goe1xuICAgICAgICBpZDoga2V5LFxuICAgICAgICBsYWJlbDogdmFsdWUudGl0bGUsXG4gICAgICAgIHR5cGU6IHZhbHVlLnR5cGUsXG4gICAgICAgIGZvcm1hdDogdmFsdWUuZm9ybWF0LFxuICAgICAgICBmb3JtQ29udHJvbFJlZmVyZW5jZTogZm9ybS5nZXQoa2V5KSBhcyBGb3JtQ29udHJvbFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZmllbGRMaXN0O1xuICB9XG59XG4iXX0=
|
package/esm2022/tenants/custom-properties/custom-property-field/custom-property-field.component.mjs
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { C8yTranslatePipe, DateTimePickerModule, FormGroupComponent } from '@c8y/ngx-components';
|
|
4
|
+
import { FormsModule } from '@c8y/ngx-components';
|
|
5
|
+
import { FormGroup, ReactiveFormsModule } from '@angular/forms';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/common";
|
|
8
|
+
import * as i2 from "@angular/forms";
|
|
9
|
+
import * as i3 from "@c8y/ngx-components";
|
|
10
|
+
export class CustomPropertyFieldComponent {
|
|
11
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CustomPropertyFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: CustomPropertyFieldComponent, isStandalone: true, selector: "c8y-custom-property-field", inputs: { fieldDefinition: "fieldDefinition", form: "form" }, ngImport: i0, template: "<ng-container *ngIf=\"form && fieldDefinition\">\n <ng-container [ngSwitch]=\"fieldDefinition.type\">\n <ng-container *ngSwitchCase=\"'boolean'\">\n <c8y-form-group [formGroup]=\"form\">\n <label\n class=\"c8y-checkbox\"\n [title]=\"fieldDefinition.label | translate\"\n [for]=\"fieldDefinition.id\"\n >\n <input\n type=\"checkbox\"\n [id]=\"fieldDefinition.id\"\n [formControlName]=\"fieldDefinition.id\"\n />\n <span></span>\n <span>{{ fieldDefinition.label | translate }}</span>\n </label>\n </c8y-form-group>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'number'\">\n <c8y-form-group [formGroup]=\"form\">\n <label [for]=\"fieldDefinition.id\">\n {{ fieldDefinition.label | translate }}\n </label>\n <input\n class=\"form-control\"\n type=\"number\"\n [id]=\"fieldDefinition.id\"\n [formControlName]=\"fieldDefinition.id\"\n />\n </c8y-form-group>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'integer'\">\n <c8y-form-group [formGroup]=\"form\">\n <label [for]=\"fieldDefinition.id\">\n {{ fieldDefinition.label | translate }}\n </label>\n <input\n class=\"form-control\"\n type=\"number\"\n [id]=\"fieldDefinition.id\"\n [formControlName]=\"fieldDefinition.id\"\n />\n </c8y-form-group>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'string'\">\n <c8y-form-group\n *ngIf=\"!fieldDefinition.format\"\n [formGroup]=\"form\"\n >\n <label [for]=\"fieldDefinition.id\">\n {{ fieldDefinition.label | translate }}\n </label>\n <input\n class=\"form-control\"\n type=\"text\"\n [id]=\"fieldDefinition.id\"\n [formControlName]=\"fieldDefinition.id\"\n />\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"fieldDefinition.format === 'datetime'\"\n [formGroup]=\"form\"\n >\n <label [for]=\"fieldDefinition.id\">\n {{ fieldDefinition.label | translate }}\n </label>\n <c8y-date-time-picker\n [id]=\"fieldDefinition.id\"\n [formControlName]=\"fieldDefinition.id\"\n data-cy=\"c8y-custom-property-field--date-time-picker\"\n ></c8y-date-time-picker>\n </c8y-form-group>\n </ng-container>\n </ng-container>\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: DateTimePickerModule }, { kind: "component", type: i3.DateTimePickerComponent, selector: "c8y-date-time-picker", inputs: ["minDate", "maxDate", "placeholder", "dateInputFormat", "adaptivePosition", "size", "dateType", "config"], outputs: ["onDateSelected"] }] }); }
|
|
13
|
+
}
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CustomPropertyFieldComponent, decorators: [{
|
|
15
|
+
type: Component,
|
|
16
|
+
args: [{ selector: 'c8y-custom-property-field', standalone: true, imports: [
|
|
17
|
+
CommonModule,
|
|
18
|
+
C8yTranslatePipe,
|
|
19
|
+
FormGroupComponent,
|
|
20
|
+
FormsModule,
|
|
21
|
+
ReactiveFormsModule,
|
|
22
|
+
DateTimePickerModule
|
|
23
|
+
], template: "<ng-container *ngIf=\"form && fieldDefinition\">\n <ng-container [ngSwitch]=\"fieldDefinition.type\">\n <ng-container *ngSwitchCase=\"'boolean'\">\n <c8y-form-group [formGroup]=\"form\">\n <label\n class=\"c8y-checkbox\"\n [title]=\"fieldDefinition.label | translate\"\n [for]=\"fieldDefinition.id\"\n >\n <input\n type=\"checkbox\"\n [id]=\"fieldDefinition.id\"\n [formControlName]=\"fieldDefinition.id\"\n />\n <span></span>\n <span>{{ fieldDefinition.label | translate }}</span>\n </label>\n </c8y-form-group>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'number'\">\n <c8y-form-group [formGroup]=\"form\">\n <label [for]=\"fieldDefinition.id\">\n {{ fieldDefinition.label | translate }}\n </label>\n <input\n class=\"form-control\"\n type=\"number\"\n [id]=\"fieldDefinition.id\"\n [formControlName]=\"fieldDefinition.id\"\n />\n </c8y-form-group>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'integer'\">\n <c8y-form-group [formGroup]=\"form\">\n <label [for]=\"fieldDefinition.id\">\n {{ fieldDefinition.label | translate }}\n </label>\n <input\n class=\"form-control\"\n type=\"number\"\n [id]=\"fieldDefinition.id\"\n [formControlName]=\"fieldDefinition.id\"\n />\n </c8y-form-group>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'string'\">\n <c8y-form-group\n *ngIf=\"!fieldDefinition.format\"\n [formGroup]=\"form\"\n >\n <label [for]=\"fieldDefinition.id\">\n {{ fieldDefinition.label | translate }}\n </label>\n <input\n class=\"form-control\"\n type=\"text\"\n [id]=\"fieldDefinition.id\"\n [formControlName]=\"fieldDefinition.id\"\n />\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"fieldDefinition.format === 'datetime'\"\n [formGroup]=\"form\"\n >\n <label [for]=\"fieldDefinition.id\">\n {{ fieldDefinition.label | translate }}\n </label>\n <c8y-date-time-picker\n [id]=\"fieldDefinition.id\"\n [formControlName]=\"fieldDefinition.id\"\n data-cy=\"c8y-custom-property-field--date-time-picker\"\n ></c8y-date-time-picker>\n </c8y-form-group>\n </ng-container>\n </ng-container>\n</ng-container>\n" }]
|
|
24
|
+
}], propDecorators: { fieldDefinition: [{
|
|
25
|
+
type: Input
|
|
26
|
+
}], form: [{
|
|
27
|
+
type: Input
|
|
28
|
+
}] } });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXByb3BlcnR5LWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RlbmFudHMvY3VzdG9tLXByb3BlcnRpZXMvY3VzdG9tLXByb3BlcnR5LWZpZWxkL2N1c3RvbS1wcm9wZXJ0eS1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi90ZW5hbnRzL2N1c3RvbS1wcm9wZXJ0aWVzL2N1c3RvbS1wcm9wZXJ0eS1maWVsZC9jdXN0b20tcHJvcGVydHktZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBZWhFLE1BQU0sT0FBTyw0QkFBNEI7OEdBQTVCLDRCQUE0QjtrR0FBNUIsNEJBQTRCLG1KQ3BCekMsdy9FQWdGQSwyQ0RyRUksWUFBWSwwVEFDWixnQkFBZ0Isa0RBQ2hCLGtCQUFrQixzSUFDbEIsV0FBVyw2L0JBQ1gsbUJBQW1CLCtVQUNuQixvQkFBb0I7OzJGQUlYLDRCQUE0QjtrQkFieEMsU0FBUzsrQkFDRSwyQkFBMkIsY0FDekIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixrQkFBa0I7d0JBQ2xCLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixvQkFBb0I7cUJBQ3JCOzhCQUtELGVBQWU7c0JBRGQsS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZW5hbnRDdXN0b21Qcm9wZXJ0eUZpZWxkIH0gZnJvbSAnLi4vY3VzdG9tLXByb3BlcnRpZXMuc2VydmljZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQzh5VHJhbnNsYXRlUGlwZSwgRGF0ZVRpbWVQaWNrZXJNb2R1bGUsIEZvcm1Hcm91cENvbXBvbmVudCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWN1c3RvbS1wcm9wZXJ0eS1maWVsZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQzh5VHJhbnNsYXRlUGlwZSxcbiAgICBGb3JtR3JvdXBDb21wb25lbnQsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBEYXRlVGltZVBpY2tlck1vZHVsZVxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tLXByb3BlcnR5LWZpZWxkLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBDdXN0b21Qcm9wZXJ0eUZpZWxkQ29tcG9uZW50IHtcbiAgQElucHV0KClcbiAgZmllbGREZWZpbml0aW9uOiBUZW5hbnRDdXN0b21Qcm9wZXJ0eUZpZWxkO1xuXG4gIEBJbnB1dCgpXG4gIGZvcm06IEZvcm1Hcm91cDtcbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtICYmIGZpZWxkRGVmaW5pdGlvblwiPlxuICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJmaWVsZERlZmluaXRpb24udHlwZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidib29sZWFuJ1wiPlxuICAgICAgPGM4eS1mb3JtLWdyb3VwIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICBjbGFzcz1cImM4eS1jaGVja2JveFwiXG4gICAgICAgICAgW3RpdGxlXT1cImZpZWxkRGVmaW5pdGlvbi5sYWJlbCB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW2Zvcl09XCJmaWVsZERlZmluaXRpb24uaWRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgW2lkXT1cImZpZWxkRGVmaW5pdGlvbi5pZFwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkRGVmaW5pdGlvbi5pZFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgPHNwYW4+e3sgZmllbGREZWZpbml0aW9uLmxhYmVsIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCI+XG4gICAgICA8Yzh5LWZvcm0tZ3JvdXAgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgICAgIDxsYWJlbCBbZm9yXT1cImZpZWxkRGVmaW5pdGlvbi5pZFwiPlxuICAgICAgICAgIHt7IGZpZWxkRGVmaW5pdGlvbi5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgW2lkXT1cImZpZWxkRGVmaW5pdGlvbi5pZFwiXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZERlZmluaXRpb24uaWRcIlxuICAgICAgICAvPlxuICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidpbnRlZ2VyJ1wiPlxuICAgICAgPGM4eS1mb3JtLWdyb3VwIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgICAgICA8bGFiZWwgW2Zvcl09XCJmaWVsZERlZmluaXRpb24uaWRcIj5cbiAgICAgICAgICB7eyBmaWVsZERlZmluaXRpb24ubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgIFtpZF09XCJmaWVsZERlZmluaXRpb24uaWRcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGREZWZpbml0aW9uLmlkXCJcbiAgICAgICAgLz5cbiAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc3RyaW5nJ1wiPlxuICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICpuZ0lmPVwiIWZpZWxkRGVmaW5pdGlvbi5mb3JtYXRcIlxuICAgICAgICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICAgICAgPlxuICAgICAgICA8bGFiZWwgW2Zvcl09XCJmaWVsZERlZmluaXRpb24uaWRcIj5cbiAgICAgICAgICB7eyBmaWVsZERlZmluaXRpb24ubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBbaWRdPVwiZmllbGREZWZpbml0aW9uLmlkXCJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkRGVmaW5pdGlvbi5pZFwiXG4gICAgICAgIC8+XG4gICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuXG4gICAgICA8Yzh5LWZvcm0tZ3JvdXBcbiAgICAgICAgKm5nSWY9XCJmaWVsZERlZmluaXRpb24uZm9ybWF0ID09PSAnZGF0ZXRpbWUnXCJcbiAgICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICAgID5cbiAgICAgICAgPGxhYmVsIFtmb3JdPVwiZmllbGREZWZpbml0aW9uLmlkXCI+XG4gICAgICAgICAge3sgZmllbGREZWZpbml0aW9uLmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxjOHktZGF0ZS10aW1lLXBpY2tlclxuICAgICAgICAgIFtpZF09XCJmaWVsZERlZmluaXRpb24uaWRcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGREZWZpbml0aW9uLmlkXCJcbiAgICAgICAgICBkYXRhLWN5PVwiYzh5LWN1c3RvbS1wcm9wZXJ0eS1maWVsZC0tZGF0ZS10aW1lLXBpY2tlclwiXG4gICAgICAgID48L2M4eS1kYXRlLXRpbWUtcGlja2VyPlxuICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
@@ -5,4 +5,5 @@ export * from './tenant-list/tenant-list.guard';
|
|
|
5
5
|
export * from './tenant-list/tenant-list.component';
|
|
6
6
|
export * from './tenant-list/creation-time.filtering-form-renderer.component';
|
|
7
7
|
export * from './tenant-list/status.filtering-form-renderer.component';
|
|
8
|
-
|
|
8
|
+
export * from './custom-properties/custom-properties.component';
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZW5hbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLCtEQUErRCxDQUFDO0FBQzlFLGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYyxpREFBaUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdGVuYW50cy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi90ZW5hbnRzLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vdGVuYW50cy1uYXZpZ2F0aW9uLmZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi90ZW5hbnQtbGlzdC90ZW5hbnQtbGlzdC5ndWFyZCc7XG5leHBvcnQgKiBmcm9tICcuL3RlbmFudC1saXN0L3RlbmFudC1saXN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3RlbmFudC1saXN0L2NyZWF0aW9uLXRpbWUuZmlsdGVyaW5nLWZvcm0tcmVuZGVyZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdGVuYW50LWxpc3Qvc3RhdHVzLmZpbHRlcmluZy1mb3JtLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2N1c3RvbS1wcm9wZXJ0aWVzL2N1c3RvbS1wcm9wZXJ0aWVzLmNvbXBvbmVudCc7XG4iXX0=
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { Validators } from '@angular/forms';
|
|
2
|
+
import { gettext } from '@c8y/ngx-components/gettext';
|
|
3
|
+
/**
|
|
4
|
+
* Define all hardTyped custom properties, and their configuration in one place.
|
|
5
|
+
*
|
|
6
|
+
* This exported const utilizes typescript inferring,
|
|
7
|
+
* while still benefiting from hard typing, thanks to "satisfies" keyword
|
|
8
|
+
*/
|
|
9
|
+
const tenantLimitsCustomPropertiesDefinition = {
|
|
10
|
+
//TODO: External reference - going to be moved to the Properties tab.
|
|
11
|
+
externalReference: {
|
|
12
|
+
id: 'externalReference',
|
|
13
|
+
validators: [],
|
|
14
|
+
defaultValue: null,
|
|
15
|
+
type: 'text',
|
|
16
|
+
label: gettext('External reference'),
|
|
17
|
+
placeholder: gettext('e.g. REF12345`reference number`')
|
|
18
|
+
},
|
|
19
|
+
limitDevicesNumber: {
|
|
20
|
+
id: 'limit.devices.number',
|
|
21
|
+
validators: [Validators.min(0)],
|
|
22
|
+
defaultValue: null,
|
|
23
|
+
type: 'number',
|
|
24
|
+
label: gettext('Limit number of devices'),
|
|
25
|
+
placeholder: gettext('e.g. {{ example }}'),
|
|
26
|
+
placeholderArgs: { example: 1000 }
|
|
27
|
+
},
|
|
28
|
+
limitHttpRequests: {
|
|
29
|
+
id: 'limit.http.requests',
|
|
30
|
+
validators: [Validators.min(-1)],
|
|
31
|
+
defaultValue: null,
|
|
32
|
+
type: 'number',
|
|
33
|
+
label: gettext('Limit HTTP requests'),
|
|
34
|
+
placeholder: gettext('e.g. {{ example }}'),
|
|
35
|
+
placeholderArgs: { example: 10000 }
|
|
36
|
+
},
|
|
37
|
+
limitHttpQueue: {
|
|
38
|
+
id: 'limit.http.queue',
|
|
39
|
+
validators: [Validators.min(-1)],
|
|
40
|
+
defaultValue: null,
|
|
41
|
+
type: 'number',
|
|
42
|
+
label: gettext('Limit HTTP queue'),
|
|
43
|
+
placeholder: gettext('e.g. {{ example }}'),
|
|
44
|
+
placeholderArgs: { example: 100 }
|
|
45
|
+
},
|
|
46
|
+
limitStreamRequests: {
|
|
47
|
+
id: 'limit.stream.requests',
|
|
48
|
+
validators: [Validators.min(-1)],
|
|
49
|
+
defaultValue: null,
|
|
50
|
+
type: 'number',
|
|
51
|
+
label: gettext('Limit stream requests'),
|
|
52
|
+
placeholder: gettext('e.g. {{ example }}'),
|
|
53
|
+
placeholderArgs: { example: 100 }
|
|
54
|
+
},
|
|
55
|
+
limitStreamQueue: {
|
|
56
|
+
id: 'limit.stream.queue',
|
|
57
|
+
validators: [Validators.min(-1)],
|
|
58
|
+
defaultValue: null,
|
|
59
|
+
type: 'number',
|
|
60
|
+
label: gettext('Limit stream queue'),
|
|
61
|
+
placeholder: gettext('e.g. {{ example }}'),
|
|
62
|
+
placeholderArgs: { example: 100 }
|
|
63
|
+
},
|
|
64
|
+
cepServerQueueLimit: {
|
|
65
|
+
id: 'cepServer.queue.limit',
|
|
66
|
+
validators: [Validators.min(-1)],
|
|
67
|
+
defaultValue: null,
|
|
68
|
+
type: 'number',
|
|
69
|
+
label: gettext('Limit CEP server queue'),
|
|
70
|
+
placeholder: gettext('e.g. {{ example }}'),
|
|
71
|
+
placeholderArgs: { example: 100 }
|
|
72
|
+
},
|
|
73
|
+
dataBrokerQueueLimit: {
|
|
74
|
+
id: 'data-broker.queue.limit',
|
|
75
|
+
validators: [Validators.min(0)],
|
|
76
|
+
defaultValue: null,
|
|
77
|
+
type: 'number',
|
|
78
|
+
label: gettext('Limit data broker queue'),
|
|
79
|
+
placeholder: gettext('e.g. {{ example }}'),
|
|
80
|
+
placeholderArgs: { example: 100 }
|
|
81
|
+
},
|
|
82
|
+
// TODO: Gainsight checkbox - going to be moved to the Properties tab.
|
|
83
|
+
gainsightEnabled: {
|
|
84
|
+
id: 'gainsightEnabled',
|
|
85
|
+
validators: [],
|
|
86
|
+
defaultValue: false,
|
|
87
|
+
type: 'checkbox',
|
|
88
|
+
label: gettext('Enable Gainsight product experience tracking')
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
export const tenantLimitsCustomProperties = tenantLimitsCustomPropertiesDefinition;
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LWxpbWl0cy1kZWZpbml0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RlbmFudHMvdGVuYW50LWxpbWl0cy90ZW5hbnQtbGltaXRzLWRlZmluaXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFjdEQ7Ozs7O0dBS0c7QUFDSCxNQUFNLHNDQUFzQyxHQUFHO0lBQzdDLHFFQUFxRTtJQUNyRSxpQkFBaUIsRUFBRTtRQUNqQixFQUFFLEVBQUUsbUJBQW1CO1FBQ3ZCLFVBQVUsRUFBRSxFQUFFO1FBQ2QsWUFBWSxFQUFFLElBQUk7UUFDbEIsSUFBSSxFQUFFLE1BQU07UUFDWixLQUFLLEVBQUUsT0FBTyxDQUFDLG9CQUFvQixDQUFDO1FBQ3BDLFdBQVcsRUFBRSxPQUFPLENBQUMsaUNBQWlDLENBQUM7S0FDeEQ7SUFDRCxrQkFBa0IsRUFBRTtRQUNsQixFQUFFLEVBQUUsc0JBQXNCO1FBQzFCLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsWUFBWSxFQUFFLElBQUk7UUFDbEIsSUFBSSxFQUFFLFFBQVE7UUFDZCxLQUFLLEVBQUUsT0FBTyxDQUFDLHlCQUF5QixDQUFDO1FBQ3pDLFdBQVcsRUFBRSxPQUFPLENBQUMsb0JBQW9CLENBQUM7UUFDMUMsZUFBZSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRTtLQUNuQztJQUNELGlCQUFpQixFQUFFO1FBQ2pCLEVBQUUsRUFBRSxxQkFBcUI7UUFDekIsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLFlBQVksRUFBRSxJQUFJO1FBQ2xCLElBQUksRUFBRSxRQUFRO1FBQ2QsS0FBSyxFQUFFLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQztRQUNyQyxXQUFXLEVBQUUsT0FBTyxDQUFDLG9CQUFvQixDQUFDO1FBQzFDLGVBQWUsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUU7S0FDcEM7SUFDRCxjQUFjLEVBQUU7UUFDZCxFQUFFLEVBQUUsa0JBQWtCO1FBQ3RCLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxZQUFZLEVBQUUsSUFBSTtRQUNsQixJQUFJLEVBQUUsUUFBUTtRQUNkLEtBQUssRUFBRSxPQUFPLENBQUMsa0JBQWtCLENBQUM7UUFDbEMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQztRQUMxQyxlQUFlLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFO0tBQ2xDO0lBQ0QsbUJBQW1CLEVBQUU7UUFDbkIsRUFBRSxFQUFFLHVCQUF1QjtRQUMzQixVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsWUFBWSxFQUFFLElBQUk7UUFDbEIsSUFBSSxFQUFFLFFBQVE7UUFDZCxLQUFLLEVBQUUsT0FBTyxDQUFDLHVCQUF1QixDQUFDO1FBQ3ZDLFdBQVcsRUFBRSxPQUFPLENBQUMsb0JBQW9CLENBQUM7UUFDMUMsZUFBZSxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRTtLQUNsQztJQUNELGdCQUFnQixFQUFFO1FBQ2hCLEVBQUUsRUFBRSxvQkFBb0I7UUFDeEIsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLFlBQVksRUFBRSxJQUFJO1FBQ2xCLElBQUksRUFBRSxRQUFRO1FBQ2QsS0FBSyxFQUFFLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQztRQUNwQyxXQUFXLEVBQUUsT0FBTyxDQUFDLG9CQUFvQixDQUFDO1FBQzFDLGVBQWUsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUU7S0FDbEM7SUFDRCxtQkFBbUIsRUFBRTtRQUNuQixFQUFFLEVBQUUsdUJBQXVCO1FBQzNCLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxZQUFZLEVBQUUsSUFBSTtRQUNsQixJQUFJLEVBQUUsUUFBUTtRQUNkLEtBQUssRUFBRSxPQUFPLENBQUMsd0JBQXdCLENBQUM7UUFDeEMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQztRQUMxQyxlQUFlLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFO0tBQ2xDO0lBQ0Qsb0JBQW9CLEVBQUU7UUFDcEIsRUFBRSxFQUFFLHlCQUF5QjtRQUM3QixVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLFlBQVksRUFBRSxJQUFJO1FBQ2xCLElBQUksRUFBRSxRQUFRO1FBQ2QsS0FBSyxFQUFFLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQztRQUN6QyxXQUFXLEVBQUUsT0FBTyxDQUFDLG9CQUFvQixDQUFDO1FBQzFDLGVBQWUsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUU7S0FDbEM7SUFDRCxzRUFBc0U7SUFDdEUsZ0JBQWdCLEVBQUU7UUFDaEIsRUFBRSxFQUFFLGtCQUFrQjtRQUN0QixVQUFVLEVBQUUsRUFBRTtRQUNkLFlBQVksRUFBRSxLQUFLO1FBQ25CLElBQUksRUFBRSxVQUFVO1FBQ2hCLEtBQUssRUFBRSxPQUFPLENBQUMsOENBQThDLENBQUM7S0FDL0Q7Q0FDb0MsQ0FBQztBQUl4QyxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FDdkMsc0NBQXNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2dldHRleHQnO1xuXG4vLyBNb2RlbCBmb3IgaW5kaXZpZHVhbCB0ZW5hbnQgbGltaXQgZmllbGRcbmV4cG9ydCBpbnRlcmZhY2UgVGVuYW50TGltaXQge1xuICBpZDogc3RyaW5nO1xuICB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdO1xuICBkZWZhdWx0VmFsdWU6IG51bWJlciB8IHN0cmluZyB8IGJvb2xlYW4gfCBudWxsO1xuICB0eXBlOiAndGV4dCcgfCAnY2hlY2tib3gnIHwgJ251bWJlcic7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGxhYmVsQXJncz86IG9iamVjdDtcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyQXJncz86IG9iamVjdDtcbn1cblxuLyoqXG4gKiBEZWZpbmUgYWxsIGhhcmRUeXBlZCBjdXN0b20gcHJvcGVydGllcywgYW5kIHRoZWlyIGNvbmZpZ3VyYXRpb24gaW4gb25lIHBsYWNlLlxuICpcbiAqIFRoaXMgZXhwb3J0ZWQgY29uc3QgdXRpbGl6ZXMgdHlwZXNjcmlwdCBpbmZlcnJpbmcsXG4gKiB3aGlsZSBzdGlsbCBiZW5lZml0aW5nIGZyb20gaGFyZCB0eXBpbmcsIHRoYW5rcyB0byBcInNhdGlzZmllc1wiIGtleXdvcmRcbiAqL1xuY29uc3QgdGVuYW50TGltaXRzQ3VzdG9tUHJvcGVydGllc0RlZmluaXRpb24gPSB7XG4gIC8vVE9ETzogRXh0ZXJuYWwgcmVmZXJlbmNlIC0gZ29pbmcgdG8gYmUgbW92ZWQgdG8gdGhlIFByb3BlcnRpZXMgdGFiLlxuICBleHRlcm5hbFJlZmVyZW5jZToge1xuICAgIGlkOiAnZXh0ZXJuYWxSZWZlcmVuY2UnLFxuICAgIHZhbGlkYXRvcnM6IFtdLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICB0eXBlOiAndGV4dCcsXG4gICAgbGFiZWw6IGdldHRleHQoJ0V4dGVybmFsIHJlZmVyZW5jZScpLFxuICAgIHBsYWNlaG9sZGVyOiBnZXR0ZXh0KCdlLmcuIFJFRjEyMzQ1YHJlZmVyZW5jZSBudW1iZXJgJylcbiAgfSxcbiAgbGltaXREZXZpY2VzTnVtYmVyOiB7XG4gICAgaWQ6ICdsaW1pdC5kZXZpY2VzLm51bWJlcicsXG4gICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMubWluKDApXSxcbiAgICBkZWZhdWx0VmFsdWU6IG51bGwsXG4gICAgdHlwZTogJ251bWJlcicsXG4gICAgbGFiZWw6IGdldHRleHQoJ0xpbWl0IG51bWJlciBvZiBkZXZpY2VzJyksXG4gICAgcGxhY2Vob2xkZXI6IGdldHRleHQoJ2UuZy4ge3sgZXhhbXBsZSB9fScpLFxuICAgIHBsYWNlaG9sZGVyQXJnczogeyBleGFtcGxlOiAxMDAwIH1cbiAgfSxcbiAgbGltaXRIdHRwUmVxdWVzdHM6IHtcbiAgICBpZDogJ2xpbWl0Lmh0dHAucmVxdWVzdHMnLFxuICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLm1pbigtMSldLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICBsYWJlbDogZ2V0dGV4dCgnTGltaXQgSFRUUCByZXF1ZXN0cycpLFxuICAgIHBsYWNlaG9sZGVyOiBnZXR0ZXh0KCdlLmcuIHt7IGV4YW1wbGUgfX0nKSxcbiAgICBwbGFjZWhvbGRlckFyZ3M6IHsgZXhhbXBsZTogMTAwMDAgfVxuICB9LFxuICBsaW1pdEh0dHBRdWV1ZToge1xuICAgIGlkOiAnbGltaXQuaHR0cC5xdWV1ZScsXG4gICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMubWluKC0xKV0sXG4gICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgIHR5cGU6ICdudW1iZXInLFxuICAgIGxhYmVsOiBnZXR0ZXh0KCdMaW1pdCBIVFRQIHF1ZXVlJyksXG4gICAgcGxhY2Vob2xkZXI6IGdldHRleHQoJ2UuZy4ge3sgZXhhbXBsZSB9fScpLFxuICAgIHBsYWNlaG9sZGVyQXJnczogeyBleGFtcGxlOiAxMDAgfVxuICB9LFxuICBsaW1pdFN0cmVhbVJlcXVlc3RzOiB7XG4gICAgaWQ6ICdsaW1pdC5zdHJlYW0ucmVxdWVzdHMnLFxuICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLm1pbigtMSldLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICBsYWJlbDogZ2V0dGV4dCgnTGltaXQgc3RyZWFtIHJlcXVlc3RzJyksXG4gICAgcGxhY2Vob2xkZXI6IGdldHRleHQoJ2UuZy4ge3sgZXhhbXBsZSB9fScpLFxuICAgIHBsYWNlaG9sZGVyQXJnczogeyBleGFtcGxlOiAxMDAgfVxuICB9LFxuICBsaW1pdFN0cmVhbVF1ZXVlOiB7XG4gICAgaWQ6ICdsaW1pdC5zdHJlYW0ucXVldWUnLFxuICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLm1pbigtMSldLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICBsYWJlbDogZ2V0dGV4dCgnTGltaXQgc3RyZWFtIHF1ZXVlJyksXG4gICAgcGxhY2Vob2xkZXI6IGdldHRleHQoJ2UuZy4ge3sgZXhhbXBsZSB9fScpLFxuICAgIHBsYWNlaG9sZGVyQXJnczogeyBleGFtcGxlOiAxMDAgfVxuICB9LFxuICBjZXBTZXJ2ZXJRdWV1ZUxpbWl0OiB7XG4gICAgaWQ6ICdjZXBTZXJ2ZXIucXVldWUubGltaXQnLFxuICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLm1pbigtMSldLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICBsYWJlbDogZ2V0dGV4dCgnTGltaXQgQ0VQIHNlcnZlciBxdWV1ZScpLFxuICAgIHBsYWNlaG9sZGVyOiBnZXR0ZXh0KCdlLmcuIHt7IGV4YW1wbGUgfX0nKSxcbiAgICBwbGFjZWhvbGRlckFyZ3M6IHsgZXhhbXBsZTogMTAwIH1cbiAgfSxcbiAgZGF0YUJyb2tlclF1ZXVlTGltaXQ6IHtcbiAgICBpZDogJ2RhdGEtYnJva2VyLnF1ZXVlLmxpbWl0JyxcbiAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5taW4oMCldLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICBsYWJlbDogZ2V0dGV4dCgnTGltaXQgZGF0YSBicm9rZXIgcXVldWUnKSxcbiAgICBwbGFjZWhvbGRlcjogZ2V0dGV4dCgnZS5nLiB7eyBleGFtcGxlIH19JyksXG4gICAgcGxhY2Vob2xkZXJBcmdzOiB7IGV4YW1wbGU6IDEwMCB9XG4gIH0sXG4gIC8vIFRPRE86IEdhaW5zaWdodCBjaGVja2JveCAtIGdvaW5nIHRvIGJlIG1vdmVkIHRvIHRoZSBQcm9wZXJ0aWVzIHRhYi5cbiAgZ2FpbnNpZ2h0RW5hYmxlZDoge1xuICAgIGlkOiAnZ2FpbnNpZ2h0RW5hYmxlZCcsXG4gICAgdmFsaWRhdG9yczogW10sXG4gICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICB0eXBlOiAnY2hlY2tib3gnLFxuICAgIGxhYmVsOiBnZXR0ZXh0KCdFbmFibGUgR2FpbnNpZ2h0IHByb2R1Y3QgZXhwZXJpZW5jZSB0cmFja2luZycpXG4gIH1cbn0gc2F0aXNmaWVzIFJlY29yZDxzdHJpbmcsIFRlbmFudExpbWl0PjtcblxudHlwZSBLZXlzID0ga2V5b2YgdHlwZW9mIHRlbmFudExpbWl0c0N1c3RvbVByb3BlcnRpZXNEZWZpbml0aW9uO1xuXG5leHBvcnQgY29uc3QgdGVuYW50TGltaXRzQ3VzdG9tUHJvcGVydGllczogeyBbSyBpbiBLZXlzXTogVGVuYW50TGltaXQgfSA9XG4gIHRlbmFudExpbWl0c0N1c3RvbVByb3BlcnRpZXNEZWZpbml0aW9uO1xuIl19
|