@c8y/ngx-components 1017.0.104 → 1017.0.106

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.
@@ -54,9 +54,9 @@ export class CockpitConfigurationComponent {
54
54
  }
55
55
  }
56
56
  CockpitConfigurationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CockpitConfigurationComponent, deps: [{ token: i1.CockpitConfigService }, { token: i2.AlertService }], target: i0.ɵɵFactoryTarget.Component });
57
- CockpitConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: CockpitConfigurationComponent, selector: "c8y-cockpit-configuration", ngImport: i0, template: "<c8y-title translate>App configuration</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'Configuration' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'App configuration' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n<div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <form #configForm=\"ngForm\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\" translate>Cockpit configuration</div>\n </div>\n\n <div class=\"inner-scroll\">\n <div class=\"card-block p-t-0 p-b-0\">\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-4\" translate>Features</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Define which are the enabled features in the current application.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-feature-config\n [config]=\"config\"\n (onUpdate)=\"updateFeatures()\"\n ></c8y-feature-config>\n </div>\n </fieldset>\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Top level nodes</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Select which nodes to display in the top level of the navigator menu. By default, only Groups is shown.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-10 col-md-10\">\n <div class=\"row\">\n <c8y-root-node-config\n [config]=\"config\"\n (onUpdate)=\"updateRootNodes()\"\n ></c8y-root-node-config>\n </div>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Home dashboard</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'The home page of this application. By default it is a customizable dashboard displaying overview data for the tenant.'\n | translate\n }}\"\n placement=\"right\"\n container=\"body\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"h4 text-medium d-inline-block m-r-4\" translate>Misc</div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-misc-config [config]=\"config\"></c8y-misc-config>\n </div>\n </fieldset>\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary\"\n [disabled]=\"!configForm.form.valid\"\n (click)=\"save()\"\n c8yProductExperience\n [actionName]=\"'cockpitConfigurationSaved'\"\n [actionData]=\"{ config: config }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </form>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i2.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i2.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: i2.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit"] }, { kind: "directive", type: i4.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: i5.FeatureConfigComponent, selector: "c8y-feature-config", inputs: ["config"], outputs: ["onUpdate"] }, { kind: "component", type: i6.RootNodeConfigComponent, selector: "c8y-root-node-config", inputs: ["config"], outputs: ["onUpdate"] }, { kind: "component", type: i7.HomeDashboardConfigComponent, selector: "c8y-home-dashboard-config", inputs: ["config"] }, { kind: "component", type: i8.MiscConfigComponent, selector: "c8y-misc-config", inputs: ["config"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] });
57
+ CockpitConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: CockpitConfigurationComponent, selector: "c8y-cockpit-configuration", ngImport: i0, template: "<c8y-title>{{ 'App configuration' | translate }}</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'Configuration' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'App configuration' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n<div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <form #configForm=\"ngForm\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\" translate>Cockpit configuration</div>\n </div>\n\n <div class=\"inner-scroll\">\n <div class=\"card-block p-t-0 p-b-0\">\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-4\" translate>Features</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Define which are the enabled features in the current application.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-feature-config\n [config]=\"config\"\n (onUpdate)=\"updateFeatures()\"\n ></c8y-feature-config>\n </div>\n </fieldset>\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Top level nodes</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Select which nodes to display in the top level of the navigator menu. By default, only Groups is shown.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-10 col-md-10\">\n <div class=\"row\">\n <c8y-root-node-config\n [config]=\"config\"\n (onUpdate)=\"updateRootNodes()\"\n ></c8y-root-node-config>\n </div>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Home dashboard</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'The home page of this application. By default it is a customizable dashboard displaying overview data for the tenant.'\n | translate\n }}\"\n placement=\"right\"\n container=\"body\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"h4 text-medium d-inline-block m-r-4\" translate>Misc</div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-misc-config [config]=\"config\"></c8y-misc-config>\n </div>\n </fieldset>\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary\"\n [disabled]=\"!configForm.form.valid\"\n (click)=\"save()\"\n c8yProductExperience\n [actionName]=\"'cockpitConfigurationSaved'\"\n [actionData]=\"{ config: config }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </form>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i2.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i2.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: i2.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit"] }, { kind: "directive", type: i4.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: i5.FeatureConfigComponent, selector: "c8y-feature-config", inputs: ["config"], outputs: ["onUpdate"] }, { kind: "component", type: i6.RootNodeConfigComponent, selector: "c8y-root-node-config", inputs: ["config"], outputs: ["onUpdate"] }, { kind: "component", type: i7.HomeDashboardConfigComponent, selector: "c8y-home-dashboard-config", inputs: ["config"] }, { kind: "component", type: i8.MiscConfigComponent, selector: "c8y-misc-config", inputs: ["config"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] });
58
58
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CockpitConfigurationComponent, decorators: [{
59
59
  type: Component,
60
- args: [{ selector: 'c8y-cockpit-configuration', template: "<c8y-title translate>App configuration</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'Configuration' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'App configuration' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n<div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <form #configForm=\"ngForm\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\" translate>Cockpit configuration</div>\n </div>\n\n <div class=\"inner-scroll\">\n <div class=\"card-block p-t-0 p-b-0\">\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-4\" translate>Features</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Define which are the enabled features in the current application.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-feature-config\n [config]=\"config\"\n (onUpdate)=\"updateFeatures()\"\n ></c8y-feature-config>\n </div>\n </fieldset>\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Top level nodes</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Select which nodes to display in the top level of the navigator menu. By default, only Groups is shown.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-10 col-md-10\">\n <div class=\"row\">\n <c8y-root-node-config\n [config]=\"config\"\n (onUpdate)=\"updateRootNodes()\"\n ></c8y-root-node-config>\n </div>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Home dashboard</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'The home page of this application. By default it is a customizable dashboard displaying overview data for the tenant.'\n | translate\n }}\"\n placement=\"right\"\n container=\"body\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"h4 text-medium d-inline-block m-r-4\" translate>Misc</div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-misc-config [config]=\"config\"></c8y-misc-config>\n </div>\n </fieldset>\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary\"\n [disabled]=\"!configForm.form.valid\"\n (click)=\"save()\"\n c8yProductExperience\n [actionName]=\"'cockpitConfigurationSaved'\"\n [actionData]=\"{ config: config }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </form>\n </div>\n</div>\n" }]
60
+ args: [{ selector: 'c8y-cockpit-configuration', template: "<c8y-title>{{ 'App configuration' | translate }}</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'Configuration' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'App configuration' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n<div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <form #configForm=\"ngForm\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\" translate>Cockpit configuration</div>\n </div>\n\n <div class=\"inner-scroll\">\n <div class=\"card-block p-t-0 p-b-0\">\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-4\" translate>Features</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Define which are the enabled features in the current application.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-feature-config\n [config]=\"config\"\n (onUpdate)=\"updateFeatures()\"\n ></c8y-feature-config>\n </div>\n </fieldset>\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Top level nodes</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Select which nodes to display in the top level of the navigator menu. By default, only Groups is shown.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-10 col-md-10\">\n <div class=\"row\">\n <c8y-root-node-config\n [config]=\"config\"\n (onUpdate)=\"updateRootNodes()\"\n ></c8y-root-node-config>\n </div>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Home dashboard</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'The home page of this application. By default it is a customizable dashboard displaying overview data for the tenant.'\n | translate\n }}\"\n placement=\"right\"\n container=\"body\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"h4 text-medium d-inline-block m-r-4\" translate>Misc</div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-misc-config [config]=\"config\"></c8y-misc-config>\n </div>\n </fieldset>\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary\"\n [disabled]=\"!configForm.form.valid\"\n (click)=\"save()\"\n c8yProductExperience\n [actionName]=\"'cockpitConfigurationSaved'\"\n [actionData]=\"{ config: config }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </form>\n </div>\n</div>\n" }]
61
61
  }], ctorParameters: function () { return [{ type: i1.CockpitConfigService }, { type: i2.AlertService }]; } });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ja3BpdC1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvY2twaXQtY29uZmlnL2NvY2twaXQtY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9jb2NrcGl0LWNvbmZpZy9jb2NrcGl0LWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sRUFBaUIsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7QUFNaEUsTUFBTSxPQUFPLDZCQUE2QjtJQU14QyxZQUNVLG9CQUEwQyxFQUMxQyxZQUEwQjtRQUQxQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBUHBDOztXQUVHO1FBQ0gsV0FBTSxHQUFrQixjQUFjLENBQUM7SUFLcEMsQ0FBQztJQUVKOztPQUVHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsSUFBSTtRQUNSLElBQUk7WUFDRixNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLENBQUM7U0FDcEU7UUFBQyxPQUFPLEVBQUUsRUFBRTtZQUNYLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjO1FBQ1osSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3RELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsZUFBZTtRQUNuQixJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDdEQsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDakQsQ0FBQzs7MEhBNUNVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLGlFQ1QxQywrbEtBNkhBOzJGRHBIYSw2QkFBNkI7a0JBSnpDLFNBQVM7K0JBQ0UsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSwgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQ29ja3BpdENvbmZpZywgREVGQVVMVF9DT05GSUcgfSBmcm9tICcuL2NvY2twaXQtY29uZmlnLm1vZGVsJztcbmltcG9ydCB7IENvY2twaXRDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9jb2NrcGl0LWNvbmZpZy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWNvY2twaXQtY29uZmlndXJhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2NrcGl0LWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIENvY2twaXRDb25maWd1cmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50bHkgdXNlZCBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgY29uZmlnOiBDb2NrcGl0Q29uZmlnID0gREVGQVVMVF9DT05GSUc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb2NrcGl0Q29uZmlnU2VydmljZTogQ29ja3BpdENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY29uZmlnID0gdGhpcy5jb2NrcGl0Q29uZmlnU2VydmljZS5jdXJyZW50Q29uZmlnO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3JlcyB0aGUgY29uZmlndXJhdGlvbiBhbmQgc2hvd3MgYSBzdWNjZXNzIG1lc3NhZ2UuXG4gICAqL1xuICBhc3luYyBzYXZlKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmNvY2twaXRDb25maWdTZXJ2aWNlLnNhdmVDb25maWcodGhpcy5jb25maWcpO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhnZXR0ZXh0KCdDb2NrcGl0IGNvbmZpZ3VyYXRpb24gc2F2ZWQuJykpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGV4KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgZmVhdHVyZXMgdG8gZGlyZWN0bHkgcmVmbGVjdCB0aGUgcmVzdWx0cyBvZiB0aGUgY2hhbmdlLlxuICAgKi9cbiAgdXBkYXRlRmVhdHVyZXMoKSB7XG4gICAgdGhpcy5jb2NrcGl0Q29uZmlnU2VydmljZS5jdXJyZW50Q29uZmlnID0gdGhpcy5jb25maWc7XG4gICAgdGhpcy5jb2NrcGl0Q29uZmlnU2VydmljZS5yZWZyZXNoKCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcm9vdCBub2RlcyB0byBkaXJlY3RseSByZWZsZWN0IHRoZSByZXN1bHRzIG9mIHRoZSBjaGFuZ2UuXG4gICAqL1xuICBhc3luYyB1cGRhdGVSb290Tm9kZXMoKSB7XG4gICAgdGhpcy5jb2NrcGl0Q29uZmlnU2VydmljZS5jdXJyZW50Q29uZmlnID0gdGhpcy5jb25maWc7XG4gICAgYXdhaXQgdGhpcy5jb2NrcGl0Q29uZmlnU2VydmljZS5zZXRSb290Tm9kZXMoKTtcbiAgfVxufVxuIiwiPGM4eS10aXRsZSB0cmFuc2xhdGU+QXBwIGNvbmZpZ3VyYXRpb248L2M4eS10aXRsZT5cbjxjOHktYnJlYWRjcnVtYj5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBbaWNvbl09XCInYzh5LXRvb2xzJ1wiXG4gICAgW2xhYmVsXT1cIidDb25maWd1cmF0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtXG4gICAgW2ljb25dPVwiJ2M4eS10b29scydcIlxuICAgIFtsYWJlbF09XCInQXBwIGNvbmZpZ3VyYXRpb24nIHwgdHJhbnNsYXRlXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbjwvYzh5LWJyZWFkY3J1bWI+XG48ZGl2IGNsYXNzPVwicm93XCI+XG4gIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgY29sLWxnLW1heFwiPlxuICAgIDxmb3JtICNjb25maWdGb3JtPVwibmdGb3JtXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLS1mdWxscGFnZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgc2VwYXJhdG9yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGVcIiB0cmFuc2xhdGU+Q29ja3BpdCBjb25maWd1cmF0aW9uPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBwLXQtMCBwLWItMFwiPlxuICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPVwicm93IHNlcGFyYXRvci1ib3R0b20gcC10LTI0IHAtYi0yNFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1zbS0zIGNvbC1tZC0yIHRleHQtbGVmdC14cyB0ZXh0LXJpZ2h0LXNtXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtaW5saW5lLWZsZXggbS1iLTE2XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaDQgdGV4dC1tZWRpdW0gbS1yLTRcIiB0cmFuc2xhdGU+RmVhdHVyZXM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc21cIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3Zlcj1cInt7XG4gICAgICAgICAgICAgICAgICAgICAgJ0RlZmluZSB3aGljaCBhcmUgdGhlIGVuYWJsZWQgZmVhdHVyZXMgaW4gdGhlIGN1cnJlbnQgYXBwbGljYXRpb24uJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtc20tOSBjb2wtbWQtOFwiPlxuICAgICAgICAgICAgICAgIDxjOHktZmVhdHVyZS1jb25maWdcbiAgICAgICAgICAgICAgICAgIFtjb25maWddPVwiY29uZmlnXCJcbiAgICAgICAgICAgICAgICAgIChvblVwZGF0ZSk9XCJ1cGRhdGVGZWF0dXJlcygpXCJcbiAgICAgICAgICAgICAgICA+PC9jOHktZmVhdHVyZS1jb25maWc+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9maWVsZHNldD5cbiAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz1cInJvdyBzZXBhcmF0b3ItYm90dG9tIHAtdC0yNCBwLWItMjRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtc20tMyBjb2wtbWQtMiB0ZXh0LWxlZnQteHMgdGV4dC1yaWdodC1zbVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWlubGluZS1mbGV4IG0tYi0xNlwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImg0IHRleHQtbWVkaXVtIG0tci04XCIgdHJhbnNsYXRlPlRvcCBsZXZlbCBub2RlczwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1oZWxwIGJ0bi1oZWxwLS1zbVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBwb3BvdmVyPVwie3tcbiAgICAgICAgICAgICAgICAgICAgICAnU2VsZWN0IHdoaWNoIG5vZGVzIHRvIGRpc3BsYXkgaW4gdGhlIHRvcCBsZXZlbCBvZiB0aGUgbmF2aWdhdG9yIG1lbnUuIEJ5IGRlZmF1bHQsIG9ubHkgR3JvdXBzIGlzIHNob3duLidcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTEwIGNvbC1tZC0xMFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgIDxjOHktcm9vdC1ub2RlLWNvbmZpZ1xuICAgICAgICAgICAgICAgICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgIChvblVwZGF0ZSk9XCJ1cGRhdGVSb290Tm9kZXMoKVwiXG4gICAgICAgICAgICAgICAgICA+PC9jOHktcm9vdC1ub2RlLWNvbmZpZz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2ZpZWxkc2V0PlxuXG4gICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9XCJyb3cgc2VwYXJhdG9yLWJvdHRvbSBwLXQtMjQgcC1iLTI0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTMgY29sLW1kLTIgdGV4dC1sZWZ0LXhzIHRleHQtcmlnaHQtc21cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1pbmxpbmUtZmxleCBtLWItMTZcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoNCB0ZXh0LW1lZGl1bSBtLXItOFwiIHRyYW5zbGF0ZT5Ib21lIGRhc2hib2FyZDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1oZWxwIGJ0bi1oZWxwLS1zbVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBwb3BvdmVyPVwie3tcbiAgICAgICAgICAgICAgICAgICAgICAnVGhlIGhvbWUgcGFnZSBvZiB0aGlzIGFwcGxpY2F0aW9uLiBCeSBkZWZhdWx0IGl0IGlzIGEgY3VzdG9taXphYmxlIGRhc2hib2FyZCBkaXNwbGF5aW5nIG92ZXJ2aWV3IGRhdGEgZm9yIHRoZSB0ZW5hbnQuJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtc20tOSBjb2wtbWQtOFwiPlxuICAgICAgICAgICAgICAgIDxjOHktaG9tZS1kYXNoYm9hcmQtY29uZmlnIFtjb25maWddPVwiY29uZmlnXCI+PC9jOHktaG9tZS1kYXNoYm9hcmQtY29uZmlnPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZmllbGRzZXQ+XG5cbiAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz1cInJvdyBzZXBhcmF0b3ItYm90dG9tIHAtdC0yNCBwLWItMjRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtc20tMyBjb2wtbWQtMiB0ZXh0LWxlZnQteHMgdGV4dC1yaWdodC1zbVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoNCB0ZXh0LW1lZGl1bSBkLWlubGluZS1ibG9jayBtLXItNFwiIHRyYW5zbGF0ZT5NaXNjPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1zbS05IGNvbC1tZC04XCI+XG4gICAgICAgICAgICAgICAgPGM4eS1taXNjLWNvbmZpZyBbY29uZmlnXT1cImNvbmZpZ1wiPjwvYzh5LW1pc2MtY29uZmlnPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgc2VwYXJhdG9yXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNvbmZpZ0Zvcm0uZm9ybS52YWxpZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2F2ZSgpXCJcbiAgICAgICAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICAgICAgICBbYWN0aW9uTmFtZV09XCInY29ja3BpdENvbmZpZ3VyYXRpb25TYXZlZCdcIlxuICAgICAgICAgICAgW2FjdGlvbkRhdGFdPVwieyBjb25maWc6IGNvbmZpZyB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ja3BpdC1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvY2twaXQtY29uZmlnL2NvY2twaXQtY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9jb2NrcGl0LWNvbmZpZy9jb2NrcGl0LWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sRUFBaUIsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7QUFNaEUsTUFBTSxPQUFPLDZCQUE2QjtJQU14QyxZQUNVLG9CQUEwQyxFQUMxQyxZQUEwQjtRQUQxQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBUHBDOztXQUVHO1FBQ0gsV0FBTSxHQUFrQixjQUFjLENBQUM7SUFLcEMsQ0FBQztJQUVKOztPQUVHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsSUFBSTtRQUNSLElBQUk7WUFDRixNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLENBQUM7U0FDcEU7UUFBQyxPQUFPLEVBQUUsRUFBRTtZQUNYLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjO1FBQ1osSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3RELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsZUFBZTtRQUNuQixJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDdEQsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDakQsQ0FBQzs7MEhBNUNVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLGlFQ1QxQyx5bUtBNkhBOzJGRHBIYSw2QkFBNkI7a0JBSnpDLFNBQVM7K0JBQ0UsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSwgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQ29ja3BpdENvbmZpZywgREVGQVVMVF9DT05GSUcgfSBmcm9tICcuL2NvY2twaXQtY29uZmlnLm1vZGVsJztcbmltcG9ydCB7IENvY2twaXRDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9jb2NrcGl0LWNvbmZpZy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWNvY2twaXQtY29uZmlndXJhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2NrcGl0LWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIENvY2twaXRDb25maWd1cmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50bHkgdXNlZCBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgY29uZmlnOiBDb2NrcGl0Q29uZmlnID0gREVGQVVMVF9DT05GSUc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb2NrcGl0Q29uZmlnU2VydmljZTogQ29ja3BpdENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY29uZmlnID0gdGhpcy5jb2NrcGl0Q29uZmlnU2VydmljZS5jdXJyZW50Q29uZmlnO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3JlcyB0aGUgY29uZmlndXJhdGlvbiBhbmQgc2hvd3MgYSBzdWNjZXNzIG1lc3NhZ2UuXG4gICAqL1xuICBhc3luYyBzYXZlKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmNvY2twaXRDb25maWdTZXJ2aWNlLnNhdmVDb25maWcodGhpcy5jb25maWcpO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhnZXR0ZXh0KCdDb2NrcGl0IGNvbmZpZ3VyYXRpb24gc2F2ZWQuJykpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGV4KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgZmVhdHVyZXMgdG8gZGlyZWN0bHkgcmVmbGVjdCB0aGUgcmVzdWx0cyBvZiB0aGUgY2hhbmdlLlxuICAgKi9cbiAgdXBkYXRlRmVhdHVyZXMoKSB7XG4gICAgdGhpcy5jb2NrcGl0Q29uZmlnU2VydmljZS5jdXJyZW50Q29uZmlnID0gdGhpcy5jb25maWc7XG4gICAgdGhpcy5jb2NrcGl0Q29uZmlnU2VydmljZS5yZWZyZXNoKCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcm9vdCBub2RlcyB0byBkaXJlY3RseSByZWZsZWN0IHRoZSByZXN1bHRzIG9mIHRoZSBjaGFuZ2UuXG4gICAqL1xuICBhc3luYyB1cGRhdGVSb290Tm9kZXMoKSB7XG4gICAgdGhpcy5jb2NrcGl0Q29uZmlnU2VydmljZS5jdXJyZW50Q29uZmlnID0gdGhpcy5jb25maWc7XG4gICAgYXdhaXQgdGhpcy5jb2NrcGl0Q29uZmlnU2VydmljZS5zZXRSb290Tm9kZXMoKTtcbiAgfVxufVxuIiwiPGM4eS10aXRsZT57eyAnQXBwIGNvbmZpZ3VyYXRpb24nIHwgdHJhbnNsYXRlIH19PC9jOHktdGl0bGU+XG48Yzh5LWJyZWFkY3J1bWI+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtXG4gICAgW2ljb25dPVwiJ2M4eS10b29scydcIlxuICAgIFtsYWJlbF09XCInQ29uZmlndXJhdGlvbicgfCB0cmFuc2xhdGVcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIFtpY29uXT1cIidjOHktdG9vbHMnXCJcbiAgICBbbGFiZWxdPVwiJ0FwcCBjb25maWd1cmF0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG48L2M4eS1icmVhZGNydW1iPlxuPGRpdiBjbGFzcz1cInJvd1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIGNvbC1sZy1tYXhcIj5cbiAgICA8Zm9ybSAjY29uZmlnRm9ybT1cIm5nRm9ybVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC0tZnVsbHBhZ2VcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlXCIgdHJhbnNsYXRlPkNvY2twaXQgY29uZmlndXJhdGlvbjwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5uZXItc2Nyb2xsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2sgcC10LTAgcC1iLTBcIj5cbiAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz1cInJvdyBzZXBhcmF0b3ItYm90dG9tIHAtdC0yNCBwLWItMjRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtc20tMyBjb2wtbWQtMiB0ZXh0LWxlZnQteHMgdGV4dC1yaWdodC1zbVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWlubGluZS1mbGV4IG0tYi0xNlwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImg0IHRleHQtbWVkaXVtIG0tci00XCIgdHJhbnNsYXRlPkZlYXR1cmVzPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIHBvcG92ZXI9XCJ7e1xuICAgICAgICAgICAgICAgICAgICAgICdEZWZpbmUgd2hpY2ggYXJlIHRoZSBlbmFibGVkIGZlYXR1cmVzIGluIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uLidcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTkgY29sLW1kLThcIj5cbiAgICAgICAgICAgICAgICA8Yzh5LWZlYXR1cmUtY29uZmlnXG4gICAgICAgICAgICAgICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAob25VcGRhdGUpPVwidXBkYXRlRmVhdHVyZXMoKVwiXG4gICAgICAgICAgICAgICAgPjwvYzh5LWZlYXR1cmUtY29uZmlnPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9XCJyb3cgc2VwYXJhdG9yLWJvdHRvbSBwLXQtMjQgcC1iLTI0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTMgY29sLW1kLTIgdGV4dC1sZWZ0LXhzIHRleHQtcmlnaHQtc21cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1pbmxpbmUtZmxleCBtLWItMTZcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoNCB0ZXh0LW1lZGl1bSBtLXItOFwiIHRyYW5zbGF0ZT5Ub3AgbGV2ZWwgbm9kZXM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc21cIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3Zlcj1cInt7XG4gICAgICAgICAgICAgICAgICAgICAgJ1NlbGVjdCB3aGljaCBub2RlcyB0byBkaXNwbGF5IGluIHRoZSB0b3AgbGV2ZWwgb2YgdGhlIG5hdmlnYXRvciBtZW51LiBCeSBkZWZhdWx0LCBvbmx5IEdyb3VwcyBpcyBzaG93bi4nXG4gICAgICAgICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1zbS0xMCBjb2wtbWQtMTBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICA8Yzh5LXJvb3Qtbm9kZS1jb25maWdcbiAgICAgICAgICAgICAgICAgICAgW2NvbmZpZ109XCJjb25maWdcIlxuICAgICAgICAgICAgICAgICAgICAob25VcGRhdGUpPVwidXBkYXRlUm9vdE5vZGVzKClcIlxuICAgICAgICAgICAgICAgICAgPjwvYzh5LXJvb3Qtbm9kZS1jb25maWc+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9maWVsZHNldD5cblxuICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPVwicm93IHNlcGFyYXRvci1ib3R0b20gcC10LTI0IHAtYi0yNFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1zbS0zIGNvbC1tZC0yIHRleHQtbGVmdC14cyB0ZXh0LXJpZ2h0LXNtXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtaW5saW5lLWZsZXggbS1iLTE2XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaDQgdGV4dC1tZWRpdW0gbS1yLThcIiB0cmFuc2xhdGU+SG9tZSBkYXNoYm9hcmQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc21cIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3Zlcj1cInt7XG4gICAgICAgICAgICAgICAgICAgICAgJ1RoZSBob21lIHBhZ2Ugb2YgdGhpcyBhcHBsaWNhdGlvbi4gQnkgZGVmYXVsdCBpdCBpcyBhIGN1c3RvbWl6YWJsZSBkYXNoYm9hcmQgZGlzcGxheWluZyBvdmVydmlldyBkYXRhIGZvciB0aGUgdGVuYW50LidcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTkgY29sLW1kLThcIj5cbiAgICAgICAgICAgICAgICA8Yzh5LWhvbWUtZGFzaGJvYXJkLWNvbmZpZyBbY29uZmlnXT1cImNvbmZpZ1wiPjwvYzh5LWhvbWUtZGFzaGJvYXJkLWNvbmZpZz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2ZpZWxkc2V0PlxuXG4gICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9XCJyb3cgc2VwYXJhdG9yLWJvdHRvbSBwLXQtMjQgcC1iLTI0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTMgY29sLW1kLTIgdGV4dC1sZWZ0LXhzIHRleHQtcmlnaHQtc21cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaDQgdGV4dC1tZWRpdW0gZC1pbmxpbmUtYmxvY2sgbS1yLTRcIiB0cmFuc2xhdGU+TWlzYzwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtc20tOSBjb2wtbWQtOFwiPlxuICAgICAgICAgICAgICAgIDxjOHktbWlzYy1jb25maWcgW2NvbmZpZ109XCJjb25maWdcIj48L2M4eS1taXNjLWNvbmZpZz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIHNlcGFyYXRvclwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjb25maWdGb3JtLmZvcm0udmFsaWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNhdmUoKVwiXG4gICAgICAgICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgICAgICAgW2FjdGlvbk5hbWVdPVwiJ2NvY2twaXRDb25maWd1cmF0aW9uU2F2ZWQnXCJcbiAgICAgICAgICAgIFthY3Rpb25EYXRhXT1cInsgY29uZmlnOiBjb25maWcgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -397,10 +397,10 @@ class CockpitConfigurationComponent {
397
397
  }
