@c8y/ngx-components 1017.0.456 → 1017.0.463

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.
@@ -114,6 +114,34 @@ const DASHBOARD_THEME_CLASSES = [
114
114
  ];
115
115
  const STYLING_CLASS_PREFIXES = ['dashboard-theme-', 'panel-title-', 'panel-content-'];
116
116
  const ALL_GLOBAL_ROLES_SELECTED = 'all';
117
+ const PRODUCT_EXPERIENCE = {
118
+ DASHBOARD: {
119
+ EVENTS: {
120
+ DASHBOARDS: 'dashboards',
121
+ REPORTS: 'reports'
122
+ },
123
+ COMPONENTS: {
124
+ DASHBOARD_VIEW: 'context-dashboard',
125
+ DASHBOARD_AVAILABILITY: 'dashboard-availability',
126
+ REPORTS_LIST: 'report-dashboard-list',
127
+ ADD_REPORT: 'report-dashboard-list',
128
+ ADD_DASHBOARD: 'add-dashboard',
129
+ DELETE_DASHBOARD: 'context-dashboard'
130
+ },
131
+ CONTEXT: {
132
+ REPORT: 'report',
133
+ DEVICE: 'device',
134
+ ASSET: 'asset',
135
+ GROUP: 'group'
136
+ },
137
+ ACTIONS: {
138
+ APPLY_GLOBAL_ROLES_CHANGES: 'applyGlobalRolesChanges',
139
+ DELETE: 'delete',
140
+ LOAD: 'load',
141
+ CREATE: 'create'
142
+ }
143
+ }
144
+ };
117
145
 
118
146
  class ReportDashboardService {
119
147
  constructor(inventoryService, navigatorService) {
@@ -209,7 +237,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
209
237
  }], ctorParameters: function () { return [{ type: i2.NavigatorService }, { type: i1.InventoryService }, { type: ReportDashboardService }]; } });
210
238
 
211
239
  class ContextDashboardService {
212
- constructor(inventory, tabs, modal, translateService, router, navigator, permissions, alert, dynamicComponent) {
240
+ constructor(inventory, tabs, modal, translateService, router, navigator, permissions, alert, dynamicComponent, groupService) {
213
241
  this.inventory = inventory;
214
242
  this.tabs = tabs;
215
243
  this.modal = modal;
@@ -219,6 +247,7 @@ class ContextDashboardService {
219
247
  this.permissions = permissions;
220
248
  this.alert = alert;
221
249
  this.dynamicComponent = dynamicComponent;
250
+ this.groupService = groupService;
222
251
  this.REPORT_PARTIAL_NAME = 'report_';
223
252
  this.INVENTORY_ROLES = ['ROLE_INVENTORY_ADMIN'];
224
253
  this.cache = new Map();
@@ -433,6 +462,20 @@ class ContextDashboardService {
433
462
  }
434
463
  });
435
464
  }
465
+ getContextForGS(mo) {
466
+ if (this.groupService.isDevice(mo)) {
467
+ return PRODUCT_EXPERIENCE.DASHBOARD.CONTEXT.DEVICE;
468
+ }
469
+ else if (this.groupService.isAsset(mo)) {
470
+ return PRODUCT_EXPERIENCE.DASHBOARD.CONTEXT.ASSET;
471
+ }
472
+ else if (this.groupService.isGroup(mo)) {
473
+ return PRODUCT_EXPERIENCE.DASHBOARD.CONTEXT.GROUP;
474
+ }
475
+ else {
476
+ return null;
477
+ }
478
+ }
436
479
  serializeWidgetConfigs(dashboard) {
437
480
  return __awaiter(this, void 0, void 0, function* () {
438
481
  const children = cloneDeep(dashboard.c8y_Dashboard.children);
@@ -614,14 +657,14 @@ class ContextDashboardService {
614
657
  return null;
615
658
  }
616
659
  }
617
- ContextDashboardService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ContextDashboardService, deps: [{ token: i1.InventoryService }, { token: i2.TabsService }, { token: i2.ModalService }, { token: i3.TranslateService }, { token: i1$1.Router }, { token: i2.NavigatorService }, { token: i2.Permissions }, { token: i2.AlertService }, { token: i2.DynamicComponentService }], target: i0.ɵɵFactoryTarget.Injectable });
660
+ ContextDashboardService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ContextDashboardService, deps: [{ token: i1.InventoryService }, { token: i2.TabsService }, { token: i2.ModalService }, { token: i3.TranslateService }, { token: i1$1.Router }, { token: i2.NavigatorService }, { token: i2.Permissions }, { token: i2.AlertService }, { token: i2.DynamicComponentService }, { token: i2.GroupService }], target: i0.ɵɵFactoryTarget.Injectable });
618
661
  ContextDashboardService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ContextDashboardService, providedIn: 'root' });
