@c8y/ngx-components 1018.0.215 → 1018.0.222

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 (40) hide show
  1. package/assets-navigator/asset-node.service.d.ts +5 -2
  2. package/ecosystem/application-plugins/plugin-list.component.d.ts +1 -0
  3. package/esm2020/assets-navigator/asset-node.mjs +7 -2
  4. package/esm2020/assets-navigator/asset-node.service.mjs +14 -5
  5. package/esm2020/core/header/title/title-outlet.component.mjs +3 -3
  6. package/esm2020/device-grid/columns/registration-date.device-grid-column.mjs +4 -10
  7. package/esm2020/ecosystem/application-plugins/application-plugins.component.mjs +34 -13
  8. package/esm2020/ecosystem/application-plugins/plugin-list.component.mjs +27 -13
  9. package/esm2020/ecosystem/packages/deploy-application/deploy-application.component.mjs +14 -3
  10. package/esm2020/repository/shared/repository.service.mjs +4 -4
  11. package/esm2020/services/services-device-tab/columns/last-updated-date.device-grid-column.mjs +4 -10
  12. package/fesm2015/c8y-ngx-components-assets-navigator.mjs +24 -12
  13. package/fesm2015/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  14. package/fesm2015/c8y-ngx-components-device-grid.mjs +3 -9
  15. package/fesm2015/c8y-ngx-components-device-grid.mjs.map +1 -1
  16. package/fesm2015/c8y-ngx-components-ecosystem-application-plugins.mjs +44 -25
  17. package/fesm2015/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  18. package/fesm2015/c8y-ngx-components-ecosystem.mjs +55 -32
  19. package/fesm2015/c8y-ngx-components-ecosystem.mjs.map +1 -1
  20. package/fesm2015/c8y-ngx-components-repository-shared.mjs +3 -3
  21. package/fesm2015/c8y-ngx-components-repository-shared.mjs.map +1 -1
  22. package/fesm2015/c8y-ngx-components-services.mjs +3 -9
  23. package/fesm2015/c8y-ngx-components-services.mjs.map +1 -1
  24. package/fesm2015/c8y-ngx-components.mjs +2 -2
  25. package/fesm2015/c8y-ngx-components.mjs.map +1 -1
  26. package/fesm2020/c8y-ngx-components-assets-navigator.mjs +24 -12
  27. package/fesm2020/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  28. package/fesm2020/c8y-ngx-components-device-grid.mjs +3 -9
  29. package/fesm2020/c8y-ngx-components-device-grid.mjs.map +1 -1
  30. package/fesm2020/c8y-ngx-components-ecosystem-application-plugins.mjs +58 -25
  31. package/fesm2020/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  32. package/fesm2020/c8y-ngx-components-ecosystem.mjs +70 -27
  33. package/fesm2020/c8y-ngx-components-ecosystem.mjs.map +1 -1
  34. package/fesm2020/c8y-ngx-components-repository-shared.mjs +3 -3
  35. package/fesm2020/c8y-ngx-components-repository-shared.mjs.map +1 -1
  36. package/fesm2020/c8y-ngx-components-services.mjs +3 -9
  37. package/fesm2020/c8y-ngx-components-services.mjs.map +1 -1
  38. package/fesm2020/c8y-ngx-components.mjs +2 -2
  39. package/fesm2020/c8y-ngx-components.mjs.map +1 -1
  40. package/package.json +1 -1
@@ -12,7 +12,7 @@ import { map, shareReplay } from 'rxjs/operators';
12
12
  import * as i4 from '@angular/common';
13
13
  import * as i4$1 from '@angular/forms';
14
14
  import { ApplicationType } from '@c8y/client';
15
- import { uniq } from 'lodash-es';
15
+ import { pick, uniq } from 'lodash-es';
16
16
 