398
398
  }
399
399
  CockpitConfigurationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CockpitConfigurationComponent, deps: [{ token: CockpitConfigService }, { token: i1.AlertService }], target: i0.ɵɵFactoryTarget.Component });
400
- CockpitConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: CockpitConfigurationComponent, selector: "c8y-cockpit-configuration", ngImport: i0, template: "<c8y-title translate>App configuration</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'Configuration' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'App configuration' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n<div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <form #configForm=\"ngForm\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\" translate>Cockpit configuration</div>\n </div>\n\n <div class=\"inner-scroll\">\n <div class=\"card-block p-t-0 p-b-0\">\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-4\" translate>Features</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Define which are the enabled features in the current application.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-feature-config\n [config]=\"config\"\n (onUpdate)=\"updateFeatures()\"\n ></c8y-feature-config>\n </div>\n </fieldset>\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Top level nodes</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Select which nodes to display in the top level of the navigator menu. By default, only Groups is shown.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-10 col-md-10\">\n <div class=\"row\">\n <c8y-root-node-config\n [config]=\"config\"\n (onUpdate)=\"updateRootNodes()\"\n ></c8y-root-node-config>\n </div>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Home dashboard</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'The home page of this application. By default it is a customizable dashboard displaying overview data for the tenant.'\n | translate\n }}\"\n placement=\"right\"\n container=\"body\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"h4 text-medium d-inline-block m-r-4\" translate>Misc</div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-misc-config [config]=\"config\"></c8y-misc-config>\n </div>\n </fieldset>\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary\"\n [disabled]=\"!configForm.form.valid\"\n (click)=\"save()\"\n c8yProductExperience\n [actionName]=\"'cockpitConfigurationSaved'\"\n [actionData]=\"{ config: config }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </form>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i1.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i1.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: i1.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i3$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit"] }, { kind: "directive", type: i4.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: FeatureConfigComponent, selector: "c8y-feature-config", inputs: ["config"], outputs: ["onUpdate"] }, { kind: "component", type: RootNodeConfigComponent, selector: "c8y-root-node-config", inputs: ["config"], outputs: ["onUpdate"] }, { kind: "component", type: HomeDashboardConfigComponent, selector: "c8y-home-dashboard-config", inputs: ["config"] }, { kind: "component", type: MiscConfigComponent, selector: "c8y-misc-config", inputs: ["config"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }] });
400
+ CockpitConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: CockpitConfigurationComponent, selector: "c8y-cockpit-configuration", ngImport: i0, template: "<c8y-title>{{ 'App configuration' | translate }}</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'Configuration' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'App configuration' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n<div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <form #configForm=\"ngForm\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\" translate>Cockpit configuration</div>\n </div>\n\n <div class=\"inner-scroll\">\n <div class=\"card-block p-t-0 p-b-0\">\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-4\" translate>Features</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Define which are the enabled features in the current application.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-feature-config\n [config]=\"config\"\n (onUpdate)=\"updateFeatures()\"\n ></c8y-feature-config>\n </div>\n </fieldset>\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Top level nodes</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Select which nodes to display in the top level of the navigator menu. By default, only Groups is shown.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-10 col-md-10\">\n <div class=\"row\">\n <c8y-root-node-config\n [config]=\"config\"\n (onUpdate)=\"updateRootNodes()\"\n ></c8y-root-node-config>\n </div>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Home dashboard</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'The home page of this application. By default it is a customizable dashboard displaying overview data for the tenant.'\n | translate\n }}\"\n placement=\"right\"\n container=\"body\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"h4 text-medium d-inline-block m-r-4\" translate>Misc</div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-misc-config [config]=\"config\"></c8y-misc-config>\n </div>\n </fieldset>\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary\"\n [disabled]=\"!configForm.form.valid\"\n (click)=\"save()\"\n c8yProductExperience\n [actionName]=\"'cockpitConfigurationSaved'\"\n [actionData]=\"{ config: config }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </form>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i1.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i1.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: i1.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i3$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit"] }, { kind: "directive", type: i4.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: FeatureConfigComponent, selector: "c8y-feature-config", inputs: ["config"], outputs: ["onUpdate"] }, { kind: "component", type: RootNodeConfigComponent, selector: "c8y-root-node-config", inputs: ["config"], outputs: ["onUpdate"] }, { kind: "component", type: HomeDashboardConfigComponent, selector: "c8y-home-dashboard-config", inputs: ["config"] }, { kind: "component", type: MiscConfigComponent, selector: "c8y-misc-config", inputs: ["config"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }] });
401
401
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CockpitConfigurationComponent, decorators: [{
402
402
  type: Component,
403
- args: [{ selector: 'c8y-cockpit-configuration', template: "<c8y-title translate>App configuration</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'Configuration' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'App configuration' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n<div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <form #configForm=\"ngForm\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\" translate>Cockpit configuration</div>\n </div>\n\n <div class=\"inner-scroll\">\n <div class=\"card-block p-t-0 p-b-0\">\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-4\" translate>Features</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Define which are the enabled features in the current application.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-feature-config\n [config]=\"config\"\n (onUpdate)=\"updateFeatures()\"\n ></c8y-feature-config>\n </div>\n </fieldset>\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Top level nodes</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Select which nodes to display in the top level of the navigator menu. By default, only Groups is shown.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-10 col-md-10\">\n <div class=\"row\">\n <c8y-root-node-config\n [config]=\"config\"\n (onUpdate)=\"updateRootNodes()\"\n ></c8y-root-node-config>\n </div>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Home dashboard</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'The home page of this application. By default it is a customizable dashboard displaying overview data for the tenant.'\n | translate\n }}\"\n placement=\"right\"\n container=\"body\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"h4 text-medium d-inline-block m-r-4\" translate>Misc</div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-misc-config [config]=\"config\"></c8y-misc-config>\n </div>\n </fieldset>\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary\"\n [disabled]=\"!configForm.form.valid\"\n (click)=\"save()\"\n c8yProductExperience\n [actionName]=\"'cockpitConfigurationSaved'\"\n [actionData]=\"{ config: config }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </form>\n </div>\n</div>\n" }]
403
+ args: [{ selector: 'c8y-cockpit-configuration', template: "<c8y-title>{{ 'App configuration' | translate }}</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'Configuration' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'App configuration' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n<div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <form #configForm=\"ngForm\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\" translate>Cockpit configuration</div>\n </div>\n\n <div class=\"inner-scroll\">\n <div class=\"card-block p-t-0 p-b-0\">\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-4\" translate>Features</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Define which are the enabled features in the current application.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-feature-config\n [config]=\"config\"\n (onUpdate)=\"updateFeatures()\"\n ></c8y-feature-config>\n </div>\n </fieldset>\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Top level nodes</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Select which nodes to display in the top level of the navigator menu. By default, only Groups is shown.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-10 col-md-10\">\n <div class=\"row\">\n <c8y-root-node-config\n [config]=\"config\"\n (onUpdate)=\"updateRootNodes()\"\n ></c8y-root-node-config>\n </div>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Home dashboard</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'The home page of this application. By default it is a customizable dashboard displaying overview data for the tenant.'\n | translate\n }}\"\n placement=\"right\"\n container=\"body\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"h4 text-medium d-inline-block m-r-4\" translate>Misc</div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-misc-config [config]=\"config\"></c8y-misc-config>\n </div>\n </fieldset>\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary\"\n [disabled]=\"!configForm.form.valid\"\n (click)=\"save()\"\n c8yProductExperience\n [actionName]=\"'cockpitConfigurationSaved'\"\n [actionData]=\"{ config: config }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </form>\n </div>\n</div>\n" }]
404
404
  }], ctorParameters: function () { return [{ type: CockpitConfigService }, { type: i1.AlertService }]; } });
405
405
 