619
662
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ContextDashboardService, decorators: [{
620
663
  type: Injectable,
621
664
  args: [{
622
665
  providedIn: 'root'
623
666
  }]
624
- }], ctorParameters: function () { return [{ type: i1.InventoryService }, { type: i2.TabsService }, { type: i2.ModalService }, { type: i3.TranslateService }, { type: i1$1.Router }, { type: i2.NavigatorService }, { type: i2.Permissions }, { type: i2.AlertService }, { type: i2.DynamicComponentService }]; } });
667
+ }], ctorParameters: function () { return [{ type: i1.InventoryService }, { type: i2.TabsService }, { type: i2.ModalService }, { type: i3.TranslateService }, { type: i1$1.Router }, { type: i2.NavigatorService }, { type: i2.Permissions }, { type: i2.AlertService }, { type: i2.DynamicComponentService }, { type: i2.GroupService }]; } });
625
668
 
626
669
  class AppearanceSettingsComponent {
627
670
  constructor() {
@@ -692,8 +735,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
692
735
  }] } });
693
736
 
694
737
  class DashboardAvailabilityComponent {
695
- constructor(userGroupService) {
738
+ constructor(userGroupService, gainsightService) {
696
739
  this.userGroupService = userGroupService;
740
+ this.gainsightService = gainsightService;
697
741
  this.globalRolesIdsChange = new EventEmitter();
698
742
  this.globalRolesItems = [];
699
743
  this.globalRolesItemsSelected = [];
@@ -722,14 +766,25 @@ class DashboardAvailabilityComponent {
722
766
  });
723
767
  }
724
768
  onSelected(items) {
769
+ var _a;
725
770
  const allItemsSelected = items.length === this.globalRolesItems.length;
726
771
  this.globalRolesItemsSelected = items;
727
772
  if (allItemsSelected) {
728
773
  this.globalRolesIdsChange.emit(ALL_GLOBAL_ROLES_SELECTED);
774
+ this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.DASHBOARDS, {
775
+ component: PRODUCT_EXPERIENCE.DASHBOARD.COMPONENTS.DASHBOARD_AVAILABILITY,
776
+ action: PRODUCT_EXPERIENCE.DASHBOARD.ACTIONS.APPLY_GLOBAL_ROLES_CHANGES,
777
+ globalRoles: ALL_GLOBAL_ROLES_SELECTED
778
+ });
729
779
  }
730
780
  else {
731
781
  const selectedGlobalRolesIds = items.map(i => i.id);
732
782
  this.globalRolesIdsChange.emit([...selectedGlobalRolesIds]);
783
+ this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.DASHBOARDS, {
784
+ component: PRODUCT_EXPERIENCE.DASHBOARD.COMPONENTS.DASHBOARD_AVAILABILITY,
785
+ action: PRODUCT_EXPERIENCE.DASHBOARD.ACTIONS.APPLY_GLOBAL_ROLES_CHANGES,
786
+ globalRoles: (_a = selectedGlobalRolesIds === null || selectedGlobalRolesIds === void 0 ? void 0 : selectedGlobalRolesIds.sort()) === null || _a === void 0 ? void 0 : _a.join()
787
+ });
733
788
  }
734
789
  }
735
790
  getGlobalRoles() {
@@ -752,12 +807,12 @@ class DashboardAvailabilityComponent {
752
807
  .filter(Boolean);
753
808
  }
754
809
  }