17
17
  class AppStatePipe {
18
18
  constructor(ecosystemService) {
@@ -134,11 +134,6 @@ class PluginListComponent {
134
134
  await this.updateAppRemotes(plugin, 'install');
135
135
  }
136
136
  async uninstallPlugin(plugin) {
137
- this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.PACKAGE_PLUGINS, {
138
- component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.PLUGIN_LIST,
139
- action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.INSTALL_PLUGIN,
140
- url: this.CURRENT_LOCATION
141
- });
142
137
  await this.updateAppRemotes(plugin, 'uninstall');
143
138
  }
144
139
  async updateAppRemotes(plugin, updateType) {
@@ -185,22 +180,40 @@ class PluginListComponent {
185
180
  })
186
181
  : this.translateService.instant(gettext('Plugin uninstalled from app "{{ appName }}".'), { appName: app.name });
187
182
  this.alertService.success(successText);
188
- this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.PACKAGE_PLUGINS, {
189
- component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.PLUGIN_LIST,
190
- result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.PLUGIN_INSTALLED,
191
- url: this.CURRENT_LOCATION
192
- });
183
+ this.onUpdateEventHandleGS(plugin, app, updateType);
193
184
  }
194
- catch {
185
+ catch (error) {
195
186
  this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.PACKAGE_PLUGINS, {
196
187
  component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.PLUGIN_LIST,
197
188
  result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.SERVER_FAILURE,
198
- url: this.CURRENT_LOCATION
189
+ url: this.CURRENT_LOCATION,
190
+ error
199
191
  });
200
192
  }
201
193
  }
202
194
  this.updatingPluginId[updateType] = '';
203
195
  }
196
+ onUpdateEventHandleGS(plugin, app, updateType) {
197
+ const pluginCustomEventInfo = pick(plugin, [
198
+ 'name',
199
+ 'contextPath',
200
+ 'module',
201
+ 'version',
202
+ 'type',
203
+ 'id'
204
+ ]);
205
+ const gsEventResult = updateType === 'install'
206
+ ? PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.PLUGIN_INSTALLED
207
+ : PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.PLUGIN_REMOVED;
208
+ this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.PACKAGE_PLUGINS, {
209
+ component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.PLUGIN_LIST,
210
+ result: gsEventResult,
211
+ url: this.CURRENT_LOCATION,
212
+ ...pluginCustomEventInfo,
213
+ targetApplicationName: app.name,
214
+ targetApplicationContextPath: app.contextPath
215
+ });
216
+ }
204
217
  async getAppsForUpdate(plugin, updateType) {
205
218
  let apps = (await this.ecosystemService.getWebApplications()).filter(app => this.ecosystemService.isOwner(app) && app.type !== ApplicationType.EXTERNAL);
206
219
  if (updateType === 'install') {
@@ -613,10 +626,23 @@ class ApplicationPluginsComponent {
613
626
  this.isLoading = true;
614
627
  await this.handleRemotesInstallation(pluginsToAdd);
615
628
  this.alertService.success(gettext('Plugins installed.'));
616
- this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.INSTALLED_PLUGINS, {
617
- component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_PLUGINS,
618
- result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.PLUGIN_INSTALLED,
619
- url: this.CURRENT_LOCATION
629
+ pluginsToAdd.forEach(plugin => {
630
+ const pluginCustomEventInfo = pick(plugin, [
631
+ 'name',
632
+ 'contextPath',
633
+ 'module',
634
+ 'version',
635
+ 'type',
636
+ 'id'
637
+ ]);
638
+ this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.INSTALLED_PLUGINS, {
639
+ component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_PLUGINS,
640
+ result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.PLUGIN_INSTALLED,
641
+ url: this.CURRENT_LOCATION,
642
+ ...pluginCustomEventInfo,
643
+ targetApplicationName: this.app.name,
644
+ targetApplicationContextPath: this.app.contextPath
645
+ });
620
646
  });
621
647
  }
622
648
  catch (ex) {
@@ -625,7 +651,8 @@ class ApplicationPluginsComponent {
625
651
  this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.INSTALLED_PLUGINS, {
626
652
  component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_PLUGINS,
627
653
  result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.SERVER_FAILURE,
628
- url: this.CURRENT_LOCATION
654
+ url: this.CURRENT_LOCATION,
655
+ error: ex
629
656
  });
630
657
  }
631
658
  }
@@ -641,10 +668,15 @@ class ApplicationPluginsComponent {
641
668
  this.isLoading = false;
642
669
  this.dataGrid.cancel();
643
670
  this.alertService.success(gettext('Plugins removed.'));
644
- this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.INSTALLED_PLUGINS, {
645
- component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_PLUGINS,
646
- result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.PLUGIN_REMOVED,
647
- url: this.CURRENT_LOCATION
671
+ plugins.forEach(plugin => {
672
+ this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.INSTALLED_PLUGINS, {
673
+ component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_PLUGINS,
674
+ result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.PLUGIN_REMOVED,
675
+ url: this.CURRENT_LOCATION,
676
+ id: plugin,
677
+ targetApplicationName: this.app.name,
678
+ targetApplicationContextPath: this.app.contextPath
679
+ });
648
680
  });
649
681
  }
650
682
  catch (ex) {
@@ -653,7 +685,8 @@ class ApplicationPluginsComponent {
653
685
  this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.INSTALLED_PLUGINS, {
654
686
  component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_PLUGINS,
655
687
  result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.SERVER_FAILURE,
656
- url: this.CURRENT_LOCATION
688
+ url: this.CURRENT_LOCATION,
689
+ error: ex
657
690
  });
658
691
  }
659
692
  }