406
406
  class CockpitSetupStep {
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-cockpit-config.mjs","sources":["../../cockpit-config/cockpit-config.model.ts","../../cockpit-config/cockpit-config.guard.ts","../../cockpit-config/cockpit-config.service.ts","../../cockpit-config/feature-config.component.ts","../../cockpit-config/feature-config.component.html","../../cockpit-config/root-node-config.component.ts","../../cockpit-config/root-node-config.component.html","../../cockpit-config/home-dashboard-config.component.ts","../../cockpit-config/home-dashboard-config.component.html","../../cockpit-config/misc-config.component.ts","../../cockpit-config/misc-config.component.html","../../cockpit-config/cockpit-configuration.component.ts","../../cockpit-config/cockpit-configuration.component.html","../../cockpit-config/setup/cockpit-setup-step.ts","../../cockpit-config/setup/cockpit-setup-stepper-buttons.component.ts","../../cockpit-config/setup/cockpit-setup-stepper-buttons.component.html","../../cockpit-config/setup/cockpit-setup-step1.component.ts","../../cockpit-config/setup/cockpit-setup-step1.component.html","../../cockpit-config/setup/cockpit-setup-step2.component.ts","../../cockpit-config/setup/cockpit-setup-step2.component.html","../../cockpit-config/setup/cockpit-setup-step3.component.ts","../../cockpit-config/setup/cockpit-setup-step3.component.html","../../cockpit-config/setup/cockpit-setup-step4.component.ts","../../cockpit-config/setup/cockpit-setup-step4.component.html","../../cockpit-config/cockpit-config.module.ts","../../cockpit-config/c8y-ngx-components-cockpit-config.ts"],"sourcesContent":["export const DEFAULT_HOME_DASHBOARD_NAME = 'home-cockpit1';\nexport const USER_HOME_DASHBOARD_NAME = 'home-cockpit-user';\n\nexport interface CockpitConfig {\n rootNodes: CockpitConfigRootNode[];\n features: {\n alarms: boolean;\n dataExplorer: boolean;\n groups: boolean;\n reports: boolean;\n exports: boolean;\n dataPointLibrary: boolean;\n globalSmartRules: boolean;\n smartRules: boolean;\n subassets: boolean;\n search: boolean;\n [key: string]: boolean;\n };\n hideNavigator: boolean;\n homeDashboardName: string;\n userSpecificHomeDashboard: boolean;\n}\n\nexport const DEFAULT_CONFIG: CockpitConfig = {\n rootNodes: [],\n features: {\n alarms: true,\n dataExplorer: true,\n groups: true,\n reports: true,\n exports: true,\n dataPointLibrary: true,\n globalSmartRules: true,\n smartRules: true,\n subassets: true,\n search: true\n },\n hideNavigator: false,\n homeDashboardName: DEFAULT_HOME_DASHBOARD_NAME,\n userSpecificHomeDashboard: false\n};\n\nexport interface CockpitConfigRootNode {\n id: string;\n name: string;\n hideDevices?: boolean;\n}\n\nexport enum HomeDashboardType {\n /**\n * Shared by all Cockpit apps\n */\n DEFAULT,\n /**\n * Only for the current Cockpit.\n */\n APP,\n /**\n * Only for the current user.\n */\n USER\n}\n\nexport const COCKPIT_CONFIG_PATH = 'cockpit-application-configuration';\n","import { Injectable } from '@angular/core';\nimport { CanActivate } from '@angular/router';\nimport {\n AppStateService,\n gettext,\n NavigatorNode,\n NavigatorNodeFactory,\n Permissions\n} from '@c8y/ngx-components';\nimport { EcosystemService } from '@c8y/ngx-components/ecosystem/shared';\nimport { COCKPIT_CONFIG_PATH } from './cockpit-config.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CockpitConfigGuard implements CanActivate, NavigatorNodeFactory {\n protected readonly configNode: NavigatorNode = new NavigatorNode({\n path: `/${COCKPIT_CONFIG_PATH}`,\n parent: gettext('Configuration'),\n label: gettext('App configuration'),\n icon: 'imac-settings',\n preventDuplicates: true\n });\n\n constructor(\n private permissions: Permissions,\n private appState: AppStateService,\n private ecosystemService: EcosystemService\n ) {}\n\n get(): NavigatorNode {\n if (this.canActivate()) {\n return this.configNode;\n }\n return;\n }\n\n canActivate(): boolean {\n return (\n this.permissions.hasRole('ROLE_APPLICATION_MANAGEMENT_ADMIN') &&\n this.ecosystemService.isOwner(this.appState.currentApplication.value)\n );\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { InventoryService } from '@c8y/client';\nimport {\n AppStateService,\n ExtensionFactory,\n NavigatorNode,\n NavigatorService,\n OptionsService,\n Permissions,\n SearchService,\n Tab,\n TabsService\n} from '@c8y/ngx-components';\nimport {\n AssetNavigatorConfig,\n AssetNodeService,\n ASSET_NAVIGATOR_CONFIG\n} from '@c8y/ngx-components/assets-navigator';\nimport { isUndefined, startCase } from 'lodash-es';\nimport { map } from 'rxjs/operators';\nimport { CockpitConfig, DEFAULT_CONFIG, DEFAULT_HOME_DASHBOARD_NAME } from './cockpit-config.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CockpitConfigService {\n currentConfig: CockpitConfig = DEFAULT_CONFIG;\n nodes: NavigatorNode[] = [];\n private navigationFactory: ExtensionFactory<NavigatorNode> = {\n get: () => this.nodes\n };\n\n private readonly DEFAULT_NODE_PRIORITY = 2000;\n\n get excludedFeatureKeys() {\n return Object.keys(this.currentConfig.features).filter(\n key => !this.currentConfig.features[key]\n );\n }\n\n constructor(\n private navigatorService: NavigatorService,\n private tabsService: TabsService,\n private searchService: SearchService,\n private assetNodeService: AssetNodeService,\n private inventoryService: InventoryService,\n private appState: AppStateService,\n private optionsService: OptionsService,\n private permissions: Permissions,\n @Optional() @Inject(ASSET_NAVIGATOR_CONFIG) public moduleConfig: AssetNavigatorConfig\n ) {\n this.registerFilterForFeatures();\n this.init();\n }\n\n init() {\n this.appState.currentApplicationConfig.subscribe(config => {\n if (config) {\n this.currentConfig = { ...DEFAULT_CONFIG, ...config } as CockpitConfig;\n this.setRootNodes();\n }\n });\n }\n\n async saveConfig(config) {\n this.currentConfig = config;\n await this.storeApplicationConfig(this.currentConfig);\n }\n\n refresh() {\n this.optionsService.hideNavigator = this.currentConfig.hideNavigator;\n this.navigatorService.refresh();\n this.searchService.refresh();\n }\n\n async setRootNodes() {\n this.addNodesToFactories();\n this.nodes.length = 0;\n for (const node of this.currentConfig.rootNodes) {\n const { data } = await this.inventoryService.detail(node.id);\n if (data) {\n this.nodes.push(\n this.assetNodeService.createAssetNode({\n mo: data,\n hideDevices: node.hideDevices,\n priority: isUndefined(this.moduleConfig?.rootNodePriority)\n ? this.DEFAULT_NODE_PRIORITY\n : this.moduleConfig.rootNodePriority\n })\n );\n }\n }\n this.refresh();\n }\n\n getAppDashboardName() {\n return `${DEFAULT_HOME_DASHBOARD_NAME.substring(0, DEFAULT_HOME_DASHBOARD_NAME.length - 1)}_${\n this.appState.state.app.id\n }`;\n }\n\n private async storeApplicationConfig(config: CockpitConfig) {\n await this.appState.updateCurrentApplicationConfig<CockpitConfig>(config);\n }\n\n private addNodesToFactories() {\n const nodeInFactories = this.navigatorService.factories.find(\n fatcory => fatcory === this.navigationFactory\n );\n if (!nodeInFactories) {\n this.navigatorService.factories.push(this.navigationFactory);\n }\n }\n\n private registerFilterForFeatures() {\n this.navigatorService.items$ = this.navigatorService.items$.pipe(\n map(nodes => this.setHiddenAttrLock(nodes)),\n map(nodes => this.filterNavigatorNode(nodes))\n );\n this.tabsService.items$ = this.tabsService.items$.pipe(map(tabs => this.filterTabs(tabs)));\n this.searchService.items$ = this.searchService.items$.pipe(\n map(search => (this.currentConfig.features.search ? search : []))\n );\n }\n\n private setHiddenAttrLock(nodes) {\n nodes.forEach(node => {\n Object.keys(this.currentConfig.features).forEach(key => {\n const childNode = node.find(startCase(key).toLowerCase());\n\n if (childNode) {\n if (\n !this.permissions.hasRole('ROLE_APPLICATION_MANAGEMENT_ADMIN') &&\n childNode.lockHiddenAttr === undefined &&\n childNode.hidden === true\n ) {\n childNode.lockHiddenAttr = childNode.hidden;\n }\n }\n });\n });\n return nodes;\n }\n\n private filterTabs(tabs: Tab[]) {\n return tabs.filter(tab => !this.excludedFeatureKeys.some(key => tab.featureId === key));\n }\n\n private filterNavigatorNode(nodes: NavigatorNode[]) {\n if (!this.currentConfig) {\n return nodes;\n }\n const disabledFeatures = this.excludedFeatureKeys;\n const filteredNodes = nodes.filter(\n node => !disabledFeatures.some(key => node.featureId === key)\n );\n\n this.showAllChildrenNodes(nodes);\n this.hideChildrenNodesThatAreDisabled(nodes, disabledFeatures);\n return filteredNodes;\n }\n\n private hideChildrenNodesThatAreDisabled(nodes: NavigatorNode[], disabledFeatures: string[]) {\n nodes.forEach(node =>\n disabledFeatures.forEach(key => {\n const childNode = node.find(key, 'featureId');\n if (childNode) {\n childNode.hidden = true;\n }\n })\n );\n }\n\n private showAllChildrenNodes(nodes: NavigatorNode[]) {\n nodes.forEach(node => {\n Object.keys(this.currentConfig.features).forEach(key => {\n const childNode = node.find(startCase(key).toLowerCase());\n\n if (childNode) {\n if (childNode.lockHiddenAttr === true) {\n return;\n }\n\n childNode.hidden = false;\n }\n });\n });\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CockpitConfig } from './cockpit-config.model';\n\n@Component({\n selector: 'c8y-feature-config',\n templateUrl: './feature-config.component.html'\n})\nexport class FeatureConfigComponent {\n @Input()\n config: CockpitConfig;\n\n @Output()\n onUpdate = new EventEmitter<void>();\n\n updateFeatures() {\n this.onUpdate.emit();\n }\n}\n","<c8y-list-group class=\"separator-top\">\n <c8y-li>\n <c8y-li-icon icon=\"search\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Global search' | translate }}</p>\n <p>\n <small translate>Display the global search in the main header.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global search' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.search\"\n name=\"search\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"c8y-group\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Groups' | translate }}</p>\n <p>\n <small translate>Display top level groups under the Groups navigator menu.</small>\n </p>\n </div>\n <label class=\"c8y-switch c8y-switch--inline m-l-auto\" title=\"{{ 'Groups' | translate }}\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.groups\"\n name=\"groups\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"bell\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Alarms' | translate }}</p>\n <p>\n <small translate>Display a link to the global alarms list in the navigator menu.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global Alarms view' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.alarms\"\n name=\"alarms\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"c8y-data-explorer\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Data explorer' | translate }}</p>\n <p>\n <small translate>\n Display the data explorer in the navigator menu and on the group tabs.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Data explorer' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.dataExplorer\"\n name=\"dataExplorer\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"c8y-reports\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Reports' | translate }}</p>\n <p>\n <small translate>Display a link to the Reports list in the navigator menu.</small>\n </p>\n </div>\n <label class=\"c8y-switch c8y-switch--inline m-l-auto\" title=\"{{ 'Reports' | translate }}\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.reports\"\n name=\"reports\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"graph-report\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Exports' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Exports list under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label class=\"c8y-switch c8y-switch--inline m-l-auto\" title=\"{{ 'Exports' | translate }}\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.exports\"\n name=\"exports\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"c8y-data-points\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Data point library' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Data point library under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Data point library' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.dataPointLibrary\"\n name=\"dataPointLibrary\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"c8y-smart-rules\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Global smart rules' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Global smart rules under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global smart rules' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.globalSmartRules\"\n name=\"globalSmartRules\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"c8y-group-open\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Subassets view' | translate }}</p>\n <p><small translate>Display the \"Subassets\" tab on groups.</small></p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Subassets view' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.subassets\"\n name=\"subassets\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"c8y-smart-rules\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Smart rules for devices and groups' | translate }}</p>\n <p>\n <small translate>Display the smart rules tab on groups and devices.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Smart rules for devices and groups' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.smartRules\"\n name=\"smartRules\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n</c8y-list-group>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CockpitConfig, CockpitConfigRootNode } from './cockpit-config.model';\n\n@Component({\n selector: 'c8y-root-node-config',\n templateUrl: './root-node-config.component.html'\n})\nexport class RootNodeConfigComponent {\n @Input()\n config: CockpitConfig;\n\n @Output()\n onUpdate = new EventEmitter<void>();\n\n /**\n * Removes one of the root nodes.\n * @param node The node to remove.\n */\n removeNavigatorNode(node: CockpitConfigRootNode) {\n const index = this.config.rootNodes.indexOf(node);\n if (index > -1) {\n this.config.rootNodes.splice(index, 1);\n this.onUpdate.emit();\n }\n }\n}\n","<div class=\"col-sm-6\">\n <label title=\"{{ 'Current top level nodes' | translate }}\" translate>\n Current top level nodes\n </label>\n <c8y-list-group class=\"separator-top\">\n <c8y-li *ngIf=\"config.rootNodes.length === 0\">\n <div class=\"c8y-empty-state text-left\">\n <h1 c8yIcon=\"folder-open\"></h1>\n <p>\n <strong>{{ 'No top level nodes set' | translate }}</strong>\n </p>\n </div>\n </c8y-li>\n <c8y-li *ngFor=\"let node of config.rootNodes; let index = index\">\n <c8y-li-icon icon=\"c8y-group\"></c8y-li-icon>\n <div class=\"content-flex-30\">\n <div class=\"col-6\">\n <div class=\"text-truncate\" title=\"{{ node.name }}\">\n {{ node.name }}\n </div>\n </div>\n <div class=\"col-4\">\n <label class=\"c8y-switch c8y-switch--inline\" title=\"{{ 'Hide devices' | translate }}\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"node.hideDevices\"\n name=\"node.{{ index }}.hideDevices\"\n (change)=\"onUpdate.emit()\"\n />\n <span></span>\n <small>{{ 'Hide devices' | translate }}</small>\n </label>\n </div>\n <div class=\"col-2 text-right\">\n <div class=\"d-flex fit-w\">\n <button\n class=\"btn btn-dot btn-dot--danger m-l-auto\"\n tooltip=\"{{ 'Remove' | translate }}\"\n [attr.aria-label]=\"'Remove' | translate\"\n type=\"button\"\n (click)=\"removeNavigatorNode(node)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </div>\n </div>\n </c8y-li>\n </c8y-list-group>\n</div>\n\n<div class=\"col-sm-6 col-md-5 col-md-offset-1\">\n <label title=\"{{ 'Select top level nodes' | translate }}\" translate>Select top level nodes</label>\n <c8y-asset-selector\n [config]=\"{ groupsOnly: true, multi: true, groupsSelectable: true }\"\n [(ngModel)]=\"config.rootNodes\"\n (onSelected)=\"onUpdate.emit()\"\n name=\"rootNodes\"\n ></c8y-asset-selector>\n</div>\n","import { Component, Input } from '@angular/core';\nimport {\n CockpitConfig,\n DEFAULT_HOME_DASHBOARD_NAME,\n HomeDashboardType,\n USER_HOME_DASHBOARD_NAME\n} from './cockpit-config.model';\nimport { CockpitConfigService } from './cockpit-config.service';\n\n@Component({\n selector: 'c8y-home-dashboard-config',\n templateUrl: './home-dashboard-config.component.html'\n})\nexport class HomeDashboardConfigComponent {\n @Input()\n config: CockpitConfig;\n\n /**\n * The types of dashboard that can be configured.\n */\n readonly homeDashboardTypes = HomeDashboardType;\n\n /**\n * @ignore\n */\n constructor(private cockpitConfigService: CockpitConfigService) {}\n\n /**\n * @ignore\n */\n dashboardChange(selected: boolean, type: HomeDashboardType) {\n if (!selected) {\n return;\n }\n\n switch (type) {\n case this.homeDashboardTypes.DEFAULT: {\n this.config.homeDashboardName = DEFAULT_HOME_DASHBOARD_NAME;\n this.config.userSpecificHomeDashboard = false;\n break;\n }\n case this.homeDashboardTypes.APP: {\n this.config.homeDashboardName = this.cockpitConfigService.getAppDashboardName();\n this.config.userSpecificHomeDashboard = false;\n break;\n }\n case this.homeDashboardTypes.USER: {\n this.config.homeDashboardName = USER_HOME_DASHBOARD_NAME;\n this.config.userSpecificHomeDashboard = true;\n break;\n }\n }\n }\n\n /**\n * @ignore\n */\n verifySelected(type: HomeDashboardType) {\n if (type === this.homeDashboardTypes.USER) {\n return this.config.userSpecificHomeDashboard;\n }\n if (type === this.homeDashboardTypes.DEFAULT) {\n return this.config.homeDashboardName === DEFAULT_HOME_DASHBOARD_NAME;\n }\n return this.config.homeDashboardName === this.cockpitConfigService.getAppDashboardName();\n }\n}\n","<c8y-list-group class=\"separator-top\">\n <c8y-li>\n <c8y-li-radio\n (onSelect)=\"dashboardChange($event, homeDashboardTypes.DEFAULT)\"\n [selected]=\"verifySelected(homeDashboardTypes.DEFAULT)\"\n ></c8y-li-radio>\n <p translate>Default home dashboard</p>\n <small translate>Changes done in the home dashboard are reflected across the platform.</small>\n </c8y-li>\n <c8y-li>\n <c8y-li-radio\n (onSelect)=\"dashboardChange($event, homeDashboardTypes.APP)\"\n [selected]=\"verifySelected(homeDashboardTypes.APP)\"\n ></c8y-li-radio>\n <p translate>Custom home dashboard</p>\n <small translate>\n Changes done to the home dashboard are reflected only in the current application.\n </small>\n </c8y-li>\n <c8y-li>\n <c8y-li-radio\n (onSelect)=\"dashboardChange($event, homeDashboardTypes.USER)\"\n [selected]=\"verifySelected(homeDashboardTypes.USER)\"\n ></c8y-li-radio>\n <p translate>User home dashboard</p>\n <small translate>\n Changes done to the home dashboard are reflected only for the current user. NOTE: This user\n needs to have inventory write permission.\n </small>\n </c8y-li>\n</c8y-list-group>\n","import { Component, Input } from '@angular/core';\nimport { CockpitConfig } from './cockpit-config.model';\n\n@Component({\n selector: 'c8y-misc-config',\n templateUrl: './misc-config.component.html'\n})\nexport class MiscConfigComponent {\n @Input()\n config: CockpitConfig;\n}\n","<c8y-list-group class=\"separator-top\">\n <c8y-li>\n <div class=\"d-flex a-i-center\">\n <p>{{ 'Always collapse navigator on start up' | translate }}</p>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Collapse navigator on start up' | translate }}\"\n >\n <input type=\"checkbox\" [(ngModel)]=\"config.hideNavigator\" name=\"hideNavigator\" />\n <span></span>\n </label>\n </div>\n </c8y-li>\n</c8y-list-group>\n","import { Component, OnInit } from '@angular/core';\nimport { AlertService, gettext } from '@c8y/ngx-components';\nimport { CockpitConfig, DEFAULT_CONFIG } from './cockpit-config.model';\nimport { CockpitConfigService } from './cockpit-config.service';\n\n@Component({\n selector: 'c8y-cockpit-configuration',\n templateUrl: './cockpit-configuration.component.html'\n})\nexport class CockpitConfigurationComponent implements OnInit {\n /**\n * The currently used configuration.\n */\n config: CockpitConfig = DEFAULT_CONFIG;\n\n constructor(\n private cockpitConfigService: CockpitConfigService,\n private alertService: AlertService\n ) {}\n\n /**\n * @ignore\n */\n ngOnInit() {\n this.config = this.cockpitConfigService.currentConfig;\n }\n\n /**\n * Stores the configuration and shows a success message.\n */\n async save() {\n try {\n await this.cockpitConfigService.saveConfig(this.config);\n this.alertService.success(gettext('Cockpit configuration saved.'));\n } catch (ex) {\n this.alertService.addServerFailure(ex);\n }\n }\n\n /**\n * Updates the features to directly reflect the results of the change.\n */\n updateFeatures() {\n this.cockpitConfigService.currentConfig = this.config;\n this.cockpitConfigService.refresh();\n }\n\n /**\n * Updates the root nodes to directly reflect the results of the change.\n */\n async updateRootNodes() {\n this.cockpitConfigService.currentConfig = this.config;\n await this.cockpitConfigService.setRootNodes();\n }\n}\n","<c8y-title translate>App configuration</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'Configuration' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'App configuration' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n<div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <form #configForm=\"ngForm\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\" translate>Cockpit configuration</div>\n </div>\n\n <div class=\"inner-scroll\">\n <div class=\"card-block p-t-0 p-b-0\">\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-4\" translate>Features</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Define which are the enabled features in the current application.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-feature-config\n [config]=\"config\"\n (onUpdate)=\"updateFeatures()\"\n ></c8y-feature-config>\n </div>\n </fieldset>\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Top level nodes</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Select which nodes to display in the top level of the navigator menu. By default, only Groups is shown.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-10 col-md-10\">\n <div class=\"row\">\n <c8y-root-node-config\n [config]=\"config\"\n (onUpdate)=\"updateRootNodes()\"\n ></c8y-root-node-config>\n </div>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Home dashboard</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'The home page of this application. By default it is a customizable dashboard displaying overview data for the tenant.'\n | translate\n }}\"\n placement=\"right\"\n container=\"body\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"h4 text-medium d-inline-block m-r-4\" translate>Misc</div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-misc-config [config]=\"config\"></c8y-misc-config>\n </div>\n </fieldset>\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary\"\n [disabled]=\"!configForm.form.valid\"\n (click)=\"save()\"\n c8yProductExperience\n [actionName]=\"'cockpitConfigurationSaved'\"\n [actionData]=\"{ config: config }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </form>\n </div>\n</div>\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { AppStateService, AlertService, C8yStepper, SetupComponent } from '@c8y/ngx-components';\nimport { CockpitConfig, DEFAULT_CONFIG } from '../cockpit-config.model';\n\nexport abstract class CockpitSetupStep {\n config: CockpitConfig = DEFAULT_CONFIG;\n pending = false;\n\n constructor(\n public stepper: C8yStepper,\n protected step: CdkStep,\n protected setup: SetupComponent,\n protected appState: AppStateService,\n protected alert: AlertService\n ) {}\n\n async next() {\n this.pending = true;\n try {\n const newConfig = { ...this.setup.data$.value, ...this.config };\n await this.appState.updateCurrentApplicationConfig(newConfig);\n this.setup.stepCompleted(this.stepper.selectedIndex);\n this.setup.data$.next(newConfig);\n this.stepper.next();\n } catch (ex) {\n this.alert.addServerFailure(ex);\n } finally {\n this.pending = false;\n }\n }\n\n back() {\n this.stepper.previous();\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'c8y-cockpit-setup-stepper-buttons',\n templateUrl: './cockpit-setup-stepper-buttons.component.html'\n})\nexport class CockpitSetupStepperButtonsComponent {\n @Input() index;\n @Output() onNext = new EventEmitter<void>();\n @Output() onBack = new EventEmitter<void>();\n}\n","<div class=\"card-footer separator d-flex j-c-center\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"onBack.emit()\"\n *ngIf=\"index !== 0\"\n translate\n >\n Previous\n </button>\n <button class=\"btn btn-primary\" type=\"submit\" (click)=\"onNext.emit()\" translate>\n Save and continue\n </button>\n</div>\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { Component } from '@angular/core';\nimport { AlertService, AppStateService, C8yStepper, SetupComponent } from '@c8y/ngx-components';\nimport { CockpitSetupStep } from './cockpit-setup-step';\n\n@Component({\n selector: 'c8y-cockpit-setup-step1',\n templateUrl: './cockpit-setup-step1.component.html',\n host: { class: 'd-contents' }\n})\nexport class CockpitSetupStep1Component extends CockpitSetupStep {\n constructor(\n public stepper: C8yStepper,\n protected step: CdkStep,\n protected setup: SetupComponent,\n protected appState: AppStateService,\n protected alert: AlertService\n ) {\n super(stepper, step, setup, appState, alert);\n }\n}\n","<form #stepForm=\"ngForm\" name=\"form\" class=\"d-contents\">\n <div class=\"container-fluid flex-no-shrink fit-w\">\n <div class=\"row separator-bottom\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 p-t-24 p-l-16 p-r-16\">\n <h3 translate class=\"text-medium l-h-base\">Features</h3>\n <p class=\"lead text-normal\" translate>\n Define which are the enabled features in the current application.\n </p>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll flex-grow\">\n <div class=\"container-fluid fit-w\">\n <div class=\"row\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\">\n <c8y-feature-config [config]=\"config\"></c8y-feature-config>\n </div>\n </div>\n </div>\n </div>\n <c8y-cockpit-setup-stepper-buttons\n [index]=\"stepper.selectedIndex\"\n (onNext)=\"next()\"\n (onBack)=\"back()\"\n >\n </c8y-cockpit-setup-stepper-buttons>\n</form>\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { Component } from '@angular/core';\nimport { AlertService, AppStateService, C8yStepper, SetupComponent } from '@c8y/ngx-components';\nimport { CockpitSetupStep } from './cockpit-setup-step';\n\n@Component({\n selector: 'c8y-cockpit-setup-step2',\n templateUrl: './cockpit-setup-step2.component.html',\n host: { class: 'd-contents' }\n})\nexport class CockpitSetupStep2Component extends CockpitSetupStep {\n constructor(\n public stepper: C8yStepper,\n protected step: CdkStep,\n protected setup: SetupComponent,\n protected appState: AppStateService,\n protected alert: AlertService\n ) {\n super(stepper, step, setup, appState, alert);\n }\n}\n","<form #stepForm=\"ngForm\" name=\"form\" class=\"d-contents\">\n <div class=\"container-fluid flex-no-shrink fit-w\">\n <div class=\"row separator-bottom\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 p-t-24 p-l-16 p-r-16\">\n <h3 translate class=\"text-medium l-h-base\">Top level nodes</h3>\n <p class=\"lead text-normal\" translate>\n Select which nodes to display in the top level of the navigator menu. By default, only\n Groups is shown.\n </p>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll flex-grow\">\n <div class=\"container-fluid fit-w p-t-16\">\n <div class=\"row\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\">\n <c8y-root-node-config [config]=\"config\"></c8y-root-node-config>\n </div>\n </div>\n </div>\n </div>\n <c8y-cockpit-setup-stepper-buttons\n [index]=\"stepper.selectedIndex\"\n (onNext)=\"next()\"\n (onBack)=\"back()\"\n >\n </c8y-cockpit-setup-stepper-buttons>\n</form>\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { Component } from '@angular/core';\nimport { AlertService, AppStateService, C8yStepper, SetupComponent } from '@c8y/ngx-components';\nimport { CockpitSetupStep } from './cockpit-setup-step';\n\n@Component({\n selector: 'c8y-cockpit-setup-step3',\n templateUrl: './cockpit-setup-step3.component.html',\n host: { class: 'd-contents' }\n})\nexport class CockpitSetupStep3Component extends CockpitSetupStep {\n constructor(\n public stepper: C8yStepper,\n protected step: CdkStep,\n protected setup: SetupComponent,\n protected appState: AppStateService,\n protected alert: AlertService\n ) {\n super(stepper, step, setup, appState, alert);\n }\n}\n","<form #stepForm=\"ngForm\" name=\"form\" class=\"d-contents\">\n <div class=\"container-fluid flex-no-shrink fit-w\">\n <div class=\"row separator-bottom\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 p-t-24 p-l-16 p-r-16\">\n <h3 translate class=\"text-medium l-h-base\">Home dashboard</h3>\n <p class=\"lead text-normal\" translate>\n The home page of this application. By default it is a customizable dashboard displaying\n overview data for the tenant.\n </p>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll flex-grow\">\n <div class=\"container-fluid fit-w\">\n <div class=\"row\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\">\n <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n </div>\n </div>\n </div>\n </div>\n <c8y-cockpit-setup-stepper-buttons\n [index]=\"stepper.selectedIndex\"\n (onNext)=\"next()\"\n (onBack)=\"back()\"\n ></c8y-cockpit-setup-stepper-buttons>\n</form>\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { Component } from '@angular/core';\nimport { AlertService, AppStateService, C8yStepper, SetupComponent } from '@c8y/ngx-components';\nimport { CockpitSetupStep } from './cockpit-setup-step';\n\n@Component({\n selector: 'c8y-cockpit-setup-step4',\n templateUrl: './cockpit-setup-step4.component.html',\n host: { class: 'd-contents' }\n})\nexport class CockpitSetupStep4Component extends CockpitSetupStep {\n constructor(\n public stepper: C8yStepper,\n protected step: CdkStep,\n protected setup: SetupComponent,\n protected appState: AppStateService,\n protected alert: AlertService\n ) {\n super(stepper, step, setup, appState, alert);\n }\n}\n","<form #stepForm=\"ngForm\" name=\"form\" class=\"d-contents\">\n <div class=\"container-fluid flex-no-shrink fit-w\">\n <div class=\"row separator-bottom\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 p-t-24 p-l-16 p-r-16\">\n <h3 translate class=\"text-medium l-h-base\">Misc</h3>\n <p class=\"lead text-normal\" translate>\n Miscellaneous settings for the current application.\n </p>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll flex-grow\">\n <div class=\"container-fluid fit-w\">\n <div class=\"row\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\">\n <c8y-misc-config [config]=\"config\"></c8y-misc-config>\n </div>\n </div>\n </div>\n </div>\n <c8y-cockpit-setup-stepper-buttons\n [index]=\"stepper.selectedIndex\"\n (onNext)=\"next()\"\n (onBack)=\"back()\"\n >\n </c8y-cockpit-setup-stepper-buttons>\n</form>\n","import { NgModule } from '@angular/core';\nimport {\n CoreModule,\n gettext,\n hookNavigator,\n hookRoute,\n hookStepper,\n SetupStep,\n Steppers\n} from '@c8y/ngx-components';\nimport { AssetSelectorModule } from '@c8y/ngx-components/assets-navigator';\nimport { EcosystemModule } from '@c8y/ngx-components/ecosystem';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { CockpitConfigGuard } from './cockpit-config.guard';\nimport { COCKPIT_CONFIG_PATH } from './cockpit-config.model';\nimport { CockpitConfigService } from './cockpit-config.service';\nimport { CockpitConfigurationComponent } from './cockpit-configuration.component';\nimport { FeatureConfigComponent } from './feature-config.component';\nimport { HomeDashboardConfigComponent } from './home-dashboard-config.component';\nimport { MiscConfigComponent } from './misc-config.component';\nimport { RootNodeConfigComponent } from './root-node-config.component';\nimport { CockpitSetupStep1Component } from './setup/cockpit-setup-step1.component';\nimport { CockpitSetupStep2Component } from './setup/cockpit-setup-step2.component';\nimport { CockpitSetupStep3Component } from './setup/cockpit-setup-step3.component';\nimport { CockpitSetupStep4Component } from './setup/cockpit-setup-step4.component';\nimport { CockpitSetupStepperButtonsComponent } from './setup/cockpit-setup-stepper-buttons.component';\n\n@NgModule({\n declarations: [\n CockpitConfigurationComponent,\n CockpitSetupStep1Component,\n CockpitSetupStep2Component,\n CockpitSetupStep3Component,\n CockpitSetupStep4Component,\n FeatureConfigComponent,\n RootNodeConfigComponent,\n HomeDashboardConfigComponent,\n MiscConfigComponent,\n CockpitSetupStepperButtonsComponent\n ],\n imports: [CoreModule, AssetSelectorModule, PopoverModule, TooltipModule, EcosystemModule],\n providers: [\n CockpitConfigGuard,\n hookRoute({\n path: COCKPIT_CONFIG_PATH,\n component: CockpitConfigurationComponent,\n canActivate: [CockpitConfigGuard]\n }),\n hookNavigator(CockpitConfigGuard),\n hookStepper([\n {\n stepperId: Steppers.SETUP,\n component: CockpitSetupStep1Component,\n label: gettext('Features'),\n setupId: 'cockpitFeatures',\n priority: 30\n },\n {\n stepperId: Steppers.SETUP,\n component: CockpitSetupStep2Component,\n label: gettext('Top level nodes'),\n setupId: 'cockpitTopLevelNodes',\n priority: 20\n },\n {\n stepperId: Steppers.SETUP,\n component: CockpitSetupStep3Component,\n label: gettext('Home dashboard'),\n setupId: 'cockpitHomeDashboard',\n priority: 10\n },\n {\n stepperId: Steppers.SETUP,\n component: CockpitSetupStep4Component,\n label: gettext('Misc'),\n setupId: 'cockpitMisc',\n priority: 0\n }\n ] as SetupStep[])\n ]\n})\nexport class CockpitConfigModule {\n constructor(private service: CockpitConfigService) {\n // only for DI, not used but needed.\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i3","i4","i1.CockpitConfigService","i1","i5.FeatureConfigComponent","i6.RootNodeConfigComponent","i7.HomeDashboardConfigComponent","i8.MiscConfigComponent","i4.FeatureConfigComponent","i5.CockpitSetupStepperButtonsComponent","i4.RootNodeConfigComponent","i4.HomeDashboardConfigComponent","i4.MiscConfigComponent"],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-cockpit-config.mjs","sources":["../../cockpit-config/cockpit-config.model.ts","../../cockpit-config/cockpit-config.guard.ts","../../cockpit-config/cockpit-config.service.ts","../../cockpit-config/feature-config.component.ts","../../cockpit-config/feature-config.component.html","../../cockpit-config/root-node-config.component.ts","../../cockpit-config/root-node-config.component.html","../../cockpit-config/home-dashboard-config.component.ts","../../cockpit-config/home-dashboard-config.component.html","../../cockpit-config/misc-config.component.ts","../../cockpit-config/misc-config.component.html","../../cockpit-config/cockpit-configuration.component.ts","../../cockpit-config/cockpit-configuration.component.html","../../cockpit-config/setup/cockpit-setup-step.ts","../../cockpit-config/setup/cockpit-setup-stepper-buttons.component.ts","../../cockpit-config/setup/cockpit-setup-stepper-buttons.component.html","../../cockpit-config/setup/cockpit-setup-step1.component.ts","../../cockpit-config/setup/cockpit-setup-step1.component.html","../../cockpit-config/setup/cockpit-setup-step2.component.ts","../../cockpit-config/setup/cockpit-setup-step2.component.html","../../cockpit-config/setup/cockpit-setup-step3.component.ts","../../cockpit-config/setup/cockpit-setup-step3.component.html","../../cockpit-config/setup/cockpit-setup-step4.component.ts","../../cockpit-config/setup/cockpit-setup-step4.component.html","../../cockpit-config/cockpit-config.module.ts","../../cockpit-config/c8y-ngx-components-cockpit-config.ts"],"sourcesContent":["export const DEFAULT_HOME_DASHBOARD_NAME = 'home-cockpit1';\nexport const USER_HOME_DASHBOARD_NAME = 'home-cockpit-user';\n\nexport interface CockpitConfig {\n rootNodes: CockpitConfigRootNode[];\n features: {\n alarms: boolean;\n dataExplorer: boolean;\n groups: boolean;\n reports: boolean;\n exports: boolean;\n dataPointLibrary: boolean;\n globalSmartRules: boolean;\n smartRules: boolean;\n subassets: boolean;\n search: boolean;\n [key: string]: boolean;\n };\n hideNavigator: boolean;\n homeDashboardName: string;\n userSpecificHomeDashboard: boolean;\n}\n\nexport const DEFAULT_CONFIG: CockpitConfig = {\n rootNodes: [],\n features: {\n alarms: true,\n dataExplorer: true,\n groups: true,\n reports: true,\n exports: true,\n dataPointLibrary: true,\n globalSmartRules: true,\n smartRules: true,\n subassets: true,\n search: true\n },\n hideNavigator: false,\n homeDashboardName: DEFAULT_HOME_DASHBOARD_NAME,\n userSpecificHomeDashboard: false\n};\n\nexport interface CockpitConfigRootNode {\n id: string;\n name: string;\n hideDevices?: boolean;\n}\n\nexport enum HomeDashboardType {\n /**\n * Shared by all Cockpit apps\n */\n DEFAULT,\n /**\n * Only for the current Cockpit.\n */\n APP,\n /**\n * Only for the current user.\n */\n USER\n}\n\nexport const COCKPIT_CONFIG_PATH = 'cockpit-application-configuration';\n","import { Injectable } from '@angular/core';\nimport { CanActivate } from '@angular/router';\nimport {\n AppStateService,\n gettext,\n NavigatorNode,\n NavigatorNodeFactory,\n Permissions\n} from '@c8y/ngx-components';\nimport { EcosystemService } from '@c8y/ngx-components/ecosystem/shared';\nimport { COCKPIT_CONFIG_PATH } from './cockpit-config.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CockpitConfigGuard implements CanActivate, NavigatorNodeFactory {\n protected readonly configNode: NavigatorNode = new NavigatorNode({\n path: `/${COCKPIT_CONFIG_PATH}`,\n parent: gettext('Configuration'),\n label: gettext('App configuration'),\n icon: 'imac-settings',\n preventDuplicates: true\n });\n\n constructor(\n private permissions: Permissions,\n private appState: AppStateService,\n private ecosystemService: EcosystemService\n ) {}\n\n get(): NavigatorNode {\n if (this.canActivate()) {\n return this.configNode;\n }\n return;\n }\n\n canActivate(): boolean {\n return (\n this.permissions.hasRole('ROLE_APPLICATION_MANAGEMENT_ADMIN') &&\n this.ecosystemService.isOwner(this.appState.currentApplication.value)\n );\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { InventoryService } from '@c8y/client';\nimport {\n AppStateService,\n ExtensionFactory,\n NavigatorNode,\n NavigatorService,\n OptionsService,\n Permissions,\n SearchService,\n Tab,\n TabsService\n} from '@c8y/ngx-components';\nimport {\n AssetNavigatorConfig,\n AssetNodeService,\n ASSET_NAVIGATOR_CONFIG\n} from '@c8y/ngx-components/assets-navigator';\nimport { isUndefined, startCase } from 'lodash-es';\nimport { map } from 'rxjs/operators';\nimport { CockpitConfig, DEFAULT_CONFIG, DEFAULT_HOME_DASHBOARD_NAME } from './cockpit-config.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CockpitConfigService {\n currentConfig: CockpitConfig = DEFAULT_CONFIG;\n nodes: NavigatorNode[] = [];\n private navigationFactory: ExtensionFactory<NavigatorNode> = {\n get: () => this.nodes\n };\n\n private readonly DEFAULT_NODE_PRIORITY = 2000;\n\n get excludedFeatureKeys() {\n return Object.keys(this.currentConfig.features).filter(\n key => !this.currentConfig.features[key]\n );\n }\n\n constructor(\n private navigatorService: NavigatorService,\n private tabsService: TabsService,\n private searchService: SearchService,\n private assetNodeService: AssetNodeService,\n private inventoryService: InventoryService,\n private appState: AppStateService,\n private optionsService: OptionsService,\n private permissions: Permissions,\n @Optional() @Inject(ASSET_NAVIGATOR_CONFIG) public moduleConfig: AssetNavigatorConfig\n ) {\n this.registerFilterForFeatures();\n this.init();\n }\n\n init() {\n this.appState.currentApplicationConfig.subscribe(config => {\n if (config) {\n this.currentConfig = { ...DEFAULT_CONFIG, ...config } as CockpitConfig;\n this.setRootNodes();\n }\n });\n }\n\n async saveConfig(config) {\n this.currentConfig = config;\n await this.storeApplicationConfig(this.currentConfig);\n }\n\n refresh() {\n this.optionsService.hideNavigator = this.currentConfig.hideNavigator;\n this.navigatorService.refresh();\n this.searchService.refresh();\n }\n\n async setRootNodes() {\n this.addNodesToFactories();\n this.nodes.length = 0;\n for (const node of this.currentConfig.rootNodes) {\n const { data } = await this.inventoryService.detail(node.id);\n if (data) {\n this.nodes.push(\n this.assetNodeService.createAssetNode({\n mo: data,\n hideDevices: node.hideDevices,\n priority: isUndefined(this.moduleConfig?.rootNodePriority)\n ? this.DEFAULT_NODE_PRIORITY\n : this.moduleConfig.rootNodePriority\n })\n );\n }\n }\n this.refresh();\n }\n\n getAppDashboardName() {\n return `${DEFAULT_HOME_DASHBOARD_NAME.substring(0, DEFAULT_HOME_DASHBOARD_NAME.length - 1)}_${\n this.appState.state.app.id\n }`;\n }\n\n private async storeApplicationConfig(config: CockpitConfig) {\n await this.appState.updateCurrentApplicationConfig<CockpitConfig>(config);\n }\n\n private addNodesToFactories() {\n const nodeInFactories = this.navigatorService.factories.find(\n fatcory => fatcory === this.navigationFactory\n );\n if (!nodeInFactories) {\n this.navigatorService.factories.push(this.navigationFactory);\n }\n }\n\n private registerFilterForFeatures() {\n this.navigatorService.items$ = this.navigatorService.items$.pipe(\n map(nodes => this.setHiddenAttrLock(nodes)),\n map(nodes => this.filterNavigatorNode(nodes))\n );\n this.tabsService.items$ = this.tabsService.items$.pipe(map(tabs => this.filterTabs(tabs)));\n this.searchService.items$ = this.searchService.items$.pipe(\n map(search => (this.currentConfig.features.search ? search : []))\n );\n }\n\n private setHiddenAttrLock(nodes) {\n nodes.forEach(node => {\n Object.keys(this.currentConfig.features).forEach(key => {\n const childNode = node.find(startCase(key).toLowerCase());\n\n if (childNode) {\n if (\n !this.permissions.hasRole('ROLE_APPLICATION_MANAGEMENT_ADMIN') &&\n childNode.lockHiddenAttr === undefined &&\n childNode.hidden === true\n ) {\n childNode.lockHiddenAttr = childNode.hidden;\n }\n }\n });\n });\n return nodes;\n }\n\n private filterTabs(tabs: Tab[]) {\n return tabs.filter(tab => !this.excludedFeatureKeys.some(key => tab.featureId === key));\n }\n\n private filterNavigatorNode(nodes: NavigatorNode[]) {\n if (!this.currentConfig) {\n return nodes;\n }\n const disabledFeatures = this.excludedFeatureKeys;\n const filteredNodes = nodes.filter(\n node => !disabledFeatures.some(key => node.featureId === key)\n );\n\n this.showAllChildrenNodes(nodes);\n this.hideChildrenNodesThatAreDisabled(nodes, disabledFeatures);\n return filteredNodes;\n }\n\n private hideChildrenNodesThatAreDisabled(nodes: NavigatorNode[], disabledFeatures: string[]) {\n nodes.forEach(node =>\n disabledFeatures.forEach(key => {\n const childNode = node.find(key, 'featureId');\n if (childNode) {\n childNode.hidden = true;\n }\n })\n );\n }\n\n private showAllChildrenNodes(nodes: NavigatorNode[]) {\n nodes.forEach(node => {\n Object.keys(this.currentConfig.features).forEach(key => {\n const childNode = node.find(startCase(key).toLowerCase());\n\n if (childNode) {\n if (childNode.lockHiddenAttr === true) {\n return;\n }\n\n childNode.hidden = false;\n }\n });\n });\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CockpitConfig } from './cockpit-config.model';\n\n@Component({\n selector: 'c8y-feature-config',\n templateUrl: './feature-config.component.html'\n})\nexport class FeatureConfigComponent {\n @Input()\n config: CockpitConfig;\n\n @Output()\n onUpdate = new EventEmitter<void>();\n\n updateFeatures() {\n this.onUpdate.emit();\n }\n}\n","<c8y-list-group class=\"separator-top\">\n <c8y-li>\n <c8y-li-icon icon=\"search\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Global search' | translate }}</p>\n <p>\n <small translate>Display the global search in the main header.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global search' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.search\"\n name=\"search\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"c8y-group\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Groups' | translate }}</p>\n <p>\n <small translate>Display top level groups under the Groups navigator menu.</small>\n </p>\n </div>\n <label class=\"c8y-switch c8y-switch--inline m-l-auto\" title=\"{{ 'Groups' | translate }}\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.groups\"\n name=\"groups\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"bell\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Alarms' | translate }}</p>\n <p>\n <small translate>Display a link to the global alarms list in the navigator menu.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global Alarms view' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.alarms\"\n name=\"alarms\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"c8y-data-explorer\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Data explorer' | translate }}</p>\n <p>\n <small translate>\n Display the data explorer in the navigator menu and on the group tabs.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Data explorer' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.dataExplorer\"\n name=\"dataExplorer\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"c8y-reports\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Reports' | translate }}</p>\n <p>\n <small translate>Display a link to the Reports list in the navigator menu.</small>\n </p>\n </div>\n <label class=\"c8y-switch c8y-switch--inline m-l-auto\" title=\"{{ 'Reports' | translate }}\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.reports\"\n name=\"reports\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"graph-report\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Exports' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Exports list under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label class=\"c8y-switch c8y-switch--inline m-l-auto\" title=\"{{ 'Exports' | translate }}\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.exports\"\n name=\"exports\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"c8y-data-points\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Data point library' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Data point library under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Data point library' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.dataPointLibrary\"\n name=\"dataPointLibrary\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"c8y-smart-rules\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Global smart rules' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Global smart rules under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global smart rules' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.globalSmartRules\"\n name=\"globalSmartRules\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"c8y-group-open\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Subassets view' | translate }}</p>\n <p><small translate>Display the \"Subassets\" tab on groups.</small></p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Subassets view' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.subassets\"\n name=\"subassets\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"c8y-smart-rules\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Smart rules for devices and groups' | translate }}</p>\n <p>\n <small translate>Display the smart rules tab on groups and devices.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Smart rules for devices and groups' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.smartRules\"\n name=\"smartRules\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n</c8y-list-group>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CockpitConfig, CockpitConfigRootNode } from './cockpit-config.model';\n\n@Component({\n selector: 'c8y-root-node-config',\n templateUrl: './root-node-config.component.html'\n})\nexport class RootNodeConfigComponent {\n @Input()\n config: CockpitConfig;\n\n @Output()\n onUpdate = new EventEmitter<void>();\n\n /**\n * Removes one of the root nodes.\n * @param node The node to remove.\n */\n removeNavigatorNode(node: CockpitConfigRootNode) {\n const index = this.config.rootNodes.indexOf(node);\n if (index > -1) {\n this.config.rootNodes.splice(index, 1);\n this.onUpdate.emit();\n }\n }\n}\n","<div class=\"col-sm-6\">\n <label title=\"{{ 'Current top level nodes' | translate }}\" translate>\n Current top level nodes\n </label>\n <c8y-list-group class=\"separator-top\">\n <c8y-li *ngIf=\"config.rootNodes.length === 0\">\n <div class=\"c8y-empty-state text-left\">\n <h1 c8yIcon=\"folder-open\"></h1>\n <p>\n <strong>{{ 'No top level nodes set' | translate }}</strong>\n </p>\n </div>\n </c8y-li>\n <c8y-li *ngFor=\"let node of config.rootNodes; let index = index\">\n <c8y-li-icon icon=\"c8y-group\"></c8y-li-icon>\n <div class=\"content-flex-30\">\n <div class=\"col-6\">\n <div class=\"text-truncate\" title=\"{{ node.name }}\">\n {{ node.name }}\n </div>\n </div>\n <div class=\"col-4\">\n <label class=\"c8y-switch c8y-switch--inline\" title=\"{{ 'Hide devices' | translate }}\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"node.hideDevices\"\n name=\"node.{{ index }}.hideDevices\"\n (change)=\"onUpdate.emit()\"\n />\n <span></span>\n <small>{{ 'Hide devices' | translate }}</small>\n </label>\n </div>\n <div class=\"col-2 text-right\">\n <div class=\"d-flex fit-w\">\n <button\n class=\"btn btn-dot btn-dot--danger m-l-auto\"\n tooltip=\"{{ 'Remove' | translate }}\"\n [attr.aria-label]=\"'Remove' | translate\"\n type=\"button\"\n (click)=\"removeNavigatorNode(node)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </div>\n </div>\n </c8y-li>\n </c8y-list-group>\n</div>\n\n<div class=\"col-sm-6 col-md-5 col-md-offset-1\">\n <label title=\"{{ 'Select top level nodes' | translate }}\" translate>Select top level nodes</label>\n <c8y-asset-selector\n [config]=\"{ groupsOnly: true, multi: true, groupsSelectable: true }\"\n [(ngModel)]=\"config.rootNodes\"\n (onSelected)=\"onUpdate.emit()\"\n name=\"rootNodes\"\n ></c8y-asset-selector>\n</div>\n","import { Component, Input } from '@angular/core';\nimport {\n CockpitConfig,\n DEFAULT_HOME_DASHBOARD_NAME,\n HomeDashboardType,\n USER_HOME_DASHBOARD_NAME\n} from './cockpit-config.model';\nimport { CockpitConfigService } from './cockpit-config.service';\n\n@Component({\n selector: 'c8y-home-dashboard-config',\n templateUrl: './home-dashboard-config.component.html'\n})\nexport class HomeDashboardConfigComponent {\n @Input()\n config: CockpitConfig;\n\n /**\n * The types of dashboard that can be configured.\n */\n readonly homeDashboardTypes = HomeDashboardType;\n\n /**\n * @ignore\n */\n constructor(private cockpitConfigService: CockpitConfigService) {}\n\n /**\n * @ignore\n */\n dashboardChange(selected: boolean, type: HomeDashboardType) {\n if (!selected) {\n return;\n }\n\n switch (type) {\n case this.homeDashboardTypes.DEFAULT: {\n this.config.homeDashboardName = DEFAULT_HOME_DASHBOARD_NAME;\n this.config.userSpecificHomeDashboard = false;\n break;\n }\n case this.homeDashboardTypes.APP: {\n this.config.homeDashboardName = this.cockpitConfigService.getAppDashboardName();\n this.config.userSpecificHomeDashboard = false;\n break;\n }\n case this.homeDashboardTypes.USER: {\n this.config.homeDashboardName = USER_HOME_DASHBOARD_NAME;\n this.config.userSpecificHomeDashboard = true;\n break;\n }\n }\n }\n\n /**\n * @ignore\n */\n verifySelected(type: HomeDashboardType) {\n if (type === this.homeDashboardTypes.USER) {\n return this.config.userSpecificHomeDashboard;\n }\n if (type === this.homeDashboardTypes.DEFAULT) {\n return this.config.homeDashboardName === DEFAULT_HOME_DASHBOARD_NAME;\n }\n return this.config.homeDashboardName === this.cockpitConfigService.getAppDashboardName();\n }\n}\n","<c8y-list-group class=\"separator-top\">\n <c8y-li>\n <c8y-li-radio\n (onSelect)=\"dashboardChange($event, homeDashboardTypes.DEFAULT)\"\n [selected]=\"verifySelected(homeDashboardTypes.DEFAULT)\"\n ></c8y-li-radio>\n <p translate>Default home dashboard</p>\n <small translate>Changes done in the home dashboard are reflected across the platform.</small>\n </c8y-li>\n <c8y-li>\n <c8y-li-radio\n (onSelect)=\"dashboardChange($event, homeDashboardTypes.APP)\"\n [selected]=\"verifySelected(homeDashboardTypes.APP)\"\n ></c8y-li-radio>\n <p translate>Custom home dashboard</p>\n <small translate>\n Changes done to the home dashboard are reflected only in the current application.\n </small>\n </c8y-li>\n <c8y-li>\n <c8y-li-radio\n (onSelect)=\"dashboardChange($event, homeDashboardTypes.USER)\"\n [selected]=\"verifySelected(homeDashboardTypes.USER)\"\n ></c8y-li-radio>\n <p translate>User home dashboard</p>\n <small translate>\n Changes done to the home dashboard are reflected only for the current user. NOTE: This user\n needs to have inventory write permission.\n </small>\n </c8y-li>\n</c8y-list-group>\n","import { Component, Input } from '@angular/core';\nimport { CockpitConfig } from './cockpit-config.model';\n\n@Component({\n selector: 'c8y-misc-config',\n templateUrl: './misc-config.component.html'\n})\nexport class MiscConfigComponent {\n @Input()\n config: CockpitConfig;\n}\n","<c8y-list-group class=\"separator-top\">\n <c8y-li>\n <div class=\"d-flex a-i-center\">\n <p>{{ 'Always collapse navigator on start up' | translate }}</p>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Collapse navigator on start up' | translate }}\"\n >\n <input type=\"checkbox\" [(ngModel)]=\"config.hideNavigator\" name=\"hideNavigator\" />\n <span></span>\n </label>\n </div>\n </c8y-li>\n</c8y-list-group>\n","import { Component, OnInit } from '@angular/core';\nimport { AlertService, gettext } from '@c8y/ngx-components';\nimport { CockpitConfig, DEFAULT_CONFIG } from './cockpit-config.model';\nimport { CockpitConfigService } from './cockpit-config.service';\n\n@Component({\n selector: 'c8y-cockpit-configuration',\n templateUrl: './cockpit-configuration.component.html'\n})\nexport class CockpitConfigurationComponent implements OnInit {\n /**\n * The currently used configuration.\n */\n config: CockpitConfig = DEFAULT_CONFIG;\n\n constructor(\n private cockpitConfigService: CockpitConfigService,\n private alertService: AlertService\n ) {}\n\n /**\n * @ignore\n */\n ngOnInit() {\n this.config = this.cockpitConfigService.currentConfig;\n }\n\n /**\n * Stores the configuration and shows a success message.\n */\n async save() {\n try {\n await this.cockpitConfigService.saveConfig(this.config);\n this.alertService.success(gettext('Cockpit configuration saved.'));\n } catch (ex) {\n this.alertService.addServerFailure(ex);\n }\n }\n\n /**\n * Updates the features to directly reflect the results of the change.\n */\n updateFeatures() {\n this.cockpitConfigService.currentConfig = this.config;\n this.cockpitConfigService.refresh();\n }\n\n /**\n * Updates the root nodes to directly reflect the results of the change.\n */\n async updateRootNodes() {\n this.cockpitConfigService.currentConfig = this.config;\n await this.cockpitConfigService.setRootNodes();\n }\n}\n","<c8y-title>{{ 'App configuration' | translate }}</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'Configuration' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'App configuration' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n<div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <form #configForm=\"ngForm\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\" translate>Cockpit configuration</div>\n </div>\n\n <div class=\"inner-scroll\">\n <div class=\"card-block p-t-0 p-b-0\">\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-4\" translate>Features</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Define which are the enabled features in the current application.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-feature-config\n [config]=\"config\"\n (onUpdate)=\"updateFeatures()\"\n ></c8y-feature-config>\n </div>\n </fieldset>\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Top level nodes</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Select which nodes to display in the top level of the navigator menu. By default, only Groups is shown.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-10 col-md-10\">\n <div class=\"row\">\n <c8y-root-node-config\n [config]=\"config\"\n (onUpdate)=\"updateRootNodes()\"\n ></c8y-root-node-config>\n </div>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Home dashboard</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'The home page of this application. By default it is a customizable dashboard displaying overview data for the tenant.'\n | translate\n }}\"\n placement=\"right\"\n container=\"body\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"h4 text-medium d-inline-block m-r-4\" translate>Misc</div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-misc-config [config]=\"config\"></c8y-misc-config>\n </div>\n </fieldset>\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary\"\n [disabled]=\"!configForm.form.valid\"\n (click)=\"save()\"\n c8yProductExperience\n [actionName]=\"'cockpitConfigurationSaved'\"\n [actionData]=\"{ config: config }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </form>\n </div>\n</div>\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { AppStateService, AlertService, C8yStepper, SetupComponent } from '@c8y/ngx-components';\nimport { CockpitConfig, DEFAULT_CONFIG } from '../cockpit-config.model';\n\nexport abstract class CockpitSetupStep {\n config: CockpitConfig = DEFAULT_CONFIG;\n pending = false;\n\n constructor(\n public stepper: C8yStepper,\n protected step: CdkStep,\n protected setup: SetupComponent,\n protected appState: AppStateService,\n protected alert: AlertService\n ) {}\n\n async next() {\n this.pending = true;\n try {\n const newConfig = { ...this.setup.data$.value, ...this.config };\n await this.appState.updateCurrentApplicationConfig(newConfig);\n this.setup.stepCompleted(this.stepper.selectedIndex);\n this.setup.data$.next(newConfig);\n this.stepper.next();\n } catch (ex) {\n this.alert.addServerFailure(ex);\n } finally {\n this.pending = false;\n }\n }\n\n back() {\n this.stepper.previous();\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'c8y-cockpit-setup-stepper-buttons',\n templateUrl: './cockpit-setup-stepper-buttons.component.html'\n})\nexport class CockpitSetupStepperButtonsComponent {\n @Input() index;\n @Output() onNext = new EventEmitter<void>();\n @Output() onBack = new EventEmitter<void>();\n}\n","<div class=\"card-footer separator d-flex j-c-center\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"onBack.emit()\"\n *ngIf=\"index !== 0\"\n translate\n >\n Previous\n </button>\n <button class=\"btn btn-primary\" type=\"submit\" (click)=\"onNext.emit()\" translate>\n Save and continue\n </button>\n</div>\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { Component } from '@angular/core';\nimport { AlertService, AppStateService, C8yStepper, SetupComponent } from '@c8y/ngx-components';\nimport { CockpitSetupStep } from './cockpit-setup-step';\n\n@Component({\n selector: 'c8y-cockpit-setup-step1',\n templateUrl: './cockpit-setup-step1.component.html',\n host: { class: 'd-contents' }\n})\nexport class CockpitSetupStep1Component extends CockpitSetupStep {\n constructor(\n public stepper: C8yStepper,\n protected step: CdkStep,\n protected setup: SetupComponent,\n protected appState: AppStateService,\n protected alert: AlertService\n ) {\n super(stepper, step, setup, appState, alert);\n }\n}\n","<form #stepForm=\"ngForm\" name=\"form\" class=\"d-contents\">\n <div class=\"container-fluid flex-no-shrink fit-w\">\n <div class=\"row separator-bottom\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 p-t-24 p-l-16 p-r-16\">\n <h3 translate class=\"text-medium l-h-base\">Features</h3>\n <p class=\"lead text-normal\" translate>\n Define which are the enabled features in the current application.\n </p>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll flex-grow\">\n <div class=\"container-fluid fit-w\">\n <div class=\"row\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\">\n <c8y-feature-config [config]=\"config\"></c8y-feature-config>\n </div>\n </div>\n </div>\n </div>\n <c8y-cockpit-setup-stepper-buttons\n [index]=\"stepper.selectedIndex\"\n (onNext)=\"next()\"\n (onBack)=\"back()\"\n >\n </c8y-cockpit-setup-stepper-buttons>\n</form>\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { Component } from '@angular/core';\nimport { AlertService, AppStateService, C8yStepper, SetupComponent } from '@c8y/ngx-components';\nimport { CockpitSetupStep } from './cockpit-setup-step';\n\n@Component({\n selector: 'c8y-cockpit-setup-step2',\n templateUrl: './cockpit-setup-step2.component.html',\n host: { class: 'd-contents' }\n})\nexport class CockpitSetupStep2Component extends CockpitSetupStep {\n constructor(\n public stepper: C8yStepper,\n protected step: CdkStep,\n protected setup: SetupComponent,\n protected appState: AppStateService,\n protected alert: AlertService\n ) {\n super(stepper, step, setup, appState, alert);\n }\n}\n","<form #stepForm=\"ngForm\" name=\"form\" class=\"d-contents\">\n <div class=\"container-fluid flex-no-shrink fit-w\">\n <div class=\"row separator-bottom\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 p-t-24 p-l-16 p-r-16\">\n <h3 translate class=\"text-medium l-h-base\">Top level nodes</h3>\n <p class=\"lead text-normal\" translate>\n Select which nodes to display in the top level of the navigator menu. By default, only\n Groups is shown.\n </p>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll flex-grow\">\n <div class=\"container-fluid fit-w p-t-16\">\n <div class=\"row\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\">\n <c8y-root-node-config [config]=\"config\"></c8y-root-node-config>\n </div>\n </div>\n </div>\n </div>\n <c8y-cockpit-setup-stepper-buttons\n [index]=\"stepper.selectedIndex\"\n (onNext)=\"next()\"\n (onBack)=\"back()\"\n >\n </c8y-cockpit-setup-stepper-buttons>\n</form>\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { Component } from '@angular/core';\nimport { AlertService, AppStateService, C8yStepper, SetupComponent } from '@c8y/ngx-components';\nimport { CockpitSetupStep } from './cockpit-setup-step';\n\n@Component({\n selector: 'c8y-cockpit-setup-step3',\n templateUrl: './cockpit-setup-step3.component.html',\n host: { class: 'd-contents' }\n})\nexport class CockpitSetupStep3Component extends CockpitSetupStep {\n constructor(\n public stepper: C8yStepper,\n protected step: CdkStep,\n protected setup: SetupComponent,\n protected appState: AppStateService,\n protected alert: AlertService\n ) {\n super(stepper, step, setup, appState, alert);\n }\n}\n","<form #stepForm=\"ngForm\" name=\"form\" class=\"d-contents\">\n <div class=\"container-fluid flex-no-shrink fit-w\">\n <div class=\"row separator-bottom\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 p-t-24 p-l-16 p-r-16\">\n <h3 translate class=\"text-medium l-h-base\">Home dashboard</h3>\n <p class=\"lead text-normal\" translate>\n The home page of this application. By default it is a customizable dashboard displaying\n overview data for the tenant.\n </p>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll flex-grow\">\n <div class=\"container-fluid fit-w\">\n <div class=\"row\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\">\n <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n </div>\n </div>\n </div>\n </div>\n <c8y-cockpit-setup-stepper-buttons\n [index]=\"stepper.selectedIndex\"\n (onNext)=\"next()\"\n (onBack)=\"back()\"\n ></c8y-cockpit-setup-stepper-buttons>\n</form>\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { Component } from '@angular/core';\nimport { AlertService, AppStateService, C8yStepper, SetupComponent } from '@c8y/ngx-components';\nimport { CockpitSetupStep } from './cockpit-setup-step';\n\n@Component({\n selector: 'c8y-cockpit-setup-step4',\n templateUrl: './cockpit-setup-step4.component.html',\n host: { class: 'd-contents' }\n})\nexport class CockpitSetupStep4Component extends CockpitSetupStep {\n constructor(\n public stepper: C8yStepper,\n protected step: CdkStep,\n protected setup: SetupComponent,\n protected appState: AppStateService,\n protected alert: AlertService\n ) {\n super(stepper, step, setup, appState, alert);\n }\n}\n","<form #stepForm=\"ngForm\" name=\"form\" class=\"d-contents\">\n <div class=\"container-fluid flex-no-shrink fit-w\">\n <div class=\"row separator-bottom\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 p-t-24 p-l-16 p-r-16\">\n <h3 translate class=\"text-medium l-h-base\">Misc</h3>\n <p class=\"lead text-normal\" translate>\n Miscellaneous settings for the current application.\n </p>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll flex-grow\">\n <div class=\"container-fluid fit-w\">\n <div class=\"row\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\">\n <c8y-misc-config [config]=\"config\"></c8y-misc-config>\n </div>\n </div>\n </div>\n </div>\n <c8y-cockpit-setup-stepper-buttons\n [index]=\"stepper.selectedIndex\"\n (onNext)=\"next()\"\n (onBack)=\"back()\"\n >\n </c8y-cockpit-setup-stepper-buttons>\n</form>\n","import { NgModule } from '@angular/core';\nimport {\n CoreModule,\n gettext,\n hookNavigator,\n hookRoute,\n hookStepper,\n SetupStep,\n Steppers\n} from '@c8y/ngx-components';\nimport { AssetSelectorModule } from '@c8y/ngx-components/assets-navigator';\nimport { EcosystemModule } from '@c8y/ngx-components/ecosystem';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { CockpitConfigGuard } from './cockpit-config.guard';\nimport { COCKPIT_CONFIG_PATH } from './cockpit-config.model';\nimport { CockpitConfigService } from './cockpit-config.service';\nimport { CockpitConfigurationComponent } from './cockpit-configuration.component';\nimport { FeatureConfigComponent } from './feature-config.component';\nimport { HomeDashboardConfigComponent } from './home-dashboard-config.component';\nimport { MiscConfigComponent } from './misc-config.component';\nimport { RootNodeConfigComponent } from './root-node-config.component';\nimport { CockpitSetupStep1Component } from './setup/cockpit-setup-step1.component';\nimport { CockpitSetupStep2Component } from './setup/cockpit-setup-step2.component';\nimport { CockpitSetupStep3Component } from './setup/cockpit-setup-step3.component';\nimport { CockpitSetupStep4Component } from './setup/cockpit-setup-step4.component';\nimport { CockpitSetupStepperButtonsComponent } from './setup/cockpit-setup-stepper-buttons.component';\n\n@NgModule({\n declarations: [\n CockpitConfigurationComponent,\n CockpitSetupStep1Component,\n CockpitSetupStep2Component,\n CockpitSetupStep3Component,\n CockpitSetupStep4Component,\n FeatureConfigComponent,\n RootNodeConfigComponent,\n HomeDashboardConfigComponent,\n MiscConfigComponent,\n CockpitSetupStepperButtonsComponent\n ],\n imports: [CoreModule, AssetSelectorModule, PopoverModule, TooltipModule, EcosystemModule],\n providers: [\n CockpitConfigGuard,\n hookRoute({\n path: COCKPIT_CONFIG_PATH,\n component: CockpitConfigurationComponent,\n canActivate: [CockpitConfigGuard]\n }),\n hookNavigator(CockpitConfigGuard),\n hookStepper([\n {\n stepperId: Steppers.SETUP,\n component: CockpitSetupStep1Component,\n label: gettext('Features'),\n setupId: 'cockpitFeatures',\n priority: 30\n },\n {\n stepperId: Steppers.SETUP,\n component: CockpitSetupStep2Component,\n label: gettext('Top level nodes'),\n setupId: 'cockpitTopLevelNodes',\n priority: 20\n },\n {\n stepperId: Steppers.SETUP,\n component: CockpitSetupStep3Component,\n label: gettext('Home dashboard'),\n setupId: 'cockpitHomeDashboard',\n priority: 10\n },\n {\n stepperId: Steppers.SETUP,\n component: CockpitSetupStep4Component,\n label: gettext('Misc'),\n setupId: 'cockpitMisc',\n priority: 0\n }\n ] as SetupStep[])\n ]\n})\nexport class CockpitConfigModule {\n constructor(private service: CockpitConfigService) {\n // only for DI, not used but needed.\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i3","i4","i1.CockpitConfigService","i1","i5.FeatureConfigComponent","i6.RootNodeConfigComponent","i7.HomeDashboardConfigComponent","i8.MiscConfigComponent","i4.FeatureConfigComponent","i5.CockpitSetupStepperButtonsComponent","i4.RootNodeConfigComponent","i4.HomeDashboardConfigComponent","i4.MiscConfigComponent"],"mappings":"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"}
@@ -383,10 +383,10 @@ class CockpitConfigurationComponent {
383
383
  }
