@c8y/ngx-components 1019.2.4 → 1019.2.8

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 (167) hide show
  1. package/core/common/forOf.directive.d.ts +10 -1
  2. package/core/common/forOf.directive.d.ts.map +1 -1
  3. package/core/common/geo.service.d.ts +9 -0
  4. package/core/common/geo.service.d.ts.map +1 -0
  5. package/core/common/index.d.ts +1 -0
  6. package/core/common/index.d.ts.map +1 -1
  7. package/core/common/load-more.component.d.ts +1 -0
  8. package/core/common/load-more.component.d.ts.map +1 -1
  9. package/core/core.module.d.ts +50 -49
  10. package/core/core.module.d.ts.map +1 -1
  11. package/core/index.d.ts +1 -0
  12. package/core/index.d.ts.map +1 -1
  13. package/core/realtime/realtime-button.component.d.ts +5 -2
  14. package/core/realtime/realtime-button.component.d.ts.map +1 -1
  15. package/core/router/context-route.service.d.ts +6 -5
  16. package/core/router/context-route.service.d.ts.map +1 -1
  17. package/core/time-interval/index.d.ts +3 -0
  18. package/core/time-interval/index.d.ts.map +1 -0
  19. package/core/time-interval/time-interval.component.d.ts +26 -0
  20. package/core/time-interval/time-interval.component.d.ts.map +1 -0
  21. package/core/time-interval/time-interval.model.d.ts +33 -0
  22. package/core/time-interval/time-interval.model.d.ts.map +1 -0
  23. package/esm2022/context-dashboard/report-dashboard/report-dashboard-list.component.mjs +1 -1
  24. package/esm2022/core/audit-log/audit-log.component.mjs +1 -1
  25. package/esm2022/core/bootstrap/bootstrap.component.mjs +3 -3
  26. package/esm2022/core/common/forOf.directive.mjs +18 -2
  27. package/esm2022/core/common/geo.service.mjs +30 -0
  28. package/esm2022/core/common/index.mjs +2 -1
  29. package/esm2022/core/common/load-more.component.mjs +5 -2
  30. package/esm2022/core/core.module.mjs +11 -7
  31. package/esm2022/core/dynamic-forms/typeahead/typeahead.type.component.mjs +1 -1
  32. package/esm2022/core/index.mjs +2 -1
  33. package/esm2022/core/realtime/realtime-button.component.mjs +10 -4
  34. package/esm2022/core/router/context-route.service.mjs +10 -4
  35. package/esm2022/core/search/search-input.component.mjs +1 -1
  36. package/esm2022/core/time-interval/index.mjs +3 -0
  37. package/esm2022/core/time-interval/time-interval.component.mjs +85 -0
  38. package/esm2022/core/time-interval/time-interval.model.mjs +54 -0
  39. package/esm2022/datapoint-library/list/datapoint-library-list.component.mjs +2 -2
  40. package/esm2022/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.mjs +1 -1
  41. package/esm2022/device-profile/device-profile-list.component.mjs +1 -1
  42. package/esm2022/device-profile/device-tab-profile/device-tab-profile.component.mjs +1 -1
  43. package/esm2022/device-shell/shell/shell.component.mjs +1 -1
  44. package/esm2022/diagnostics/diagnostics.component.mjs +1 -1
  45. package/esm2022/ecosystem/applications/install-from-package/install-from-package.component.mjs +1 -1
  46. package/esm2022/ecosystem/shared/package-version-select/package-version-select.component.mjs +1 -1
  47. package/esm2022/location/location.component.mjs +1 -1
  48. package/esm2022/map/cluster-map.component.mjs +7 -7
  49. package/esm2022/map/map.component.mjs +92 -36
  50. package/esm2022/map/map.model.mjs +3 -2
  51. package/esm2022/operations/bulk-operations-list/bulk-operations-list.component.mjs +1 -1
  52. package/esm2022/operations/bulk-single-operations-list/single-operations-list.component.mjs +1 -1
  53. package/esm2022/operations/operations-list/operations-list.component.mjs +1 -1
  54. package/esm2022/operations/operations-timeline/operations-timeline.component.mjs +1 -1
  55. package/esm2022/operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.component.mjs +1 -1
  56. package/esm2022/operations/stepper-bulk-type-device-profile/select-device-profile-step.component.mjs +1 -1
  57. package/esm2022/operations/stepper-bulk-type-firmware/select-firmware.component.mjs +1 -1
  58. package/esm2022/operations/stepper-bulk-type-firmware/version-or-patch.component.mjs +1 -1
  59. package/esm2022/operations/stepper-bulk-type-software/select-software-step.component.mjs +1 -1
  60. package/esm2022/protocol-lpwan/lpwan-set-connections.component.mjs +1 -1
  61. package/esm2022/protocol-lpwan/lpwan-set-device-protocol.component.mjs +1 -1
  62. package/esm2022/repository/configuration/list/configuration-detail.component.mjs +1 -1
  63. package/esm2022/repository/configuration/list/configuration-list.component.mjs +1 -1
  64. package/esm2022/repository/firmware/list/add-firmware-modal.component.mjs +1 -1
  65. package/esm2022/repository/firmware/list/add-firmware-patch-modal.component.mjs +1 -1
  66. package/esm2022/repository/firmware/list/firmware-details.component.mjs +1 -1
  67. package/esm2022/repository/firmware/list/firmware-list.component.mjs +1 -1
  68. package/esm2022/repository/shared/software-type/software-type.component.mjs +1 -1
  69. package/esm2022/repository/software/device-tab/device-software-list.component.mjs +1 -1
  70. package/esm2022/repository/software/list/add-software-modal.component.mjs +1 -1
  71. package/esm2022/repository/software/list/columns/software-type.filtering-form-renderer.component.mjs +1 -1
  72. package/esm2022/repository/software/list/software-details.component.mjs +1 -1
  73. package/esm2022/sub-assets/location/asset-location.component.mjs +1 -1
  74. package/esm2022/tracking/c8y-ngx-components-tracking.mjs +5 -0
  75. package/esm2022/tracking/index.mjs +6 -0
  76. package/esm2022/tracking/tracking-marker-popup.component.mjs +34 -0
  77. package/esm2022/tracking/tracking-tab.guard.mjs +25 -0
  78. package/esm2022/tracking/tracking.component.mjs +92 -0
  79. package/esm2022/tracking/tracking.feature.mjs +16 -0
  80. package/esm2022/tracking/tracking.service.mjs +124 -0
  81. package/esm2022/trusted-certificates/crl/crl-settings.component.mjs +5 -5
  82. package/esm2022/trusted-certificates/list/trusted-certificate-list.component.mjs +1 -1
  83. package/esm2022/widgets/implementations/map/map-widget-config.component.mjs +2 -2
  84. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +1 -1
  85. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  86. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs +1 -1
  87. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs.map +1 -1
  88. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +1 -1
  89. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  90. package/fesm2022/c8y-ngx-components-device-profile.mjs +2 -2
  91. package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
  92. package/fesm2022/c8y-ngx-components-device-shell.mjs +1 -1
  93. package/fesm2022/c8y-ngx-components-device-shell.mjs.map +1 -1
  94. package/fesm2022/c8y-ngx-components-diagnostics.mjs +1 -1
  95. package/fesm2022/c8y-ngx-components-diagnostics.mjs.map +1 -1
  96. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +1 -1
  97. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  98. package/fesm2022/c8y-ngx-components-ecosystem.mjs +1 -1
  99. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  100. package/fesm2022/c8y-ngx-components-location.mjs +1 -1
  101. package/fesm2022/c8y-ngx-components-location.mjs.map +1 -1
  102. package/fesm2022/c8y-ngx-components-map.mjs +95 -38
  103. package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
  104. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs +1 -1
  105. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
  106. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs +1 -1
  107. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs.map +1 -1
  108. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +1 -1
  109. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
  110. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs +1 -1
  111. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs.map +1 -1
  112. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +1 -1
  113. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs.map +1 -1
  114. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +1 -1
  115. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs.map +1 -1
  116. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +2 -2
  117. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs.map +1 -1
  118. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +1 -1
  119. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs.map +1 -1
  120. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +2 -2
  121. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs.map +1 -1
  122. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +2 -2
  123. package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  124. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +4 -4
  125. package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
  126. package/fesm2022/c8y-ngx-components-repository-shared.mjs +1 -1
  127. package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
  128. package/fesm2022/c8y-ngx-components-repository-software.mjs +4 -4
  129. package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
  130. package/fesm2022/c8y-ngx-components-sub-assets.mjs +1 -1
  131. package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
  132. package/fesm2022/c8y-ngx-components-tracking.mjs +271 -0
  133. package/fesm2022/c8y-ngx-components-tracking.mjs.map +1 -0
  134. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +5 -5
  135. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  136. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +1 -1
  137. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  138. package/fesm2022/c8y-ngx-components.mjs +204 -16
  139. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  140. package/locales/de.po +158 -83
  141. package/locales/en.po +6 -0
  142. package/locales/fr.po +342 -186
  143. package/locales/locales.pot +34 -28
  144. package/locales/nl.po +326 -170
  145. package/locales/pt_BR.po +342 -186
  146. package/map/cluster-map.component.d.ts +3 -3
  147. package/map/cluster-map.component.d.ts.map +1 -1
  148. package/map/map.component.d.ts +17 -7
  149. package/map/map.component.d.ts.map +1 -1
  150. package/map/map.model.d.ts +14 -6
  151. package/map/map.model.d.ts.map +1 -1
  152. package/package.json +1 -1
  153. package/tracking/c8y-ngx-components-tracking.d.ts.map +1 -0
  154. package/tracking/index.d.ts +6 -0
  155. package/tracking/index.d.ts.map +1 -0
  156. package/tracking/tracking-marker-popup.component.d.ts +17 -0
  157. package/tracking/tracking-marker-popup.component.d.ts.map +1 -0
  158. package/tracking/tracking-tab.guard.d.ts +12 -0
  159. package/tracking/tracking-tab.guard.d.ts.map +1 -0
  160. package/tracking/tracking.component.d.ts +33 -0
  161. package/tracking/tracking.component.d.ts.map +1 -0
  162. package/tracking/tracking.feature.d.ts +3 -0
  163. package/tracking/tracking.feature.d.ts.map +1 -0
  164. package/tracking/tracking.service.d.ts +38 -0
  165. package/tracking/tracking.service.d.ts.map +1 -0
  166. package/trusted-certificates/crl/crl-settings.component.d.ts +1 -1
  167. package/trusted-certificates/crl/crl-settings.component.d.ts.map +1 -1
