@c8y/ngx-components 1020.34.0 → 1020.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/auth-configuration/sso-configuration/sso-configuration.model.d.ts +2 -0
  2. package/auth-configuration/sso-configuration/sso-configuration.model.d.ts.map +1 -1
  3. package/auth-configuration/sso-configuration/sso-configuration.service.d.ts.map +1 -1
  4. package/auth-configuration/sso-configuration/template-parts/access-mapping/access-mapping.component.d.ts +5 -0
  5. package/auth-configuration/sso-configuration/template-parts/access-mapping/access-mapping.component.d.ts.map +1 -1
  6. package/auth-configuration/sso-configuration/template-parts/user-data-mapping.component.d.ts +7 -0
  7. package/auth-configuration/sso-configuration/template-parts/user-data-mapping.component.d.ts.map +1 -1
  8. package/auth-configuration/sso-configuration/templates/aad-configuration-mapper.d.ts.map +1 -1
  9. package/auth-configuration/sso-configuration/templates/aad.model.d.ts +1 -0
  10. package/auth-configuration/sso-configuration/templates/aad.model.d.ts.map +1 -1
  11. package/auth-configuration/sso-configuration/templates/custom-configuration-mapper.d.ts.map +1 -1
  12. package/auth-configuration/sso-configuration/templates/custom.model.d.ts +1 -0
  13. package/auth-configuration/sso-configuration/templates/custom.model.d.ts.map +1 -1
  14. package/auth-configuration/sso-configuration/templates/key-cloak-configuration-mapper.d.ts.map +1 -1
  15. package/auth-configuration/sso-configuration/templates/key-cloak.model.d.ts +1 -0
  16. package/auth-configuration/sso-configuration/templates/key-cloak.model.d.ts.map +1 -1
  17. package/context-dashboard/context-dashboard.component.d.ts +4 -0
  18. package/context-dashboard/context-dashboard.component.d.ts.map +1 -1
  19. package/context-dashboard/dashboard-detail.component.d.ts +2 -0
  20. package/context-dashboard/dashboard-detail.component.d.ts.map +1 -1
  21. package/core/dynamic-forms/typeahead/typeahead.type.component.d.ts.map +1 -1
  22. package/core/product-experience/gainsight.service.d.ts +1 -0
  23. package/core/product-experience/gainsight.service.d.ts.map +1 -1
  24. package/core/select/typeahead.component.d.ts.map +1 -1
  25. package/esm2022/auth-configuration/sso-configuration/sso-configuration.model.mjs +1 -1
  26. package/esm2022/auth-configuration/sso-configuration/sso-configuration.service.mjs +5 -3
  27. package/esm2022/auth-configuration/sso-configuration/template-parts/access-mapping/access-mapping.component.mjs +25 -11
  28. package/esm2022/auth-configuration/sso-configuration/template-parts/user-data-mapping.component.mjs +18 -8
  29. package/esm2022/auth-configuration/sso-configuration/templates/aad-configuration-mapper.mjs +5 -3
  30. package/esm2022/auth-configuration/sso-configuration/templates/aad-template.component.mjs +3 -3
  31. package/esm2022/auth-configuration/sso-configuration/templates/aad.model.mjs +1 -1
  32. package/esm2022/auth-configuration/sso-configuration/templates/custom-configuration-mapper.mjs +5 -3
  33. package/esm2022/auth-configuration/sso-configuration/templates/custom-template.component.mjs +3 -3
  34. package/esm2022/auth-configuration/sso-configuration/templates/custom.model.mjs +1 -1
  35. package/esm2022/auth-configuration/sso-configuration/templates/key-cloak-configuration-mapper.mjs +5 -3
  36. package/esm2022/auth-configuration/sso-configuration/templates/key-cloak-template.component.mjs +3 -3
  37. package/esm2022/auth-configuration/sso-configuration/templates/key-cloak.model.mjs +1 -1
  38. package/esm2022/context-dashboard/context-dashboard.component.mjs +85 -23
  39. package/esm2022/context-dashboard/dashboard-detail.component.mjs +42 -11
  40. package/esm2022/core/dynamic-forms/typeahead/typeahead.type.component.mjs +2 -3
  41. package/esm2022/core/product-experience/gainsight.service.mjs +15 -1
  42. package/esm2022/core/select/typeahead.component.mjs +9 -4
  43. package/esm2022/repository/firmware/list/add-firmware-patch-modal.component.mjs +3 -3
  44. package/esm2022/trusted-certificates/list/trusted-certificate-list.component.mjs +2 -2
  45. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +118 -86
  46. package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  47. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +123 -31
  48. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  49. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +2 -2
  50. package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
  51. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +1 -1
  52. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  53. package/fesm2022/c8y-ngx-components.mjs +21 -3
  54. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  55. package/locales/de.po +46 -12
  56. package/locales/en.po +7 -7
  57. package/locales/es.po +40 -12
  58. package/locales/fr.po +40 -12
  59. package/locales/ja_JP.po +43 -12
  60. package/locales/locales.pot +35 -14
  61. package/locales/nl.po +40 -12
  62. package/locales/pl.po +40 -12
  63. package/locales/pt_BR.po +40 -12
  64. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, Component, inject, InjectionToken, EventEmitter, Input, Output, forwardRef, Optional, Inject, ViewChild, HostBinding, HostListener, TemplateRef, NgModule } from '@angular/core';