384
384
  }
385
385
  CockpitConfigurationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CockpitConfigurationComponent, deps: [{ token: CockpitConfigService }, { token: i1.AlertService }], target: i0.ɵɵFactoryTarget.Component });
386
- CockpitConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: CockpitConfigurationComponent, selector: "c8y-cockpit-configuration", ngImport: i0, template: "<c8y-title translate>App configuration</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'Configuration' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'App configuration' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n<div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <form #configForm=\"ngForm\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\" translate>Cockpit configuration</div>\n </div>\n\n <div class=\"inner-scroll\">\n <div class=\"card-block p-t-0 p-b-0\">\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-4\" translate>Features</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Define which are the enabled features in the current application.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-feature-config\n [config]=\"config\"\n (onUpdate)=\"updateFeatures()\"\n ></c8y-feature-config>\n </div>\n </fieldset>\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Top level nodes</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Select which nodes to display in the top level of the navigator menu. By default, only Groups is shown.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-10 col-md-10\">\n <div class=\"row\">\n <c8y-root-node-config\n [config]=\"config\"\n (onUpdate)=\"updateRootNodes()\"\n ></c8y-root-node-config>\n </div>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Home dashboard</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'The home page of this application. By default it is a customizable dashboard displaying overview data for the tenant.'\n | translate\n }}\"\n placement=\"right\"\n container=\"body\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"h4 text-medium d-inline-block m-r-4\" translate>Misc</div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-misc-config [config]=\"config\"></c8y-misc-config>\n </div>\n </fieldset>\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary\"\n [disabled]=\"!configForm.form.valid\"\n (click)=\"save()\"\n c8yProductExperience\n [actionName]=\"'cockpitConfigurationSaved'\"\n [actionData]=\"{ config: config }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </form>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i1.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i1.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: i1.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i3$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit"] }, { kind: "directive", type: i4.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: FeatureConfigComponent, selector: "c8y-feature-config", inputs: ["config"], outputs: ["onUpdate"] }, { kind: "component", type: RootNodeConfigComponent, selector: "c8y-root-node-config", inputs: ["config"], outputs: ["onUpdate"] }, { kind: "component", type: HomeDashboardConfigComponent, selector: "c8y-home-dashboard-config", inputs: ["config"] }, { kind: "component", type: MiscConfigComponent, selector: "c8y-misc-config", inputs: ["config"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }] });
386
+ CockpitConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: CockpitConfigurationComponent, selector: "c8y-cockpit-configuration", ngImport: i0, template: "<c8y-title>{{ 'App configuration' | translate }}</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'Configuration' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'App configuration' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n<div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <form #configForm=\"ngForm\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\" translate>Cockpit configuration</div>\n </div>\n\n <div class=\"inner-scroll\">\n <div class=\"card-block p-t-0 p-b-0\">\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-4\" translate>Features</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Define which are the enabled features in the current application.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-feature-config\n [config]=\"config\"\n (onUpdate)=\"updateFeatures()\"\n ></c8y-feature-config>\n </div>\n </fieldset>\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Top level nodes</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Select which nodes to display in the top level of the navigator menu. By default, only Groups is shown.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-10 col-md-10\">\n <div class=\"row\">\n <c8y-root-node-config\n [config]=\"config\"\n (onUpdate)=\"updateRootNodes()\"\n ></c8y-root-node-config>\n </div>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Home dashboard</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'The home page of this application. By default it is a customizable dashboard displaying overview data for the tenant.'\n | translate\n }}\"\n placement=\"right\"\n container=\"body\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"h4 text-medium d-inline-block m-r-4\" translate>Misc</div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-misc-config [config]=\"config\"></c8y-misc-config>\n </div>\n </fieldset>\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary\"\n [disabled]=\"!configForm.form.valid\"\n (click)=\"save()\"\n c8yProductExperience\n [actionName]=\"'cockpitConfigurationSaved'\"\n [actionData]=\"{ config: config }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </form>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i1.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i1.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: i1.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i3$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit"] }, { kind: "directive", type: i4.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: FeatureConfigComponent, selector: "c8y-feature-config", inputs: ["config"], outputs: ["onUpdate"] }, { kind: "component", type: RootNodeConfigComponent, selector: "c8y-root-node-config", inputs: ["config"], outputs: ["onUpdate"] }, { kind: "component", type: HomeDashboardConfigComponent, selector: "c8y-home-dashboard-config", inputs: ["config"] }, { kind: "component", type: MiscConfigComponent, selector: "c8y-misc-config", inputs: ["config"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }] });
387
387
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CockpitConfigurationComponent, decorators: [{
388
388
  type: Component,
389
- args: [{ selector: 'c8y-cockpit-configuration', template: "<c8y-title translate>App configuration</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'Configuration' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'App configuration' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n<div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <form #configForm=\"ngForm\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\" translate>Cockpit configuration</div>\n </div>\n\n <div class=\"inner-scroll\">\n <div class=\"card-block p-t-0 p-b-0\">\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-4\" translate>Features</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Define which are the enabled features in the current application.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-feature-config\n [config]=\"config\"\n (onUpdate)=\"updateFeatures()\"\n ></c8y-feature-config>\n </div>\n </fieldset>\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Top level nodes</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Select which nodes to display in the top level of the navigator menu. By default, only Groups is shown.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-10 col-md-10\">\n <div class=\"row\">\n <c8y-root-node-config\n [config]=\"config\"\n (onUpdate)=\"updateRootNodes()\"\n ></c8y-root-node-config>\n </div>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Home dashboard</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'The home page of this application. By default it is a customizable dashboard displaying overview data for the tenant.'\n | translate\n }}\"\n placement=\"right\"\n container=\"body\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"h4 text-medium d-inline-block m-r-4\" translate>Misc</div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-misc-config [config]=\"config\"></c8y-misc-config>\n </div>\n </fieldset>\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary\"\n [disabled]=\"!configForm.form.valid\"\n (click)=\"save()\"\n c8yProductExperience\n [actionName]=\"'cockpitConfigurationSaved'\"\n [actionData]=\"{ config: config }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </form>\n </div>\n</div>\n" }]
389
+ args: [{ selector: 'c8y-cockpit-configuration', template: "<c8y-title>{{ 'App configuration' | translate }}</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'Configuration' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'App configuration' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n<div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <form #configForm=\"ngForm\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\" translate>Cockpit configuration</div>\n </div>\n\n <div class=\"inner-scroll\">\n <div class=\"card-block p-t-0 p-b-0\">\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-4\" translate>Features</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Define which are the enabled features in the current application.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-feature-config\n [config]=\"config\"\n (onUpdate)=\"updateFeatures()\"\n ></c8y-feature-config>\n </div>\n </fieldset>\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Top level nodes</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Select which nodes to display in the top level of the navigator menu. By default, only Groups is shown.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-10 col-md-10\">\n <div class=\"row\">\n <c8y-root-node-config\n [config]=\"config\"\n (onUpdate)=\"updateRootNodes()\"\n ></c8y-root-node-config>\n </div>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Home dashboard</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'The home page of this application. By default it is a customizable dashboard displaying overview data for the tenant.'\n | translate\n }}\"\n placement=\"right\"\n container=\"body\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"h4 text-medium d-inline-block m-r-4\" translate>Misc</div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-misc-config [config]=\"config\"></c8y-misc-config>\n </div>\n </fieldset>\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary\"\n [disabled]=\"!configForm.form.valid\"\n (click)=\"save()\"\n c8yProductExperience\n [actionName]=\"'cockpitConfigurationSaved'\"\n [actionData]=\"{ config: config }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </form>\n </div>\n</div>\n" }]
390
390
  }], ctorParameters: function () { return [{ type: CockpitConfigService }, { type: i1.AlertService }]; } });