755
- DashboardAvailabilityComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DashboardAvailabilityComponent, deps: [{ token: i1.UserGroupService }], target: i0.ɵɵFactoryTarget.Component });
810
+ DashboardAvailabilityComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DashboardAvailabilityComponent, deps: [{ token: i1.UserGroupService }, { token: i2.GainsightService }], target: i0.ɵɵFactoryTarget.Component });
756
811
  DashboardAvailabilityComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DashboardAvailabilityComponent, selector: "c8y-dashboard-availability", inputs: { globalRolesIds: "globalRolesIds" }, outputs: { globalRolesIdsChange: "globalRolesIdsChange" }, ngImport: i0, template: "<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 [attr.aria-label]=\"'Help' | translate\"\n type=\"button\"\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 <i [c8yIcon]=\"'question-circle-o'\"></i>\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", dependencies: [{ kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: i2.SelectComponent, selector: "c8y-select", inputs: ["placeholder", "selectedLabel", "applyLabel", "items", "selected", "updateItems", "disableApplyOnNoSelection"], outputs: ["onChange"] }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { 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: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] });
757
812
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DashboardAvailabilityComponent, decorators: [{
758
813
  type: Component,
759
814
  args: [{ selector: 'c8y-dashboard-availability', template: "<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 [attr.aria-label]=\"'Help' | translate\"\n type=\"button\"\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 <i [c8yIcon]=\"'question-circle-o'\"></i>\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" }]
760
- }], ctorParameters: function () { return [{ type: i1.UserGroupService }]; }, propDecorators: { globalRolesIds: [{
815
+ }], ctorParameters: function () { return [{ type: i1.UserGroupService }, { type: i2.GainsightService }]; }, propDecorators: { globalRolesIds: [{
761
816
  type: Input
762
817
  }], globalRolesIdsChange: [{
763
818
  type: Output
@@ -888,11 +943,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
888
943
  }] } });
889
944
 
890
945
  class AddDashboardFactory {
891
- constructor(permissions, contextDashboardService, bsModal, contextRoute) {
946
+ constructor(permissions, contextDashboardService, bsModal, contextRoute, gainsightService) {
892
947
  this.permissions = permissions;
893
948
  this.contextDashboardService = contextDashboardService;
894
949
  this.bsModal = bsModal;
895
950
  this.contextRoute = contextRoute;
951
+ this.gainsightService = gainsightService;
896
952
  }
897
953
  get(activatedRoute) {
898
954
  var _a;
@@ -931,6 +987,16 @@ class AddDashboardFactory {
931
987
  const dashboardMO = yield this.contextDashboardService.create(dashboardCfg, this.currentContext);
932
988
  yield this.contextDashboardService.navigateToDashboard(dashboardMO);
933
989
  modal.close();
990
+ this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.DASHBOARDS, {
991
+ component: PRODUCT_EXPERIENCE.DASHBOARD.COMPONENTS.ADD_DASHBOARD,
992
+ action: PRODUCT_EXPERIENCE.DASHBOARD.ACTIONS.CREATE,
993
+ name: dashboardCfg.name,
994
+ id: dashboardMO.id,
995
+ dashboardType: dashboardMO.c8y_Dashboard.deviceType
996
+ ? dashboardMO.c8y_Dashboard.deviceTypeValue
997
+ : null,
998
+ context: this.contextDashboardService.getContextForGS(this.currentContext.contextData)
999
+ });
934
1000
  }
935
1001
  catch (ex) {
936
1002
  // intended empty
@@ -946,14 +1012,14 @@ class AddDashboardFactory {
946
1012
  });
947
1013
  }
948
1014
  }
949
- AddDashboardFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AddDashboardFactory, deps: [{ token: i2.Permissions }, { token: ContextDashboardService }, { token: i3$1.BsModalService }, { token: i2.ContextRouteService }], target: i0.ɵɵFactoryTarget.Injectable });
1015
+ AddDashboardFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AddDashboardFactory, deps: [{ token: i2.Permissions }, { token: ContextDashboardService }, { token: i3$1.BsModalService }, { token: i2.ContextRouteService }, { token: i2.GainsightService }], target: i0.ɵɵFactoryTarget.Injectable });
950
1016
  AddDashboardFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AddDashboardFactory, providedIn: 'root' });
951
1017
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AddDashboardFactory, decorators: [{
952
1018
  type: Injectable,
953
1019
  args: [{
954
1020
  providedIn: 'root'
955
1021
  }]
956
- }], ctorParameters: function () { return [{ type: i2.Permissions }, { type: ContextDashboardService }, { type: i3$1.BsModalService }, { type: i2.ContextRouteService }]; } });
1022
+ }], ctorParameters: function () { return [{ type: i2.Permissions }, { type: ContextDashboardService }, { type: i3$1.BsModalService }, { type: i2.ContextRouteService }, { type: i2.GainsightService }]; } });
957
1023
 