3
3
  import * as i3 from '@c8y/ngx-components';
4
- import { gettext, Permissions, ContextRouteService, ViewContext, Status, NavigatorNode, getActivatedRoute, NEW_DASHBOARD_QUERY_PARAM, DashboardChildChange, WidgetsDashboardComponent, hookRoute, CoreModule, hookTab, HookProviderTypes, hookActionBar, hookNavigator, BaseColumn, getBasicInputArrayFormFieldConfig, DataGridService, alertOnError, ModalModule } from '@c8y/ngx-components';
4
+ import { gettext, Permissions, ContextRouteService, ViewContext, Status, NavigatorNode, getActivatedRoute, NEW_DASHBOARD_QUERY_PARAM, memoize, DashboardChildChange, WidgetsDashboardComponent, hookRoute, CoreModule, hookTab, HookProviderTypes, hookActionBar, hookNavigator, BaseColumn, getBasicInputArrayFormFieldConfig, DataGridService, alertOnError, ModalModule } from '@c8y/ngx-components';
5
5
  import * as i1 from '@angular/router';
6
6
  import { of, Subject, from, combineLatest, iif, timer } from 'rxjs';
7
7
  import * as i2 from '@angular/common';
@@ -10,6 +10,7 @@ import * as i3$1 from '@angular/forms';
10
10
  import { Validators, NG_VALUE_ACCESSOR } from '@angular/forms';
11
11
  import * as i4 from 'ngx-bootstrap/popover';
12
12
  import { PopoverModule } from 'ngx-bootstrap/popover';
13
+ import { __decorate, __metadata } from 'tslib';
13
14
  import * as i2$1 from '@ngx-translate/core';
14
15
  import { assign, pick, cloneDeep, some, keys, keyBy, has, set, reduce, forEach, get, isEqual, clone, omit, sortBy, escapeRegExp, findIndex, kebabCase, every } from 'lodash-es';
15
16
  import * as i2$2 from 'ngx-bootstrap/modal';
@@ -1725,19 +1726,43 @@ class DashboardDetailComponent {
1725
1726
  }
1726
1727
  }
1727
1728
  async createNewDashboard() {
1728
- const dashboardMO = await this.contextDashboardService.create(this.dashboard, this.currentContext);
1729
+ const mo = await this.contextDashboardService.create(this.dashboard, this.currentContext);
1730
+ await this.onCreateGSEvent(mo);
1731
+ this.cleanupAfterDetailsClose();
1732
+ await this.contextDashboardService.navigateToDashboard(mo);
1733
+ }
1734
+ async onCreateGSEvent(mo) {
1735
+ const parentName = await this.convertStringToHash(this.context?.name);
1736
+ const dashboardName = await this.convertStringToHash(this.dashboard?.name);
1729
1737
  this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.DASHBOARDS, {
1730
1738
  component: PRODUCT_EXPERIENCE.DASHBOARD.COMPONENTS.ADD_DASHBOARD,
1731
1739
  action: PRODUCT_EXPERIENCE.DASHBOARD.ACTIONS.CREATE,
1732
- name: this.dashboard.name,
1733
- id: dashboardMO.id,
1734
- dashboardType: dashboardMO.c8y_Dashboard.deviceType
1735
- ? dashboardMO.c8y_Dashboard.deviceTypeValue
1736
- : null,
1740
+ name: dashboardName,
1741
+ id: mo.id,
1742
+ nameId: `${dashboardName}_${this.mo.id}`,
1743
+ parentAssetId: this.context?.id ? this.context.id : 'noContext',
1744
+ parentAssetName: this.context?.id ? parentName : 'noContext',
1745
+ parentAssetType: this.context?.id ? this.context.type : 'noContext',
1746
+ parentAssetNameId: this.context?.id ? `${parentName}_${this.context.id}` : 'noContext',
1747
+ parentAssetNameDashboardName: this.context?.id
1748
+ ? `${parentName}_${dashboardName}`
1749
+ : 'noContext',
1750
+ parentAssetIdDashboardId: this.context?.id ? `${this.context.id}_${this.mo.id}` : 'noContext',
1751
+ parentAssetNameDashboardId: this.context?.id ? `${parentName}_${this.mo.id}` : 'noContext',
1752
+ parentAssetNameIdDashboardNameId: this.context?.id
1753
+ ? `${parentName}_${this.context.id}_${dashboardName}_${this.mo.id}`
1754
+ : 'noContext',
1755
+ dashboardType: mo.c8y_Dashboard.deviceType ? mo.c8y_Dashboard.deviceTypeValue : null,
1737
1756
  context: this.contextDashboardService.getContextForGS(this.currentContext.contextData)
1738
1757
  });