391
391
 
392
392
  class CockpitSetupStep {
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-cockpit-config.mjs","sources":["../../cockpit-config/cockpit-config.model.ts","../../cockpit-config/cockpit-config.guard.ts","../../cockpit-config/cockpit-config.service.ts","../../cockpit-config/feature-config.component.ts","../../cockpit-config/feature-config.component.html","../../cockpit-config/root-node-config.component.ts","../../cockpit-config/root-node-config.component.html","../../cockpit-config/home-dashboard-config.component.ts","../../cockpit-config/home-dashboard-config.component.html","../../cockpit-config/misc-config.component.ts","../../cockpit-config/misc-config.component.html","../../cockpit-config/cockpit-configuration.component.ts","../../cockpit-config/cockpit-configuration.component.html","../../cockpit-config/setup/cockpit-setup-step.ts","../../cockpit-config/setup/cockpit-setup-stepper-buttons.component.ts","../../cockpit-config/setup/cockpit-setup-stepper-buttons.component.html","../../cockpit-config/setup/cockpit-setup-step1.component.ts","../../cockpit-config/setup/cockpit-setup-step1.component.html","../../cockpit-config/setup/cockpit-setup-step2.component.ts","../../cockpit-config/setup/cockpit-setup-step2.component.html","../../cockpit-config/setup/cockpit-setup-step3.component.ts","../../cockpit-config/setup/cockpit-setup-step3.component.html","../../cockpit-config/setup/cockpit-setup-step4.component.ts","../../cockpit-config/setup/cockpit-setup-step4.component.html","../../cockpit-config/cockpit-config.module.ts","../../cockpit-config/c8y-ngx-components-cockpit-config.ts"],"sourcesContent":["export const DEFAULT_HOME_DASHBOARD_NAME = 'home-cockpit1';\nexport const USER_HOME_DASHBOARD_NAME = 'home-cockpit-user';\n\nexport interface CockpitConfig {\n rootNodes: CockpitConfigRootNode[];\n features: {\n alarms: boolean;\n dataExplorer: boolean;\n groups: boolean;\n reports: boolean;\n exports: boolean;\n dataPointLibrary: boolean;\n globalSmartRules: boolean;\n smartRules: boolean;\n subassets: boolean;\n search: boolean;\n [key: string]: boolean;\n };\n hideNavigator: boolean;\n homeDashboardName: string;\n userSpecificHomeDashboard: boolean;\n}\n\nexport const DEFAULT_CONFIG: CockpitConfig = {\n rootNodes: [],\n features: {\n alarms: true,\n dataExplorer: true,\n groups: true,\n reports: true,\n exports: true,\n dataPointLibrary: true,\n globalSmartRules: true,\n smartRules: true,\n subassets: true,\n search: true\n },\n hideNavigator: false,\n homeDashboardName: DEFAULT_HOME_DASHBOARD_NAME,\n userSpecificHomeDashboard: false\n};\n\nexport interface CockpitConfigRootNode {\n id: string;\n name: string;\n hideDevices?: boolean;\n}\n\nexport enum HomeDashboardType {\n /**\n * Shared by all Cockpit apps\n */\n DEFAULT,\n /**\n * Only for the current Cockpit.\n */\n APP,\n /**\n * Only for the current user.\n */\n USER\n}\n\nexport const COCKPIT_CONFIG_PATH = 'cockpit-application-configuration';\n","import { Injectable } from '@angular/core';\nimport { CanActivate } from '@angular/router';\nimport {\n AppStateService,\n gettext,\n NavigatorNode,\n NavigatorNodeFactory,\n Permissions\n} from '@c8y/ngx-components';\nimport { EcosystemService } from '@c8y/ngx-components/ecosystem/shared';\nimport { COCKPIT_CONFIG_PATH } from './cockpit-config.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CockpitConfigGuard implements CanActivate, NavigatorNodeFactory {\n protected readonly configNode: NavigatorNode = new NavigatorNode({\n path: `/${COCKPIT_CONFIG_PATH}`,\n parent: gettext('Configuration'),\n label: gettext('App configuration'),\n icon: 'imac-settings',\n preventDuplicates: true\n });\n\n constructor(\n private permissions: Permissions,\n private appState: AppStateService,\n private ecosystemService: EcosystemService\n ) {}\n\n get(): NavigatorNode {\n if (this.canActivate()) {\n return this.configNode;\n }\n return;\n }\n\n canActivate(): boolean {\n return (\n this.permissions.hasRole('ROLE_APPLICATION_MANAGEMENT_ADMIN') &&\n this.ecosystemService.isOwner(this.appState.currentApplication.value)\n );\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { InventoryService } from '@c8y/client';\nimport {\n AppStateService,\n ExtensionFactory,\n NavigatorNode,\n NavigatorService,\n OptionsService,\n Permissions,\n SearchService,\n Tab,\n TabsService\n} from '@c8y/ngx-components';\nimport {\n AssetNavigatorConfig,\n AssetNodeService,\n ASSET_NAVIGATOR_CONFIG\n} from '@c8y/ngx-components/assets-navigator';\nimport { isUndefined, startCase } from 'lodash-es';\nimport { map } from 'rxjs/operators';\nimport { CockpitConfig, DEFAULT_CONFIG, DEFAULT_HOME_DASHBOARD_NAME } from './cockpit-config.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CockpitConfigService {\n currentConfig: CockpitConfig = DEFAULT_CONFIG;\n nodes: NavigatorNode[] = [];\n private navigationFactory: ExtensionFactory<NavigatorNode> = {\n get: () => this.nodes\n };\n\n private readonly DEFAULT_NODE_PRIORITY = 2000;\n\n get excludedFeatureKeys() {\n return Object.keys(this.currentConfig.features).filter(\n key => !this.currentConfig.features[key]\n );\n }\n\n constructor(\n private navigatorService: NavigatorService,\n private tabsService: TabsService,\n private searchService: SearchService,\n private assetNodeService: AssetNodeService,\n private inventoryService: InventoryService,\n private appState: AppStateService,\n private optionsService: OptionsService,\n private permissions: Permissions,\n @Optional() @Inject(ASSET_NAVIGATOR_CONFIG) public moduleConfig: AssetNavigatorConfig\n ) {\n this.registerFilterForFeatures();\n this.init();\n }\n\n init() {\n this.appState.currentApplicationConfig.subscribe(config => {\n if (config) {\n this.currentConfig = { ...DEFAULT_CONFIG, ...config } as CockpitConfig;\n this.setRootNodes();\n }\n });\n }\n\n async saveConfig(config) {\n this.currentConfig = config;\n await this.storeApplicationConfig(this.currentConfig);\n }\n\n refresh() {\n this.optionsService.hideNavigator = this.currentConfig.hideNavigator;\n this.navigatorService.refresh();\n this.searchService.refresh();\n }\n\n async setRootNodes() {\n this.addNodesToFactories();\n this.nodes.length = 0;\n for (const node of this.currentConfig.rootNodes) {\n const { data } = await this.inventoryService.detail(node.id);\n if (data) {\n this.nodes.push(\n this.assetNodeService.createAssetNode({\n mo: data,\n hideDevices: node.hideDevices,\n priority: isUndefined(this.moduleConfig?.rootNodePriority)\n ? this.DEFAULT_NODE_PRIORITY\n : this.moduleConfig.rootNodePriority\n })\n );\n }\n }\n this.refresh();\n }\n\n getAppDashboardName() {\n return `${DEFAULT_HOME_DASHBOARD_NAME.substring(0, DEFAULT_HOME_DASHBOARD_NAME.length - 1)}_${\n this.appState.state.app.id\n }`;\n }\n\n private async storeApplicationConfig(config: CockpitConfig) {\n await this.appState.updateCurrentApplicationConfig<CockpitConfig>(config);\n }\n\n private addNodesToFactories() {\n const nodeInFactories = this.navigatorService.factories.find(\n fatcory => fatcory === this.navigationFactory\n );\n if (!nodeInFactories) {\n this.navigatorService.factories.push(this.navigationFactory);\n }\n }\n\n private registerFilterForFeatures() {\n this.navigatorService.items$ = this.navigatorService.items$.pipe(\n map(nodes => this.setHiddenAttrLock(nodes)),\n map(nodes => this.filterNavigatorNode(nodes))\n );\n this.tabsService.items$ = this.tabsService.items$.pipe(map(tabs => this.filterTabs(tabs)));\n this.searchService.items$ = this.searchService.items$.pipe(\n map(search => (this.currentConfig.features.search ? search : []))\n );\n }\n\n private setHiddenAttrLock(nodes) {\n nodes.forEach(node => {\n Object.keys(this.currentConfig.features).forEach(key => {\n const childNode = node.find(startCase(key).toLowerCase());\n\n if (childNode) {\n if (\n !this.permissions.hasRole('ROLE_APPLICATION_MANAGEMENT_ADMIN') &&\n childNode.lockHiddenAttr === undefined &&\n childNode.hidden === true\n ) {\n childNode.lockHiddenAttr = childNode.hidden;\n }\n }\n });\n });\n return nodes;\n }\n\n private filterTabs(tabs: Tab[]) {\n return tabs.filter(tab => !this.excludedFeatureKeys.some(key => tab.featureId === key));\n }\n\n private filterNavigatorNode(nodes: NavigatorNode[]) {\n if (!this.currentConfig) {\n return nodes;\n }\n const disabledFeatures = this.excludedFeatureKeys;\n const filteredNodes = nodes.filter(\n node => !disabledFeatures.some(key => node.featureId === key)\n );\n\n this.showAllChildrenNodes(nodes);\n this.hideChildrenNodesThatAreDisabled(nodes, disabledFeatures);\n return filteredNodes;\n }\n\n private hideChildrenNodesThatAreDisabled(nodes: NavigatorNode[], disabledFeatures: string[]) {\n nodes.forEach(node =>\n disabledFeatures.forEach(key => {\n const childNode = node.find(key, 'featureId');\n if (childNode) {\n childNode.hidden = true;\n }\n })\n );\n }\n\n private showAllChildrenNodes(nodes: NavigatorNode[]) {\n nodes.forEach(node => {\n Object.keys(this.currentConfig.features).forEach(key => {\n const childNode = node.find(startCase(key).toLowerCase());\n\n if (childNode) {\n if (childNode.lockHiddenAttr === true) {\n return;\n }\n\n childNode.hidden = false;\n }\n });\n });\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CockpitConfig } from './cockpit-config.model';\n\n@Component({\n selector: 'c8y-feature-config',\n templateUrl: './feature-config.component.html'\n})\nexport class FeatureConfigComponent {\n @Input()\n config: CockpitConfig;\n\n @Output()\n onUpdate = new EventEmitter<void>();\n\n updateFeatures() {\n this.onUpdate.emit();\n }\n}\n","<c8y-list-group class=\"separator-top\">\n <c8y-li>\n <c8y-li-icon icon=\"search\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Global search' | translate }}</p>\n <p>\n <small translate>Display the global search in the main header.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global search' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.search\"\n name=\"search\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"c8y-group\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Groups' | translate }}</p>\n <p>\n <small translate>Display top level groups under the Groups navigator menu.</small>\n </p>\n </div>\n <label class=\"c8y-switch c8y-switch--inline m-l-auto\" title=\"{{ 'Groups' | translate }}\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.groups\"\n name=\"groups\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"bell\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Alarms' | translate }}</p>\n <p>\n <small translate>Display a link to the global alarms list in the navigator menu.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global Alarms view' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.alarms\"\n name=\"alarms\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"c8y-data-explorer\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Data explorer' | translate }}</p>\n <p>\n <small translate>\n Display the data explorer in the navigator menu and on the group tabs.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Data explorer' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.dataExplorer\"\n name=\"dataExplorer\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"c8y-reports\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Reports' | translate }}</p>\n <p>\n <small translate>Display a link to the Reports list in the navigator menu.</small>\n </p>\n </div>\n <label class=\"c8y-switch c8y-switch--inline m-l-auto\" title=\"{{ 'Reports' | translate }}\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.reports\"\n name=\"reports\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"graph-report\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Exports' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Exports list under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label class=\"c8y-switch c8y-switch--inline m-l-auto\" title=\"{{ 'Exports' | translate }}\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.exports\"\n name=\"exports\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"c8y-data-points\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Data point library' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Data point library under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Data point library' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.dataPointLibrary\"\n name=\"dataPointLibrary\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"c8y-smart-rules\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Global smart rules' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Global smart rules under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global smart rules' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.globalSmartRules\"\n name=\"globalSmartRules\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"c8y-group-open\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Subassets view' | translate }}</p>\n <p><small translate>Display the \"Subassets\" tab on groups.</small></p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Subassets view' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.subassets\"\n name=\"subassets\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"c8y-smart-rules\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Smart rules for devices and groups' | translate }}</p>\n <p>\n <small translate>Display the smart rules tab on groups and devices.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Smart rules for devices and groups' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.smartRules\"\n name=\"smartRules\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n</c8y-list-group>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CockpitConfig, CockpitConfigRootNode } from './cockpit-config.model';\n\n@Component({\n selector: 'c8y-root-node-config',\n templateUrl: './root-node-config.component.html'\n})\nexport class RootNodeConfigComponent {\n @Input()\n config: CockpitConfig;\n\n @Output()\n onUpdate = new EventEmitter<void>();\n\n /**\n * Removes one of the root nodes.\n * @param node The node to remove.\n */\n removeNavigatorNode(node: CockpitConfigRootNode) {\n const index = this.config.rootNodes.indexOf(node);\n if (index > -1) {\n this.config.rootNodes.splice(index, 1);\n this.onUpdate.emit();\n }\n }\n}\n","<div class=\"col-sm-6\">\n <label title=\"{{ 'Current top level nodes' | translate }}\" translate>\n Current top level nodes\n </label>\n <c8y-list-group class=\"separator-top\">\n <c8y-li *ngIf=\"config.rootNodes.length === 0\">\n <div class=\"c8y-empty-state text-left\">\n <h1 c8yIcon=\"folder-open\"></h1>\n <p>\n <strong>{{ 'No top level nodes set' | translate }}</strong>\n </p>\n </div>\n </c8y-li>\n <c8y-li *ngFor=\"let node of config.rootNodes; let index = index\">\n <c8y-li-icon icon=\"c8y-group\"></c8y-li-icon>\n <div class=\"content-flex-30\">\n <div class=\"col-6\">\n <div class=\"text-truncate\" title=\"{{ node.name }}\">\n {{ node.name }}\n </div>\n </div>\n <div class=\"col-4\">\n <label class=\"c8y-switch c8y-switch--inline\" title=\"{{ 'Hide devices' | translate }}\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"node.hideDevices\"\n name=\"node.{{ index }}.hideDevices\"\n (change)=\"onUpdate.emit()\"\n />\n <span></span>\n <small>{{ 'Hide devices' | translate }}</small>\n </label>\n </div>\n <div class=\"col-2 text-right\">\n <div class=\"d-flex fit-w\">\n <button\n class=\"btn btn-dot btn-dot--danger m-l-auto\"\n tooltip=\"{{ 'Remove' | translate }}\"\n [attr.aria-label]=\"'Remove' | translate\"\n type=\"button\"\n (click)=\"removeNavigatorNode(node)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </div>\n </div>\n </c8y-li>\n </c8y-list-group>\n</div>\n\n<div class=\"col-sm-6 col-md-5 col-md-offset-1\">\n <label title=\"{{ 'Select top level nodes' | translate }}\" translate>Select top level nodes</label>\n <c8y-asset-selector\n [config]=\"{ groupsOnly: true, multi: true, groupsSelectable: true }\"\n [(ngModel)]=\"config.rootNodes\"\n (onSelected)=\"onUpdate.emit()\"\n name=\"rootNodes\"\n ></c8y-asset-selector>\n</div>\n","import { Component, Input } from '@angular/core';\nimport {\n CockpitConfig,\n DEFAULT_HOME_DASHBOARD_NAME,\n HomeDashboardType,\n USER_HOME_DASHBOARD_NAME\n} from './cockpit-config.model';\nimport { CockpitConfigService } from './cockpit-config.service';\n\n@Component({\n selector: 'c8y-home-dashboard-config',\n templateUrl: './home-dashboard-config.component.html'\n})\nexport class HomeDashboardConfigComponent {\n @Input()\n config: CockpitConfig;\n\n /**\n * The types of dashboard that can be configured.\n */\n readonly homeDashboardTypes = HomeDashboardType;\n\n /**\n * @ignore\n */\n constructor(private cockpitConfigService: CockpitConfigService) {}\n\n /**\n * @ignore\n */\n dashboardChange(selected: boolean, type: HomeDashboardType) {\n if (!selected) {\n return;\n }\n\n switch (type) {\n case this.homeDashboardTypes.DEFAULT: {\n this.config.homeDashboardName = DEFAULT_HOME_DASHBOARD_NAME;\n this.config.userSpecificHomeDashboard = false;\n break;\n }\n case this.homeDashboardTypes.APP: {\n this.config.homeDashboardName = this.cockpitConfigService.getAppDashboardName();\n this.config.userSpecificHomeDashboard = false;\n break;\n }\n case this.homeDashboardTypes.USER: {\n this.config.homeDashboardName = USER_HOME_DASHBOARD_NAME;\n this.config.userSpecificHomeDashboard = true;\n break;\n }\n }\n }\n\n /**\n * @ignore\n */\n verifySelected(type: HomeDashboardType) {\n if (type === this.homeDashboardTypes.USER) {\n return this.config.userSpecificHomeDashboard;\n }\n if (type === this.homeDashboardTypes.DEFAULT) {\n return this.config.homeDashboardName === DEFAULT_HOME_DASHBOARD_NAME;\n }\n return this.config.homeDashboardName === this.cockpitConfigService.getAppDashboardName();\n }\n}\n","<c8y-list-group class=\"separator-top\">\n <c8y-li>\n <c8y-li-radio\n (onSelect)=\"dashboardChange($event, homeDashboardTypes.DEFAULT)\"\n [selected]=\"verifySelected(homeDashboardTypes.DEFAULT)\"\n ></c8y-li-radio>\n <p translate>Default home dashboard</p>\n <small translate>Changes done in the home dashboard are reflected across the platform.</small>\n </c8y-li>\n <c8y-li>\n <c8y-li-radio\n (onSelect)=\"dashboardChange($event, homeDashboardTypes.APP)\"\n [selected]=\"verifySelected(homeDashboardTypes.APP)\"\n ></c8y-li-radio>\n <p translate>Custom home dashboard</p>\n <small translate>\n Changes done to the home dashboard are reflected only in the current application.\n </small>\n </c8y-li>\n <c8y-li>\n <c8y-li-radio\n (onSelect)=\"dashboardChange($event, homeDashboardTypes.USER)\"\n [selected]=\"verifySelected(homeDashboardTypes.USER)\"\n ></c8y-li-radio>\n <p translate>User home dashboard</p>\n <small translate>\n Changes done to the home dashboard are reflected only for the current user. NOTE: This user\n needs to have inventory write permission.\n </small>\n </c8y-li>\n</c8y-list-group>\n","import { Component, Input } from '@angular/core';\nimport { CockpitConfig } from './cockpit-config.model';\n\n@Component({\n selector: 'c8y-misc-config',\n templateUrl: './misc-config.component.html'\n})\nexport class MiscConfigComponent {\n @Input()\n config: CockpitConfig;\n}\n","<c8y-list-group class=\"separator-top\">\n <c8y-li>\n <div class=\"d-flex a-i-center\">\n <p>{{ 'Always collapse navigator on start up' | translate }}</p>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Collapse navigator on start up' | translate }}\"\n >\n <input type=\"checkbox\" [(ngModel)]=\"config.hideNavigator\" name=\"hideNavigator\" />\n <span></span>\n </label>\n </div>\n </c8y-li>\n</c8y-list-group>\n","import { Component, OnInit } from '@angular/core';\nimport { AlertService, gettext } from '@c8y/ngx-components';\nimport { CockpitConfig, DEFAULT_CONFIG } from './cockpit-config.model';\nimport { CockpitConfigService } from './cockpit-config.service';\n\n@Component({\n selector: 'c8y-cockpit-configuration',\n templateUrl: './cockpit-configuration.component.html'\n})\nexport class CockpitConfigurationComponent implements OnInit {\n /**\n * The currently used configuration.\n */\n config: CockpitConfig = DEFAULT_CONFIG;\n\n constructor(\n private cockpitConfigService: CockpitConfigService,\n private alertService: AlertService\n ) {}\n\n /**\n * @ignore\n */\n ngOnInit() {\n this.config = this.cockpitConfigService.currentConfig;\n }\n\n /**\n * Stores the configuration and shows a success message.\n */\n async save() {\n try {\n await this.cockpitConfigService.saveConfig(this.config);\n this.alertService.success(gettext('Cockpit configuration saved.'));\n } catch (ex) {\n this.alertService.addServerFailure(ex);\n }\n }\n\n /**\n * Updates the features to directly reflect the results of the change.\n */\n updateFeatures() {\n this.cockpitConfigService.currentConfig = this.config;\n this.cockpitConfigService.refresh();\n }\n\n /**\n * Updates the root nodes to directly reflect the results of the change.\n */\n async updateRootNodes() {\n this.cockpitConfigService.currentConfig = this.config;\n await this.cockpitConfigService.setRootNodes();\n }\n}\n","<c8y-title translate>App configuration</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'Configuration' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'App configuration' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n<div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <form #configForm=\"ngForm\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\" translate>Cockpit configuration</div>\n </div>\n\n <div class=\"inner-scroll\">\n <div class=\"card-block p-t-0 p-b-0\">\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-4\" translate>Features</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Define which are the enabled features in the current application.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-feature-config\n [config]=\"config\"\n (onUpdate)=\"updateFeatures()\"\n ></c8y-feature-config>\n </div>\n </fieldset>\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Top level nodes</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Select which nodes to display in the top level of the navigator menu. By default, only Groups is shown.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-10 col-md-10\">\n <div class=\"row\">\n <c8y-root-node-config\n [config]=\"config\"\n (onUpdate)=\"updateRootNodes()\"\n ></c8y-root-node-config>\n </div>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Home dashboard</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'The home page of this application. By default it is a customizable dashboard displaying overview data for the tenant.'\n | translate\n }}\"\n placement=\"right\"\n container=\"body\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"h4 text-medium d-inline-block m-r-4\" translate>Misc</div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-misc-config [config]=\"config\"></c8y-misc-config>\n </div>\n </fieldset>\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary\"\n [disabled]=\"!configForm.form.valid\"\n (click)=\"save()\"\n c8yProductExperience\n [actionName]=\"'cockpitConfigurationSaved'\"\n [actionData]=\"{ config: config }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </form>\n </div>\n</div>\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { AppStateService, AlertService, C8yStepper, SetupComponent } from '@c8y/ngx-components';\nimport { CockpitConfig, DEFAULT_CONFIG } from '../cockpit-config.model';\n\nexport abstract class CockpitSetupStep {\n config: CockpitConfig = DEFAULT_CONFIG;\n pending = false;\n\n constructor(\n public stepper: C8yStepper,\n protected step: CdkStep,\n protected setup: SetupComponent,\n protected appState: AppStateService,\n protected alert: AlertService\n ) {}\n\n async next() {\n this.pending = true;\n try {\n const newConfig = { ...this.setup.data$.value, ...this.config };\n await this.appState.updateCurrentApplicationConfig(newConfig);\n this.setup.stepCompleted(this.stepper.selectedIndex);\n this.setup.data$.next(newConfig);\n this.stepper.next();\n } catch (ex) {\n this.alert.addServerFailure(ex);\n } finally {\n this.pending = false;\n }\n }\n\n back() {\n this.stepper.previous();\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'c8y-cockpit-setup-stepper-buttons',\n templateUrl: './cockpit-setup-stepper-buttons.component.html'\n})\nexport class CockpitSetupStepperButtonsComponent {\n @Input() index;\n @Output() onNext = new EventEmitter<void>();\n @Output() onBack = new EventEmitter<void>();\n}\n","<div class=\"card-footer separator d-flex j-c-center\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"onBack.emit()\"\n *ngIf=\"index !== 0\"\n translate\n >\n Previous\n </button>\n <button class=\"btn btn-primary\" type=\"submit\" (click)=\"onNext.emit()\" translate>\n Save and continue\n </button>\n</div>\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { Component } from '@angular/core';\nimport { AlertService, AppStateService, C8yStepper, SetupComponent } from '@c8y/ngx-components';\nimport { CockpitSetupStep } from './cockpit-setup-step';\n\n@Component({\n selector: 'c8y-cockpit-setup-step1',\n templateUrl: './cockpit-setup-step1.component.html',\n host: { class: 'd-contents' }\n})\nexport class CockpitSetupStep1Component extends CockpitSetupStep {\n constructor(\n public stepper: C8yStepper,\n protected step: CdkStep,\n protected setup: SetupComponent,\n protected appState: AppStateService,\n protected alert: AlertService\n ) {\n super(stepper, step, setup, appState, alert);\n }\n}\n","<form #stepForm=\"ngForm\" name=\"form\" class=\"d-contents\">\n <div class=\"container-fluid flex-no-shrink fit-w\">\n <div class=\"row separator-bottom\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 p-t-24 p-l-16 p-r-16\">\n <h3 translate class=\"text-medium l-h-base\">Features</h3>\n <p class=\"lead text-normal\" translate>\n Define which are the enabled features in the current application.\n </p>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll flex-grow\">\n <div class=\"container-fluid fit-w\">\n <div class=\"row\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\">\n <c8y-feature-config [config]=\"config\"></c8y-feature-config>\n </div>\n </div>\n </div>\n </div>\n <c8y-cockpit-setup-stepper-buttons\n [index]=\"stepper.selectedIndex\"\n (onNext)=\"next()\"\n (onBack)=\"back()\"\n >\n </c8y-cockpit-setup-stepper-buttons>\n</form>\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { Component } from '@angular/core';\nimport { AlertService, AppStateService, C8yStepper, SetupComponent } from '@c8y/ngx-components';\nimport { CockpitSetupStep } from './cockpit-setup-step';\n\n@Component({\n selector: 'c8y-cockpit-setup-step2',\n templateUrl: './cockpit-setup-step2.component.html',\n host: { class: 'd-contents' }\n})\nexport class CockpitSetupStep2Component extends CockpitSetupStep {\n constructor(\n public stepper: C8yStepper,\n protected step: CdkStep,\n protected setup: SetupComponent,\n protected appState: AppStateService,\n protected alert: AlertService\n ) {\n super(stepper, step, setup, appState, alert);\n }\n}\n","<form #stepForm=\"ngForm\" name=\"form\" class=\"d-contents\">\n <div class=\"container-fluid flex-no-shrink fit-w\">\n <div class=\"row separator-bottom\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 p-t-24 p-l-16 p-r-16\">\n <h3 translate class=\"text-medium l-h-base\">Top level nodes</h3>\n <p class=\"lead text-normal\" translate>\n Select which nodes to display in the top level of the navigator menu. By default, only\n Groups is shown.\n </p>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll flex-grow\">\n <div class=\"container-fluid fit-w p-t-16\">\n <div class=\"row\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\">\n <c8y-root-node-config [config]=\"config\"></c8y-root-node-config>\n </div>\n </div>\n </div>\n </div>\n <c8y-cockpit-setup-stepper-buttons\n [index]=\"stepper.selectedIndex\"\n (onNext)=\"next()\"\n (onBack)=\"back()\"\n >\n </c8y-cockpit-setup-stepper-buttons>\n</form>\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { Component } from '@angular/core';\nimport { AlertService, AppStateService, C8yStepper, SetupComponent } from '@c8y/ngx-components';\nimport { CockpitSetupStep } from './cockpit-setup-step';\n\n@Component({\n selector: 'c8y-cockpit-setup-step3',\n templateUrl: './cockpit-setup-step3.component.html',\n host: { class: 'd-contents' }\n})\nexport class CockpitSetupStep3Component extends CockpitSetupStep {\n constructor(\n public stepper: C8yStepper,\n protected step: CdkStep,\n protected setup: SetupComponent,\n protected appState: AppStateService,\n protected alert: AlertService\n ) {\n super(stepper, step, setup, appState, alert);\n }\n}\n","<form #stepForm=\"ngForm\" name=\"form\" class=\"d-contents\">\n <div class=\"container-fluid flex-no-shrink fit-w\">\n <div class=\"row separator-bottom\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 p-t-24 p-l-16 p-r-16\">\n <h3 translate class=\"text-medium l-h-base\">Home dashboard</h3>\n <p class=\"lead text-normal\" translate>\n The home page of this application. By default it is a customizable dashboard displaying\n overview data for the tenant.\n </p>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll flex-grow\">\n <div class=\"container-fluid fit-w\">\n <div class=\"row\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\">\n <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n </div>\n </div>\n </div>\n </div>\n <c8y-cockpit-setup-stepper-buttons\n [index]=\"stepper.selectedIndex\"\n (onNext)=\"next()\"\n (onBack)=\"back()\"\n ></c8y-cockpit-setup-stepper-buttons>\n</form>\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { Component } from '@angular/core';\nimport { AlertService, AppStateService, C8yStepper, SetupComponent } from '@c8y/ngx-components';\nimport { CockpitSetupStep } from './cockpit-setup-step';\n\n@Component({\n selector: 'c8y-cockpit-setup-step4',\n templateUrl: './cockpit-setup-step4.component.html',\n host: { class: 'd-contents' }\n})\nexport class CockpitSetupStep4Component extends CockpitSetupStep {\n constructor(\n public stepper: C8yStepper,\n protected step: CdkStep,\n protected setup: SetupComponent,\n protected appState: AppStateService,\n protected alert: AlertService\n ) {\n super(stepper, step, setup, appState, alert);\n }\n}\n","<form #stepForm=\"ngForm\" name=\"form\" class=\"d-contents\">\n <div class=\"container-fluid flex-no-shrink fit-w\">\n <div class=\"row separator-bottom\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 p-t-24 p-l-16 p-r-16\">\n <h3 translate class=\"text-medium l-h-base\">Misc</h3>\n <p class=\"lead text-normal\" translate>\n Miscellaneous settings for the current application.\n </p>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll flex-grow\">\n <div class=\"container-fluid fit-w\">\n <div class=\"row\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\">\n <c8y-misc-config [config]=\"config\"></c8y-misc-config>\n </div>\n </div>\n </div>\n </div>\n <c8y-cockpit-setup-stepper-buttons\n [index]=\"stepper.selectedIndex\"\n (onNext)=\"next()\"\n (onBack)=\"back()\"\n >\n </c8y-cockpit-setup-stepper-buttons>\n</form>\n","import { NgModule } from '@angular/core';\nimport {\n CoreModule,\n gettext,\n hookNavigator,\n hookRoute,\n hookStepper,\n SetupStep,\n Steppers\n} from '@c8y/ngx-components';\nimport { AssetSelectorModule } from '@c8y/ngx-components/assets-navigator';\nimport { EcosystemModule } from '@c8y/ngx-components/ecosystem';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { CockpitConfigGuard } from './cockpit-config.guard';\nimport { COCKPIT_CONFIG_PATH } from './cockpit-config.model';\nimport { CockpitConfigService } from './cockpit-config.service';\nimport { CockpitConfigurationComponent } from './cockpit-configuration.component';\nimport { FeatureConfigComponent } from './feature-config.component';\nimport { HomeDashboardConfigComponent } from './home-dashboard-config.component';\nimport { MiscConfigComponent } from './misc-config.component';\nimport { RootNodeConfigComponent } from './root-node-config.component';\nimport { CockpitSetupStep1Component } from './setup/cockpit-setup-step1.component';\nimport { CockpitSetupStep2Component } from './setup/cockpit-setup-step2.component';\nimport { CockpitSetupStep3Component } from './setup/cockpit-setup-step3.component';\nimport { CockpitSetupStep4Component } from './setup/cockpit-setup-step4.component';\nimport { CockpitSetupStepperButtonsComponent } from './setup/cockpit-setup-stepper-buttons.component';\n\n@NgModule({\n declarations: [\n CockpitConfigurationComponent,\n CockpitSetupStep1Component,\n CockpitSetupStep2Component,\n CockpitSetupStep3Component,\n CockpitSetupStep4Component,\n FeatureConfigComponent,\n RootNodeConfigComponent,\n HomeDashboardConfigComponent,\n MiscConfigComponent,\n CockpitSetupStepperButtonsComponent\n ],\n imports: [CoreModule, AssetSelectorModule, PopoverModule, TooltipModule, EcosystemModule],\n providers: [\n CockpitConfigGuard,\n hookRoute({\n path: COCKPIT_CONFIG_PATH,\n component: CockpitConfigurationComponent,\n canActivate: [CockpitConfigGuard]\n }),\n hookNavigator(CockpitConfigGuard),\n hookStepper([\n {\n stepperId: Steppers.SETUP,\n component: CockpitSetupStep1Component,\n label: gettext('Features'),\n setupId: 'cockpitFeatures',\n priority: 30\n },\n {\n stepperId: Steppers.SETUP,\n component: CockpitSetupStep2Component,\n label: gettext('Top level nodes'),\n setupId: 'cockpitTopLevelNodes',\n priority: 20\n },\n {\n stepperId: Steppers.SETUP,\n component: CockpitSetupStep3Component,\n label: gettext('Home dashboard'),\n setupId: 'cockpitHomeDashboard',\n priority: 10\n },\n {\n stepperId: Steppers.SETUP,\n component: CockpitSetupStep4Component,\n label: gettext('Misc'),\n setupId: 'cockpitMisc',\n priority: 0\n }\n ] as SetupStep[])\n ]\n})\nexport class CockpitConfigModule {\n constructor(private service: CockpitConfigService) {\n // only for DI, not used but needed.\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i3","i4","i1.CockpitConfigService","i1","i5.FeatureConfigComponent","i6.RootNodeConfigComponent","i7.HomeDashboardConfigComponent","i8.MiscConfigComponent","i4.FeatureConfigComponent","i5.CockpitSetupStepperButtonsComponent","i4.RootNodeConfigComponent","i4.HomeDashboardConfigComponent","i4.MiscConfigComponent"],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-cockpit-config.mjs","sources":["../../cockpit-config/cockpit-config.model.ts","../../cockpit-config/cockpit-config.guard.ts","../../cockpit-config/cockpit-config.service.ts","../../cockpit-config/feature-config.component.ts","../../cockpit-config/feature-config.component.html","../../cockpit-config/root-node-config.component.ts","../../cockpit-config/root-node-config.component.html","../../cockpit-config/home-dashboard-config.component.ts","../../cockpit-config/home-dashboard-config.component.html","../../cockpit-config/misc-config.component.ts","../../cockpit-config/misc-config.component.html","../../cockpit-config/cockpit-configuration.component.ts","../../cockpit-config/cockpit-configuration.component.html","../../cockpit-config/setup/cockpit-setup-step.ts","../../cockpit-config/setup/cockpit-setup-stepper-buttons.component.ts","../../cockpit-config/setup/cockpit-setup-stepper-buttons.component.html","../../cockpit-config/setup/cockpit-setup-step1.component.ts","../../cockpit-config/setup/cockpit-setup-step1.component.html","../../cockpit-config/setup/cockpit-setup-step2.component.ts","../../cockpit-config/setup/cockpit-setup-step2.component.html","../../cockpit-config/setup/cockpit-setup-step3.component.ts","../../cockpit-config/setup/cockpit-setup-step3.component.html","../../cockpit-config/setup/cockpit-setup-step4.component.ts","../../cockpit-config/setup/cockpit-setup-step4.component.html","../../cockpit-config/cockpit-config.module.ts","../../cockpit-config/c8y-ngx-components-cockpit-config.ts"],"sourcesContent":["export const DEFAULT_HOME_DASHBOARD_NAME = 'home-cockpit1';\nexport const USER_HOME_DASHBOARD_NAME = 'home-cockpit-user';\n\nexport interface CockpitConfig {\n rootNodes: CockpitConfigRootNode[];\n features: {\n alarms: boolean;\n dataExplorer: boolean;\n groups: boolean;\n reports: boolean;\n exports: boolean;\n dataPointLibrary: boolean;\n globalSmartRules: boolean;\n smartRules: boolean;\n subassets: boolean;\n search: boolean;\n [key: string]: boolean;\n };\n hideNavigator: boolean;\n homeDashboardName: string;\n userSpecificHomeDashboard: boolean;\n}\n\nexport const DEFAULT_CONFIG: CockpitConfig = {\n rootNodes: [],\n features: {\n alarms: true,\n dataExplorer: true,\n groups: true,\n reports: true,\n exports: true,\n dataPointLibrary: true,\n globalSmartRules: true,\n smartRules: true,\n subassets: true,\n search: true\n },\n hideNavigator: false,\n homeDashboardName: DEFAULT_HOME_DASHBOARD_NAME,\n userSpecificHomeDashboard: false\n};\n\nexport interface CockpitConfigRootNode {\n id: string;\n name: string;\n hideDevices?: boolean;\n}\n\nexport enum HomeDashboardType {\n /**\n * Shared by all Cockpit apps\n */\n DEFAULT,\n /**\n * Only for the current Cockpit.\n */\n APP,\n /**\n * Only for the current user.\n */\n USER\n}\n\nexport const COCKPIT_CONFIG_PATH = 'cockpit-application-configuration';\n","import { Injectable } from '@angular/core';\nimport { CanActivate } from '@angular/router';\nimport {\n AppStateService,\n gettext,\n NavigatorNode,\n NavigatorNodeFactory,\n Permissions\n} from '@c8y/ngx-components';\nimport { EcosystemService } from '@c8y/ngx-components/ecosystem/shared';\nimport { COCKPIT_CONFIG_PATH } from './cockpit-config.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CockpitConfigGuard implements CanActivate, NavigatorNodeFactory {\n protected readonly configNode: NavigatorNode = new NavigatorNode({\n path: `/${COCKPIT_CONFIG_PATH}`,\n parent: gettext('Configuration'),\n label: gettext('App configuration'),\n icon: 'imac-settings',\n preventDuplicates: true\n });\n\n constructor(\n private permissions: Permissions,\n private appState: AppStateService,\n private ecosystemService: EcosystemService\n ) {}\n\n get(): NavigatorNode {\n if (this.canActivate()) {\n return this.configNode;\n }\n return;\n }\n\n canActivate(): boolean {\n return (\n this.permissions.hasRole('ROLE_APPLICATION_MANAGEMENT_ADMIN') &&\n this.ecosystemService.isOwner(this.appState.currentApplication.value)\n );\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { InventoryService } from '@c8y/client';\nimport {\n AppStateService,\n ExtensionFactory,\n NavigatorNode,\n NavigatorService,\n OptionsService,\n Permissions,\n SearchService,\n Tab,\n TabsService\n} from '@c8y/ngx-components';\nimport {\n AssetNavigatorConfig,\n AssetNodeService,\n ASSET_NAVIGATOR_CONFIG\n} from '@c8y/ngx-components/assets-navigator';\nimport { isUndefined, startCase } from 'lodash-es';\nimport { map } from 'rxjs/operators';\nimport { CockpitConfig, DEFAULT_CONFIG, DEFAULT_HOME_DASHBOARD_NAME } from './cockpit-config.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CockpitConfigService {\n currentConfig: CockpitConfig = DEFAULT_CONFIG;\n nodes: NavigatorNode[] = [];\n private navigationFactory: ExtensionFactory<NavigatorNode> = {\n get: () => this.nodes\n };\n\n private readonly DEFAULT_NODE_PRIORITY = 2000;\n\n get excludedFeatureKeys() {\n return Object.keys(this.currentConfig.features).filter(\n key => !this.currentConfig.features[key]\n );\n }\n\n constructor(\n private navigatorService: NavigatorService,\n private tabsService: TabsService,\n private searchService: SearchService,\n private assetNodeService: AssetNodeService,\n private inventoryService: InventoryService,\n private appState: AppStateService,\n private optionsService: OptionsService,\n private permissions: Permissions,\n @Optional() @Inject(ASSET_NAVIGATOR_CONFIG) public moduleConfig: AssetNavigatorConfig\n ) {\n this.registerFilterForFeatures();\n this.init();\n }\n\n init() {\n this.appState.currentApplicationConfig.subscribe(config => {\n if (config) {\n this.currentConfig = { ...DEFAULT_CONFIG, ...config } as CockpitConfig;\n this.setRootNodes();\n }\n });\n }\n\n async saveConfig(config) {\n this.currentConfig = config;\n await this.storeApplicationConfig(this.currentConfig);\n }\n\n refresh() {\n this.optionsService.hideNavigator = this.currentConfig.hideNavigator;\n this.navigatorService.refresh();\n this.searchService.refresh();\n }\n\n async setRootNodes() {\n this.addNodesToFactories();\n this.nodes.length = 0;\n for (const node of this.currentConfig.rootNodes) {\n const { data } = await this.inventoryService.detail(node.id);\n if (data) {\n this.nodes.push(\n this.assetNodeService.createAssetNode({\n mo: data,\n hideDevices: node.hideDevices,\n priority: isUndefined(this.moduleConfig?.rootNodePriority)\n ? this.DEFAULT_NODE_PRIORITY\n : this.moduleConfig.rootNodePriority\n })\n );\n }\n }\n this.refresh();\n }\n\n getAppDashboardName() {\n return `${DEFAULT_HOME_DASHBOARD_NAME.substring(0, DEFAULT_HOME_DASHBOARD_NAME.length - 1)}_${\n this.appState.state.app.id\n }`;\n }\n\n private async storeApplicationConfig(config: CockpitConfig) {\n await this.appState.updateCurrentApplicationConfig<CockpitConfig>(config);\n }\n\n private addNodesToFactories() {\n const nodeInFactories = this.navigatorService.factories.find(\n fatcory => fatcory === this.navigationFactory\n );\n if (!nodeInFactories) {\n this.navigatorService.factories.push(this.navigationFactory);\n }\n }\n\n private registerFilterForFeatures() {\n this.navigatorService.items$ = this.navigatorService.items$.pipe(\n map(nodes => this.setHiddenAttrLock(nodes)),\n map(nodes => this.filterNavigatorNode(nodes))\n );\n this.tabsService.items$ = this.tabsService.items$.pipe(map(tabs => this.filterTabs(tabs)));\n this.searchService.items$ = this.searchService.items$.pipe(\n map(search => (this.currentConfig.features.search ? search : []))\n );\n }\n\n private setHiddenAttrLock(nodes) {\n nodes.forEach(node => {\n Object.keys(this.currentConfig.features).forEach(key => {\n const childNode = node.find(startCase(key).toLowerCase());\n\n if (childNode) {\n if (\n !this.permissions.hasRole('ROLE_APPLICATION_MANAGEMENT_ADMIN') &&\n childNode.lockHiddenAttr === undefined &&\n childNode.hidden === true\n ) {\n childNode.lockHiddenAttr = childNode.hidden;\n }\n }\n });\n });\n return nodes;\n }\n\n private filterTabs(tabs: Tab[]) {\n return tabs.filter(tab => !this.excludedFeatureKeys.some(key => tab.featureId === key));\n }\n\n private filterNavigatorNode(nodes: NavigatorNode[]) {\n if (!this.currentConfig) {\n return nodes;\n }\n const disabledFeatures = this.excludedFeatureKeys;\n const filteredNodes = nodes.filter(\n node => !disabledFeatures.some(key => node.featureId === key)\n );\n\n this.showAllChildrenNodes(nodes);\n this.hideChildrenNodesThatAreDisabled(nodes, disabledFeatures);\n return filteredNodes;\n }\n\n private hideChildrenNodesThatAreDisabled(nodes: NavigatorNode[], disabledFeatures: string[]) {\n nodes.forEach(node =>\n disabledFeatures.forEach(key => {\n const childNode = node.find(key, 'featureId');\n if (childNode) {\n childNode.hidden = true;\n }\n })\n );\n }\n\n private showAllChildrenNodes(nodes: NavigatorNode[]) {\n nodes.forEach(node => {\n Object.keys(this.currentConfig.features).forEach(key => {\n const childNode = node.find(startCase(key).toLowerCase());\n\n if (childNode) {\n if (childNode.lockHiddenAttr === true) {\n return;\n }\n\n childNode.hidden = false;\n }\n });\n });\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CockpitConfig } from './cockpit-config.model';\n\n@Component({\n selector: 'c8y-feature-config',\n templateUrl: './feature-config.component.html'\n})\nexport class FeatureConfigComponent {\n @Input()\n config: CockpitConfig;\n\n @Output()\n onUpdate = new EventEmitter<void>();\n\n updateFeatures() {\n this.onUpdate.emit();\n }\n}\n","<c8y-list-group class=\"separator-top\">\n <c8y-li>\n <c8y-li-icon icon=\"search\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Global search' | translate }}</p>\n <p>\n <small translate>Display the global search in the main header.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global search' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.search\"\n name=\"search\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"c8y-group\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Groups' | translate }}</p>\n <p>\n <small translate>Display top level groups under the Groups navigator menu.</small>\n </p>\n </div>\n <label class=\"c8y-switch c8y-switch--inline m-l-auto\" title=\"{{ 'Groups' | translate }}\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.groups\"\n name=\"groups\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"bell\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Alarms' | translate }}</p>\n <p>\n <small translate>Display a link to the global alarms list in the navigator menu.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global Alarms view' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.alarms\"\n name=\"alarms\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"c8y-data-explorer\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Data explorer' | translate }}</p>\n <p>\n <small translate>\n Display the data explorer in the navigator menu and on the group tabs.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Data explorer' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.dataExplorer\"\n name=\"dataExplorer\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"c8y-reports\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Reports' | translate }}</p>\n <p>\n <small translate>Display a link to the Reports list in the navigator menu.</small>\n </p>\n </div>\n <label class=\"c8y-switch c8y-switch--inline m-l-auto\" title=\"{{ 'Reports' | translate }}\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.reports\"\n name=\"reports\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"graph-report\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Exports' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Exports list under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label class=\"c8y-switch c8y-switch--inline m-l-auto\" title=\"{{ 'Exports' | translate }}\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.exports\"\n name=\"exports\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"c8y-data-points\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Data point library' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Data point library under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Data point library' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.dataPointLibrary\"\n name=\"dataPointLibrary\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"c8y-smart-rules\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Global smart rules' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Global smart rules under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global smart rules' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.globalSmartRules\"\n name=\"globalSmartRules\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"c8y-group-open\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Subassets view' | translate }}</p>\n <p><small translate>Display the \"Subassets\" tab on groups.</small></p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Subassets view' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.subassets\"\n name=\"subassets\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li>\n <c8y-li-icon icon=\"c8y-smart-rules\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Smart rules for devices and groups' | translate }}</p>\n <p>\n <small translate>Display the smart rules tab on groups and devices.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Smart rules for devices and groups' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"config.features.smartRules\"\n name=\"smartRules\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n</c8y-list-group>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CockpitConfig, CockpitConfigRootNode } from './cockpit-config.model';\n\n@Component({\n selector: 'c8y-root-node-config',\n templateUrl: './root-node-config.component.html'\n})\nexport class RootNodeConfigComponent {\n @Input()\n config: CockpitConfig;\n\n @Output()\n onUpdate = new EventEmitter<void>();\n\n /**\n * Removes one of the root nodes.\n * @param node The node to remove.\n */\n removeNavigatorNode(node: CockpitConfigRootNode) {\n const index = this.config.rootNodes.indexOf(node);\n if (index > -1) {\n this.config.rootNodes.splice(index, 1);\n this.onUpdate.emit();\n }\n }\n}\n","<div class=\"col-sm-6\">\n <label title=\"{{ 'Current top level nodes' | translate }}\" translate>\n Current top level nodes\n </label>\n <c8y-list-group class=\"separator-top\">\n <c8y-li *ngIf=\"config.rootNodes.length === 0\">\n <div class=\"c8y-empty-state text-left\">\n <h1 c8yIcon=\"folder-open\"></h1>\n <p>\n <strong>{{ 'No top level nodes set' | translate }}</strong>\n </p>\n </div>\n </c8y-li>\n <c8y-li *ngFor=\"let node of config.rootNodes; let index = index\">\n <c8y-li-icon icon=\"c8y-group\"></c8y-li-icon>\n <div class=\"content-flex-30\">\n <div class=\"col-6\">\n <div class=\"text-truncate\" title=\"{{ node.name }}\">\n {{ node.name }}\n </div>\n </div>\n <div class=\"col-4\">\n <label class=\"c8y-switch c8y-switch--inline\" title=\"{{ 'Hide devices' | translate }}\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"node.hideDevices\"\n name=\"node.{{ index }}.hideDevices\"\n (change)=\"onUpdate.emit()\"\n />\n <span></span>\n <small>{{ 'Hide devices' | translate }}</small>\n </label>\n </div>\n <div class=\"col-2 text-right\">\n <div class=\"d-flex fit-w\">\n <button\n class=\"btn btn-dot btn-dot--danger m-l-auto\"\n tooltip=\"{{ 'Remove' | translate }}\"\n [attr.aria-label]=\"'Remove' | translate\"\n type=\"button\"\n (click)=\"removeNavigatorNode(node)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </div>\n </div>\n </c8y-li>\n </c8y-list-group>\n</div>\n\n<div class=\"col-sm-6 col-md-5 col-md-offset-1\">\n <label title=\"{{ 'Select top level nodes' | translate }}\" translate>Select top level nodes</label>\n <c8y-asset-selector\n [config]=\"{ groupsOnly: true, multi: true, groupsSelectable: true }\"\n [(ngModel)]=\"config.rootNodes\"\n (onSelected)=\"onUpdate.emit()\"\n name=\"rootNodes\"\n ></c8y-asset-selector>\n</div>\n","import { Component, Input } from '@angular/core';\nimport {\n CockpitConfig,\n DEFAULT_HOME_DASHBOARD_NAME,\n HomeDashboardType,\n USER_HOME_DASHBOARD_NAME\n} from './cockpit-config.model';\nimport { CockpitConfigService } from './cockpit-config.service';\n\n@Component({\n selector: 'c8y-home-dashboard-config',\n templateUrl: './home-dashboard-config.component.html'\n})\nexport class HomeDashboardConfigComponent {\n @Input()\n config: CockpitConfig;\n\n /**\n * The types of dashboard that can be configured.\n */\n readonly homeDashboardTypes = HomeDashboardType;\n\n /**\n * @ignore\n */\n constructor(private cockpitConfigService: CockpitConfigService) {}\n\n /**\n * @ignore\n */\n dashboardChange(selected: boolean, type: HomeDashboardType) {\n if (!selected) {\n return;\n }\n\n switch (type) {\n case this.homeDashboardTypes.DEFAULT: {\n this.config.homeDashboardName = DEFAULT_HOME_DASHBOARD_NAME;\n this.config.userSpecificHomeDashboard = false;\n break;\n }\n case this.homeDashboardTypes.APP: {\n this.config.homeDashboardName = this.cockpitConfigService.getAppDashboardName();\n this.config.userSpecificHomeDashboard = false;\n break;\n }\n case this.homeDashboardTypes.USER: {\n this.config.homeDashboardName = USER_HOME_DASHBOARD_NAME;\n this.config.userSpecificHomeDashboard = true;\n break;\n }\n }\n }\n\n /**\n * @ignore\n */\n verifySelected(type: HomeDashboardType) {\n if (type === this.homeDashboardTypes.USER) {\n return this.config.userSpecificHomeDashboard;\n }\n if (type === this.homeDashboardTypes.DEFAULT) {\n return this.config.homeDashboardName === DEFAULT_HOME_DASHBOARD_NAME;\n }\n return this.config.homeDashboardName === this.cockpitConfigService.getAppDashboardName();\n }\n}\n","<c8y-list-group class=\"separator-top\">\n <c8y-li>\n <c8y-li-radio\n (onSelect)=\"dashboardChange($event, homeDashboardTypes.DEFAULT)\"\n [selected]=\"verifySelected(homeDashboardTypes.DEFAULT)\"\n ></c8y-li-radio>\n <p translate>Default home dashboard</p>\n <small translate>Changes done in the home dashboard are reflected across the platform.</small>\n </c8y-li>\n <c8y-li>\n <c8y-li-radio\n (onSelect)=\"dashboardChange($event, homeDashboardTypes.APP)\"\n [selected]=\"verifySelected(homeDashboardTypes.APP)\"\n ></c8y-li-radio>\n <p translate>Custom home dashboard</p>\n <small translate>\n Changes done to the home dashboard are reflected only in the current application.\n </small>\n </c8y-li>\n <c8y-li>\n <c8y-li-radio\n (onSelect)=\"dashboardChange($event, homeDashboardTypes.USER)\"\n [selected]=\"verifySelected(homeDashboardTypes.USER)\"\n ></c8y-li-radio>\n <p translate>User home dashboard</p>\n <small translate>\n Changes done to the home dashboard are reflected only for the current user. NOTE: This user\n needs to have inventory write permission.\n </small>\n </c8y-li>\n</c8y-list-group>\n","import { Component, Input } from '@angular/core';\nimport { CockpitConfig } from './cockpit-config.model';\n\n@Component({\n selector: 'c8y-misc-config',\n templateUrl: './misc-config.component.html'\n})\nexport class MiscConfigComponent {\n @Input()\n config: CockpitConfig;\n}\n","<c8y-list-group class=\"separator-top\">\n <c8y-li>\n <div class=\"d-flex a-i-center\">\n <p>{{ 'Always collapse navigator on start up' | translate }}</p>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Collapse navigator on start up' | translate }}\"\n >\n <input type=\"checkbox\" [(ngModel)]=\"config.hideNavigator\" name=\"hideNavigator\" />\n <span></span>\n </label>\n </div>\n </c8y-li>\n</c8y-list-group>\n","import { Component, OnInit } from '@angular/core';\nimport { AlertService, gettext } from '@c8y/ngx-components';\nimport { CockpitConfig, DEFAULT_CONFIG } from './cockpit-config.model';\nimport { CockpitConfigService } from './cockpit-config.service';\n\n@Component({\n selector: 'c8y-cockpit-configuration',\n templateUrl: './cockpit-configuration.component.html'\n})\nexport class CockpitConfigurationComponent implements OnInit {\n /**\n * The currently used configuration.\n */\n config: CockpitConfig = DEFAULT_CONFIG;\n\n constructor(\n private cockpitConfigService: CockpitConfigService,\n private alertService: AlertService\n ) {}\n\n /**\n * @ignore\n */\n ngOnInit() {\n this.config = this.cockpitConfigService.currentConfig;\n }\n\n /**\n * Stores the configuration and shows a success message.\n */\n async save() {\n try {\n await this.cockpitConfigService.saveConfig(this.config);\n this.alertService.success(gettext('Cockpit configuration saved.'));\n } catch (ex) {\n this.alertService.addServerFailure(ex);\n }\n }\n\n /**\n * Updates the features to directly reflect the results of the change.\n */\n updateFeatures() {\n this.cockpitConfigService.currentConfig = this.config;\n this.cockpitConfigService.refresh();\n }\n\n /**\n * Updates the root nodes to directly reflect the results of the change.\n */\n async updateRootNodes() {\n this.cockpitConfigService.currentConfig = this.config;\n await this.cockpitConfigService.setRootNodes();\n }\n}\n","<c8y-title>{{ 'App configuration' | translate }}</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'Configuration' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'App configuration' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n<div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <form #configForm=\"ngForm\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\" translate>Cockpit configuration</div>\n </div>\n\n <div class=\"inner-scroll\">\n <div class=\"card-block p-t-0 p-b-0\">\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-4\" translate>Features</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Define which are the enabled features in the current application.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-feature-config\n [config]=\"config\"\n (onUpdate)=\"updateFeatures()\"\n ></c8y-feature-config>\n </div>\n </fieldset>\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Top level nodes</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'Select which nodes to display in the top level of the navigator menu. By default, only Groups is shown.'\n | translate\n }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-10 col-md-10\">\n <div class=\"row\">\n <c8y-root-node-config\n [config]=\"config\"\n (onUpdate)=\"updateRootNodes()\"\n ></c8y-root-node-config>\n </div>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Home dashboard</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{\n 'The home page of this application. By default it is a customizable dashboard displaying overview data for the tenant.'\n | translate\n }}\"\n placement=\"right\"\n container=\"body\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"h4 text-medium d-inline-block m-r-4\" translate>Misc</div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-misc-config [config]=\"config\"></c8y-misc-config>\n </div>\n </fieldset>\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary\"\n [disabled]=\"!configForm.form.valid\"\n (click)=\"save()\"\n c8yProductExperience\n [actionName]=\"'cockpitConfigurationSaved'\"\n [actionData]=\"{ config: config }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </form>\n </div>\n</div>\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { AppStateService, AlertService, C8yStepper, SetupComponent } from '@c8y/ngx-components';\nimport { CockpitConfig, DEFAULT_CONFIG } from '../cockpit-config.model';\n\nexport abstract class CockpitSetupStep {\n config: CockpitConfig = DEFAULT_CONFIG;\n pending = false;\n\n constructor(\n public stepper: C8yStepper,\n protected step: CdkStep,\n protected setup: SetupComponent,\n protected appState: AppStateService,\n protected alert: AlertService\n ) {}\n\n async next() {\n this.pending = true;\n try {\n const newConfig = { ...this.setup.data$.value, ...this.config };\n await this.appState.updateCurrentApplicationConfig(newConfig);\n this.setup.stepCompleted(this.stepper.selectedIndex);\n this.setup.data$.next(newConfig);\n this.stepper.next();\n } catch (ex) {\n this.alert.addServerFailure(ex);\n } finally {\n this.pending = false;\n }\n }\n\n back() {\n this.stepper.previous();\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'c8y-cockpit-setup-stepper-buttons',\n templateUrl: './cockpit-setup-stepper-buttons.component.html'\n})\nexport class CockpitSetupStepperButtonsComponent {\n @Input() index;\n @Output() onNext = new EventEmitter<void>();\n @Output() onBack = new EventEmitter<void>();\n}\n","<div class=\"card-footer separator d-flex j-c-center\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"onBack.emit()\"\n *ngIf=\"index !== 0\"\n translate\n >\n Previous\n </button>\n <button class=\"btn btn-primary\" type=\"submit\" (click)=\"onNext.emit()\" translate>\n Save and continue\n </button>\n</div>\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { Component } from '@angular/core';\nimport { AlertService, AppStateService, C8yStepper, SetupComponent } from '@c8y/ngx-components';\nimport { CockpitSetupStep } from './cockpit-setup-step';\n\n@Component({\n selector: 'c8y-cockpit-setup-step1',\n templateUrl: './cockpit-setup-step1.component.html',\n host: { class: 'd-contents' }\n})\nexport class CockpitSetupStep1Component extends CockpitSetupStep {\n constructor(\n public stepper: C8yStepper,\n protected step: CdkStep,\n protected setup: SetupComponent,\n protected appState: AppStateService,\n protected alert: AlertService\n ) {\n super(stepper, step, setup, appState, alert);\n }\n}\n","<form #stepForm=\"ngForm\" name=\"form\" class=\"d-contents\">\n <div class=\"container-fluid flex-no-shrink fit-w\">\n <div class=\"row separator-bottom\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 p-t-24 p-l-16 p-r-16\">\n <h3 translate class=\"text-medium l-h-base\">Features</h3>\n <p class=\"lead text-normal\" translate>\n Define which are the enabled features in the current application.\n </p>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll flex-grow\">\n <div class=\"container-fluid fit-w\">\n <div class=\"row\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\">\n <c8y-feature-config [config]=\"config\"></c8y-feature-config>\n </div>\n </div>\n </div>\n </div>\n <c8y-cockpit-setup-stepper-buttons\n [index]=\"stepper.selectedIndex\"\n (onNext)=\"next()\"\n (onBack)=\"back()\"\n >\n </c8y-cockpit-setup-stepper-buttons>\n</form>\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { Component } from '@angular/core';\nimport { AlertService, AppStateService, C8yStepper, SetupComponent } from '@c8y/ngx-components';\nimport { CockpitSetupStep } from './cockpit-setup-step';\n\n@Component({\n selector: 'c8y-cockpit-setup-step2',\n templateUrl: './cockpit-setup-step2.component.html',\n host: { class: 'd-contents' }\n})\nexport class CockpitSetupStep2Component extends CockpitSetupStep {\n constructor(\n public stepper: C8yStepper,\n protected step: CdkStep,\n protected setup: SetupComponent,\n protected appState: AppStateService,\n protected alert: AlertService\n ) {\n super(stepper, step, setup, appState, alert);\n }\n}\n","<form #stepForm=\"ngForm\" name=\"form\" class=\"d-contents\">\n <div class=\"container-fluid flex-no-shrink fit-w\">\n <div class=\"row separator-bottom\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 p-t-24 p-l-16 p-r-16\">\n <h3 translate class=\"text-medium l-h-base\">Top level nodes</h3>\n <p class=\"lead text-normal\" translate>\n Select which nodes to display in the top level of the navigator menu. By default, only\n Groups is shown.\n </p>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll flex-grow\">\n <div class=\"container-fluid fit-w p-t-16\">\n <div class=\"row\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\">\n <c8y-root-node-config [config]=\"config\"></c8y-root-node-config>\n </div>\n </div>\n </div>\n </div>\n <c8y-cockpit-setup-stepper-buttons\n [index]=\"stepper.selectedIndex\"\n (onNext)=\"next()\"\n (onBack)=\"back()\"\n >\n </c8y-cockpit-setup-stepper-buttons>\n</form>\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { Component } from '@angular/core';\nimport { AlertService, AppStateService, C8yStepper, SetupComponent } from '@c8y/ngx-components';\nimport { CockpitSetupStep } from './cockpit-setup-step';\n\n@Component({\n selector: 'c8y-cockpit-setup-step3',\n templateUrl: './cockpit-setup-step3.component.html',\n host: { class: 'd-contents' }\n})\nexport class CockpitSetupStep3Component extends CockpitSetupStep {\n constructor(\n public stepper: C8yStepper,\n protected step: CdkStep,\n protected setup: SetupComponent,\n protected appState: AppStateService,\n protected alert: AlertService\n ) {\n super(stepper, step, setup, appState, alert);\n }\n}\n","<form #stepForm=\"ngForm\" name=\"form\" class=\"d-contents\">\n <div class=\"container-fluid flex-no-shrink fit-w\">\n <div class=\"row separator-bottom\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 p-t-24 p-l-16 p-r-16\">\n <h3 translate class=\"text-medium l-h-base\">Home dashboard</h3>\n <p class=\"lead text-normal\" translate>\n The home page of this application. By default it is a customizable dashboard displaying\n overview data for the tenant.\n </p>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll flex-grow\">\n <div class=\"container-fluid fit-w\">\n <div class=\"row\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\">\n <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n </div>\n </div>\n </div>\n </div>\n <c8y-cockpit-setup-stepper-buttons\n [index]=\"stepper.selectedIndex\"\n (onNext)=\"next()\"\n (onBack)=\"back()\"\n ></c8y-cockpit-setup-stepper-buttons>\n</form>\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { Component } from '@angular/core';\nimport { AlertService, AppStateService, C8yStepper, SetupComponent } from '@c8y/ngx-components';\nimport { CockpitSetupStep } from './cockpit-setup-step';\n\n@Component({\n selector: 'c8y-cockpit-setup-step4',\n templateUrl: './cockpit-setup-step4.component.html',\n host: { class: 'd-contents' }\n})\nexport class CockpitSetupStep4Component extends CockpitSetupStep {\n constructor(\n public stepper: C8yStepper,\n protected step: CdkStep,\n protected setup: SetupComponent,\n protected appState: AppStateService,\n protected alert: AlertService\n ) {\n super(stepper, step, setup, appState, alert);\n }\n}\n","<form #stepForm=\"ngForm\" name=\"form\" class=\"d-contents\">\n <div class=\"container-fluid flex-no-shrink fit-w\">\n <div class=\"row separator-bottom\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 p-t-24 p-l-16 p-r-16\">\n <h3 translate class=\"text-medium l-h-base\">Misc</h3>\n <p class=\"lead text-normal\" translate>\n Miscellaneous settings for the current application.\n </p>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll flex-grow\">\n <div class=\"container-fluid fit-w\">\n <div class=\"row\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\">\n <c8y-misc-config [config]=\"config\"></c8y-misc-config>\n </div>\n </div>\n </div>\n </div>\n <c8y-cockpit-setup-stepper-buttons\n [index]=\"stepper.selectedIndex\"\n (onNext)=\"next()\"\n (onBack)=\"back()\"\n >\n </c8y-cockpit-setup-stepper-buttons>\n</form>\n","import { NgModule } from '@angular/core';\nimport {\n CoreModule,\n gettext,\n hookNavigator,\n hookRoute,\n hookStepper,\n SetupStep,\n Steppers\n} from '@c8y/ngx-components';\nimport { AssetSelectorModule } from '@c8y/ngx-components/assets-navigator';\nimport { EcosystemModule } from '@c8y/ngx-components/ecosystem';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { CockpitConfigGuard } from './cockpit-config.guard';\nimport { COCKPIT_CONFIG_PATH } from './cockpit-config.model';\nimport { CockpitConfigService } from './cockpit-config.service';\nimport { CockpitConfigurationComponent } from './cockpit-configuration.component';\nimport { FeatureConfigComponent } from './feature-config.component';\nimport { HomeDashboardConfigComponent } from './home-dashboard-config.component';\nimport { MiscConfigComponent } from './misc-config.component';\nimport { RootNodeConfigComponent } from './root-node-config.component';\nimport { CockpitSetupStep1Component } from './setup/cockpit-setup-step1.component';\nimport { CockpitSetupStep2Component } from './setup/cockpit-setup-step2.component';\nimport { CockpitSetupStep3Component } from './setup/cockpit-setup-step3.component';\nimport { CockpitSetupStep4Component } from './setup/cockpit-setup-step4.component';\nimport { CockpitSetupStepperButtonsComponent } from './setup/cockpit-setup-stepper-buttons.component';\n\n@NgModule({\n declarations: [\n CockpitConfigurationComponent,\n CockpitSetupStep1Component,\n CockpitSetupStep2Component,\n CockpitSetupStep3Component,\n CockpitSetupStep4Component,\n FeatureConfigComponent,\n RootNodeConfigComponent,\n HomeDashboardConfigComponent,\n MiscConfigComponent,\n CockpitSetupStepperButtonsComponent\n ],\n imports: [CoreModule, AssetSelectorModule, PopoverModule, TooltipModule, EcosystemModule],\n providers: [\n CockpitConfigGuard,\n hookRoute({\n path: COCKPIT_CONFIG_PATH,\n component: CockpitConfigurationComponent,\n canActivate: [CockpitConfigGuard]\n }),\n hookNavigator(CockpitConfigGuard),\n hookStepper([\n {\n stepperId: Steppers.SETUP,\n component: CockpitSetupStep1Component,\n label: gettext('Features'),\n setupId: 'cockpitFeatures',\n priority: 30\n },\n {\n stepperId: Steppers.SETUP,\n component: CockpitSetupStep2Component,\n label: gettext('Top level nodes'),\n setupId: 'cockpitTopLevelNodes',\n priority: 20\n },\n {\n stepperId: Steppers.SETUP,\n component: CockpitSetupStep3Component,\n label: gettext('Home dashboard'),\n setupId: 'cockpitHomeDashboard',\n priority: 10\n },\n {\n stepperId: Steppers.SETUP,\n component: CockpitSetupStep4Component,\n label: gettext('Misc'),\n setupId: 'cockpitMisc',\n priority: 0\n }\n ] as SetupStep[])\n ]\n})\nexport class CockpitConfigModule {\n constructor(private service: CockpitConfigService) {\n // only for DI, not used but needed.\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i3","i4","i1.CockpitConfigService","i1","i5.FeatureConfigComponent","i6.RootNodeConfigComponent","i7.HomeDashboardConfigComponent","i8.MiscConfigComponent","i4.FeatureConfigComponent","i5.CockpitSetupStepperButtonsComponent","i4.RootNodeConfigComponent","i4.HomeDashboardConfigComponent","i4.MiscConfigComponent"],"mappings":"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"}
package/locales/ja_JP.po CHANGED
@@ -1241,6 +1241,7 @@ msgstr "匿名"
1241
1241
  msgid "Apama CEP rule"