@@ -683,7 +683,7 @@ class DeviceProfileListComponent {
683
683
  provide: PRODUCT_EXPERIENCE_EVENT_SOURCE,
684
684
  useExisting: forwardRef(() => DeviceProfileListComponent)
685
685
  }
686
- ], ngImport: i0, template: "<c8y-title>{{ 'Device profiles' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n icon=\"c8y-management\"\n label=\"{{ 'Management' | translate }}\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n icon=\"c8y-device-profile\"\n label=\"{{ 'Device profiles' | 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 device profile' | translate }}\"\n (click)=\"createDeviceProfile()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add device profile' | translate }}\n </button>\n</c8y-action-bar-item>\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n (click)=\"loadDeviceProfiles()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reloading }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/device-management-application/managing-device-data/#managing-device-profiles\"\n></c8y-help>\n\n<c8y-ui-empty-state\n [icon]=\"'c8y-device-profile'\"\n [title]=\"'No device profiles available.' | translate\"\n [subtitle]=\"'Add a new device profile by clicking below.' | translate\"\n *ngIf=\"(deviceProfiles$ | async)?.data.length === 0\"\n>\n <p>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add device profile' | translate }}\"\n (click)=\"createDeviceProfile()\"\n >\n {{ 'Add device profile' | translate }}\n </button>\n </p>\n</c8y-ui-empty-state>\n\n<!-- DEVICE PROFILES LIST -->\n<c8y-list-group class=\"m-b-24\">\n <c8y-li\n class=\"page-sticky-header hidden-xs\"\n [emptyActions]=\"true\"\n *ngIf=\"(deviceProfiles$ | async)?.data.length > 0\"\n >\n <c8y-li-icon>\n <i class=\"p-l-24\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-50\">\n <div class=\"col-6\">\n {{ 'Device profile' | translate }}\n </div>\n <div class=\"col-6\">\n {{ 'Device type' | translate }}\n </div>\n </c8y-li-body>\n </c8y-li>\n <c8y-li *c8yFor=\"let deviceProfile of deviceProfiles$\">\n <c8y-li-icon>\n <i c8yIcon=\"c8y-device-profile\"></i>\n </c8y-li-icon>\n\n <c8y-li-body class=\"content-flex-50\">\n <div\n class=\"col-6\"\n title=\"{{ deviceProfile.name }}\"\n >\n <button\n class=\"btn-clean max-width-inherit\"\n routerLink=\"/device-profiles/{{ deviceProfile.id }}\"\n >\n <span class=\"text-truncate\">\n {{ deviceProfile.name }}\n </span>\n </button>\n </div>\n <div\n class=\"col-6\"\n title=\"{{ deviceProfile.c8y_Filter?.type || '-' }}\"\n >\n <span\n class=\"text-label-small m-r-4 visible-xs\"\n translate\n >\n Device type\n </span>\n <span\n class=\"text-truncate\"\n *ngIf=\"deviceProfile.c8y_Filter?.type; else emptyText\"\n >\n {{ deviceProfile.c8y_Filter?.type }}\n </span>\n </div>\n <ng-template #emptyText>\n <small class=\"text-muted\">\n <em>\n {{ 'Undefined' | translate }}\n </em>\n </small>\n </ng-template>\n </c8y-li-body>\n\n <c8y-li-action\n icon=\"pencil\"\n routerLink=\"/device-profiles/{{ deviceProfile.id }}\"\n label=\"{{ 'Edit' | translate }}\"\n data-cy=\"device-profile-list--edit\"\n c8yProductExperience\n inherit\n ></c8y-li-action>\n <c8y-li-action\n icon=\"copy\"\n (click)=\"duplicateDeviceProfile(deviceProfile)\"\n data-cy=\"device-profile-list--duplicate\"\n label=\"{{ 'Duplicate' | translate }}\"\n c8yProductExperience\n inherit\n ></c8y-li-action>\n <c8y-li-action\n icon=\"delete\"\n (click)=\"deleteDeviceProfile(deviceProfile)\"\n data-cy=\"device-profile-list--delete\"\n label=\"{{ 'Delete' | translate }}\"\n c8yProductExperience\n inherit\n ></c8y-li-action>\n </c8y-li>\n</c8y-list-group>\n", dependencies: [{ kind: "component", type: i3.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { 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: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount"] }, { kind: "component", type: i3.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i3.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i3.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i3.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i3.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i3.ListItemActionComponent, selector: "c8y-list-item-action, c8y-li-action", inputs: ["label", "icon", "disabled"], outputs: ["click"] }, { kind: "directive", type: i3.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "component", type: i3.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
686
+ ], ngImport: i0, template: "<c8y-title>{{ 'Device profiles' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n icon=\"c8y-management\"\n label=\"{{ 'Management' | translate }}\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n icon=\"c8y-device-profile\"\n label=\"{{ 'Device profiles' | 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 device profile' | translate }}\"\n (click)=\"createDeviceProfile()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add device profile' | translate }}\n </button>\n</c8y-action-bar-item>\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n (click)=\"loadDeviceProfiles()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reloading }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/device-management-application/managing-device-data/#managing-device-profiles\"\n></c8y-help>\n\n<c8y-ui-empty-state\n [icon]=\"'c8y-device-profile'\"\n [title]=\"'No device profiles available.' | translate\"\n [subtitle]=\"'Add a new device profile by clicking below.' | translate\"\n *ngIf=\"(deviceProfiles$ | async)?.data.length === 0\"\n>\n <p>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add device profile' | translate }}\"\n (click)=\"createDeviceProfile()\"\n >\n {{ 'Add device profile' | translate }}\n </button>\n </p>\n</c8y-ui-empty-state>\n\n<!-- DEVICE PROFILES LIST -->\n<c8y-list-group class=\"m-b-24\">\n <c8y-li\n class=\"page-sticky-header hidden-xs\"\n [emptyActions]=\"true\"\n *ngIf=\"(deviceProfiles$ | async)?.data.length > 0\"\n >\n <c8y-li-icon>\n <i class=\"p-l-24\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-50\">\n <div class=\"col-6\">\n {{ 'Device profile' | translate }}\n </div>\n <div class=\"col-6\">\n {{ 'Device type' | translate }}\n </div>\n </c8y-li-body>\n </c8y-li>\n <c8y-li *c8yFor=\"let deviceProfile of deviceProfiles$\">\n <c8y-li-icon>\n <i c8yIcon=\"c8y-device-profile\"></i>\n </c8y-li-icon>\n\n <c8y-li-body class=\"content-flex-50\">\n <div\n class=\"col-6\"\n title=\"{{ deviceProfile.name }}\"\n >\n <button\n class=\"btn-clean max-width-inherit\"\n routerLink=\"/device-profiles/{{ deviceProfile.id }}\"\n >\n <span class=\"text-truncate\">\n {{ deviceProfile.name }}\n </span>\n </button>\n </div>\n <div\n class=\"col-6\"\n title=\"{{ deviceProfile.c8y_Filter?.type || '-' }}\"\n >\n <span\n class=\"text-label-small m-r-4 visible-xs\"\n translate\n >\n Device type\n </span>\n <span\n class=\"text-truncate\"\n *ngIf=\"deviceProfile.c8y_Filter?.type; else emptyText\"\n >\n {{ deviceProfile.c8y_Filter?.type }}\n </span>\n </div>\n <ng-template #emptyText>\n <small class=\"text-muted\">\n <em>\n {{ 'Undefined' | translate }}\n </em>\n </small>\n </ng-template>\n </c8y-li-body>\n\n <c8y-li-action\n icon=\"pencil\"\n routerLink=\"/device-profiles/{{ deviceProfile.id }}\"\n label=\"{{ 'Edit' | translate }}\"\n data-cy=\"device-profile-list--edit\"\n c8yProductExperience\n inherit\n ></c8y-li-action>\n <c8y-li-action\n icon=\"copy\"\n (click)=\"duplicateDeviceProfile(deviceProfile)\"\n data-cy=\"device-profile-list--duplicate\"\n label=\"{{ 'Duplicate' | translate }}\"\n c8yProductExperience\n inherit\n ></c8y-li-action>\n <c8y-li-action\n icon=\"delete\"\n (click)=\"deleteDeviceProfile(deviceProfile)\"\n data-cy=\"device-profile-list--delete\"\n label=\"{{ 'Delete' | translate }}\"\n c8yProductExperience\n inherit\n ></c8y-li-action>\n </c8y-li>\n</c8y-list-group>\n", dependencies: [{ kind: "component", type: i3.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { 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: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForLoadMoreComponent"] }, { kind: "component", type: i3.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i3.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i3.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i3.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i3.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i3.ListItemActionComponent, selector: "c8y-list-item-action, c8y-li-action", inputs: ["label", "icon", "disabled"], outputs: ["click"] }, { kind: "directive", type: i3.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "component", type: i3.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
687
687
  }
688
688
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DeviceProfileListComponent, decorators: [{
689
689
  type: Component,
@@ -850,7 +850,7 @@ class DeviceTabProfileComponent {
850
850
  provide: PRODUCT_EXPERIENCE_EVENT_SOURCE,
851
851
  useExisting: forwardRef(() => DeviceTabProfileComponent)
852
852
  }
853
- ], 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)=\"getDeviceProfilesAndUpdateProfileItems()\"\n >\n <i c8yIcon=\"refresh\" [ngClass]=\"{ 'icon-spin': reloading }\"></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 class=\"card-title\" translate>Device profile</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 name=\"selectProfile\"\n data-cy=\"device-tab-profile--select-device-profile\"\n [(ngModel)]=\"selectedProfile\"\n placeholder=\"{{ 'Select device profile' | translate }}\"\n (onSearch)=\"setPipe($event)\"\n [allowFreeEntries]=\"false\"\n >\n <c8y-li\n *c8yFor=\"let profile of deviceProfiles; pipe: filterPipe\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"selectProfile(profile); setPipe('')\"\n >\n <c8y-highlight\n [text]=\"profile.name || '&#45;&#45;'\"\n [pattern]=\"pattern\"\n ></c8y-highlight>\n </c8y-li>\n </c8y-typeahead>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-primary\"\n (click)=\"createOperation()\"\n title=\"{{ 'Assign device profile' | translate }}\"\n type=\"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 class=\"card-title\" translate>Currently installed</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 [sectionTitle]=\"'Firmware' | translate\"\n [sectionIcon]=\"'c8y-firmware'\"\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 class=\"d-contents\"\n ></c8y-device-tab-profile-detail>\n </div>\n <div class=\"d-contents\">\n <!-- SOFTWARE -->\n <c8y-device-tab-profile-detail\n [sectionTitle]=\"'Software' | translate\"\n [sectionIcon]=\"'c8y-tools'\"\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 class=\"d-contents\"\n ></c8y-device-tab-profile-detail>\n </div>\n <div class=\"d-contents\">\n <!-- CONFIGURATION -->\n <c8y-device-tab-profile-detail\n [sectionTitle]=\"'Configuration' | translate\"\n [sectionIcon]=\"'gears'\"\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 [showTextLabel]=\"false\"\n class=\"d-contents\"\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: i3.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount"] }, { kind: "component", type: i3.HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "component", type: i3.TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected"], outputs: ["onSearch", "onIconClick"] }, { 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: i3.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "directive", type: i3.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "component", type: i3.RealtimeButtonComponent, selector: "c8y-realtime-btn", inputs: ["service", "label", "title"] }, { kind: "component", type: i6.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: i3.C8yTranslatePipe, name: "translate" }] }); }
853
+ ], 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)=\"getDeviceProfilesAndUpdateProfileItems()\"\n >\n <i c8yIcon=\"refresh\" [ngClass]=\"{ 'icon-spin': reloading }\"></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 class=\"card-title\" translate>Device profile</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 name=\"selectProfile\"\n data-cy=\"device-tab-profile--select-device-profile\"\n [(ngModel)]=\"selectedProfile\"\n placeholder=\"{{ 'Select device profile' | translate }}\"\n (onSearch)=\"setPipe($event)\"\n [allowFreeEntries]=\"false\"\n >\n <c8y-li\n *c8yFor=\"let profile of deviceProfiles; pipe: filterPipe\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"selectProfile(profile); setPipe('')\"\n >\n <c8y-highlight\n [text]=\"profile.name || '&#45;&#45;'\"\n [pattern]=\"pattern\"\n ></c8y-highlight>\n </c8y-li>\n </c8y-typeahead>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-primary\"\n (click)=\"createOperation()\"\n title=\"{{ 'Assign device profile' | translate }}\"\n type=\"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 class=\"card-title\" translate>Currently installed</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 [sectionTitle]=\"'Firmware' | translate\"\n [sectionIcon]=\"'c8y-firmware'\"\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 class=\"d-contents\"\n ></c8y-device-tab-profile-detail>\n </div>\n <div class=\"d-contents\">\n <!-- SOFTWARE -->\n <c8y-device-tab-profile-detail\n [sectionTitle]=\"'Software' | translate\"\n [sectionIcon]=\"'c8y-tools'\"\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 class=\"d-contents\"\n ></c8y-device-tab-profile-detail>\n </div>\n <div class=\"d-contents\">\n <!-- CONFIGURATION -->\n <c8y-device-tab-profile-detail\n [sectionTitle]=\"'Configuration' | translate\"\n [sectionIcon]=\"'gears'\"\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 [showTextLabel]=\"false\"\n class=\"d-contents\"\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: i3.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForLoadMoreComponent"] }, { kind: "component", type: i3.HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "component", type: i3.TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected"], outputs: ["onSearch", "onIconClick"] }, { 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: i3.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "directive", type: i3.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "component", type: i3.RealtimeButtonComponent, selector: "c8y-realtime-btn", inputs: ["service", "label", "title", "disabled"], outputs: ["onToggle"] }, { kind: "component", type: i6.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: i3.C8yTranslatePipe, name: "translate" }] }); }
854
854
  }
855
855
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DeviceTabProfileComponent, decorators: [{
856
856
  type: Component,