1739
- this.cleanupAfterDetailsClose();
1740
- await this.contextDashboardService.navigateToDashboard(dashboardMO);
1758
+ }
1759
+ async convertStringToHash(str) {
1760
+ if (!str) {
1761
+ return null;
1762
+ }
1763
+ return (await this.gainsightService.shouldSendPiiData())
1764
+ ? str
1765
+ : await this.gainsightService.hashGroupName(str);
1741
1766
  }
1742
1767
  async createNewReport() {
1743
1768
  try {
@@ -1854,6 +1879,12 @@ class DashboardDetailComponent {
1854
1879
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: DashboardDetailComponent, deps: [{ token: ContextDashboardService }, { token: i2$1.TranslateService }, { token: i3.ContextRouteService }, { token: i1.ActivatedRoute }, { token: i3.TabsService }, { token: i1.Router }, { token: i1$1.InventoryService }, { token: i1.ActivatedRoute }, { token: DashboardDetailService }, { token: i3.AppStateService }, { token: i3.OptionsService }, { token: i3.GroupService }, { token: i3.ModalService }, { token: i3.GainsightService }], target: i0.ɵɵFactoryTarget.Component }); }
1855
1880
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: DashboardDetailComponent, selector: "c8y-dashboard-detail", inputs: { isReport: "isReport", deviceType: "deviceType", context: "context", mo: "mo", dashboard: "dashboard", isNamedDashboard: "isNamedDashboard", hideAvailability: "hideAvailability" }, outputs: { dashboardSaved: "dashboardSaved", previewChanged: "previewChanged" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"collapse c8y-top-drawer\"\n [collapse]=\"isCollapsed\"\n [isAnimated]=\"true\"\n>\n <div class=\"p-t-16 p-b-16 p-l-24 p-r-24 separator-bottom\">\n <span class=\"h4\">{{ 'Dashboard settings' | translate }}</span>\n </div>\n\n <div\n class=\"d-flex\"\n [formGroup]=\"dashboardDetailsForm\"\n *ngIf=\"!isCollapsed\"\n >\n <c8y-tabs-outlet\n [tabs]=\"tabs$ | async\"\n [outletName]=\"'dashboardTabs'\"\n [orientation]=\"'vertical'\"\n class=\"c8y-top-drawer--tabs\"\n ></c8y-tabs-outlet>\n <div class=\"inner-scroll c8y-top-drawer__tabs-container flex-grow p-l-24 p-r-lg-32 p-r-xs-24 p-r-sm-24\">\n <c8y-tab\n *ngIf=\"(!isNamedDashboard && !hideAvailability) || isReport\"\n [label]=\"TABS.general.label\"\n [icon]=\"'imac-settings'\"\n [priority]=\"100\"\n [tabsOutlet]=\"TABS_OUTLET_NAME\"\n (onSelect)=\"selectTab(TABS.general.featureId)\"\n [isActive]=\"selectedTab === TABS.general.featureId\"\n ></c8y-tab>\n <c8y-tab\n [label]=\"TABS.appearance.label\"\n [priority]=\"50\"\n [icon]=\"'web-design'\"\n [tabsOutlet]=\"TABS_OUTLET_NAME\"\n (onSelect)=\"selectTab(TABS.appearance.featureId)\"\n [isActive]=\"selectedTab === TABS.appearance.featureId\"\n ></c8y-tab>\n <c8y-tab\n *ngIf=\"mo?.c8y_DashboardHistory\"\n [label]=\"TABS.versionHistory.label\"\n [icon]=\"'versions'\"\n [priority]=\"10\"\n [tabsOutlet]=\"TABS_OUTLET_NAME\"\n (onSelect)=\"selectTab(TABS.versionHistory.featureId)\"\n [isActive]=\"selectedTab === TABS.versionHistory.featureId\"\n ></c8y-tab>\n <ng-container [ngSwitch]=\"selectedTab\">\n <c8y-dashboard-general-settings\n *ngSwitchCase=\"TABS.general.featureId\"\n [isReport]=\"isReport\"\n [isNamedDashboard]=\"isNamedDashboard\"\n [hideAvailability]=\"hideAvailability\"\n [dashboard]=\"dashboard\"\n [generalSettingsForm]=\"generalSettingsForm\"\n [deviceTypeValue]=\"deviceTypeValue\"\n [displayDeviceTypeValue]=\"displayDeviceTypeValue\"\n [mo]=\"mo\"\n [allowTypeDashboard]=\"allowTypeDashboard\"\n [isDevice]=\"!!context?.c8y_IsDevice\"\n class=\"animated fadeIn\"\n (onDuplicateWithoutType)=\"duplicateWithoutType()\"\n ></c8y-dashboard-general-settings>\n <c8y-dashboard-appearance-settings\n *ngSwitchCase=\"TABS.appearance.featureId\"\n [dashboard]=\"dashboard\"\n [appearanceSettingsForm]=\"appearanceSettingsForm\"\n (previewChanged)=\"previewChanged.emit($event)\"\n class=\"animated fadeIn\"\n ></c8y-dashboard-appearance-settings>\n <c8y-dashboard-version-history\n *ngSwitchCase=\"TABS.versionHistory.featureId\"\n [dashboardHistory]=\"mo.c8y_DashboardHistory\"\n [isReport]=\"isReport\"\n (onRevert)=\"revertDashboard($event)\"\n class=\"animated fadeIn\"\n ></c8y-dashboard-version-history>\n </ng-container>\n </div>\n </div>\n\n <div class=\"c8y-top-drawer--footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n data-cy=\"dashboard-detail--cancel-dashboard\"\n (click)=\"cancel()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"button\"\n data-cy=\"dashboard-detail--save-dashboard\"\n (click)=\"save()\"\n [disabled]=\"\n (dashboardDetailsForm?.invalid || dashboardDetailsForm?.pristine) && this.isEdit\n \"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i3.TabsOutletComponent, selector: "c8y-tabs-outlet,c8y-ui-tabs", inputs: ["tabs", "orientation", "navigatorOpen", "outletName", "context"] }, { kind: "component", type: i3.TabComponent, selector: "c8y-tab", inputs: ["path", "label", "icon", "priority", "orientation", "injector", "tabsOutlet", "isActive"], outputs: ["onSelect"] }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "component", type: DashboardGeneralSettingsComponent, selector: "c8y-dashboard-general-settings", inputs: ["isReport", "isNamedDashboard", "hideAvailability", "dashboard", "generalSettingsForm", "deviceTypeValue", "displayDeviceTypeValue", "allowTypeDashboard", "isDevice", "mo"], outputs: ["onDuplicateWithoutType"] }, { kind: "component", type: DashboardAppearanceSettingsComponent, selector: "c8y-dashboard-appearance-settings", inputs: ["dashboard", "appearanceSettingsForm"], outputs: ["previewChanged"] }, { kind: "component", type: DashboardVersionHistoryComponent, selector: "c8y-dashboard-version-history", inputs: ["dashboardHistory", "isReport"], outputs: ["onRevert"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
1856
1881
  }