@@ -887,10 +920,10 @@ class ApplicationPluginsComponent {
887
920
  }
888
921
  }
889
922
  ApplicationPluginsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ApplicationPluginsComponent, deps: [{ token: i1$2.ActivatedRoute }, { token: i1.EcosystemService }, { token: i1$1.BsModalService }, { token: i3.ModalService }, { token: i2.TranslateService }, { token: i3.PluginsService }, { token: i3.AlertService }, { token: i3.GainsightService }], target: i0.ɵɵFactoryTarget.Component });
890
- ApplicationPluginsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ApplicationPluginsComponent, selector: "c8y-app-plugins", inputs: { appId: "appId" }, viewQueries: [{ propertyName: "dataGrid", first: true, predicate: DataGridComponent, descendants: true }], ngImport: i0, template: "<c8y-title>{{ app | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'Applications' | translate\"\n [path]=\"'ecosystem/applications/application'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"app | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Plugins' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n (click)=\"installPlugins()\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n class=\"btn btn-link\"\n title=\"{{ 'Install plugins' | translate }}\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Install plugins' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<ng-container *ngIf=\"orphanedPlugins$ | async as orphanedPlugins\">\n <c8y-action-bar-item *ngIf=\"orphanedPlugins?.length\" [placement]=\"'right'\">\n <button\n (click)=\"cleanupOrphanedPlugins(orphanedPlugins)\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n class=\"btn btn-link\"\n title=\"{{ 'Clean up orphaned plugins' | translate }}\"\n >\n <i c8yIcon=\"erase\"></i>\n {{ 'Clean up orphaned plugins' | translate }}\n </button>\n </c8y-action-bar-item>\n</ng-container>\n\n<div class=\"content-fullpage d-flex d-col border-top\">\n <c8y-data-grid\n [title]=\"title\"\n [loadMoreItemsLabel]=\"loadMoreItemsLabel\"\n [loadingItemsLabel]=\"loadingItemsLabel\"\n [displayOptions]=\"displayOptions\"\n [columns]=\"columns\"\n [rows]=\"installedPlugins$ | async\"\n [pagination]=\"pagination\"\n [selectable]=\"true\"\n [actionControls]=\"actionControls\"\n [bulkActionControls]=\"bulkActionControls\"\n [headerActionControls]=\"headerActionControls\"\n (onReload)=\"refresh()\"\n class=\"d-contents\"\n >\n <!-- No search/filtered results empty state -->\n <c8y-ui-empty-state\n *ngIf=\"(installedPlugins$ | async)?.length\"\n [icon]=\"'search'\"\n [title]=\"'No plugins to display.' | translate\"\n [subtitle]=\"'Refine your search terms or check your spelling.' | translate\"\n [horizontal]=\"true\"\n >\n </c8y-ui-empty-state>\n <!-- No installed plugins empty state -->\n <c8y-ui-empty-state\n *ngIf=\"!(installedPlugins$ | async)?.length && !isLoading\"\n [icon]=\"'plugin'\"\n [title]=\"'No plugins installed.' | translate\"\n [subtitle]=\"'This application doesn\\'t have any plugin. Click below to install.' | translate\"\n [horizontal]=\"true\"\n >\n <div class=\"fit-w p-t-16\">\n <button\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.INSTALLED_PLUGINS\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_PLUGINS,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.INSTALL_PLUGINS,\n url: CURRENT_LOCATION\n }\"\n (click)=\"installPlugins()\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n class=\"btn btn-primary btn-sm\"\n title=\"{{ 'Install plugins' | translate }}\"\n translate\n >\n Install plugins\n </button>\n </div>\n </c8y-ui-empty-state>\n </c8y-data-grid>\n</div>\n", dependencies: [{ kind: "component", type: i3.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "component", type: i3.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i3.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i3.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.DataGridComponent, selector: "c8y-data-grid", inputs: ["title", "loadMoreItemsLabel", "loadingItemsLabel", "showSearch", "refresh", "columns", "rows", "pagination", "infiniteScroll", "serverSideDataCallback", "selectable", "selectionPrimaryKey", "displayOptions", "actionControls", "bulkActionControls", "headerActionControls", "searchText", "configureColumnsEnabled", "showCounterWarning"], outputs: ["rowMouseOver", "rowMouseLeave", "rowClick", "onConfigChange", "onBeforeFilter", "onBeforeSearch", "onFilter", "itemsSelect", "onReload", "onAddCustomColumn", "onRemoveCustomColumn", "onColumnFilterReset", "onSort", "onPageSizeChange", "onColumnReordered", "onColumnVisibilityChange"] }, { kind: "component", type: i3.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i3.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.HumanizeAppNamePipe, name: "humanizeAppName" }] });
923
+ ApplicationPluginsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ApplicationPluginsComponent, selector: "c8y-app-plugins", inputs: { appId: "appId" }, viewQueries: [{ propertyName: "dataGrid", first: true, predicate: DataGridComponent, descendants: true }], ngImport: i0, template: "<c8y-title>{{ app | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'Applications' | translate\"\n [path]=\"'ecosystem/applications/application'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"app | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Plugins' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n (click)=\"installPlugins()\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n class=\"btn btn-link\"\n title=\"{{ 'Install plugins' | translate }}\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Install plugins' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<ng-container *ngIf=\"orphanedPlugins$ | async as orphanedPlugins\">\n <c8y-action-bar-item *ngIf=\"orphanedPlugins?.length\" [placement]=\"'right'\">\n <button\n (click)=\"cleanupOrphanedPlugins(orphanedPlugins)\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n class=\"btn btn-link\"\n title=\"{{ 'Clean up orphaned plugins' | translate }}\"\n >\n <i c8yIcon=\"erase\"></i>\n {{ 'Clean up orphaned plugins' | translate }}\n </button>\n </c8y-action-bar-item>\n</ng-container>\n\n<div class=\"content-fullpage d-flex d-col border-top\">\n <c8y-data-grid\n [title]=\"title\"\n [loadMoreItemsLabel]=\"loadMoreItemsLabel\"\n [loadingItemsLabel]=\"loadingItemsLabel\"\n [displayOptions]=\"displayOptions\"\n [columns]=\"columns\"\n [rows]=\"installedPlugins$ | async\"\n [pagination]=\"pagination\"\n [selectable]=\"true\"\n [actionControls]=\"actionControls\"\n [bulkActionControls]=\"bulkActionControls\"\n [headerActionControls]=\"headerActionControls\"\n (onReload)=\"refresh()\"\n class=\"d-contents\"\n >\n <!-- No search/filtered results empty state -->\n <c8y-ui-empty-state\n *ngIf=\"(installedPlugins$ | async)?.length\"\n [icon]=\"'search'\"\n [title]=\"'No plugins to display.' | translate\"\n [subtitle]=\"'Refine your search terms or check your spelling.' | translate\"\n [horizontal]=\"true\"\n >\n </c8y-ui-empty-state>\n <!-- No installed plugins empty state -->\n <c8y-ui-empty-state\n *ngIf=\"!(installedPlugins$ | async)?.length && !isLoading\"\n [icon]=\"'plugin'\"\n [title]=\"'No plugins installed.' | translate\"\n [subtitle]=\"'This application doesn\\'t have any plugin. Click below to install.' | translate\"\n [horizontal]=\"true\"\n >\n <div class=\"fit-w p-t-16\">\n <button\n (click)=\"installPlugins()\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n class=\"btn btn-primary btn-sm\"\n title=\"{{ 'Install plugins' | translate }}\"\n translate\n >\n Install plugins\n </button>\n </div>\n </c8y-ui-empty-state>\n </c8y-data-grid>\n</div>\n", dependencies: [{ kind: "component", type: i3.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "component", type: i3.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i3.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i3.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.DataGridComponent, selector: "c8y-data-grid", inputs: ["title", "loadMoreItemsLabel", "loadingItemsLabel", "showSearch", "refresh", "columns", "rows", "pagination", "infiniteScroll", "serverSideDataCallback", "selectable", "selectionPrimaryKey", "displayOptions", "actionControls", "bulkActionControls", "headerActionControls", "searchText", "configureColumnsEnabled", "showCounterWarning"], outputs: ["rowMouseOver", "rowMouseLeave", "rowClick", "onConfigChange", "onBeforeFilter", "onBeforeSearch", "onFilter", "itemsSelect", "onReload", "onAddCustomColumn", "onRemoveCustomColumn", "onColumnFilterReset", "onSort", "onPageSizeChange", "onColumnReordered", "onColumnVisibilityChange"] }, { kind: "component", type: i3.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.HumanizeAppNamePipe, name: "humanizeAppName" }] });
891
924
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ApplicationPluginsComponent, decorators: [{
892
925
  type: Component,
893
- args: [{ selector: 'c8y-app-plugins', template: "<c8y-title>{{ app | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'Applications' | translate\"\n [path]=\"'ecosystem/applications/application'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"app | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Plugins' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n (click)=\"installPlugins()\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n class=\"btn btn-link\"\n title=\"{{ 'Install plugins' | translate }}\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Install plugins' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<ng-container *ngIf=\"orphanedPlugins$ | async as orphanedPlugins\">\n <c8y-action-bar-item *ngIf=\"orphanedPlugins?.length\" [placement]=\"'right'\">\n <button\n (click)=\"cleanupOrphanedPlugins(orphanedPlugins)\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n class=\"btn btn-link\"\n title=\"{{ 'Clean up orphaned plugins' | translate }}\"\n >\n <i c8yIcon=\"erase\"></i>\n {{ 'Clean up orphaned plugins' | translate }}\n </button>\n </c8y-action-bar-item>\n</ng-container>\n\n<div class=\"content-fullpage d-flex d-col border-top\">\n <c8y-data-grid\n [title]=\"title\"\n [loadMoreItemsLabel]=\"loadMoreItemsLabel\"\n [loadingItemsLabel]=\"loadingItemsLabel\"\n [displayOptions]=\"displayOptions\"\n [columns]=\"columns\"\n [rows]=\"installedPlugins$ | async\"\n [pagination]=\"pagination\"\n [selectable]=\"true\"\n [actionControls]=\"actionControls\"\n [bulkActionControls]=\"bulkActionControls\"\n [headerActionControls]=\"headerActionControls\"\n (onReload)=\"refresh()\"\n class=\"d-contents\"\n >\n <!-- No search/filtered results empty state -->\n <c8y-ui-empty-state\n *ngIf=\"(installedPlugins$ | async)?.length\"\n [icon]=\"'search'\"\n [title]=\"'No plugins to display.' | translate\"\n [subtitle]=\"'Refine your search terms or check your spelling.' | translate\"\n [horizontal]=\"true\"\n >\n </c8y-ui-empty-state>\n <!-- No installed plugins empty state -->\n <c8y-ui-empty-state\n *ngIf=\"!(installedPlugins$ | async)?.length && !isLoading\"\n [icon]=\"'plugin'\"\n [title]=\"'No plugins installed.' | translate\"\n [subtitle]=\"'This application doesn\\'t have any plugin. Click below to install.' | translate\"\n [horizontal]=\"true\"\n >\n <div class=\"fit-w p-t-16\">\n <button\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.INSTALLED_PLUGINS\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_PLUGINS,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.INSTALL_PLUGINS,\n url: CURRENT_LOCATION\n }\"\n (click)=\"installPlugins()\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n class=\"btn btn-primary btn-sm\"\n title=\"{{ 'Install plugins' | translate }}\"\n translate\n >\n Install plugins\n </button>\n </div>\n </c8y-ui-empty-state>\n </c8y-data-grid>\n</div>\n" }]
926
+ args: [{ selector: 'c8y-app-plugins', template: "<c8y-title>{{ app | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'Applications' | translate\"\n [path]=\"'ecosystem/applications/application'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"app | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Plugins' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n (click)=\"installPlugins()\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n class=\"btn btn-link\"\n title=\"{{ 'Install plugins' | translate }}\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Install plugins' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<ng-container *ngIf=\"orphanedPlugins$ | async as orphanedPlugins\">\n <c8y-action-bar-item *ngIf=\"orphanedPlugins?.length\" [placement]=\"'right'\">\n <button\n (click)=\"cleanupOrphanedPlugins(orphanedPlugins)\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n class=\"btn btn-link\"\n title=\"{{ 'Clean up orphaned plugins' | translate }}\"\n >\n <i c8yIcon=\"erase\"></i>\n {{ 'Clean up orphaned plugins' | translate }}\n </button>\n </c8y-action-bar-item>\n</ng-container>\n\n<div class=\"content-fullpage d-flex d-col border-top\">\n <c8y-data-grid\n [title]=\"title\"\n [loadMoreItemsLabel]=\"loadMoreItemsLabel\"\n [loadingItemsLabel]=\"loadingItemsLabel\"\n [displayOptions]=\"displayOptions\"\n [columns]=\"columns\"\n [rows]=\"installedPlugins$ | async\"\n [pagination]=\"pagination\"\n [selectable]=\"true\"\n [actionControls]=\"actionControls\"\n [bulkActionControls]=\"bulkActionControls\"\n [headerActionControls]=\"headerActionControls\"\n (onReload)=\"refresh()\"\n class=\"d-contents\"\n >\n <!-- No search/filtered results empty state -->\n <c8y-ui-empty-state\n *ngIf=\"(installedPlugins$ | async)?.length\"\n [icon]=\"'search'\"\n [title]=\"'No plugins to display.' | translate\"\n [subtitle]=\"'Refine your search terms or check your spelling.' | translate\"\n [horizontal]=\"true\"\n >\n </c8y-ui-empty-state>\n <!-- No installed plugins empty state -->\n <c8y-ui-empty-state\n *ngIf=\"!(installedPlugins$ | async)?.length && !isLoading\"\n [icon]=\"'plugin'\"\n [title]=\"'No plugins installed.' | translate\"\n [subtitle]=\"'This application doesn\\'t have any plugin. Click below to install.' | translate\"\n [horizontal]=\"true\"\n >\n <div class=\"fit-w p-t-16\">\n <button\n (click)=\"installPlugins()\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n class=\"btn btn-primary btn-sm\"\n title=\"{{ 'Install plugins' | translate }}\"\n translate\n >\n Install plugins\n </button>\n </div>\n </c8y-ui-empty-state>\n </c8y-data-grid>\n</div>\n" }]
894
927
  }], ctorParameters: function () { return [{ type: i1$2.ActivatedRoute }, { type: i1.EcosystemService }, { type: i1$1.BsModalService }, { type: i3.ModalService }, { type: i2.TranslateService }, { type: i3.PluginsService }, { type: i3.AlertService }, { type: i3.GainsightService }]; }, propDecorators: { appId: [{
895
928
  type: Input
896
929
  }], dataGrid: [{