@c8y/ngx-components 1022.21.3 → 1022.27.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 (144) hide show
  1. package/asset-properties/asset-properties.model.d.ts +117 -0
  2. package/asset-properties/asset-properties.model.d.ts.map +1 -0
  3. package/asset-properties/asset-properties.service.d.ts +72 -0
  4. package/asset-properties/asset-properties.service.d.ts.map +1 -0
  5. package/asset-properties/asset-property-list/asset-property-action.directive.d.ts +11 -0
  6. package/asset-properties/asset-property-list/asset-property-action.directive.d.ts.map +1 -0
  7. package/asset-properties/asset-property-list/asset-property-icon.pipe.d.ts +11 -0
  8. package/asset-properties/asset-property-list/asset-property-icon.pipe.d.ts.map +1 -0
  9. package/asset-properties/asset-property-list/asset-property-list.component.d.ts +195 -0
  10. package/asset-properties/asset-property-list/asset-property-list.component.d.ts.map +1 -0
  11. package/asset-properties/asset-property-list/asset-property-value.pipe.d.ts +17 -0
  12. package/asset-properties/asset-property-list/asset-property-value.pipe.d.ts.map +1 -0
  13. package/asset-properties/asset-property-list/tree-data-source.d.ts +19 -0
  14. package/asset-properties/asset-property-list/tree-data-source.d.ts.map +1 -0
  15. package/asset-properties/asset-property-selector-drawer/asset-property-selector-drawer.component.d.ts +75 -0
  16. package/asset-properties/asset-property-selector-drawer/asset-property-selector-drawer.component.d.ts.map +1 -0
  17. package/asset-properties/c8y-ngx-components-asset-properties.d.ts.map +1 -0
  18. package/asset-properties/index.d.ts +6 -0
  19. package/asset-properties/index.d.ts.map +1 -0
  20. package/core/search/inventory-search.service.d.ts +4 -3
  21. package/core/search/inventory-search.service.d.ts.map +1 -1
  22. package/core/search/search-input.component.d.ts +5 -2
  23. package/core/search/search-input.component.d.ts.map +1 -1
  24. package/core/search/search.model.d.ts +4 -0
  25. package/core/search/search.model.d.ts.map +1 -1
  26. package/core/search/search.service.d.ts +2 -1
  27. package/core/search/search.service.d.ts.map +1 -1
  28. package/core/select/typeahead.component.d.ts +2 -1
  29. package/core/select/typeahead.component.d.ts.map +1 -1
  30. package/core/user/user-edit-modal.component.d.ts.map +1 -1
  31. package/datapoint-explorer/view/datapoint-explorer.component.d.ts +2 -0
  32. package/datapoint-explorer/view/datapoint-explorer.component.d.ts.map +1 -1
  33. package/device-grid/device-grid.component.d.ts.map +1 -1
  34. package/device-grid/device-grid.service.d.ts +4 -3
  35. package/device-grid/device-grid.service.d.ts.map +1 -1
  36. package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts +8 -2
  37. package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts.map +1 -1
  38. package/echart/charts.component.d.ts +1 -1
  39. package/echart/charts.component.d.ts.map +1 -1
  40. package/echart/index.d.ts +1 -0
  41. package/echart/index.d.ts.map +1 -1
  42. package/echart/models/datapoints-graph-widget.model.d.ts +13 -0
  43. package/echart/models/datapoints-graph-widget.model.d.ts.map +1 -1
  44. package/echart/services/chart-helpers.service.d.ts +23 -0
  45. package/echart/services/chart-helpers.service.d.ts.map +1 -0
  46. package/echart/services/echarts-options.service.d.ts +1 -1
  47. package/echart/services/echarts-options.service.d.ts.map +1 -1
  48. package/ecosystem/application-plugins/application-plugins.component.d.ts +3 -0
  49. package/ecosystem/application-plugins/application-plugins.component.d.ts.map +1 -1
  50. package/fesm2022/c8y-ngx-components-alarms.mjs +2 -2
  51. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  52. package/fesm2022/c8y-ngx-components-asset-properties.mjs +1573 -0
  53. package/fesm2022/c8y-ngx-components-asset-properties.mjs.map +1 -0
  54. package/fesm2022/c8y-ngx-components-assets-navigator.mjs +2 -2
  55. package/fesm2022/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  56. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +22 -7
  57. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
  58. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +1 -1
  59. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  60. package/fesm2022/c8y-ngx-components-device-grid.mjs +21 -13
  61. package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
  62. package/fesm2022/c8y-ngx-components-device-list.mjs +2 -2
  63. package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
  64. package/fesm2022/c8y-ngx-components-device-profile.mjs +1 -1
  65. package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
  66. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +32 -18
  67. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -1
  68. package/fesm2022/c8y-ngx-components-echart-models.mjs +14 -1
  69. package/fesm2022/c8y-ngx-components-echart-models.mjs.map +1 -1
  70. package/fesm2022/c8y-ngx-components-echart.mjs +109 -98
  71. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
  72. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +41 -21
  73. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  74. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +1 -1
  75. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  76. package/fesm2022/c8y-ngx-components-ecosystem.mjs +1 -1
  77. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  78. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +1 -1
  79. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs.map +1 -1
  80. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +1 -1
  81. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs.map +1 -1
  82. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +1 -1
  83. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs.map +1 -1
  84. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +2 -2
  85. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs.map +1 -1
  86. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +3 -3
  87. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
  88. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +1 -1
  89. package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  90. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +2 -2
  91. package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
  92. package/fesm2022/c8y-ngx-components-repository-shared.mjs +2 -2
  93. package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
  94. package/fesm2022/c8y-ngx-components-repository-software.mjs +1 -1
  95. package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
  96. package/fesm2022/c8y-ngx-components-search.mjs +328 -210
  97. package/fesm2022/c8y-ngx-components-search.mjs.map +1 -1
  98. package/fesm2022/c8y-ngx-components-sub-assets.mjs +36 -16
  99. package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
  100. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs +6 -0
  101. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs.map +1 -1
  102. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +12 -4
  103. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  104. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs +51 -10
  105. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs.map +1 -1
  106. package/fesm2022/c8y-ngx-components.mjs +7390 -7345
  107. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  108. package/locales/de.po +43 -24
  109. package/locales/es.po +43 -24
  110. package/locales/fr.po +43 -24
  111. package/locales/ja_JP.po +41 -24
  112. package/locales/ko.po +42 -24
  113. package/locales/locales.pot +67 -12
  114. package/locales/nl.po +43 -24
  115. package/locales/pl.po +43 -24
  116. package/locales/pt_BR.po +43 -24
  117. package/locales/zh_CN.po +43 -24
  118. package/locales/zh_TW.po +43 -24
  119. package/package.json +1 -1
  120. package/search/columns/asset-type-search-grid-column.d.ts.map +1 -1
  121. package/search/search-action.component.d.ts +12 -8
  122. package/search/search-action.component.d.ts.map +1 -1
  123. package/search/search-custom-filters.component.d.ts +18 -4
  124. package/search/search-custom-filters.component.d.ts.map +1 -1
  125. package/search/search-grid.component.d.ts +14 -14
  126. package/search/search-grid.component.d.ts.map +1 -1
  127. package/search/search-results.component.d.ts +3 -1
  128. package/search/search-results.component.d.ts.map +1 -1
  129. package/search/search.module.d.ts.map +1 -1
  130. package/search/search.service.d.ts +14 -6
  131. package/search/search.service.d.ts.map +1 -1
  132. package/sub-assets/sub-assets.service.d.ts +9 -5
  133. package/sub-assets/sub-assets.service.d.ts.map +1 -1
  134. package/widgets/definitions/html-widget/html-widget-config.factory.d.ts.map +1 -1
  135. package/widgets/implementations/datapoints-graph/datapoints-graph-config/datapoints-graph-widget-config.component.d.ts +2 -0
  136. package/widgets/implementations/datapoints-graph/datapoints-graph-config/datapoints-graph-widget-config.component.d.ts.map +1 -1
  137. package/widgets/implementations/html-widget/html-widget-properties-selector/html-widget-properties-selector.component.d.ts +17 -0
  138. package/widgets/implementations/html-widget/html-widget-properties-selector/html-widget-properties-selector.component.d.ts.map +1 -0
  139. package/widgets/implementations/html-widget/html-widget.model.d.ts +2 -2
  140. package/widgets/implementations/html-widget/html-widget.model.d.ts.map +1 -1
  141. package/widgets/implementations/html-widget/index.d.ts +1 -0
  142. package/widgets/implementations/html-widget/index.d.ts.map +1 -1
  143. package/echart/services/custom-measurements.service.d.ts +0 -12
  144. package/echart/services/custom-measurements.service.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-device-list.mjs","sources":["../../device-list/add-smart-group.component.ts","../../device-list/add-smart-group.component.html","../../device-list/device-list-extension.service.ts","../../device-list/device-list-navigation.factory.ts","../../device-list/device-list.component.ts","../../device-list/device-list.component.html","../../device-list/action-controls.factory.ts","../../device-list/devices.breadcrumb-factory.ts","../../device-list/device-list.module.ts","../../device-list/c8y-ngx-components-device-list.ts"],"sourcesContent":["import { Component } from '@angular/core';\nimport { SmartGroupsService } from '@c8y/client';\nimport {\n AlertService,\n gettext,\n IconDirective,\n C8yTranslateDirective,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n GuideDocsComponent,\n GuideHrefDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { DeviceGridService } from '@c8y/ngx-components/device-grid';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { of } from 'rxjs';\nimport { catchError, switchMap, take, tap } from 'rxjs/operators';\nimport { FormsModule } from '@angular/forms';\nimport { PopoverDirective } from 'ngx-bootstrap/popover';\n\n@Component({\n selector: 'c8y-add-smart-group',\n templateUrl: './add-smart-group.component.html',\n imports: [\n IconDirective,\n C8yTranslateDirective,\n FormsModule,\n FormGroupComponent,\n PopoverDirective,\n RequiredInputPlaceholderDirective,\n GuideDocsComponent,\n GuideHrefDirective,\n C8yTranslatePipe\n ]\n})\nexport class AddSmartGroupComponent {\n smartGroup = {\n name: '',\n type: 'c8y_DynamicGroup',\n c8y_IsDynamicGroup: {}\n };\n\n configKey: string;\n deviceQuery: string;\n\n constructor(\n private modal: BsModalRef,\n private smartGroupsService: SmartGroupsService,\n private deviceGridService: DeviceGridService,\n private alert: AlertService,\n private translateService: TranslateService\n ) {}\n\n create() {\n return this.deviceGridService\n .getConfig$(this.configKey)\n .pipe(\n switchMap(config => {\n return this.smartGroupsService.create({\n smartGroup: this.smartGroup,\n deviceQueryString: this.deviceQuery,\n configurableColumns: config\n });\n }),\n tap(() => {\n this.alert.success(\n this.translateService.instant(gettext('Smart group \"{{ name }}\" added.'), {\n name: this.smartGroup.name\n })\n );\n this.modal.hide();\n }),\n catchError(ex => {\n this.alert.addServerFailure(ex);\n return of([]);\n }),\n take(1)\n )\n .subscribe();\n }\n\n close() {\n this.modal.hide();\n }\n}\n","<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"'c8y-group-smart'\"></i>\n <h4\n id=\"modal-title\"\n translate\n >\n Add smart group\n </h4>\n </div>\n\n <form\n #createSmartGroup=\"ngForm\"\n (ngSubmit)=\"createSmartGroup.form.valid && create()\"\n >\n <div class=\"modal-inner-scroll\">\n <div\n class=\"modal-body\"\n id=\"modal-body\"\n >\n <c8y-form-group>\n <label\n class=\"d-inline-block\"\n for=\"name\"\n translate\n >\n Group name\n </label>\n <button\n class=\"btn-help btn-help--sm a-s-center\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"customPopoverTemplate\"\n placement=\"right\"\n type=\"button\"\n [outsideClick]=\"true\"\n data-cy=\"add-smart-group-component--Help-button\"\n ></button>\n <input\n class=\"form-control\"\n id=\"name\"\n placeholder=\"{{ 'e.g. My smart group' | translate }}\"\n name=\"name\"\n type=\"text\"\n autocomplete=\"off\"\n required\n [(ngModel)]=\"smartGroup.name\"\n />\n </c8y-form-group>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"close()\"\n translate\n >\n Cancel\n </button>\n\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add' | translate }}\"\n type=\"submit\"\n [disabled]=\"createSmartGroup.form.invalid\"\n translate\n >\n Add\n </button>\n </div>\n </form>\n</div>\n\n<ng-template #customPopoverTemplate>\n <div\n class=\"m-b-16\"\n style=\"pointer-events: auto\"\n tabindex=\"0\"\n data-cy=\"add-smart-group-component--popover-Template\"\n translate\n >\n Thе smart group will be created based on the filters currently applied in the device list.\n </div>\n <br />\n <p\n c8y-guide-docs\n translate\n ngNonBindable\n >\n <small>\n Find out more in the\n <a c8y-guide-href=\"docs/device-management-application/grouping-devices/#using-smart-groups\">\n user documentation\n </a>\n .\n </small>\n </p>\n</ng-template>\n","import { Injectable, InjectionToken, Injector } from '@angular/core';\nimport { Router } from '@angular/router';\nimport {\n Column,\n ExtensionFactory,\n ExtensionPointWithoutStateForPlugins,\n fromTriggerOnce,\n GenericHookOptions,\n GenericHookType,\n hookGeneric,\n PluginsResolveService\n} from '@c8y/ngx-components';\nimport { DeviceGridService } from '@c8y/ngx-components/device-grid';\nimport { flatten, isEmpty } from 'lodash-es';\nimport { Observable } from 'rxjs';\nimport { map, shareReplay, startWith } from 'rxjs/operators';\n\nconst HOOK_DEVICE_LIST_COLUMNS = new InjectionToken<GenericHookType<Column>>(\n 'HOOK_ALL_DEVICES_LIST_COLUMNS'\n);\n\nexport type DeviceListColumnsFactory = ExtensionFactory<Column>;\n\n/**\n * A hook to override the default device grid columns configuration in `c8y-device-list` component.\n */\nexport function hookDeviceListColumns(\n columns: GenericHookType<Column>,\n options?: Partial<GenericHookOptions>\n) {\n return hookGeneric<Column>(columns, HOOK_DEVICE_LIST_COLUMNS, options);\n}\n\n/**\n * A service defining device list column extension options.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DeviceListExtensionService extends ExtensionPointWithoutStateForPlugins<Column> {\n constructor(\n rootInjector: Injector,\n private router: Router,\n plugins: PluginsResolveService,\n private deviceGridService: DeviceGridService\n ) {\n super(rootInjector, plugins);\n this.items$ = this.setupItemsObservable();\n }\n\n protected setupItemsObservable(): Observable<Column[]> {\n return fromTriggerOnce<Column>(this.router, this.refresh$, [\n () =>\n flatten(\n this.injectors.map(injector =>\n injector.get(HOOK_DEVICE_LIST_COLUMNS, [], {\n self: true\n })\n )\n ),\n () => this.factories\n ]).pipe(\n map((columns: Column[]) =>\n isEmpty(columns) ? this.deviceGridService.getDefaultColumns() : columns\n ),\n startWith(this.deviceGridService.getDefaultColumns()),\n shareReplay(1)\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { gettext, NavigatorNode, NavigatorNodeFactory } from '@c8y/ngx-components';\n\n@Injectable()\nexport class DeviceListNavigationFactory implements NavigatorNodeFactory {\n nav = new NavigatorNode({\n label: gettext('All devices'),\n path: 'device',\n icon: 'c8y-device-management',\n parent: {\n label: gettext('Devices'),\n icon: 'exchange'\n },\n priority: 2000\n });\n\n async get() {\n return this.nav;\n }\n}\n","import { Component } from '@angular/core';\nimport {\n Column,\n DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER,\n DATA_GRID_CONFIGURATION_STRATEGY,\n GridConfigContextProvider,\n UserPreferencesConfigurationStrategy,\n UserPreferencesGridConfigContext,\n TitleComponent,\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n ActionBarItemComponent,\n IconDirective,\n HelpComponent,\n ProductExperienceDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { DeviceGridService, DeviceGridComponent } from '@c8y/ngx-components/device-grid';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { Observable } from 'rxjs';\nimport { AddSmartGroupComponent } from './add-smart-group.component';\nimport { DeviceListExtensionService } from './device-list-extension.service';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'c8y-device-list',\n templateUrl: './device-list.component.html',\n providers: [\n {\n provide: DATA_GRID_CONFIGURATION_STRATEGY,\n useClass: UserPreferencesConfigurationStrategy\n },\n {\n provide: DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER,\n useExisting: DeviceListComponent\n }\n ],\n imports: [\n TitleComponent,\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n ActionBarItemComponent,\n IconDirective,\n HelpComponent,\n DeviceGridComponent,\n ProductExperienceDirective,\n C8yTranslatePipe,\n AsyncPipe\n ]\n})\nexport class DeviceListComponent implements GridConfigContextProvider {\n readonly GRID_CONFIG_KEY = 'device-grid-all';\n\n count$ = this.deviceGridService.getTotal({});\n\n columns$: Observable<Column[]>;\n deviceQueryStringOutput: string;\n\n constructor(\n protected deviceGridService: DeviceGridService,\n private bsModalService: BsModalService,\n deviceListExtensionService: DeviceListExtensionService\n ) {\n this.columns$ = deviceListExtensionService.items$;\n }\n\n getGridConfigContext(): UserPreferencesGridConfigContext {\n return {\n key: this.GRID_CONFIG_KEY,\n defaultColumns: this.deviceGridService.getDefaultColumns(),\n legacyConfigKey: 'all-devices-columns-meta_',\n legacyFilterKey: 'all-devices-columns-config'\n };\n }\n\n async createSmartGroup() {\n const initialState = {\n configKey: this.GRID_CONFIG_KEY,\n deviceQuery: this.deviceQueryStringOutput\n };\n\n this.bsModalService.show(AddSmartGroupComponent, {\n class: 'modal-sm',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n ignoreBackdropClick: true,\n keyboard: false,\n initialState\n });\n }\n}\n","<c8y-title>\n {{ 'All devices' | translate }}\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'exchange'\"\n [label]=\"'Devices' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-management'\"\n [label]=\"'All devices' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add smart group' | translate }}\"\n (click)=\"createSmartGroup()\"\n >\n <i c8yIcon=\"c8y-group-smart\"></i>\n {{ 'Add smart group' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/device-management-application/viewing-all-devices/#viewing-all-devices\"\n></c8y-help>\n\n<div class=\"content-fullpage border-top border-bottom\">\n <c8y-device-grid\n [columns]=\"columns$ | async\"\n [infiniteScroll]=\"(count$ | async) === undefined ? 'auto' : undefined\"\n (onDeviceQueryStringChange)=\"deviceQueryStringOutput = $event\"\n c8yProductExperience\n [actionName]=\"'allDevices'\"\n ></c8y-device-grid>\n</div>\n","import { Injectable } from '@angular/core';\nimport { IManagedObject } from '@c8y/client';\nimport {\n ActionControlFactory,\n ActionControlHook,\n BuiltInActionType,\n Row\n} from '@c8y/ngx-components';\nimport { DeviceGridService } from '@c8y/ngx-components/device-grid';\n\n@Injectable({ providedIn: 'root' })\nexport class ActionControlsFactory implements ActionControlFactory {\n constructor(private deviceGridService: DeviceGridService) {}\n\n get(): ActionControlHook {\n return {\n actionControls: [\n {\n type: BuiltInActionType.Delete,\n priority: -Infinity,\n callback: async (item: Row, reload: (boolean?) => void) => {\n await this.deviceGridService.delete(item as IManagedObject);\n reload(false);\n }\n }\n ],\n matchesGrid(_, context) {\n return context?.key === 'device-grid-all';\n }\n };\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n Breadcrumb,\n BreadcrumbFactory,\n BreadcrumbItem,\n ContextRouteService,\n gettext,\n ViewContext\n} from '@c8y/ngx-components';\n\n@Injectable()\nexport class DevicesBreadcrumbFactory implements BreadcrumbFactory {\n private contextRouteService = inject(ContextRouteService);\n\n async get(route: ActivatedRoute) {\n const routeContext = this.contextRouteService.getContextData(route);\n\n if (!routeContext) {\n return;\n }\n\n const { context, contextData } = routeContext;\n const { routeConfig } = route.snapshot;\n\n if (\n context === ViewContext.Device ||\n (routeConfig as { context: ViewContext })?.context === ViewContext.Device\n ) {\n const breadcrumb: Breadcrumb = { items: [] };\n const breadcrumbItems: BreadcrumbItem[] = [];\n\n breadcrumbItems.push({\n label: gettext('Devices'),\n icon: 'exchange'\n } as BreadcrumbItem);\n\n breadcrumbItems.push({\n label: gettext('All devices'),\n path: '/device'\n });\n\n const name = contextData?.name;\n\n if (!!name) {\n breadcrumbItems.push({ label: name } as BreadcrumbItem);\n }\n\n const label = (routeConfig as { label: string })?.label;\n\n if (!!label) {\n breadcrumbItems.push({ label } as BreadcrumbItem);\n }\n\n breadcrumb.items = breadcrumbItems;\n return breadcrumb;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { Route, RouterModule } from '@angular/router';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport {\n CommonModule,\n CoreModule,\n hookBreadcrumb,\n hookDataGridActionControls,\n hookNavigator\n} from '@c8y/ngx-components';\nimport { DeviceGridModule } from '@c8y/ngx-components/device-grid';\nimport { ActionControlsFactory } from './action-controls.factory';\n\nimport { AddSmartGroupComponent } from './add-smart-group.component';\nimport { DeviceListNavigationFactory } from './device-list-navigation.factory';\nimport { DeviceListComponent } from './device-list.component';\nimport { DevicesBreadcrumbFactory } from './devices.breadcrumb-factory';\n\nconst deviceListRoutes: Route[] = [\n {\n path: 'device',\n component: DeviceListComponent\n }\n];\n\n@NgModule({\n imports: [\n CoreModule,\n CommonModule,\n DeviceGridModule,\n PopoverModule,\n TooltipModule,\n RouterModule.forChild(deviceListRoutes),\n DeviceListComponent,\n AddSmartGroupComponent\n ],\n exports: [],\n providers: [\n hookNavigator(DeviceListNavigationFactory),\n hookBreadcrumb(DevicesBreadcrumbFactory),\n hookDataGridActionControls(ActionControlsFactory)\n ]\n})\nexport class DeviceListModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3.DeviceListExtensionService"],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-device-list.mjs","sources":["../../device-list/add-smart-group.component.ts","../../device-list/add-smart-group.component.html","../../device-list/device-list-extension.service.ts","../../device-list/device-list-navigation.factory.ts","../../device-list/device-list.component.ts","../../device-list/device-list.component.html","../../device-list/action-controls.factory.ts","../../device-list/devices.breadcrumb-factory.ts","../../device-list/device-list.module.ts","../../device-list/c8y-ngx-components-device-list.ts"],"sourcesContent":["import { Component } from '@angular/core';\nimport { SmartGroupsService } from '@c8y/client';\nimport {\n AlertService,\n gettext,\n IconDirective,\n C8yTranslateDirective,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n GuideDocsComponent,\n GuideHrefDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { DeviceGridService } from '@c8y/ngx-components/device-grid';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { of } from 'rxjs';\nimport { catchError, switchMap, take, tap } from 'rxjs/operators';\nimport { FormsModule } from '@angular/forms';\nimport { PopoverDirective } from 'ngx-bootstrap/popover';\n\n@Component({\n selector: 'c8y-add-smart-group',\n templateUrl: './add-smart-group.component.html',\n imports: [\n IconDirective,\n C8yTranslateDirective,\n FormsModule,\n FormGroupComponent,\n PopoverDirective,\n RequiredInputPlaceholderDirective,\n GuideDocsComponent,\n GuideHrefDirective,\n C8yTranslatePipe\n ]\n})\nexport class AddSmartGroupComponent {\n smartGroup = {\n name: '',\n type: 'c8y_DynamicGroup',\n c8y_IsDynamicGroup: {}\n };\n\n configKey: string;\n deviceQuery: string;\n\n constructor(\n private modal: BsModalRef,\n private smartGroupsService: SmartGroupsService,\n private deviceGridService: DeviceGridService,\n private alert: AlertService,\n private translateService: TranslateService\n ) {}\n\n create() {\n return this.deviceGridService\n .getConfig$(this.configKey)\n .pipe(\n switchMap(config => {\n return this.smartGroupsService.create({\n smartGroup: this.smartGroup,\n deviceQueryString: this.deviceQuery,\n configurableColumns: config\n });\n }),\n tap(() => {\n this.alert.success(\n this.translateService.instant(gettext('Smart group \"{{ name }}\" added.'), {\n name: this.smartGroup.name\n })\n );\n this.modal.hide();\n }),\n catchError(ex => {\n this.alert.addServerFailure(ex);\n return of([]);\n }),\n take(1)\n )\n .subscribe();\n }\n\n close() {\n this.modal.hide();\n }\n}\n","<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"'c8y-group-smart'\"></i>\n <h4\n id=\"modal-title\"\n translate\n >\n Add smart group\n </h4>\n </div>\n\n <form\n #createSmartGroup=\"ngForm\"\n (ngSubmit)=\"createSmartGroup.form.valid && create()\"\n >\n <div class=\"modal-inner-scroll\">\n <div\n class=\"modal-body\"\n id=\"modal-body\"\n >\n <c8y-form-group>\n <label\n class=\"d-inline-block\"\n for=\"name\"\n translate\n >\n Group name\n </label>\n <button\n class=\"btn-help btn-help--sm a-s-center\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"customPopoverTemplate\"\n placement=\"right\"\n type=\"button\"\n [outsideClick]=\"true\"\n data-cy=\"add-smart-group-component--Help-button\"\n ></button>\n <input\n class=\"form-control\"\n id=\"name\"\n placeholder=\"{{ 'e.g. My smart group' | translate }}\"\n name=\"name\"\n type=\"text\"\n autocomplete=\"off\"\n required\n [(ngModel)]=\"smartGroup.name\"\n />\n </c8y-form-group>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"close()\"\n translate\n >\n Cancel\n </button>\n\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add' | translate }}\"\n type=\"submit\"\n [disabled]=\"createSmartGroup.form.invalid\"\n translate\n >\n Add\n </button>\n </div>\n </form>\n</div>\n\n<ng-template #customPopoverTemplate>\n <div\n class=\"m-b-16\"\n style=\"pointer-events: auto\"\n tabindex=\"0\"\n data-cy=\"add-smart-group-component--popover-Template\"\n translate\n >\n The smart group will be created based on the filters currently applied in the device list.\n </div>\n <br />\n <p\n c8y-guide-docs\n translate\n ngNonBindable\n >\n <small>\n Find out more in the\n <a c8y-guide-href=\"docs/device-management-application/grouping-devices/#using-smart-groups\">\n user documentation\n </a>\n .\n </small>\n </p>\n</ng-template>\n","import { Injectable, InjectionToken, Injector } from '@angular/core';\nimport { Router } from '@angular/router';\nimport {\n Column,\n ExtensionFactory,\n ExtensionPointWithoutStateForPlugins,\n fromTriggerOnce,\n GenericHookOptions,\n GenericHookType,\n hookGeneric,\n PluginsResolveService\n} from '@c8y/ngx-components';\nimport { DeviceGridService } from '@c8y/ngx-components/device-grid';\nimport { flatten, isEmpty } from 'lodash-es';\nimport { Observable } from 'rxjs';\nimport { map, shareReplay, startWith } from 'rxjs/operators';\n\nconst HOOK_DEVICE_LIST_COLUMNS = new InjectionToken<GenericHookType<Column>>(\n 'HOOK_ALL_DEVICES_LIST_COLUMNS'\n);\n\nexport type DeviceListColumnsFactory = ExtensionFactory<Column>;\n\n/**\n * A hook to override the default device grid columns configuration in `c8y-device-list` component.\n */\nexport function hookDeviceListColumns(\n columns: GenericHookType<Column>,\n options?: Partial<GenericHookOptions>\n) {\n return hookGeneric<Column>(columns, HOOK_DEVICE_LIST_COLUMNS, options);\n}\n\n/**\n * A service defining device list column extension options.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DeviceListExtensionService extends ExtensionPointWithoutStateForPlugins<Column> {\n constructor(\n rootInjector: Injector,\n private router: Router,\n plugins: PluginsResolveService,\n private deviceGridService: DeviceGridService\n ) {\n super(rootInjector, plugins);\n this.items$ = this.setupItemsObservable();\n }\n\n protected setupItemsObservable(): Observable<Column[]> {\n return fromTriggerOnce<Column>(this.router, this.refresh$, [\n () =>\n flatten(\n this.injectors.map(injector =>\n injector.get(HOOK_DEVICE_LIST_COLUMNS, [], {\n self: true\n })\n )\n ),\n () => this.factories\n ]).pipe(\n map((columns: Column[]) =>\n isEmpty(columns) ? this.deviceGridService.getDefaultColumns() : columns\n ),\n startWith(this.deviceGridService.getDefaultColumns()),\n shareReplay(1)\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { gettext, NavigatorNode, NavigatorNodeFactory } from '@c8y/ngx-components';\n\n@Injectable()\nexport class DeviceListNavigationFactory implements NavigatorNodeFactory {\n nav = new NavigatorNode({\n label: gettext('All devices'),\n path: 'device',\n icon: 'c8y-device-management',\n parent: {\n label: gettext('Devices'),\n icon: 'exchange'\n },\n priority: 2000\n });\n\n async get() {\n return this.nav;\n }\n}\n","import { Component } from '@angular/core';\nimport {\n Column,\n DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER,\n DATA_GRID_CONFIGURATION_STRATEGY,\n GridConfigContextProvider,\n UserPreferencesConfigurationStrategy,\n UserPreferencesGridConfigContext,\n TitleComponent,\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n ActionBarItemComponent,\n IconDirective,\n HelpComponent,\n ProductExperienceDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { DeviceGridService, DeviceGridComponent } from '@c8y/ngx-components/device-grid';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { Observable } from 'rxjs';\nimport { AddSmartGroupComponent } from './add-smart-group.component';\nimport { DeviceListExtensionService } from './device-list-extension.service';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'c8y-device-list',\n templateUrl: './device-list.component.html',\n providers: [\n {\n provide: DATA_GRID_CONFIGURATION_STRATEGY,\n useClass: UserPreferencesConfigurationStrategy\n },\n {\n provide: DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER,\n useExisting: DeviceListComponent\n }\n ],\n imports: [\n TitleComponent,\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n ActionBarItemComponent,\n IconDirective,\n HelpComponent,\n DeviceGridComponent,\n ProductExperienceDirective,\n C8yTranslatePipe,\n AsyncPipe\n ]\n})\nexport class DeviceListComponent implements GridConfigContextProvider {\n readonly GRID_CONFIG_KEY = 'device-grid-all';\n\n count$ = this.deviceGridService.getTotal({});\n\n columns$: Observable<Column[]>;\n deviceQueryStringOutput: string;\n\n constructor(\n protected deviceGridService: DeviceGridService,\n private bsModalService: BsModalService,\n deviceListExtensionService: DeviceListExtensionService\n ) {\n this.columns$ = deviceListExtensionService.items$;\n }\n\n getGridConfigContext(): UserPreferencesGridConfigContext {\n return {\n key: this.GRID_CONFIG_KEY,\n defaultColumns: this.deviceGridService.getDefaultColumns(),\n legacyConfigKey: 'all-devices-columns-meta_',\n legacyFilterKey: 'all-devices-columns-config'\n };\n }\n\n async createSmartGroup() {\n const initialState = {\n configKey: this.GRID_CONFIG_KEY,\n deviceQuery: this.deviceQueryStringOutput\n };\n\n this.bsModalService.show(AddSmartGroupComponent, {\n class: 'modal-sm',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n ignoreBackdropClick: true,\n keyboard: false,\n initialState\n });\n }\n}\n","<c8y-title>\n {{ 'All devices' | translate }}\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'exchange'\"\n [label]=\"'Devices' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-management'\"\n [label]=\"'All devices' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add smart group' | translate }}\"\n (click)=\"createSmartGroup()\"\n >\n <i c8yIcon=\"c8y-group-smart\"></i>\n {{ 'Add smart group' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/device-management-application/viewing-all-devices/#viewing-all-devices\"\n></c8y-help>\n\n<div class=\"content-fullpage border-top border-bottom\">\n <c8y-device-grid\n [columns]=\"columns$ | async\"\n [infiniteScroll]=\"(count$ | async) === undefined ? 'auto' : undefined\"\n (onDeviceQueryStringChange)=\"deviceQueryStringOutput = $event\"\n c8yProductExperience\n [actionName]=\"'allDevices'\"\n ></c8y-device-grid>\n</div>\n","import { Injectable } from '@angular/core';\nimport { IManagedObject } from '@c8y/client';\nimport {\n ActionControlFactory,\n ActionControlHook,\n BuiltInActionType,\n Row\n} from '@c8y/ngx-components';\nimport { DeviceGridService } from '@c8y/ngx-components/device-grid';\n\n@Injectable({ providedIn: 'root' })\nexport class ActionControlsFactory implements ActionControlFactory {\n constructor(private deviceGridService: DeviceGridService) {}\n\n get(): ActionControlHook {\n return {\n actionControls: [\n {\n type: BuiltInActionType.Delete,\n priority: -Infinity,\n callback: async (item: Row, reload: (boolean?) => void) => {\n await this.deviceGridService.delete(item as IManagedObject);\n reload(false);\n }\n }\n ],\n matchesGrid(_, context) {\n return context?.key === 'device-grid-all';\n }\n };\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n Breadcrumb,\n BreadcrumbFactory,\n BreadcrumbItem,\n ContextRouteService,\n gettext,\n ViewContext\n} from '@c8y/ngx-components';\n\n@Injectable()\nexport class DevicesBreadcrumbFactory implements BreadcrumbFactory {\n private contextRouteService = inject(ContextRouteService);\n\n async get(route: ActivatedRoute) {\n const routeContext = this.contextRouteService.getContextData(route);\n\n if (!routeContext) {\n return;\n }\n\n const { context, contextData } = routeContext;\n const { routeConfig } = route.snapshot;\n\n if (\n context === ViewContext.Device ||\n (routeConfig as { context: ViewContext })?.context === ViewContext.Device\n ) {\n const breadcrumb: Breadcrumb = { items: [] };\n const breadcrumbItems: BreadcrumbItem[] = [];\n\n breadcrumbItems.push({\n label: gettext('Devices'),\n icon: 'exchange'\n } as BreadcrumbItem);\n\n breadcrumbItems.push({\n label: gettext('All devices'),\n path: '/device'\n });\n\n const name = contextData?.name;\n\n if (!!name) {\n breadcrumbItems.push({ label: name } as BreadcrumbItem);\n }\n\n const label = (routeConfig as { label: string })?.label;\n\n if (!!label) {\n breadcrumbItems.push({ label } as BreadcrumbItem);\n }\n\n breadcrumb.items = breadcrumbItems;\n return breadcrumb;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { Route, RouterModule } from '@angular/router';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport {\n CommonModule,\n CoreModule,\n hookBreadcrumb,\n hookDataGridActionControls,\n hookNavigator\n} from '@c8y/ngx-components';\nimport { DeviceGridModule } from '@c8y/ngx-components/device-grid';\nimport { ActionControlsFactory } from './action-controls.factory';\n\nimport { AddSmartGroupComponent } from './add-smart-group.component';\nimport { DeviceListNavigationFactory } from './device-list-navigation.factory';\nimport { DeviceListComponent } from './device-list.component';\nimport { DevicesBreadcrumbFactory } from './devices.breadcrumb-factory';\n\nconst deviceListRoutes: Route[] = [\n {\n path: 'device',\n component: DeviceListComponent\n }\n];\n\n@NgModule({\n imports: [\n CoreModule,\n CommonModule,\n DeviceGridModule,\n PopoverModule,\n TooltipModule,\n RouterModule.forChild(deviceListRoutes),\n DeviceListComponent,\n AddSmartGroupComponent\n ],\n exports: [],\n providers: [\n hookNavigator(DeviceListNavigationFactory),\n hookBreadcrumb(DevicesBreadcrumbFactory),\n hookDataGridActionControls(ActionControlsFactory)\n ]\n})\nexport class DeviceListModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3.DeviceListExtensionService"],"mappings":"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"}