1882
+ __decorate([
1883
+ memoize(),
1884
+ __metadata("design:type", Function),
1885
+ __metadata("design:paramtypes", [String]),
1886
+ __metadata("design:returntype", Promise)
1887
+ ], DashboardDetailComponent.prototype, "convertStringToHash", null);
1857
1888
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: DashboardDetailComponent, decorators: [{
1858
1889
  type: Component,
1859
1890
  args: [{ selector: 'c8y-dashboard-detail', template: "<div\n class=\"collapse c8y-top-drawer\"\n [collapse]=\"isCollapsed\"\n [isAnimated]=\"true\"\n>\n <div class=\"p-t-16 p-b-16 p-l-24 p-r-24 separator-bottom\">\n <span class=\"h4\">{{ 'Dashboard settings' | translate }}</span>\n </div>\n\n <div\n class=\"d-flex\"\n [formGroup]=\"dashboardDetailsForm\"\n *ngIf=\"!isCollapsed\"\n >\n <c8y-tabs-outlet\n [tabs]=\"tabs$ | async\"\n [outletName]=\"'dashboardTabs'\"\n [orientation]=\"'vertical'\"\n class=\"c8y-top-drawer--tabs\"\n ></c8y-tabs-outlet>\n <div class=\"inner-scroll c8y-top-drawer__tabs-container flex-grow p-l-24 p-r-lg-32 p-r-xs-24 p-r-sm-24\">\n <c8y-tab\n *ngIf=\"(!isNamedDashboard && !hideAvailability) || isReport\"\n [label]=\"TABS.general.label\"\n [icon]=\"'imac-settings'\"\n [priority]=\"100\"\n [tabsOutlet]=\"TABS_OUTLET_NAME\"\n (onSelect)=\"selectTab(TABS.general.featureId)\"\n [isActive]=\"selectedTab === TABS.general.featureId\"\n ></c8y-tab>\n <c8y-tab\n [label]=\"TABS.appearance.label\"\n [priority]=\"50\"\n [icon]=\"'web-design'\"\n [tabsOutlet]=\"TABS_OUTLET_NAME\"\n (onSelect)=\"selectTab(TABS.appearance.featureId)\"\n [isActive]=\"selectedTab === TABS.appearance.featureId\"\n ></c8y-tab>\n <c8y-tab\n *ngIf=\"mo?.c8y_DashboardHistory\"\n [label]=\"TABS.versionHistory.label\"\n [icon]=\"'versions'\"\n [priority]=\"10\"\n [tabsOutlet]=\"TABS_OUTLET_NAME\"\n (onSelect)=\"selectTab(TABS.versionHistory.featureId)\"\n [isActive]=\"selectedTab === TABS.versionHistory.featureId\"\n ></c8y-tab>\n <ng-container [ngSwitch]=\"selectedTab\">\n <c8y-dashboard-general-settings\n *ngSwitchCase=\"TABS.general.featureId\"\n [isReport]=\"isReport\"\n [isNamedDashboard]=\"isNamedDashboard\"\n [hideAvailability]=\"hideAvailability\"\n [dashboard]=\"dashboard\"\n [generalSettingsForm]=\"generalSettingsForm\"\n [deviceTypeValue]=\"deviceTypeValue\"\n [displayDeviceTypeValue]=\"displayDeviceTypeValue\"\n [mo]=\"mo\"\n [allowTypeDashboard]=\"allowTypeDashboard\"\n [isDevice]=\"!!context?.c8y_IsDevice\"\n class=\"animated fadeIn\"\n (onDuplicateWithoutType)=\"duplicateWithoutType()\"\n ></c8y-dashboard-general-settings>\n <c8y-dashboard-appearance-settings\n *ngSwitchCase=\"TABS.appearance.featureId\"\n [dashboard]=\"dashboard\"\n [appearanceSettingsForm]=\"appearanceSettingsForm\"\n (previewChanged)=\"previewChanged.emit($event)\"\n class=\"animated fadeIn\"\n ></c8y-dashboard-appearance-settings>\n <c8y-dashboard-version-history\n *ngSwitchCase=\"TABS.versionHistory.featureId\"\n [dashboardHistory]=\"mo.c8y_DashboardHistory\"\n [isReport]=\"isReport\"\n (onRevert)=\"revertDashboard($event)\"\n class=\"animated fadeIn\"\n ></c8y-dashboard-version-history>\n </ng-container>\n </div>\n </div>\n\n <div class=\"c8y-top-drawer--footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n data-cy=\"dashboard-detail--cancel-dashboard\"\n (click)=\"cancel()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"button\"\n data-cy=\"dashboard-detail--save-dashboard\"\n (click)=\"save()\"\n [disabled]=\"\n (dashboardDetailsForm?.invalid || dashboardDetailsForm?.pristine) && this.isEdit\n \"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</div>\n" }]
@@ -1875,7 +1906,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
1875
1906
  type: Output
1876
1907
  }], previewChanged: [{
1877
1908
  type: Output
1878
- }] } });
1909
+ }], convertStringToHash: [] } });
1879
1910
 