958
1024
  class AddDashboardComponent {
959
1025
  constructor(addDashboardFactory) {
@@ -1406,6 +1472,14 @@ class ContextDashboardComponent {
1406
1472
  const route = this.route.parent.snapshot.url.map(segment => segment.path).join('/');
1407
1473
  this.router.navigateByUrl(route);
1408
1474
  }
1475
+ this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.DASHBOARDS, {
1476
+ component: PRODUCT_EXPERIENCE.DASHBOARD.COMPONENTS.DELETE_DASHBOARD,
1477
+ action: PRODUCT_EXPERIENCE.DASHBOARD.ACTIONS.DELETE,
1478
+ name: this.dashboard.name,
1479
+ id: this.mo.id,
1480
+ dashboardType: this.dashboard.deviceType ? this.dashboard.deviceTypeValue : null,
1481
+ context: this.contextDashboardService.getContextForGS(this.context)
1482
+ });
1409
1483
  });
1410
1484
  }
1411
1485
  /**
@@ -1674,6 +1748,18 @@ class ContextDashboardComponent {
1674
1748
  this.addReportDashboardSettings();
1675
1749
  }
1676
1750
  this.isLoading = false;
1751
+ this.gainsightService.triggerEvent(isReport
1752
+ ? PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.REPORTS
1753
+ : PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.DASHBOARDS, {
1754
+ component: PRODUCT_EXPERIENCE.DASHBOARD.COMPONENTS.DASHBOARD_VIEW,
1755
+ action: PRODUCT_EXPERIENCE.DASHBOARD.ACTIONS.LOAD,
1756
+ name: this.dashboard.name,
1757
+ id: this.mo.id,
1758
+ dashboardType: this.dashboard.deviceType ? this.dashboard.deviceTypeValue : null,
1759
+ context: isReport
1760
+ ? PRODUCT_EXPERIENCE.DASHBOARD.CONTEXT.REPORT
1761
+ : this.contextDashboardService.getContextForGS(this.context)
1762
+ });
1677
1763
  });
1678
1764
  }
1679
1765
  mergeWidgetClasses(widget) {
@@ -2866,7 +2952,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2866
2952
  }] });
2867
2953
 
2868
2954
  class ReportDashboardListComponent {
2869
- constructor(inventoryService, contextDashboardService, bsModal, translateService, modal, alertService, reportDashboardService, permissions) {
2955
+ constructor(inventoryService, contextDashboardService, bsModal, translateService, modal, alertService, reportDashboardService, permissions, gainsightService) {
2870
2956
  this.inventoryService = inventoryService;
2871
2957
  this.contextDashboardService = contextDashboardService;
2872
2958
  this.bsModal = bsModal;
@@ -2875,6 +2961,7 @@ class ReportDashboardListComponent {
2875
2961
  this.alertService = alertService;
2876
2962
  this.reportDashboardService = reportDashboardService;
2877
2963
  this.permissions = permissions;
2964
+ this.gainsightService = gainsightService;
2878
2965
  this.textFilter$ = new BehaviorSubject('');
2879
2966
  this.reload$ = new BehaviorSubject(null);
2880
2967
  this.reloading = false;
@@ -2928,6 +3015,13 @@ class ReportDashboardListComponent {
2928
3015
  }
2929
3016
  this.reload$.next();
2930
3017
  modal.close();
3018
+ this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.REPORTS, {
3019
+ component: PRODUCT_EXPERIENCE.DASHBOARD.COMPONENTS.ADD_REPORT,
3020
+ action: PRODUCT_EXPERIENCE.DASHBOARD.ACTIONS.CREATE,
3021
+ name: report.name,
3022
+ id: report.id,
3023
+ context: PRODUCT_EXPERIENCE.DASHBOARD.CONTEXT.REPORT
3024
+ });
2931
3025
  }
2932
3026
  catch (ex) {
2933
3027
  if (ex) {
@@ -2960,6 +3054,13 @@ class ReportDashboardListComponent {
2960
3054
  this.reportDashboardService.removeNavigatorNode(report);
2961
3055
  }
2962
3056
  this.reload$.next();
3057
+ this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.REPORTS, {
3058
+ component: PRODUCT_EXPERIENCE.DASHBOARD.COMPONENTS.REPORTS_LIST,
3059
+ action: PRODUCT_EXPERIENCE.DASHBOARD.ACTIONS.DELETE,
3060
+ name: report.name,
3061
+ id: report.id,
3062
+ context: PRODUCT_EXPERIENCE.DASHBOARD.CONTEXT.REPORT
3063
+ });
2963
3064
  }
2964
3065
  catch (ex) {
2965
3066
  if (ex) {
@@ -2978,12 +3079,12 @@ class ReportDashboardListComponent {
2978
3079
  });
2979
3080
  }
2980
3081
  }
2981
- ReportDashboardListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ReportDashboardListComponent, deps: [{ token: i1.InventoryService }, { token: ContextDashboardService }, { token: i3$1.BsModalService }, { token: i3.TranslateService }, { token: i2.ModalService }, { token: i2.AlertService }, { token: ReportDashboardService }, { token: i2.Permissions }], target: i0.ɵɵFactoryTarget.Component });
3082
+ ReportDashboardListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ReportDashboardListComponent, deps: [{ token: i1.InventoryService }, { token: ContextDashboardService }, { token: i3$1.BsModalService }, { token: i3.TranslateService }, { token: i2.ModalService }, { token: i2.AlertService }, { token: ReportDashboardService }, { token: i2.Permissions }, { token: i2.GainsightService }], target: i0.ɵɵFactoryTarget.Component });
2982
3083
  ReportDashboardListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ReportDashboardListComponent, selector: "c8y-report-dashboard-list", viewQueries: [{ propertyName: "filter", first: true, predicate: FilterInputComponent, descendants: true }], ngImport: i0, template: "<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\u2026' | 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 title=\"{{ 'Add report' | translate }}\"\n [attr.data-cy]=\"'reports-add-report-action-bar-button'\"\n type=\"button\"\n (click)=\"add()\"\n [disabled]=\"!canAddReport\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add report' | translate }}\n </button>\n <button\n *ngIf=\"!canAddReport\"\n class=\"btn btn-dot m-r-16\"\n popover=\"{{ 'You don\\'t have permission to add reports' | translate }}\"\n triggers=\"focus\"\n placement=\"top\"\n container=\"body\"\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 class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\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 title=\"{{ report.name }}\"\n type=\"button\"\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 (click)=\"delete(report)\"\n tooltip=\"{{ 'Remove report' | translate }}\"\n [delay]=\"500\"\n [attr.aria-label]=\"'Remove report' | translate\"\n type=\"button\"\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 (click)=\"delete(report)\"\n title=\"{{ 'Remove report' | translate }}\"\n type=\"button\"\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 title=\"{{ 'Add report' | translate }}\"\n type=\"button\"\n class=\"btn btn-primary\"\n [attr.data-cy]=\"'reports-add-report-empty-state-button'\"\n [disabled]=\"!canAddReport\"\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", dependencies: [{ kind: "component", type: i2.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount"] }, { kind: "component", type: i2.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i2.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "component", type: i2.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i2.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i2.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i2.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i2.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "directive", type: i3$2.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: i1$1.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { 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: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] });
2983
3084
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ReportDashboardListComponent, decorators: [{
2984
3085
  type: Component,
2985
3086
  args: [{ selector: 'c8y-report-dashboard-list', template: "<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\u2026' | 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 title=\"{{ 'Add report' | translate }}\"\n [attr.data-cy]=\"'reports-add-report-action-bar-button'\"\n type=\"button\"\n (click)=\"add()\"\n [disabled]=\"!canAddReport\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add report' | translate }}\n </button>\n <button\n *ngIf=\"!canAddReport\"\n class=\"btn btn-dot m-r-16\"\n popover=\"{{ 'You don\\'t have permission to add reports' | translate }}\"\n triggers=\"focus\"\n placement=\"top\"\n container=\"body\"\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 class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\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 title=\"{{ report.name }}\"\n type=\"button\"\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 (click)=\"delete(report)\"\n tooltip=\"{{ 'Remove report' | translate }}\"\n [delay]=\"500\"\n [attr.aria-label]=\"'Remove report' | translate\"\n type=\"button\"\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 (click)=\"delete(report)\"\n title=\"{{ 'Remove report' | translate }}\"\n type=\"button\"\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 title=\"{{ 'Add report' | translate }}\"\n type=\"button\"\n class=\"btn btn-primary\"\n [attr.data-cy]=\"'reports-add-report-empty-state-button'\"\n [disabled]=\"!canAddReport\"\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" }]
2986
- }], ctorParameters: function () { return [{ type: i1.InventoryService }, { type: ContextDashboardService }, { type: i3$1.BsModalService }, { type: i3.TranslateService }, { type: i2.ModalService }, { type: i2.AlertService }, { type: ReportDashboardService }, { type: i2.Permissions }]; }, propDecorators: { filter: [{
3087
+ }], ctorParameters: function () { return [{ type: i1.InventoryService }, { type: ContextDashboardService }, { type: i3$1.BsModalService }, { type: i3.TranslateService }, { type: i2.ModalService }, { type: i2.AlertService }, { type: ReportDashboardService }, { type: i2.Permissions }, { type: i2.GainsightService }]; }, propDecorators: { filter: [{
2987
3088
  type: ViewChild,
2988
3089
  args: [FilterInputComponent, { static: false }]
2989
3090
  }] } });
@@ -3073,5 +3174,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
3073
3174
  * Generated bundle index. Do not edit.
3074
3175
  */