@@ -1063,7 +1063,7 @@ class DeviceTabProfileComponent {
1063
1063
  provide: PRODUCT_EXPERIENCE_EVENT_SOURCE,
1064
1064
  useExisting: forwardRef(() => DeviceTabProfileComponent)
1065
1065
  }
1066
- ], ngImport: i0, template: "<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n (click)=\"reload$.next(true)\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reload$.value }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n<c8y-action-bar-item [placement]=\"'right'\">\n <c8y-realtime-btn [service]=\"deviceRealtime\"></c8y-realtime-btn>\n</c8y-action-bar-item>\n\n<div class=\"card card--grid--fullpage card--grid--fullpage card--grid grid__row--2-10--md\">\n <div class=\"card--grid grid__col--6-6--md\">\n <!-- AVAILABLE PROFILES -->\n <div class=\"bg-level-0\">\n <div class=\"card-header separator\">\n <div\n class=\"card-title\"\n translate\n >\n Device profile\n </div>\n </div>\n <div class=\"p-16\">\n <form #deviceProfileForm=\"ngForm\">\n <div class=\"input-group\">\n <c8y-typeahead\n class=\"flex-grow\"\n placeholder=\"{{ 'Select device profile' | translate }}\"\n name=\"selectProfile\"\n data-cy=\"device-tab-profile--select-device-profile\"\n [(ngModel)]=\"selectedProfile\"\n (onSearch)=\"pattern$.next($event)\"\n [allowFreeEntries]=\"false\"\n >\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n *c8yFor=\"let profile of deviceProfiles$; pipe: filterPipe\"\n (click)=\"selectProfile(profile); pattern$.next('')\"\n >\n <c8y-highlight\n [text]=\"profile.name || '&#45;&#45;'\"\n [pattern]=\"pattern$.value\"\n ></c8y-highlight>\n </c8y-li>\n </c8y-typeahead>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Assign device profile' | translate }}\"\n type=\"button\"\n (click)=\"createOperation()\"\n data-cy=\"device-tab-profile--Assign-device-profile-button\"\n [disabled]=\"!selectedProfile?.id\"\n c8yProductExperience\n inherit\n [actionData]=\"{ action: PRODUCT_EXPERIENCE.ACTIONS.ASSIGN_DEVICE_PROFILE }\"\n >\n <span>{{ 'Assign device profile' | translate }}</span>\n </button>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <!-- INSTALL PROFILE OPERATION -->\n <div class=\"bg-level-1\">\n <div class=\"card-header separator\">\n <div\n class=\"card-title\"\n translate\n >\n Currently installed\n </div>\n </div>\n <div class=\"card-block\">\n <c8y-operation-details\n [operation]=\"operation\"\n c8yProductExperience\n inherit\n suppressDataOverriding\n ></c8y-operation-details>\n </div>\n </div>\n </div>\n <div class=\"card--grid__inner-scroll d-col no-align-items\">\n <div class=\"d-contents\">\n <!-- FIRMWARE -->\n <c8y-device-tab-profile-detail\n class=\"d-contents\"\n [sectionIcon]=\"'c8y-firmware'\"\n [sectionTitle]=\"'Firmware' | translate\"\n [emptyStateText]=\"'No firmware to display.' | translate\"\n [emptyStateDetails]=\"'No firmware assigned.' | translate\"\n [isProfileSelected]=\"!!selectedProfile\"\n [items]=\"firmwareItems\"\n [isEmpty]=\"!selectedProfile?.c8y_DeviceProfile?.firmware?.name\"\n ></c8y-device-tab-profile-detail>\n </div>\n <div class=\"d-contents\">\n <!-- SOFTWARE -->\n <c8y-device-tab-profile-detail\n class=\"d-contents\"\n [sectionIcon]=\"'c8y-tools'\"\n [sectionTitle]=\"'Software' | translate\"\n [emptyStateText]=\"'No software to display.' | translate\"\n [emptyStateDetails]=\"'No software assigned.' | translate\"\n [isProfileSelected]=\"!!selectedProfile\"\n [items]=\"softwareItems\"\n [isEmpty]=\"\n !selectedProfile?.c8y_DeviceProfile?.software ||\n selectedProfile?.c8y_DeviceProfile?.software?.length === 0\n \"\n ></c8y-device-tab-profile-detail>\n </div>\n <div class=\"d-contents\">\n <!-- CONFIGURATION -->\n <c8y-device-tab-profile-detail\n class=\"d-contents\"\n [sectionIcon]=\"'gears'\"\n [sectionTitle]=\"'Configuration' | translate\"\n [emptyStateText]=\"'No configuration to display' | translate\"\n [emptyStateDetails]=\"'No configuration assigned' | translate\"\n [isProfileSelected]=\"!!selectedProfile\"\n [items]=\"configurationItems\"\n [isEmpty]=\"\n !selectedProfile?.c8y_DeviceProfile?.configuration ||\n selectedProfile?.c8y_DeviceProfile?.configuration?.length === 0\n \"\n ></c8y-device-tab-profile-detail>\n </div>\n <!-- fill in the remanining vertical space when empty -->\n <div class=\"card--grid grid__col--6-6--md flex-grow\">\n <div class=\"bg-level-0\"></div>\n <div class=\"bg-level-1\"></div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: RealtimeButtonComponent, selector: "c8y-realtime-btn", inputs: ["service", "label", "title", "disabled"], outputs: ["onToggle"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected", "highlightFirstItem"], outputs: ["onSearch", "onIconClick"] }, { kind: "directive", type: ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "directive", type: ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "component", type: OperationDetailsComponent, selector: "c8y-operation-details", inputs: ["operation"] }, { kind: "component", type: DeviceTabProfileDetailComponent, selector: "c8y-device-tab-profile-detail", inputs: ["sectionTitle", "sectionIcon", "emptyStateText", "emptyStateDetails", "isProfileSelected", "isEmpty", "items", "showTextLabel"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
1066
+ ], ngImport: i0, template: "<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n (click)=\"reload$.next(true)\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reload$.value }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n<c8y-action-bar-item [placement]=\"'right'\">\n <c8y-realtime-btn [service]=\"deviceRealtime\"></c8y-realtime-btn>\n</c8y-action-bar-item>\n\n<div class=\"card card--grid--fullpage card--grid--fullpage card--grid grid__row--2-10--md\">\n <div class=\"card--grid grid__col--6-6--md\">\n <!-- AVAILABLE PROFILES -->\n <div class=\"bg-level-0\">\n <div class=\"card-header separator\">\n <div\n class=\"card-title\"\n translate\n >\n Device profile\n </div>\n </div>\n <div class=\"p-16\">\n <form #deviceProfileForm=\"ngForm\">\n <div class=\"input-group\">\n <c8y-typeahead\n class=\"flex-grow\"\n placeholder=\"{{ 'Select device profile' | translate }}\"\n name=\"selectProfile\"\n data-cy=\"device-tab-profile--select-device-profile\"\n [(ngModel)]=\"selectedProfile\"\n (onSearch)=\"pattern$.next($event)\"\n [allowFreeEntries]=\"false\"\n >\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n *c8yFor=\"let profile of deviceProfiles$; pipe: filterPipe\"\n (click)=\"selectProfile(profile); pattern$.next('')\"\n >\n <c8y-highlight\n [text]=\"profile.name || '&#45;&#45;'\"\n [pattern]=\"pattern$.value\"\n ></c8y-highlight>\n </c8y-li>\n </c8y-typeahead>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Assign device profile' | translate }}\"\n type=\"button\"\n (click)=\"createOperation()\"\n data-cy=\"device-tab-profile--Assign-device-profile-button\"\n [disabled]=\"!selectedProfile?.id\"\n c8yProductExperience\n inherit\n [actionData]=\"{ action: PRODUCT_EXPERIENCE.ACTIONS.ASSIGN_DEVICE_PROFILE }\"\n >\n <span>{{ 'Assign device profile' | translate }}</span>\n </button>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <!-- INSTALL PROFILE OPERATION -->\n <div class=\"bg-level-1\">\n <div class=\"card-header separator\">\n <div\n class=\"card-title\"\n translate\n >\n Currently installed\n </div>\n </div>\n <div class=\"card-block\">\n <c8y-operation-details\n [operation]=\"operation\"\n c8yProductExperience\n inherit\n suppressDataOverriding\n ></c8y-operation-details>\n </div>\n </div>\n </div>\n <div class=\"card--grid__inner-scroll d-col no-align-items\">\n <div class=\"d-contents\">\n <!-- FIRMWARE -->\n <c8y-device-tab-profile-detail\n class=\"d-contents\"\n [sectionIcon]=\"'c8y-firmware'\"\n [sectionTitle]=\"'Firmware' | translate\"\n [emptyStateText]=\"'No firmware to display.' | translate\"\n [emptyStateDetails]=\"'No firmware assigned.' | translate\"\n [isProfileSelected]=\"!!selectedProfile\"\n [items]=\"firmwareItems\"\n [isEmpty]=\"!selectedProfile?.c8y_DeviceProfile?.firmware?.name\"\n ></c8y-device-tab-profile-detail>\n </div>\n <div class=\"d-contents\">\n <!-- SOFTWARE -->\n <c8y-device-tab-profile-detail\n class=\"d-contents\"\n [sectionIcon]=\"'c8y-tools'\"\n [sectionTitle]=\"'Software' | translate\"\n [emptyStateText]=\"'No software to display.' | translate\"\n [emptyStateDetails]=\"'No software assigned.' | translate\"\n [isProfileSelected]=\"!!selectedProfile\"\n [items]=\"softwareItems\"\n [isEmpty]=\"\n !selectedProfile?.c8y_DeviceProfile?.software ||\n selectedProfile?.c8y_DeviceProfile?.software?.length === 0\n \"\n ></c8y-device-tab-profile-detail>\n </div>\n <div class=\"d-contents\">\n <!-- CONFIGURATION -->\n <c8y-device-tab-profile-detail\n class=\"d-contents\"\n [sectionIcon]=\"'gears'\"\n [sectionTitle]=\"'Configuration' | translate\"\n [emptyStateText]=\"'No configuration to display' | translate\"\n [emptyStateDetails]=\"'No configuration assigned' | translate\"\n [isProfileSelected]=\"!!selectedProfile\"\n [items]=\"configurationItems\"\n [isEmpty]=\"\n !selectedProfile?.c8y_DeviceProfile?.configuration ||\n selectedProfile?.c8y_DeviceProfile?.configuration?.length === 0\n \"\n ></c8y-device-tab-profile-detail>\n </div>\n <!-- fill in the remanining vertical space when empty -->\n <div class=\"card--grid grid__col--6-6--md flex-grow\">\n <div class=\"bg-level-0\"></div>\n <div class=\"bg-level-1\"></div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: RealtimeButtonComponent, selector: "c8y-realtime-btn", inputs: ["service", "label", "title", "disabled"], outputs: ["onToggle"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected", "title", "highlightFirstItem"], outputs: ["onSearch", "onIconClick"] }, { kind: "directive", type: ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "directive", type: ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "component", type: OperationDetailsComponent, selector: "c8y-operation-details", inputs: ["operation"] }, { kind: "component", type: DeviceTabProfileDetailComponent, selector: "c8y-device-tab-profile-detail", inputs: ["sectionTitle", "sectionIcon", "emptyStateText", "emptyStateDetails", "isProfileSelected", "isEmpty", "items", "showTextLabel"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
1067
1067
  }
1068
1068
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DeviceTabProfileComponent, decorators: [{
1069
1069
  type: Component,