1880
1911
  class WidgetService {
1881
1912
  constructor(dynamicComponentService, translateService, moduleConfig) {
@@ -2596,14 +2627,7 @@ class ContextDashboardComponent {
2596
2627
  const route = this.route.parent.snapshot.url.map(segment => segment.path).join('/');
2597
2628
  this.router.navigateByUrl(route);
2598
2629
  }
2599
- this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.DASHBOARDS, {
2600
- component: PRODUCT_EXPERIENCE.DASHBOARD.COMPONENTS.DELETE_DASHBOARD,
2601
- action: PRODUCT_EXPERIENCE.DASHBOARD.ACTIONS.DELETE,
2602
- name: this.dashboard.name,
2603
- id: this.mo.id,
2604
- dashboardType: this.dashboard.deviceType ? this.dashboard.deviceTypeValue : null,
2605
- context: this.contextDashboardService.getContextForGS(this.context)
2606
- });
2630
+ await this.onDeleteGSEvent();
2607
2631
  }
2608
2632
  get isDeviceTypeDashboard() {
2609
2633
  return !!this.dashboard?.deviceType;
@@ -2790,18 +2814,7 @@ class ContextDashboardComponent {
2790
2814
  this.dashboardDetails.show(false);
2791
2815
  }
2792
2816
  else {
2793
- this.gainsightService.triggerEvent(this.isReport
2794
- ? PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.REPORTS
2795
- : PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.DASHBOARDS, {
2796
- component: PRODUCT_EXPERIENCE.DASHBOARD.COMPONENTS.DASHBOARD_VIEW,
2797
- action: PRODUCT_EXPERIENCE.DASHBOARD.ACTIONS.LOAD,
2798
- name: this.dashboard.name,
2799
- id: this.mo.id,
2800
- dashboardType: this.dashboard.deviceType ? this.dashboard.deviceTypeValue : null,
2801
- context: this.isReport
2802
- ? PRODUCT_EXPERIENCE.DASHBOARD.CONTEXT.REPORT
2803
- : this.contextDashboardService.getContextForGS(this.context)
2804
- });
2817
+ await this.onLoadGSEvent();
2805
2818
  }
2806
2819
  }
