@c8y/ngx-components 1018.0.269 → 1018.0.271
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/cockpit-config/cockpit-config.service.mjs +4 -1
- package/fesm2015/c8y-ngx-components-cockpit-config.mjs +3 -0
- package/fesm2015/c8y-ngx-components-cockpit-config.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-cockpit-config.mjs +3 -0
- package/fesm2020/c8y-ngx-components-cockpit-config.mjs.map +1 -1
- package/locales/de.po +2 -2
- package/locales/es.po +15 -15
- package/locales/fr.po +25 -25
- package/locales/ja_JP.po +12 -10
- package/locales/ko.po +29 -5
- package/locales/nl.po +5 -6
- package/locales/pl.po +6 -6
- package/locales/pt_BR.po +181 -181
- package/locales/zh_CN.po +24 -0
- package/locales/zh_TW.po +24 -0
- package/package.json +1 -1
|
@@ -33,6 +33,9 @@ export class CockpitConfigService {
|
|
|
33
33
|
return Object.keys(this.currentConfig.features).filter(key => !this.currentConfig.features[key]);
|
|
34
34
|
}
|
|
35
35
|
init() {
|
|
36
|
+
if (this.optionsService.hideNavigator !== undefined) {
|
|
37
|
+
this.currentConfig.hideNavigator = this.optionsService.hideNavigator;
|
|
38
|
+
}
|
|
36
39
|
this.appState.currentApplicationConfig.subscribe(config => {
|
|
37
40
|
if (config) {
|
|
38
41
|
this.currentConfig = { ...DEFAULT_CONFIG, ...config };
|
|
@@ -151,4 +154,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
151
154
|
type: Inject,
|
|
152
155
|
args: [ASSET_NAVIGATOR_CONFIG]
|
|
153
156
|
}] }]; } });
|
|
154
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ja3BpdC1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvY2twaXQtY29uZmlnL2NvY2twaXQtY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsZUFBZSxFQUdmLGdCQUFnQixFQUNoQixjQUFjLEVBQ2QsV0FBVyxFQUNYLGFBQWEsRUFFYixXQUFXLEVBQ1osTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLHNCQUFzQixFQUN2QixNQUFNLHNDQUFzQyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQWlCLGNBQWMsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7OztBQUtwRyxNQUFNLE9BQU8sb0JBQW9CO0lBZS9CLFlBQ1UsZ0JBQWtDLEVBQ2xDLFdBQXdCLEVBQ3hCLGFBQTRCLEVBQzVCLGdCQUFrQyxFQUNsQyxnQkFBa0MsRUFDbEMsUUFBeUIsRUFDekIsY0FBOEIsRUFDOUIsV0FBd0IsRUFDbUIsWUFBa0M7UUFSN0UscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsbUJBQWMsR0FBZCxjQUFj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O3FCQUNSO29CQUVELFNBQVMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2lCQUMxQjtZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztpSEF0S1Usb0JBQW9CLGtRQXdCVCxzQkFBc0I7cUhBeEJqQyxvQkFBb0IsY0FGbkIsTUFBTTsyRkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkF5QkksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbnZlbnRvcnlTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQXBwU3RhdGVTZXJ2aWNlLFxuICBFeHRlbnNpb25GYWN0b3J5LFxuICBOYXZpZ2F0b3JOb2RlLFxuICBOYXZpZ2F0b3JTZXJ2aWNlLFxuICBPcHRpb25zU2VydmljZSxcbiAgUGVybWlzc2lvbnMsXG4gIFNlYXJjaFNlcnZpY2UsXG4gIFRhYixcbiAgVGFic1NlcnZpY2Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBBc3NldE5hdmlnYXRvckNvbmZpZyxcbiAgQXNzZXROb2RlU2VydmljZSxcbiAgQVNTRVRfTkFWSUdBVE9SX0NPTkZJR1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2Fzc2V0cy1uYXZpZ2F0b3InO1xuaW1wb3J0IHsgaXNVbmRlZmluZWQsIHN0YXJ0Q2FzZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb2NrcGl0Q29uZmlnLCBERUZBVUxUX0NPTkZJRywgREVGQVVMVF9IT01FX0RBU0hCT0FSRF9OQU1FIH0gZnJvbSAnLi9jb2NrcGl0LWNvbmZpZy5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvY2twaXRDb25maWdTZXJ2aWNlIHtcbiAgY3VycmVudENvbmZpZzogQ29ja3BpdENvbmZpZyA9IERFRkFVTFRfQ09ORklHO1xuICBub2RlczogTmF2aWdhdG9yTm9kZVtdID0gW107XG4gIHByaXZhdGUgbmF2aWdhdGlvbkZhY3Rvcnk6IEV4dGVuc2lvbkZhY3Rvcnk8TmF2aWdhdG9yTm9kZT4gPSB7XG4gICAgZ2V0OiAoKSA9PiB0aGlzLm5vZGVzXG4gIH07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX05PREVfUFJJT1JJVFkgPSAyMDAwO1xuXG4gIGdldCBleGNsdWRlZEZlYXR1cmVLZXlzKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmN1cnJlbnRDb25maWcuZmVhdHVyZXMpLmZpbHRlcihcbiAgICAgIGtleSA9PiAhdGhpcy5jdXJyZW50Q29uZmlnLmZlYXR1cmVzW2tleV1cbiAgICApO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBuYXZpZ2F0b3JTZXJ2aWNlOiBOYXZpZ2F0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGFic1NlcnZpY2U6IFRhYnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZSxcbiAgICBwcml2YXRlIGFzc2V0Tm9kZVNlcnZpY2U6IEFzc2V0Tm9kZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnlTZXJ2aWNlOiBJbnZlbnRvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBwU3RhdGU6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIG9wdGlvbnNTZXJ2aWNlOiBPcHRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9ucyxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFTU0VUX05BVklHQVRPUl9DT05GSUcpIHB1YmxpYyBtb2R1bGVDb25maWc6IEFzc2V0TmF2aWdhdG9yQ29uZmlnXG4gICkge1xuICAgIHRoaXMucmVnaXN0ZXJGaWx0ZXJGb3JGZWF0dXJlcygpO1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgaW5pdCgpIHtcbiAgICB0aGlzLmFwcFN0YXRlLmN1cnJlbnRBcHBsaWNhdGlvbkNvbmZpZy5zdWJzY3JpYmUoY29uZmlnID0+IHtcbiAgICAgIGlmIChjb25maWcpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50Q29uZmlnID0geyAuLi5ERUZBVUxUX0NPTkZJRywgLi4uY29uZmlnIH0gYXMgQ29ja3BpdENvbmZpZztcbiAgICAgICAgdGhpcy5zZXRSb290Tm9kZXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHNhdmVDb25maWcoY29uZmlnKSB7XG4gICAgdGhpcy5jdXJyZW50Q29uZmlnID0gY29uZmlnO1xuICAgIGF3YWl0IHRoaXMuc3RvcmVBcHBsaWNhdGlvbkNvbmZpZyh0aGlzLmN1cnJlbnRDb25maWcpO1xuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICB0aGlzLm9wdGlvbnNTZXJ2aWNlLmhpZGVOYXZpZ2F0b3IgPSB0aGlzLmN1cnJlbnRDb25maWcuaGlkZU5hdmlnYXRvcjtcbiAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UucmVmcmVzaCgpO1xuICAgIHRoaXMuc2VhcmNoU2VydmljZS5yZWZyZXNoKCk7XG4gIH1cblxuICBhc3luYyBzZXRSb290Tm9kZXMoKSB7XG4gICAgdGhpcy5hZGROb2Rlc1RvRmFjdG9yaWVzKCk7XG4gICAgdGhpcy5ub2Rlcy5sZW5ndGggPSAwO1xuICAgIGZvciAoY29uc3Qgbm9kZSBvZiB0aGlzLmN1cnJlbnRDb25maWcucm9vdE5vZGVzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuaW52ZW50b3J5U2VydmljZS5kZXRhaWwobm9kZS5pZCk7XG4gICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgdGhpcy5ub2Rlcy5wdXNoKFxuICAgICAgICAgICAgdGhpcy5hc3NldE5vZGVTZXJ2aWNlLmNyZWF0ZUFzc2V0Tm9kZSh7XG4gICAgICAgICAgICAgIG1vOiBkYXRhLFxuICAgICAgICAgICAgICBoaWRlRGV2aWNlczogbm9kZS5oaWRlRGV2aWNlcyxcbiAgICAgICAgICAgICAgcHJpb3JpdHk6IGlzVW5kZWZpbmVkKHRoaXMubW9kdWxlQ29uZmlnPy5yb290Tm9kZVByaW9yaXR5KVxuICAgICAgICAgICAgICAgID8gdGhpcy5ERUZBVUxUX05PREVfUFJJT1JJVFlcbiAgICAgICAgICAgICAgICA6IHRoaXMubW9kdWxlQ29uZmlnLnJvb3ROb2RlUHJpb3JpdHlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gZG8gbm90aGluZ1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnJlZnJlc2goKTtcbiAgfVxuXG4gIGdldEFwcERhc2hib2FyZE5hbWUoKSB7XG4gICAgcmV0dXJuIGAke0RFRkFVTFRfSE9NRV9EQVNIQk9BUkRfTkFNRS5zdWJzdHJpbmcoMCwgREVGQVVMVF9IT01FX0RBU0hCT0FSRF9OQU1FLmxlbmd0aCAtIDEpfV8ke1xuICAgICAgdGhpcy5hcHBTdGF0ZS5zdGF0ZS5hcHAuaWRcbiAgICB9YDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc3RvcmVBcHBsaWNhdGlvbkNvbmZpZyhjb25maWc6IENvY2twaXRDb25maWcpIHtcbiAgICBhd2FpdCB0aGlzLmFwcFN0YXRlLnVwZGF0ZUN1cnJlbnRBcHBsaWNhdGlvbkNvbmZpZzxDb2NrcGl0Q29uZmlnPihjb25maWcpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGROb2Rlc1RvRmFjdG9yaWVzKCkge1xuICAgIGNvbnN0IG5vZGVJbkZhY3RvcmllcyA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5mYWN0b3JpZXMuZmluZChcbiAgICAgIGZhdGNvcnkgPT4gZmF0Y29yeSA9PT0gdGhpcy5uYXZpZ2F0aW9uRmFjdG9yeVxuICAgICk7XG4gICAgaWYgKCFub2RlSW5GYWN0b3JpZXMpIHtcbiAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5mYWN0b3JpZXMucHVzaCh0aGlzLm5hdmlnYXRpb25GYWN0b3J5KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyRmlsdGVyRm9yRmVhdHVyZXMoKSB7XG4gICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLml0ZW1zJCA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5pdGVtcyQucGlwZShcbiAgICAgIG1hcChub2RlcyA9PiB0aGlzLnNldEhpZGRlbkF0dHJMb2NrKG5vZGVzKSksXG4gICAgICBtYXAobm9kZXMgPT4gdGhpcy5maWx0ZXJOYXZpZ2F0b3JOb2RlKG5vZGVzKSlcbiAgICApO1xuICAgIHRoaXMudGFic1NlcnZpY2UuaXRlbXMkID0gdGhpcy50YWJzU2VydmljZS5pdGVtcyQucGlwZShtYXAodGFicyA9PiB0aGlzLmZpbHRlclRhYnModGFicykpKTtcbiAgICB0aGlzLnNlYXJjaFNlcnZpY2UuaXRlbXMkID0gdGhpcy5zZWFyY2hTZXJ2aWNlLml0ZW1zJC5waXBlKFxuICAgICAgbWFwKHNlYXJjaCA9PiAodGhpcy5jdXJyZW50Q29uZmlnLmZlYXR1cmVzLnNlYXJjaCA/IHNlYXJjaCA6IFtdKSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRIaWRkZW5BdHRyTG9jayhub2Rlcykge1xuICAgIG5vZGVzLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmN1cnJlbnRDb25maWcuZmVhdHVyZXMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgY29uc3QgY2hpbGROb2RlID0gbm9kZS5maW5kKHN0YXJ0Q2FzZShrZXkpLnRvTG93ZXJDYXNlKCkpO1xuXG4gICAgICAgIGlmIChjaGlsZE5vZGUpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAhdGhpcy5wZXJtaXNzaW9ucy5oYXNSb2xlKFBlcm1pc3Npb25zLlJPTEVfQVBQTElDQVRJT05fTUFOQUdFTUVOVF9BRE1JTikgJiZcbiAgICAgICAgICAgIGNoaWxkTm9kZS5sb2NrSGlkZGVuQXR0ciA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICBjaGlsZE5vZGUuaGlkZGVuID09PSB0cnVlXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjaGlsZE5vZGUubG9ja0hpZGRlbkF0dHIgPSBjaGlsZE5vZGUuaGlkZGVuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG5vZGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJUYWJzKHRhYnM6IFRhYltdKSB7XG4gICAgcmV0dXJuIHRhYnMuZmlsdGVyKHRhYiA9PiAhdGhpcy5leGNsdWRlZEZlYXR1cmVLZXlzLnNvbWUoa2V5ID0+IHRhYi5mZWF0dXJlSWQgPT09IGtleSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJOYXZpZ2F0b3JOb2RlKG5vZGVzOiBOYXZpZ2F0b3JOb2RlW10pIHtcbiAgICBpZiAoIXRoaXMuY3VycmVudENvbmZpZykge1xuICAgICAgcmV0dXJuIG5vZGVzO1xuICAgIH1cbiAgICBjb25zdCBkaXNhYmxlZEZlYXR1cmVzID0gdGhpcy5leGNsdWRlZEZlYXR1cmVLZXlzO1xuICAgIGNvbnN0IGZpbHRlcmVkTm9kZXMgPSBub2Rlcy5maWx0ZXIoXG4gICAgICBub2RlID0+ICFkaXNhYmxlZEZlYXR1cmVzLnNvbWUoa2V5ID0+IG5vZGUuZmVhdHVyZUlkID09PSBrZXkpXG4gICAgKTtcblxuICAgIHRoaXMuc2hvd0FsbENoaWxkcmVuTm9kZXMobm9kZXMpO1xuICAgIHRoaXMuaGlkZUNoaWxkcmVuTm9kZXNUaGF0QXJlRGlzYWJsZWQobm9kZXMsIGRpc2FibGVkRmVhdHVyZXMpO1xuICAgIHJldHVybiBmaWx0ZXJlZE5vZGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBoaWRlQ2hpbGRyZW5Ob2Rlc1RoYXRBcmVEaXNhYmxlZChub2RlczogTmF2aWdhdG9yTm9kZVtdLCBkaXNhYmxlZEZlYXR1cmVzOiBzdHJpbmdbXSkge1xuICAgIG5vZGVzLmZvckVhY2gobm9kZSA9PlxuICAgICAgZGlzYWJsZWRGZWF0dXJlcy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkTm9kZSA9IG5vZGUuZmluZChrZXksICdmZWF0dXJlSWQnKTtcbiAgICAgICAgaWYgKGNoaWxkTm9kZSkge1xuICAgICAgICAgIGNoaWxkTm9kZS5oaWRkZW4gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNob3dBbGxDaGlsZHJlbk5vZGVzKG5vZGVzOiBOYXZpZ2F0b3JOb2RlW10pIHtcbiAgICBub2Rlcy5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgT2JqZWN0LmtleXModGhpcy5jdXJyZW50Q29uZmlnLmZlYXR1cmVzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkTm9kZSA9IG5vZGUuZmluZChzdGFydENhc2Uoa2V5KS50b0xvd2VyQ2FzZSgpKTtcblxuICAgICAgICBpZiAoY2hpbGROb2RlKSB7XG4gICAgICAgICAgaWYgKGNoaWxkTm9kZS5sb2NrSGlkZGVuQXR0ciA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNoaWxkTm9kZS5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ja3BpdC1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvY2twaXQtY29uZmlnL2NvY2twaXQtY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsZUFBZSxFQUdmLGdCQUFnQixFQUNoQixjQUFjLEVBQ2QsV0FBVyxFQUNYLGFBQWEsRUFFYixXQUFXLEVBQ1osTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLHNCQUFzQixFQUN2QixNQUFNLHNDQUFzQyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQWlCLGNBQWMsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7OztBQUtwRyxNQUFNLE9BQU8sb0JBQW9CO0lBZS9CLFlBQ1UsZ0JBQWtDLEVBQ2xDLFdBQXdCLEVBQ3hCLGFBQTRCLEVBQzVCLGdCQUFrQyxFQUNsQyxnQkFBa0MsRUFDbEMsUUFBeUIsRUFDekIsY0FBOEIsRUFDOUIsV0FBd0IsRUFDbUIsWUFBa0M7UUFSN0UscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsbUJBQWMsR0FBZCxjQUFj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QUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7Z0JBRTFELElBQUksU0FBUyxFQUFFO29CQUNiLElBQUksU0FBUyxDQUFDLGNBQWMsS0FBSyxJQUFJLEVBQUU7d0JBQ3JDLE9BQU87cUJBQ1I7b0JBRUQsU0FBUyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7aUJBQzFCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O2lIQXpLVSxvQkFBb0Isa1FBd0JULHNCQUFzQjtxSEF4QmpDLG9CQUFvQixjQUZuQixNQUFNOzJGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQXlCSSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEludmVudG9yeVNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBBcHBTdGF0ZVNlcnZpY2UsXG4gIEV4dGVuc2lvbkZhY3RvcnksXG4gIE5hdmlnYXRvck5vZGUsXG4gIE5hdmlnYXRvclNlcnZpY2UsXG4gIE9wdGlvbnNTZXJ2aWNlLFxuICBQZXJtaXNzaW9ucyxcbiAgU2VhcmNoU2VydmljZSxcbiAgVGFiLFxuICBUYWJzU2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIEFzc2V0TmF2aWdhdG9yQ29uZmlnLFxuICBBc3NldE5vZGVTZXJ2aWNlLFxuICBBU1NFVF9OQVZJR0FUT1JfQ09ORklHXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYXNzZXRzLW5hdmlnYXRvcic7XG5pbXBvcnQgeyBpc1VuZGVmaW5lZCwgc3RhcnRDYXNlIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvY2twaXRDb25maWcsIERFRkFVTFRfQ09ORklHLCBERUZBVUxUX0hPTUVfREFTSEJPQVJEX05BTUUgfSBmcm9tICcuL2NvY2twaXQtY29uZmlnLm1vZGVsJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ29ja3BpdENvbmZpZ1NlcnZpY2Uge1xuICBjdXJyZW50Q29uZmlnOiBDb2NrcGl0Q29uZmlnID0gREVGQVVMVF9DT05GSUc7XG4gIG5vZGVzOiBOYXZpZ2F0b3JOb2RlW10gPSBbXTtcbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uRmFjdG9yeTogRXh0ZW5zaW9uRmFjdG9yeTxOYXZpZ2F0b3JOb2RlPiA9IHtcbiAgICBnZXQ6ICgpID0+IHRoaXMubm9kZXNcbiAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfTk9ERV9QUklPUklUWSA9IDIwMDA7XG5cbiAgZ2V0IGV4Y2x1ZGVkRmVhdHVyZUtleXMoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY3VycmVudENvbmZpZy5mZWF0dXJlcykuZmlsdGVyKFxuICAgICAga2V5ID0+ICF0aGlzLmN1cnJlbnRDb25maWcuZmVhdHVyZXNba2V5XVxuICAgICk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5hdmlnYXRvclNlcnZpY2U6IE5hdmlnYXRvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0YWJzU2VydmljZTogVGFic1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXNzZXROb2RlU2VydmljZTogQXNzZXROb2RlU2VydmljZSxcbiAgICBwcml2YXRlIGludmVudG9yeVNlcnZpY2U6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBTdGF0ZTogQXBwU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3B0aW9uc1NlcnZpY2U6IE9wdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25zLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVNTRVRfTkFWSUdBVE9SX0NPTkZJRykgcHVibGljIG1vZHVsZUNvbmZpZzogQXNzZXROYXZpZ2F0b3JDb25maWdcbiAgKSB7XG4gICAgdGhpcy5yZWdpc3RlckZpbHRlckZvckZlYXR1cmVzKCk7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBpbml0KCkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNTZXJ2aWNlLmhpZGVOYXZpZ2F0b3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jdXJyZW50Q29uZmlnLmhpZGVOYXZpZ2F0b3IgPSB0aGlzLm9wdGlvbnNTZXJ2aWNlLmhpZGVOYXZpZ2F0b3I7XG4gICAgfVxuICAgIHRoaXMuYXBwU3RhdGUuY3VycmVudEFwcGxpY2F0aW9uQ29uZmlnLnN1YnNjcmliZShjb25maWcgPT4ge1xuICAgICAgaWYgKGNvbmZpZykge1xuICAgICAgICB0aGlzLmN1cnJlbnRDb25maWcgPSB7IC4uLkRFRkFVTFRfQ09ORklHLCAuLi5jb25maWcgfSBhcyBDb2NrcGl0Q29uZmlnO1xuICAgICAgICB0aGlzLnNldFJvb3ROb2RlcygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc2F2ZUNvbmZpZyhjb25maWcpIHtcbiAgICB0aGlzLmN1cnJlbnRDb25maWcgPSBjb25maWc7XG4gICAgYXdhaXQgdGhpcy5zdG9yZUFwcGxpY2F0aW9uQ29uZmlnKHRoaXMuY3VycmVudENvbmZpZyk7XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMub3B0aW9uc1NlcnZpY2UuaGlkZU5hdmlnYXRvciA9IHRoaXMuY3VycmVudENvbmZpZy5oaWRlTmF2aWdhdG9yO1xuICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5yZWZyZXNoKCk7XG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnJlZnJlc2goKTtcbiAgfVxuXG4gIGFzeW5jIHNldFJvb3ROb2RlcygpIHtcbiAgICB0aGlzLmFkZE5vZGVzVG9GYWN0b3JpZXMoKTtcbiAgICB0aGlzLm5vZGVzLmxlbmd0aCA9IDA7XG4gICAgZm9yIChjb25zdCBub2RlIG9mIHRoaXMuY3VycmVudENvbmZpZy5yb290Tm9kZXMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLmRldGFpbChub2RlLmlkKTtcbiAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICB0aGlzLm5vZGVzLnB1c2goXG4gICAgICAgICAgICB0aGlzLmFzc2V0Tm9kZVNlcnZpY2UuY3JlYXRlQXNzZXROb2RlKHtcbiAgICAgICAgICAgICAgbW86IGRhdGEsXG4gICAgICAgICAgICAgIGhpZGVEZXZpY2VzOiBub2RlLmhpZGVEZXZpY2VzLFxuICAgICAgICAgICAgICBwcmlvcml0eTogaXNVbmRlZmluZWQodGhpcy5tb2R1bGVDb25maWc/LnJvb3ROb2RlUHJpb3JpdHkpXG4gICAgICAgICAgICAgICAgPyB0aGlzLkRFRkFVTFRfTk9ERV9QUklPUklUWVxuICAgICAgICAgICAgICAgIDogdGhpcy5tb2R1bGVDb25maWcucm9vdE5vZGVQcmlvcml0eVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBkbyBub3RoaW5nXG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucmVmcmVzaCgpO1xuICB9XG5cbiAgZ2V0QXBwRGFzaGJvYXJkTmFtZSgpIHtcbiAgICByZXR1cm4gYCR7REVGQVVMVF9IT01FX0RBU0hCT0FSRF9OQU1FLnN1YnN0cmluZygwLCBERUZBVUxUX0hPTUVfREFTSEJPQVJEX05BTUUubGVuZ3RoIC0gMSl9XyR7XG4gICAgICB0aGlzLmFwcFN0YXRlLnN0YXRlLmFwcC5pZFxuICAgIH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzdG9yZUFwcGxpY2F0aW9uQ29uZmlnKGNvbmZpZzogQ29ja3BpdENvbmZpZykge1xuICAgIGF3YWl0IHRoaXMuYXBwU3RhdGUudXBkYXRlQ3VycmVudEFwcGxpY2F0aW9uQ29uZmlnPENvY2twaXRDb25maWc+KGNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIGFkZE5vZGVzVG9GYWN0b3JpZXMoKSB7XG4gICAgY29uc3Qgbm9kZUluRmFjdG9yaWVzID0gdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmZhY3Rvcmllcy5maW5kKFxuICAgICAgZmF0Y29yeSA9PiBmYXRjb3J5ID09PSB0aGlzLm5hdmlnYXRpb25GYWN0b3J5XG4gICAgKTtcbiAgICBpZiAoIW5vZGVJbkZhY3Rvcmllcykge1xuICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmZhY3Rvcmllcy5wdXNoKHRoaXMubmF2aWdhdGlvbkZhY3RvcnkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJGaWx0ZXJGb3JGZWF0dXJlcygpIHtcbiAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuaXRlbXMkID0gdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLml0ZW1zJC5waXBlKFxuICAgICAgbWFwKG5vZGVzID0+IHRoaXMuc2V0SGlkZGVuQXR0ckxvY2sobm9kZXMpKSxcbiAgICAgIG1hcChub2RlcyA9PiB0aGlzLmZpbHRlck5hdmlnYXRvck5vZGUobm9kZXMpKVxuICAgICk7XG4gICAgdGhpcy50YWJzU2VydmljZS5pdGVtcyQgPSB0aGlzLnRhYnNTZXJ2aWNlLml0ZW1zJC5waXBlKG1hcCh0YWJzID0+IHRoaXMuZmlsdGVyVGFicyh0YWJzKSkpO1xuICAgIHRoaXMuc2VhcmNoU2VydmljZS5pdGVtcyQgPSB0aGlzLnNlYXJjaFNlcnZpY2UuaXRlbXMkLnBpcGUoXG4gICAgICBtYXAoc2VhcmNoID0+ICh0aGlzLmN1cnJlbnRDb25maWcuZmVhdHVyZXMuc2VhcmNoID8gc2VhcmNoIDogW10pKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNldEhpZGRlbkF0dHJMb2NrKG5vZGVzKSB7XG4gICAgbm9kZXMuZm9yRWFjaChub2RlID0+IHtcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuY3VycmVudENvbmZpZy5mZWF0dXJlcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBjb25zdCBjaGlsZE5vZGUgPSBub2RlLmZpbmQoc3RhcnRDYXNlKGtleSkudG9Mb3dlckNhc2UoKSk7XG5cbiAgICAgICAgaWYgKGNoaWxkTm9kZSkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICF0aGlzLnBlcm1pc3Npb25zLmhhc1JvbGUoUGVybWlzc2lvbnMuUk9MRV9BUFBMSUNBVElPTl9NQU5BR0VNRU5UX0FETUlOKSAmJlxuICAgICAgICAgICAgY2hpbGROb2RlLmxvY2tIaWRkZW5BdHRyID09PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgIGNoaWxkTm9kZS5oaWRkZW4gPT09IHRydWVcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNoaWxkTm9kZS5sb2NrSGlkZGVuQXR0ciA9IGNoaWxkTm9kZS5oaWRkZW47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gbm9kZXM7XG4gIH1cblxuICBwcml2YXRlIGZpbHRlclRhYnModGFiczogVGFiW10pIHtcbiAgICByZXR1cm4gdGFicy5maWx0ZXIodGFiID0+ICF0aGlzLmV4Y2x1ZGVkRmVhdHVyZUtleXMuc29tZShrZXkgPT4gdGFiLmZlYXR1cmVJZCA9PT0ga2V5KSk7XG4gIH1cblxuICBwcml2YXRlIGZpbHRlck5hdmlnYXRvck5vZGUobm9kZXM6IE5hdmlnYXRvck5vZGVbXSkge1xuICAgIGlmICghdGhpcy5jdXJyZW50Q29uZmlnKSB7XG4gICAgICByZXR1cm4gbm9kZXM7XG4gICAgfVxuICAgIGNvbnN0IGRpc2FibGVkRmVhdHVyZXMgPSB0aGlzLmV4Y2x1ZGVkRmVhdHVyZUtleXM7XG4gICAgY29uc3QgZmlsdGVyZWROb2RlcyA9IG5vZGVzLmZpbHRlcihcbiAgICAgIG5vZGUgPT4gIWRpc2FibGVkRmVhdHVyZXMuc29tZShrZXkgPT4gbm9kZS5mZWF0dXJlSWQgPT09IGtleSlcbiAgICApO1xuXG4gICAgdGhpcy5zaG93QWxsQ2hpbGRyZW5Ob2Rlcyhub2Rlcyk7XG4gICAgdGhpcy5oaWRlQ2hpbGRyZW5Ob2Rlc1RoYXRBcmVEaXNhYmxlZChub2RlcywgZGlzYWJsZWRGZWF0dXJlcyk7XG4gICAgcmV0dXJuIGZpbHRlcmVkTm9kZXM7XG4gIH1cblxuICBwcml2YXRlIGhpZGVDaGlsZHJlbk5vZGVzVGhhdEFyZURpc2FibGVkKG5vZGVzOiBOYXZpZ2F0b3JOb2RlW10sIGRpc2FibGVkRmVhdHVyZXM6IHN0cmluZ1tdKSB7XG4gICAgbm9kZXMuZm9yRWFjaChub2RlID0+XG4gICAgICBkaXNhYmxlZEZlYXR1cmVzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgY29uc3QgY2hpbGROb2RlID0gbm9kZS5maW5kKGtleSwgJ2ZlYXR1cmVJZCcpO1xuICAgICAgICBpZiAoY2hpbGROb2RlKSB7XG4gICAgICAgICAgY2hpbGROb2RlLmhpZGRlbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd0FsbENoaWxkcmVuTm9kZXMobm9kZXM6IE5hdmlnYXRvck5vZGVbXSkge1xuICAgIG5vZGVzLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmN1cnJlbnRDb25maWcuZmVhdHVyZXMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgY29uc3QgY2hpbGROb2RlID0gbm9kZS5maW5kKHN0YXJ0Q2FzZShrZXkpLnRvTG93ZXJDYXNlKCkpO1xuXG4gICAgICAgIGlmIChjaGlsZE5vZGUpIHtcbiAgICAgICAgICBpZiAoY2hpbGROb2RlLmxvY2tIaWRkZW5BdHRyID09PSB0cnVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2hpbGROb2RlLmhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -112,6 +112,9 @@ class CockpitConfigService {
|
|
|
112
112
|
return Object.keys(this.currentConfig.features).filter(key => !this.currentConfig.features[key]);
|
|
113
113
|
}
|
|
114
114
|
init() {
|
|
115
|
+
if (this.optionsService.hideNavigator !== undefined) {
|
|
116
|
+
this.currentConfig.hideNavigator = this.optionsService.hideNavigator;
|
|
117
|
+
}
|
|
115
118
|
this.appState.currentApplicationConfig.subscribe(config => {
|
|
116
119
|
if (config) {
|
|
117
120
|
this.currentConfig = Object.assign(Object.assign({}, DEFAULT_CONFIG), config);
|
|
@@ -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(Permissions.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 try {\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 } catch (error) {\n // do nothing\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(Permissions.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 <c8y-ui-empty-state\n [icon]=\"'folder-open'\"\n [title]=\"'No top level nodes set.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\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 type=\"button\"\n [attr.aria-label]=\"'Remove' | translate\"\n tooltip=\"{{ 'Remove' | translate }}\"\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 [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Define which are the enabled features in the current application.'\n | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\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 [attr.aria-label]=\"'Help' | translate\"\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 placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\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 [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'The homepage of this application. By default, it is a customizable dashboard displaying the most important alarms and shortcuts to frequently used features.'\n | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\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 class=\"btn btn-primary\"\n type=\"submit\"\n title=\"{{ 'Save' | translate }}\"\n [disabled]=\"!configForm.form.valid\"\n (click)=\"save()\"\n [actionName]=\"'cockpitConfigurationSaved'\"\n [actionData]=\"{ config: config }\"\n c8yProductExperience\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 homepage of this application. By default, it is a customizable dashboard displaying\n the most important alarms and shortcuts to frequently used features.\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(Permissions.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 if (this.optionsService.hideNavigator !== undefined) {\n this.currentConfig.hideNavigator = this.optionsService.hideNavigator;\n }\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 try {\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 } catch (error) {\n // do nothing\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(Permissions.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 <c8y-ui-empty-state\n [icon]=\"'folder-open'\"\n [title]=\"'No top level nodes set.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\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 type=\"button\"\n [attr.aria-label]=\"'Remove' | translate\"\n tooltip=\"{{ 'Remove' | translate }}\"\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 [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Define which are the enabled features in the current application.'\n | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\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 [attr.aria-label]=\"'Help' | translate\"\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 placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\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 [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'The homepage of this application. By default, it is a customizable dashboard displaying the most important alarms and shortcuts to frequently used features.'\n | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\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 class=\"btn btn-primary\"\n type=\"submit\"\n title=\"{{ 'Save' | translate }}\"\n [disabled]=\"!configForm.form.valid\"\n (click)=\"save()\"\n [actionName]=\"'cockpitConfigurationSaved'\"\n [actionData]=\"{ config: config }\"\n c8yProductExperience\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 homepage of this application. By default, it is a customizable dashboard displaying\n the most important alarms and shortcuts to frequently used features.\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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"}
|
|
@@ -111,6 +111,9 @@ class CockpitConfigService {
|
|
|
111
111
|
return Object.keys(this.currentConfig.features).filter(key => !this.currentConfig.features[key]);
|
|
112
112
|
}
|
|
113
113
|
init() {
|
|
114
|
+
if (this.optionsService.hideNavigator !== undefined) {
|
|
115
|
+
this.currentConfig.hideNavigator = this.optionsService.hideNavigator;
|
|
116
|
+
}
|
|
114
117
|
this.appState.currentApplicationConfig.subscribe(config => {
|
|
115
118
|
if (config) {
|
|
116
119
|
this.currentConfig = { ...DEFAULT_CONFIG, ...config };
|