@c8y/ngx-components 1018.0.74 → 1018.0.76

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.
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-context-dashboard.mjs","sources":["../../context-dashboard/context-dashboard.model.ts","../../context-dashboard/report-dashboard/report-dashboard.service.ts","../../context-dashboard/report-dashboard/report-dashboard-navigation.factory.ts","../../context-dashboard/context-dashboard.service.ts","../../context-dashboard/appearance-settings.component.ts","../../context-dashboard/appearance-settings.component.html","../../context-dashboard/widget-preview.component.ts","../../context-dashboard/widget-preview.component.html","../../context-dashboard/dashboard-availability.component.ts","../../context-dashboard/dashboard-availability.component.html","../../context-dashboard/dashboard-detail.component.ts","../../context-dashboard/dashboard-detail.component.html","../../context-dashboard/add-dashboard.factory.ts","../../context-dashboard/add-dashboard.component.ts","../../context-dashboard/add-dashboard.component.html","../../context-dashboard/cockpit-dashboard/cockpit-dashboard.model.ts","../../context-dashboard/widget.service.ts","../../context-dashboard/widget-config.component.ts","../../context-dashboard/widget-config.component.html","../../context-dashboard/context-dashboard.component.ts","../../context-dashboard/context-dashboard.component.html","../../context-dashboard/cockpit-dashboard/cockpit-dashboard.component.ts","../../context-dashboard/cockpit-dashboard/cockpit-dashboard.component.html","../../context-dashboard/paste-dashboard-action.component.ts","../../context-dashboard/dashboard-action-bar.factory.ts","../../context-dashboard/device-dashboard.guard.ts","../../context-dashboard/group-dashboard.guard.ts","../../context-dashboard/context-dashboard.module.ts","../../context-dashboard/cockpit-dashboard/cockpit-dashboard.module.ts","../../context-dashboard/device-info-dashboard/device-info-dashboard.component.ts","../../context-dashboard/device-info-dashboard/device-info-dashboard.component.html","../../context-dashboard/device-info-dashboard/device-info-dashboard.module.ts","../../context-dashboard/device-management-home-dashboard/device-management-home-dashboard.component.ts","../../context-dashboard/device-management-home-dashboard/device-management-home-dashboard.component.html","../../context-dashboard/device-management-home-dashboard/device-management-home-dashboard.module.ts","../../context-dashboard/report-dashboard/report-dashboard-list.component.ts","../../context-dashboard/report-dashboard/report-dashboard-list.component.html","../../context-dashboard/report-dashboard/report-dashboard.guard.ts","../../context-dashboard/report-dashboard/report-dashboard.module.ts","../../context-dashboard/c8y-ngx-components-context-dashboard.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { IManagedObject } from '@c8y/client';\nimport {\n Widget,\n DynamicComponentDefinition,\n Route,\n gettext,\n ViewContext\n} from '@c8y/ngx-components';\n\nexport const CONTEXT_DASHBOARD_CONFIG = new InjectionToken<any>('ContextDashboardConfig');\n\nexport interface ContextDashboardConfig {\n widgetFilter?: (component: DynamicComponentDefinition) => boolean;\n allowFullscreen?: boolean;\n routes?: Route[];\n}\n\nexport interface ContextWidgetConfig {\n /**\n * Settings that define how the default config component is\n * displayed. They are static and will not be saved.\n */\n settings?: {\n /**\n * Avoids to show the widget in the \"add widget\" modal\n */\n noNewWidgets?: boolean;\n ng1?: {\n options: {\n /**\n * Set this to false, to hide the device/group selector\n * @deprecated: This is currently only implemented in angularjs and will be exported to a separate component.\n */\n noDeviceTarget?: boolean;\n /**\n * Set this to false to only select devices\n * @deprecated: This is currently only implemented in angularjs and will be exported to a separate component.\n */\n groupsSelectable?: boolean;\n };\n /**\n * The context from the device selector.\n */\n context?: {\n id?: string;\n name?: string;\n };\n };\n /**\n * Additional settings passed to the configuration component.\n */\n [key: string]: any;\n };\n\n /**\n * Settings that are injected in any displaying component.\n */\n displaySettings?: {\n /**\n * If enabled the widget is bound to the global time context. You can listen to ngOnChanges() change detection\n * to react to changes on the context. When a more detailed configuration is needed, use the <c8y-widget-time-context>\n * component instead.\n */\n globalTimeContext?: boolean;\n };\n\n /**\n * Whatever should be added to the configuration when a widget is created.\n */\n config?: {\n /**\n * Any other information that should be stored here.\n */\n [key: string]: any;\n };\n /**\n * The selected device or group (note: naming is inconsistent as group was added later\n * but must stay for already implemented widgets)\n */\n device?: {\n id?: string | number;\n name?: string;\n [key: string]: any;\n };\n /**\n * Any other information that should be stored here.\n */\n [key: string]: any;\n}\n\nexport interface ContextDashboardManagedObject extends IManagedObject {\n c8y_Dashboard?: ContextDashboard;\n name?: string;\n}\n\nexport interface ContextDashboard {\n icon?: string;\n name?: string;\n priority?: number;\n deviceType?: boolean;\n deviceTypeValue?: string;\n isFrozen?: boolean;\n classes?: { [key: string]: boolean };\n widgetClasses?: { [key: string]: boolean };\n widgetMargin?: number;\n translateWidgetTitle?: boolean;\n global?: boolean;\n children?: {\n [id: string]: Widget;\n };\n globalRolesIds?: DashboardGlobalRoles;\n c8y_IsNavigatorNode?: object;\n description?: string;\n}\n\nexport enum ContextDashboardType {\n Device = 'device',\n DeviceType = 'type',\n Group = 'group',\n Named = 'name',\n Report = 'report'\n}\n\nexport const WIDGET_HEADER_CLASSES = [\n {\n label: gettext('Regular`style`'),\n class: 'panel-title-regular',\n description: gettext('The widget has no border between header and content.')\n },\n {\n label: gettext('Border`style`'),\n class: 'panel-title-border',\n description: gettext('The widget has a small separation border between header and content.')\n },\n {\n label: gettext('Overlay`style`'),\n class: 'panel-title-overlay',\n description: gettext('The widget content overlays the header.')\n },\n {\n label: gettext('Hidden`style`'),\n class: 'panel-title-hidden',\n description: gettext('The widget header is not shown.')\n }\n];\n\nexport const WIDGET_CONTENT_CLASSES = [\n {\n label: gettext('Match dashboard`style`'),\n class: 'panel-content-light',\n description: gettext('The widget appearance matches the dashboard appearance.')\n },\n {\n label: gettext('Light`style`'),\n class: 'panel-content-white',\n description: gettext('The widget has light appearance, that is, dark text on light background.')\n },\n {\n label: gettext('Dark`style`'),\n class: 'panel-content-dark',\n description: gettext('The widget has dark appearance, that is, light text on dark background.')\n },\n {\n label: gettext('Transparent`style`'),\n class: 'panel-content-transparent',\n description: gettext('The widget has no background.')\n },\n {\n label: gettext('Branded`style`'),\n class: 'panel-content-branded',\n description: gettext('The widget is styled with the main brand color.')\n }\n];\n\nexport const DASHBOARD_THEME_CLASSES = [\n {\n label: gettext('Match UI`theme`'),\n class: 'dashboard-theme-light',\n description: gettext('The dashboard appearance matches the UI appearance.')\n },\n {\n label: gettext('Light`theme`'),\n class: 'dashboard-theme-white',\n description: gettext(\n 'The dashboard has light appearance, that is, dark text on light background.'\n )\n },\n {\n label: gettext('Dark`theme`'),\n class: 'dashboard-theme-dark',\n description: gettext(\n 'The dashboard has dark appearance, that is, light text on dark background.'\n )\n },\n // {\n // label: gettext('Transparent`theme`'),\n // class: 'dashboard-theme-transparent',\n // description: gettext(\n // 'The dashboard is styled with a transparent background and therefore is border-less.'\n // )\n // },\n {\n label: gettext('Branded`theme`'),\n class: 'dashboard-theme-branded',\n description: gettext('The dashboard is styled using the brand palette.')\n }\n];\n\nexport const STYLING_CLASS_PREFIXES = ['dashboard-theme-', 'panel-title-', 'panel-content-'];\n\nexport interface DashboardCopyClipboard {\n dashboard: ContextDashboard;\n context: DashboardContext;\n}\n\nexport interface DashboardContext {\n context: ViewContext;\n contextData: Partial<IManagedObject>;\n}\n\nexport const ALL_GLOBAL_ROLES_SELECTED = 'all' as const;\nexport type DashboardGlobalRoles = number[] | typeof ALL_GLOBAL_ROLES_SELECTED;\n\nexport const PRODUCT_EXPERIENCE = {\n DASHBOARD: {\n EVENTS: {\n DASHBOARD_AVAILABILITY: 'dashboardAvailability'\n },\n COMPONENTS: {\n DASHBOARD_AVAILABILITY: 'dashboard-availability'\n },\n ACTIONS: {\n APPLY_GLOBAL_ROLES_CHANGES: 'applyGlobalRolesChanges'\n }\n }\n};\n","import { Injectable } from '@angular/core';\nimport { IManagedObject, InventoryService, QueriesUtil } from '@c8y/client';\nimport { NavigatorNode, NavigatorService } from '@c8y/ngx-components';\n\n@Injectable()\nexport class ReportDashboardService {\n private queriesUtil: QueriesUtil;\n constructor(\n private inventoryService: InventoryService,\n private navigatorService: NavigatorService\n ) {\n this.queriesUtil = new QueriesUtil();\n }\n\n listReports(options: { filter?: any; pageSize?: number } = {}) {\n let query = { __has: 'c8y_Report' };\n if (options.filter) {\n query = this.queriesUtil.addAndFilter(query, options.filter);\n }\n const filters = {\n query: this.queriesUtil.buildQuery(query),\n pageSize: options.pageSize || 50,\n withTotalPages: true\n };\n return this.inventoryService.list(filters);\n }\n\n createReport(reportCfg: Partial<IManagedObject>) {\n const report: Partial<IManagedObject> = {};\n Object.assign(report, reportCfg);\n Object.assign(report, { c8y_Report: {} });\n return this.inventoryService.create(report);\n }\n\n addReportNavigatorNode(report: IManagedObject): void {\n const node = new NavigatorNode({\n label: report.name,\n path: `reports/${report.id}`,\n icon: report.icon,\n priority: report.priority\n });\n this.navigatorService.add(node);\n }\n\n removeNavigatorNode(report: IManagedObject) {\n this.navigatorService.state.forEach(node => {\n if (node.path === `reports/${report.id}`) {\n this.navigatorService.remove(node);\n return;\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IManagedObject, InventoryService } from '@c8y/client';\nimport { NavigatorNode, NavigatorService, gettext } from '@c8y/ngx-components';\nimport { ReportDashboardService } from './report-dashboard.service';\n\nconst REPORTS_NAVIGATOR_NODE_PRIORITY = 40;\nexport const REPORT_DEFAULT_NAVIGATION_NODE_PRIORITY = 30;\n\n@Injectable({ providedIn: 'root' })\nexport class ReportDashboardNavigationFactory {\n loaded = false;\n\n constructor(\n private navigatorService: NavigatorService,\n private inventoryService: InventoryService,\n private reportDashboardService: ReportDashboardService\n ) {}\n\n async get() {\n if (!this.loaded) {\n this.loaded = true;\n\n this.navigatorService.add(\n new NavigatorNode({\n label: gettext('Reports'),\n path: 'reports',\n icon: 'c8y-reports',\n featureId: 'reports',\n priority: REPORTS_NAVIGATOR_NODE_PRIORITY\n })\n );\n\n const reports: IManagedObject[] = (\n await this.reportDashboardService.listReports({\n filter: { __has: 'c8y_IsNavigatorNode' },\n pageSize: 2000\n })\n ).data;\n reports.forEach(report => {\n const node = new NavigatorNode({\n label: report.name,\n path: `reports/${report.id}`,\n icon: report.icon,\n priority: report.priority,\n routerLinkExact: false\n });\n this.navigatorService.add(node);\n });\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Router } from '@angular/router';\nimport { IManagedObject, InventoryService, IResultList } from '@c8y/client';\nimport {\n AlertService,\n ContextData,\n DynamicComponentService,\n getActivatedRoute,\n gettext,\n ModalService,\n NavigatorNode,\n NavigatorService,\n Permissions,\n Status,\n Tab,\n TabsService,\n ViewContext,\n Widget\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n assign,\n pick,\n some,\n keys,\n keyBy,\n has,\n get,\n forEach,\n cloneDeep,\n reduce,\n set\n} from 'lodash-es';\nimport { combineLatest, from, Observable, of } from 'rxjs';\nimport {\n catchError,\n filter,\n map,\n mergeAll,\n mergeMap,\n tap,\n throwIfEmpty,\n toArray\n} from 'rxjs/operators';\nimport {\n ContextDashboard,\n ContextDashboardManagedObject,\n ContextDashboardType,\n DashboardContext,\n DashboardCopyClipboard,\n STYLING_CLASS_PREFIXES,\n ALL_GLOBAL_ROLES_SELECTED\n} from './context-dashboard.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ContextDashboardService {\n readonly REPORT_PARTIAL_NAME = 'report_';\n copyClipboard: DashboardCopyClipboard;\n private readonly INVENTORY_ROLES = ['ROLE_INVENTORY_ADMIN'];\n private cache = new Map<string, ContextDashboardManagedObject>();\n private readonly DEFAULT_PAGESIZE = 1000;\n private readonly FRAGMENT_NAME = 'c8y_Dashboard';\n private readonly DASHBOARD_ROUTE_PATH = 'dashboard';\n private readonly INDEX_SPLIT = '!';\n private _formDisabled = true;\n\n get formDisabled() {\n return this._formDisabled;\n }\n\n set formDisabled(value) {\n this._formDisabled = value;\n }\n\n constructor(\n private inventory: InventoryService,\n private tabs: TabsService,\n private modal: ModalService,\n private translateService: TranslateService,\n private router: Router,\n private navigator: NavigatorService,\n private permissions: Permissions,\n private alert: AlertService,\n private dynamicComponent: DynamicComponentService\n ) {}\n\n async create(dashboardCfg: ContextDashboard, context?: ContextData, name = '') {\n let id = '';\n let dashboardType;\n\n if (context) {\n id = context.contextData.id as string;\n dashboardType = this.getDashboardTypeFromViewContext(dashboardCfg, context);\n }\n if (name) {\n dashboardType = ContextDashboardType.Named;\n }\n\n const dashboard: Partial<IManagedObject> = {};\n assign(dashboard, { c8y_Dashboard: dashboardCfg });\n\n const value =\n dashboardType === ContextDashboardType.DeviceType ? dashboardCfg.deviceTypeValue : name || id;\n\n const fragmentKey = this.createFragmentKey(dashboardType, value);\n dashboard[fragmentKey] = {};\n\n if (this.shouldSetGlobal(dashboard, context)) {\n assign(dashboard, { c8y_Global: {} });\n }\n dashboard.name = dashboard.c8y_Dashboard.name;\n const { data } =\n dashboardType === ContextDashboardType.Group ||\n dashboardType === ContextDashboardType.Device ||\n (context && dashboardType === ContextDashboardType.Named)\n ? await this.inventory.childAdditionsCreate(dashboard, id)\n : await this.inventory.create(dashboard);\n return data as ContextDashboardManagedObject;\n }\n\n async detail(dashboardMO: ContextDashboardManagedObject) {\n const { data } = await this.inventory.detail(dashboardMO);\n this.cache.set(dashboardMO.id, data);\n return data;\n }\n\n async update(dashboard: ContextDashboardManagedObject) {\n dashboard.name = dashboard.c8y_Dashboard.name;\n const keepFragments = this.clean(pick(dashboard, [this.FRAGMENT_NAME, 'id', 'name']));\n keepFragments.c8y_Global = this.shouldSetGlobal(dashboard);\n await this.serializeWidgetConfigs(keepFragments);\n const { data } = await this.inventory.update(keepFragments);\n this.cache.set(dashboard.id, data);\n return data;\n }\n\n async delete(dashboard: ContextDashboardManagedObject, withConfirmation = true) {\n try {\n if (withConfirmation) {\n let msg: string = gettext(\n `You are about to delete the dashboard \"{{ dashboardName }}\". Do you want to proceed?`\n );\n if (this.isDeviceType(dashboard)) {\n msg = gettext(\n `You are about to delete the dashboard \"{{ dashboardName }}\" from all devices of the type \"{{ deviceType }}\".\n Do you want to proceed?`\n );\n }\n await this.modal.confirm(\n gettext('Delete dashboard'),\n this.translateService.instant(msg, {\n dashboardName: dashboard.c8y_Dashboard.name,\n deviceType: dashboard.c8y_Dashboard.deviceTypeValue\n }),\n Status.DANGER,\n {\n ok: gettext('Delete'),\n cancel: gettext('Cancel')\n }\n );\n }\n await this.inventory.delete(dashboard);\n const tabToRemove = Array.from(this.tabs.state).find(tab =>\n tab.path.endsWith(`${this.DASHBOARD_ROUTE_PATH}/${dashboard.id}`)\n );\n this.tabs.remove(tabToRemove);\n this.tabs.refresh();\n } catch (ex) {\n // intended empty\n }\n }\n\n activateDashboards(\n route: ActivatedRouteSnapshot,\n types: ContextDashboardType[]\n ): Observable<boolean | Tab[]> {\n const { dashboardId } = route.params;\n if (dashboardId) {\n return this.getDashboard$(dashboardId, types, route.parent.data.contextData).pipe(\n tap(dashboard => {\n route.data = { dashboard };\n }),\n map(() => true),\n catchError(() => {\n return of(false);\n })\n );\n }\n\n return this.getTabs$(route.data.contextData, types);\n }\n\n getNamedDashboardOrCreate(name: string, defaultWidgets: Widget[], context?: ContextData) {\n const children = this.mapWidgets(defaultWidgets);\n return this.getDashboard$(name, [ContextDashboardType.Named]).pipe(\n throwIfEmpty(),\n catchError(() =>\n from(\n this.create(\n {\n children,\n widgetClasses: { 'dashboard-theme-light': true, 'panel-title-regular': true }\n },\n context,\n name\n )\n )\n )\n );\n }\n\n async refreshTabs(dashboardMO: ContextDashboardManagedObject) {\n if (!this.isNamed(dashboardMO)) {\n const tabToUpdate = Array.from(this.tabs.state).find(tab =>\n tab.path.endsWith(`${this.DASHBOARD_ROUTE_PATH}/${dashboardMO.id}`)\n );\n\n const data = await this.detail(dashboardMO);\n if (tabToUpdate) {\n const { icon, priority, name } = data.c8y_Dashboard;\n tabToUpdate.icon = icon;\n tabToUpdate.priority = priority;\n tabToUpdate.label = name;\n }\n this.tabs.refresh();\n }\n }\n\n updateNavigatorItem(mo: IManagedObject) {\n this.navigator.state.forEach(node => {\n if (node.path === `reports/${mo.id}`) {\n this.navigator.remove(node);\n }\n });\n if (mo.c8y_IsNavigatorNode) {\n const nodeToAdd = new NavigatorNode({\n label: mo.name,\n path: `reports/${mo.id}`,\n icon: mo.icon,\n priority: mo.priority\n });\n this.navigator.add(nodeToAdd);\n }\n }\n\n async navigateToDashboard(dashboardMO: ContextDashboardManagedObject) {\n if (/dashboard/.test(this.router.url)) {\n this.router.navigate(['..', dashboardMO.id], {\n relativeTo: getActivatedRoute(this.router)\n });\n } else {\n this.router.navigate(['..', this.DASHBOARD_ROUTE_PATH, dashboardMO.id], {\n relativeTo: getActivatedRoute(this.router)\n });\n }\n }\n\n canEditDashboard(mo) {\n return this.permissions.canEdit(['ROLE_INVENTORY_ADMIN', 'ROLE_INVENTORY_CREATE'], mo);\n }\n\n isNamed(dashboard: Partial<ContextDashboardManagedObject>) {\n return some(keys(dashboard), prop =>\n new RegExp(\n `^${this.FRAGMENT_NAME}${this.INDEX_SPLIT}${ContextDashboardType.Named}${this.INDEX_SPLIT}`\n ).test(prop)\n );\n }\n\n isReport(dashboard: Partial<ContextDashboardManagedObject>) {\n return some(keys(dashboard), prop =>\n new RegExp(\n `^${this.FRAGMENT_NAME}${this.INDEX_SPLIT}${ContextDashboardType.Named}${this.INDEX_SPLIT}${this.REPORT_PARTIAL_NAME}`\n ).test(prop)\n );\n }\n\n isDeviceType(dashboard: Partial<ContextDashboardManagedObject>) {\n return some(keys(dashboard), prop =>\n new RegExp(\n `^${this.FRAGMENT_NAME}${this.INDEX_SPLIT}${ContextDashboardType.DeviceType}${this.INDEX_SPLIT}`\n ).test(prop)\n );\n }\n\n isDeviceDashboard(dashboard: Partial<ContextDashboardManagedObject>): boolean {\n return some(keys(dashboard), prop =>\n new RegExp(\n `^${this.FRAGMENT_NAME}${this.INDEX_SPLIT}${ContextDashboardType.Device}${this.INDEX_SPLIT}`\n ).test(prop)\n );\n }\n\n isGroupDashboard(dashboard: Partial<ContextDashboardManagedObject>): boolean {\n return some(keys(dashboard), prop =>\n new RegExp(\n `^${this.FRAGMENT_NAME}${this.INDEX_SPLIT}${ContextDashboardType.Group}${this.INDEX_SPLIT}`\n ).test(prop)\n );\n }\n\n getFilteredDashboardStyles(styleList: string[]) {\n return styleList.filter(c =>\n STYLING_CLASS_PREFIXES.some(classPrefix => c.startsWith(classPrefix))\n );\n }\n\n getStyling(styleList, styleName, defaultValue) {\n const styling = styleList.find(\n style => style && new RegExp(`-${styleName}$`, 'i').test(style.class)\n );\n return styling ? styling.class : defaultValue;\n }\n\n mapWidgets(widgets: Widget[]) {\n return keyBy(\n widgets.map(widget => {\n widget.id = String(Math.random()).substr(2);\n return widget;\n }),\n 'id'\n );\n }\n\n getDashboard$(dashboardIdOrName, dashboardType: ContextDashboardType[], mo?: IManagedObject) {\n const cache = this.cache.get(dashboardIdOrName);\n\n const dashboards = mo\n ? this.getContextDashboards(mo, dashboardType)\n : [this.getNamedDashboard(dashboardIdOrName)];\n\n const cacheRefresh = this.getContextDashboards$(dashboards).pipe(\n tap(dashboard => this.cacheDashboard(dashboard)),\n filter(\n dashboard =>\n dashboard.id === dashboardIdOrName ||\n has(\n dashboard,\n `${this.FRAGMENT_NAME}${this.INDEX_SPLIT}${ContextDashboardType.Named}${this.INDEX_SPLIT}${dashboardIdOrName}`\n )\n )\n );\n return cache ? of(cache) : cacheRefresh;\n }\n\n async pasteDashboard(newContext: DashboardContext): Promise<void> {\n if (this.copyClipboard) {\n if (this.canPasteDashboard(this.copyClipboard, newContext.context)) {\n const dashboardToPaste = this.createContextDashboardCopy(\n this.copyClipboard.dashboard,\n newContext.contextData,\n this.copyClipboard.context.contextData\n );\n const dashboard = await this.create(this.clean(dashboardToPaste), newContext);\n this.copyClipboard = undefined;\n this.navigateToDashboard(dashboard);\n }\n }\n }\n\n private async serializeWidgetConfigs(dashboard: ContextDashboardManagedObject): Promise<void> {\n const children = cloneDeep(dashboard.c8y_Dashboard.children);\n if (!children) {\n return;\n }\n const configs = Object.values(children);\n const details = configs.map(({ componentId, config }) => ({ componentId, config }));\n const results = await this.dynamicComponent.serializeConfigs(details);\n results.forEach((result, index) => {\n Object.entries(result).forEach(([key, value]) => {\n set(details[index].config, key, value);\n });\n });\n dashboard.c8y_Dashboard.children = children;\n }\n\n private canPasteDashboard(\n copyClipboard: DashboardCopyClipboard,\n currentContext: ViewContext\n ): boolean {\n const clipboardViewContext = copyClipboard.context.context;\n\n if (currentContext !== clipboardViewContext) {\n if (clipboardViewContext === ViewContext.Device) {\n this.alert.warning(gettext('Device dashboards can only be copied into a device.'));\n } else if (clipboardViewContext === ViewContext.Group) {\n this.alert.warning(gettext('Group dashboards can only be copied into a group.'));\n }\n return false;\n }\n return true;\n }\n\n private createContextDashboardCopy(\n dash: ContextDashboard,\n newContext: Partial<IManagedObject>,\n oldContext: Partial<IManagedObject>\n ): ContextDashboard {\n const children = reduce(\n dash.children,\n (_children, child) => {\n const { id } = child;\n const cfg = child.config;\n const propertiesToCopy = {\n device: device => this.replaceContextInObj(device, newContext, oldContext),\n datapoints: dataPoints =>\n this.replaceContextInDataPoints(dataPoints, newContext, oldContext),\n dataPoints: dataPoints =>\n this.replaceContextInDataPoints(dataPoints, newContext, oldContext),\n datapointsGauge: dataPoints =>\n this.replaceContextInDataPoints(dataPoints, newContext, oldContext),\n datapointsLabels: dataPoints =>\n this.replaceContextInDataPoints(dataPoints, newContext, oldContext)\n };\n\n if (cfg) {\n this.copyProperties(cfg, propertiesToCopy);\n if (cfg.options) {\n this.copyProperties(cfg.options, propertiesToCopy);\n }\n }\n\n _children[id] = cloneDeep(child);\n return _children;\n },\n {}\n );\n\n dash.children = children;\n return dash;\n }\n\n private copyProperties(obj, propertiesToCopy) {\n forEach(propertiesToCopy, (copyFn, property) => {\n if (obj[property]) {\n obj[property] = copyFn(obj[property]);\n }\n });\n }\n\n private replaceContextInDataPoints(\n dataPoints,\n newContext: Partial<IManagedObject>,\n oldContext: Partial<IManagedObject>\n ) {\n dataPoints.forEach(dp => {\n dp.__target = this.replaceContextInObj(dp.__target, newContext, oldContext);\n });\n return dataPoints;\n }\n\n private replaceContextInObj(\n obj: Partial<IManagedObject>,\n newContext: Partial<IManagedObject>,\n oldContext: Partial<IManagedObject>\n ) {\n if (obj && obj.id === oldContext.id) {\n Object.assign(obj, pick(newContext, ['id', 'name']));\n }\n return obj;\n }\n\n private getTabs$(mo: ContextDashboardManagedObject, dashboardType: ContextDashboardType[]) {\n const dashboards = this.getContextDashboards(mo, dashboardType);\n\n return this.getContextDashboards$(dashboards).pipe(\n mergeMap(dashboard => this.verifyDashboardAvailability$(dashboard)),\n mergeMap(([dashboard]) => this.removeDashboardMoProperty(dashboard)),\n tap(dashboard => this.cacheDashboard(dashboard)),\n map(dashboard => this.createDashboardTab(dashboard)),\n toArray()\n );\n }\n\n private verifyDashboardAvailability$(dashboard: ContextDashboardManagedObject) {\n const globalRolesIds = dashboard?.c8y_Dashboard?.globalRolesIds;\n const canEdit = from(\n this.permissions.canEdit(this.INVENTORY_ROLES, dashboard, { skipRequestCheck: true })\n );\n const hasAnyGlobalRole =\n !globalRolesIds || globalRolesIds === ALL_GLOBAL_ROLES_SELECTED\n ? of(true)\n : of(this.permissions.hasAnyGlobalRole(globalRolesIds));\n\n return combineLatest([of(dashboard), canEdit, hasAnyGlobalRole]).pipe(\n filter(([, canEdit, hasAnyGlobalRole]) => canEdit || hasAnyGlobalRole)\n );\n }\n\n private getContextDashboards$(requests: Array<Promise<IResultList<IManagedObject>>>) {\n return from(requests).pipe(\n mergeAll(),\n mergeMap(response => response.data as ContextDashboardManagedObject[])\n );\n }\n\n /**\n * Cleans already corrupted dashboards from dashboardMo property.\n * Added to fix dashboards on the cloud instance (eu-latest).\n * @deprecated This is going to be removed after 1007.7.0.\n */\n private async removeDashboardMoProperty(\n dashboard: ContextDashboardManagedObject\n ): Promise<ContextDashboardManagedObject> {\n const dashboardCopy = cloneDeep(dashboard);\n const children = get(dashboardCopy, 'c8y_Dashboard.children');\n let updateDashboard = false;\n\n forEach(children, child => {\n if (get(child, 'componentTransformConfigWithContext')) {\n delete child.componentTransformConfigWithContext;\n updateDashboard = true;\n }\n if (get(child, 'config.dashboardMo')) {\n delete child.config.dashboardMo;\n updateDashboard = true;\n }\n });\n\n if (updateDashboard) {\n await this.update(dashboardCopy);\n }\n return dashboardCopy;\n }\n\n private cacheDashboard(dashboard: ContextDashboardManagedObject) {\n this.cache.set(dashboard.id, dashboard);\n }\n\n private createDashboardTab(dashboard: ContextDashboardManagedObject) {\n const { c8y_Dashboard: _dashboard, id } = dashboard;\n return {\n icon: _dashboard.icon,\n path: `${this.DASHBOARD_ROUTE_PATH}/${id}`,\n label: _dashboard.name,\n priority: _dashboard.priority,\n hide: this.isReport(dashboard)\n } as Tab;\n }\n\n private clean(dashboard) {\n const jsonString = JSON.stringify(dashboard, (key, value) => {\n if (key === '$$hashKey' || key === 'klasses') {\n return undefined;\n }\n\n return value;\n });\n return JSON.parse(jsonString);\n }\n\n private getNamedDashboard(name: string) {\n return this.inventory.list({\n fragmentType: `${this.FRAGMENT_NAME}${this.INDEX_SPLIT}${ContextDashboardType.Named}${this.INDEX_SPLIT}${name}`,\n pageSize: 1\n });\n }\n\n private getContextDashboards(mo: IManagedObject, dashboardType: ContextDashboardType[]) {\n return dashboardType.map((type: ContextDashboardType) =>\n this.inventory.list({\n fragmentType: this.createDashboardFragment(mo, type),\n pageSize: this.DEFAULT_PAGESIZE\n })\n );\n }\n\n private createDashboardFragment(mo: IManagedObject, type: ContextDashboardType) {\n let value;\n if (mo.c8y_Report) {\n value = `${this.REPORT_PARTIAL_NAME}${mo.id}`;\n } else {\n value = type === ContextDashboardType.DeviceType ? mo.type : mo.id;\n }\n return `${this.FRAGMENT_NAME}${this.INDEX_SPLIT}${type}${this.INDEX_SPLIT}${value}`;\n }\n\n private getDashboardTypeFromViewContext(dashboardCfg, context) {\n let dashboardType;\n if (context.context === ViewContext.Device) {\n dashboardType = dashboardCfg.deviceType\n ? ContextDashboardType.DeviceType\n : ContextDashboardType.Device;\n }\n if (context.context === ViewContext.Group) {\n dashboardType = ContextDashboardType.Group;\n }\n return dashboardType;\n }\n\n private createFragmentKey(contextDashboardType: ContextDashboardType, value: string) {\n return [this.FRAGMENT_NAME, contextDashboardType, value].join(this.INDEX_SPLIT);\n }\n\n private shouldSetGlobal(dashboard: Partial<ContextDashboardManagedObject>, context?) {\n if (\n (!context && this.isNamed(dashboard) && !this.isReport(dashboard)) ||\n this.isDeviceType(dashboard)\n ) {\n return {};\n }\n return null;\n }\n}\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { DASHBOARD_THEME_CLASSES, WIDGET_HEADER_CLASSES } from './context-dashboard.model';\nimport { ControlContainer, NgForm } from '@angular/forms';\n\n@Component({\n selector: 'c8y-appearance-settings',\n templateUrl: './appearance-settings.component.html',\n viewProviders: [{ provide: ControlContainer, useExisting: NgForm }]\n})\nexport class AppearanceSettingsComponent {\n @Input()\n themeClass = 'dashboard-theme-light';\n @Input()\n headerClass = 'panel-title-regular';\n @Input()\n defaultThemeClass: string;\n @Input()\n defaultHeaderClass: string;\n @Output()\n themeClassChange = new EventEmitter<string>();\n @Output()\n headerClassChange = new EventEmitter<string>();\n\n @Input()\n possibleStylingTheme = DASHBOARD_THEME_CLASSES;\n\n @Input()\n possibleStylingHeader = WIDGET_HEADER_CLASSES;\n\n themeClassClick(value) {\n value = this.resetToDefault(value, this.themeClass, this.defaultThemeClass);\n this.themeClass = value;\n this.themeClassChange.emit(value);\n }\n\n headerClassClick(value) {\n value = this.resetToDefault(value, this.headerClass, this.defaultHeaderClass);\n this.headerClass = value;\n this.headerClassChange.emit(value);\n }\n\n private resetToDefault(value: string, compareTo: string, defaultValue: string) {\n if (defaultValue && value === compareTo) {\n value = defaultValue;\n }\n return value;\n }\n}\n","<div class=\"legend form-block\">\n <span translate>Layout</span>\n</div>\n<div class=\"row\">\n <div class=\"col-sm-6 m-b-32\">\n <label translate>Theme</label>\n <ul class=\"list-group\">\n <li\n class=\"list-group-item d-flex a-i-center p-l-0 p-r-0 fit-w\"\n *ngFor=\"let themeClassItem of possibleStylingTheme; let i = index\"\n >\n <div class=\"list-item-checkbox\" style=\"max-width: calc(100% - 24px)\">\n <label class=\"c8y-radio\">\n <input\n type=\"radio\"\n [id]=\"'groupradiocontentclass' + i\"\n name=\"content\"\n [value]=\"themeClassItem.class\"\n [ngModel]=\"themeClass\"\n (click)=\"themeClassClick(themeClassItem.class)\"\n />\n <span></span>\n <span\n class=\"text-truncate\"\n title=\"{{ themeClassItem.label | translate }}{{\n themeClassItem.class === defaultThemeClass\n ? ' | ' + ('Dashboard default' | translate)\n : ''\n }}\"\n >\n <span>{{ themeClassItem.label | translate }}</span>\n <br />\n <small\n *ngIf=\"themeClassItem.class === defaultThemeClass\"\n class=\"text-muted\"\n translate\n >\n Dashboard default\n </small>\n </span>\n </label>\n </div>\n\n <button\n class=\"btn-help btn-help--sm m-l-auto\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ themeClassItem.description | translate }}\"\n placement=\"top\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </li>\n </ul>\n </div>\n <div class=\"col-sm-6\">\n <label translate>Widget header style</label>\n <ul class=\"list-group\">\n <li\n class=\"list-group-item d-flex a-i-center p-l-0 p-r-0\"\n *ngFor=\"let headerClassItem of possibleStylingHeader; let i = index\"\n >\n <div class=\"list-item-checkbox\" style=\"max-width: calc(100% - 24px)\">\n <label class=\"c8y-radio\">\n <input\n type=\"radio\"\n [id]=\"'groupradioheaderclass' + i\"\n name=\"header\"\n [value]=\"headerClassItem.class\"\n [ngModel]=\"headerClass\"\n (click)=\"headerClassClick(headerClassItem.class)\"\n />\n <span></span>\n <span\n class=\"text-truncate\"\n title=\"{{ headerClassItem.label | translate }}{{\n headerClassItem.class === defaultHeaderClass\n ? ' | ' + ('Dashboard default' | translate)\n : ''\n }}\"\n >\n <span>{{ headerClassItem.label | translate }}</span>\n <br />\n <small\n *ngIf=\"headerClassItem.class === defaultHeaderClass\"\n class=\"text-muted\"\n translate\n >\n Dashboard default\n </small>\n </span>\n </label>\n </div>\n <button\n class=\"btn-help btn-help--sm m-l-auto\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ headerClassItem.description | translate }}\"\n placement=\"top\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </li>\n </ul>\n </div>\n</div>\n","import { Input, Component } from '@angular/core';\n\n@Component({\n selector: 'c8y-widget-preview',\n templateUrl: './widget-preview.component.html'\n})\nexport class WidgetPreviewComponent {\n @Input()\n previewClasses: { [key: string]: boolean } = {\n 'dashboard-theme-light': true,\n 'panel-title-regular': true\n };\n\n @Input()\n tab: { name: string; icon: string };\n}\n","<div class=\"legend form-block\" translate>Preview</div>\n<label *ngIf=\"tab\" translate>Tab and layout</label>\n<label *ngIf=\"!tab\" translate>Layout</label>\n<div class=\"dashboard-preview-slot\" [ngClass]=\"previewClasses\">\n <div\n class=\"page-tabs page-tabs-horizontal navigator-open p-absolute overflow-hidden\"\n style=\"left: 0; margin: 0 15px\"\n *ngIf=\"tab\"\n >\n <div class=\"tabContainer hidden-xs\">\n <ul role=\"menu\" class=\"nav nav-tabs nav-tabsc8y\">\n <li role=\"menuitem\" class=\"active\" style=\"left: 16px\">\n <a routerlinkactive=\"\" title=\"{{ tab.name }}\">\n <i class=\"text-primary\" [c8yIcon]=\"tab.icon\"></i>\n <span class=\"txt\">{{ tab.name }}</span>\n </a>\n </li>\n </ul>\n </div>\n <div class=\"visible-xs mobile-tabs\"></div>\n </div>\n <div [ngClass]=\"{ 'm-t-64': !!tab }\">\n <div class=\"card card-dashboard\" style=\"height: 300px\">\n <div class=\"card-header-actions\" style=\"z-index: 8\">\n <div class=\"card-title\">\n <span translate>Widget title</span>\n </div>\n <div class=\"header-actions\">\n <div class=\"optionsBtn dropdown\">\n <button\n type=\"button\"\n title=\"{{ 'Settings' | translate }}\"\n (click)=\"(false)\"\n class=\"btn btn-dot dropdown-toggle c8y-dropdown\"\n aria-haspopup=\"true\"\n >\n <i c8yIcon=\"cog\"></i>\n </button>\n </div>\n </div>\n </div>\n <div class=\"card-inner-scroll p-t-16\">\n <p translate>Widget example content.</p>\n </div>\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IUserGroup, UserGroupService } from '@c8y/client';\nimport { GainsightService, Item } from '@c8y/ngx-components';\nimport {\n DashboardGlobalRoles,\n ALL_GLOBAL_ROLES_SELECTED,\n PRODUCT_EXPERIENCE\n} from './context-dashboard.model';\n\n@Component({\n selector: 'c8y-dashboard-availability',\n templateUrl: './dashboard-availability.component.html'\n})\nexport class DashboardAvailabilityComponent implements OnInit {\n /**\n * Ids of global roles assigned to the dashboard or a string \"all\" indicating the selection of all global roles.\n * The value undefined is treated as equivalent to 'all'.\n */\n @Input()\n get globalRolesIds(): DashboardGlobalRoles {\n return this._globalRolesIds;\n }\n set globalRolesIds(ids: DashboardGlobalRoles) {\n if (!ids || ids === ALL_GLOBAL_ROLES_SELECTED) {\n this._globalRolesIds = ALL_GLOBAL_ROLES_SELECTED;\n return;\n }\n this._globalRolesIds = [...ids];\n }\n @Output() globalRolesIdsChange = new EventEmitter<DashboardGlobalRoles>();\n globalRolesItems: Item[] = [];\n globalRolesItemsSelected: Item[] = [];\n private globalRoles: IUserGroup[] = [];\n private PAGE_SIZE = 100;\n private _globalRolesIds: DashboardGlobalRoles;\n\n constructor(\n private userGroupService: UserGroupService,\n private gainsightService: GainsightService\n ) {}\n\n async ngOnInit() {\n this.globalRoles = await this.getGlobalRoles();\n this.globalRolesItems = this.mapGlobalRolesToItems();\n this.globalRolesItemsSelected = this.getSelectedGlobalRolesItems();\n }\n\n onSelected(items: Item[]) {\n if (!items || !Array.isArray(items)) {\n return;\n }\n\n const allItemsSelected = items.length === this.globalRolesItems.length;\n this.globalRolesItemsSelected = items;\n\n if (allItemsSelected) {\n this.globalRolesIdsChange.emit(ALL_GLOBAL_ROLES_SELECTED);\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.DASHBOARD_AVAILABILITY,\n {\n component: PRODUCT_EXPERIENCE.DASHBOARD.COMPONENTS.DASHBOARD_AVAILABILITY,\n action: PRODUCT_EXPERIENCE.DASHBOARD.ACTIONS.APPLY_GLOBAL_ROLES_CHANGES,\n globalRoles: ALL_GLOBAL_ROLES_SELECTED\n }\n );\n } else {\n const selectedGlobalRolesIds = items.map(i => i.id);\n this.globalRolesIdsChange.emit([...selectedGlobalRolesIds]);\n\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.DASHBOARD_AVAILABILITY,\n {\n component: PRODUCT_EXPERIENCE.DASHBOARD.COMPONENTS.DASHBOARD_AVAILABILITY,\n action: PRODUCT_EXPERIENCE.DASHBOARD.ACTIONS.APPLY_GLOBAL_ROLES_CHANGES,\n globalRoles: selectedGlobalRolesIds?.sort()?.join()\n }\n );\n }\n }\n\n private async getGlobalRoles() {\n return (await this.userGroupService.list({ pageSize: this.PAGE_SIZE })).data;\n }\n\n private mapGlobalRolesToItems(): Item[] {\n return this.globalRoles.map(({ name, id }) => ({\n name,\n id\n }));\n }\n\n private getSelectedGlobalRolesItems(): Item[] {\n if (!this.globalRolesIds || this.globalRolesIds === ALL_GLOBAL_ROLES_SELECTED) {\n return this.globalRolesItems;\n }\n return this.globalRolesIds\n .map(globalRoleId => this.globalRolesItems.find(gR => gR.id === globalRoleId))\n .filter(Boolean);\n }\n}\n","<c8y-form-group class=\"p-b-24 m-b-0\">\n <div class=\"legend form-block\">\n <span>{{ 'Availability' | translate }}</span>\n </div>\n <label for=\"availability\">\n <span class=\"m-r-4\" id=\"availability\">\n {{ 'Global roles' | translate }}\n </span>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Select the global roles for which the dashboard will be available' | translate\n }}\"\n triggers=\"focus\"\n placement=\"right\"\n container=\"body\"\n >\n </button>\n </label>\n <c8y-select\n style=\"width: 180px\"\n [items]=\"globalRolesItems\"\n [selected]=\"globalRolesItemsSelected\"\n (onChange)=\"onSelected($event)\"\n ></c8y-select>\n</c8y-form-group>\n","import { Component, Inject, ViewChild } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport {\n gettext,\n ICON_LIST,\n NavigatorNode,\n NavigatorService,\n Permissions\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { clone } from 'lodash-es';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Observable } from 'rxjs';\nimport {\n ContextDashboard,\n DASHBOARD_THEME_CLASSES,\n WIDGET_HEADER_CLASSES,\n DashboardGlobalRoles\n} from './context-dashboard.model';\nimport { ContextDashboardService } from './context-dashboard.service';\nimport { REPORT_DEFAULT_NAVIGATION_NODE_PRIORITY } from './report-dashboard/report-dashboard-navigation.factory';\n\n@Component({\n selector: 'c8y-dashboard-detail',\n templateUrl: './dashboard-detail.component.html'\n})\nexport class DashboardDetailComponent {\n @ViewChild('dashboardDetailForm', { static: true }) dashboardDetailForm: NgForm;\n dashboard: ContextDashboard;\n currentDashboard: ContextDashboard;\n dashboardName: string;\n isReport: boolean;\n deviceType: string;\n isNamedDashboard: boolean;\n isDeviceType: boolean;\n icons: string[];\n filteredIcons: string[];\n styling = {\n themeClass: 'dashboard-theme-light',\n headerClass: 'panel-title-regular'\n };\n possibleStyling = { DASHBOARD_THEME_CLASSES, WIDGET_HEADER_CLASSES };\n title: string;\n namePlaceholder: string;\n navigatorNodes$: Observable<NavigatorNode[]>;\n result: Promise<ContextDashboard> = new Promise((resolve, reject) => {\n this._save = resolve;\n this._cancel = reject;\n });\n globalRolesIds: DashboardGlobalRoles;\n\n applyToDevicesOfTypePermitted: boolean;\n get applyToDevicesOfTypeTitle(): string {\n const text = this.applyToDevicesOfTypePermitted\n ? gettext('Apply dashboard to all devices of type {{ type }}')\n : gettext('Apply dashboard to all devices of type {{ type }} (permission required)');\n return this.translateService.instant(text, { type: this.dashboard.deviceTypeValue });\n }\n\n readonly DEFAULT_DASHBOARD_MARGIN = 12;\n readonly DEFAULT_DASHBOARD_ICON = 'th';\n readonly DEFAULT_DASHBOARD_PRIORITY = 10000;\n\n private _save;\n private _cancel;\n\n constructor(\n private modal: BsModalRef,\n @Inject(ICON_LIST) iconList: string[],\n private contextDashboardService: ContextDashboardService,\n private navigatorService: NavigatorService,\n private permissionsService: Permissions,\n private translateService: TranslateService\n ) {\n this.icons = iconList;\n this.filteredIcons = iconList;\n }\n\n ngAfterContentInit(): void {\n const defaultDashboardCfg = {\n name: this.translateService.instant(this.isReport ? gettext('Report') : gettext('Dashboard')),\n priority: this.isReport\n ? REPORT_DEFAULT_NAVIGATION_NODE_PRIORITY\n : this.DEFAULT_DASHBOARD_PRIORITY,\n icon: this.DEFAULT_DASHBOARD_ICON,\n deviceTypeValue: this.deviceType\n };\n\n if (this.dashboard) {\n this.currentDashboard = clone(this.dashboard);\n this.dashboardName = this.currentDashboard.name;\n this.setDashboardStyle();\n } else {\n this.dashboard = defaultDashboardCfg;\n this.dashboardName = this.dashboard.name;\n this.dashboardDetailForm.form.markAsDirty();\n }\n this.setTitle();\n this.setupApplyToDevicesOfTypeCheckbox();\n this.navigatorNodes$ = this.navigatorService.items$;\n this.namePlaceholder = this.isReport ? gettext('e.g. My report') : gettext('e.g. My dashboard');\n this.globalRolesIds = this.dashboard.globalRolesIds;\n }\n\n setTitle() {\n if (!this.currentDashboard) {\n this.title = this.isReport ? gettext('Add report') : gettext('Add dashboard');\n } else {\n this.title = this.isReport ? gettext('Edit report') : gettext('Edit dashboard');\n }\n }\n\n setupApplyToDevicesOfTypeCheckbox() {\n const rolesToCheck = ['ROLE_INVENTORY_CREATE', 'ROLE_INVENTORY_ADMIN'];\n this.applyToDevicesOfTypePermitted = this.permissionsService.hasAnyRole(rolesToCheck);\n }\n\n save() {\n this.dashboard.globalRolesIds = this.globalRolesIds;\n this.dashboard.name = this.dashboardName;\n this.dashboard.classes = { [this.styling.themeClass]: true };\n this.dashboard.widgetClasses = { [this.styling.headerClass]: true };\n this.dashboard.c8y_IsNavigatorNode = this.dashboard.c8y_IsNavigatorNode\n ? {}\n : this.currentDashboard\n ? null\n : undefined;\n this._save(this.dashboard);\n }\n\n close() {\n this._cancel();\n this.modal.hide();\n }\n\n getDashboardPreviewStyle() {\n const cssClasses = {};\n cssClasses[this.styling.headerClass] = true;\n cssClasses[this.styling.themeClass] = true;\n return cssClasses;\n }\n\n selectIcon(icon) {\n this.dashboard.icon = icon;\n this.dashboardDetailForm.form.markAsDirty();\n }\n\n updateFiltered(term: string) {\n if (term) {\n const search = new RegExp(term, 'i');\n this.filteredIcons = this.icons.filter(val => search.test(val));\n } else {\n this.filteredIcons = this.icons;\n }\n }\n\n private setDashboardStyle() {\n const allClasses = {\n ...this.dashboard.classes,\n ...this.dashboard.widgetClasses\n };\n\n const styles = Object.keys(allClasses).map(c => c.split('-').pop());\n styles.forEach(styleName => {\n this.styling.themeClass = this.contextDashboardService.getStyling(\n DASHBOARD_THEME_CLASSES,\n styleName,\n this.styling.themeClass\n );\n this.styling.headerClass = this.contextDashboardService.getStyling(\n WIDGET_HEADER_CLASSES,\n styleName,\n this.styling.headerClass\n );\n });\n }\n}\n","<div class=\"viewport-modal\">\n <div class=\"modal-header separator-bottom\">\n <h3 id=\"modal-title\">{{ title | translate }}</h3>\n </div>\n\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <div class=\"p-l-24 p-r-24\">\n <form #dashboardDetailForm=\"ngForm\" class=\"d-contents\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div *ngIf=\"!isNamedDashboard || isReport\">\n <div class=\"legend form-block\">\n <span>{{ 'General' | translate }}</span>\n </div>\n <div class=\"d-flex\">\n <c8y-form-group class=\"m-r-16\">\n <label class=\"d-block\">{{ 'Icon' | translate }}</label>\n <div dropdown class=\"dropdown\">\n <button\n title=\"{{ 'Icon' | translate }}\"\n type=\"button\"\n class=\"btn-default btn btn-gray\"\n aria-haspopup=\"true\"\n dropdownToggle\n >\n <i c8yIcon=\"{{ dashboard.icon }}\"></i>\n <span class=\"caret\"></span>\n </button>\n <ul\n *dropdownMenu\n class=\"dropdown-menu modal-inner-scroll dropdown-menu-grid-4 m-l-0\"\n style=\"max-height: 250px\"\n >\n <ng-container *ngFor=\"let icon of filteredIcons\">\n <li (click)=\"selectIcon(icon)\">\n <a\n class=\"interact\"\n title=\"{{ icon }}\"\n [ngClass]=\"{ active: dashboard.icon === icon }\"\n >\n <i class=\"icon\" [c8yIcon]=\"icon\"></i>\n </a>\n </li>\n </ng-container>\n </ul>\n </div>\n </c8y-form-group>\n <c8y-form-group class=\"flex-grow\">\n <label>\n <span class=\"m-r-4\" id=\"menuLabel\">{{ 'Menu label' | translate }}</span>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Menu label to display in submenu when dashboard is attached' | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n <input\n id=\"menuLabel\"\n type=\"text\"\n class=\"form-control\"\n name=\"name\"\n [(ngModel)]=\"dashboardName\"\n placeholder=\"{{ namePlaceholder | translate }}\"\n maxlength=\"512\"\n required\n />\n </c8y-form-group>\n </div>\n <c8y-form-group *ngIf=\"isReport\">\n <label id=\"description\">{{ 'Description ' | translate }}</label>\n <textarea\n aria-labelledby=\"description\"\n class=\"form-control\"\n rows=\"2\"\n name=\"description\"\n [(ngModel)]=\"dashboard.description\"\n ></textarea>\n </c8y-form-group>\n <div class=\"row\">\n <div class=\"col-sm-6\" *ngIf=\"!isReport\">\n <c8y-form-group>\n <label for=\"positionNav\">\n <span class=\"m-r-4\" id=\"positionNav\">\n {{ 'Position in navigation' | translate }}\n </span>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Position in navigation menu (10000 first, -10000 last)' | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n <input\n id=\"positionNav\"\n type=\"number\"\n class=\"form-control\"\n name=\"priority\"\n [(ngModel)]=\"dashboard.priority\"\n min=\"-10000\"\n max=\"10000\"\n placeholder=\"{{ 'e.g.' | translate }} 500\"\n required\n />\n </c8y-form-group>\n </div>\n\n <div class=\"col-sm-6\" *ngIf=\"isReport\">\n <label translate>Navigator menu item</label>\n <c8y-form-group>\n <label title=\"{{ 'Show in navigator' | translate }}\" class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n name=\"isNavigatorNode\"\n [(ngModel)]=\"!!dashboard.c8y_IsNavigatorNode\"\n />\n <span></span>\n <span>{{ 'Show in navigator' | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\" *ngIf=\"isReport\">\n <c8y-form-group>\n <label for=\"position\">\n <span class=\"m-r-4\">{{ 'Position in navigator' | translate }}</span>\n <ng-template #positionInNavPop>\n <span>\n {{\n 'Position in navigator (10001 first, -10000 last).' | translate\n }}&nbsp;\n {{ 'Existing nodes:' | translate }}\n </span>\n <ul class=\"list-unstyled m-t-16\">\n <li *ngFor=\"let node of navigatorNodes$ | async\">\n <i [c8yIcon]=\"node.icon\"></i>\n <span class=\"word-break m-l-4 m-r-16\">\n {{\n node.label.length > 15\n ? (node.label | slice: 0:15) + '...'\n : node.label\n }}\n </span>\n <span class=\"pull-right\">{{ node.priority }}</span>\n </li>\n </ul>\n </ng-template>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"positionInNavPop\"\n triggers=\"focus\"\n placement=\"right\"\n container=\"body\"\n ></button>\n </label>\n <input\n type=\"number\"\n for=\"position\"\n class=\"form-control\"\n name=\"priority\"\n [(ngModel)]=\"dashboard.priority\"\n min=\"-10000\"\n max=\"20000\"\n placeholder=\"{{ 'e.g.' | translate }} 500\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div *ngIf=\"!currentDashboard && deviceType\">\n <div class=\"form-group\">\n <label title=\"{{ applyToDevicesOfTypeTitle }}\" class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n name=\"deviceType\"\n [(ngModel)]=\"dashboard.deviceType\"\n [disabled]=\"!applyToDevicesOfTypePermitted\"\n />\n <span></span>\n <span\n class=\"m-r-4\"\n [translateParams]=\"{ type: dashboard.deviceTypeValue }\"\n ngNonBindable\n translate\n >\n Apply dashboard to all devices of type\n <i>{{ type }}</i>\n </span>\n </label>\n </div>\n\n <div class=\"alert alert-info m-b-24\" *ngIf=\"isDeviceType\">\n <i c8y-icon=\"info\"></i>\n <span\n translate\n [translateParams]=\"{ type: dashboard.deviceTypeValue }\"\n ngNonBindable\n >\n This dashboard is shared between all devices of the type\n <i>{{ type }}</i>\n .\n </span>\n </div>\n </div>\n </div>\n <c8y-dashboard-availability\n *ngIf=\"!!isReport === false\"\n [(globalRolesIds)]=\"globalRolesIds\"\n (globalRolesIdsChange)=\"dashboardDetailForm?.form?.markAsDirty()\"\n ></c8y-dashboard-availability>\n <c8y-appearance-settings\n [(themeClass)]=\"styling.themeClass\"\n [(headerClass)]=\"styling.headerClass\"\n ></c8y-appearance-settings>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group class=\"p-b-24 m-b-0\">\n <label for=\"margin\">{{ 'Widget margin' | translate }}</label>\n <div class=\"input-group\">\n <input\n id=\"margin\"\n name=\"margin\"\n type=\"number\"\n class=\"form-control\"\n [(ngModel)]=\"dashboard.widgetMargin\"\n min=\"0\"\n max=\"50\"\n placeholder=\"{{ DEFAULT_DASHBOARD_MARGIN }}\"\n />\n <span class=\"input-group-addon\">px</span>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group class=\"p-b-24 m-b-0\">\n <label translate>Widget titles</label>\n <label title=\"{{ 'Translate if possible' | translate }}\" class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n name=\"translateWidgetTitle\"\n [(ngModel)]=\"dashboard.translateWidgetTitle\"\n />\n <span></span>\n <span>{{ 'Translate if possible' | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n </div>\n </div>\n\n <div class=\"col-sm-6\">\n <c8y-widget-preview\n [tab]=\"!isNamedDashboard ? dashboard : undefined\"\n [previewClasses]=\"getDashboardPreviewStyle()\"\n ></c8y-widget-preview>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Cancel' | translate }}\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Save' | translate }}\"\n (click)=\"save()\"\n [disabled]=\"dashboardDetailForm.form.invalid || dashboardDetailForm.form.pristine\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { IIdentified } from '@c8y/client';\nimport {\n ContextData,\n ContextRouteService,\n ExtensionFactory,\n Permissions,\n Tab,\n ViewContext\n} from '@c8y/ngx-components';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { AddDashboardComponent } from './add-dashboard.component';\nimport { ContextDashboardManagedObject } from './context-dashboard.model';\nimport { ContextDashboardService } from './context-dashboard.service';\nimport { DashboardDetailComponent } from './dashboard-detail.component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AddDashboardFactory implements ExtensionFactory<Tab> {\n currentContext: ContextData;\n\n constructor(\n private permissions: Permissions,\n private contextDashboardService: ContextDashboardService,\n private bsModal: BsModalService,\n private contextRoute: ContextRouteService\n ) {}\n\n async get(activatedRoute?: ActivatedRoute): Promise<Tab | Tab[]> {\n this.currentContext = this.contextRoute.getContextData(activatedRoute);\n if (\n [ViewContext.Device, ViewContext.Group].includes(this.currentContext?.context) &&\n (await this.hasPermission(this.currentContext.contextData))\n ) {\n return [\n {\n component: AddDashboardComponent,\n priority: -Infinity\n }\n ];\n }\n return [];\n }\n\n async addDashboard() {\n let initialState: { deviceType: string };\n\n if (this.currentContext.context === ViewContext.Device) {\n initialState = {\n deviceType: this.currentContext.contextData.type\n };\n }\n\n const modal = this.bsModal.show(DashboardDetailComponent, {\n class: 'modal-lg',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n initialState,\n ignoreBackdropClick: true\n }).content as DashboardDetailComponent;\n try {\n const dashboardCfg = await modal.result;\n const dashboardMO: ContextDashboardManagedObject = await this.contextDashboardService.create(\n dashboardCfg,\n this.currentContext\n );\n await this.contextDashboardService.navigateToDashboard(dashboardMO);\n modal.close();\n } catch (ex) {\n // intended empty\n }\n }\n\n private async hasPermission(context: IIdentified) {\n if (context?.id) {\n return await this.permissions.canEdit(\n ['ROLE_INVENTORY_ADMIN', 'ROLE_INVENTORY_CREATE'],\n context\n );\n }\n return this.permissions.hasAnyRole(['ROLE_INVENTORY_ADMIN', 'ROLE_INVENTORY_CREATE']);\n }\n}\n","import { Component } from '@angular/core';\nimport { AddDashboardFactory } from './add-dashboard.factory';\n\n@Component({\n selector: 'li[c8y-add-dashboard]',\n templateUrl: './add-dashboard.component.html',\n host: { class: 'd-flex a-i-stretch' }\n})\nexport class AddDashboardComponent {\n constructor(private addDashboardFactory: AddDashboardFactory) {}\n\n addDashboard() {\n this.addDashboardFactory.addDashboard();\n }\n}\n","<button\n class=\"btn btn-dot p-l-sm-8 p-r-sm-8 p-l-xs-16 p-r-xs-16\"\n [attr.aria-label]=\"'Add dashboard' | translate\"\n tooltip=\"{{ 'Add dashboard' | translate }}\"\n placement=\"right\"\n container=\"body\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"addDashboard()\"\n>\n <i\n class=\"icon-20 m-l-4 m-r-4\"\n c8yIcon=\"plus-circle\"\n ></i>\n</button>\n<div class=\"p-r-sm-32\"></div>\n","import { InjectionToken } from '@angular/core';\nimport { gettext, Widget } from '@c8y/ngx-components';\n\n/**\n * A hook to define the default widgets of the home dashboard in the cockpit app.\n */\nexport const COCKPIT_HOME_DASHBOARD_CONFIG = new InjectionToken('CockpitHomeDashboardConfig');\n\nexport interface CockpitDashboardConfig {\n /**\n * Allows to have customized dashboard context name in case the CockpitDashboardModule is used in different apps and should have individual home dashboards per app\n */\n dashboardName?: string;\n /**\n * Allows to define the default widgets shown on the Cockpit Home page\n */\n defaultWidgets?: Widget[];\n /**\n * Allows to have a different page title than the default 'Home'\n */\n pageTitle?: string;\n /**\n * Allows to have individual home dashboards per user\n */\n userSpecific?: boolean;\n}\n\n/**\n * An array of widgets that is per default placed on the home dashboard of the cockpit app.\n */\nexport const DEFAULT_COCKPIT_HOME_WIDGETS = [\n {\n name: 'cockpit.welcome.widget',\n title: gettext('Welcome to Cockpit'),\n _x: 0,\n _y: 0,\n _height: 5,\n _width: 12,\n classes: { 'panel-title-hidden': true }\n },\n {\n name: 'Asset Alarms',\n title: gettext('Active, critical alarms'),\n _x: 0,\n _y: 5,\n _height: 4,\n _width: 6\n },\n {\n name: 'Recent Alarms',\n title: gettext('Recent alarms'),\n _x: 0,\n _y: 9,\n _height: 4,\n _width: 6\n },\n {\n name: 'Map',\n title: gettext('Map'),\n _x: 6,\n _y: 5,\n _height: 8,\n _width: 6\n }\n] as Widget[];\n","import { Injectable, Inject, Optional } from '@angular/core';\nimport { sortBy, cloneDeep, get, omit } from 'lodash-es';\nimport { DynamicComponentService, DynamicComponentDefinition, Widget } from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ContextDashboardConfig, CONTEXT_DASHBOARD_CONFIG } from './context-dashboard.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class WidgetService {\n widgets: DynamicComponentDefinition[];\n\n constructor(\n private dynamicComponentService: DynamicComponentService,\n private translateService: TranslateService,\n @Optional()\n @Inject(CONTEXT_DASHBOARD_CONFIG)\n public moduleConfig: ContextDashboardConfig\n ) {\n this.dynamicComponentService.items$.subscribe(widgets => {\n this.widgets = widgets;\n });\n }\n\n async getWidgetDefinition(componentId): Promise<DynamicComponentDefinition> {\n return this.dynamicComponentService.getById(componentId);\n }\n\n getWidgetDefinitions() {\n const translatedComponents = this.widgets.map(cmp => ({\n ...cmp,\n label: this.translateService.instant(cmp.label)\n }));\n\n // cloneDeep and injector lead to a performance issue. We removing the injectors here,\n // as they are not needed, to avoid use of a lot of CPU for cloning.\n const translatedComponentsWithoutInjector = translatedComponents.map(cmp =>\n omit(cmp, 'injector')\n );\n return cloneDeep(\n sortBy(translatedComponentsWithoutInjector, 'label').filter(this.moduleConfig.widgetFilter)\n );\n }\n\n async mapLegacy(widget: Partial<Widget>): Promise<Widget> {\n const cmp = await this.getWidgetDefinition(widget.componentId || widget.name);\n widget = this.mapDisplaySettings(widget, cmp);\n\n if (get(cmp, 'data.settings.upgrade')) {\n widget.widgetComponent = cmp.data.settings.widgetComponent;\n widget.configComponent = cmp.data.settings.configComponent;\n widget.templateUrl = cmp.data.settings.templateUrl;\n widget.configTemplateUrl = cmp.data.settings.configTemplateUrl;\n widget.transformConfigWithContext =\n cmp.data.settings.componentTransformConfigWithContext ||\n cmp.data.settings.transformConfigWithContext ||\n widget.transformConfigWithContext;\n } else {\n delete widget.templateUrl;\n delete widget.configTemplateUrl;\n }\n return widget as Widget;\n }\n\n private mapDisplaySettings(\n widget: Partial<Widget>,\n cmp: DynamicComponentDefinition\n ): Partial<Widget> {\n if (cmp?.data?.displaySettings) {\n widget.config = { displaySettings: cmp.data.displaySettings, ...(widget.config || {}) };\n }\n return widget;\n }\n}\n","import { Component, OnDestroy, ViewChild } from '@angular/core';\nimport { DynamicComponentDefinition, Widget, DynamicComponentComponent } from '@c8y/ngx-components';\nimport { AssetSelectionChangeEvent } from '@c8y/ngx-components/assets-navigator';\nimport { clone, cloneDeep, escapeRegExp, get, omit } from 'lodash-es';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { iif, Subject, Subscription, timer } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport {\n ContextDashboardManagedObject,\n WIDGET_CONTENT_CLASSES,\n WIDGET_HEADER_CLASSES,\n ContextWidgetConfig\n} from './context-dashboard.model';\nimport { WidgetService } from './widget.service';\nimport { ContextDashboardService } from './context-dashboard.service';\nimport { IManagedObject, InventoryService } from '@c8y/client';\n\n@Component({\n selector: 'c8y-widget-config',\n templateUrl: './widget-config.component.html'\n})\nexport class WidgetConfigComponent implements OnDestroy {\n selectedDevice: IManagedObject;\n mode: 'config' | 'select' | 'style' = 'select';\n searchResult: DynamicComponentDefinition[];\n components: DynamicComponentDefinition[];\n selected: DynamicComponentDefinition;\n searchChange$ = new Subject();\n searchTerm = '';\n context: any;\n componentLabel: string;\n mo: ContextDashboardManagedObject;\n styling = {\n headerClass: 'panel-title-regular',\n contentClass: 'panel-content-light'\n };\n defaultStyling = {\n headerClass: 'panel-title-regular',\n contentClass: 'panel-content-light'\n };\n possibleStyling = { WIDGET_HEADER_CLASSES, WIDGET_CONTENT_CLASSES };\n current: any;\n widgetConfig: ContextWidgetConfig;\n isUpgrade = false;\n\n @ViewChild('config', { static: false })\n dynamicComponent: DynamicComponentComponent;\n\n get isEdit() {\n return !!this.current;\n }\n\n get isDeviceTypeDashboard(): boolean {\n return !!this.mo.c8y_Dashboard?.deviceType && !!this.mo.c8y_Dashboard?.deviceTypeValue;\n }\n\n result: Promise<Widget> = new Promise((resolve, reject) => {\n this._save = resolve;\n this._cancel = reject;\n });\n\n private searchSub: Subscription;\n private _save: (value: Widget) => void;\n private _cancel: (reason?: any) => void;\n\n constructor(\n private widgetService: WidgetService,\n private modal: BsModalRef,\n private inventory: InventoryService,\n public contextDashboardService: ContextDashboardService\n ) {}\n\n async ngAfterContentInit(): Promise<void> {\n this.components = this.widgetService.getWidgetDefinitions();\n\n if (this.selected) {\n this.current = clone(this.selected);\n this.select(this.selected, this.isEdit ? 'config' : 'select');\n }\n\n this.searchSub = this.searchChange$\n .pipe(\n switchMap((event: KeyboardEvent) => iif(() => event.which !== 13, timer(200), timer(10)))\n )\n .subscribe(() => {\n this.search();\n });\n\n this.setStylings();\n if (this.widgetConfig?.device) {\n const { data } = await this.inventory.detail(this.widgetConfig.device.id);\n this.selectedDevice = data;\n }\n }\n\n checkIfDeviceRequired() {\n return (\n !this.widgetConfig ||\n (!this.widgetConfig.settings.deviceTargetNotRequired &&\n !this.widgetConfig.device &&\n !this.widgetConfig.settings.noDeviceTarget)\n );\n }\n\n selectionChanged(selection?: AssetSelectionChangeEvent) {\n this.widgetConfig.device = selection?.change?.item;\n this.dynamicComponent.emitConfigChange({\n device: this.widgetConfig.device\n });\n }\n\n async save() {\n const hookSuccess = await this.dynamicComponent.callLifeCycleHooks().toPromise();\n if (!hookSuccess) {\n return;\n }\n\n const { _x, _y, _width, _height } = this.selected.data;\n\n if (\n this.widgetConfig &&\n this.widgetConfig.device &&\n // serializing will be handled by resolver\n !this.selected?.resolve?.device\n ) {\n const { id, name } = this.widgetConfig.device;\n this.widgetConfig.device = { id, name };\n }\n\n const widget = {\n _x,\n _y,\n _width,\n _height,\n config: omit(this.widgetConfig, ['settings', 'displaySettings']),\n title: this.selected.data.title,\n componentId: this.selected.id,\n id: this.isEdit ? this.current.data.id : String(Math.random()).substr(2),\n classes: this.getStyle(),\n ...(!this.isEdit ? this.widgetConfig.settings.widgetDefaults : {})\n } as Widget;\n\n this._save(widget);\n }\n\n select(cmp, mode: 'select' | 'config' = 'config') {\n cmp.data = cmp.data || {};\n this.selected = cmp;\n\n this.isUpgrade = !!get(cmp, 'data.settings.upgrade');\n this.contextDashboardService.formDisabled = this.isUpgrade;\n\n if (this.isEdit) {\n const { _x, _y, _width, _height, classes, title } = this.current.data;\n this.selected.data = { ...this.selected.data, _x, _y, _width, _height, classes, title };\n }\n\n this.widgetConfig = cloneDeep(this.composeWidgetConfig(this.selected, this.context));\n\n this.selected.data.title = this.selected.data.title || cmp.label;\n this.componentLabel = cmp.label;\n this.mode = mode;\n }\n\n search() {\n if (this.searchTerm.length > 0) {\n this.searchResult = this.components.filter(cmp =>\n new RegExp(escapeRegExp(this.searchTerm.trim()), 'i').test(cmp.label)\n );\n } else {\n this.resetSearch();\n }\n }\n\n resetSearch() {\n this.searchTerm = '';\n this.searchResult = undefined;\n }\n\n changeMode(mode: 'config' | 'select' | 'style') {\n this.mode = mode;\n }\n\n close() {\n this._cancel();\n this.modal.hide();\n }\n\n getStyle(isPreview = false) {\n const cssClasses = {};\n if (isPreview || !this.isDashboardDefaultStyle(this.styling.headerClass)) {\n cssClasses[this.styling.headerClass] = true;\n }\n\n if (isPreview || !this.isDashboardDefaultStyle(this.styling.contentClass)) {\n cssClasses[this.styling.contentClass] = true;\n }\n\n if (isPreview) {\n cssClasses[`dashboard-theme-${this.defaultStyling.contentClass.split('-').pop()}`] = true;\n }\n\n return cssClasses;\n }\n\n ngOnDestroy(): void {\n this.contextDashboardService.formDisabled = true;\n if (this.searchSub) {\n this.searchSub.unsubscribe();\n }\n }\n\n hasConfig() {\n if (this.widgetConfig.settings?.upgrade) {\n return (\n this.widgetConfig.settings?.configComponent || this.widgetConfig.settings?.configTemplateUrl\n );\n }\n return !this.dynamicComponent?.error;\n }\n\n private setStylings(): void {\n const dashboardClasses: string[] =\n (this.mo.c8y_Dashboard?.classes && Object.keys(this.mo.c8y_Dashboard.classes)) || [];\n const dashboardWidgetClasses: string[] =\n (this.mo.c8y_Dashboard?.widgetClasses && Object.keys(this.mo.c8y_Dashboard.widgetClasses)) ||\n [];\n const widgetClasses: string[] = this.isEdit ? Object.keys(this.current.data.classes) : [];\n\n this.styling = this.setDefaultStyle([\n ...dashboardClasses,\n ...dashboardWidgetClasses,\n ...widgetClasses\n ]);\n this.defaultStyling = this.setDefaultStyle([...dashboardClasses, ...dashboardWidgetClasses]);\n }\n\n private isDashboardDefaultStyle(className) {\n const allClasses = {\n ...this.mo.c8y_Dashboard.classes,\n ...this.mo.c8y_Dashboard.widgetClasses\n };\n const styles = Object.keys(allClasses).map(cssClass => ({ class: cssClass }));\n const style = this.contextDashboardService.getStyling(\n styles,\n className.split('-').pop(),\n undefined\n );\n return !!style;\n }\n\n private setDefaultStyle(setClasses: string[]) {\n let contentClass = this.styling.contentClass;\n let headerClass = this.styling.headerClass;\n const styles = this.contextDashboardService\n .getFilteredDashboardStyles(setClasses)\n .map(c => c.split('-').pop());\n styles.forEach(styleName => {\n contentClass = this.contextDashboardService.getStyling(\n WIDGET_CONTENT_CLASSES,\n styleName,\n contentClass\n );\n headerClass = this.contextDashboardService.getStyling(\n WIDGET_HEADER_CLASSES,\n styleName,\n headerClass\n );\n });\n\n return { headerClass, contentClass };\n }\n\n private composeWidgetConfig(selectedComponent, context = {}) {\n const setting = {\n settings: {\n ...selectedComponent.data.settings,\n ...get(selectedComponent.data.settings, 'ng1.options'),\n ...get(selectedComponent.data, 'ng1.options'),\n context,\n dashboardMo: this.mo.c8y_Dashboard\n },\n ...selectedComponent.data.config\n } as ContextWidgetConfig;\n return this.applyTargetIfDeviceDashboard(setting);\n }\n\n private applyTargetIfDeviceDashboard(widgetConfig: ContextWidgetConfig) {\n const isDeviceType = this.contextDashboardService.isDeviceType(this.mo);\n\n if (isDeviceType) {\n widgetConfig.settings.hideTarget = isDeviceType;\n\n const noDeviceTarget = widgetConfig.settings.ng1\n ? widgetConfig.settings.ng1.options.noDeviceTarget\n : widgetConfig.settings.noDeviceTarget;\n\n if (!noDeviceTarget) {\n widgetConfig.device = {\n id: this.context.id,\n name: this.context.name\n };\n }\n }\n return widgetConfig;\n }\n}\n","<div class=\"modal-header separator\">\n <div\n class=\"h3\"\n title=\"{{ 'Add widget' | translate }}\"\n id=\"modal-title\"\n *ngIf=\"!current\"\n translate\n >\n Add widget\n </div>\n <div\n class=\"h3\"\n title=\"{{ 'Edit widget' | translate }}\"\n id=\"modal-title\"\n *ngIf=\"current\"\n translate\n >\n Edit widget\n </div>\n</div>\n<form name=\"form\" #configForm=\"ngForm\">\n <div class=\"c8y-modal-tabs\" id=\"modal-body\">\n <div class=\"tabContainer\">\n <ul class=\"nav nav-tabs nav-tabsc8y p-l-24\">\n <li [class.active]=\"mode === 'select'\">\n <button\n class=\"btn\"\n type=\"button\"\n title=\"{{ 'Select widget' | translate }}\"\n (click)=\"changeMode('select'); (false)\"\n >\n <i c8yIcon=\"th-large\"></i>\n <span translate>Select widget</span>\n </button>\n </li>\n <li [class.active]=\"mode === 'config'\">\n <button\n class=\"btn\"\n type=\"button\"\n title=\"{{ 'Configuration' | translate }}\"\n [disabled]=\"!selected\"\n (click)=\"changeMode('config'); (false)\"\n >\n <i c8yIcon=\"cog\"></i>\n <span translate>Configuration</span>\n </button>\n </li>\n <li [class.active]=\"mode === 'style'\">\n <button\n class=\"btn\"\n type=\"button\"\n title=\"{{ 'Appearance' | translate }}\"\n [disabled]=\"!selected\"\n (click)=\"changeMode('style'); (false)\"\n >\n <i c8yIcon=\"paint-brush\"></i>\n <span translate>Appearance</span>\n </button>\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"modal-inner-scroll modal-inner-scroll--fixed\">\n <div\n class=\"bg-level-0 p-l-24 p-r-24 p-t-8 p-b-8 sticky-header-top-0\"\n style=\"z-index: 2\"\n *ngIf=\"mode === 'select'\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n data-cy=\"widget-config--Search\"\n type=\"text\"\n [attr.aria-label]=\"'Search' | translate\"\n placeholder=\"{{ 'Search…' | translate }}\"\n [(ngModel)]=\"searchTerm\"\n [ngModelOptions]=\"{ standalone: true }\"\n (keydown)=\"searchChange$.next($event)\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n type=\"button\"\n title=\"{{ 'Search' | translate }}\"\n (click)=\"resetSearch()\"\n >\n <i [c8yIcon]=\"searchTerm.length === 0 ? 'search' : 'close'\"></i>\n </button>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"modal-body bg-level-2\" *ngIf=\"mode === 'select'\">\n <div class=\"card-group card-select m-b-0\">\n <div\n class=\"col-md-3 col-sm-4 col-xs-6\"\n title=\"{{ cmp.description | translate }}\"\n *ngFor=\"let cmp of searchResult || components\"\n >\n <button\n class=\"btn-clean card p-8\"\n type=\"button\"\n [class.active]=\"selected === cmp\"\n (click)=\"select(cmp)\"\n >\n <div class=\"text-center p-8 m-b-8 d-col flex-center bg-level-2\" role=\"presentation\">\n <ng-container *ngIf=\"!cmp.previewImage; else previewImage\">\n <div class=\"h1\"><i c8yIcon=\"file-image-o\"></i></div>\n <small translate>Preview not available</small>\n </ng-container>\n <ng-template #previewImage>\n <img class=\"img-responsive\" alt [src]=\"cmp.previewImage\" />\n </ng-template>\n </div>\n <p class=\"card-title text-truncate\">\n <c8y-highlight\n text=\"{{ cmp.label | translate }}\"\n [pattern]=\"searchTerm\"\n ></c8y-highlight>\n </p>\n </button>\n </div>\n\n <div class=\"c8y-empty-state text-center\" *ngIf=\"searchResult && searchResult.length === 0\">\n <div class=\"h1\" c8yIcon=\"search\"></div>\n <h3 translate>No widgets found.</h3>\n <div class=\"d-flex\">\n <p class=\"m-r-8\" translate>Rephrase your search term.</p>\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Reset search' | translate }}\"\n (click)=\"resetSearch()\"\n >\n {{ 'Reset search' | translate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- The following is intentional set to hidden to allow the ViewChild ref in the controller -->\n <div class=\"d-flex d-col fit-h\" *ngIf=\"selected\" [ngClass]=\"{ hidden: mode !== 'config' }\">\n <div class=\"p-t-16 flex-no-shrink separator-bottom p-b-16\">\n <div class=\"row\">\n <div class=\"col-sm-4\">\n <div class=\"p-l-24\">\n <div class=\"text-left text-medium h4\">\n {{ selected.label | translate }}\n </div>\n <p>\n {{ selected.description | translate }}\n </p>\n </div>\n </div>\n <div class=\"col-sm-8\">\n <div class=\"p-r-24\">\n <c8y-form-group>\n <label for=\"widgetTitle\" translate>Title</label>\n <input\n class=\"form-control\"\n type=\"text\"\n id=\"widgetTitle\"\n name=\"title\"\n [(ngModel)]=\"selected.data.title\"\n placeholder=\"{{ 'e.g.' | translate }} {{ componentLabel | translate }}\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row flex-grow\" [ngClass]=\"{ 'd-flex': widgetConfig.options || hasConfig() }\">\n <div\n class=\"a-s-stretch\"\n *ngIf=\"!widgetConfig.settings?.noDeviceTarget\"\n [ngClass]=\"{\n 'bg-level-1 col-sm-4 p-r-0': hasConfig(),\n 'bg-level-0 col-sm-12': !hasConfig()\n }\"\n >\n <div class=\"fit-h bg-inherit p-l-16\" [ngClass]=\"{ 'p-r-24': !hasConfig() }\">\n <div class=\"p-relative bg-inherit\">\n <c8y-asset-selector-miller\n class=\"d-block bg-inherit p-relative\"\n style=\"height: calc(100vh - 422px)\"\n (onSelected)=\"selectionChanged($event)\"\n (onClearSelected)=\"selectionChanged()\"\n [config]=\"{\n view: 'miller',\n groupsSelectable: this.widgetConfig.settings?.groupsSelectable,\n showChildDevices: true,\n columnHeaders: true,\n showUnassignedDevices: true,\n search: !this.widgetConfig.settings.context?.additionParents,\n showFilter: true,\n singleColumn: !!this.hasConfig()\n }\"\n [asset]=\"widgetConfig.settings?.context\"\n [selectedDevice]=\"selectedDevice\"\n ></c8y-asset-selector-miller>\n </div>\n </div>\n </div>\n <div\n [ngClass]=\"{\n 'col-sm-8': !widgetConfig.settings?.noDeviceTarget,\n 'col-sm-12': widgetConfig.settings?.noDeviceTarget,\n 'sr-only': !hasConfig()\n }\"\n >\n <c8y-dynamic-component\n class=\"d-block\"\n style=\"height: {{ hasConfig() ? 'calc(100vh - 422px)' : '0' }}\"\n [ngClass]=\"{ 'inner-scroll p-r-24': !widgetConfig.settings?.noDeviceTarget }\"\n [componentId]=\"selected.id\"\n mode=\"config\"\n [config]=\"widgetConfig\"\n [notFoundError]=\"false\"\n #config\n ></c8y-dynamic-component>\n </div>\n </div>\n </div>\n\n <div class=\"modal-body p-t-0\" style=\"height: calc(100vh - 310px)\" *ngIf=\"mode === 'style'\">\n <div class=\"row\">\n <div class=\"col-xs-6\">\n <c8y-appearance-settings\n [(themeClass)]=\"styling.contentClass\"\n [(headerClass)]=\"styling.headerClass\"\n [possibleStylingTheme]=\"possibleStyling.WIDGET_CONTENT_CLASSES\"\n [possibleStylingHeader]=\"possibleStyling.WIDGET_HEADER_CLASSES\"\n [defaultThemeClass]=\"defaultStyling.contentClass\"\n [defaultHeaderClass]=\"defaultStyling.headerClass\"\n ></c8y-appearance-settings>\n </div>\n <div class=\"col-xs-6 sticky-header-top-0\">\n <c8y-widget-preview\n style=\"height: calc(100vh - 382px)\"\n [previewClasses]=\"getStyle(true)\"\n ></c8y-widget-preview>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Cancel' | translate }}\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n type=\"submit\"\n title=\"{{ 'Save' | translate }}\"\n (click)=\"save()\"\n [disabled]=\"\n contextDashboardService.formDisabled || configForm.invalid || checkIfDeviceRequired()\n \"\n c8yProductExperience\n [actionName]=\"current ? 'editWidget' : 'createWidget'\"\n [actionData]=\"{ widgetName: selected && selected.id }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</form>\n","import { Component, HostBinding, Inject, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport {\n ActionBarService,\n AlertService,\n BreadcrumbItem,\n DashboardChange,\n DashboardChildChange,\n DashboardChildComponent,\n DashboardSettings,\n DynamicComponentDefinition,\n GainsightService,\n gettext,\n ModalService,\n Status,\n ViewContext,\n Widget,\n WidgetChange\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { cloneDeep, findIndex, keyBy, omit, values, some, kebabCase, every } from 'lodash-es';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { Subscription } from 'rxjs';\nimport {\n ContextDashboard,\n ContextDashboardConfig,\n ContextDashboardManagedObject,\n CONTEXT_DASHBOARD_CONFIG,\n WIDGET_HEADER_CLASSES\n} from './context-dashboard.model';\nimport { ContextDashboardService } from './context-dashboard.service';\nimport { DashboardDetailComponent } from './dashboard-detail.component';\nimport { WidgetConfigComponent } from './widget-config.component';\nimport { WidgetService } from './widget.service';\nimport { IManagedObject, InventoryService } from '@c8y/client';\n\n/**\n * The context dashboard is a dashboard which resolves it data from the current context (device or group)\n * it is displayed on. It usually uses the route.data for it, but you can pass\n * a different managedObject to the [mo] input parameter to change that behavior.\n */\n@Component({\n selector: 'c8y-context-dashboard',\n templateUrl: './context-dashboard.component.html',\n host: {\n style: `\n display: block;\n `,\n class: 'dashboard c8y-grid-dashboard'\n }\n})\nexport class ContextDashboardComponent implements OnInit, OnDestroy {\n @Input()\n name: string;\n @Input()\n childrenClasses = '';\n @Input()\n context: any;\n @Input()\n setTitle = false;\n @Input()\n disabled = false;\n @Input()\n defaultWidgets: Widget[] = [];\n @Input()\n canCopy = true;\n @Input()\n canDelete = true;\n @Input()\n isLoading = true;\n @Input()\n breadcrumbSettings: BreadcrumbItem;\n @Input()\n showContextHelpButton = true;\n\n @HostBinding('class')\n class = '';\n\n widgets: Widget[] = [];\n mo: ContextDashboardManagedObject;\n dashboard: ContextDashboard;\n title: string;\n\n private dataSub: Subscription;\n\n constructor(\n private route: ActivatedRoute,\n private router: Router,\n private contextDashboardService: ContextDashboardService,\n private alert: AlertService,\n private renderer: Renderer2,\n @Inject(CONTEXT_DASHBOARD_CONFIG) public moduleConfig: ContextDashboardConfig,\n private widgetService: WidgetService,\n private bsModal: BsModalService,\n private inventory: InventoryService,\n private gainsightService: GainsightService,\n private actionBarService: ActionBarService,\n private translateService: TranslateService,\n private modal: ModalService\n ) {}\n\n ngOnInit() {\n if (!this.name) {\n this.loadContextDashboard();\n return;\n }\n this.loadNamedDashboard();\n }\n\n /**\n * Applies the current context to the widget\n * @param widget The widget to apply the context to.\n */\n applyDeviceTarget(widget) {\n if (widget.config.device) {\n widget.config.device = { id: this.context.id, name: this.context.name };\n }\n }\n\n /**\n * Removes the route listener.\n */\n ngOnDestroy(): void {\n if (this.dataSub) {\n this.dataSub.unsubscribe();\n }\n }\n\n /**\n * Restores the dashboard widgets to the default widgets.\n */\n async restore() {\n const mesg = gettext(\n 'You are about to reset this dashboard. All changes to the dashboard will get lost and cannot be recovered. Do you want to proceed?'\n );\n\n try {\n await this.modal.confirm(gettext('Reset dashboard'), mesg, Status.WARNING, {\n ok: gettext('Reset`dashboard`'),\n cancel: gettext('Cancel')\n });\n\n this.isLoading = true;\n this.mo.c8y_Dashboard.children = this.contextDashboardService.mapWidgets(this.defaultWidgets);\n await this.contextDashboardService.update(this.mo);\n await this.onLoad();\n } catch (error) {\n if (error) {\n this.alert.addServerFailure(error);\n }\n } finally {\n this.isLoading = false;\n }\n }\n\n /**\n * Updates all dashboards children's. Useful for position changes on the dashboard.\n * @param child The child to change.\n */\n async updateDashboardChildren(child: DashboardChildChange | DashboardChange) {\n const { children } = child;\n const dashboardMO: ContextDashboardManagedObject = this.mo;\n const mappedChildren: { [id: string]: Widget } = keyBy(\n children.map(c => this.componentToWidget(c)),\n 'id'\n );\n dashboardMO.c8y_Dashboard.children = mappedChildren;\n return this.contextDashboardService.update(dashboardMO);\n }\n\n /**\n * Copies the dashboard and current context to a clipboard.\n */\n async copyDashboard() {\n const viewContext = this.route.parent.snapshot.data?.context;\n if (this.canCopyDashboard(viewContext)) {\n this.contextDashboardService.copyClipboard = {\n dashboard: cloneDeep(this.mo.c8y_Dashboard),\n context: cloneDeep({\n context: viewContext,\n contextData: this.context\n })\n };\n\n if (viewContext) {\n const ctx = viewContext.split('/').shift();\n const msg = this.translateService.instant(\n 'Dashboard copied. Navigate to the desired {{ ctx }} and select \"Paste dashboard\"',\n { ctx }\n );\n this.alert.success(msg);\n }\n this.actionBarService.refresh();\n }\n }\n\n /**\n * Remove the complete dashboard and navigate away.\n */\n async deleteDashboard() {\n await this.contextDashboardService.delete(this.mo);\n if (this.route.parent) {\n const route = this.route.parent.snapshot.url.map(segment => segment.path).join('/');\n this.router.navigateByUrl(route);\n }\n }\n\n /**\n * Edits the current dashboard\n */\n async editDashboard() {\n const isReport = this.contextDashboardService.isReport(this.mo);\n if (isReport) {\n const { name, icon, priority, c8y_IsNavigatorNode, description } = this.context;\n Object.assign(this.dashboard, { name, icon, priority, c8y_IsNavigatorNode, description });\n }\n const initialState = {\n dashboard: this.dashboard,\n deviceType: this.context.type,\n isDeviceType: this.contextDashboardService.isDeviceType(this.mo),\n isNamedDashboard: this.contextDashboardService.isNamed(this.mo),\n isReport\n };\n const modal = this.bsModal.show(DashboardDetailComponent, {\n class: 'modal-lg',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n initialState,\n ignoreBackdropClick: true\n }).content as DashboardDetailComponent;\n try {\n const dashboardMO = cloneDeep(this.mo);\n const cfg = await modal.result;\n if (isReport) {\n const { name, icon, c8y_IsNavigatorNode, priority, description, ...dashboardCfg } = cfg;\n dashboardMO.c8y_Dashboard = dashboardCfg;\n this.updateReport({\n id: this.context.id,\n name,\n icon,\n c8y_IsNavigatorNode,\n priority,\n description\n });\n } else {\n dashboardMO.c8y_Dashboard = cfg;\n }\n\n await this.contextDashboardService.update(dashboardMO);\n await this.contextDashboardService.refreshTabs(dashboardMO);\n this.onLoad();\n modal.close();\n } catch (ex) {\n // intended empty\n }\n }\n\n get isDeviceTypeDashboard(): boolean {\n return !!this.dashboard?.deviceType && !!this.dashboard.deviceTypeValue;\n }\n\n /**\n * Edits a widget on the dashboard.\n * @param change The widget change event.\n */\n async editWidget(change: WidgetChange) {\n const { x, y, width, height } = change.source;\n const component = await this.widgetService.getWidgetDefinition(\n change.widget.name || change.widget.componentId\n );\n if (!component) {\n this.addWidget();\n return;\n }\n await this.addWidget({\n ...component,\n data: { ...component.data, ...change.widget, _x: x, _y: y, _width: width, _height: height }\n });\n }\n\n /**\n * Adds a widget to the dashboard.\n * @param selected Define a selected component to switch to edit mode directly.\n */\n async addWidget(selected?: DynamicComponentDefinition) {\n const partialCloneSelected = selected\n ? {\n ...selected,\n data: cloneDeep(selected.data)\n }\n : selected;\n\n const initialState: Partial<WidgetConfigComponent> = {\n mo: this.mo,\n context: this.context.c8y_Report ? {} : this.context,\n selected: partialCloneSelected\n };\n\n const modal = this.bsModal.show(WidgetConfigComponent, {\n class: 'modal-lg',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n initialState,\n ignoreBackdropClick: true\n }).content as WidgetConfigComponent;\n\n try {\n const newWidget = await modal.result;\n if (!this.mo.c8y_Dashboard.children) {\n this.mo.c8y_Dashboard.children = {};\n }\n this.mo.c8y_Dashboard.children[newWidget.id] = newWidget;\n this.contextDashboardService.update(this.mo);\n newWidget.classes = this.mergeWidgetClasses(newWidget);\n await this.updateWidget(newWidget);\n modal.close();\n } catch (ex) {\n // intended empty\n }\n }\n\n /**\n * Updates a widget or adds a new one if it doesn't exist on\n * the dashboard.\n * @param widget The new widget\n */\n async updateWidget(widget) {\n const index = findIndex(this.widgets, { id: widget.id });\n const isNew = index === -1;\n const mappedWidget = await this.widgetService.mapLegacy(widget);\n if (isNew) {\n this.widgets.push(mappedWidget);\n } else {\n this.widgets.splice(index, 1, mappedWidget);\n }\n }\n\n /**\n * Removes a widget and rearranges the remaining ones\n * if necessary.\n * @param change The change event.\n */\n async deleteWidget(change: WidgetChange) {\n const widgetTitle = change.widget.title;\n try {\n await this.modal.confirm(\n gettext('Remove widget'),\n this.translateService.instant(\n gettext(\n 'You are about to remove widget \"{{ widgetTitle }}\" from your dashboard. Do you want to proceed?'\n ),\n { widgetTitle }\n ),\n Status.DANGER,\n {\n ok: gettext('Remove'),\n cancel: gettext('Cancel')\n }\n );\n } catch (e) {\n // on cancel: do nothing\n return;\n }\n\n try {\n const { widget, source } = change;\n delete this.mo.c8y_Dashboard.children[widget.id];\n const removed = this.widgets.find(({ id }) => id === widget.id);\n this.widgets.splice(this.widgets.indexOf(removed), 1);\n\n const { dashboard } = source;\n dashboard.children = dashboard.children.filter(c => c.data.id !== widget.id);\n\n // using setTimeout to give the component the chance to remove it.\n const sleep = timeout => new Promise(resolve => setTimeout(resolve, timeout));\n await sleep(0);\n\n const child = new DashboardChildChange(source);\n child.collapseUpAll();\n await this.updateDashboardChildren(child);\n } catch (e) {\n this.alert.addServerFailure(e);\n }\n }\n\n /**\n * This is a workaround to ensure that the dragged-element\n * (which is attached to the body) has the right styling.\n */\n addDashboardClassToBody() {\n this.class.split(' ').forEach(cssClass => {\n this.renderer.addClass(document.body, cssClass);\n });\n }\n\n /**\n * This is a workaround to ensure that the dragged-element\n * (which is attached to the body) has the right styling.\n */\n removeDashboardClassFromBody() {\n this.class.split(' ').forEach(cssClass => {\n this.renderer.removeClass(document.body, cssClass);\n });\n }\n\n /**\n * Changes the dashboard settings to frozen or vice versa.\n * @param settings The current settings of the dashboard.\n */\n async toggleFreeze(settings: DashboardSettings) {\n this.toggleIsFrozenFlag(settings);\n try {\n await this.contextDashboardService.update(this.mo);\n if (this.dashboard.isFrozen) {\n this.alert.success(gettext('Your dashboard is locked now.'));\n } else {\n this.alert.success(gettext('Your dashboard is unlocked now.'));\n }\n } catch (ex) {\n this.alert.addServerFailure(ex);\n this.toggleIsFrozenFlag(settings);\n }\n }\n\n private async updateReport(mo: Partial<IManagedObject>) {\n const res = await this.inventory.update(mo);\n this.context = res.data;\n if (this.route.parent) {\n this.route.parent.snapshot.data.contextData = this.context;\n }\n this.contextDashboardService.updateNavigatorItem(res.data);\n }\n\n private toggleIsFrozenFlag(settings: DashboardSettings) {\n settings.isFrozen = !settings.isFrozen;\n this.dashboard.isFrozen = settings.isFrozen;\n }\n\n private loadContextDashboard() {\n this.dataSub = this.route.data.subscribe(({ dashboard }) => {\n this.context = this.route.parent.snapshot.data.contextData;\n this.title = this.context?.name;\n this.mo = dashboard;\n this.dashboard = this.mo.c8y_Dashboard;\n this.onLoad(true);\n });\n }\n\n private loadNamedDashboard() {\n this.dataSub = this.contextDashboardService\n .getNamedDashboardOrCreate(this.name, this.defaultWidgets, this.context)\n .subscribe(mo => {\n this.context = this.context || {};\n this.mo = mo;\n this.dashboard = this.mo.c8y_Dashboard;\n this.onLoad(true);\n });\n }\n\n private async onLoad(trackExperience?: boolean) {\n const canEditDashboard = await this.contextDashboardService.canEditDashboard(this.mo);\n this.disabled = !canEditDashboard;\n this.canCopy =\n this.contextDashboardService.isDeviceDashboard(this.mo) ||\n this.contextDashboardService.isDeviceType(this.mo) ||\n this.contextDashboardService.isGroupDashboard(this.mo);\n const dashboardChildren = cloneDeep(this.mo.c8y_Dashboard.children);\n const isDeviceType = this.contextDashboardService.isDeviceType(this.mo);\n const isReport = this.contextDashboardService.isReport(this.mo);\n const dashboardClasses = {\n 'c8y-grid-dashboard': true,\n dashboard: true,\n ...this.dashboard.classes\n };\n\n this.widgets = await Promise.all<Widget>(\n values(dashboardChildren).map(widget => {\n widget.classes = this.mergeWidgetClasses(widget);\n if (isDeviceType) {\n this.applyDeviceTarget(widget);\n }\n if (trackExperience) {\n this.gainsightService.triggerEvent('loadWidget', {\n widgetName: widget.componentId || widget.name\n });\n }\n return this.widgetService.mapLegacy(widget);\n })\n );\n this.class = Object.keys(dashboardClasses).join(' ');\n if (isReport) {\n this.addReportDashboardSettings();\n }\n this.isLoading = false;\n }\n\n private mergeWidgetClasses(widget: Widget) {\n const hasHeaderClass = WIDGET_HEADER_CLASSES.find(\n el => widget.classes && widget.classes[el.class]\n );\n const widgetClasses = hasHeaderClass\n ? { ...widget.classes }\n : { ...this.dashboard.widgetClasses, ...widget.classes };\n return {\n card: true,\n 'card-dashboard': true,\n [kebabCase(widget.componentId || widget.name)]: true,\n ...widgetClasses\n };\n }\n\n private componentToWidget(child: DashboardChildComponent) {\n return {\n ...omit(child.data, ['componentTransformConfigWithContext', 'transformConfigWithContext']), // remove legacy\n ...({\n _x: child.x,\n _y: child.y,\n _width: child.width,\n _height: child.height\n } as Widget)\n };\n }\n\n private addReportDashboardSettings() {\n this.setTitle = true;\n this.title = this.context.name;\n this.breadcrumbSettings = {\n icon: 'th',\n label: 'Reports',\n path: 'reports'\n };\n this.canDelete = false;\n }\n\n private canCopyDashboard(viewContext: ViewContext): boolean {\n if (!this.validDashboardChildren() && viewContext) {\n const ctx = viewContext.split('/').shift();\n const msg = this.translateService.instant(\n 'Only dashboards with widgets referencing the current {{ ctx }} can be copied.',\n { ctx }\n );\n this.alert.warning(msg);\n return false;\n }\n return true;\n }\n\n private validDashboardChildren(): boolean {\n return every(this.mo.c8y_Dashboard.children, child => {\n const config = child.config || {};\n const dataPoints = config.datapoints || [];\n\n return !(\n (config.device && config.device.id !== this.context.id) ||\n some(dataPoints, dataPoint => dataPoint.__target.id !== this.context.id)\n );\n });\n }\n}\n","<c8y-title>\n {{ title }}\n</c8y-title>\n\n<c8y-action-bar-item *ngIf=\"defaultWidgets.length > 0\" [placement]=\"'right'\" [priority]=\"-1\">\n <button\n class=\"btn btn-link\"\n [disabled]=\"dashboard?.isFrozen || disabled\"\n (click)=\"restore()\"\n title=\"{{ 'Reset dashboard' | translate }}\"\n type=\"button\"\n px-event=\"Reset dashboard\"\n >\n <i class=\"m-r-4\" c8yIcon=\"reset\"></i>\n {{ 'Reset dashboard' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help *ngIf=\"showContextHelpButton\" src=\"/users-guide/cockpit/#dashboards\"></c8y-help>\n\n<c8y-widgets-dashboard\n [context]=\"context\"\n [contextDashboard]=\"dashboard\"\n [widgets]=\"widgets\"\n [settings]=\"{\n isLoading: isLoading,\n isFrozen: dashboard?.isFrozen,\n isDisabled: disabled,\n canDelete: canDelete,\n translateWidgetTitle: dashboard?.translateWidgetTitle,\n allowFullscreen: moduleConfig.allowFullscreen,\n title: setTitle ? dashboard.name || title : undefined,\n widgetMargin: dashboard?.widgetMargin,\n canCopy: canCopy\n }\"\n [breadcrumb]=\"breadcrumbSettings\"\n (onFreeze)=\"toggleFreeze($event)\"\n (onChangeDashboard)=\"updateDashboardChildren($event)\"\n (onAddWidget)=\"addWidget()\"\n (onEditWidget)=\"editWidget($event)\"\n (onDeleteWidget)=\"deleteWidget($event)\"\n (onChangeStart)=\"addDashboardClassToBody()\"\n (onChangeEnd)=\"removeDashboardClassFromBody()\"\n (onEditDashboard)=\"editDashboard()\"\n (onCopyDashboard)=\"copyDashboard()\"\n (onDeleteDashboard)=\"deleteDashboard()\"\n></c8y-widgets-dashboard>\n","import { Component, Inject, Optional } from '@angular/core';\nimport { AppStateService, gettext } from '@c8y/ngx-components';\nimport {\n CockpitDashboardConfig,\n COCKPIT_HOME_DASHBOARD_CONFIG,\n DEFAULT_COCKPIT_HOME_WIDGETS\n} from './cockpit-dashboard.model';\n\n@Component({\n selector: 'c8y-cockpit-dashboard',\n templateUrl: './cockpit-dashboard.component.html'\n})\nexport class CockpitDashboardComponent {\n defaultWidgets = DEFAULT_COCKPIT_HOME_WIDGETS;\n dashboardName = 'home-cockpit1';\n pageTitle: string = gettext('Home');\n\n constructor(\n private appState: AppStateService,\n @Optional()\n @Inject(COCKPIT_HOME_DASHBOARD_CONFIG)\n private homeDashboardConfig: CockpitDashboardConfig\n ) {\n const config = {\n ...this.homeDashboardConfig,\n dashboardName: appState.currentApplication.value?.config?.homeDashboardName,\n userSpecific: appState.currentApplication.value?.config?.userSpecificHomeDashboard\n };\n this.applyDashboardConfig(config);\n }\n\n private applyDashboardConfig(config: CockpitDashboardConfig) {\n if (!config) {\n return;\n }\n\n if (config.dashboardName) {\n this.dashboardName = config.dashboardName;\n }\n\n if (config.defaultWidgets) {\n this.defaultWidgets = config.defaultWidgets;\n }\n\n if (config.userSpecific && this.appState.currentUser.value) {\n this.dashboardName = `${this.appState.currentUser.value.userName.replace(/\\./g, '__')}_${\n this.dashboardName\n }`;\n }\n\n if (config.pageTitle) {\n this.pageTitle = config.pageTitle;\n }\n }\n}\n","<c8y-title>\n {{ pageTitle | translate }}\n</c8y-title>\n\n<c8y-context-dashboard\n [name]=\"dashboardName\"\n [defaultWidgets]=\"defaultWidgets\"\n [canDelete]=\"false\"\n></c8y-context-dashboard>\n","import { Component, OnInit, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { IManagedObject, InventoryService } from '@c8y/client';\nimport { ViewContext } from '@c8y/ngx-components';\nimport { DashboardContext } from './context-dashboard.model';\nimport { ContextDashboardService } from './context-dashboard.service';\n\n@Component({\n selector: 'c8y-paste-dashboard-action',\n template: `\n <ng-template #templatePaste>\n <li>\n <button title=\"{{ 'Paste dashboard' | translate }}\" (click)=\"pasteDashboard()\">\n <i class=\"m-r-4\" c8yIcon=\"clipboard\"></i><span translate>Paste dashboard</span>&nbsp;<span\n >\"{{ dashboardName }}\"</span\n >\n </button>\n </li>\n </ng-template>\n `\n})\nexport class PasteDashboardActionComponent implements OnInit {\n @ViewChild('templatePaste', { read: TemplateRef, static: true }) templatePaste;\n dashboardName = '';\n\n constructor(\n private vcRef: ViewContainerRef,\n private router: Router,\n private contextDashboardService: ContextDashboardService,\n private inventoryService: InventoryService\n ) {}\n\n ngOnInit() {\n this.vcRef.createEmbeddedView(this.templatePaste);\n const clipboard = this.contextDashboardService.copyClipboard;\n if (clipboard) {\n this.dashboardName = clipboard.dashboard.name;\n }\n }\n\n async pasteDashboard() {\n let context: DashboardContext;\n const currentUrl: string = this.router.url;\n const isDevice: boolean = new RegExp(/device\\/\\d+/).test(currentUrl);\n const isGroup: boolean = new RegExp(/group\\/\\d+/).test(currentUrl);\n const id = currentUrl.match(/\\d+/)[0];\n\n if (isDevice) {\n context = {\n context: ViewContext.Device,\n contextData: await this.getContextMo(id)\n };\n } else if (isGroup) {\n context = {\n context: ViewContext.Group,\n contextData: await this.getContextMo(id)\n };\n }\n this.contextDashboardService.pasteDashboard(context);\n }\n\n private async getContextMo(id: string): Promise<IManagedObject> {\n return (await this.inventoryService.detail(id)).data;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ViewContext, ActionBarFactory, ActionBarItem } from '@c8y/ngx-components';\nimport { Observable } from 'rxjs';\nimport { ContextDashboardService } from './context-dashboard.service';\nimport { PasteDashboardActionComponent } from './paste-dashboard-action.component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DashboardActionBarFactory implements ActionBarFactory {\n routeChanges$: Observable<any>;\n constructor(private contextDashboardService: ContextDashboardService) {}\n get(activeRoute: ActivatedRoute) {\n const actions = [];\n const data =\n !activeRoute.parent || activeRoute.snapshot.data.context\n ? activeRoute.snapshot.data\n : activeRoute.parent.snapshot.data;\n const { contextData } = data;\n const canPaste =\n contextData &&\n [ViewContext.Device, ViewContext.Group].includes(data.context) &&\n this.contextDashboardService.copyClipboard;\n\n if (canPaste) {\n actions.push({\n priority: -10,\n placement: 'more',\n template: PasteDashboardActionComponent\n } as ActionBarItem);\n }\n\n return actions;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { Tab } from '@c8y/ngx-components';\nimport { ContextDashboardType } from './context-dashboard.model';\nimport { ContextDashboardService } from './context-dashboard.service';\n\n@Injectable()\nexport class DeviceDashboardGuard {\n constructor(private contextDashboardService: ContextDashboardService) {}\n\n canActivate(route: ActivatedRouteSnapshot): Observable<boolean | Tab[]> {\n return this.contextDashboardService.activateDashboards(route, [\n ContextDashboardType.Device,\n ContextDashboardType.DeviceType\n ]);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { Tab } from '@c8y/ngx-components';\nimport { ContextDashboardType } from './context-dashboard.model';\nimport { ContextDashboardService } from './context-dashboard.service';\n\n@Injectable()\nexport class GroupDashboardGuard {\n constructor(private contextDashboardService: ContextDashboardService) {}\n\n canActivate(route: ActivatedRouteSnapshot): Observable<boolean | Tab[]> {\n return this.contextDashboardService.activateDashboards(route, [ContextDashboardType.Group]);\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport {\n CoreModule,\n hookActionBar,\n hookRoute,\n ViewContext,\n hookTab,\n HookProviderTypes\n} from '@c8y/ngx-components';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { AssetSelectorModule } from '@c8y/ngx-components/assets-navigator';\nimport { AddDashboardComponent } from './add-dashboard.component';\nimport { AddDashboardFactory } from './add-dashboard.factory';\nimport { AppearanceSettingsComponent } from './appearance-settings.component';\nimport { ContextDashboardComponent } from './context-dashboard.component';\nimport { ContextDashboardConfig, CONTEXT_DASHBOARD_CONFIG } from './context-dashboard.model';\nimport { ContextDashboardService } from './context-dashboard.service';\nimport { DashboardActionBarFactory } from './dashboard-action-bar.factory';\nimport { DashboardDetailComponent } from './dashboard-detail.component';\nimport { DeviceDashboardGuard } from './device-dashboard.guard';\nimport { GroupDashboardGuard } from './group-dashboard.guard';\nimport { PasteDashboardActionComponent } from './paste-dashboard-action.component';\nimport { WidgetConfigComponent } from './widget-config.component';\nimport { WidgetPreviewComponent } from './widget-preview.component';\nimport { WidgetService } from './widget.service';\nimport { DashboardAvailabilityComponent } from './dashboard-availability.component';\n\nconst defaultConfig = {\n allowFullscreen: true,\n widgetFilter({ data }) {\n return !(data && data.settings && data.settings.noNewWidgets);\n },\n routes: [\n {\n path: 'dashboard/:dashboardId',\n component: ContextDashboardComponent,\n canActivate: [DeviceDashboardGuard],\n context: ViewContext.Device\n },\n {\n path: 'dashboard/:dashboardId',\n component: ContextDashboardComponent,\n canActivate: [GroupDashboardGuard],\n context: ViewContext.Group\n }\n ]\n};\n\n@NgModule({\n declarations: [\n AppearanceSettingsComponent,\n ContextDashboardComponent,\n WidgetConfigComponent,\n WidgetPreviewComponent,\n DashboardDetailComponent,\n AddDashboardComponent,\n PasteDashboardActionComponent,\n DashboardAvailabilityComponent\n ],\n imports: [\n CoreModule,\n TooltipModule,\n PopoverModule,\n AssetSelectorModule,\n BsDropdownModule.forRoot()\n ],\n exports: [ContextDashboardComponent, WidgetConfigComponent],\n entryComponents: [\n ContextDashboardComponent,\n WidgetConfigComponent,\n DashboardDetailComponent,\n PasteDashboardActionComponent\n ],\n providers: [\n WidgetService,\n {\n provide: CONTEXT_DASHBOARD_CONFIG,\n useValue: defaultConfig\n }\n ]\n})\nexport class ContextDashboardModule {\n static config(config: ContextDashboardConfig = {}): ModuleWithProviders<ContextDashboardModule> {\n return {\n ngModule: ContextDashboardModule,\n providers: [\n {\n provide: CONTEXT_DASHBOARD_CONFIG,\n useValue: { ...defaultConfig, ...config }\n },\n ContextDashboardService,\n DeviceDashboardGuard,\n GroupDashboardGuard,\n hookRoute({ ...defaultConfig, ...config }.routes),\n hookTab(AddDashboardFactory, { providerType: HookProviderTypes.ExistingProvider }),\n hookActionBar(DashboardActionBarFactory)\n ]\n };\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { ContextDashboardModule } from '../context-dashboard.module';\nimport { ContextDashboardComponent } from '../context-dashboard.component';\nimport { DeviceDashboardGuard } from '../device-dashboard.guard';\nimport { GroupDashboardGuard } from '../group-dashboard.guard';\nimport { ViewContext, hookNavigator, gettext, CoreModule } from '@c8y/ngx-components';\nimport { CockpitDashboardComponent } from './cockpit-dashboard.component';\nimport { CockpitDashboardConfig, COCKPIT_HOME_DASHBOARD_CONFIG } from './cockpit-dashboard.model';\n\n@NgModule({\n imports: [\n CoreModule,\n ContextDashboardModule.config({\n routes: [\n {\n path: 'dashboard/:dashboardId',\n component: ContextDashboardComponent,\n canActivate: [DeviceDashboardGuard],\n context: ViewContext.Device\n },\n {\n path: 'dashboard/:dashboardId',\n component: ContextDashboardComponent,\n canActivate: [GroupDashboardGuard],\n context: ViewContext.Group\n },\n {\n path: '',\n component: CockpitDashboardComponent\n }\n ]\n })\n ],\n declarations: [CockpitDashboardComponent],\n providers: [hookNavigator({ label: gettext('Home'), icon: 'home', priority: 10000, path: '/' })]\n})\nexport class CockpitDashboardModule {\n static config(config: CockpitDashboardConfig = {}): ModuleWithProviders<CockpitDashboardModule> {\n return {\n ngModule: CockpitDashboardModule,\n providers: [\n {\n provide: COCKPIT_HOME_DASHBOARD_CONFIG,\n useValue: config\n }\n ]\n };\n }\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { gettext, Widget } from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, combineLatest, from, Observable } from 'rxjs';\nimport { map, mergeMap, toArray } from 'rxjs/operators';\nimport { WidgetService } from '../widget.service';\nimport { Subscription } from 'rxjs';\nimport { IManagedObject } from '@c8y/client';\n\n@Component({\n selector: 'c8y-device-info-dashboard-dashboard',\n templateUrl: './device-info-dashboard.component.html'\n})\nexport class DeviceInfoDashboardComponent {\n currentContext$: Observable<IManagedObject>;\n widgets$: Observable<Widget[]>;\n isLoading$ = new BehaviorSubject(true);\n title: string;\n widgetsSubscription: Subscription;\n\n DEVICE_INFO_WIDGETS = [\n {\n componentId: 'assetNotesWidget',\n title: gettext('Message of the day'),\n classes: { 'panel-title-hidden': true },\n _x: 0,\n _y: 0,\n _height: 2,\n _width: 12\n },\n {\n name: 'deviceStatusWidget',\n title: gettext('Device status'),\n _x: 0,\n _y: 2,\n _height: 5,\n _width: 4\n },\n {\n name: 'Data points graph',\n title: gettext('Device and communication'),\n _x: 4,\n _y: 2,\n _height: 5,\n _width: 8,\n config: {\n interval: 'hours',\n aggregation: 'NONE',\n realtime: true,\n datapointsInitialDisplayLimit: 3,\n datapoints: [\n {\n fragment: 'c8y_Battery',\n series: 'level',\n label: this.translateService.instant('Battery: level'),\n unit: '%',\n renderType: 'min',\n lineType: 'line',\n color: '#5e07b3',\n __active: true\n },\n {\n fragment: 'c8y_SignalStrength',\n series: 'rssi',\n label: this.translateService.instant('Signal: RSSI'),\n unit: 'dBm',\n renderType: 'min',\n lineType: 'line',\n color: '#a7d0f1',\n __active: true\n },\n {\n fragment: 'c8y_MemoryMeasurement',\n series: 'Used',\n label: this.translateService.instant('Memory: used'),\n unit: 'MB',\n renderType: 'min',\n lineType: 'line',\n color: '#f75229',\n __active: true\n },\n {\n fragment: 'c8y_CPUMeasurement',\n series: 'Workload',\n label: this.translateService.instant('CPU: workload'),\n unit: '%',\n renderType: 'min',\n lineType: 'line',\n color: '#b24f3e',\n __active: true\n },\n {\n fragment: 'c8y_NetworkStatistics',\n series: 'Upload',\n label: this.translateService.instant('Network: upload'),\n unit: 'KB/s',\n renderType: 'min',\n lineType: 'line',\n color: '#88c039',\n __active: true\n },\n {\n fragment: 'c8y_SignalStrength',\n series: 'RCSP',\n label: this.translateService.instant('Signal: RCSP'),\n renderType: 'min',\n lineType: 'line',\n color: '#5e2f19',\n __active: true\n },\n {\n fragment: 'c8y_SignalStrength',\n series: 'RSCP',\n label: this.translateService.instant('Signal: RSCP'),\n renderType: 'min',\n lineType: 'line',\n color: '#5e2f19',\n __active: true\n },\n {\n fragment: 'c8y_SignalStrength',\n series: 'RSRP',\n label: this.translateService.instant('Signal: RSRP'),\n renderType: 'min',\n lineType: 'line',\n color: '#43ba3b',\n __active: true\n },\n {\n fragment: 'c8y_SignalStrength',\n series: 'RSRQ',\n label: this.translateService.instant('Signal: RSRQ'),\n renderType: 'min',\n lineType: 'line',\n color: '#14b0b3',\n __active: true\n },\n {\n fragment: 'c8y_SignalStrength',\n series: 'ber',\n label: this.translateService.instant('Signal: BER'),\n unit: '%',\n renderType: 'min',\n lineType: 'line',\n color: '#44ff33',\n __active: true\n },\n {\n fragment: 'c8y_SignalStrength',\n series: 'ECN0',\n label: this.translateService.instant('Signal: ECN0'),\n renderType: 'min',\n lineType: 'line',\n color: '#873efa',\n __active: true\n },\n {\n fragment: 'c8y_NetworkStatistics',\n series: 'Download',\n label: this.translateService.instant('Network: download'),\n unit: 'KB/s',\n renderType: 'min',\n lineType: 'line',\n color: '#f27a45',\n __active: true\n },\n {\n fragment: 'c8y_MemoryMeasurement',\n series: 'Total',\n label: this.translateService.instant('Memory: total'),\n unit: 'MB',\n renderType: 'min',\n lineType: 'line',\n color: '#dadd8c',\n __active: true\n }\n ],\n alarmsEventsConfigs: [\n {\n label: 'c8y_LocationUpdate',\n timelineType: 'EVENT',\n color: '#6f6cd0',\n filters: {\n type: 'c8y_LocationUpdate'\n },\n __active: true\n },\n {\n label: 'c8y_UnavailabilityAlarm',\n timelineType: 'ALARM',\n color: '#375bf2',\n filters: {\n type: 'c8y_UnavailabilityAlarm'\n },\n __active: true\n }\n ]\n },\n transformConfigWithContext(config, context, c8yDevices) {\n 'ngInject';\n return c8yDevices\n .getSupportedSeries(context.id)\n .then(supportedMeasurementSeries =>\n config.datapoints.filter(configMeasurement =>\n supportedMeasurementSeries.find(\n supportedSeries =>\n supportedSeries.fragment === configMeasurement.fragment &&\n supportedSeries.series === configMeasurement.series\n )\n )\n )\n .then(datapoints => ({ ...config, ...{ datapoints } }));\n }\n },\n {\n name: 'Asset Properties',\n title: gettext('Device data'),\n config: {\n options: {\n properties: [],\n allowDisplayAndEditKnownProperties: true,\n hiddenPropertiesKeyPaths: ['owner']\n }\n },\n _x: 0,\n _y: 7,\n _height: 8,\n _width: 4\n },\n {\n name: 'Alarm list',\n title: gettext('Active, critical alarms'),\n _x: 4,\n _y: 7,\n _height: 4,\n _width: 4,\n config: {\n options: {\n orderMode: 'ACTIVE_FIRST',\n severity: { CRITICAL: true },\n status: {\n ACTIVE: true,\n ACKNOWLEDGED: false,\n CLEARED: false\n },\n types: []\n }\n }\n },\n {\n name: 'deviceGroupAssignmentWidget',\n title: gettext('Group assignment'),\n _x: 8,\n _y: 7,\n _height: 4,\n _width: 4\n },\n {\n componentId: 'Map',\n title: gettext('Location'),\n _x: 4,\n _y: 11,\n _height: 4,\n _width: 8\n }\n ] as Widget[];\n\n constructor(\n private router: ActivatedRoute,\n private widgetService: WidgetService,\n private translateService: TranslateService\n ) {\n this.currentContext$ = this.router.parent.data.pipe(\n map(({ contextData }) => {\n this.title = contextData.name;\n return contextData;\n })\n );\n\n this.widgets$ = from(this.DEVICE_INFO_WIDGETS).pipe(\n mergeMap(widget => this.widgetService.mapLegacy(widget)),\n map(widget => ({\n ...widget,\n config: {\n ...widget.config,\n device: this.router.parent.snapshot.data.contextData\n }\n })),\n toArray()\n );\n\n this.widgetsSubscription = combineLatest([this.widgets$, this.currentContext$]).subscribe(\n () => {\n this.isLoading$.next(false);\n }\n );\n }\n\n ngOnDestroy() {\n this.widgetsSubscription.unsubscribe();\n }\n}\n","<c8y-title>\n {{ title }}\n</c8y-title>\n<c8y-widgets-dashboard\n [context]=\"currentContext$ | async\"\n [widgets]=\"widgets$ | async\"\n [settings]=\"{\n isLoading: isLoading$ | async,\n isDisabled: true,\n canDelete: false,\n translateWidgetTitle: true,\n allowFullscreen: false,\n canCopy: false\n }\"\n>\n</c8y-widgets-dashboard>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { CoreModule, hookRoute, ViewContext, gettext } from '@c8y/ngx-components';\nimport { ContextDashboardModule } from '../context-dashboard.module';\nimport { DeviceInfoDashboardComponent } from './device-info-dashboard.component';\n\n@NgModule({\n declarations: [DeviceInfoDashboardComponent],\n imports: [CommonModule, CoreModule, ContextDashboardModule],\n exports: [],\n entryComponents: [DeviceInfoDashboardComponent],\n providers: [\n hookRoute({\n context: ViewContext.Device,\n path: 'device-info',\n component: DeviceInfoDashboardComponent,\n label: gettext('Info'),\n priority: 10000,\n icon: 'asterisk'\n })\n ]\n})\nexport class DeviceInfoDashboardModule {}\n","import { Component, OnInit } from '@angular/core';\nimport { gettext, Widget } from '@c8y/ngx-components';\nimport { WidgetService } from '../widget.service';\n\n@Component({\n selector: 'c8y-device-management-home-dashboard',\n templateUrl: './device-management-home-dashboard.component.html'\n})\nexport class DeviceManagementHomeDashboardComponent implements OnInit {\n widgets = [];\n dashboardName = 'home-dm1';\n defaultWidgets = [\n {\n name: 'devicemanagement.welcome.widget',\n title: gettext('Quick links'),\n _x: 0,\n _y: 0,\n _height: 4,\n _width: 6\n },\n {\n name: 'Recent Alarms',\n title: gettext('Recent alarms'),\n _x: 6,\n _y: 0,\n _height: 4,\n _width: 6\n }\n ] as Widget[];\n\n constructor(private widgetService: WidgetService) {}\n\n ngOnInit() {\n this.defaultWidgets.map(async widget => {\n await this.widgetService\n .mapLegacy(widget)\n .then(transformedWidget => this.widgets.push(transformedWidget));\n });\n }\n}\n","<c8y-title>\n {{ 'Home' | translate }}\n</c8y-title>\n\n<c8y-context-dashboard\n [name]=\"dashboardName\"\n [defaultWidgets]=\"defaultWidgets\"\n [canDelete]=\"false\"\n></c8y-context-dashboard>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { CoreModule, gettext, hookNavigator, hookRoute } from '@c8y/ngx-components';\nimport { ContextDashboardModule } from '../context-dashboard.module';\nimport { DeviceManagementHomeDashboardComponent } from './device-management-home-dashboard.component';\n\n@NgModule({\n declarations: [DeviceManagementHomeDashboardComponent],\n imports: [CommonModule, CoreModule, ContextDashboardModule],\n exports: [],\n providers: [\n hookRoute({\n path: '',\n component: DeviceManagementHomeDashboardComponent\n }),\n hookNavigator({ label: gettext('Home'), icon: 'home', priority: 10000, path: '/' })\n ]\n})\nexport class DeviceManagementHomeDashboardModule {}\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { IManagedObject, InventoryService, IResultList } from '@c8y/client';\nimport { debounceTime, distinctUntilChanged, shareReplay, switchMap, tap } from 'rxjs/operators';\nimport {\n FilterInputComponent,\n gettext,\n ModalService,\n Status,\n AlertService,\n Permissions\n} from '@c8y/ngx-components';\nimport { DashboardDetailComponent } from '../dashboard-detail.component';\nimport { ContextDashboardService } from '../context-dashboard.service';\nimport { ContextDashboardType } from '../context-dashboard.model';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ReportDashboardService } from './report-dashboard.service';\n\n@Component({\n selector: 'c8y-report-dashboard-list',\n templateUrl: './report-dashboard-list.component.html'\n})\nexport class ReportDashboardListComponent implements OnInit {\n @ViewChild(FilterInputComponent, { static: false }) filter: FilterInputComponent;\n textFilter$: BehaviorSubject<string> = new BehaviorSubject('');\n reload$: BehaviorSubject<void> = new BehaviorSubject(null);\n reloading = false;\n reports$: Observable<IResultList<IManagedObject>> = combineLatest(\n this.textFilter$.pipe(debounceTime(400), distinctUntilChanged()),\n this.reload$\n ).pipe(\n tap(() => {\n this.reloading = true;\n }),\n switchMap(([text]) => this.loadReports(text)),\n tap(() => {\n this.reloading = false;\n }),\n shareReplay(1)\n );\n canAddReport = false;\n private readonly DELETED_SUCCESS_MSG = gettext('Report deleted.');\n\n constructor(\n private inventoryService: InventoryService,\n private contextDashboardService: ContextDashboardService,\n private bsModal: BsModalService,\n private translateService: TranslateService,\n private modal: ModalService,\n private alertService: AlertService,\n private reportDashboardService: ReportDashboardService,\n private permissions: Permissions\n ) {}\n\n ngOnInit() {\n this.canAddReport = this.permissions.hasAnyRole([\n 'ROLE_INVENTORY_CREATE',\n 'ROLE_INVENTORY_ADMIN'\n ]);\n }\n\n async loadReports(partialName?: string) {\n return partialName\n ? this.reportDashboardService.listReports({ filter: { name: `*${partialName}*` } })\n : this.reportDashboardService.listReports();\n }\n\n async add() {\n const initialState = {\n isReport: true,\n isNamedDashboard: true\n };\n const modal = this.bsModal.show(DashboardDetailComponent, {\n class: 'modal-lg',\n ignoreBackdropClick: true,\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n initialState\n }).content as DashboardDetailComponent;\n try {\n const cfg = await modal.result;\n const { name, icon, c8y_IsNavigatorNode, priority, description, ...dashboardCfg } = cfg;\n const report = (\n await this.reportDashboardService.createReport({\n name,\n icon,\n c8y_IsNavigatorNode,\n priority,\n description\n } as Partial<IManagedObject>)\n ).data;\n\n await this.contextDashboardService.create(\n dashboardCfg,\n undefined,\n `${this.contextDashboardService.REPORT_PARTIAL_NAME}${report.id}`\n );\n if (report.c8y_IsNavigatorNode) {\n this.reportDashboardService.addReportNavigatorNode(report);\n }\n this.reload$.next();\n modal.close();\n } catch (ex) {\n if (ex) {\n throw new Error(`Something went wrong: ${ex}`);\n }\n }\n }\n\n async delete(report: IManagedObject) {\n try {\n const dashboard = await this.contextDashboardService\n .getDashboard$(`report_${report.id}`, [ContextDashboardType.Named])\n .toPromise();\n const isDashboardFrozen = !!dashboard?.c8y_Dashboard?.isFrozen;\n\n const msg = isDashboardFrozen\n ? gettext(\n `You are about to delete the report \"{{ reportName }}\". Be aware that the report has a locked dashboard assigned. Do you want to proceed?`\n )\n : gettext(`You are about to delete the report \"{{ reportName }}\". Do you want to proceed?`);\n\n await this.modal.confirm(\n gettext('Delete report'),\n this.translateService.instant(msg, {\n reportName: report.name\n }),\n Status.DANGER,\n {\n ok: gettext('Delete'),\n cancel: gettext('Cancel')\n }\n );\n\n await this.contextDashboardService.delete(dashboard, false);\n await this.inventoryService.delete(report.id);\n this.alertService.success(this.DELETED_SUCCESS_MSG);\n if (report.c8y_IsNavigatorNode) {\n this.reportDashboardService.removeNavigatorNode(report);\n }\n this.reload$.next();\n } catch (ex) {\n if (ex) {\n throw new Error(`Something went wrong: ${ex}`);\n }\n }\n }\n\n async update(report: IManagedObject) {\n report.c8y_IsNavigatorNode = report.c8y_IsNavigatorNode ? {} : null;\n await this.inventoryService.update(report);\n report.c8y_IsNavigatorNode\n ? this.reportDashboardService.addReportNavigatorNode(report)\n : this.reportDashboardService.removeNavigatorNode(report);\n }\n}\n","<c8y-title>\n {{ 'Reports' | translate }}\n</c8y-title>\n\n<c8y-action-bar-item [placement]=\"'left'\" itemClass=\"navbar-form\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n type=\"search\"\n [attr.aria-label]=\"'Filter' | translate\"\n placeholder=\"{{ 'Filter…' | translate }}\"\n [ngModel]=\"textFilter$ | async\"\n (ngModelChange)=\"textFilter$.next($event)\"\n />\n <span class=\"input-group-addon\">\n <i c8yIcon=\"search\" *ngIf=\"(textFilter$ | async).length === 0\"></i>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n *ngIf=\"(textFilter$ | async).length > 0\"\n (click)=\"textFilter$.next('')\"\n px-event=\"Clear filtering reports\"\n ></i>\n </span>\n </div>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n type=\"button\"\n title=\"{{ 'Add report' | translate }}\"\n [attr.data-cy]=\"'reports-add-report-action-bar-button'\"\n (click)=\"add()\"\n [disabled]=\"!canAddReport\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add report' | translate }}\n </button>\n <button\n class=\"btn btn-dot m-r-16\"\n type=\"button\"\n aria-label=\"{{ 'Info' | translate}}\"\n popover=\"{{ 'You don\\'t have permission to add reports' | translate }}\"\n triggers=\"focus\"\n placement=\"top\"\n container=\"body\"\n *ngIf=\"!canAddReport\"\n >\n <i [c8yIcon]=\"'info-circle'\" class=\"text-primary\"></i>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n class=\"btn btn-link\"\n (click)=\"loadReports()\"\n >\n <i [ngClass]=\"{ 'icon-spin': reloading }\" c8yIcon=\"refresh\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/users-guide/cockpit/#reports\"></c8y-help>\n\n<c8y-list-group>\n <c8y-li\n class=\"page-sticky-header hidden-xs hidden-sm\"\n *ngIf=\"(reports$ | async)?.data.length > 0\"\n >\n <c8y-li-icon>\n <i class=\"p-l-24\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-60\">\n <div class=\"col-3\">\n {{ 'Report' | translate }}\n </div>\n <div class=\"col-6\">\n {{ 'Description' | translate }}\n </div>\n <div class=\"col-2\">\n {{ 'Show in navigator' | translate }}\n </div>\n </c8y-li-body>\n </c8y-li>\n\n <c8y-li *c8yFor=\"let report of reports$; let i = index; loadMore: 'auto'\">\n <c8y-li-icon [icon]=\"report.icon\"></c8y-li-icon>\n <c8y-li-body class=\"content-flex-60\">\n <div class=\"col-3\">\n <button\n class=\"btn-clean\"\n type=\"button\"\n title=\"{{ report.name }}\"\n routerLink=\"/reports/{{ report.id }}\"\n >\n <span class=\"text-truncate\">\n {{ report.name }}\n </span>\n </button>\n </div>\n <div class=\"col-6\">\n <p class=\"small text-truncate-wrap\">\n <em class=\"text-muted\" *ngIf=\"!report.description; else showDescription\">\n {{ 'No description available' | translate }}\n </em>\n <ng-template #showDescription>\n {{ report.description }}\n </ng-template>\n </p>\n </div>\n <div class=\"col-2 fit-h-20 m-t-xs-8\">\n <label class=\"c8y-switch c8y-switch--inline\" title=\"{{ 'Show in navigator' | translate }}\">\n <input\n [(ngModel)]=\"!!report.c8y_IsNavigatorNode\"\n type=\"checkbox\"\n (change)=\"update(report)\"\n />\n <span></span>\n <span class=\"visible-xs\">\n {{ 'Show in navigator' | translate }}\n </span>\n </label>\n </div>\n <div class=\"col-1 hidden-xs\">\n <button\n class=\"btn btn-dot btn-dot--danger showOnHover m-l-auto d-flex\"\n type=\"button\"\n [attr.aria-label]=\"'Remove report' | translate\"\n tooltip=\"{{ 'Remove report' | translate }}\"\n [delay]=\"500\"\n (click)=\"delete(report)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n <div class=\"visible-xs p-t-8 text-right\">\n <button\n class=\"btn btn-default btn-sm\"\n type=\"button\"\n title=\"{{ 'Remove report' | translate }}\"\n (click)=\"delete(report)\"\n >\n <i c8yIcon=\"delete\"></i>\n {{ 'Remove report' | translate }}\n </button>\n </div>\n </c8y-li-body>\n </c8y-li>\n</c8y-list-group>\n\n<c8y-ui-empty-state\n *ngIf=\"(reports$ | async)?.data.length === 0\"\n [icon]=\"'c8y-reports'\"\n [title]=\"'There are no reports defined.' | translate\"\n [subtitle]=\"'Add a report first.' | translate\"\n>\n <p>\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Add report' | translate }}\"\n [attr.data-cy]=\"'reports-add-report-empty-state-button'\"\n (click)=\"add()\"\n >\n {{ 'Add report' | translate }}\n </button>\n </p>\n <p c8y-guide-docs>\n <small translate ngNonBindable>\n Find out more in the\n <a c8y-guide-href=\"users-guide/cockpit/#reports\">User guide`KEEP_ORIGINAL`</a>\n .\n </small>\n </p>\n</c8y-ui-empty-state>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\nimport { ContextDashboardType } from '../context-dashboard.model';\nimport { ContextDashboardService } from '../context-dashboard.service';\nimport { tap } from 'rxjs/operators';\nimport { from, Observable, of } from 'rxjs';\nimport { Tab } from '@c8y/ngx-components';\n\n@Injectable()\nexport class ReportDashboardGuard {\n constructor(private contextDashboardService: ContextDashboardService) {}\n\n canActivate(route: ActivatedRouteSnapshot): Observable<boolean | Tab[]> {\n const reportId = route.data.contextData && route.data.contextData.id;\n return from(\n this.contextDashboardService.activateDashboards(route, [ContextDashboardType.Named])\n ).pipe(\n tap(res => {\n return Array.isArray(res) && res.length === 0\n ? this.createDashboardIfNotExist(reportId)\n : of(true);\n })\n );\n }\n\n createDashboardIfNotExist(reportId) {\n const dashboardCfg = {};\n return this.contextDashboardService\n .create(dashboardCfg, undefined, `report_${reportId}`)\n .then(() => true);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { CoreModule, hookNavigator, hookRoute, ViewContext } from '@c8y/ngx-components';\nimport { ContextDashboardModule } from '../context-dashboard.module';\n\nimport { ContextDashboardComponent } from '../context-dashboard.component';\nimport { ReportDashboardGuard } from './report-dashboard.guard';\nimport { ReportDashboardNavigationFactory } from './report-dashboard-navigation.factory';\nimport { ReportDashboardListComponent } from './report-dashboard-list.component';\nimport { ReportDashboardService } from './report-dashboard.service';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\n\n@NgModule({\n declarations: [ReportDashboardListComponent],\n entryComponents: [],\n imports: [\n CoreModule,\n ContextDashboardModule,\n TooltipModule.forRoot(),\n RouterModule.forChild([\n {\n path: 'reports',\n component: ReportDashboardListComponent\n }\n ]),\n PopoverModule\n ],\n providers: [\n ReportDashboardGuard,\n ReportDashboardService,\n hookRoute({\n path: 'dashboard/:dashboardId',\n component: ContextDashboardComponent,\n canActivate: [ReportDashboardGuard],\n context: ViewContext.Report\n }),\n hookNavigator(ReportDashboardNavigationFactory)\n ]\n})\nexport class ReportDashboardModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i3.ReportDashboardService","i4","i3","i2.ContextDashboardService","i5","i7","i9.AppearanceSettingsComponent","i10.WidgetPreviewComponent","i11.DashboardAvailabilityComponent","i1.AddDashboardFactory","i1.WidgetService","i4.ContextDashboardService","i6","i8","i4.WidgetService","i2.ContextDashboardComponent","i1.ContextDashboardService","i1.ContextDashboardModule","i2.WidgetService","i3.ContextDashboardComponent","i6.ReportDashboardService","i9","i10","i11"],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-context-dashboard.mjs","sources":["../../context-dashboard/context-dashboard.model.ts","../../context-dashboard/report-dashboard/report-dashboard.service.ts","../../context-dashboard/report-dashboard/report-dashboard-navigation.factory.ts","../../context-dashboard/context-dashboard.service.ts","../../context-dashboard/appearance-settings.component.ts","../../context-dashboard/appearance-settings.component.html","../../context-dashboard/widget-preview.component.ts","../../context-dashboard/widget-preview.component.html","../../context-dashboard/dashboard-availability.component.ts","../../context-dashboard/dashboard-availability.component.html","../../context-dashboard/dashboard-detail.component.ts","../../context-dashboard/dashboard-detail.component.html","../../context-dashboard/add-dashboard.factory.ts","../../context-dashboard/add-dashboard.component.ts","../../context-dashboard/add-dashboard.component.html","../../context-dashboard/cockpit-dashboard/cockpit-dashboard.model.ts","../../context-dashboard/widget.service.ts","../../context-dashboard/widget-config.component.ts","../../context-dashboard/widget-config.component.html","../../context-dashboard/context-dashboard.component.ts","../../context-dashboard/context-dashboard.component.html","../../context-dashboard/cockpit-dashboard/cockpit-dashboard.component.ts","../../context-dashboard/cockpit-dashboard/cockpit-dashboard.component.html","../../context-dashboard/paste-dashboard-action.component.ts","../../context-dashboard/dashboard-action-bar.factory.ts","../../context-dashboard/device-dashboard.guard.ts","../../context-dashboard/group-dashboard.guard.ts","../../context-dashboard/context-dashboard.module.ts","../../context-dashboard/cockpit-dashboard/cockpit-dashboard.module.ts","../../context-dashboard/device-info-dashboard/device-info-dashboard.component.ts","../../context-dashboard/device-info-dashboard/device-info-dashboard.component.html","../../context-dashboard/device-info-dashboard/device-info-dashboard.module.ts","../../context-dashboard/device-management-home-dashboard/device-management-home-dashboard.component.ts","../../context-dashboard/device-management-home-dashboard/device-management-home-dashboard.component.html","../../context-dashboard/device-management-home-dashboard/device-management-home-dashboard.module.ts","../../context-dashboard/report-dashboard/report-dashboard-list.component.ts","../../context-dashboard/report-dashboard/report-dashboard-list.component.html","../../context-dashboard/report-dashboard/report-dashboard.guard.ts","../../context-dashboard/report-dashboard/report-dashboard.module.ts","../../context-dashboard/c8y-ngx-components-context-dashboard.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { IManagedObject } from '@c8y/client';\nimport {\n Widget,\n DynamicComponentDefinition,\n Route,\n gettext,\n ViewContext\n} from '@c8y/ngx-components';\n\nexport const CONTEXT_DASHBOARD_CONFIG = new InjectionToken<any>('ContextDashboardConfig');\n\nexport interface ContextDashboardConfig {\n widgetFilter?: (component: DynamicComponentDefinition) => boolean;\n allowFullscreen?: boolean;\n routes?: Route[];\n}\n\nexport interface ContextWidgetConfig {\n /**\n * Settings that define how the default config component is\n * displayed. They are static and will not be saved.\n */\n settings?: {\n /**\n * Avoids to show the widget in the \"add widget\" modal\n */\n noNewWidgets?: boolean;\n ng1?: {\n options: {\n /**\n * Set this to false, to hide the device/group selector\n * @deprecated: This is currently only implemented in angularjs and will be exported to a separate component.\n */\n noDeviceTarget?: boolean;\n /**\n * Set this to false to only select devices\n * @deprecated: This is currently only implemented in angularjs and will be exported to a separate component.\n */\n groupsSelectable?: boolean;\n };\n /**\n * The context from the device selector.\n */\n context?: {\n id?: string;\n name?: string;\n };\n };\n /**\n * Additional settings passed to the configuration component.\n */\n [key: string]: any;\n };\n\n /**\n * Settings that are injected in any displaying component.\n */\n displaySettings?: {\n /**\n * If enabled the widget is bound to the global time context. You can listen to ngOnChanges() change detection\n * to react to changes on the context. When a more detailed configuration is needed, use the <c8y-widget-time-context>\n * component instead.\n */\n globalTimeContext?: boolean;\n };\n\n /**\n * Whatever should be added to the configuration when a widget is created.\n */\n config?: {\n /**\n * Any other information that should be stored here.\n */\n [key: string]: any;\n };\n /**\n * The selected device or group (note: naming is inconsistent as group was added later\n * but must stay for already implemented widgets)\n */\n device?: {\n id?: string | number;\n name?: string;\n [key: string]: any;\n };\n /**\n * Any other information that should be stored here.\n */\n [key: string]: any;\n}\n\nexport interface ContextDashboardManagedObject extends IManagedObject {\n c8y_Dashboard?: ContextDashboard;\n name?: string;\n}\n\nexport interface ContextDashboard {\n icon?: string;\n name?: string;\n priority?: number;\n deviceType?: boolean;\n deviceTypeValue?: string;\n isFrozen?: boolean;\n classes?: { [key: string]: boolean };\n widgetClasses?: { [key: string]: boolean };\n widgetMargin?: number;\n translateWidgetTitle?: boolean;\n global?: boolean;\n children?: {\n [id: string]: Widget;\n };\n globalRolesIds?: DashboardGlobalRoles;\n c8y_IsNavigatorNode?: object;\n description?: string;\n}\n\nexport enum ContextDashboardType {\n Device = 'device',\n DeviceType = 'type',\n Group = 'group',\n Named = 'name',\n Report = 'report'\n}\n\nexport const WIDGET_HEADER_CLASSES = [\n {\n label: gettext('Regular`style`'),\n class: 'panel-title-regular',\n description: gettext('The widget has no border between header and content.')\n },\n {\n label: gettext('Border`style`'),\n class: 'panel-title-border',\n description: gettext('The widget has a small separation border between header and content.')\n },\n {\n label: gettext('Overlay`style`'),\n class: 'panel-title-overlay',\n description: gettext('The widget content overlays the header.')\n },\n {\n label: gettext('Hidden`style`'),\n class: 'panel-title-hidden',\n description: gettext('The widget header is not shown.')\n }\n];\n\nexport const WIDGET_CONTENT_CLASSES = [\n {\n label: gettext('Match dashboard`style`'),\n class: 'panel-content-light',\n description: gettext('The widget appearance matches the dashboard appearance.')\n },\n {\n label: gettext('Light`style`'),\n class: 'panel-content-white',\n description: gettext('The widget has light appearance, that is, dark text on light background.')\n },\n {\n label: gettext('Dark`style`'),\n class: 'panel-content-dark',\n description: gettext('The widget has dark appearance, that is, light text on dark background.')\n },\n {\n label: gettext('Transparent`style`'),\n class: 'panel-content-transparent',\n description: gettext('The widget has no background.')\n },\n {\n label: gettext('Branded`style`'),\n class: 'panel-content-branded',\n description: gettext('The widget is styled with the main brand color.')\n }\n];\n\nexport const DASHBOARD_THEME_CLASSES = [\n {\n label: gettext('Match UI`theme`'),\n class: 'dashboard-theme-light',\n description: gettext('The dashboard appearance matches the UI appearance.')\n },\n {\n label: gettext('Light`theme`'),\n class: 'dashboard-theme-white',\n description: gettext(\n 'The dashboard has light appearance, that is, dark text on light background.'\n )\n },\n {\n label: gettext('Dark`theme`'),\n class: 'dashboard-theme-dark',\n description: gettext(\n 'The dashboard has dark appearance, that is, light text on dark background.'\n )\n },\n // {\n // label: gettext('Transparent`theme`'),\n // class: 'dashboard-theme-transparent',\n // description: gettext(\n // 'The dashboard is styled with a transparent background and therefore is border-less.'\n // )\n // },\n {\n label: gettext('Branded`theme`'),\n class: 'dashboard-theme-branded',\n description: gettext('The dashboard is styled using the brand palette.')\n }\n];\n\nexport const STYLING_CLASS_PREFIXES = ['dashboard-theme-', 'panel-title-', 'panel-content-'];\n\nexport interface DashboardCopyClipboard {\n dashboard: ContextDashboard;\n context: DashboardContext;\n}\n\nexport interface DashboardContext {\n context: ViewContext;\n contextData: Partial<IManagedObject>;\n}\n\nexport const ALL_GLOBAL_ROLES_SELECTED = 'all' as const;\nexport type DashboardGlobalRoles = number[] | typeof ALL_GLOBAL_ROLES_SELECTED;\n\nexport const PRODUCT_EXPERIENCE = {\n DASHBOARD: {\n EVENTS: {\n DASHBOARD_AVAILABILITY: 'dashboardAvailability'\n },\n COMPONENTS: {\n DASHBOARD_AVAILABILITY: 'dashboard-availability'\n },\n ACTIONS: {\n APPLY_GLOBAL_ROLES_CHANGES: 'applyGlobalRolesChanges'\n }\n }\n};\n","import { Injectable } from '@angular/core';\nimport { IManagedObject, InventoryService, QueriesUtil } from '@c8y/client';\nimport { NavigatorNode, NavigatorService } from '@c8y/ngx-components';\n\n@Injectable()\nexport class ReportDashboardService {\n private queriesUtil: QueriesUtil;\n constructor(\n private inventoryService: InventoryService,\n private navigatorService: NavigatorService\n ) {\n this.queriesUtil = new QueriesUtil();\n }\n\n listReports(options: { filter?: any; pageSize?: number } = {}) {\n let query = { __has: 'c8y_Report' };\n if (options.filter) {\n query = this.queriesUtil.addAndFilter(query, options.filter);\n }\n const filters = {\n query: this.queriesUtil.buildQuery(query),\n pageSize: options.pageSize || 50,\n withTotalPages: true\n };\n return this.inventoryService.list(filters);\n }\n\n createReport(reportCfg: Partial<IManagedObject>) {\n const report: Partial<IManagedObject> = {};\n Object.assign(report, reportCfg);\n Object.assign(report, { c8y_Report: {} });\n return this.inventoryService.create(report);\n }\n\n addReportNavigatorNode(report: IManagedObject): void {\n const node = new NavigatorNode({\n label: report.name,\n path: `reports/${report.id}`,\n icon: report.icon,\n priority: report.priority\n });\n this.navigatorService.add(node);\n }\n\n removeNavigatorNode(report: IManagedObject) {\n this.navigatorService.state.forEach(node => {\n if (node.path === `reports/${report.id}`) {\n this.navigatorService.remove(node);\n return;\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IManagedObject, InventoryService } from '@c8y/client';\nimport { NavigatorNode, NavigatorService, gettext } from '@c8y/ngx-components';\nimport { ReportDashboardService } from './report-dashboard.service';\n\nconst REPORTS_NAVIGATOR_NODE_PRIORITY = 40;\nexport const REPORT_DEFAULT_NAVIGATION_NODE_PRIORITY = 30;\n\n@Injectable({ providedIn: 'root' })\nexport class ReportDashboardNavigationFactory {\n loaded = false;\n\n constructor(\n private navigatorService: NavigatorService,\n private inventoryService: InventoryService,\n private reportDashboardService: ReportDashboardService\n ) {}\n\n async get() {\n if (!this.loaded) {\n this.loaded = true;\n\n this.navigatorService.add(\n new NavigatorNode({\n label: gettext('Reports'),\n path: 'reports',\n icon: 'c8y-reports',\n featureId: 'reports',\n priority: REPORTS_NAVIGATOR_NODE_PRIORITY\n })\n );\n\n const reports: IManagedObject[] = (\n await this.reportDashboardService.listReports({\n filter: { __has: 'c8y_IsNavigatorNode' },\n pageSize: 2000\n })\n ).data;\n reports.forEach(report => {\n const node = new NavigatorNode({\n label: report.name,\n path: `reports/${report.id}`,\n icon: report.icon,\n priority: report.priority,\n routerLinkExact: false\n });\n this.navigatorService.add(node);\n });\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Router } from '@angular/router';\nimport { IManagedObject, InventoryService, IResultList } from '@c8y/client';\nimport {\n AlertService,\n ContextData,\n DynamicComponentService,\n getActivatedRoute,\n gettext,\n ModalService,\n NavigatorNode,\n NavigatorService,\n Permissions,\n Status,\n Tab,\n TabsService,\n ViewContext,\n Widget\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n assign,\n pick,\n some,\n keys,\n keyBy,\n has,\n get,\n forEach,\n cloneDeep,\n reduce,\n set\n} from 'lodash-es';\nimport { combineLatest, from, Observable, of } from 'rxjs';\nimport {\n catchError,\n filter,\n map,\n mergeAll,\n mergeMap,\n tap,\n throwIfEmpty,\n toArray\n} from 'rxjs/operators';\nimport {\n ContextDashboard,\n ContextDashboardManagedObject,\n ContextDashboardType,\n DashboardContext,\n DashboardCopyClipboard,\n STYLING_CLASS_PREFIXES,\n ALL_GLOBAL_ROLES_SELECTED\n} from './context-dashboard.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ContextDashboardService {\n readonly REPORT_PARTIAL_NAME = 'report_';\n copyClipboard: DashboardCopyClipboard;\n private readonly INVENTORY_ROLES = ['ROLE_INVENTORY_ADMIN'];\n private cache = new Map<string, ContextDashboardManagedObject>();\n private readonly DEFAULT_PAGESIZE = 1000;\n private readonly FRAGMENT_NAME = 'c8y_Dashboard';\n private readonly DASHBOARD_ROUTE_PATH = 'dashboard';\n private readonly INDEX_SPLIT = '!';\n private _formDisabled = true;\n\n get formDisabled() {\n return this._formDisabled;\n }\n\n set formDisabled(value) {\n this._formDisabled = value;\n }\n\n constructor(\n private inventory: InventoryService,\n private tabs: TabsService,\n private modal: ModalService,\n private translateService: TranslateService,\n private router: Router,\n private navigator: NavigatorService,\n private permissions: Permissions,\n private alert: AlertService,\n private dynamicComponent: DynamicComponentService\n ) {}\n\n async create(dashboardCfg: ContextDashboard, context?: ContextData, name = '') {\n let id = '';\n let dashboardType;\n\n if (context) {\n id = context.contextData.id as string;\n dashboardType = this.getDashboardTypeFromViewContext(dashboardCfg, context);\n }\n if (name) {\n dashboardType = ContextDashboardType.Named;\n }\n\n const dashboard: Partial<IManagedObject> = {};\n assign(dashboard, { c8y_Dashboard: dashboardCfg });\n\n const value =\n dashboardType === ContextDashboardType.DeviceType ? dashboardCfg.deviceTypeValue : name || id;\n\n const fragmentKey = this.createFragmentKey(dashboardType, value);\n dashboard[fragmentKey] = {};\n\n if (this.shouldSetGlobal(dashboard, context)) {\n assign(dashboard, { c8y_Global: {} });\n }\n dashboard.name = dashboard.c8y_Dashboard.name;\n const { data } =\n dashboardType === ContextDashboardType.Group ||\n dashboardType === ContextDashboardType.Device ||\n (context && dashboardType === ContextDashboardType.Named)\n ? await this.inventory.childAdditionsCreate(dashboard, id)\n : await this.inventory.create(dashboard);\n return data as ContextDashboardManagedObject;\n }\n\n async detail(dashboardMO: ContextDashboardManagedObject) {\n const { data } = await this.inventory.detail(dashboardMO);\n this.cache.set(dashboardMO.id, data);\n return data;\n }\n\n async update(dashboard: ContextDashboardManagedObject) {\n dashboard.name = dashboard.c8y_Dashboard.name;\n const keepFragments = this.clean(pick(dashboard, [this.FRAGMENT_NAME, 'id', 'name']));\n keepFragments.c8y_Global = this.shouldSetGlobal(dashboard);\n await this.serializeWidgetConfigs(keepFragments);\n const { data } = await this.inventory.update(keepFragments);\n this.cache.set(dashboard.id, data);\n return data;\n }\n\n async delete(dashboard: ContextDashboardManagedObject, withConfirmation = true) {\n try {\n if (withConfirmation) {\n let msg: string = gettext(\n `You are about to delete the dashboard \"{{ dashboardName }}\". Do you want to proceed?`\n );\n if (this.isDeviceType(dashboard)) {\n msg = gettext(\n `You are about to delete the dashboard \"{{ dashboardName }}\" from all devices of the type \"{{ deviceType }}\".\n Do you want to proceed?`\n );\n }\n await this.modal.confirm(\n gettext('Delete dashboard'),\n this.translateService.instant(msg, {\n dashboardName: dashboard.c8y_Dashboard.name,\n deviceType: dashboard.c8y_Dashboard.deviceTypeValue\n }),\n Status.DANGER,\n {\n ok: gettext('Delete'),\n cancel: gettext('Cancel')\n }\n );\n }\n await this.inventory.delete(dashboard);\n const tabToRemove = Array.from(this.tabs.state).find(tab =>\n tab.path.endsWith(`${this.DASHBOARD_ROUTE_PATH}/${dashboard.id}`)\n );\n this.tabs.remove(tabToRemove);\n this.tabs.refresh();\n } catch (ex) {\n // intended empty\n }\n }\n\n activateDashboards(\n route: ActivatedRouteSnapshot,\n types: ContextDashboardType[]\n ): Observable<boolean | Tab[]> {\n const { dashboardId } = route.params;\n if (dashboardId) {\n return this.getDashboard$(dashboardId, types, route.parent.data.contextData).pipe(\n tap(dashboard => {\n route.data = { dashboard };\n }),\n map(() => true),\n catchError(() => {\n return of(false);\n })\n );\n }\n\n return this.getTabs$(route.data.contextData, types);\n }\n\n getNamedDashboardOrCreate(name: string, defaultWidgets: Widget[], context?: ContextData) {\n const children = this.mapWidgets(defaultWidgets);\n return this.getDashboard$(name, [ContextDashboardType.Named]).pipe(\n throwIfEmpty(),\n catchError(() =>\n from(\n this.create(\n {\n children,\n widgetClasses: { 'dashboard-theme-light': true, 'panel-title-regular': true }\n },\n context,\n name\n )\n )\n )\n );\n }\n\n async refreshTabs(dashboardMO: ContextDashboardManagedObject) {\n if (!this.isNamed(dashboardMO)) {\n const tabToUpdate = Array.from(this.tabs.state).find(tab =>\n tab.path.endsWith(`${this.DASHBOARD_ROUTE_PATH}/${dashboardMO.id}`)\n );\n\n const data = await this.detail(dashboardMO);\n if (tabToUpdate) {\n const { icon, priority, name } = data.c8y_Dashboard;\n tabToUpdate.icon = icon;\n tabToUpdate.priority = priority;\n tabToUpdate.label = name;\n }\n this.tabs.refresh();\n }\n }\n\n updateNavigatorItem(mo: IManagedObject) {\n this.navigator.state.forEach(node => {\n if (node.path === `reports/${mo.id}`) {\n this.navigator.remove(node);\n }\n });\n if (mo.c8y_IsNavigatorNode) {\n const nodeToAdd = new NavigatorNode({\n label: mo.name,\n path: `reports/${mo.id}`,\n icon: mo.icon,\n priority: mo.priority\n });\n this.navigator.add(nodeToAdd);\n }\n }\n\n async navigateToDashboard(dashboardMO: ContextDashboardManagedObject) {\n if (/dashboard/.test(this.router.url)) {\n this.router.navigate(['..', dashboardMO.id], {\n relativeTo: getActivatedRoute(this.router)\n });\n } else {\n this.router.navigate(['..', this.DASHBOARD_ROUTE_PATH, dashboardMO.id], {\n relativeTo: getActivatedRoute(this.router)\n });\n }\n }\n\n canEditDashboard(mo) {\n return this.permissions.canEdit(['ROLE_INVENTORY_ADMIN', 'ROLE_INVENTORY_CREATE'], mo);\n }\n\n isNamed(dashboard: Partial<ContextDashboardManagedObject>) {\n return some(keys(dashboard), prop =>\n new RegExp(\n `^${this.FRAGMENT_NAME}${this.INDEX_SPLIT}${ContextDashboardType.Named}${this.INDEX_SPLIT}`\n ).test(prop)\n );\n }\n\n isReport(dashboard: Partial<ContextDashboardManagedObject>) {\n return some(keys(dashboard), prop =>\n new RegExp(\n `^${this.FRAGMENT_NAME}${this.INDEX_SPLIT}${ContextDashboardType.Named}${this.INDEX_SPLIT}${this.REPORT_PARTIAL_NAME}`\n ).test(prop)\n );\n }\n\n isDeviceType(dashboard: Partial<ContextDashboardManagedObject>) {\n return some(keys(dashboard), prop =>\n new RegExp(\n `^${this.FRAGMENT_NAME}${this.INDEX_SPLIT}${ContextDashboardType.DeviceType}${this.INDEX_SPLIT}`\n ).test(prop)\n );\n }\n\n isDeviceDashboard(dashboard: Partial<ContextDashboardManagedObject>): boolean {\n return some(keys(dashboard), prop =>\n new RegExp(\n `^${this.FRAGMENT_NAME}${this.INDEX_SPLIT}${ContextDashboardType.Device}${this.INDEX_SPLIT}`\n ).test(prop)\n );\n }\n\n isGroupDashboard(dashboard: Partial<ContextDashboardManagedObject>): boolean {\n return some(keys(dashboard), prop =>\n new RegExp(\n `^${this.FRAGMENT_NAME}${this.INDEX_SPLIT}${ContextDashboardType.Group}${this.INDEX_SPLIT}`\n ).test(prop)\n );\n }\n\n getFilteredDashboardStyles(styleList: string[]) {\n return styleList.filter(c =>\n STYLING_CLASS_PREFIXES.some(classPrefix => c.startsWith(classPrefix))\n );\n }\n\n getStyling(styleList, styleName, defaultValue) {\n const styling = styleList.find(\n style => style && new RegExp(`-${styleName}$`, 'i').test(style.class)\n );\n return styling ? styling.class : defaultValue;\n }\n\n mapWidgets(widgets: Widget[]) {\n return keyBy(\n widgets.map(widget => {\n widget.id = String(Math.random()).substr(2);\n return widget;\n }),\n 'id'\n );\n }\n\n getDashboard$(dashboardIdOrName, dashboardType: ContextDashboardType[], mo?: IManagedObject) {\n const cache = this.cache.get(dashboardIdOrName);\n\n const dashboards = mo\n ? this.getContextDashboards(mo, dashboardType)\n : [this.getNamedDashboard(dashboardIdOrName)];\n\n const cacheRefresh = this.getContextDashboards$(dashboards).pipe(\n tap(dashboard => this.cacheDashboard(dashboard)),\n filter(\n dashboard =>\n dashboard.id === dashboardIdOrName ||\n has(\n dashboard,\n `${this.FRAGMENT_NAME}${this.INDEX_SPLIT}${ContextDashboardType.Named}${this.INDEX_SPLIT}${dashboardIdOrName}`\n )\n )\n );\n return cache ? of(cache) : cacheRefresh;\n }\n\n async pasteDashboard(newContext: DashboardContext): Promise<void> {\n if (this.copyClipboard) {\n if (this.canPasteDashboard(this.copyClipboard, newContext.context)) {\n const dashboardToPaste = this.createContextDashboardCopy(\n this.copyClipboard.dashboard,\n newContext.contextData,\n this.copyClipboard.context.contextData\n );\n const dashboard = await this.create(this.clean(dashboardToPaste), newContext);\n this.copyClipboard = undefined;\n this.navigateToDashboard(dashboard);\n }\n }\n }\n\n private async serializeWidgetConfigs(dashboard: ContextDashboardManagedObject): Promise<void> {\n const children = cloneDeep(dashboard.c8y_Dashboard.children);\n if (!children) {\n return;\n }\n const configs = Object.values(children);\n const details = configs.map(({ componentId, config }) => ({ componentId, config }));\n const results = await this.dynamicComponent.serializeConfigs(details);\n results.forEach((result, index) => {\n Object.entries(result).forEach(([key, value]) => {\n set(details[index].config, key, value);\n });\n });\n dashboard.c8y_Dashboard.children = children;\n }\n\n private canPasteDashboard(\n copyClipboard: DashboardCopyClipboard,\n currentContext: ViewContext\n ): boolean {\n const clipboardViewContext = copyClipboard.context.context;\n\n if (currentContext !== clipboardViewContext) {\n if (clipboardViewContext === ViewContext.Device) {\n this.alert.warning(gettext('Device dashboards can only be copied into a device.'));\n } else if (clipboardViewContext === ViewContext.Group) {\n this.alert.warning(gettext('Group dashboards can only be copied into a group.'));\n }\n return false;\n }\n return true;\n }\n\n private createContextDashboardCopy(\n dash: ContextDashboard,\n newContext: Partial<IManagedObject>,\n oldContext: Partial<IManagedObject>\n ): ContextDashboard {\n const children = reduce(\n dash.children,\n (_children, child) => {\n const { id } = child;\n const cfg = child.config;\n const propertiesToCopy = {\n device: device => this.replaceContextInObj(device, newContext, oldContext),\n datapoints: dataPoints =>\n this.replaceContextInDataPoints(dataPoints, newContext, oldContext),\n dataPoints: dataPoints =>\n this.replaceContextInDataPoints(dataPoints, newContext, oldContext),\n datapointsGauge: dataPoints =>\n this.replaceContextInDataPoints(dataPoints, newContext, oldContext),\n datapointsLabels: dataPoints =>\n this.replaceContextInDataPoints(dataPoints, newContext, oldContext)\n };\n\n if (cfg) {\n this.copyProperties(cfg, propertiesToCopy);\n if (cfg.options) {\n this.copyProperties(cfg.options, propertiesToCopy);\n }\n }\n\n _children[id] = cloneDeep(child);\n return _children;\n },\n {}\n );\n\n dash.children = children;\n return dash;\n }\n\n private copyProperties(obj, propertiesToCopy) {\n forEach(propertiesToCopy, (copyFn, property) => {\n if (obj[property]) {\n obj[property] = copyFn(obj[property]);\n }\n });\n }\n\n private replaceContextInDataPoints(\n dataPoints,\n newContext: Partial<IManagedObject>,\n oldContext: Partial<IManagedObject>\n ) {\n dataPoints.forEach(dp => {\n dp.__target = this.replaceContextInObj(dp.__target, newContext, oldContext);\n });\n return dataPoints;\n }\n\n private replaceContextInObj(\n obj: Partial<IManagedObject>,\n newContext: Partial<IManagedObject>,\n oldContext: Partial<IManagedObject>\n ) {\n if (obj && obj.id === oldContext.id) {\n Object.assign(obj, pick(newContext, ['id', 'name']));\n }\n return obj;\n }\n\n private getTabs$(mo: ContextDashboardManagedObject, dashboardType: ContextDashboardType[]) {\n const dashboards = this.getContextDashboards(mo, dashboardType);\n\n return this.getContextDashboards$(dashboards).pipe(\n mergeMap(dashboard => this.verifyDashboardAvailability$(dashboard)),\n mergeMap(([dashboard]) => this.removeDashboardMoProperty(dashboard)),\n tap(dashboard => this.cacheDashboard(dashboard)),\n map(dashboard => this.createDashboardTab(dashboard)),\n toArray()\n );\n }\n\n private verifyDashboardAvailability$(dashboard: ContextDashboardManagedObject) {\n const globalRolesIds = dashboard?.c8y_Dashboard?.globalRolesIds;\n const canEdit = from(\n this.permissions.canEdit(this.INVENTORY_ROLES, dashboard, { skipRequestCheck: true })\n );\n const hasAnyGlobalRole =\n !globalRolesIds || globalRolesIds === ALL_GLOBAL_ROLES_SELECTED\n ? of(true)\n : of(this.permissions.hasAnyGlobalRole(globalRolesIds));\n\n return combineLatest([of(dashboard), canEdit, hasAnyGlobalRole]).pipe(\n filter(([, canEdit, hasAnyGlobalRole]) => canEdit || hasAnyGlobalRole)\n );\n }\n\n private getContextDashboards$(requests: Array<Promise<IResultList<IManagedObject>>>) {\n return from(requests).pipe(\n mergeAll(),\n mergeMap(response => response.data as ContextDashboardManagedObject[])\n );\n }\n\n /**\n * Cleans already corrupted dashboards from dashboardMo property.\n * Added to fix dashboards on the cloud instance (eu-latest).\n * @deprecated This is going to be removed after 1007.7.0.\n */\n private async removeDashboardMoProperty(\n dashboard: ContextDashboardManagedObject\n ): Promise<ContextDashboardManagedObject> {\n const dashboardCopy = cloneDeep(dashboard);\n const children = get(dashboardCopy, 'c8y_Dashboard.children');\n let updateDashboard = false;\n\n forEach(children, child => {\n if (get(child, 'componentTransformConfigWithContext')) {\n delete child.componentTransformConfigWithContext;\n updateDashboard = true;\n }\n if (get(child, 'config.dashboardMo')) {\n delete child.config.dashboardMo;\n updateDashboard = true;\n }\n });\n\n if (updateDashboard) {\n await this.update(dashboardCopy);\n }\n return dashboardCopy;\n }\n\n private cacheDashboard(dashboard: ContextDashboardManagedObject) {\n this.cache.set(dashboard.id, dashboard);\n }\n\n private createDashboardTab(dashboard: ContextDashboardManagedObject) {\n const { c8y_Dashboard: _dashboard, id } = dashboard;\n return {\n icon: _dashboard.icon,\n path: `${this.DASHBOARD_ROUTE_PATH}/${id}`,\n label: _dashboard.name,\n priority: _dashboard.priority,\n hide: this.isReport(dashboard)\n } as Tab;\n }\n\n private clean(dashboard) {\n const jsonString = JSON.stringify(dashboard, (key, value) => {\n if (key === '$$hashKey' || key === 'klasses') {\n return undefined;\n }\n\n return value;\n });\n return JSON.parse(jsonString);\n }\n\n private getNamedDashboard(name: string) {\n return this.inventory.list({\n fragmentType: `${this.FRAGMENT_NAME}${this.INDEX_SPLIT}${ContextDashboardType.Named}${this.INDEX_SPLIT}${name}`,\n pageSize: 1\n });\n }\n\n private getContextDashboards(mo: IManagedObject, dashboardType: ContextDashboardType[]) {\n return dashboardType.map((type: ContextDashboardType) =>\n this.inventory.list({\n fragmentType: this.createDashboardFragment(mo, type),\n pageSize: this.DEFAULT_PAGESIZE\n })\n );\n }\n\n private createDashboardFragment(mo: IManagedObject, type: ContextDashboardType) {\n let value;\n if (mo.c8y_Report) {\n value = `${this.REPORT_PARTIAL_NAME}${mo.id}`;\n } else {\n value = type === ContextDashboardType.DeviceType ? mo.type : mo.id;\n }\n return `${this.FRAGMENT_NAME}${this.INDEX_SPLIT}${type}${this.INDEX_SPLIT}${value}`;\n }\n\n private getDashboardTypeFromViewContext(dashboardCfg, context) {\n let dashboardType;\n if (context.context === ViewContext.Device) {\n dashboardType = dashboardCfg.deviceType\n ? ContextDashboardType.DeviceType\n : ContextDashboardType.Device;\n }\n if (context.context === ViewContext.Group) {\n dashboardType = ContextDashboardType.Group;\n }\n return dashboardType;\n }\n\n private createFragmentKey(contextDashboardType: ContextDashboardType, value: string) {\n return [this.FRAGMENT_NAME, contextDashboardType, value].join(this.INDEX_SPLIT);\n }\n\n private shouldSetGlobal(dashboard: Partial<ContextDashboardManagedObject>, context?) {\n if (\n (!context && this.isNamed(dashboard) && !this.isReport(dashboard)) ||\n this.isDeviceType(dashboard)\n ) {\n return {};\n }\n return null;\n }\n}\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { DASHBOARD_THEME_CLASSES, WIDGET_HEADER_CLASSES } from './context-dashboard.model';\nimport { ControlContainer, NgForm } from '@angular/forms';\n\n@Component({\n selector: 'c8y-appearance-settings',\n templateUrl: './appearance-settings.component.html',\n viewProviders: [{ provide: ControlContainer, useExisting: NgForm }]\n})\nexport class AppearanceSettingsComponent {\n @Input()\n themeClass = 'dashboard-theme-light';\n @Input()\n headerClass = 'panel-title-regular';\n @Input()\n defaultThemeClass: string;\n @Input()\n defaultHeaderClass: string;\n @Output()\n themeClassChange = new EventEmitter<string>();\n @Output()\n headerClassChange = new EventEmitter<string>();\n\n @Input()\n possibleStylingTheme = DASHBOARD_THEME_CLASSES;\n\n @Input()\n possibleStylingHeader = WIDGET_HEADER_CLASSES;\n\n themeClassClick(value) {\n value = this.resetToDefault(value, this.themeClass, this.defaultThemeClass);\n this.themeClass = value;\n this.themeClassChange.emit(value);\n }\n\n headerClassClick(value) {\n value = this.resetToDefault(value, this.headerClass, this.defaultHeaderClass);\n this.headerClass = value;\n this.headerClassChange.emit(value);\n }\n\n private resetToDefault(value: string, compareTo: string, defaultValue: string) {\n if (defaultValue && value === compareTo) {\n value = defaultValue;\n }\n return value;\n }\n}\n","<div class=\"legend form-block\">\n <span translate>Layout</span>\n</div>\n<div class=\"row\">\n <div class=\"col-sm-6 m-b-32\">\n <label translate>Theme</label>\n <ul class=\"list-group\">\n <li\n class=\"list-group-item d-flex a-i-center p-l-0 p-r-0 fit-w\"\n *ngFor=\"let themeClassItem of possibleStylingTheme; let i = index\"\n >\n <div class=\"list-item-checkbox\" style=\"max-width: calc(100% - 24px)\">\n <label class=\"c8y-radio\">\n <input\n type=\"radio\"\n [id]=\"'groupradiocontentclass' + i\"\n name=\"content\"\n [value]=\"themeClassItem.class\"\n [ngModel]=\"themeClass\"\n (click)=\"themeClassClick(themeClassItem.class)\"\n />\n <span></span>\n <span\n class=\"text-truncate\"\n title=\"{{ themeClassItem.label | translate }}{{\n themeClassItem.class === defaultThemeClass\n ? ' | ' + ('Dashboard default' | translate)\n : ''\n }}\"\n >\n <span>{{ themeClassItem.label | translate }}</span>\n <br />\n <small\n *ngIf=\"themeClassItem.class === defaultThemeClass\"\n class=\"text-muted\"\n translate\n >\n Dashboard default\n </small>\n </span>\n </label>\n </div>\n\n <button\n class=\"btn-help btn-help--sm m-l-auto\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ themeClassItem.description | translate }}\"\n placement=\"top\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </li>\n </ul>\n </div>\n <div class=\"col-sm-6\">\n <label translate>Widget header style</label>\n <ul class=\"list-group\">\n <li\n class=\"list-group-item d-flex a-i-center p-l-0 p-r-0\"\n *ngFor=\"let headerClassItem of possibleStylingHeader; let i = index\"\n >\n <div class=\"list-item-checkbox\" style=\"max-width: calc(100% - 24px)\">\n <label class=\"c8y-radio\">\n <input\n type=\"radio\"\n [id]=\"'groupradioheaderclass' + i\"\n name=\"header\"\n [value]=\"headerClassItem.class\"\n [ngModel]=\"headerClass\"\n (click)=\"headerClassClick(headerClassItem.class)\"\n />\n <span></span>\n <span\n class=\"text-truncate\"\n title=\"{{ headerClassItem.label | translate }}{{\n headerClassItem.class === defaultHeaderClass\n ? ' | ' + ('Dashboard default' | translate)\n : ''\n }}\"\n >\n <span>{{ headerClassItem.label | translate }}</span>\n <br />\n <small\n *ngIf=\"headerClassItem.class === defaultHeaderClass\"\n class=\"text-muted\"\n translate\n >\n Dashboard default\n </small>\n </span>\n </label>\n </div>\n <button\n class=\"btn-help btn-help--sm m-l-auto\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ headerClassItem.description | translate }}\"\n placement=\"top\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </li>\n </ul>\n </div>\n</div>\n","import { Input, Component } from '@angular/core';\n\n@Component({\n selector: 'c8y-widget-preview',\n templateUrl: './widget-preview.component.html'\n})\nexport class WidgetPreviewComponent {\n @Input()\n previewClasses: { [key: string]: boolean } = {\n 'dashboard-theme-light': true,\n 'panel-title-regular': true\n };\n\n @Input()\n tab: { name: string; icon: string };\n}\n","<div class=\"legend form-block\" translate>Preview</div>\n<label *ngIf=\"tab\" translate>Tab and layout</label>\n<label *ngIf=\"!tab\" translate>Layout</label>\n<div class=\"dashboard-preview-slot\" [ngClass]=\"previewClasses\">\n <div\n class=\"page-tabs page-tabs-horizontal navigator-open p-absolute overflow-hidden\"\n style=\"left: 0; margin: 0 15px\"\n *ngIf=\"tab\"\n >\n <div class=\"tabContainer hidden-xs\">\n <ul role=\"menu\" class=\"nav nav-tabs nav-tabsc8y\">\n <li role=\"menuitem\" class=\"active\" style=\"left: 16px\">\n <a routerlinkactive=\"\" title=\"{{ tab.name }}\">\n <i class=\"text-primary\" [c8yIcon]=\"tab.icon\"></i>\n <span class=\"txt\">{{ tab.name }}</span>\n </a>\n </li>\n </ul>\n </div>\n <div class=\"visible-xs mobile-tabs\"></div>\n </div>\n <div [ngClass]=\"{ 'm-t-64': !!tab }\">\n <div class=\"card card-dashboard\" style=\"height: 300px\">\n <div class=\"card-header-actions\" style=\"z-index: 8\">\n <div class=\"card-title\">\n <span translate>Widget title</span>\n </div>\n <div class=\"header-actions\">\n <div class=\"optionsBtn dropdown\">\n <button\n type=\"button\"\n title=\"{{ 'Settings' | translate }}\"\n (click)=\"(false)\"\n class=\"btn btn-dot dropdown-toggle c8y-dropdown\"\n aria-haspopup=\"true\"\n >\n <i c8yIcon=\"cog\"></i>\n </button>\n </div>\n </div>\n </div>\n <div class=\"card-inner-scroll p-t-16\">\n <p translate>Widget example content.</p>\n </div>\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IUserGroup, UserGroupService } from '@c8y/client';\nimport { GainsightService, Item } from '@c8y/ngx-components';\nimport {\n DashboardGlobalRoles,\n ALL_GLOBAL_ROLES_SELECTED,\n PRODUCT_EXPERIENCE\n} from './context-dashboard.model';\n\n@Component({\n selector: 'c8y-dashboard-availability',\n templateUrl: './dashboard-availability.component.html'\n})\nexport class DashboardAvailabilityComponent implements OnInit {\n /**\n * Ids of global roles assigned to the dashboard or a string \"all\" indicating the selection of all global roles.\n * The value undefined is treated as equivalent to 'all'.\n */\n @Input()\n get globalRolesIds(): DashboardGlobalRoles {\n return this._globalRolesIds;\n }\n set globalRolesIds(ids: DashboardGlobalRoles) {\n if (!ids || ids === ALL_GLOBAL_ROLES_SELECTED) {\n this._globalRolesIds = ALL_GLOBAL_ROLES_SELECTED;\n return;\n }\n this._globalRolesIds = [...ids];\n }\n @Output() globalRolesIdsChange = new EventEmitter<DashboardGlobalRoles>();\n globalRolesItems: Item[] = [];\n globalRolesItemsSelected: Item[] = [];\n private globalRoles: IUserGroup[] = [];\n private PAGE_SIZE = 100;\n private _globalRolesIds: DashboardGlobalRoles;\n\n constructor(\n private userGroupService: UserGroupService,\n private gainsightService: GainsightService\n ) {}\n\n async ngOnInit() {\n this.globalRoles = await this.getGlobalRoles();\n this.globalRolesItems = this.mapGlobalRolesToItems();\n this.globalRolesItemsSelected = this.getSelectedGlobalRolesItems();\n }\n\n onSelected(items: Item[]) {\n if (!items || !Array.isArray(items)) {\n return;\n }\n\n const allItemsSelected = items.length === this.globalRolesItems.length;\n this.globalRolesItemsSelected = items;\n\n if (allItemsSelected) {\n this.globalRolesIdsChange.emit(ALL_GLOBAL_ROLES_SELECTED);\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.DASHBOARD_AVAILABILITY,\n {\n component: PRODUCT_EXPERIENCE.DASHBOARD.COMPONENTS.DASHBOARD_AVAILABILITY,\n action: PRODUCT_EXPERIENCE.DASHBOARD.ACTIONS.APPLY_GLOBAL_ROLES_CHANGES,\n globalRoles: ALL_GLOBAL_ROLES_SELECTED\n }\n );\n } else {\n const selectedGlobalRolesIds = items.map(i => i.id);\n this.globalRolesIdsChange.emit([...selectedGlobalRolesIds]);\n\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.DASHBOARD_AVAILABILITY,\n {\n component: PRODUCT_EXPERIENCE.DASHBOARD.COMPONENTS.DASHBOARD_AVAILABILITY,\n action: PRODUCT_EXPERIENCE.DASHBOARD.ACTIONS.APPLY_GLOBAL_ROLES_CHANGES,\n globalRoles: selectedGlobalRolesIds?.sort()?.join()\n }\n );\n }\n }\n\n private async getGlobalRoles() {\n return (await this.userGroupService.list({ pageSize: this.PAGE_SIZE })).data;\n }\n\n private mapGlobalRolesToItems(): Item[] {\n return this.globalRoles.map(({ name, id }) => ({\n name,\n id\n }));\n }\n\n private getSelectedGlobalRolesItems(): Item[] {\n if (!this.globalRolesIds || this.globalRolesIds === ALL_GLOBAL_ROLES_SELECTED) {\n return this.globalRolesItems;\n }\n return this.globalRolesIds\n .map(globalRoleId => this.globalRolesItems.find(gR => gR.id === globalRoleId))\n .filter(Boolean);\n }\n}\n","<c8y-form-group class=\"p-b-24 m-b-0\">\n <div class=\"legend form-block\">\n <span>{{ 'Availability' | translate }}</span>\n </div>\n <label for=\"availability\">\n <span class=\"m-r-4\" id=\"availability\">\n {{ 'Global roles' | translate }}\n </span>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Select the global roles for which the dashboard will be available' | translate\n }}\"\n triggers=\"focus\"\n placement=\"right\"\n container=\"body\"\n >\n </button>\n </label>\n <c8y-select\n style=\"width: 180px\"\n [items]=\"globalRolesItems\"\n [selected]=\"globalRolesItemsSelected\"\n (onChange)=\"onSelected($event)\"\n ></c8y-select>\n</c8y-form-group>\n","import { Component, Inject, ViewChild } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport {\n gettext,\n ICON_LIST,\n NavigatorNode,\n NavigatorService,\n Permissions\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { clone } from 'lodash-es';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Observable } from 'rxjs';\nimport {\n ContextDashboard,\n DASHBOARD_THEME_CLASSES,\n WIDGET_HEADER_CLASSES,\n DashboardGlobalRoles\n} from './context-dashboard.model';\nimport { ContextDashboardService } from './context-dashboard.service';\nimport { REPORT_DEFAULT_NAVIGATION_NODE_PRIORITY } from './report-dashboard/report-dashboard-navigation.factory';\n\n@Component({\n selector: 'c8y-dashboard-detail',\n templateUrl: './dashboard-detail.component.html'\n})\nexport class DashboardDetailComponent {\n @ViewChild('dashboardDetailForm', { static: true }) dashboardDetailForm: NgForm;\n dashboard: ContextDashboard;\n currentDashboard: ContextDashboard;\n dashboardName: string;\n isReport: boolean;\n deviceType: string;\n isNamedDashboard: boolean;\n isDeviceType: boolean;\n icons: string[];\n filteredIcons: string[];\n styling = {\n themeClass: 'dashboard-theme-light',\n headerClass: 'panel-title-regular'\n };\n possibleStyling = { DASHBOARD_THEME_CLASSES, WIDGET_HEADER_CLASSES };\n title: string;\n namePlaceholder: string;\n navigatorNodes$: Observable<NavigatorNode[]>;\n result: Promise<ContextDashboard> = new Promise((resolve, reject) => {\n this._save = resolve;\n this._cancel = reject;\n });\n globalRolesIds: DashboardGlobalRoles;\n\n applyToDevicesOfTypePermitted: boolean;\n get applyToDevicesOfTypeTitle(): string {\n const text = this.applyToDevicesOfTypePermitted\n ? gettext('Apply dashboard to all devices of type {{ type }}')\n : gettext('Apply dashboard to all devices of type {{ type }} (permission required)');\n return this.translateService.instant(text, { type: this.dashboard.deviceTypeValue });\n }\n\n readonly DEFAULT_DASHBOARD_MARGIN = 12;\n readonly DEFAULT_DASHBOARD_ICON = 'th';\n readonly DEFAULT_DASHBOARD_PRIORITY = 10000;\n\n private _save;\n private _cancel;\n\n constructor(\n private modal: BsModalRef,\n @Inject(ICON_LIST) iconList: string[],\n private contextDashboardService: ContextDashboardService,\n private navigatorService: NavigatorService,\n private permissionsService: Permissions,\n private translateService: TranslateService\n ) {\n this.icons = iconList;\n this.filteredIcons = iconList;\n }\n\n ngAfterContentInit(): void {\n const defaultDashboardCfg = {\n name: this.translateService.instant(this.isReport ? gettext('Report') : gettext('Dashboard')),\n priority: this.isReport\n ? REPORT_DEFAULT_NAVIGATION_NODE_PRIORITY\n : this.DEFAULT_DASHBOARD_PRIORITY,\n icon: this.DEFAULT_DASHBOARD_ICON,\n deviceTypeValue: this.deviceType\n };\n\n if (this.dashboard) {\n this.currentDashboard = clone(this.dashboard);\n this.dashboardName = this.currentDashboard.name;\n this.setDashboardStyle();\n } else {\n this.dashboard = defaultDashboardCfg;\n this.dashboardName = this.dashboard.name;\n this.dashboardDetailForm.form.markAsDirty();\n }\n this.setTitle();\n this.setupApplyToDevicesOfTypeCheckbox();\n this.navigatorNodes$ = this.navigatorService.items$;\n this.namePlaceholder = this.isReport ? gettext('e.g. My report') : gettext('e.g. My dashboard');\n this.globalRolesIds = this.dashboard.globalRolesIds;\n }\n\n setTitle() {\n if (!this.currentDashboard) {\n this.title = this.isReport ? gettext('Add report') : gettext('Add dashboard');\n } else {\n this.title = this.isReport ? gettext('Edit report') : gettext('Edit dashboard');\n }\n }\n\n setupApplyToDevicesOfTypeCheckbox() {\n const rolesToCheck = ['ROLE_INVENTORY_CREATE', 'ROLE_INVENTORY_ADMIN'];\n this.applyToDevicesOfTypePermitted = this.permissionsService.hasAnyRole(rolesToCheck);\n }\n\n save() {\n this.dashboard.globalRolesIds = this.globalRolesIds;\n this.dashboard.name = this.dashboardName;\n this.dashboard.classes = { [this.styling.themeClass]: true };\n this.dashboard.widgetClasses = { [this.styling.headerClass]: true };\n this.dashboard.c8y_IsNavigatorNode = this.dashboard.c8y_IsNavigatorNode\n ? {}\n : this.currentDashboard\n ? null\n : undefined;\n this._save(this.dashboard);\n }\n\n close() {\n this._cancel();\n this.modal.hide();\n }\n\n getDashboardPreviewStyle() {\n const cssClasses = {};\n cssClasses[this.styling.headerClass] = true;\n cssClasses[this.styling.themeClass] = true;\n return cssClasses;\n }\n\n selectIcon(icon) {\n this.dashboard.icon = icon;\n this.dashboardDetailForm.form.markAsDirty();\n }\n\n updateFiltered(term: string) {\n if (term) {\n const search = new RegExp(term, 'i');\n this.filteredIcons = this.icons.filter(val => search.test(val));\n } else {\n this.filteredIcons = this.icons;\n }\n }\n\n private setDashboardStyle() {\n const allClasses = {\n ...this.dashboard.classes,\n ...this.dashboard.widgetClasses\n };\n\n const styles = Object.keys(allClasses).map(c => c.split('-').pop());\n styles.forEach(styleName => {\n this.styling.themeClass = this.contextDashboardService.getStyling(\n DASHBOARD_THEME_CLASSES,\n styleName,\n this.styling.themeClass\n );\n this.styling.headerClass = this.contextDashboardService.getStyling(\n WIDGET_HEADER_CLASSES,\n styleName,\n this.styling.headerClass\n );\n });\n }\n}\n","<div class=\"viewport-modal\">\n <div class=\"modal-header separator-bottom\">\n <h3 id=\"modal-title\">{{ title | translate }}</h3>\n </div>\n\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <div class=\"p-l-24 p-r-24\">\n <form #dashboardDetailForm=\"ngForm\" class=\"d-contents\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div *ngIf=\"!isNamedDashboard || isReport\">\n <div class=\"legend form-block\">\n <span>{{ 'General' | translate }}</span>\n </div>\n <div class=\"d-flex\">\n <c8y-form-group class=\"m-r-16\">\n <label class=\"d-block\">{{ 'Icon' | translate }}</label>\n <div dropdown class=\"dropdown\">\n <button\n title=\"{{ 'Icon' | translate }}\"\n type=\"button\"\n class=\"btn-default btn btn-gray\"\n aria-haspopup=\"true\"\n dropdownToggle\n >\n <i c8yIcon=\"{{ dashboard.icon }}\"></i>\n <span class=\"caret\"></span>\n </button>\n <ul\n *dropdownMenu\n class=\"dropdown-menu modal-inner-scroll dropdown-menu-grid-4 m-l-0\"\n style=\"max-height: 250px\"\n >\n <ng-container *ngFor=\"let icon of filteredIcons\">\n <li (click)=\"selectIcon(icon)\">\n <a\n class=\"interact\"\n title=\"{{ icon }}\"\n [ngClass]=\"{ active: dashboard.icon === icon }\"\n >\n <i class=\"icon\" [c8yIcon]=\"icon\"></i>\n </a>\n </li>\n </ng-container>\n </ul>\n </div>\n </c8y-form-group>\n <c8y-form-group class=\"flex-grow\">\n <label>\n <span class=\"m-r-4\" id=\"menuLabel\">{{ 'Menu label' | translate }}</span>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Menu label to display in submenu when dashboard is attached' | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n <input\n id=\"menuLabel\"\n type=\"text\"\n class=\"form-control\"\n name=\"name\"\n [(ngModel)]=\"dashboardName\"\n placeholder=\"{{ namePlaceholder | translate }}\"\n maxlength=\"512\"\n required\n />\n </c8y-form-group>\n </div>\n <c8y-form-group *ngIf=\"isReport\">\n <label id=\"description\">{{ 'Description ' | translate }}</label>\n <textarea\n aria-labelledby=\"description\"\n class=\"form-control\"\n rows=\"2\"\n name=\"description\"\n [(ngModel)]=\"dashboard.description\"\n ></textarea>\n </c8y-form-group>\n <div class=\"row\">\n <div class=\"col-sm-6\" *ngIf=\"!isReport\">\n <c8y-form-group>\n <label for=\"positionNav\">\n <span class=\"m-r-4\" id=\"positionNav\">\n {{ 'Position in navigation' | translate }}\n </span>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Position in navigation menu (10000 first, -10000 last)' | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n <input\n id=\"positionNav\"\n type=\"number\"\n class=\"form-control\"\n name=\"priority\"\n [(ngModel)]=\"dashboard.priority\"\n min=\"-10000\"\n max=\"10000\"\n placeholder=\"{{ 'e.g.' | translate }} 500\"\n required\n />\n </c8y-form-group>\n </div>\n\n <div class=\"col-sm-6\" *ngIf=\"isReport\">\n <label translate>Navigator menu item</label>\n <c8y-form-group>\n <label title=\"{{ 'Show in navigator' | translate }}\" class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n name=\"isNavigatorNode\"\n [(ngModel)]=\"!!dashboard.c8y_IsNavigatorNode\"\n />\n <span></span>\n <span>{{ 'Show in navigator' | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\" *ngIf=\"isReport\">\n <c8y-form-group>\n <label for=\"position\">\n <span class=\"m-r-4\">{{ 'Position in navigator' | translate }}</span>\n <ng-template #positionInNavPop>\n <span>\n {{\n 'Position in navigator (10001 first, -10000 last).' | translate\n }}&nbsp;\n {{ 'Existing nodes:' | translate }}\n </span>\n <ul class=\"list-unstyled m-t-16\">\n <li *ngFor=\"let node of navigatorNodes$ | async\">\n <i [c8yIcon]=\"node.icon\"></i>\n <span class=\"word-break m-l-4 m-r-16\">\n {{\n node.label.length > 15\n ? (node.label | slice: 0:15) + '...'\n : node.label\n }}\n </span>\n <span class=\"pull-right\">{{ node.priority }}</span>\n </li>\n </ul>\n </ng-template>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"positionInNavPop\"\n triggers=\"focus\"\n placement=\"right\"\n container=\"body\"\n ></button>\n </label>\n <input\n type=\"number\"\n for=\"position\"\n class=\"form-control\"\n name=\"priority\"\n [(ngModel)]=\"dashboard.priority\"\n min=\"-10000\"\n max=\"20000\"\n placeholder=\"{{ 'e.g.' | translate }} 500\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div *ngIf=\"!currentDashboard && deviceType\">\n <div class=\"form-group\">\n <label title=\"{{ applyToDevicesOfTypeTitle }}\" class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n name=\"deviceType\"\n [(ngModel)]=\"dashboard.deviceType\"\n [disabled]=\"!applyToDevicesOfTypePermitted\"\n />\n <span></span>\n <span\n class=\"m-r-4\"\n [translateParams]=\"{ type: dashboard.deviceTypeValue }\"\n ngNonBindable\n translate\n >\n Apply dashboard to all devices of type\n <i>{{ type }}</i>\n </span>\n </label>\n </div>\n\n <div class=\"alert alert-info m-b-24\" *ngIf=\"isDeviceType\">\n <i c8y-icon=\"info\"></i>\n <span\n translate\n [translateParams]=\"{ type: dashboard.deviceTypeValue }\"\n ngNonBindable\n >\n This dashboard is shared between all devices of the type\n <i>{{ type }}</i>\n .\n </span>\n </div>\n </div>\n </div>\n <c8y-dashboard-availability\n *ngIf=\"!!isReport === false\"\n [(globalRolesIds)]=\"globalRolesIds\"\n (globalRolesIdsChange)=\"dashboardDetailForm?.form?.markAsDirty()\"\n ></c8y-dashboard-availability>\n <c8y-appearance-settings\n [(themeClass)]=\"styling.themeClass\"\n [(headerClass)]=\"styling.headerClass\"\n ></c8y-appearance-settings>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group class=\"p-b-24 m-b-0\">\n <label for=\"margin\">{{ 'Widget margin' | translate }}</label>\n <div class=\"input-group\">\n <input\n id=\"margin\"\n name=\"margin\"\n type=\"number\"\n class=\"form-control\"\n [(ngModel)]=\"dashboard.widgetMargin\"\n min=\"0\"\n max=\"50\"\n placeholder=\"{{ DEFAULT_DASHBOARD_MARGIN }}\"\n />\n <span class=\"input-group-addon\">px</span>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group class=\"p-b-24 m-b-0\">\n <label translate>Widget titles</label>\n <label title=\"{{ 'Translate if possible' | translate }}\" class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n name=\"translateWidgetTitle\"\n [(ngModel)]=\"dashboard.translateWidgetTitle\"\n />\n <span></span>\n <span>{{ 'Translate if possible' | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n </div>\n </div>\n\n <div class=\"col-sm-6\">\n <c8y-widget-preview\n [tab]=\"!isNamedDashboard ? dashboard : undefined\"\n [previewClasses]=\"getDashboardPreviewStyle()\"\n ></c8y-widget-preview>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Cancel' | translate }}\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Save' | translate }}\"\n (click)=\"save()\"\n [disabled]=\"dashboardDetailForm.form.invalid || dashboardDetailForm.form.pristine\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { IIdentified } from '@c8y/client';\nimport {\n ContextData,\n ContextRouteService,\n ExtensionFactory,\n Permissions,\n Tab,\n ViewContext\n} from '@c8y/ngx-components';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { AddDashboardComponent } from './add-dashboard.component';\nimport { ContextDashboardManagedObject } from './context-dashboard.model';\nimport { ContextDashboardService } from './context-dashboard.service';\nimport { DashboardDetailComponent } from './dashboard-detail.component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AddDashboardFactory implements ExtensionFactory<Tab> {\n currentContext: ContextData;\n\n constructor(\n private permissions: Permissions,\n private contextDashboardService: ContextDashboardService,\n private bsModal: BsModalService,\n private contextRoute: ContextRouteService\n ) {}\n\n async get(activatedRoute?: ActivatedRoute): Promise<Tab | Tab[]> {\n this.currentContext = this.contextRoute.getContextData(activatedRoute);\n if (\n [ViewContext.Device, ViewContext.Group].includes(this.currentContext?.context) &&\n (await this.hasPermission(this.currentContext.contextData))\n ) {\n return [\n {\n component: AddDashboardComponent,\n priority: -Infinity\n }\n ];\n }\n return [];\n }\n\n async addDashboard() {\n let initialState: { deviceType: string };\n\n if (this.currentContext.context === ViewContext.Device) {\n initialState = {\n deviceType: this.currentContext.contextData.type\n };\n }\n\n const modal = this.bsModal.show(DashboardDetailComponent, {\n class: 'modal-lg',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n initialState,\n ignoreBackdropClick: true\n }).content as DashboardDetailComponent;\n try {\n const dashboardCfg = await modal.result;\n const dashboardMO: ContextDashboardManagedObject = await this.contextDashboardService.create(\n dashboardCfg,\n this.currentContext\n );\n await this.contextDashboardService.navigateToDashboard(dashboardMO);\n modal.close();\n } catch (ex) {\n // intended empty\n }\n }\n\n private async hasPermission(context: IIdentified) {\n if (context?.id) {\n return await this.permissions.canEdit(\n ['ROLE_INVENTORY_ADMIN', 'ROLE_INVENTORY_CREATE'],\n context\n );\n }\n return this.permissions.hasAnyRole(['ROLE_INVENTORY_ADMIN', 'ROLE_INVENTORY_CREATE']);\n }\n}\n","import { Component } from '@angular/core';\nimport { AddDashboardFactory } from './add-dashboard.factory';\n\n@Component({\n selector: 'li[c8y-add-dashboard]',\n templateUrl: './add-dashboard.component.html',\n host: { class: 'd-flex a-i-stretch' }\n})\nexport class AddDashboardComponent {\n constructor(private addDashboardFactory: AddDashboardFactory) {}\n\n addDashboard() {\n this.addDashboardFactory.addDashboard();\n }\n}\n","<button\n class=\"btn btn-dot p-l-sm-8 p-r-sm-8 p-l-xs-16 p-r-xs-16\"\n [attr.aria-label]=\"'Add dashboard' | translate\"\n tooltip=\"{{ 'Add dashboard' | translate }}\"\n placement=\"right\"\n container=\"body\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"addDashboard()\"\n>\n <i\n class=\"icon-20 m-l-4 m-r-4\"\n c8yIcon=\"plus-circle\"\n ></i>\n</button>\n<div class=\"p-r-sm-32\"></div>\n","import { InjectionToken } from '@angular/core';\nimport { gettext, Widget } from '@c8y/ngx-components';\n\n/**\n * A hook to define the default widgets of the home dashboard in the cockpit app.\n */\nexport const COCKPIT_HOME_DASHBOARD_CONFIG = new InjectionToken('CockpitHomeDashboardConfig');\n\nexport interface CockpitDashboardConfig {\n /**\n * Allows to have customized dashboard context name in case the CockpitDashboardModule is used in different apps and should have individual home dashboards per app\n */\n dashboardName?: string;\n /**\n * Allows to define the default widgets shown on the Cockpit Home page\n */\n defaultWidgets?: Widget[];\n /**\n * Allows to have a different page title than the default 'Home'\n */\n pageTitle?: string;\n /**\n * Allows to have individual home dashboards per user\n */\n userSpecific?: boolean;\n}\n\n/**\n * An array of widgets that is per default placed on the home dashboard of the cockpit app.\n */\nexport const DEFAULT_COCKPIT_HOME_WIDGETS = [\n {\n name: 'cockpit.welcome.widget',\n title: gettext('Welcome to Cockpit'),\n _x: 0,\n _y: 0,\n _height: 5,\n _width: 12,\n classes: { 'panel-title-hidden': true }\n },\n {\n name: 'Asset Alarms',\n title: gettext('Active, critical alarms'),\n _x: 0,\n _y: 5,\n _height: 4,\n _width: 6\n },\n {\n name: 'Recent Alarms',\n title: gettext('Recent alarms'),\n _x: 0,\n _y: 9,\n _height: 4,\n _width: 6\n },\n {\n name: 'Map',\n title: gettext('Map'),\n _x: 6,\n _y: 5,\n _height: 8,\n _width: 6\n }\n] as Widget[];\n","import { Injectable, Inject, Optional } from '@angular/core';\nimport { sortBy, cloneDeep, get, omit } from 'lodash-es';\nimport { DynamicComponentService, DynamicComponentDefinition, Widget } from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ContextDashboardConfig, CONTEXT_DASHBOARD_CONFIG } from './context-dashboard.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class WidgetService {\n widgets: DynamicComponentDefinition[];\n\n constructor(\n private dynamicComponentService: DynamicComponentService,\n private translateService: TranslateService,\n @Optional()\n @Inject(CONTEXT_DASHBOARD_CONFIG)\n public moduleConfig: ContextDashboardConfig\n ) {\n this.dynamicComponentService.items$.subscribe(widgets => {\n this.widgets = widgets;\n });\n }\n\n async getWidgetDefinition(componentId): Promise<DynamicComponentDefinition> {\n return this.dynamicComponentService.getById(componentId);\n }\n\n getWidgetDefinitions() {\n const translatedComponents = this.widgets.map(cmp => ({\n ...cmp,\n label: this.translateService.instant(cmp.label)\n }));\n\n // cloneDeep and injector lead to a performance issue. We removing the injectors here,\n // as they are not needed, to avoid use of a lot of CPU for cloning.\n const translatedComponentsWithoutInjector = translatedComponents.map(cmp =>\n omit(cmp, 'injector')\n );\n return cloneDeep(\n sortBy(translatedComponentsWithoutInjector, 'label').filter(this.moduleConfig.widgetFilter)\n );\n }\n\n async mapLegacy(widget: Partial<Widget>): Promise<Widget> {\n const cmp = await this.getWidgetDefinition(widget.componentId || widget.name);\n widget = this.mapDisplaySettings(widget, cmp);\n\n if (get(cmp, 'data.settings.upgrade')) {\n widget.widgetComponent = cmp.data.settings.widgetComponent;\n widget.configComponent = cmp.data.settings.configComponent;\n widget.templateUrl = cmp.data.settings.templateUrl;\n widget.configTemplateUrl = cmp.data.settings.configTemplateUrl;\n widget.transformConfigWithContext =\n cmp.data.settings.componentTransformConfigWithContext ||\n cmp.data.settings.transformConfigWithContext ||\n widget.transformConfigWithContext;\n } else {\n delete widget.templateUrl;\n delete widget.configTemplateUrl;\n }\n return widget as Widget;\n }\n\n private mapDisplaySettings(\n widget: Partial<Widget>,\n cmp: DynamicComponentDefinition\n ): Partial<Widget> {\n if (cmp?.data?.displaySettings) {\n widget.config = { displaySettings: cmp.data.displaySettings, ...(widget.config || {}) };\n }\n return widget;\n }\n}\n","import { Component, OnDestroy, ViewChild } from '@angular/core';\nimport { DynamicComponentDefinition, Widget, DynamicComponentComponent } from '@c8y/ngx-components';\nimport { AssetSelectionChangeEvent } from '@c8y/ngx-components/assets-navigator';\nimport { clone, cloneDeep, escapeRegExp, get, omit } from 'lodash-es';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { iif, Subject, Subscription, timer } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport {\n ContextDashboardManagedObject,\n WIDGET_CONTENT_CLASSES,\n WIDGET_HEADER_CLASSES,\n ContextWidgetConfig\n} from './context-dashboard.model';\nimport { WidgetService } from './widget.service';\nimport { ContextDashboardService } from './context-dashboard.service';\nimport { IManagedObject, InventoryService } from '@c8y/client';\n\n@Component({\n selector: 'c8y-widget-config',\n templateUrl: './widget-config.component.html'\n})\nexport class WidgetConfigComponent implements OnDestroy {\n selectedDevice: IManagedObject;\n mode: 'config' | 'select' | 'style' = 'select';\n searchResult: DynamicComponentDefinition[];\n components: DynamicComponentDefinition[];\n selected: DynamicComponentDefinition;\n searchChange$ = new Subject();\n searchTerm = '';\n context: any;\n componentLabel: string;\n mo: ContextDashboardManagedObject;\n styling = {\n headerClass: 'panel-title-regular',\n contentClass: 'panel-content-light'\n };\n defaultStyling = {\n headerClass: 'panel-title-regular',\n contentClass: 'panel-content-light'\n };\n possibleStyling = { WIDGET_HEADER_CLASSES, WIDGET_CONTENT_CLASSES };\n current: any;\n widgetConfig: ContextWidgetConfig;\n isUpgrade = false;\n\n @ViewChild('config', { static: false })\n dynamicComponent: DynamicComponentComponent;\n\n get isEdit() {\n return !!this.current;\n }\n\n get isDeviceTypeDashboard(): boolean {\n return !!this.mo.c8y_Dashboard?.deviceType && !!this.mo.c8y_Dashboard?.deviceTypeValue;\n }\n\n result: Promise<Widget> = new Promise((resolve, reject) => {\n this._save = resolve;\n this._cancel = reject;\n });\n\n private searchSub: Subscription;\n private _save: (value: Widget) => void;\n private _cancel: (reason?: any) => void;\n\n constructor(\n private widgetService: WidgetService,\n private modal: BsModalRef,\n private inventory: InventoryService,\n public contextDashboardService: ContextDashboardService\n ) {}\n\n async ngAfterContentInit(): Promise<void> {\n this.components = this.widgetService.getWidgetDefinitions();\n\n if (this.selected) {\n this.current = clone(this.selected);\n this.select(this.selected, this.isEdit ? 'config' : 'select');\n }\n\n this.searchSub = this.searchChange$\n .pipe(\n switchMap((event: KeyboardEvent) => iif(() => event.which !== 13, timer(200), timer(10)))\n )\n .subscribe(() => {\n this.search();\n });\n\n this.setStylings();\n if (this.widgetConfig?.device) {\n const { data } = await this.inventory.detail(this.widgetConfig.device.id);\n this.selectedDevice = data;\n }\n }\n\n checkIfDeviceRequired() {\n return (\n !this.widgetConfig ||\n (!this.widgetConfig.settings.deviceTargetNotRequired &&\n !this.widgetConfig.device &&\n !this.widgetConfig.settings.noDeviceTarget)\n );\n }\n\n selectionChanged(selection?: AssetSelectionChangeEvent) {\n this.widgetConfig.device = selection?.change?.item;\n this.dynamicComponent.emitConfigChange({\n device: this.widgetConfig.device\n });\n }\n\n async save() {\n const hookSuccess = await this.dynamicComponent.callLifeCycleHooks().toPromise();\n if (!hookSuccess) {\n return;\n }\n\n const { _x, _y, _width, _height } = this.selected.data;\n\n if (\n this.widgetConfig &&\n this.widgetConfig.device &&\n // serializing will be handled by resolver\n !this.selected?.resolve?.device\n ) {\n const { id, name } = this.widgetConfig.device;\n this.widgetConfig.device = { id, name };\n }\n\n const widget = {\n _x,\n _y,\n _width,\n _height,\n config: omit(this.widgetConfig, ['settings', 'displaySettings']),\n title: this.selected.data.title,\n componentId: this.selected.id,\n id: this.isEdit ? this.current.data.id : String(Math.random()).substr(2),\n classes: this.getStyle(),\n ...(!this.isEdit ? this.widgetConfig.settings.widgetDefaults : {})\n } as Widget;\n\n this._save(widget);\n }\n\n select(cmp, mode: 'select' | 'config' = 'config') {\n cmp.data = cmp.data || {};\n this.selected = cmp;\n\n this.isUpgrade = !!get(cmp, 'data.settings.upgrade');\n this.contextDashboardService.formDisabled = this.isUpgrade;\n\n if (this.isEdit) {\n const { _x, _y, _width, _height, classes, title } = this.current.data;\n this.selected.data = { ...this.selected.data, _x, _y, _width, _height, classes, title };\n }\n\n this.widgetConfig = cloneDeep(this.composeWidgetConfig(this.selected, this.context));\n\n this.selected.data.title = this.selected.data.title || cmp.label;\n this.componentLabel = cmp.label;\n this.mode = mode;\n }\n\n search() {\n if (this.searchTerm.length > 0) {\n this.searchResult = this.components.filter(cmp =>\n new RegExp(escapeRegExp(this.searchTerm.trim()), 'i').test(cmp.label)\n );\n } else {\n this.resetSearch();\n }\n }\n\n resetSearch() {\n this.searchTerm = '';\n this.searchResult = undefined;\n }\n\n changeMode(mode: 'config' | 'select' | 'style') {\n this.mode = mode;\n }\n\n close() {\n this._cancel();\n this.modal.hide();\n }\n\n getStyle(isPreview = false) {\n const cssClasses = {};\n if (isPreview || !this.isDashboardDefaultStyle(this.styling.headerClass)) {\n cssClasses[this.styling.headerClass] = true;\n }\n\n if (isPreview || !this.isDashboardDefaultStyle(this.styling.contentClass)) {\n cssClasses[this.styling.contentClass] = true;\n }\n\n if (isPreview) {\n cssClasses[`dashboard-theme-${this.defaultStyling.contentClass.split('-').pop()}`] = true;\n }\n\n return cssClasses;\n }\n\n ngOnDestroy(): void {\n this.contextDashboardService.formDisabled = true;\n if (this.searchSub) {\n this.searchSub.unsubscribe();\n }\n }\n\n hasConfig() {\n if (this.widgetConfig.settings?.upgrade) {\n return (\n this.widgetConfig.settings?.configComponent || this.widgetConfig.settings?.configTemplateUrl\n );\n }\n return !this.dynamicComponent?.error;\n }\n\n private setStylings(): void {\n const dashboardClasses: string[] =\n (this.mo.c8y_Dashboard?.classes && Object.keys(this.mo.c8y_Dashboard.classes)) || [];\n const dashboardWidgetClasses: string[] =\n (this.mo.c8y_Dashboard?.widgetClasses && Object.keys(this.mo.c8y_Dashboard.widgetClasses)) ||\n [];\n const widgetClasses: string[] = this.isEdit ? Object.keys(this.current.data.classes) : [];\n\n this.styling = this.setDefaultStyle([\n ...dashboardClasses,\n ...dashboardWidgetClasses,\n ...widgetClasses\n ]);\n this.defaultStyling = this.setDefaultStyle([...dashboardClasses, ...dashboardWidgetClasses]);\n }\n\n private isDashboardDefaultStyle(className) {\n const allClasses = {\n ...this.mo.c8y_Dashboard.classes,\n ...this.mo.c8y_Dashboard.widgetClasses\n };\n const styles = Object.keys(allClasses).map(cssClass => ({ class: cssClass }));\n const style = this.contextDashboardService.getStyling(\n styles,\n className.split('-').pop(),\n undefined\n );\n return !!style;\n }\n\n private setDefaultStyle(setClasses: string[]) {\n let contentClass = this.styling.contentClass;\n let headerClass = this.styling.headerClass;\n const styles = this.contextDashboardService\n .getFilteredDashboardStyles(setClasses)\n .map(c => c.split('-').pop());\n styles.forEach(styleName => {\n contentClass = this.contextDashboardService.getStyling(\n WIDGET_CONTENT_CLASSES,\n styleName,\n contentClass\n );\n headerClass = this.contextDashboardService.getStyling(\n WIDGET_HEADER_CLASSES,\n styleName,\n headerClass\n );\n });\n\n return { headerClass, contentClass };\n }\n\n private composeWidgetConfig(selectedComponent, context = {}) {\n const setting = {\n settings: {\n ...selectedComponent.data.settings,\n ...get(selectedComponent.data.settings, 'ng1.options'),\n ...get(selectedComponent.data, 'ng1.options'),\n context,\n dashboardMo: this.mo.c8y_Dashboard\n },\n ...selectedComponent.data.config\n } as ContextWidgetConfig;\n return this.applyTargetIfDeviceDashboard(setting);\n }\n\n private applyTargetIfDeviceDashboard(widgetConfig: ContextWidgetConfig) {\n const isDeviceType = this.contextDashboardService.isDeviceType(this.mo);\n\n if (isDeviceType) {\n widgetConfig.settings.hideTarget = isDeviceType;\n\n const noDeviceTarget = widgetConfig.settings.ng1\n ? widgetConfig.settings.ng1.options.noDeviceTarget\n : widgetConfig.settings.noDeviceTarget;\n\n if (!noDeviceTarget) {\n widgetConfig.device = {\n id: this.context.id,\n name: this.context.name\n };\n }\n }\n return widgetConfig;\n }\n}\n","<div class=\"modal-header separator\">\n <div\n class=\"h3\"\n title=\"{{ 'Add widget' | translate }}\"\n id=\"modal-title\"\n *ngIf=\"!current\"\n translate\n >\n Add widget\n </div>\n <div\n class=\"h3\"\n title=\"{{ 'Edit widget' | translate }}\"\n id=\"modal-title\"\n *ngIf=\"current\"\n translate\n >\n Edit widget\n </div>\n</div>\n<form name=\"form\" #configForm=\"ngForm\">\n <div class=\"c8y-modal-tabs\" id=\"modal-body\">\n <div class=\"tabContainer\">\n <ul class=\"nav nav-tabs nav-tabsc8y p-l-24\">\n <li [class.active]=\"mode === 'select'\">\n <button\n class=\"btn\"\n type=\"button\"\n title=\"{{ 'Select widget' | translate }}\"\n (click)=\"changeMode('select'); (false)\"\n >\n <i c8yIcon=\"th-large\"></i>\n <span translate>Select widget</span>\n </button>\n </li>\n <li [class.active]=\"mode === 'config'\">\n <button\n class=\"btn\"\n type=\"button\"\n title=\"{{ 'Configuration' | translate }}\"\n [disabled]=\"!selected\"\n (click)=\"changeMode('config'); (false)\"\n >\n <i c8yIcon=\"cog\"></i>\n <span translate>Configuration</span>\n </button>\n </li>\n <li [class.active]=\"mode === 'style'\">\n <button\n class=\"btn\"\n type=\"button\"\n title=\"{{ 'Appearance' | translate }}\"\n [disabled]=\"!selected\"\n (click)=\"changeMode('style'); (false)\"\n >\n <i c8yIcon=\"paint-brush\"></i>\n <span translate>Appearance</span>\n </button>\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"modal-inner-scroll modal-inner-scroll--fixed\">\n <div\n class=\"bg-level-0 p-l-24 p-r-24 p-t-8 p-b-8 sticky-header-top-0\"\n style=\"z-index: 2\"\n *ngIf=\"mode === 'select'\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n type=\"text\"\n data-cy=\"widget-config--Search\"\n [attr.aria-label]=\"'Search' | translate\"\n placeholder=\"{{ 'Search…' | translate }}\"\n [(ngModel)]=\"searchTerm\"\n [ngModelOptions]=\"{ standalone: true }\"\n (keydown)=\"searchChange$.next($event)\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n type=\"button\"\n title=\"{{ 'Search' | translate }}\"\n (click)=\"resetSearch()\"\n >\n <i [c8yIcon]=\"searchTerm.length === 0 ? 'search' : 'close'\"></i>\n </button>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"modal-body bg-level-2\" *ngIf=\"mode === 'select'\">\n <div class=\"card-group card-select m-b-0\">\n <div\n class=\"col-md-3 col-sm-4 col-xs-6\"\n title=\"{{ cmp.description | translate }}\"\n *ngFor=\"let cmp of searchResult || components\"\n >\n <button\n class=\"btn-clean card p-8\"\n type=\"button\"\n [class.active]=\"selected === cmp\"\n (click)=\"select(cmp)\"\n >\n <div class=\"text-center p-8 m-b-8 d-col flex-center bg-level-2\" role=\"presentation\">\n <ng-container *ngIf=\"!cmp.previewImage; else previewImage\">\n <div class=\"h1\"><i c8yIcon=\"file-image-o\"></i></div>\n <small translate>Preview not available</small>\n </ng-container>\n <ng-template #previewImage>\n <img class=\"img-responsive\" alt [src]=\"cmp.previewImage\" />\n </ng-template>\n </div>\n <p class=\"card-title text-truncate\">\n <c8y-highlight\n text=\"{{ cmp.label | translate }}\"\n [pattern]=\"searchTerm\"\n ></c8y-highlight>\n </p>\n </button>\n </div>\n\n <div class=\"c8y-empty-state text-center\" *ngIf=\"searchResult && searchResult.length === 0\">\n <div class=\"h1\" c8yIcon=\"search\"></div>\n <h3 translate>No widgets found.</h3>\n <div class=\"d-flex\">\n <p class=\"m-r-8\" translate>Rephrase your search term.</p>\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Reset search' | translate }}\"\n (click)=\"resetSearch()\"\n >\n {{ 'Reset search' | translate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- The following is intentional set to hidden to allow the ViewChild ref in the controller -->\n <div class=\"d-flex d-col fit-h\" *ngIf=\"selected\" [ngClass]=\"{ hidden: mode !== 'config' }\">\n <div class=\"p-t-16 flex-no-shrink separator-bottom p-b-16\">\n <div class=\"row\">\n <div class=\"col-sm-4\">\n <div class=\"p-l-24\">\n <div class=\"text-left text-medium h4\">\n {{ selected.label | translate }}\n </div>\n <p>\n {{ selected.description | translate }}\n </p>\n </div>\n </div>\n <div class=\"col-sm-8\">\n <div class=\"p-r-24\">\n <c8y-form-group>\n <label for=\"widgetTitle\" translate>Title</label>\n <input\n class=\"form-control\"\n type=\"text\"\n id=\"widgetTitle\"\n name=\"title\"\n [(ngModel)]=\"selected.data.title\"\n placeholder=\"{{ 'e.g.' | translate }} {{ componentLabel | translate }}\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row flex-grow\" [ngClass]=\"{ 'd-flex': widgetConfig.options || hasConfig() }\">\n <div\n class=\"a-s-stretch\"\n *ngIf=\"!widgetConfig.settings?.noDeviceTarget\"\n [ngClass]=\"{\n 'bg-level-1 col-sm-4 p-r-0': hasConfig(),\n 'bg-level-0 col-sm-12': !hasConfig()\n }\"\n >\n <div class=\"fit-h bg-inherit p-l-16\" [ngClass]=\"{ 'p-r-24': !hasConfig() }\">\n <div class=\"p-relative bg-inherit\">\n <c8y-asset-selector-miller\n class=\"d-block bg-inherit p-relative\"\n style=\"height: calc(100vh - 422px)\"\n (onSelected)=\"selectionChanged($event)\"\n (onClearSelected)=\"selectionChanged()\"\n [config]=\"{\n view: 'miller',\n groupsSelectable: this.widgetConfig.settings?.groupsSelectable,\n showChildDevices: true,\n columnHeaders: true,\n showUnassignedDevices: true,\n search: !this.widgetConfig.settings.context?.additionParents,\n showFilter: true,\n singleColumn: !!this.hasConfig()\n }\"\n [asset]=\"widgetConfig.settings?.context\"\n [selectedDevice]=\"selectedDevice\"\n ></c8y-asset-selector-miller>\n </div>\n </div>\n </div>\n <div\n [ngClass]=\"{\n 'col-sm-8': !widgetConfig.settings?.noDeviceTarget,\n 'col-sm-12': widgetConfig.settings?.noDeviceTarget,\n 'sr-only': !hasConfig()\n }\"\n >\n <c8y-dynamic-component\n class=\"d-block\"\n style=\"height: {{ hasConfig() ? 'calc(100vh - 422px)' : '0' }}\"\n [ngClass]=\"{ 'inner-scroll p-r-24': !widgetConfig.settings?.noDeviceTarget }\"\n [componentId]=\"selected.id\"\n mode=\"config\"\n [config]=\"widgetConfig\"\n [notFoundError]=\"false\"\n #config\n ></c8y-dynamic-component>\n </div>\n </div>\n </div>\n\n <div class=\"modal-body p-t-0\" style=\"height: calc(100vh - 310px)\" *ngIf=\"mode === 'style'\">\n <div class=\"row\">\n <div class=\"col-xs-6\">\n <c8y-appearance-settings\n [(themeClass)]=\"styling.contentClass\"\n [(headerClass)]=\"styling.headerClass\"\n [possibleStylingTheme]=\"possibleStyling.WIDGET_CONTENT_CLASSES\"\n [possibleStylingHeader]=\"possibleStyling.WIDGET_HEADER_CLASSES\"\n [defaultThemeClass]=\"defaultStyling.contentClass\"\n [defaultHeaderClass]=\"defaultStyling.headerClass\"\n ></c8y-appearance-settings>\n </div>\n <div class=\"col-xs-6 sticky-header-top-0\">\n <c8y-widget-preview\n style=\"height: calc(100vh - 382px)\"\n [previewClasses]=\"getStyle(true)\"\n ></c8y-widget-preview>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Cancel' | translate }}\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n type=\"submit\"\n title=\"{{ 'Save' | translate }}\"\n (click)=\"save()\"\n [disabled]=\"\n contextDashboardService.formDisabled || configForm.invalid || checkIfDeviceRequired()\n \"\n c8yProductExperience\n [actionName]=\"current ? 'editWidget' : 'createWidget'\"\n [actionData]=\"{ widgetName: selected && selected.id }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</form>\n","import { Component, HostBinding, Inject, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport {\n ActionBarService,\n AlertService,\n BreadcrumbItem,\n DashboardChange,\n DashboardChildChange,\n DashboardChildComponent,\n DashboardSettings,\n DynamicComponentDefinition,\n GainsightService,\n gettext,\n ModalService,\n Status,\n ViewContext,\n Widget,\n WidgetChange\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { cloneDeep, findIndex, keyBy, omit, values, some, kebabCase, every } from 'lodash-es';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { Subscription } from 'rxjs';\nimport {\n ContextDashboard,\n ContextDashboardConfig,\n ContextDashboardManagedObject,\n CONTEXT_DASHBOARD_CONFIG,\n WIDGET_HEADER_CLASSES\n} from './context-dashboard.model';\nimport { ContextDashboardService } from './context-dashboard.service';\nimport { DashboardDetailComponent } from './dashboard-detail.component';\nimport { WidgetConfigComponent } from './widget-config.component';\nimport { WidgetService } from './widget.service';\nimport { IManagedObject, InventoryService } from '@c8y/client';\n\n/**\n * The context dashboard is a dashboard which resolves it data from the current context (device or group)\n * it is displayed on. It usually uses the route.data for it, but you can pass\n * a different managedObject to the [mo] input parameter to change that behavior.\n */\n@Component({\n selector: 'c8y-context-dashboard',\n templateUrl: './context-dashboard.component.html',\n host: {\n style: `\n display: block;\n `,\n class: 'dashboard c8y-grid-dashboard'\n }\n})\nexport class ContextDashboardComponent implements OnInit, OnDestroy {\n @Input()\n name: string;\n @Input()\n childrenClasses = '';\n @Input()\n context: any;\n @Input()\n setTitle = false;\n @Input()\n disabled = false;\n @Input()\n defaultWidgets: Widget[] = [];\n @Input()\n canCopy = true;\n @Input()\n canDelete = true;\n @Input()\n isLoading = true;\n @Input()\n breadcrumbSettings: BreadcrumbItem;\n @Input()\n showContextHelpButton = true;\n\n @HostBinding('class')\n class = '';\n\n widgets: Widget[] = [];\n mo: ContextDashboardManagedObject;\n dashboard: ContextDashboard;\n title: string;\n\n private dataSub: Subscription;\n\n constructor(\n private route: ActivatedRoute,\n private router: Router,\n private contextDashboardService: ContextDashboardService,\n private alert: AlertService,\n private renderer: Renderer2,\n @Inject(CONTEXT_DASHBOARD_CONFIG) public moduleConfig: ContextDashboardConfig,\n private widgetService: WidgetService,\n private bsModal: BsModalService,\n private inventory: InventoryService,\n private gainsightService: GainsightService,\n private actionBarService: ActionBarService,\n private translateService: TranslateService,\n private modal: ModalService\n ) {}\n\n ngOnInit() {\n if (!this.name) {\n this.loadContextDashboard();\n return;\n }\n this.loadNamedDashboard();\n }\n\n /**\n * Applies the current context to the widget\n * @param widget The widget to apply the context to.\n */\n applyDeviceTarget(widget) {\n if (widget.config.device) {\n widget.config.device = { id: this.context.id, name: this.context.name };\n }\n }\n\n /**\n * Removes the route listener.\n */\n ngOnDestroy(): void {\n if (this.dataSub) {\n this.dataSub.unsubscribe();\n }\n }\n\n /**\n * Restores the dashboard widgets to the default widgets.\n */\n async restore() {\n const mesg = gettext(\n 'You are about to reset this dashboard. All changes to the dashboard will get lost and cannot be recovered. Do you want to proceed?'\n );\n\n try {\n await this.modal.confirm(gettext('Reset dashboard'), mesg, Status.WARNING, {\n ok: gettext('Reset`dashboard`'),\n cancel: gettext('Cancel')\n });\n\n this.isLoading = true;\n this.mo.c8y_Dashboard.children = this.contextDashboardService.mapWidgets(this.defaultWidgets);\n await this.contextDashboardService.update(this.mo);\n await this.onLoad();\n } catch (error) {\n if (error) {\n this.alert.addServerFailure(error);\n }\n } finally {\n this.isLoading = false;\n }\n }\n\n /**\n * Updates all dashboards children's. Useful for position changes on the dashboard.\n * @param child The child to change.\n */\n async updateDashboardChildren(child: DashboardChildChange | DashboardChange) {\n const { children } = child;\n const dashboardMO: ContextDashboardManagedObject = this.mo;\n const mappedChildren: { [id: string]: Widget } = keyBy(\n children.map(c => this.componentToWidget(c)),\n 'id'\n );\n dashboardMO.c8y_Dashboard.children = mappedChildren;\n return this.contextDashboardService.update(dashboardMO);\n }\n\n /**\n * Copies the dashboard and current context to a clipboard.\n */\n async copyDashboard() {\n const viewContext = this.route.parent.snapshot.data?.context;\n if (this.canCopyDashboard(viewContext)) {\n this.contextDashboardService.copyClipboard = {\n dashboard: cloneDeep(this.mo.c8y_Dashboard),\n context: cloneDeep({\n context: viewContext,\n contextData: this.context\n })\n };\n\n if (viewContext) {\n const ctx = viewContext.split('/').shift();\n const msg = this.translateService.instant(\n 'Dashboard copied. Navigate to the desired {{ ctx }} and select \"Paste dashboard\"',\n { ctx }\n );\n this.alert.success(msg);\n }\n this.actionBarService.refresh();\n }\n }\n\n /**\n * Remove the complete dashboard and navigate away.\n */\n async deleteDashboard() {\n await this.contextDashboardService.delete(this.mo);\n if (this.route.parent) {\n const route = this.route.parent.snapshot.url.map(segment => segment.path).join('/');\n this.router.navigateByUrl(route);\n }\n }\n\n /**\n * Edits the current dashboard\n */\n async editDashboard() {\n const isReport = this.contextDashboardService.isReport(this.mo);\n if (isReport) {\n const { name, icon, priority, c8y_IsNavigatorNode, description } = this.context;\n Object.assign(this.dashboard, { name, icon, priority, c8y_IsNavigatorNode, description });\n }\n const initialState = {\n dashboard: this.dashboard,\n deviceType: this.context.type,\n isDeviceType: this.contextDashboardService.isDeviceType(this.mo),\n isNamedDashboard: this.contextDashboardService.isNamed(this.mo),\n isReport\n };\n const modal = this.bsModal.show(DashboardDetailComponent, {\n class: 'modal-lg',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n initialState,\n ignoreBackdropClick: true\n }).content as DashboardDetailComponent;\n try {\n const dashboardMO = cloneDeep(this.mo);\n const cfg = await modal.result;\n if (isReport) {\n const { name, icon, c8y_IsNavigatorNode, priority, description, ...dashboardCfg } = cfg;\n dashboardMO.c8y_Dashboard = dashboardCfg;\n this.updateReport({\n id: this.context.id,\n name,\n icon,\n c8y_IsNavigatorNode,\n priority,\n description\n });\n } else {\n dashboardMO.c8y_Dashboard = cfg;\n }\n\n await this.contextDashboardService.update(dashboardMO);\n await this.contextDashboardService.refreshTabs(dashboardMO);\n this.onLoad();\n modal.close();\n } catch (ex) {\n // intended empty\n }\n }\n\n get isDeviceTypeDashboard(): boolean {\n return !!this.dashboard?.deviceType && !!this.dashboard.deviceTypeValue;\n }\n\n /**\n * Edits a widget on the dashboard.\n * @param change The widget change event.\n */\n async editWidget(change: WidgetChange) {\n const { x, y, width, height } = change.source;\n const component = await this.widgetService.getWidgetDefinition(\n change.widget.name || change.widget.componentId\n );\n if (!component) {\n this.addWidget();\n return;\n }\n await this.addWidget({\n ...component,\n data: { ...component.data, ...change.widget, _x: x, _y: y, _width: width, _height: height }\n });\n }\n\n /**\n * Adds a widget to the dashboard.\n * @param selected Define a selected component to switch to edit mode directly.\n */\n async addWidget(selected?: DynamicComponentDefinition) {\n const partialCloneSelected = selected\n ? {\n ...selected,\n data: cloneDeep(selected.data)\n }\n : selected;\n\n const initialState: Partial<WidgetConfigComponent> = {\n mo: this.mo,\n context: this.context.c8y_Report ? {} : this.context,\n selected: partialCloneSelected\n };\n\n const modal = this.bsModal.show(WidgetConfigComponent, {\n class: 'modal-lg',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n initialState,\n ignoreBackdropClick: true\n }).content as WidgetConfigComponent;\n\n try {\n const newWidget = await modal.result;\n if (!this.mo.c8y_Dashboard.children) {\n this.mo.c8y_Dashboard.children = {};\n }\n this.mo.c8y_Dashboard.children[newWidget.id] = newWidget;\n this.contextDashboardService.update(this.mo);\n newWidget.classes = this.mergeWidgetClasses(newWidget);\n await this.updateWidget(newWidget);\n modal.close();\n } catch (ex) {\n // intended empty\n }\n }\n\n /**\n * Updates a widget or adds a new one if it doesn't exist on\n * the dashboard.\n * @param widget The new widget\n */\n async updateWidget(widget) {\n const index = findIndex(this.widgets, { id: widget.id });\n const isNew = index === -1;\n const mappedWidget = await this.widgetService.mapLegacy(widget);\n if (isNew) {\n this.widgets.push(mappedWidget);\n } else {\n this.widgets.splice(index, 1, mappedWidget);\n }\n }\n\n /**\n * Removes a widget and rearranges the remaining ones\n * if necessary.\n * @param change The change event.\n */\n async deleteWidget(change: WidgetChange) {\n const widgetTitle = change.widget.title;\n try {\n await this.modal.confirm(\n gettext('Remove widget'),\n this.translateService.instant(\n gettext(\n 'You are about to remove widget \"{{ widgetTitle }}\" from your dashboard. Do you want to proceed?'\n ),\n { widgetTitle }\n ),\n Status.DANGER,\n {\n ok: gettext('Remove'),\n cancel: gettext('Cancel')\n }\n );\n } catch (e) {\n // on cancel: do nothing\n return;\n }\n\n try {\n const { widget, source } = change;\n delete this.mo.c8y_Dashboard.children[widget.id];\n const removed = this.widgets.find(({ id }) => id === widget.id);\n this.widgets.splice(this.widgets.indexOf(removed), 1);\n\n const { dashboard } = source;\n dashboard.children = dashboard.children.filter(c => c.data.id !== widget.id);\n\n // using setTimeout to give the component the chance to remove it.\n const sleep = timeout => new Promise(resolve => setTimeout(resolve, timeout));\n await sleep(0);\n\n const child = new DashboardChildChange(source);\n child.collapseUpAll();\n await this.updateDashboardChildren(child);\n } catch (e) {\n this.alert.addServerFailure(e);\n }\n }\n\n /**\n * This is a workaround to ensure that the dragged-element\n * (which is attached to the body) has the right styling.\n */\n addDashboardClassToBody() {\n this.class.split(' ').forEach(cssClass => {\n this.renderer.addClass(document.body, cssClass);\n });\n }\n\n /**\n * This is a workaround to ensure that the dragged-element\n * (which is attached to the body) has the right styling.\n */\n removeDashboardClassFromBody() {\n this.class.split(' ').forEach(cssClass => {\n this.renderer.removeClass(document.body, cssClass);\n });\n }\n\n /**\n * Changes the dashboard settings to frozen or vice versa.\n * @param settings The current settings of the dashboard.\n */\n async toggleFreeze(settings: DashboardSettings) {\n this.toggleIsFrozenFlag(settings);\n try {\n await this.contextDashboardService.update(this.mo);\n if (this.dashboard.isFrozen) {\n this.alert.success(gettext('Your dashboard is locked now.'));\n } else {\n this.alert.success(gettext('Your dashboard is unlocked now.'));\n }\n } catch (ex) {\n this.alert.addServerFailure(ex);\n this.toggleIsFrozenFlag(settings);\n }\n }\n\n private async updateReport(mo: Partial<IManagedObject>) {\n const res = await this.inventory.update(mo);\n this.context = res.data;\n if (this.route.parent) {\n this.route.parent.snapshot.data.contextData = this.context;\n }\n this.contextDashboardService.updateNavigatorItem(res.data);\n }\n\n private toggleIsFrozenFlag(settings: DashboardSettings) {\n settings.isFrozen = !settings.isFrozen;\n this.dashboard.isFrozen = settings.isFrozen;\n }\n\n private loadContextDashboard() {\n this.dataSub = this.route.data.subscribe(({ dashboard }) => {\n this.context = this.route.parent.snapshot.data.contextData;\n this.title = this.context?.name;\n this.mo = dashboard;\n this.dashboard = this.mo.c8y_Dashboard;\n this.onLoad(true);\n });\n }\n\n private loadNamedDashboard() {\n this.dataSub = this.contextDashboardService\n .getNamedDashboardOrCreate(this.name, this.defaultWidgets, this.context)\n .subscribe(mo => {\n this.context = this.context || {};\n this.mo = mo;\n this.dashboard = this.mo.c8y_Dashboard;\n this.onLoad(true);\n });\n }\n\n private async onLoad(trackExperience?: boolean) {\n const canEditDashboard = await this.contextDashboardService.canEditDashboard(this.mo);\n this.disabled = !canEditDashboard;\n this.canCopy =\n this.contextDashboardService.isDeviceDashboard(this.mo) ||\n this.contextDashboardService.isDeviceType(this.mo) ||\n this.contextDashboardService.isGroupDashboard(this.mo);\n const dashboardChildren = cloneDeep(this.mo.c8y_Dashboard.children);\n const isDeviceType = this.contextDashboardService.isDeviceType(this.mo);\n const isReport = this.contextDashboardService.isReport(this.mo);\n const dashboardClasses = {\n 'c8y-grid-dashboard': true,\n dashboard: true,\n ...this.dashboard.classes\n };\n\n this.widgets = await Promise.all<Widget>(\n values(dashboardChildren).map(widget => {\n widget.classes = this.mergeWidgetClasses(widget);\n if (isDeviceType) {\n this.applyDeviceTarget(widget);\n }\n if (trackExperience) {\n this.gainsightService.triggerEvent('loadWidget', {\n widgetName: widget.componentId || widget.name\n });\n }\n return this.widgetService.mapLegacy(widget);\n })\n );\n this.class = Object.keys(dashboardClasses).join(' ');\n if (isReport) {\n this.addReportDashboardSettings();\n }\n this.isLoading = false;\n }\n\n private mergeWidgetClasses(widget: Widget) {\n const hasHeaderClass = WIDGET_HEADER_CLASSES.find(\n el => widget.classes && widget.classes[el.class]\n );\n const widgetClasses = hasHeaderClass\n ? { ...widget.classes }\n : { ...this.dashboard.widgetClasses, ...widget.classes };\n return {\n card: true,\n 'card-dashboard': true,\n [kebabCase(widget.componentId || widget.name)]: true,\n ...widgetClasses\n };\n }\n\n private componentToWidget(child: DashboardChildComponent) {\n return {\n ...omit(child.data, ['componentTransformConfigWithContext', 'transformConfigWithContext']), // remove legacy\n ...({\n _x: child.x,\n _y: child.y,\n _width: child.width,\n _height: child.height\n } as Widget)\n };\n }\n\n private addReportDashboardSettings() {\n this.setTitle = true;\n this.title = this.context.name;\n this.breadcrumbSettings = {\n icon: 'th',\n label: 'Reports',\n path: 'reports'\n };\n this.canDelete = false;\n }\n\n private canCopyDashboard(viewContext: ViewContext): boolean {\n if (!this.validDashboardChildren() && viewContext) {\n const ctx = viewContext.split('/').shift();\n const msg = this.translateService.instant(\n 'Only dashboards with widgets referencing the current {{ ctx }} can be copied.',\n { ctx }\n );\n this.alert.warning(msg);\n return false;\n }\n return true;\n }\n\n private validDashboardChildren(): boolean {\n return every(this.mo.c8y_Dashboard.children, child => {\n const config = child.config || {};\n const dataPoints = config.datapoints || [];\n\n return !(\n (config.device && config.device.id !== this.context.id) ||\n some(dataPoints, dataPoint => dataPoint.__target.id !== this.context.id)\n );\n });\n }\n}\n","<c8y-title>\n {{ title }}\n</c8y-title>\n\n<c8y-action-bar-item *ngIf=\"defaultWidgets.length > 0\" [placement]=\"'right'\" [priority]=\"-1\">\n <button\n class=\"btn btn-link\"\n [disabled]=\"dashboard?.isFrozen || disabled\"\n (click)=\"restore()\"\n title=\"{{ 'Reset dashboard' | translate }}\"\n type=\"button\"\n px-event=\"Reset dashboard\"\n data-cy=\"context-dashboard--button-reset-dashboard\"\n >\n >\n <i class=\"m-r-4\" c8yIcon=\"reset\"></i>\n {{ 'Reset dashboard' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help *ngIf=\"showContextHelpButton\" src=\"/users-guide/cockpit/#dashboards\"></c8y-help>\n\n<c8y-widgets-dashboard\n [context]=\"context\"\n [contextDashboard]=\"dashboard\"\n [widgets]=\"widgets\"\n [settings]=\"{\n isLoading: isLoading,\n isFrozen: dashboard?.isFrozen,\n isDisabled: disabled,\n canDelete: canDelete,\n translateWidgetTitle: dashboard?.translateWidgetTitle,\n allowFullscreen: moduleConfig.allowFullscreen,\n title: setTitle ? dashboard.name || title : undefined,\n widgetMargin: dashboard?.widgetMargin,\n canCopy: canCopy\n }\"\n [breadcrumb]=\"breadcrumbSettings\"\n (onFreeze)=\"toggleFreeze($event)\"\n (onChangeDashboard)=\"updateDashboardChildren($event)\"\n (onAddWidget)=\"addWidget()\"\n (onEditWidget)=\"editWidget($event)\"\n (onDeleteWidget)=\"deleteWidget($event)\"\n (onChangeStart)=\"addDashboardClassToBody()\"\n (onChangeEnd)=\"removeDashboardClassFromBody()\"\n (onEditDashboard)=\"editDashboard()\"\n (onCopyDashboard)=\"copyDashboard()\"\n (onDeleteDashboard)=\"deleteDashboard()\"\n></c8y-widgets-dashboard>\n","import { Component, Inject, Optional } from '@angular/core';\nimport { AppStateService, gettext } from '@c8y/ngx-components';\nimport {\n CockpitDashboardConfig,\n COCKPIT_HOME_DASHBOARD_CONFIG,\n DEFAULT_COCKPIT_HOME_WIDGETS\n} from './cockpit-dashboard.model';\n\n@Component({\n selector: 'c8y-cockpit-dashboard',\n templateUrl: './cockpit-dashboard.component.html'\n})\nexport class CockpitDashboardComponent {\n defaultWidgets = DEFAULT_COCKPIT_HOME_WIDGETS;\n dashboardName = 'home-cockpit1';\n pageTitle: string = gettext('Home');\n\n constructor(\n private appState: AppStateService,\n @Optional()\n @Inject(COCKPIT_HOME_DASHBOARD_CONFIG)\n private homeDashboardConfig: CockpitDashboardConfig\n ) {\n const config = {\n ...this.homeDashboardConfig,\n dashboardName: appState.currentApplication.value?.config?.homeDashboardName,\n userSpecific: appState.currentApplication.value?.config?.userSpecificHomeDashboard\n };\n this.applyDashboardConfig(config);\n }\n\n private applyDashboardConfig(config: CockpitDashboardConfig) {\n if (!config) {\n return;\n }\n\n if (config.dashboardName) {\n this.dashboardName = config.dashboardName;\n }\n\n if (config.defaultWidgets) {\n this.defaultWidgets = config.defaultWidgets;\n }\n\n if (config.userSpecific && this.appState.currentUser.value) {\n this.dashboardName = `${this.appState.currentUser.value.userName.replace(/\\./g, '__')}_${\n this.dashboardName\n }`;\n }\n\n if (config.pageTitle) {\n this.pageTitle = config.pageTitle;\n }\n }\n}\n","<c8y-title>\n {{ pageTitle | translate }}\n</c8y-title>\n\n<c8y-context-dashboard\n [name]=\"dashboardName\"\n [defaultWidgets]=\"defaultWidgets\"\n [canDelete]=\"false\"\n></c8y-context-dashboard>\n","import { Component, OnInit, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { IManagedObject, InventoryService } from '@c8y/client';\nimport { ViewContext } from '@c8y/ngx-components';\nimport { DashboardContext } from './context-dashboard.model';\nimport { ContextDashboardService } from './context-dashboard.service';\n\n@Component({\n selector: 'c8y-paste-dashboard-action',\n template: `\n <ng-template #templatePaste>\n <li>\n <button title=\"{{ 'Paste dashboard' | translate }}\" (click)=\"pasteDashboard()\">\n <i class=\"m-r-4\" c8yIcon=\"clipboard\"></i><span translate>Paste dashboard</span>&nbsp;<span\n >\"{{ dashboardName }}\"</span\n >\n </button>\n </li>\n </ng-template>\n `\n})\nexport class PasteDashboardActionComponent implements OnInit {\n @ViewChild('templatePaste', { read: TemplateRef, static: true }) templatePaste;\n dashboardName = '';\n\n constructor(\n private vcRef: ViewContainerRef,\n private router: Router,\n private contextDashboardService: ContextDashboardService,\n private inventoryService: InventoryService\n ) {}\n\n ngOnInit() {\n this.vcRef.createEmbeddedView(this.templatePaste);\n const clipboard = this.contextDashboardService.copyClipboard;\n if (clipboard) {\n this.dashboardName = clipboard.dashboard.name;\n }\n }\n\n async pasteDashboard() {\n let context: DashboardContext;\n const currentUrl: string = this.router.url;\n const isDevice: boolean = new RegExp(/device\\/\\d+/).test(currentUrl);\n const isGroup: boolean = new RegExp(/group\\/\\d+/).test(currentUrl);\n const id = currentUrl.match(/\\d+/)[0];\n\n if (isDevice) {\n context = {\n context: ViewContext.Device,\n contextData: await this.getContextMo(id)\n };\n } else if (isGroup) {\n context = {\n context: ViewContext.Group,\n contextData: await this.getContextMo(id)\n };\n }\n this.contextDashboardService.pasteDashboard(context);\n }\n\n private async getContextMo(id: string): Promise<IManagedObject> {\n return (await this.inventoryService.detail(id)).data;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ViewContext, ActionBarFactory, ActionBarItem } from '@c8y/ngx-components';\nimport { Observable } from 'rxjs';\nimport { ContextDashboardService } from './context-dashboard.service';\nimport { PasteDashboardActionComponent } from './paste-dashboard-action.component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DashboardActionBarFactory implements ActionBarFactory {\n routeChanges$: Observable<any>;\n constructor(private contextDashboardService: ContextDashboardService) {}\n get(activeRoute: ActivatedRoute) {\n const actions = [];\n const data =\n !activeRoute.parent || activeRoute.snapshot.data.context\n ? activeRoute.snapshot.data\n : activeRoute.parent.snapshot.data;\n const { contextData } = data;\n const canPaste =\n contextData &&\n [ViewContext.Device, ViewContext.Group].includes(data.context) &&\n this.contextDashboardService.copyClipboard;\n\n if (canPaste) {\n actions.push({\n priority: -10,\n placement: 'more',\n template: PasteDashboardActionComponent\n } as ActionBarItem);\n }\n\n return actions;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { Tab } from '@c8y/ngx-components';\nimport { ContextDashboardType } from './context-dashboard.model';\nimport { ContextDashboardService } from './context-dashboard.service';\n\n@Injectable()\nexport class DeviceDashboardGuard {\n constructor(private contextDashboardService: ContextDashboardService) {}\n\n canActivate(route: ActivatedRouteSnapshot): Observable<boolean | Tab[]> {\n return this.contextDashboardService.activateDashboards(route, [\n ContextDashboardType.Device,\n ContextDashboardType.DeviceType\n ]);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { Tab } from '@c8y/ngx-components';\nimport { ContextDashboardType } from './context-dashboard.model';\nimport { ContextDashboardService } from './context-dashboard.service';\n\n@Injectable()\nexport class GroupDashboardGuard {\n constructor(private contextDashboardService: ContextDashboardService) {}\n\n canActivate(route: ActivatedRouteSnapshot): Observable<boolean | Tab[]> {\n return this.contextDashboardService.activateDashboards(route, [ContextDashboardType.Group]);\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport {\n CoreModule,\n hookActionBar,\n hookRoute,\n ViewContext,\n hookTab,\n HookProviderTypes\n} from '@c8y/ngx-components';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { AssetSelectorModule } from '@c8y/ngx-components/assets-navigator';\nimport { AddDashboardComponent } from './add-dashboard.component';\nimport { AddDashboardFactory } from './add-dashboard.factory';\nimport { AppearanceSettingsComponent } from './appearance-settings.component';\nimport { ContextDashboardComponent } from './context-dashboard.component';\nimport { ContextDashboardConfig, CONTEXT_DASHBOARD_CONFIG } from './context-dashboard.model';\nimport { ContextDashboardService } from './context-dashboard.service';\nimport { DashboardActionBarFactory } from './dashboard-action-bar.factory';\nimport { DashboardDetailComponent } from './dashboard-detail.component';\nimport { DeviceDashboardGuard } from './device-dashboard.guard';\nimport { GroupDashboardGuard } from './group-dashboard.guard';\nimport { PasteDashboardActionComponent } from './paste-dashboard-action.component';\nimport { WidgetConfigComponent } from './widget-config.component';\nimport { WidgetPreviewComponent } from './widget-preview.component';\nimport { WidgetService } from './widget.service';\nimport { DashboardAvailabilityComponent } from './dashboard-availability.component';\n\nconst defaultConfig = {\n allowFullscreen: true,\n widgetFilter({ data }) {\n return !(data && data.settings && data.settings.noNewWidgets);\n },\n routes: [\n {\n path: 'dashboard/:dashboardId',\n component: ContextDashboardComponent,\n canActivate: [DeviceDashboardGuard],\n context: ViewContext.Device\n },\n {\n path: 'dashboard/:dashboardId',\n component: ContextDashboardComponent,\n canActivate: [GroupDashboardGuard],\n context: ViewContext.Group\n }\n ]\n};\n\n@NgModule({\n declarations: [\n AppearanceSettingsComponent,\n ContextDashboardComponent,\n WidgetConfigComponent,\n WidgetPreviewComponent,\n DashboardDetailComponent,\n AddDashboardComponent,\n PasteDashboardActionComponent,\n DashboardAvailabilityComponent\n ],\n imports: [\n CoreModule,\n TooltipModule,\n PopoverModule,\n AssetSelectorModule,\n BsDropdownModule.forRoot()\n ],\n exports: [ContextDashboardComponent, WidgetConfigComponent],\n entryComponents: [\n ContextDashboardComponent,\n WidgetConfigComponent,\n DashboardDetailComponent,\n PasteDashboardActionComponent\n ],\n providers: [\n WidgetService,\n {\n provide: CONTEXT_DASHBOARD_CONFIG,\n useValue: defaultConfig\n }\n ]\n})\nexport class ContextDashboardModule {\n static config(config: ContextDashboardConfig = {}): ModuleWithProviders<ContextDashboardModule> {\n return {\n ngModule: ContextDashboardModule,\n providers: [\n {\n provide: CONTEXT_DASHBOARD_CONFIG,\n useValue: { ...defaultConfig, ...config }\n },\n ContextDashboardService,\n DeviceDashboardGuard,\n GroupDashboardGuard,\n hookRoute({ ...defaultConfig, ...config }.routes),\n hookTab(AddDashboardFactory, { providerType: HookProviderTypes.ExistingProvider }),\n hookActionBar(DashboardActionBarFactory)\n ]\n };\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { ContextDashboardModule } from '../context-dashboard.module';\nimport { ContextDashboardComponent } from '../context-dashboard.component';\nimport { DeviceDashboardGuard } from '../device-dashboard.guard';\nimport { GroupDashboardGuard } from '../group-dashboard.guard';\nimport { ViewContext, hookNavigator, gettext, CoreModule } from '@c8y/ngx-components';\nimport { CockpitDashboardComponent } from './cockpit-dashboard.component';\nimport { CockpitDashboardConfig, COCKPIT_HOME_DASHBOARD_CONFIG } from './cockpit-dashboard.model';\n\n@NgModule({\n imports: [\n CoreModule,\n ContextDashboardModule.config({\n routes: [\n {\n path: 'dashboard/:dashboardId',\n component: ContextDashboardComponent,\n canActivate: [DeviceDashboardGuard],\n context: ViewContext.Device\n },\n {\n path: 'dashboard/:dashboardId',\n component: ContextDashboardComponent,\n canActivate: [GroupDashboardGuard],\n context: ViewContext.Group\n },\n {\n path: '',\n component: CockpitDashboardComponent\n }\n ]\n })\n ],\n declarations: [CockpitDashboardComponent],\n providers: [hookNavigator({ label: gettext('Home'), icon: 'home', priority: 10000, path: '/' })]\n})\nexport class CockpitDashboardModule {\n static config(config: CockpitDashboardConfig = {}): ModuleWithProviders<CockpitDashboardModule> {\n return {\n ngModule: CockpitDashboardModule,\n providers: [\n {\n provide: COCKPIT_HOME_DASHBOARD_CONFIG,\n useValue: config\n }\n ]\n };\n }\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { gettext, Widget } from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, combineLatest, from, Observable } from 'rxjs';\nimport { map, mergeMap, toArray } from 'rxjs/operators';\nimport { WidgetService } from '../widget.service';\nimport { Subscription } from 'rxjs';\nimport { IManagedObject } from '@c8y/client';\n\n@Component({\n selector: 'c8y-device-info-dashboard-dashboard',\n templateUrl: './device-info-dashboard.component.html'\n})\nexport class DeviceInfoDashboardComponent {\n currentContext$: Observable<IManagedObject>;\n widgets$: Observable<Widget[]>;\n isLoading$ = new BehaviorSubject(true);\n title: string;\n widgetsSubscription: Subscription;\n\n DEVICE_INFO_WIDGETS = [\n {\n componentId: 'assetNotesWidget',\n title: gettext('Message of the day'),\n classes: { 'panel-title-hidden': true },\n _x: 0,\n _y: 0,\n _height: 2,\n _width: 12\n },\n {\n name: 'deviceStatusWidget',\n title: gettext('Device status'),\n _x: 0,\n _y: 2,\n _height: 5,\n _width: 4\n },\n {\n name: 'Data points graph',\n title: gettext('Device and communication'),\n _x: 4,\n _y: 2,\n _height: 5,\n _width: 8,\n config: {\n interval: 'hours',\n aggregation: 'NONE',\n realtime: true,\n datapointsInitialDisplayLimit: 3,\n datapoints: [\n {\n fragment: 'c8y_Battery',\n series: 'level',\n label: this.translateService.instant('Battery: level'),\n unit: '%',\n renderType: 'min',\n lineType: 'line',\n color: '#5e07b3',\n __active: true\n },\n {\n fragment: 'c8y_SignalStrength',\n series: 'rssi',\n label: this.translateService.instant('Signal: RSSI'),\n unit: 'dBm',\n renderType: 'min',\n lineType: 'line',\n color: '#a7d0f1',\n __active: true\n },\n {\n fragment: 'c8y_MemoryMeasurement',\n series: 'Used',\n label: this.translateService.instant('Memory: used'),\n unit: 'MB',\n renderType: 'min',\n lineType: 'line',\n color: '#f75229',\n __active: true\n },\n {\n fragment: 'c8y_CPUMeasurement',\n series: 'Workload',\n label: this.translateService.instant('CPU: workload'),\n unit: '%',\n renderType: 'min',\n lineType: 'line',\n color: '#b24f3e',\n __active: true\n },\n {\n fragment: 'c8y_NetworkStatistics',\n series: 'Upload',\n label: this.translateService.instant('Network: upload'),\n unit: 'KB/s',\n renderType: 'min',\n lineType: 'line',\n color: '#88c039',\n __active: true\n },\n {\n fragment: 'c8y_SignalStrength',\n series: 'RCSP',\n label: this.translateService.instant('Signal: RCSP'),\n renderType: 'min',\n lineType: 'line',\n color: '#5e2f19',\n __active: true\n },\n {\n fragment: 'c8y_SignalStrength',\n series: 'RSCP',\n label: this.translateService.instant('Signal: RSCP'),\n renderType: 'min',\n lineType: 'line',\n color: '#5e2f19',\n __active: true\n },\n {\n fragment: 'c8y_SignalStrength',\n series: 'RSRP',\n label: this.translateService.instant('Signal: RSRP'),\n renderType: 'min',\n lineType: 'line',\n color: '#43ba3b',\n __active: true\n },\n {\n fragment: 'c8y_SignalStrength',\n series: 'RSRQ',\n label: this.translateService.instant('Signal: RSRQ'),\n renderType: 'min',\n lineType: 'line',\n color: '#14b0b3',\n __active: true\n },\n {\n fragment: 'c8y_SignalStrength',\n series: 'ber',\n label: this.translateService.instant('Signal: BER'),\n unit: '%',\n renderType: 'min',\n lineType: 'line',\n color: '#44ff33',\n __active: true\n },\n {\n fragment: 'c8y_SignalStrength',\n series: 'ECN0',\n label: this.translateService.instant('Signal: ECN0'),\n renderType: 'min',\n lineType: 'line',\n color: '#873efa',\n __active: true\n },\n {\n fragment: 'c8y_NetworkStatistics',\n series: 'Download',\n label: this.translateService.instant('Network: download'),\n unit: 'KB/s',\n renderType: 'min',\n lineType: 'line',\n color: '#f27a45',\n __active: true\n },\n {\n fragment: 'c8y_MemoryMeasurement',\n series: 'Total',\n label: this.translateService.instant('Memory: total'),\n unit: 'MB',\n renderType: 'min',\n lineType: 'line',\n color: '#dadd8c',\n __active: true\n }\n ],\n alarmsEventsConfigs: [\n {\n label: 'c8y_LocationUpdate',\n timelineType: 'EVENT',\n color: '#6f6cd0',\n filters: {\n type: 'c8y_LocationUpdate'\n },\n __active: true\n },\n {\n label: 'c8y_UnavailabilityAlarm',\n timelineType: 'ALARM',\n color: '#375bf2',\n filters: {\n type: 'c8y_UnavailabilityAlarm'\n },\n __active: true\n }\n ]\n },\n transformConfigWithContext(config, context, c8yDevices) {\n 'ngInject';\n return c8yDevices\n .getSupportedSeries(context.id)\n .then(supportedMeasurementSeries =>\n config.datapoints.filter(configMeasurement =>\n supportedMeasurementSeries.find(\n supportedSeries =>\n supportedSeries.fragment === configMeasurement.fragment &&\n supportedSeries.series === configMeasurement.series\n )\n )\n )\n .then(datapoints => ({ ...config, ...{ datapoints } }));\n }\n },\n {\n name: 'Asset Properties',\n title: gettext('Device data'),\n config: {\n options: {\n properties: [],\n allowDisplayAndEditKnownProperties: true,\n hiddenPropertiesKeyPaths: ['owner']\n }\n },\n _x: 0,\n _y: 7,\n _height: 8,\n _width: 4\n },\n {\n name: 'Alarm list',\n title: gettext('Active, critical alarms'),\n _x: 4,\n _y: 7,\n _height: 4,\n _width: 4,\n config: {\n options: {\n orderMode: 'ACTIVE_FIRST',\n severity: { CRITICAL: true },\n status: {\n ACTIVE: true,\n ACKNOWLEDGED: false,\n CLEARED: false\n },\n types: []\n }\n }\n },\n {\n name: 'deviceGroupAssignmentWidget',\n title: gettext('Group assignment'),\n _x: 8,\n _y: 7,\n _height: 4,\n _width: 4\n },\n {\n componentId: 'Map',\n title: gettext('Location'),\n _x: 4,\n _y: 11,\n _height: 4,\n _width: 8\n }\n ] as Widget[];\n\n constructor(\n private router: ActivatedRoute,\n private widgetService: WidgetService,\n private translateService: TranslateService\n ) {\n this.currentContext$ = this.router.parent.data.pipe(\n map(({ contextData }) => {\n this.title = contextData.name;\n return contextData;\n })\n );\n\n this.widgets$ = from(this.DEVICE_INFO_WIDGETS).pipe(\n mergeMap(widget => this.widgetService.mapLegacy(widget)),\n map(widget => ({\n ...widget,\n config: {\n ...widget.config,\n device: this.router.parent.snapshot.data.contextData\n }\n })),\n toArray()\n );\n\n this.widgetsSubscription = combineLatest([this.widgets$, this.currentContext$]).subscribe(\n () => {\n this.isLoading$.next(false);\n }\n );\n }\n\n ngOnDestroy() {\n this.widgetsSubscription.unsubscribe();\n }\n}\n","<c8y-title>\n {{ title }}\n</c8y-title>\n<c8y-widgets-dashboard\n [context]=\"currentContext$ | async\"\n [widgets]=\"widgets$ | async\"\n [settings]=\"{\n isLoading: isLoading$ | async,\n isDisabled: true,\n canDelete: false,\n translateWidgetTitle: true,\n allowFullscreen: false,\n canCopy: false\n }\"\n>\n</c8y-widgets-dashboard>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { CoreModule, hookRoute, ViewContext, gettext } from '@c8y/ngx-components';\nimport { ContextDashboardModule } from '../context-dashboard.module';\nimport { DeviceInfoDashboardComponent } from './device-info-dashboard.component';\n\n@NgModule({\n declarations: [DeviceInfoDashboardComponent],\n imports: [CommonModule, CoreModule, ContextDashboardModule],\n exports: [],\n entryComponents: [DeviceInfoDashboardComponent],\n providers: [\n hookRoute({\n context: ViewContext.Device,\n path: 'device-info',\n component: DeviceInfoDashboardComponent,\n label: gettext('Info'),\n priority: 10000,\n icon: 'asterisk'\n })\n ]\n})\nexport class DeviceInfoDashboardModule {}\n","import { Component, OnInit } from '@angular/core';\nimport { gettext, Widget } from '@c8y/ngx-components';\nimport { WidgetService } from '../widget.service';\n\n@Component({\n selector: 'c8y-device-management-home-dashboard',\n templateUrl: './device-management-home-dashboard.component.html'\n})\nexport class DeviceManagementHomeDashboardComponent implements OnInit {\n widgets = [];\n dashboardName = 'home-dm1';\n defaultWidgets = [\n {\n name: 'devicemanagement.welcome.widget',\n title: gettext('Quick links'),\n _x: 0,\n _y: 0,\n _height: 4,\n _width: 6\n },\n {\n name: 'Recent Alarms',\n title: gettext('Recent alarms'),\n _x: 6,\n _y: 0,\n _height: 4,\n _width: 6\n }\n ] as Widget[];\n\n constructor(private widgetService: WidgetService) {}\n\n ngOnInit() {\n this.defaultWidgets.map(async widget => {\n await this.widgetService\n .mapLegacy(widget)\n .then(transformedWidget => this.widgets.push(transformedWidget));\n });\n }\n}\n","<c8y-title>\n {{ 'Home' | translate }}\n</c8y-title>\n\n<c8y-context-dashboard\n [name]=\"dashboardName\"\n [defaultWidgets]=\"defaultWidgets\"\n [canDelete]=\"false\"\n></c8y-context-dashboard>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { CoreModule, gettext, hookNavigator, hookRoute } from '@c8y/ngx-components';\nimport { ContextDashboardModule } from '../context-dashboard.module';\nimport { DeviceManagementHomeDashboardComponent } from './device-management-home-dashboard.component';\n\n@NgModule({\n declarations: [DeviceManagementHomeDashboardComponent],\n imports: [CommonModule, CoreModule, ContextDashboardModule],\n exports: [],\n providers: [\n hookRoute({\n path: '',\n component: DeviceManagementHomeDashboardComponent\n }),\n hookNavigator({ label: gettext('Home'), icon: 'home', priority: 10000, path: '/' })\n ]\n})\nexport class DeviceManagementHomeDashboardModule {}\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { IManagedObject, InventoryService, IResultList } from '@c8y/client';\nimport { debounceTime, distinctUntilChanged, shareReplay, switchMap, tap } from 'rxjs/operators';\nimport {\n FilterInputComponent,\n gettext,\n ModalService,\n Status,\n AlertService,\n Permissions\n} from '@c8y/ngx-components';\nimport { DashboardDetailComponent } from '../dashboard-detail.component';\nimport { ContextDashboardService } from '../context-dashboard.service';\nimport { ContextDashboardType } from '../context-dashboard.model';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ReportDashboardService } from './report-dashboard.service';\n\n@Component({\n selector: 'c8y-report-dashboard-list',\n templateUrl: './report-dashboard-list.component.html'\n})\nexport class ReportDashboardListComponent implements OnInit {\n @ViewChild(FilterInputComponent, { static: false }) filter: FilterInputComponent;\n textFilter$: BehaviorSubject<string> = new BehaviorSubject('');\n reload$: BehaviorSubject<void> = new BehaviorSubject(null);\n reloading = false;\n reports$: Observable<IResultList<IManagedObject>> = combineLatest(\n this.textFilter$.pipe(debounceTime(400), distinctUntilChanged()),\n this.reload$\n ).pipe(\n tap(() => {\n this.reloading = true;\n }),\n switchMap(([text]) => this.loadReports(text)),\n tap(() => {\n this.reloading = false;\n }),\n shareReplay(1)\n );\n canAddReport = false;\n private readonly DELETED_SUCCESS_MSG = gettext('Report deleted.');\n\n constructor(\n private inventoryService: InventoryService,\n private contextDashboardService: ContextDashboardService,\n private bsModal: BsModalService,\n private translateService: TranslateService,\n private modal: ModalService,\n private alertService: AlertService,\n private reportDashboardService: ReportDashboardService,\n private permissions: Permissions\n ) {}\n\n ngOnInit() {\n this.canAddReport = this.permissions.hasAnyRole([\n 'ROLE_INVENTORY_CREATE',\n 'ROLE_INVENTORY_ADMIN'\n ]);\n }\n\n async loadReports(partialName?: string) {\n return partialName\n ? this.reportDashboardService.listReports({ filter: { name: `*${partialName}*` } })\n : this.reportDashboardService.listReports();\n }\n\n async add() {\n const initialState = {\n isReport: true,\n isNamedDashboard: true\n };\n const modal = this.bsModal.show(DashboardDetailComponent, {\n class: 'modal-lg',\n ignoreBackdropClick: true,\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n initialState\n }).content as DashboardDetailComponent;\n try {\n const cfg = await modal.result;\n const { name, icon, c8y_IsNavigatorNode, priority, description, ...dashboardCfg } = cfg;\n const report = (\n await this.reportDashboardService.createReport({\n name,\n icon,\n c8y_IsNavigatorNode,\n priority,\n description\n } as Partial<IManagedObject>)\n ).data;\n\n await this.contextDashboardService.create(\n dashboardCfg,\n undefined,\n `${this.contextDashboardService.REPORT_PARTIAL_NAME}${report.id}`\n );\n if (report.c8y_IsNavigatorNode) {\n this.reportDashboardService.addReportNavigatorNode(report);\n }\n this.reload$.next();\n modal.close();\n } catch (ex) {\n if (ex) {\n throw new Error(`Something went wrong: ${ex}`);\n }\n }\n }\n\n async delete(report: IManagedObject) {\n try {\n const dashboard = await this.contextDashboardService\n .getDashboard$(`report_${report.id}`, [ContextDashboardType.Named])\n .toPromise();\n const isDashboardFrozen = !!dashboard?.c8y_Dashboard?.isFrozen;\n\n const msg = isDashboardFrozen\n ? gettext(\n `You are about to delete the report \"{{ reportName }}\". Be aware that the report has a locked dashboard assigned. Do you want to proceed?`\n )\n : gettext(`You are about to delete the report \"{{ reportName }}\". Do you want to proceed?`);\n\n await this.modal.confirm(\n gettext('Delete report'),\n this.translateService.instant(msg, {\n reportName: report.name\n }),\n Status.DANGER,\n {\n ok: gettext('Delete'),\n cancel: gettext('Cancel')\n }\n );\n\n await this.contextDashboardService.delete(dashboard, false);\n await this.inventoryService.delete(report.id);\n this.alertService.success(this.DELETED_SUCCESS_MSG);\n if (report.c8y_IsNavigatorNode) {\n this.reportDashboardService.removeNavigatorNode(report);\n }\n this.reload$.next();\n } catch (ex) {\n if (ex) {\n throw new Error(`Something went wrong: ${ex}`);\n }\n }\n }\n\n async update(report: IManagedObject) {\n report.c8y_IsNavigatorNode = report.c8y_IsNavigatorNode ? {} : null;\n await this.inventoryService.update(report);\n report.c8y_IsNavigatorNode\n ? this.reportDashboardService.addReportNavigatorNode(report)\n : this.reportDashboardService.removeNavigatorNode(report);\n }\n}\n","<c8y-title>\n {{ 'Reports' | translate }}\n</c8y-title>\n\n<c8y-action-bar-item [placement]=\"'left'\" itemClass=\"navbar-form\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n type=\"search\"\n [attr.aria-label]=\"'Filter' | translate\"\n placeholder=\"{{ 'Filter…' | translate }}\"\n [ngModel]=\"textFilter$ | async\"\n (ngModelChange)=\"textFilter$.next($event)\"\n />\n <span class=\"input-group-addon\">\n <i c8yIcon=\"search\" *ngIf=\"(textFilter$ | async).length === 0\"></i>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n *ngIf=\"(textFilter$ | async).length > 0\"\n (click)=\"textFilter$.next('')\"\n px-event=\"Clear filtering reports\"\n ></i>\n </span>\n </div>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n type=\"button\"\n title=\"{{ 'Add report' | translate }}\"\n [attr.data-cy]=\"'reports-add-report-action-bar-button'\"\n (click)=\"add()\"\n [disabled]=\"!canAddReport\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add report' | translate }}\n </button>\n <button\n class=\"btn btn-dot m-r-16\"\n type=\"button\"\n aria-label=\"{{ 'Info' | translate}}\"\n popover=\"{{ 'You don\\'t have permission to add reports' | translate }}\"\n triggers=\"focus\"\n placement=\"top\"\n container=\"body\"\n *ngIf=\"!canAddReport\"\n >\n <i [c8yIcon]=\"'info-circle'\" class=\"text-primary\"></i>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n class=\"btn btn-link\"\n (click)=\"loadReports()\"\n >\n <i [ngClass]=\"{ 'icon-spin': reloading }\" c8yIcon=\"refresh\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/users-guide/cockpit/#reports\"></c8y-help>\n\n<c8y-list-group>\n <c8y-li\n class=\"page-sticky-header hidden-xs hidden-sm\"\n *ngIf=\"(reports$ | async)?.data.length > 0\"\n >\n <c8y-li-icon>\n <i class=\"p-l-24\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-60\">\n <div class=\"col-3\">\n {{ 'Report' | translate }}\n </div>\n <div class=\"col-6\">\n {{ 'Description' | translate }}\n </div>\n <div class=\"col-2\">\n {{ 'Show in navigator' | translate }}\n </div>\n </c8y-li-body>\n </c8y-li>\n\n <c8y-li *c8yFor=\"let report of reports$; let i = index; loadMore: 'auto'\">\n <c8y-li-icon [icon]=\"report.icon\"></c8y-li-icon>\n <c8y-li-body class=\"content-flex-60\">\n <div class=\"col-3\">\n <button\n class=\"btn-clean\"\n type=\"button\"\n title=\"{{ report.name }}\"\n routerLink=\"/reports/{{ report.id }}\"\n >\n <span class=\"text-truncate\">\n {{ report.name }}\n </span>\n </button>\n </div>\n <div class=\"col-6\">\n <p class=\"small text-truncate-wrap\">\n <em class=\"text-muted\" *ngIf=\"!report.description; else showDescription\">\n {{ 'No description available' | translate }}\n </em>\n <ng-template #showDescription>\n {{ report.description }}\n </ng-template>\n </p>\n </div>\n <div class=\"col-2 fit-h-20 m-t-xs-8\">\n <label class=\"c8y-switch c8y-switch--inline\" title=\"{{ 'Show in navigator' | translate }}\">\n <input\n [(ngModel)]=\"!!report.c8y_IsNavigatorNode\"\n type=\"checkbox\"\n (change)=\"update(report)\"\n />\n <span></span>\n <span class=\"visible-xs\">\n {{ 'Show in navigator' | translate }}\n </span>\n </label>\n </div>\n <div class=\"col-1 hidden-xs\">\n <button\n class=\"btn btn-dot btn-dot--danger showOnHover m-l-auto d-flex\"\n type=\"button\"\n [attr.aria-label]=\"'Remove report' | translate\"\n tooltip=\"{{ 'Remove report' | translate }}\"\n [delay]=\"500\"\n (click)=\"delete(report)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n <div class=\"visible-xs p-t-8 text-right\">\n <button\n class=\"btn btn-default btn-sm\"\n type=\"button\"\n title=\"{{ 'Remove report' | translate }}\"\n (click)=\"delete(report)\"\n >\n <i c8yIcon=\"delete\"></i>\n {{ 'Remove report' | translate }}\n </button>\n </div>\n </c8y-li-body>\n </c8y-li>\n</c8y-list-group>\n\n<c8y-ui-empty-state\n *ngIf=\"(reports$ | async)?.data.length === 0\"\n [icon]=\"'c8y-reports'\"\n [title]=\"'There are no reports defined.' | translate\"\n [subtitle]=\"'Add a report first.' | translate\"\n>\n <p>\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Add report' | translate }}\"\n [attr.data-cy]=\"'reports-add-report-empty-state-button'\"\n (click)=\"add()\"\n >\n {{ 'Add report' | translate }}\n </button>\n </p>\n <p c8y-guide-docs>\n <small translate ngNonBindable>\n Find out more in the\n <a c8y-guide-href=\"users-guide/cockpit/#reports\">User guide`KEEP_ORIGINAL`</a>\n .\n </small>\n </p>\n</c8y-ui-empty-state>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\nimport { ContextDashboardType } from '../context-dashboard.model';\nimport { ContextDashboardService } from '../context-dashboard.service';\nimport { tap } from 'rxjs/operators';\nimport { from, Observable, of } from 'rxjs';\nimport { Tab } from '@c8y/ngx-components';\n\n@Injectable()\nexport class ReportDashboardGuard {\n constructor(private contextDashboardService: ContextDashboardService) {}\n\n canActivate(route: ActivatedRouteSnapshot): Observable<boolean | Tab[]> {\n const reportId = route.data.contextData && route.data.contextData.id;\n return from(\n this.contextDashboardService.activateDashboards(route, [ContextDashboardType.Named])\n ).pipe(\n tap(res => {\n return Array.isArray(res) && res.length === 0\n ? this.createDashboardIfNotExist(reportId)\n : of(true);\n })\n );\n }\n\n createDashboardIfNotExist(reportId) {\n const dashboardCfg = {};\n return this.contextDashboardService\n .create(dashboardCfg, undefined, `report_${reportId}`)\n .then(() => true);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { CoreModule, hookNavigator, hookRoute, ViewContext } from '@c8y/ngx-components';\nimport { ContextDashboardModule } from '../context-dashboard.module';\n\nimport { ContextDashboardComponent } from '../context-dashboard.component';\nimport { ReportDashboardGuard } from './report-dashboard.guard';\nimport { ReportDashboardNavigationFactory } from './report-dashboard-navigation.factory';\nimport { ReportDashboardListComponent } from './report-dashboard-list.component';\nimport { ReportDashboardService } from './report-dashboard.service';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\n\n@NgModule({\n declarations: [ReportDashboardListComponent],\n entryComponents: [],\n imports: [\n CoreModule,\n ContextDashboardModule,\n TooltipModule.forRoot(),\n RouterModule.forChild([\n {\n path: 'reports',\n component: ReportDashboardListComponent\n }\n ]),\n PopoverModule\n ],\n providers: [\n ReportDashboardGuard,\n ReportDashboardService,\n hookRoute({\n path: 'dashboard/:dashboardId',\n component: ContextDashboardComponent,\n canActivate: [ReportDashboardGuard],\n context: ViewContext.Report\n }),\n hookNavigator(ReportDashboardNavigationFactory)\n ]\n})\nexport class ReportDashboardModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i3.ReportDashboardService","i4","i3","i2.ContextDashboardService","i5","i7","i9.AppearanceSettingsComponent","i10.WidgetPreviewComponent","i11.DashboardAvailabilityComponent","i1.AddDashboardFactory","i1.WidgetService","i4.ContextDashboardService","i6","i8","i4.WidgetService","i2.ContextDashboardComponent","i1.ContextDashboardService","i1.ContextDashboardModule","i2.WidgetService","i3.ContextDashboardComponent","i6.ReportDashboardService","i9","i10","i11"],"mappings":"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"}