1242
1242
  msgstr "Apama CEP ルール"
1243
1243
 
1244
+ # /* locked: requested by customer in MTM-52050 */
1244
1245
  msgid "App configuration"
1245
1246
  msgstr "アプリ構成"
1246
1247
 
@@ -4556,20 +4557,25 @@ msgstr "表示する"
4556
4557
  msgid "Display a configurable SVG."
4557
4558
  msgstr "設定可能な SVG ファイルを表示。"
4558
4559
 
4560
+ # /* locked: requested by customer in MTM-52050 */
4559
4561
  msgid "Display a link to the Data point library under the Configuration navigator menu."
4560
- msgstr "データ ポイント ライブラリへのリンクを [構成ナビゲーター] メニューに表示します。"
4562
+ msgstr "ナビゲーターメニューの[構成]の下にデータ ポイント ライブラリへのリンクを表示します。"
4561
4563
 
4564
+ # /* locked: requested by customer in MTM-52050 */
4562
4565
  msgid "Display a link to the Exports list under the Configuration navigator menu."
4563
- msgstr "エクスポート リストへのリンクを [構成ナビゲーター] メニューに表示します。"
4566
+ msgstr "ナビゲーターメニューの[構成]の下にエクスポートリストへのリンクを表示します。"
4564
4567
 
