@c8y/ngx-components 1018.0.137 → 1018.0.140

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 (24) hide show
  1. package/NOTICES +59 -0
  2. package/context-dashboard/context-dashboard.component.d.ts +1 -1
  3. package/core/dashboard/dashboard.model.d.ts +4 -0
  4. package/core/dashboard/widgets-dashboard.component.d.ts +6 -1
  5. package/esm2020/context-dashboard/context-dashboard.component.mjs +19 -28
  6. package/esm2020/context-dashboard/context-dashboard.service.mjs +11 -6
  7. package/esm2020/core/dashboard/dashboard.model.mjs +1 -1
  8. package/esm2020/core/dashboard/widgets-dashboard.component.mjs +35 -24
  9. package/esm2020/core/data-grid/data-grid.component.mjs +3 -3
  10. package/esm2020/widgets/implementations/cockpit-welcome/welcome.component.mjs +3 -3
  11. package/fesm2015/c8y-ngx-components-context-dashboard.mjs +28 -32
  12. package/fesm2015/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  13. package/fesm2015/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs +2 -2
  14. package/fesm2015/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs.map +1 -1
  15. package/fesm2015/c8y-ngx-components.mjs +15 -8
  16. package/fesm2015/c8y-ngx-components.mjs.map +1 -1
  17. package/fesm2020/c8y-ngx-components-context-dashboard.mjs +28 -32
  18. package/fesm2020/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  19. package/fesm2020/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs +2 -2
  20. package/fesm2020/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs.map +1 -1
  21. package/fesm2020/c8y-ngx-components.mjs +14 -7
  22. package/fesm2020/c8y-ngx-components.mjs.map +1 -1
  23. package/locales/locales.pot +3 -0
  24. package/package.json +1 -1