2807
2820
  async dashboardPreview(layoutChanges) {
@@ -2962,9 +2975,88 @@ class ContextDashboardComponent {
2962
2975
  }
2963
2976
  return historyDescription;
2964
2977
  }
2978
+ async onDeleteGSEvent() {
2979
+ const parentName = await this.convertStringToHash(this.context?.name);
2980
+ const dashboardName = await this.convertStringToHash(this.dashboard?.name);
2981
+ this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.DASHBOARDS, {
2982
+ component: PRODUCT_EXPERIENCE.DASHBOARD.COMPONENTS.DELETE_DASHBOARD,
2983
+ action: PRODUCT_EXPERIENCE.DASHBOARD.ACTIONS.DELETE,
2984
+ name: dashboardName,
2985
+ id: this.mo.id,
2986
+ nameId: `${dashboardName}_${this.mo.id}`,
2987
+ parentAssetId: this.context?.id ? this.context.id : 'noContext',
2988
+ parentAssetName: this.context?.id ? parentName : 'noContext',
2989
+ parentAssetType: this.context?.id ? this.context.type : 'noContext',
2990
+ parentAssetNameId: this.context?.id ? `${parentName}_${this.context.id}` : 'noContext',
2991
+ parentAssetNameDashboardName: this.context?.id
2992
+ ? `${parentName}_${dashboardName}`
2993
+ : 'noContext',
2994
+ parentAssetIdDashboardId: this.context?.id ? `${this.context.id}_${this.mo.id}` : 'noContext',
2995
+ parentAssetNameDashboardId: this.context?.id ? `${parentName}_${this.mo.id}` : 'noContext',
2996
+ parentAssetNameIdDashboardNameId: this.context?.id
2997
+ ? `${parentName}_${this.context.id}_${dashboardName}_${this.mo.id}`
2998
+ : 'noContext',
2999
+ dashboardType: this.dashboard.deviceType ? this.dashboard.deviceTypeValue : null,
3000
+ context: this.contextDashboardService.getContextForGS(this.context)
3001
+ });
3002
+ }
3003
+ async onLoadGSEvent() {
3004
+ const parentName = await this.convertStringToHash(this.context?.name);
3005
+ const dashboardName = (await this.convertStringToHash(this.dashboard?.name)) ??
3006
+ this.extractDefaultDashboardName(this.mo) ??
3007
+ 'none';
3008
+ this.gainsightService.triggerEvent(this.isReport
3009
+ ? PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.REPORTS
3010
+ : PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.DASHBOARDS, {
3011
+ component: PRODUCT_EXPERIENCE.DASHBOARD.COMPONENTS.DASHBOARD_VIEW,
3012
+ action: PRODUCT_EXPERIENCE.DASHBOARD.ACTIONS.LOAD,
3013
+ name: dashboardName,
3014
+ id: this.mo.id,
3015
+ nameId: `${dashboardName}_${this.mo.id}`,
3016
+ parentAssetId: this.context?.id ? this.context.id : 'noContext',
3017
+ parentAssetName: this.context?.id ? parentName : 'noContext',
3018
+ parentAssetType: this.context?.id ? this.context.type : 'noContext',
3019
+ parentAssetNameId: this.context?.id ? `${parentName}_${this.context.id}` : 'noContext',
3020
+ parentAssetNameDashboardName: this.context?.id
3021
+ ? `${parentName}_${dashboardName}`
3022
+ : 'noContext',
3023
+ parentAssetIdDashboardId: this.context?.id
3024
+ ? `${this.context.id}_${this.mo.id}`
3025
+ : 'noContext',
3026
+ parentAssetNameDashboardId: this.context?.id ? `${parentName}_${this.mo.id}` : 'noContext',
3027
+ parentAssetNameIdDashboardNameId: this.context?.id
3028
+ ? `${parentName}_${this.context.id}_${dashboardName}_${this.mo.id}`
3029
+ : 'noContext',
3030
+ dashboardType: this.dashboard.deviceType ? this.dashboard.deviceTypeValue : null,
3031
+ context: this.isReport
3032
+ ? PRODUCT_EXPERIENCE.DASHBOARD.CONTEXT.REPORT
3033
+ : this.contextDashboardService.getContextForGS(this.context)
3034
+ });
3035
+ }
3036
+ extractDefaultDashboardName(obj) {
3037
+ const nameKey = Object.keys(obj).find(key => key.startsWith('c8y_Dashboard!name!'));
3038
+ if (nameKey) {
3039
+ return nameKey.split('!').pop();
3040
+ }
3041
+ return null;
3042
+ }
3043
+ async convertStringToHash(str) {
3044
+ if (!str) {
3045
+ return null;
3046
+ }
3047
+ return (await this.gainsightService.shouldSendPiiData())
3048
+ ? str
3049
+ : this.gainsightService.hashGroupName(str);
3050
+ }
2965
3051
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextDashboardComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: ContextDashboardService }, { token: i3.AlertService }, { token: i0.Renderer2 }, { token: CONTEXT_DASHBOARD_CONFIG }, { token: WidgetService }, { token: i2$2.BsModalService }, { token: i3.GainsightService }, { token: i3.ActionBarService }, { token: i2$1.TranslateService }, { token: i3.ModalService }, { token: DashboardEditModeService }], target: i0.ɵɵFactoryTarget.Component }); }
2966
3052
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: ContextDashboardComponent, selector: "c8y-context-dashboard", inputs: { name: "name", childrenClasses: "childrenClasses", context: "context", setTitle: "setTitle", defaultWidgets: "defaultWidgets", canCopy: "canCopy", canDelete: "canDelete", isLoading: "isLoading", breadcrumbSettings: "breadcrumbSettings", showContextHelpButton: "showContextHelpButton", translateWidgetTitle: "translateWidgetTitle", hideAvailability: "hideAvailability" }, host: { listeners: { "window:beforeunload": "beforeUnloadHandler($event)" }, properties: { "class": "this.class" }, styleAttribute: "\n display: block;\n ", classAttribute: "dashboard c8y-grid-dashboard" }, viewQueries: [{ propertyName: "dashboardDetails", first: true, predicate: DashboardDetailComponent, descendants: true, static: true }, { propertyName: "widgetsDashboard", first: true, predicate: WidgetsDashboardComponent, descendants: true, static: true }], ngImport: i0, template: "<c8y-title *ngIf=\"title\">\n {{ title }}\n</c8y-title>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n [priority]=\"10000\"\n *ngIf=\"dashboard?.deviceType && dashboard.deviceTypeValue\"\n>\n <button\n class=\"btn-clean btn-link\"\n popoverTitle=\"{{ 'Dashboard template' | translate }}\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"dashboardTypePopoverRef\"\n placement=\"bottom\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n >\n <span class=\"tag tag--info text-12\">\n <span class=\"dashboard-template-marker\"></span>\n {{ dashboardTypeLabel | translate: { dashboardType: dashboard.deviceTypeValue } }}\n </span>\n </button>\n <ng-template #dashboardTypePopoverRef>\n <div\n [innerHTML]=\"dashboardTypePopover | translate: { dashboardType: dashboard.deviceTypeValue }\"\n ></div>\n </ng-template>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n [priority]=\"-1\"\n *ngIf=\"defaultWidgets.length > 0\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reset widgets' | translate }}\"\n type=\"button\"\n px-event=\"Reset dashboard\"\n (click)=\"restore()\"\n [disabled]=\"disabled || widgetsDashboard?.editMode\"\n data-cy=\"context-dashboard--button-reset-dashboard\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"reset\"\n ></i>\n <span class=\"visible-xs-inline hidden-sm visible-md-inline visible-lg-inline\">\n {{ 'Reset widgets' | translate }}\n </span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/cockpit/working-with-dashboards/#working-with-dashboards\"\n *ngIf=\"showContextHelpButton\"\n></c8y-help>\n\n<c8y-dashboard-detail\n class=\"d-contents\"\n [isReport]=\"isReport\"\n [dashboard]=\"dashboard\"\n [mo]=\"mo\"\n [context]=\"context\"\n [deviceType]=\"context?.type\"\n [hideAvailability]=\"hideAvailability\"\n (dashboardSaved)=\"reloadDashboard($event)\"\n (previewChanged)=\"dashboardPreview($event)\"\n></c8y-dashboard-detail>\n\n<c8y-widgets-dashboard\n [context]=\"context\"\n [contextDashboard]=\"dashboard\"\n [widgets]=\"widgets\"\n [isCopyDisabled]=\"isCopyDisabled\"\n [settings]=\"{\n isLoading: isLoading,\n isDisabled: disabled,\n canDelete: canDelete && !!dashboard,\n translateWidgetTitle: dashboard?.translateWidgetTitle ?? translateWidgetTitle,\n allowFullscreen: moduleConfig.allowFullscreen,\n title: setTitle ? dashboard?.name || title : undefined,\n widgetMargin: dashboard?.widgetMargin,\n canCopy: canCopy && !!dashboard,\n defaultWidth: dashboard?.columns >= 24 ? 8 : 4,\n columns: dashboard?.columns || 12\n }\"\n [breadcrumb]=\"breadcrumbSettings\"\n [editModeButtons]=\"{\n undoButtonDisabled: editModeService.undoButtonDisabled,\n changeToUndoName: editModeService.changeToUndoName,\n redoButtonDisabled: !editModeService.redoStackLastItem,\n changeToRedoName: editModeService.redoStackLastItem?.name\n }\"\n (onChangeDashboard)=\"positionOrWidgetDimensionChange($event)\"\n (onAddWidget)=\"addWidget()\"\n (onEditWidget)=\"editWidget($event)\"\n (onDeleteWidget)=\"deleteWidget($event)\"\n (onSaveDashboard)=\"saveWidgetsToDashboard()\"\n (onCancelDashboard)=\"cancelEditMode()\"\n (revertChange)=\"revertChange($event)\"\n (onChangeStart)=\"addDashboardClassToBody()\"\n (onChangeEnd)=\"removeDashboardClassFromBody()\"\n (onEditDashboard)=\"dashboardDetails.show(true)\"\n (onCopyDashboard)=\"copyDashboard()\"\n (onDeleteDashboard)=\"deleteDashboard()\"\n></c8y-widgets-dashboard>\n", dependencies: [{ kind: "component", type: i3.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i3.WidgetsDashboardComponent, selector: "c8y-widgets-dashboard", inputs: ["widgets", "context", "contextDashboard", "settings", "isCopyDisabled", "breadcrumb", "editModeButtons"], outputs: ["onAddWidget", "onEditWidget", "onDeleteWidget", "onChangeDashboard", "onResize", "onEditDashboard", "onCopyDashboard", "onDeleteDashboard", "onChangeStart", "onChangeEnd", "onSaveDashboard", "onCancelDashboard", "revertChange"] }, { kind: "component", type: i3.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "directive", type: i4.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: DashboardDetailComponent, selector: "c8y-dashboard-detail", inputs: ["isReport", "deviceType", "context", "mo", "dashboard", "isNamedDashboard", "hideAvailability"], outputs: ["dashboardSaved", "previewChanged"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }] }); }
2967
3053
  }
3054
+ __decorate([
3055
+ memoize(),
3056
+ __metadata("design:type", Function),
3057
+ __metadata("design:paramtypes", [String]),
3058
+ __metadata("design:returntype", Promise)
3059
+ ], ContextDashboardComponent.prototype, "convertStringToHash", null);
2968
3060
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextDashboardComponent, decorators: [{
2969
3061
  type: Component,
2970
3062
  args: [{ selector: 'c8y-context-dashboard', host: {
@@ -3012,7 +3104,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
3012
3104
  }], beforeUnloadHandler: [{
3013
3105
  type: HostListener,
3014
3106
  args: ['window:beforeunload', ['$event']]
3015
- }] } });
3107
+ }], convertStringToHash: [] } });
3016
3108
 
3017
3109
  class CockpitDashboardComponent {
3018
3110
  constructor(appState, homeDashboardConfig) {