4568
+ # /* locked: requested by customer in MTM-52050 */
4565
4569
  msgid "Display a link to the Global smart rules under the Configuration navigator menu."
4566
- msgstr "グローバル スマート ルールへのリンクを [構成ナビゲーター] メニューに表示します。"
4570
+ msgstr "ナビゲーターメニューの[構成]の下にグローバル スマート ルールへのリンクを表示します。"
4567
4571
 
4572
+ # /* locked: requested by customer in MTM-52050 */
4568
4573
  msgid "Display a link to the Reports list in the navigator menu."
4569
- msgstr "ナビゲーター メニューでレポート一覧へのリンクを表示します。"
4574
+ msgstr "ナビゲーターメニューでレポート一覧へのリンクを表示します。"
4570
4575
 
4576
+ # /* locked: requested by customer in MTM-52050 */
4571
4577
  msgid "Display a link to the global alarms list in the navigator menu."
4572
- msgstr "ナビゲーター メニューでグローバル アラーム リストへのリンクを表示してください。"
4578
+ msgstr "ナビゲーターメニューでグローバル アラーム リストへのリンクを表示します。"
4573
4579
 
4574
4580
  msgid "Display a list of predefined commands"
4575
4581
  msgstr "事前定義済みのコマンドのリストを表示"