@@ -426,11 +426,16 @@ class ContextDashboardService {
426
426
  pasteDashboard(newContext) {
427
427
  return __awaiter(this, void 0, void 0, function* () {
428
428
  if (this.copyClipboard) {
429
- if (this.canPasteDashboard(this.copyClipboard, newContext.context)) {
430
- const dashboardToPaste = this.createContextDashboardCopy(this.copyClipboard.dashboard, newContext.contextData, this.copyClipboard.context.contextData);
431
- const dashboard = yield this.create(this.clean(dashboardToPaste), newContext);
432
- this.copyClipboard = undefined;
433
- this.navigateToDashboard(dashboard);
429
+ try {
430
+ if (this.canPasteDashboard(this.copyClipboard, newContext.context)) {
431
+ const dashboardToPaste = this.createContextDashboardCopy(this.copyClipboard.dashboard, newContext.contextData, this.copyClipboard.context.contextData);
432
+ const dashboard = yield this.create(this.clean(dashboardToPaste), newContext);
433
+ this.copyClipboard = undefined;
434
+ this.navigateToDashboard(dashboard);
435
+ }
436
+ }
437
+ catch (_a) {
438
+ this.alert.warning(gettext('Insufficient permissions for this action.'));
434
439
  }
435
440
  }
436
441
  });
@@ -1403,21 +1408,19 @@ class ContextDashboardComponent {
1403
1408
  var _a;
1404
1409
  return __awaiter(this, void 0, void 0, function* () {
1405
1410
  const viewContext = (_a = this.route.parent.snapshot.data) === null || _a === void 0 ? void 0 : _a.context;
1406
- if (this.canCopyDashboard(viewContext)) {
1407
- this.contextDashboardService.copyClipboard = {
1408
- dashboard: cloneDeep(this.mo.c8y_Dashboard),
1409
- context: cloneDeep({
1410
- context: viewContext,
1411
- contextData: this.context
1412
- })
1413
- };
1414
- if (viewContext) {
1415
- const ctx = viewContext.split('/').shift();
1416
- const msg = this.translateService.instant('Dashboard copied. Navigate to the desired {{ ctx }} and select "Paste dashboard"', { ctx });
1417
- this.alert.success(msg);
1418
- }
1419
- this.actionBarService.refresh();
1411
+ this.contextDashboardService.copyClipboard = {
1412
+ dashboard: cloneDeep(this.mo.c8y_Dashboard),
1413
+ context: cloneDeep({
1414
+ context: viewContext,
1415
+ contextData: this.context
1416
+ })
1417
+ };
1418
+ if (viewContext) {
1419
+ const ctx = viewContext.split('/').shift();
1420
+ const msg = this.translateService.instant('Dashboard copied. Navigate to the desired {{ ctx }} and select "Paste dashboard"', { ctx });
1421
+ this.alert.success(msg);
1420
1422
  }
1423
+ this.actionBarService.refresh();
1421
1424
  });
1422
1425
  }
1423
1426
  /**
@@ -1680,6 +1683,7 @@ class ContextDashboardComponent {
1680
1683
  const isDeviceType = this.contextDashboardService.isDeviceType(this.mo);
1681
1684
  const isReport = this.contextDashboardService.isReport(this.mo);
1682
1685
  const dashboardClasses = Object.assign({ 'c8y-grid-dashboard': true, dashboard: true }, this.dashboard.classes);
1686
+ this.isCopyDisabled = !this.canCopyDashboard();
1683
1687
  this.widgets = yield Promise.all(values(dashboardChildren).map(widget => {
1684
1688
  widget.classes = this.mergeWidgetClasses(widget);
1685
1689
  if (isDeviceType) {
@@ -1723,26 +1727,18 @@ class ContextDashboardComponent {
1723
1727
  };
1724
1728
  this.canDelete = false;
1725
1729
  }
1726
- canCopyDashboard(viewContext) {
1727
- if (!this.validDashboardChildren() && viewContext) {
1728
- const ctx = viewContext.split('/').shift();
1729
- const msg = this.translateService.instant('Only dashboards with widgets referencing the current {{ ctx }} can be copied.', { ctx });
1730
- this.alert.warning(msg);
1731
- return false;
1732
- }
1733
- return true;
1734
- }
1735
- validDashboardChildren() {
1736
- return every(this.mo.c8y_Dashboard.children, child => {
1730
+ canCopyDashboard() {
1731
+ const allDashboardChildrenAreValid = every(this.mo.c8y_Dashboard.children, child => {
1737
1732
  const config = child.config || {};
1738
1733
  const dataPoints = config.datapoints || [];
1739
1734
  return !((config.device && config.device.id !== this.context.id) ||
1740
1735
  some(dataPoints, dataPoint => dataPoint.__target.id !== this.context.id));
1741
1736
  });
1737
+ return allDashboardChildrenAreValid;
1742
1738
  }
1743
1739
  }
1744
1740
  ContextDashboardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ContextDashboardComponent, deps: [{ token: i1$1.ActivatedRoute }, { token: i1$1.Router }, { token: ContextDashboardService }, { token: i5.AlertService }, { token: i0.Renderer2 }, { token: CONTEXT_DASHBOARD_CONFIG }, { token: WidgetService }, { token: i3$1.BsModalService }, { token: i1.InventoryService }, { token: i5.GainsightService }, { token: i5.ActionBarService }, { token: i3.TranslateService }, { token: i5.ModalService }], target: i0.ɵɵFactoryTarget.Component });
1745
- ContextDashboardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ContextDashboardComponent, selector: "c8y-context-dashboard", inputs: { name: "name", childrenClasses: "childrenClasses", context: "context", setTitle: "setTitle", disabled: "disabled", defaultWidgets: "defaultWidgets", canCopy: "canCopy", canDelete: "canDelete", isLoading: "isLoading", breadcrumbSettings: "breadcrumbSettings", showContextHelpButton: "showContextHelpButton" }, host: { properties: { "class": "this.class" }, styleAttribute: "\n display: block;\n ", classAttribute: "dashboard c8y-grid-dashboard" }, ngImport: i0, template: "<c8y-title *ngIf=\"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 <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 columns: dashboard?.columns || 12\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", dependencies: [{ kind: "component", type: i5.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "directive", type: i5.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i5.WidgetsDashboardComponent, selector: "c8y-widgets-dashboard", inputs: ["widgets", "context", "contextDashboard", "settings", "breadcrumb"], outputs: ["onAddWidget", "onEditWidget", "onDeleteWidget", "onChangeDashboard", "onEditDashboard", "onCopyDashboard", "onDeleteDashboard", "onFreeze", "onChangeStart", "onChangeEnd"] }, { kind: "component", type: i5.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "pipe", type: i5.C8yTranslatePipe, name: "translate" }] });
1741
+ ContextDashboardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ContextDashboardComponent, selector: "c8y-context-dashboard", inputs: { name: "name", childrenClasses: "childrenClasses", context: "context", setTitle: "setTitle", disabled: "disabled", defaultWidgets: "defaultWidgets", canCopy: "canCopy", canDelete: "canDelete", isLoading: "isLoading", breadcrumbSettings: "breadcrumbSettings", showContextHelpButton: "showContextHelpButton" }, host: { properties: { "class": "this.class" }, styleAttribute: "\n display: block;\n ", classAttribute: "dashboard c8y-grid-dashboard" }, ngImport: i0, template: "<c8y-title *ngIf=\"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 <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 isCopyDisabled: isCopyDisabled,\n columns: dashboard?.columns || 12\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", dependencies: [{ kind: "component", type: i5.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "directive", type: i5.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i5.WidgetsDashboardComponent, selector: "c8y-widgets-dashboard", inputs: ["widgets", "context", "contextDashboard", "settings", "breadcrumb"], outputs: ["onAddWidget", "onEditWidget", "onDeleteWidget", "onChangeDashboard", "onEditDashboard", "onCopyDashboard", "onDeleteDashboard", "onFreeze", "onChangeStart", "onChangeEnd"] }, { kind: "component", type: i5.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "pipe", type: i5.C8yTranslatePipe, name: "translate" }] });
1746
1742
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ContextDashboardComponent, decorators: [{
1747
1743
  type: Component,
1748
1744
  args: [{ selector: 'c8y-context-dashboard', host: {
@@ -1750,7 +1746,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
1750
1746
  display: block;
1751
1747
  `,
1752
1748
  class: 'dashboard c8y-grid-dashboard'
1753
- }, template: "<c8y-title *ngIf=\"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 <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 columns: dashboard?.columns || 12\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" }]
1749
+ }, template: "<c8y-title *ngIf=\"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 <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 isCopyDisabled: isCopyDisabled,\n columns: dashboard?.columns || 12\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" }]
1754
1750
  }], ctorParameters: function () {
1755
1751
  return [{ type: i1$1.ActivatedRoute }, { type: i1$1.Router }, { type: ContextDashboardService }, { type: i5.AlertService }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
1756
1752
  type: Inject,