3075
3176
 
3076
- export { ALL_GLOBAL_ROLES_SELECTED, AddDashboardComponent, AddDashboardFactory, AppearanceSettingsComponent, COCKPIT_HOME_DASHBOARD_CONFIG, CONTEXT_DASHBOARD_CONFIG, CockpitDashboardComponent, CockpitDashboardModule, ContextDashboardComponent, ContextDashboardModule, ContextDashboardService, ContextDashboardType, DASHBOARD_THEME_CLASSES, DEFAULT_COCKPIT_HOME_WIDGETS, DashboardActionBarFactory, DashboardDetailComponent, DeviceDashboardGuard, DeviceInfoDashboardComponent, DeviceInfoDashboardModule, DeviceManagementHomeDashboardComponent, DeviceManagementHomeDashboardModule, GroupDashboardGuard, LegacyWelcomeComponent, PasteDashboardActionComponent, REPORT_DEFAULT_NAVIGATION_NODE_PRIORITY, ReportDashboardGuard, ReportDashboardListComponent, ReportDashboardModule, ReportDashboardNavigationFactory, ReportDashboardService, STYLING_CLASS_PREFIXES, WIDGET_CONTENT_CLASSES, WIDGET_HEADER_CLASSES, WelcomeToCockpit, WidgetConfigComponent, WidgetPreviewComponent, WidgetService };
3177
+ export { ALL_GLOBAL_ROLES_SELECTED, AddDashboardComponent, AddDashboardFactory, AppearanceSettingsComponent, COCKPIT_HOME_DASHBOARD_CONFIG, CONTEXT_DASHBOARD_CONFIG, CockpitDashboardComponent, CockpitDashboardModule, ContextDashboardComponent, ContextDashboardModule, ContextDashboardService, ContextDashboardType, DASHBOARD_THEME_CLASSES, DEFAULT_COCKPIT_HOME_WIDGETS, DashboardActionBarFactory, DashboardDetailComponent, DeviceDashboardGuard, DeviceInfoDashboardComponent, DeviceInfoDashboardModule, DeviceManagementHomeDashboardComponent, DeviceManagementHomeDashboardModule, GroupDashboardGuard, LegacyWelcomeComponent, PRODUCT_EXPERIENCE, PasteDashboardActionComponent, REPORT_DEFAULT_NAVIGATION_NODE_PRIORITY, ReportDashboardGuard, ReportDashboardListComponent, ReportDashboardModule, ReportDashboardNavigationFactory, ReportDashboardService, STYLING_CLASS_PREFIXES, WIDGET_CONTENT_CLASSES, WIDGET_HEADER_CLASSES, WelcomeToCockpit, WidgetConfigComponent, WidgetPreviewComponent, WidgetService };
3077
3178
  //# sourceMappingURL=c8y-ngx-components-context-dashboard.mjs.map