@@ -4592,20 +4598,25 @@ msgstr "カスタム HTML コードを表示"
4592
4598
  msgid "Display selected roaming network"
4593
4599
  msgstr "選択したローミング ネットワークを表示"
4594
4600
 
4601
+ # /* locked: requested by customer in MTM-52050 */
4595
4602
  msgid "Display the \"Subassets\" tab on groups."
4596
- msgstr "グループに \"サブアセット\" タブを表示します。"
4603
+ msgstr "グループ画面で\"サブアセット\"のタブを表示します。"
4597
4604
 
4605
+ # /* locked: requested by customer in MTM-52050 */
4598
4606
  msgid "Display the data explorer in the navigator menu and on the group tabs."
4599
- msgstr "ナビゲーター メニューとグループ タブでデータ エクスプローラーを表示します。"
4607
+ msgstr "ナビゲーターメニューとグループタブでデータ エクスプローラーを表示します。"
4600
4608
 
4609
+ # /* locked: requested by customer in MTM-52050 */
4601
4610
  msgid "Display the global search in the main header."
4602
- msgstr "メイン ヘッダーでグローバル検索を表示してください。"
4611
+ msgstr "メインヘッダーでグローバル検索を表示します。"
4603
4612
 
4613
+ # /* locked: requested by customer in MTM-52050 */
4604
4614
  msgid "Display the smart rules tab on groups and devices."
4605
- msgstr "グループおよびデバイスでスマート ルール タブを表示します。"
4615
+ msgstr "グループおよびデバイス画面でスマート ルールのタブを表示します。"
4606
4616
 
4617
+ # /* locked: requested by customer in MTM-52050 */
4607
4618
  msgid "Display top level groups under the Groups navigator menu."
4608
- msgstr "[グループ ナビゲーター] メニューのトップ レベル グループを表示します。"
4619
+ msgstr "ナビゲーターメニューの[グループ]の下にトップレベルグループを表示します。"
4609
4620
 
4610
4621
  msgid "Displays a list of alarms filtered by object, severity and status"
4611
4622
  msgstr "オブジェクト、重大度、およびステータス別にフィルターされたアラームのリストを表示します"
@@ -9155,8 +9166,9 @@ msgstr "退出時"
9155
9166
  msgid "On measurement explicit threshold"
9156
9167
  msgstr "計測値のしきい値超過時"
9157
9168
 
9169
+ # /* locked: requested by customer in MTM-52050 */
9158
9170
  msgid "On measurement explicit threshold create alarm"
9159
- msgstr "計測の明確なしきい値の場合、アラームを作成"
9171
+ msgstr "計測値のしきい値超過時 アラームを作成"
9160
9172
 
9161
9173
  msgid "On measurement threshold"
9162
9174
  msgstr "しきい値の計測時"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@c8y/ngx-components",
3
- "version": "1017.0.104",
3
+ "version": "1017.0.106",
4
4
  "license": "Apache-2.0",
5
5
  "author": "Cumulocity",
6
6
  "description": "Angular modules for Cumulocity IoT applications",
@@ -22,7 +22,7 @@
22
22
  "rxjs": "~6.6.3"
23
23
  },
24
24
  "dependencies": {
25
- "@c8y/client": "1017.0.104",
25
+ "@c8y/client": "1017.0.106",
26
26
  "@ngx-translate/core": "14.0.0",
27
27
  "@ngx-translate/http-loader": "7.0.0",
28
28
  "@ngx-formly/core": "5.10.13",