@c8y/ngx-components 1022.35.1 → 1022.44.3

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 (920) hide show
  1. package/actility-device-registration/actility-device-registration.component.d.ts.map +1 -1
  2. package/actility-device-registration/actility-device-registration.service.d.ts.map +1 -1
  3. package/alarms/alarm-details.component.d.ts.map +1 -1
  4. package/alarms/alarm-info.component.d.ts.map +1 -1
  5. package/alarms/alarm-severity-to-icon-class.pipe.d.ts +9 -0
  6. package/alarms/alarm-severity-to-icon-class.pipe.d.ts.map +1 -0
  7. package/alarms/alarms-icon.component.d.ts.map +1 -1
  8. package/alarms/alarms-interval-refresh.component.d.ts.map +1 -1
  9. package/alarms/alarms-list.component.d.ts.map +1 -1
  10. package/alarms/alarms-view.service.d.ts.map +1 -1
  11. package/alarms/alarms.component.d.ts.map +1 -1
  12. package/alarms/alarms.helper.d.ts.map +1 -1
  13. package/alarms/alarms.model.d.ts.map +1 -1
  14. package/alarms/cockpit/index.d.ts.map +1 -1
  15. package/alarms/devicemanagement/index.d.ts.map +1 -1
  16. package/alarms/index.d.ts +1 -0
  17. package/alarms/index.d.ts.map +1 -1
  18. package/asset-properties/asset-properties.model.d.ts +77 -1
  19. package/asset-properties/asset-properties.model.d.ts.map +1 -1
  20. package/asset-properties/asset-properties.service.d.ts +17 -0
  21. package/asset-properties/asset-properties.service.d.ts.map +1 -1
  22. package/asset-properties/asset-property-list/asset-property-collapse-button-title.pipe.d.ts +14 -0
  23. package/asset-properties/asset-property-list/asset-property-collapse-button-title.pipe.d.ts.map +1 -0
  24. package/asset-properties/asset-property-list/asset-property-icon.pipe.d.ts +2 -1
  25. package/asset-properties/asset-property-list/asset-property-icon.pipe.d.ts.map +1 -1
  26. package/asset-properties/asset-property-list/asset-property-list.component.d.ts +52 -13
  27. package/asset-properties/asset-property-list/asset-property-list.component.d.ts.map +1 -1
  28. package/asset-properties/asset-property-list/asset-property-value.pipe.d.ts +7 -3
  29. package/asset-properties/asset-property-list/asset-property-value.pipe.d.ts.map +1 -1
  30. package/asset-properties/asset-property-list/tree-data-source.d.ts +1 -0
  31. package/asset-properties/asset-property-list/tree-data-source.d.ts.map +1 -1
  32. package/asset-properties/asset-property-selector-drawer/asset-property-selector-drawer.component.d.ts.map +1 -1
  33. package/asset-properties/computed-properties-config/computed-properties-config.component.d.ts +39 -0
  34. package/asset-properties/computed-properties-config/computed-properties-config.component.d.ts.map +1 -0
  35. package/asset-properties/computed-properties.service.d.ts +27 -0
  36. package/asset-properties/computed-properties.service.d.ts.map +1 -0
  37. package/asset-properties/custom-properties-drawer/custom-properties-drawer.component.d.ts +11 -6
  38. package/asset-properties/custom-properties-drawer/custom-properties-drawer.component.d.ts.map +1 -1
  39. package/asset-properties/custom-properties-drawer.service.d.ts +2 -1
  40. package/asset-properties/custom-properties-drawer.service.d.ts.map +1 -1
  41. package/asset-properties/index.d.ts +1 -0
  42. package/asset-properties/index.d.ts.map +1 -1
  43. package/assets-navigator/asset-node.d.ts.map +1 -1
  44. package/assets-navigator/asset-node.service.d.ts.map +1 -1
  45. package/assets-navigator/asset-selector/asset-selector-node.component.d.ts.map +1 -1
  46. package/assets-navigator/asset-selector/asset-selector.model.d.ts +1 -2
  47. package/assets-navigator/asset-selector/asset-selector.model.d.ts.map +1 -1
  48. package/assets-navigator/asset-selector/miller-view.component.d.ts +17 -5
  49. package/assets-navigator/asset-selector/miller-view.component.d.ts.map +1 -1
  50. package/assets-navigator/asset-selector/unassigned-devices-node.d.ts.map +1 -1
  51. package/assets-navigator/load-more-node.d.ts.map +1 -1
  52. package/auth-configuration/basic-settings/login-settings.component.d.ts.map +1 -1
  53. package/auth-configuration/basic-settings/session-configuration.component.d.ts.map +1 -1
  54. package/auth-configuration/factories/navigation.factory.d.ts.map +1 -1
  55. package/auth-configuration/factories/tabs.factory.d.ts.map +1 -1
  56. package/auth-configuration/sso-configuration/sso-configuration.component.d.ts.map +1 -1
  57. package/auth-configuration/sso-configuration/template-parts/access-mapping/inventory-roles-modal.component.d.ts.map +1 -1
  58. package/auth-configuration/sso-configuration/template-parts/signature-configuration.component.d.ts.map +1 -1
  59. package/auth-configuration/sso-configuration/template-parts/user-data-mapping.component.d.ts.map +1 -1
  60. package/binary-file-download/binary-file-download.service.d.ts.map +1 -1
  61. package/bookmarks/bookmarks.component.d.ts.map +1 -1
  62. package/bookmarks/bookmarks.service.d.ts.map +1 -1
  63. package/bookmarks/edit-bookmarks/edit-bookmarks.component.d.ts.map +1 -1
  64. package/branding/dark-theme/dark-theme-tab.factory.d.ts.map +1 -1
  65. package/branding/extra-css-branding-editor/extra-css-branding-editor-tab.factory.d.ts.map +1 -1
  66. package/branding/plain-branding-editor/plain-branding-editor-tab.factory.d.ts.map +1 -1
  67. package/branding/shared/lazy/branding-form/branding-form.component.d.ts.map +1 -1
  68. package/branding/shared/lazy/branding-import-modal/branding-import-modal.component.d.ts.map +1 -1
  69. package/branding/shared/lazy/edit-branding-router-outlet/edit-branding-router-outlet.component.d.ts.map +1 -1
  70. package/cockpit-config/cockpit-config.guard.d.ts.map +1 -1
  71. package/cockpit-config/cockpit-configuration.component.d.ts.map +1 -1
  72. package/computed-asset-properties/alarm-count/alarm-count-3-months-computed-property.d.ts +8 -0
  73. package/computed-asset-properties/alarm-count/alarm-count-3-months-computed-property.d.ts.map +1 -0
  74. package/computed-asset-properties/alarm-count/alarm-count-config.component.d.ts +26 -0
  75. package/computed-asset-properties/alarm-count/alarm-count-config.component.d.ts.map +1 -0
  76. package/computed-asset-properties/alarm-count/alarm-count-today-computed-property.d.ts +8 -0
  77. package/computed-asset-properties/alarm-count/alarm-count-today-computed-property.d.ts.map +1 -0
  78. package/computed-asset-properties/alarm-count/alarm-count-value.d.ts +17 -0
  79. package/computed-asset-properties/alarm-count/alarm-count-value.d.ts.map +1 -0
  80. package/computed-asset-properties/alarm-count/alarm-count.model.d.ts +6 -0
  81. package/computed-asset-properties/alarm-count/alarm-count.model.d.ts.map +1 -0
  82. package/computed-asset-properties/c8y-ngx-components-computed-asset-properties.d.ts.map +1 -0
  83. package/computed-asset-properties/child-count/child-assets-count-computed-property.d.ts +14 -0
  84. package/computed-asset-properties/child-count/child-assets-count-computed-property.d.ts.map +1 -0
  85. package/computed-asset-properties/child-count/child-count-value.d.ts +14 -0
  86. package/computed-asset-properties/child-count/child-count-value.d.ts.map +1 -0
  87. package/computed-asset-properties/child-count/child-devices-count-computed-property.d.ts +14 -0
  88. package/computed-asset-properties/child-count/child-devices-count-computed-property.d.ts.map +1 -0
  89. package/computed-asset-properties/common/realtime-value-base.d.ts +32 -0
  90. package/computed-asset-properties/common/realtime-value-base.d.ts.map +1 -0
  91. package/computed-asset-properties/common/realtime-value-handler.d.ts +19 -0
  92. package/computed-asset-properties/common/realtime-value-handler.d.ts.map +1 -0
  93. package/computed-asset-properties/configuration-snapshot/configuration-snapshot-computed-property.d.ts +7 -0
  94. package/computed-asset-properties/configuration-snapshot/configuration-snapshot-computed-property.d.ts.map +1 -0
  95. package/computed-asset-properties/configuration-snapshot/configuration-snapshot-config.component.d.ts +21 -0
  96. package/computed-asset-properties/configuration-snapshot/configuration-snapshot-config.component.d.ts.map +1 -0
  97. package/computed-asset-properties/configuration-snapshot/configuration-snapshot.model.d.ts +8 -0
  98. package/computed-asset-properties/configuration-snapshot/configuration-snapshot.model.d.ts.map +1 -0
  99. package/computed-asset-properties/event-count/event-count-3-months.d.ts +8 -0
  100. package/computed-asset-properties/event-count/event-count-3-months.d.ts.map +1 -0
  101. package/computed-asset-properties/event-count/event-count-config.component.d.ts +18 -0
  102. package/computed-asset-properties/event-count/event-count-config.component.d.ts.map +1 -0
  103. package/computed-asset-properties/event-count/event-count-today.d.ts +8 -0
  104. package/computed-asset-properties/event-count/event-count-today.d.ts.map +1 -0
  105. package/computed-asset-properties/event-count/event-count-value.d.ts +17 -0
  106. package/computed-asset-properties/event-count/event-count-value.d.ts.map +1 -0
  107. package/computed-asset-properties/event-count/event-count.model.d.ts +4 -0
  108. package/computed-asset-properties/event-count/event-count.model.d.ts.map +1 -0
  109. package/computed-asset-properties/index.d.ts +3 -0
  110. package/computed-asset-properties/index.d.ts.map +1 -0
  111. package/computed-asset-properties/last-device-message/last-device-message-computed-property.d.ts +3 -0
  112. package/computed-asset-properties/last-device-message/last-device-message-computed-property.d.ts.map +1 -0
  113. package/computed-asset-properties/last-device-message/last-device-message-value.d.ts +13 -0
  114. package/computed-asset-properties/last-device-message/last-device-message-value.d.ts.map +1 -0
  115. package/computed-asset-properties/last-measurement/last-measurement-computed-property.d.ts +8 -0
  116. package/computed-asset-properties/last-measurement/last-measurement-computed-property.d.ts.map +1 -0
  117. package/computed-asset-properties/last-measurement/last-measurement-config.component.d.ts +48 -0
  118. package/computed-asset-properties/last-measurement/last-measurement-config.component.d.ts.map +1 -0
  119. package/computed-asset-properties/last-measurement/last-measurement-value.d.ts +13 -0
  120. package/computed-asset-properties/last-measurement/last-measurement-value.d.ts.map +1 -0
  121. package/computed-asset-properties/last-measurement/last-measurement.model.d.ts +28 -0
  122. package/computed-asset-properties/last-measurement/last-measurement.model.d.ts.map +1 -0
  123. package/computed-asset-properties/strategies/alarm-count-strategy.d.ts +17 -0
  124. package/computed-asset-properties/strategies/alarm-count-strategy.d.ts.map +1 -0
  125. package/computed-asset-properties/strategies/child-count-strategy.d.ts +14 -0
  126. package/computed-asset-properties/strategies/child-count-strategy.d.ts.map +1 -0
  127. package/computed-asset-properties/strategies/count-strategy-base.d.ts +12 -0
  128. package/computed-asset-properties/strategies/count-strategy-base.d.ts.map +1 -0
  129. package/computed-asset-properties/strategies/event-count-strategy.d.ts +16 -0
  130. package/computed-asset-properties/strategies/event-count-strategy.d.ts.map +1 -0
  131. package/computed-asset-properties/strategies/last-device-message-strategy.d.ts +20 -0
  132. package/computed-asset-properties/strategies/last-device-message-strategy.d.ts.map +1 -0
  133. package/computed-asset-properties/strategies/last-measurement-strategy.d.ts +16 -0
  134. package/computed-asset-properties/strategies/last-measurement-strategy.d.ts.map +1 -0
  135. package/connectivity/abstract-connectivity-node.factory.d.ts.map +1 -1
  136. package/connectivity/actility/actility-tab.factory.d.ts.map +1 -1
  137. package/connectivity/sigfox/sigfox-tab.factory.d.ts.map +1 -1
  138. package/connectivity/sim/sim.module.d.ts.map +1 -1
  139. package/context-dashboard/cockpit-home-dashboard/cockpit-dashboard.component.d.ts.map +1 -1
  140. package/context-dashboard/cockpit-home-dashboard/cockpit-dashboard.model.d.ts.map +1 -1
  141. package/context-dashboard/cockpit-home-dashboard/cockpit-dashboard.module.d.ts.map +1 -1
  142. package/context-dashboard/context-dashboard.component.d.ts.map +1 -1
  143. package/context-dashboard/context-dashboard.model.d.ts +16 -0
  144. package/context-dashboard/context-dashboard.model.d.ts.map +1 -1
  145. package/context-dashboard/context-dashboard.service.d.ts.map +1 -1
  146. package/context-dashboard/dashboard-detail.component.d.ts.map +1 -1
  147. package/context-dashboard/dashboard-detail.service.d.ts.map +1 -1
  148. package/context-dashboard/dashboard-details-tabs.factory.d.ts.map +1 -1
  149. package/context-dashboard/dashboard-settings/dashboard-general-settings.component.d.ts.map +1 -1
  150. package/context-dashboard/dashboard-settings/dashboard-version-history.component.d.ts.map +1 -1
  151. package/context-dashboard/dashboard-settings/typed-dashboard-settings.component.d.ts.map +1 -1
  152. package/context-dashboard/device-info-dashboard/device-info-dashboard.component.d.ts.map +1 -1
  153. package/context-dashboard/device-info-dashboard/device-info-dashboard.module.d.ts.map +1 -1
  154. package/context-dashboard/device-management-home-dashboard/device-management-home-dashboard.component.d.ts.map +1 -1
  155. package/context-dashboard/device-management-home-dashboard/device-management-home-dashboard.module.d.ts.map +1 -1
  156. package/context-dashboard/new-dashboard.guard.d.ts.map +1 -1
  157. package/context-dashboard/widget-config/appearance-settings.component.d.ts.map +1 -1
  158. package/context-dashboard/widget-config.service.d.ts +11 -1
  159. package/context-dashboard/widget-config.service.d.ts.map +1 -1
  160. package/core/action/action.service.d.ts +1 -1
  161. package/core/action-bar/action-bar.service.d.ts +1 -1
  162. package/core/authentication/simplified-auth.service.d.ts +1 -1
  163. package/core/authentication/simplified-auth.service.d.ts.map +1 -1
  164. package/core/breadcrumb/breadcrumb.service.d.ts +1 -1
  165. package/core/common/extension-hooks.d.ts.map +1 -1
  166. package/core/common/options.service.d.ts +1 -1
  167. package/core/common/service-registry.service.d.ts +1 -1
  168. package/core/common/ui-state.service.d.ts +7 -7
  169. package/core/common/ui-state.service.d.ts.map +1 -1
  170. package/core/common/user-preferences/user-preferences.service.d.ts +4 -4
  171. package/core/common/user-preferences/user-preferences.service.d.ts.map +1 -1
  172. package/core/dashboard/widgets-dashboard.component.d.ts +1 -1
  173. package/core/dashboard/widgets-dashboard.component.d.ts.map +1 -1
  174. package/core/data-grid/action-controls-extension.service.d.ts +1 -1
  175. package/core/data-grid/filter-chip/filter-mapper.factory.d.ts +1 -1
  176. package/core/date-picker/date-picker.component.d.ts.map +1 -1
  177. package/core/docs/docs.models.d.ts +1 -1
  178. package/core/docs/docs.module.d.ts +1 -1
  179. package/core/docs/help-and-support-outlet/help-and-support-outlet.module.d.ts +1 -1
  180. package/core/docs/legal-notices-outlet/legal-notices-outlet.module.d.ts +1 -1
  181. package/core/docs/support-outlet/support-outlet.component.d.ts +4 -3
  182. package/core/docs/support-outlet/support-outlet.component.d.ts.map +1 -1
  183. package/core/docs/support-outlet/support-outlet.module.d.ts +1 -1
  184. package/core/drawer/drawer.service.d.ts +1 -1
  185. package/core/dynamic-component/dynamic-component.model.d.ts +18 -4
  186. package/core/dynamic-component/dynamic-component.model.d.ts.map +1 -1
  187. package/core/dynamic-forms/i18n/translate.extension.d.ts.map +1 -1
  188. package/core/feedback-form/feedback-form.component.d.ts +27 -0
  189. package/core/feedback-form/feedback-form.component.d.ts.map +1 -0
  190. package/core/feedback-form/feedback-form.model.d.ts +6 -0
  191. package/core/feedback-form/feedback-form.model.d.ts.map +1 -0
  192. package/core/feedback-form/index.d.ts +2 -0
  193. package/core/feedback-form/index.d.ts.map +1 -0
  194. package/core/i18n/gettext.d.ts +4 -1
  195. package/core/i18n/gettext.d.ts.map +1 -1
  196. package/core/i18n/pattern-messages.data.d.ts +61 -0
  197. package/core/i18n/pattern-messages.data.d.ts.map +1 -1
  198. package/core/i18n/patterns-message.hook.d.ts +1 -1
  199. package/core/index.d.ts +1 -0
  200. package/core/index.d.ts.map +1 -1
  201. package/core/modal/modal.service.d.ts +0 -1
  202. package/core/modal/modal.service.d.ts.map +1 -1
  203. package/core/navigator/navigator-bottom/navigator-bottom.module.d.ts +1 -1
  204. package/core/navigator/navigator-top/navigator-top.module.d.ts +1 -1
  205. package/core/navigator/navigator.module.d.ts +1 -1
  206. package/core/navigator/navigator.service.d.ts +1 -1
  207. package/core/plugins/index.d.ts +1 -0
  208. package/core/plugins/index.d.ts.map +1 -1
  209. package/core/plugins/plugins-injection-token.d.ts +14 -0
  210. package/core/plugins/plugins-injection-token.d.ts.map +1 -0
  211. package/core/plugins/plugins-loader.service.d.ts +7 -21
  212. package/core/plugins/plugins-loader.service.d.ts.map +1 -1
  213. package/core/plugins/plugins-resolve.service.d.ts +1 -0
  214. package/core/plugins/plugins-resolve.service.d.ts.map +1 -1
  215. package/core/preview-feature/preview-feature.component.d.ts.map +1 -1
  216. package/core/preview-feature/preview-feature.service.d.ts +1 -1
  217. package/core/provider-configuration/provider-configuration-hook.d.ts +1 -1
  218. package/core/query-param-handler/index.d.ts +1 -1
  219. package/core/query-param-handler/query-param-bottom-drawer.service.d.ts +1 -1
  220. package/core/query-param-handler/query-param-handler.service.d.ts +1 -1
  221. package/core/query-param-handler/query-param-modal-handler.service.d.ts +1 -1
  222. package/core/router/router.service.d.ts +1 -1
  223. package/core/search/search.service.d.ts +1 -1
  224. package/core/stepper/stepper.service.d.ts +1 -1
  225. package/core/tabs/tab.component.d.ts +2 -2
  226. package/core/tabs/tab.component.d.ts.map +1 -1
  227. package/core/tabs/tab.model.d.ts +2 -2
  228. package/core/tabs/tab.model.d.ts.map +1 -1
  229. package/core/tabs/tabs.service.d.ts +1 -1
  230. package/core/tabs/tabs.service.d.ts.map +1 -1
  231. package/core/ui-settings/ui-settings.module.d.ts +1 -1
  232. package/core/user/change-current-user-password.service.d.ts +10 -0
  233. package/core/user/change-current-user-password.service.d.ts.map +1 -0
  234. package/core/user/index.d.ts +1 -0
  235. package/core/user/index.d.ts.map +1 -1
  236. package/core/user/user-details-drawer/user-details-drawer.module.d.ts +1 -1
  237. package/core/user/user-menu.service.d.ts +1 -1
  238. package/core/user/user.module.d.ts +1 -1
  239. package/core/version/version.model.d.ts +1 -1
  240. package/core/version/version.module.d.ts +1 -1
  241. package/core/wizard/wizard.model.d.ts +1 -1
  242. package/dashboard-details-advanced-tab/advanced-tab.factory.d.ts.map +1 -1
  243. package/dashboard-details-advanced-tab/assign-widget-assets/assign-widget-asset-modal.component.d.ts.map +1 -1
  244. package/dashboard-details-advanced-tab/dashboard-json-editor/dashboard-json-editor.component.d.ts.map +1 -1
  245. package/dashboard-details-advanced-tab/dashboard-json-editor/import-export-widgets.service.d.ts.map +1 -1
  246. package/dashboard-manager/dashboard-manager-tabs.factory.d.ts.map +1 -1
  247. package/dashboard-manager/dashboard-manager.service.d.ts.map +1 -1
  248. package/dashboard-manager/devicemanagement/index.d.ts +1 -1
  249. package/dashboard-manager/type-dashboard-target-assets-grid/type-dashboard-target-assets-grid.component.d.ts.map +1 -1
  250. package/dashboard-manager/type-dashboard-target-assets-modal/type-dashboard-target-assets-modal.component.d.ts.map +1 -1
  251. package/dashboard-manager/type-dashboards-list/device-type-value.grid-column.d.ts.map +1 -1
  252. package/dashboard-manager/type-dashboards-list/type-dashboards-list.component.d.ts.map +1 -1
  253. package/data-grid-columns/asset-type/asset-type-grid-column.d.ts.map +1 -1
  254. package/data-grid-columns/asset-type/asset-type.cell-renderer.component.d.ts.map +1 -1
  255. package/datapoint-explorer/datapoint-explorer-navigation-factory.d.ts.map +1 -1
  256. package/datapoint-explorer/devicemanagement/index.d.ts +3 -0
  257. package/datapoint-explorer/devicemanagement/index.d.ts.map +1 -1
  258. package/datapoint-explorer/view/configuration/workspace-configuration.component.d.ts +4 -2
  259. package/datapoint-explorer/view/configuration/workspace-configuration.component.d.ts.map +1 -1
  260. package/datapoint-explorer/view/create-new-report-modal/create-new-report-modal.component.d.ts.map +1 -1
  261. package/datapoint-explorer/view/datapoint-explorer.model.d.ts +1 -0
  262. package/datapoint-explorer/view/datapoint-explorer.model.d.ts.map +1 -1
  263. package/datapoint-explorer/view/index.d.ts +3 -0
  264. package/datapoint-explorer/view/index.d.ts.map +1 -1
  265. package/datapoint-explorer/view/send-as-widget-to-dashboard-modal/send-as-widget-to-dashboard-modal.component.d.ts.map +1 -1
  266. package/datapoint-explorer/view/send-as-widget-to-report-modal/send-as-widget-to-report-modal.component.d.ts.map +1 -1
  267. package/datapoint-library/datapoint-library.module.d.ts.map +1 -1
  268. package/datapoint-library/details/datapoint-library-details.component.d.ts +1 -2
  269. package/datapoint-library/details/datapoint-library-details.component.d.ts.map +1 -1
  270. package/datapoint-library/list/datapoint-library-list.component.d.ts.map +1 -1
  271. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.d.ts.map +1 -1
  272. package/datapoint-selector/datapoint-selector-modal/datapoint-selector-modal.component.d.ts.map +1 -1
  273. package/datapoint-selector/datapoint-template-popover/datapoint-template-popover.component.d.ts.map +1 -1
  274. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts.map +1 -1
  275. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts.map +1 -1
  276. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.d.ts.map +1 -1
  277. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.d.ts.map +1 -1
  278. package/datapoints-export-selector/datapoints-export-selector.model.d.ts.map +1 -1
  279. package/default-subscriptions/default-subscriptions-navigation.factory.d.ts.map +1 -1
  280. package/default-subscriptions/default-subscriptions.component.d.ts.map +1 -1
  281. package/device-grid/columns/alarms.cell-renderer.component.d.ts.map +1 -1
  282. package/device-grid/columns/alarms.device-grid-column.d.ts.map +1 -1
  283. package/device-grid/columns/group.device-grid-column.d.ts.map +1 -1
  284. package/device-grid/columns/imei.device-grid-column.d.ts.map +1 -1
  285. package/device-grid/columns/model.device-grid-column.d.ts.map +1 -1
  286. package/device-grid/columns/name.device-grid-column.d.ts.map +1 -1
  287. package/device-grid/columns/registration-date.device-grid-column.d.ts.map +1 -1
  288. package/device-grid/columns/serial-number.device-grid-column.d.ts.map +1 -1
  289. package/device-grid/columns/status.device-grid-column.d.ts.map +1 -1
  290. package/device-grid/columns/system-id.device-grid-column.d.ts.map +1 -1
  291. package/device-grid/columns/type.device-grid-column.d.ts.map +1 -1
  292. package/device-grid/device-grid.component.d.ts.map +1 -1
  293. package/device-grid/device-grid.service.d.ts.map +1 -1
  294. package/device-list/add-smart-group.component.d.ts.map +1 -1
  295. package/device-list/device-list-navigation.factory.d.ts.map +1 -1
  296. package/device-list/devices.breadcrumb-factory.d.ts.map +1 -1
  297. package/device-map/device-map-navigation.factory.d.ts.map +1 -1
  298. package/device-profile/add-device-profile.component.d.ts.map +1 -1
  299. package/device-profile/device-profile-list.component.d.ts.map +1 -1
  300. package/device-profile/device-profile-navigation.factory.d.ts.map +1 -1
  301. package/device-profile/device-profile.component.d.ts.map +1 -1
  302. package/device-profile/device-profile.service.d.ts.map +1 -1
  303. package/device-profile/device-tab-profile/device-tab-profile.component.d.ts.map +1 -1
  304. package/device-profile/select-configuration-modal.component.d.ts.map +1 -1
  305. package/device-protocols/device-protocols.guard.d.ts.map +1 -1
  306. package/device-provisioned-certificates/device-provisioned-certificates.module.d.ts.map +1 -1
  307. package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts.map +1 -1
  308. package/device-shell/device-shell.module.d.ts.map +1 -1
  309. package/device-shell/shared/device-shell.service.d.ts.map +1 -1
  310. package/device-shell/shell/shell.component.d.ts.map +1 -1
  311. package/diagnostics/diagnostics.module.d.ts.map +1 -1
  312. package/diagnostics/diagnostics.service.d.ts.map +1 -1
  313. package/echart/services/echarts-options.service.d.ts +2 -3
  314. package/echart/services/echarts-options.service.d.ts.map +1 -1
  315. package/ecosystem/application-plugins/application-plugins.component.d.ts.map +1 -1
  316. package/ecosystem/application-plugins/application-plugins.module.d.ts.map +1 -1
  317. package/ecosystem/application-plugins/apps-to-update-remotes-select.component.d.ts.map +1 -1
  318. package/ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.d.ts.map +1 -1
  319. package/ecosystem/application-plugins/orphaned-status-cell-renderer.component.d.ts.map +1 -1
  320. package/ecosystem/application-plugins/plugin-list.service.d.ts.map +1 -1
  321. package/ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.d.ts.map +1 -1
  322. package/ecosystem/application-properties/application-properties.component.d.ts.map +1 -1
  323. package/ecosystem/application-properties/subscription-modal/subscription-modal.component.d.ts.map +1 -1
  324. package/ecosystem/ecosystem-tabs.factory.d.ts.map +1 -1
  325. package/ecosystem/license-confirm/license-confirm-modal.component.d.ts.map +1 -1
  326. package/ecosystem/license-confirm/license-view.component.d.ts.map +1 -1
  327. package/ecosystem/microservices/add-microservice.component.d.ts.map +1 -1
  328. package/ecosystem/packages/add-package.component.d.ts.map +1 -1
  329. package/ecosystem/packages/deploy-application/deploy-application.component.d.ts.map +1 -1
  330. package/ecosystem/packages/package-list/packages-list.component.d.ts.map +1 -1
  331. package/ecosystem/packages/package-versions/package-versions-list/package-versions-list.component.d.ts.map +1 -1
  332. package/ecosystem/packages/package-versions/packages-versions.component.d.ts.map +1 -1
  333. package/ecosystem/plugin-setup-stepper/plugin-setup-stepper.module.d.ts.map +1 -1
  334. package/ecosystem/shared/add-application.component.d.ts.map +1 -1
  335. package/ecosystem/shared/application-card.component.d.ts.map +1 -1
  336. package/ecosystem/shared/archived-filter/archived-filter.component.d.ts.map +1 -1
  337. package/ecosystem/shared/ecosystem.constants.d.ts.map +1 -1
  338. package/ecosystem/shared/ecosystem.service.d.ts.map +1 -1
  339. package/ecosystem/shared/package-availability.service.d.ts.map +1 -1
  340. package/ecosystem/shared/package-version-select/package-version-select.component.d.ts.map +1 -1
  341. package/ecosystem/shared/upload-archive.component.d.ts.map +1 -1
  342. package/editor/editor.component.d.ts +15 -0
  343. package/editor/editor.component.d.ts.map +1 -1
  344. package/exports/index.d.ts +1 -1
  345. package/exports/index.d.ts.map +1 -1
  346. package/exports/list/exports-grid.service.d.ts.map +1 -1
  347. package/exports/list/exports-list/exports-list.component.d.ts.map +1 -1
  348. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs +2 -1
  349. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs.map +1 -1
  350. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +8 -7
  351. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
  352. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +2 -1
  353. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs.map +1 -1
  354. package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs +2 -1
  355. package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs.map +1 -1
  356. package/fesm2022/c8y-ngx-components-alarms.mjs +40 -2
  357. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  358. package/fesm2022/c8y-ngx-components-asset-properties.mjs +608 -97
  359. package/fesm2022/c8y-ngx-components-asset-properties.mjs.map +1 -1
  360. package/fesm2022/c8y-ngx-components-asset-property-grid.component-CRnyUbyz.mjs.map +1 -1
  361. package/fesm2022/c8y-ngx-components-assets-navigator.mjs +70 -23
  362. package/fesm2022/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  363. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +2 -1
  364. package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  365. package/fesm2022/c8y-ngx-components-binary-file-download.mjs +2 -1
  366. package/fesm2022/c8y-ngx-components-binary-file-download.mjs.map +1 -1
  367. package/fesm2022/c8y-ngx-components-bookmarks.mjs +2 -1
  368. package/fesm2022/c8y-ngx-components-bookmarks.mjs.map +1 -1
  369. package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs +2 -1
  370. package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs.map +1 -1
  371. package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs +3 -3
  372. package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs.map +1 -1
  373. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs +2 -1
  374. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs.map +1 -1
  375. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +22 -12
  376. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
  377. package/fesm2022/c8y-ngx-components-child-devices.mjs +2 -1
  378. package/fesm2022/c8y-ngx-components-child-devices.mjs.map +1 -1
  379. package/fesm2022/c8y-ngx-components-cockpit-config.mjs +2 -1
  380. package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
  381. package/fesm2022/c8y-ngx-components-computed-asset-properties-alarm-count-config.component-BOpIFCYh.mjs +68 -0
  382. package/fesm2022/c8y-ngx-components-computed-asset-properties-alarm-count-config.component-BOpIFCYh.mjs.map +1 -0
  383. package/fesm2022/c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-D8otkLI8.mjs +73 -0
  384. package/fesm2022/c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-D8otkLI8.mjs.map +1 -0
  385. package/fesm2022/c8y-ngx-components-computed-asset-properties-event-count-config.component-AVm6qa9k.mjs +44 -0
  386. package/fesm2022/c8y-ngx-components-computed-asset-properties-event-count-config.component-AVm6qa9k.mjs.map +1 -0
  387. package/fesm2022/c8y-ngx-components-computed-asset-properties-last-measurement-config.component-CtUoKGuU.mjs +91 -0
  388. package/fesm2022/c8y-ngx-components-computed-asset-properties-last-measurement-config.component-CtUoKGuU.mjs.map +1 -0
  389. package/fesm2022/c8y-ngx-components-computed-asset-properties.mjs +643 -0
  390. package/fesm2022/c8y-ngx-components-computed-asset-properties.mjs.map +1 -0
  391. package/fesm2022/c8y-ngx-components-connectivity.mjs +2 -1
  392. package/fesm2022/c8y-ngx-components-connectivity.mjs.map +1 -1
  393. package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs +2 -1
  394. package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs.map +1 -1
  395. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DjlpSztw.mjs → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-BkcNSexF.mjs} +3 -2
  396. package/fesm2022/c8y-ngx-components-context-dashboard-dashboard-general-settings.component-BkcNSexF.mjs.map +1 -0
  397. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-B2zLhv0X.mjs → c8y-ngx-components-context-dashboard-dashboard-version-history.component-D9W68e7h.mjs} +3 -2
  398. package/fesm2022/c8y-ngx-components-context-dashboard-dashboard-version-history.component-D9W68e7h.mjs.map +1 -0
  399. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +43 -10
  400. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  401. package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-CwfVxTSx.mjs → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-D0lATUjO.mjs} +12 -8
  402. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-D0lATUjO.mjs.map +1 -0
  403. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs +4 -3
  404. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs.map +1 -1
  405. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs +2 -1
  406. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs.map +1 -1
  407. package/fesm2022/c8y-ngx-components-data-broker.mjs +2 -1
  408. package/fesm2022/c8y-ngx-components-data-broker.mjs.map +1 -1
  409. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs +2 -1
  410. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs.map +1 -1
  411. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs +2 -1
  412. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs.map +1 -1
  413. package/fesm2022/c8y-ngx-components-datapoint-explorer-devicemanagement.mjs +38 -9
  414. package/fesm2022/c8y-ngx-components-datapoint-explorer-devicemanagement.mjs.map +1 -1
  415. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +58 -53
  416. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
  417. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +2 -1
  418. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs.map +1 -1
  419. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs +2 -1
  420. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs.map +1 -1
  421. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs +2 -1
  422. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs.map +1 -1
  423. package/fesm2022/c8y-ngx-components-datapoint-library.mjs +2 -1
  424. package/fesm2022/c8y-ngx-components-datapoint-library.mjs.map +1 -1
  425. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +2 -1
  426. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  427. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +2 -1
  428. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
  429. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs +2 -1
  430. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs.map +1 -1
  431. package/fesm2022/c8y-ngx-components-device-grid.mjs +3 -3
  432. package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
  433. package/fesm2022/c8y-ngx-components-device-list.mjs +2 -1
  434. package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
  435. package/fesm2022/c8y-ngx-components-device-map.mjs +2 -1
  436. package/fesm2022/c8y-ngx-components-device-map.mjs.map +1 -1
  437. package/fesm2022/c8y-ngx-components-device-profile.mjs +2 -1
  438. package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
  439. package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs +3 -2
  440. package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs.map +1 -1
  441. package/fesm2022/c8y-ngx-components-device-protocols.mjs +2 -1
  442. package/fesm2022/c8y-ngx-components-device-protocols.mjs.map +1 -1
  443. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +2 -1
  444. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -1
  445. package/fesm2022/c8y-ngx-components-device-shell.mjs +2 -1
  446. package/fesm2022/c8y-ngx-components-device-shell.mjs.map +1 -1
  447. package/fesm2022/c8y-ngx-components-diagnostics.mjs +2 -1
  448. package/fesm2022/c8y-ngx-components-diagnostics.mjs.map +1 -1
  449. package/fesm2022/c8y-ngx-components-echart.mjs +6 -8
  450. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
  451. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +2 -1
  452. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  453. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs +2 -1
  454. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs.map +1 -1
  455. package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs +2 -1
  456. package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs.map +1 -1
  457. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +2 -1
  458. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  459. package/fesm2022/c8y-ngx-components-ecosystem.mjs +2 -1
  460. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  461. package/fesm2022/c8y-ngx-components-editor.mjs +15 -0
  462. package/fesm2022/c8y-ngx-components-editor.mjs.map +1 -1
  463. package/fesm2022/c8y-ngx-components-events.mjs +1 -1
  464. package/fesm2022/c8y-ngx-components-events.mjs.map +1 -1
  465. package/fesm2022/c8y-ngx-components-exports-list.mjs +2 -1
  466. package/fesm2022/c8y-ngx-components-exports-list.mjs.map +1 -1
  467. package/fesm2022/c8y-ngx-components-exports.mjs +2 -1
  468. package/fesm2022/c8y-ngx-components-exports.mjs.map +1 -1
  469. package/fesm2022/c8y-ngx-components-file-preview.mjs +2 -1
  470. package/fesm2022/c8y-ngx-components-file-preview.mjs.map +1 -1
  471. package/fesm2022/c8y-ngx-components-files-repository.mjs +2 -1
  472. package/fesm2022/c8y-ngx-components-files-repository.mjs.map +1 -1
  473. package/fesm2022/c8y-ngx-components-icon-selector.mjs +2 -1
  474. package/fesm2022/c8y-ngx-components-icon-selector.mjs.map +1 -1
  475. package/fesm2022/c8y-ngx-components-location.mjs +2 -1
  476. package/fesm2022/c8y-ngx-components-location.mjs.map +1 -1
  477. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs +2 -1
  478. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs.map +1 -1
  479. package/fesm2022/c8y-ngx-components-map.mjs +2 -1
  480. package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
  481. package/fesm2022/c8y-ngx-components-messaging-management.mjs +2 -1
  482. package/fesm2022/c8y-ngx-components-messaging-management.mjs.map +1 -1
  483. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs +2 -1
  484. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs.map +1 -1
  485. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +2 -1
  486. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs.map +1 -1
  487. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs +2 -1
  488. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs.map +1 -1
  489. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs +2 -1
  490. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs.map +1 -1
  491. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs +2 -1
  492. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs.map +1 -1
  493. package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs +2 -1
  494. package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs.map +1 -1
  495. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs +2 -1
  496. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs.map +1 -1
  497. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +2 -1
  498. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
  499. package/fesm2022/c8y-ngx-components-operations-shared.mjs +2 -1
  500. package/fesm2022/c8y-ngx-components-operations-shared.mjs.map +1 -1
  501. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +4 -4
  502. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs.map +1 -1
  503. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +4 -4
  504. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs.map +1 -1
  505. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +4 -4
  506. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs.map +1 -1
  507. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +4 -4
  508. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs.map +1 -1
  509. package/fesm2022/c8y-ngx-components-operations.mjs +2 -1
  510. package/fesm2022/c8y-ngx-components-operations.mjs.map +1 -1
  511. package/fesm2022/c8y-ngx-components-pending-mo-request.mjs +2 -1
  512. package/fesm2022/c8y-ngx-components-pending-mo-request.mjs.map +1 -1
  513. package/fesm2022/c8y-ngx-components-platform-configuration.mjs +2 -1
  514. package/fesm2022/c8y-ngx-components-platform-configuration.mjs.map +1 -1
  515. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +2 -1
  516. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs.map +1 -1
  517. package/fesm2022/c8y-ngx-components-protocol-opcua-mappings.mjs +1 -1
  518. package/fesm2022/c8y-ngx-components-protocol-opcua-mappings.mjs.map +1 -1
  519. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +2 -1
  520. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
  521. package/fesm2022/c8y-ngx-components-register-device.mjs +2 -1
  522. package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
  523. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +3 -3
  524. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs.map +1 -1
  525. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs +2 -1
  526. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs.map +1 -1
  527. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +2 -1
  528. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs.map +1 -1
  529. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs +2 -1
  530. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs.map +1 -1
  531. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs +2 -1
  532. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs.map +1 -1
  533. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +3 -3
  534. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs.map +1 -1
  535. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs +2 -1
  536. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs.map +1 -1
  537. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs +2 -1
  538. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs.map +1 -1
  539. package/fesm2022/c8y-ngx-components-replace-device.mjs +2 -1
  540. package/fesm2022/c8y-ngx-components-replace-device.mjs.map +1 -1
  541. package/fesm2022/c8y-ngx-components-report-dashboard.mjs +2 -1
  542. package/fesm2022/c8y-ngx-components-report-dashboard.mjs.map +1 -1
  543. package/fesm2022/c8y-ngx-components-reports.mjs +2 -1
  544. package/fesm2022/c8y-ngx-components-reports.mjs.map +1 -1
  545. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +2 -1
  546. package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  547. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +2 -1
  548. package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
  549. package/fesm2022/c8y-ngx-components-repository-shared.mjs +3 -2
  550. package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
  551. package/fesm2022/c8y-ngx-components-repository-software.mjs +2 -1
  552. package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
  553. package/fesm2022/c8y-ngx-components-search.mjs +2 -1
  554. package/fesm2022/c8y-ngx-components-search.mjs.map +1 -1
  555. package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs +2 -1
  556. package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs.map +1 -1
  557. package/fesm2022/c8y-ngx-components-sensor-phone.mjs +3 -2
  558. package/fesm2022/c8y-ngx-components-sensor-phone.mjs.map +1 -1
  559. package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs +2 -1
  560. package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs.map +1 -1
  561. package/fesm2022/c8y-ngx-components-services-shared.mjs +1 -1
  562. package/fesm2022/c8y-ngx-components-services-shared.mjs.map +1 -1
  563. package/fesm2022/c8y-ngx-components-services.mjs +2 -1
  564. package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
  565. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs +2 -1
  566. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs.map +1 -1
  567. package/fesm2022/c8y-ngx-components-sms-gateway.mjs +3 -2
  568. package/fesm2022/c8y-ngx-components-sms-gateway.mjs.map +1 -1
  569. package/fesm2022/c8y-ngx-components-sub-assets.mjs +2 -1
  570. package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
  571. package/fesm2022/c8y-ngx-components-tenants.mjs +37 -37
  572. package/fesm2022/c8y-ngx-components-tenants.mjs.map +1 -1
  573. package/fesm2022/c8y-ngx-components-tracking.mjs +2 -1
  574. package/fesm2022/c8y-ngx-components-tracking.mjs.map +1 -1
  575. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +5 -5
  576. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -1
  577. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +2 -1
  578. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  579. package/fesm2022/c8y-ngx-components-upgrade.mjs +10 -3
  580. package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
  581. package/fesm2022/c8y-ngx-components-user-roles.mjs +2 -1
  582. package/fesm2022/c8y-ngx-components-user-roles.mjs.map +1 -1
  583. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs +2 -1
  584. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
  585. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs +2 -1
  586. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs.map +1 -1
  587. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs +2 -1
  588. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs.map +1 -1
  589. package/fesm2022/c8y-ngx-components-widgets-definitions-applications.mjs +2 -1
  590. package/fesm2022/c8y-ngx-components-widgets-definitions-applications.mjs.map +1 -1
  591. package/fesm2022/c8y-ngx-components-widgets-definitions-asset-notes.mjs +2 -1
  592. package/fesm2022/c8y-ngx-components-widgets-definitions-asset-notes.mjs.map +1 -1
  593. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-legacy-welcome.mjs +2 -1
  594. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-legacy-welcome.mjs.map +1 -1
  595. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-welcome.mjs +2 -1
  596. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-welcome.mjs.map +1 -1
  597. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +2 -1
  598. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs.map +1 -1
  599. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +2 -1
  600. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -1
  601. package/fesm2022/c8y-ngx-components-widgets-definitions-device-control-message.mjs +2 -1
  602. package/fesm2022/c8y-ngx-components-widgets-definitions-device-control-message.mjs.map +1 -1
  603. package/fesm2022/c8y-ngx-components-widgets-definitions-device-management-welcome.mjs +1 -1
  604. package/fesm2022/c8y-ngx-components-widgets-definitions-device-management-welcome.mjs.map +1 -1
  605. package/fesm2022/c8y-ngx-components-widgets-definitions-help-and-service.mjs +2 -1
  606. package/fesm2022/c8y-ngx-components-widgets-definitions-help-and-service.mjs.map +1 -1
  607. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs +3 -3
  608. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs.map +1 -1
  609. package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs +3 -6
  610. package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs.map +1 -1
  611. package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs +2 -1
  612. package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs.map +1 -1
  613. package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs +2 -1
  614. package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs.map +1 -1
  615. package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs +2 -1
  616. package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs.map +1 -1
  617. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs +2 -1
  618. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs.map +1 -1
  619. package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs +2 -2
  620. package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs.map +1 -1
  621. package/fesm2022/c8y-ngx-components-widgets-definitions-quick-links.mjs +2 -1
  622. package/fesm2022/c8y-ngx-components-widgets-definitions-quick-links.mjs.map +1 -1
  623. package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs +2 -1
  624. package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs.map +1 -1
  625. package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs +2 -1
  626. package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs.map +1 -1
  627. package/fesm2022/c8y-ngx-components-widgets-definitions-three-d-rotation.mjs +2 -1
  628. package/fesm2022/c8y-ngx-components-widgets-definitions-three-d-rotation.mjs.map +1 -1
  629. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +2 -1
  630. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  631. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs +2 -1
  632. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs.map +1 -1
  633. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs +9 -6
  634. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs.map +1 -1
  635. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +2 -1
  636. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
  637. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs +2 -1
  638. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs.map +1 -1
  639. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs +2 -1
  640. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs.map +1 -1
  641. package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs +2 -1
  642. package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs.map +1 -1
  643. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs +13 -8
  644. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs.map +1 -1
  645. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs +2 -1
  646. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs.map +1 -1
  647. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +2 -1
  648. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
  649. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs +2 -1
  650. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs.map +1 -1
  651. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +2 -1
  652. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  653. package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs +2 -1
  654. package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs.map +1 -1
  655. package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs +2 -1
  656. package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs.map +1 -1
  657. package/fesm2022/c8y-ngx-components-widgets-import-export-config.mjs +3 -10
  658. package/fesm2022/c8y-ngx-components-widgets-import-export-config.mjs.map +1 -1
  659. package/fesm2022/c8y-ngx-components.mjs +692 -504
  660. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  661. package/file-preview/file-preview.component.d.ts.map +1 -1
  662. package/files-repository/files-repository-navigation.factory.d.ts.map +1 -1
  663. package/files-repository/files-repository-upload.component.d.ts.map +1 -1
  664. package/files-repository/files-repository.component.d.ts.map +1 -1
  665. package/files-repository/files-repository.service.d.ts +1 -2
  666. package/files-repository/files-repository.service.d.ts.map +1 -1
  667. package/icon-selector/icon-selector-modal/icon-selector-modal.component.d.ts.map +1 -1
  668. package/icon-selector/icon-selector.component.d.ts.map +1 -1
  669. package/locales/de.po +105 -12
  670. package/locales/es.po +105 -12
  671. package/locales/fr.po +105 -12
  672. package/locales/ja_JP.po +99 -12
  673. package/locales/ko.po +104 -12
  674. package/locales/locales.pot +97 -12
  675. package/locales/nl.po +105 -12
  676. package/locales/pl.po +105 -12
  677. package/locales/pt_BR.po +105 -12
  678. package/locales/zh_CN.po +104 -12
  679. package/locales/zh_TW.po +104 -12
  680. package/location/location-tab.factory.d.ts.map +1 -1
  681. package/location/location.component.d.ts.map +1 -1
  682. package/loriot-device-registration/loriot-device-registration.component.d.ts.map +1 -1
  683. package/loriot-device-registration/loriot-provider.service.d.ts.map +1 -1
  684. package/map/map.component.d.ts.map +1 -1
  685. package/messaging-management/messaging/namespace-list/namespace-item/namespace-item-card/namespace-item-card.component.d.ts.map +1 -1
  686. package/messaging-management/messaging/shared/usage/usage.component.d.ts.map +1 -1
  687. package/messaging-management/messaging/topic/topic-list-view.component.d.ts.map +1 -1
  688. package/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-data-grid.service.d.ts.map +1 -1
  689. package/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-view.component.d.ts.map +1 -1
  690. package/messaging-management/messaging/topic/topics-data-grid.service.d.ts.map +1 -1
  691. package/messaging-management/navigator/messaging-navigator-factory.d.ts.map +1 -1
  692. package/messaging-management/navigator/topic-details-tab.factory.d.ts.map +1 -1
  693. package/operations/bulk-operation-list-item/bulk-operation-list-item.component.d.ts.map +1 -1
  694. package/operations/bulk-operation-list-item/modals/bulk-operations-reschedule-modal.component.d.ts.map +1 -1
  695. package/operations/bulk-operation-scheduler/operation-scheduler.component.d.ts.map +1 -1
  696. package/operations/bulk-operation-stepper/bulk-operation-stepper.component.d.ts.map +1 -1
  697. package/operations/bulk-single-operations-list/single-operation-item.component.d.ts.map +1 -1
  698. package/operations/bulk-single-operations-list/single-operations-list.component.d.ts.map +1 -1
  699. package/operations/factories/bulk-operations-tab.factory.d.ts.map +1 -1
  700. package/operations/grid-columns/creation-time.grid-column.d.ts.map +1 -1
  701. package/operations/grid-columns/device.grid-column.d.ts.map +1 -1
  702. package/operations/grid-columns/failure-reason.grid-column.d.ts.map +1 -1
  703. package/operations/grid-columns/status.grid-column.d.ts.map +1 -1
  704. package/operations/operations-list/device-control.feature.d.ts.map +1 -1
  705. package/operations/operations-list/operations-list-item.component.d.ts.map +1 -1
  706. package/operations/operations-list/operations-list.component.d.ts.map +1 -1
  707. package/operations/operations-list/single-operations-tab.factory.d.ts.map +1 -1
  708. package/operations/operations-list-item-details/operation-details-tabs.component.d.ts.map +1 -1
  709. package/operations/shared/nav.factory.d.ts.map +1 -1
  710. package/operations/shared/operations.service.d.ts.map +1 -1
  711. package/operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.component.d.ts.map +1 -1
  712. package/operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.component.d.ts.map +1 -1
  713. package/operations/stepper-bulk-type-firmware/stepper-bulk-type-firmware.component.d.ts.map +1 -1
  714. package/operations/stepper-bulk-type-software/select-software-step.component.d.ts.map +1 -1
  715. package/operations/stepper-bulk-type-software/stepper-bulk-type-software.component.d.ts.map +1 -1
  716. package/package.json +1 -1
  717. package/pending-mo-request/pending-mo-request-interceptor.d.ts.map +1 -1
  718. package/pending-mo-request/pending-mo-request.service.d.ts.map +1 -1
  719. package/platform-configuration/platform-configuration-form-provider.service.d.ts.map +1 -1
  720. package/protocol-lpwan/lpwan-protocol.module.d.ts.map +1 -1
  721. package/protocol-lpwan/lpwan-set-connections.component.d.ts.map +1 -1
  722. package/protocol-lpwan/lpwan-set-device-protocol.component.d.ts.map +1 -1
  723. package/protocol-lpwan/multiple-lns-connectors/actility-multiple-lns-connector.component.d.ts.map +1 -1
  724. package/protocol-lpwan/multiple-lns-connectors/connection-info-with-download-csv.component.d.ts.map +1 -1
  725. package/protocol-lpwan/multiple-lns-connectors/loriot/loriot-multiple-lns-connector.component.d.ts.map +1 -1
  726. package/protocol-lpwan/multiple-lns-connectors/no-connections-found.component.d.ts.map +1 -1
  727. package/protocol-lpwan/multiple-lns-connectors/sigfox-multiple-lns-connector.component.d.ts.map +1 -1
  728. package/protocol-opcua/opcua-address-space.component.d.ts.map +1 -1
  729. package/protocol-opcua/opcua-device-protocol-detail.component.d.ts.map +1 -1
  730. package/protocol-opcua/opcua-server-config.component.d.ts.map +1 -1
  731. package/protocol-opcua/opcua-servers.component.d.ts.map +1 -1
  732. package/register-device/bulk/bulk-device-registration-modal.component.d.ts.map +1 -1
  733. package/register-device/device-registration-view.component.d.ts.map +1 -1
  734. package/register-device/extensible/base-extensible-device-registration.service.d.ts.map +1 -1
  735. package/register-device/extensible/bulk/extensible-bulk-device-registration-modal.component.d.ts.map +1 -1
  736. package/register-device/extensible/bulk/extensible-bulk-device-registration.service.d.ts.map +1 -1
  737. package/register-device/extensible/single/extensible-device-registration-modal.component.d.ts.map +1 -1
  738. package/register-device/extensible/single/extensible-device-registration-stepper.component.d.ts.map +1 -1
  739. package/register-device/extensible/single/extensible-device-registration.service.d.ts.map +1 -1
  740. package/register-device/general/general-device-registration.component.d.ts.map +1 -1
  741. package/register-device/register-device-navigation.factory.d.ts.map +1 -1
  742. package/register-device/register-device.service.d.ts.map +1 -1
  743. package/remote-access/configurations/remote-access-configuration-list/remote-access-configuration-list.component.d.ts.map +1 -1
  744. package/remote-access/configurations/remote-access-pick-protocol-modal/remote-access-pick-protocol-modal.component.d.ts.map +1 -1
  745. package/remote-access/passthrough/index.d.ts +1 -1
  746. package/remote-access/passthrough/index.d.ts.map +1 -1
  747. package/remote-access/shared/remote-access-basic-endpoint-modal/remote-access-basic-endpoint-modal.component.d.ts.map +1 -1
  748. package/remote-access/ssh/index.d.ts.map +1 -1
  749. package/remote-access/telnet/index.d.ts.map +1 -1
  750. package/remote-access/vnc/index.d.ts.map +1 -1
  751. package/replace-device/replace-device-grid-action.factory.d.ts.map +1 -1
  752. package/replace-device/replace-device-wizard/replace-device-wizard.component.d.ts.map +1 -1
  753. package/replace-device/replace-device-wizard/replace-device-wizard.service.d.ts.map +1 -1
  754. package/replace-device/replace-device.service.d.ts.map +1 -1
  755. package/report-dashboard/report-dashboard-list.component.d.ts.map +1 -1
  756. package/report-dashboard/report-dashboard-navigation.factory.d.ts.map +1 -1
  757. package/reports/export-schedules.component.d.ts.map +1 -1
  758. package/repository/configuration/device-tab/configuration-repository-device-tab.module.d.ts.map +1 -1
  759. package/repository/configuration/device-tab/save-to-repository.component.d.ts.map +1 -1
  760. package/repository/configuration/device-tab/text-based-configuration.component.d.ts.map +1 -1
  761. package/repository/configuration/list/configuration-detail.component.d.ts.map +1 -1
  762. package/repository/configuration/list/configuration-list.component.d.ts.map +1 -1
  763. package/repository/configuration/list/configuration-repository-navigation-factory.d.ts.map +1 -1
  764. package/repository/firmware/device-tab/firmware-device-tab.component.d.ts.map +1 -1
  765. package/repository/firmware/device-tab/firmware-repository-device-tab.module.d.ts.map +1 -1
  766. package/repository/firmware/list/add-firmware-modal.component.d.ts.map +1 -1
  767. package/repository/firmware/list/add-firmware-patch-modal.component.d.ts.map +1 -1
  768. package/repository/firmware/list/firmware-details.component.d.ts.map +1 -1
  769. package/repository/firmware/list/firmware-list.component.d.ts.map +1 -1
  770. package/repository/firmware/list/firmware-repository-navigation-factory.d.ts.map +1 -1
  771. package/repository/shared/columns/description.grid-column.d.ts.map +1 -1
  772. package/repository/shared/columns/device-type.grid-column.d.ts.map +1 -1
  773. package/repository/shared/columns/file.grid-column.d.ts.map +1 -1
  774. package/repository/shared/columns/name.grid-column.d.ts.map +1 -1
  775. package/repository/shared/columns/type.filtering-form-renderer.component.d.ts.map +1 -1
  776. package/repository/shared/columns/type.grid-column.d.ts.map +1 -1
  777. package/repository/shared/columns/versions.grid-column.d.ts.map +1 -1
  778. package/repository/shared/repository.service.d.ts.map +1 -1
  779. package/repository/shared/select-modal/repository-select-modal.component.d.ts +1 -1
  780. package/repository/shared/select-modal/repository-select-modal.component.d.ts.map +1 -1
  781. package/repository/shared/software-type/software-type.component.d.ts.map +1 -1
  782. package/repository/software/device-tab/installed-software.component.d.ts.map +1 -1
  783. package/repository/software/device-tab/software-repository-device-tab.module.d.ts.map +1 -1
  784. package/repository/software/list/add-software-modal.component.d.ts.map +1 -1
  785. package/repository/software/list/software-details.component.d.ts.map +1 -1
  786. package/repository/software/list/software-list.component.d.ts.map +1 -1
  787. package/repository/software/list/software-repository-navigation-factory.d.ts.map +1 -1
  788. package/search/columns/asset-type-search-grid-column.d.ts.map +1 -1
  789. package/search/search-grid.component.d.ts.map +1 -1
  790. package/search/search-results.component.d.ts.map +1 -1
  791. package/sensor-phone/connect-smartphone.factory.d.ts.map +1 -1
  792. package/sensor-phone/sensor-phone-modal/sensor-phone-modal.component.d.ts.map +1 -1
  793. package/sensor-phone/sensor-phone-modal/sensor-phone.service.d.ts.map +1 -1
  794. package/services/service-command-tab/service-command.feature.d.ts.map +1 -1
  795. package/services/services-device-tab/columns/last-updated-date.device-grid-column.d.ts.map +1 -1
  796. package/services/services-device-tab/columns/name.grid-column.d.ts.map +1 -1
  797. package/services/services-device-tab/columns/service-type.grid-column.d.ts.map +1 -1
  798. package/services/services-device-tab/columns/status.grid-column.d.ts.map +1 -1
  799. package/services/services-device-tab/services-device-tab.component.d.ts.map +1 -1
  800. package/services/services-device-tab/services-device-tab.module.d.ts.map +1 -1
  801. package/services/services-device-tab/services.breadcrumb-factory.d.ts.map +1 -1
  802. package/services/shared/service-command.service.d.ts.map +1 -1
  803. package/services/status-options/status-options.model.d.ts.map +1 -1
  804. package/sigfox-device-registration/sigfox-device-registration.component.d.ts.map +1 -1
  805. package/sigfox-device-registration/sigfox-provider.service.d.ts.map +1 -1
  806. package/sms-gateway/sms-gateway.module.d.ts.map +1 -1
  807. package/sub-assets/add-group/add-group.component.d.ts.map +1 -1
  808. package/sub-assets/asset-properties-item.component.d.ts.map +1 -1
  809. package/sub-assets/asset-properties.component.d.ts.map +1 -1
  810. package/sub-assets/assign-devices/assign-child-devices.component.d.ts.map +1 -1
  811. package/sub-assets/assign-devices/assign-devices.component.d.ts.map +1 -1
  812. package/sub-assets/delete-assets-modal/delete-assets-modal.component.d.ts.map +1 -1
  813. package/sub-assets/group-info.component.d.ts.map +1 -1
  814. package/sub-assets/sub-assets-grid.component.d.ts.map +1 -1
  815. package/sub-assets/sub-assets.module.d.ts.map +1 -1
  816. package/sub-assets/sub-assets.service.d.ts.map +1 -1
  817. package/sub-assets/unassign-assets-modal/unassign-modal.component.d.ts.map +1 -1
  818. package/tenants/custom-properties/custom-properties.component.d.ts.map +1 -1
  819. package/tenants/tenant-form/tenant-form.component.d.ts.map +1 -1
  820. package/tenants/tenant-limits/tenant-limits.component.d.ts.map +1 -1
  821. package/tenants/tenant-list/creation-time.filtering-form-renderer.component.d.ts.map +1 -1
  822. package/tenants/tenant-list/tenant-list.component.d.ts.map +1 -1
  823. package/tenants/tenants-navigation.factory.d.ts.map +1 -1
  824. package/tenants/tenants.module.d.ts.map +1 -1
  825. package/tracking/tracking.feature.d.ts.map +1 -1
  826. package/translation-editor/lazy/translation-editor/translation-editor.component.d.ts.map +1 -1
  827. package/trusted-certificates/crl/crl-check-settings.component.d.ts.map +1 -1
  828. package/trusted-certificates/crl/crl-settings.component.d.ts.map +1 -1
  829. package/trusted-certificates/factories/tabs.factory.d.ts.map +1 -1
  830. package/trusted-certificates/factories/trusted-certificates-navigation.factory.d.ts.map +1 -1
  831. package/trusted-certificates/list/add-trusted-certificate.component.d.ts.map +1 -1
  832. package/trusted-certificates/list/trusted-certificate-list.component.d.ts.map +1 -1
  833. package/upgrade/auth-bridge.service.d.ts.map +1 -1
  834. package/upgrade/bridge.service.d.ts.map +1 -1
  835. package/upgrade/ng1/downgraded.services.d.ts +1 -0
  836. package/upgrade/ng1/downgraded.services.d.ts.map +1 -1
  837. package/upgrade/ng1/index.d.ts.map +1 -1
  838. package/user-roles/roles-asset-tree/roles-asset-tree.component.d.ts.map +1 -1
  839. package/widgets/cockpit/index.d.ts +4 -4
  840. package/widgets/definitions/alarms/alarm-list/index.d.ts +1 -1
  841. package/widgets/definitions/alarms/alarm-list/index.d.ts.map +1 -1
  842. package/widgets/definitions/alarms/all-critical-alarms/index.d.ts +1 -1
  843. package/widgets/definitions/alarms/all-critical-alarms/index.d.ts.map +1 -1
  844. package/widgets/definitions/alarms/recent-alarms/index.d.ts +1 -1
  845. package/widgets/definitions/alarms/recent-alarms/index.d.ts.map +1 -1
  846. package/widgets/definitions/applications/index.d.ts +1 -1
  847. package/widgets/definitions/applications/index.d.ts.map +1 -1
  848. package/widgets/definitions/asset-notes/index.d.ts +1 -1
  849. package/widgets/definitions/asset-notes/index.d.ts.map +1 -1
  850. package/widgets/definitions/cockpit-legacy-welcome/index.d.ts +1 -1
  851. package/widgets/definitions/cockpit-legacy-welcome/index.d.ts.map +1 -1
  852. package/widgets/definitions/cockpit-welcome/index.d.ts +1 -1
  853. package/widgets/definitions/cockpit-welcome/index.d.ts.map +1 -1
  854. package/widgets/definitions/datapoints-graph/datapoint-graph-widget-factory.d.ts.map +1 -1
  855. package/widgets/definitions/datapoints-graph/index.d.ts +1 -1
  856. package/widgets/definitions/datapoints-table/index.d.ts +1 -1
  857. package/widgets/definitions/datapoints-table/index.d.ts.map +1 -1
  858. package/widgets/definitions/device-control-message/index.d.ts +1 -1
  859. package/widgets/definitions/device-control-message/index.d.ts.map +1 -1
  860. package/widgets/definitions/help-and-service/index.d.ts +1 -1
  861. package/widgets/definitions/help-and-service/index.d.ts.map +1 -1
  862. package/widgets/definitions/html-widget/html-widget.factory.d.ts.map +1 -1
  863. package/widgets/definitions/html-widget/index.d.ts +1 -1
  864. package/widgets/definitions/image/index.d.ts +5 -3
  865. package/widgets/definitions/image/index.d.ts.map +1 -1
  866. package/widgets/definitions/info-gauge/index.d.ts +2 -3
  867. package/widgets/definitions/info-gauge/index.d.ts.map +1 -1
  868. package/widgets/definitions/kpi/index.d.ts +1 -1
  869. package/widgets/definitions/kpi/index.d.ts.map +1 -1
  870. package/widgets/definitions/linear-gauge/index.d.ts +1 -1
  871. package/widgets/definitions/linear-gauge/index.d.ts.map +1 -1
  872. package/widgets/definitions/map/index.d.ts +1 -1
  873. package/widgets/definitions/map/index.d.ts.map +1 -1
  874. package/widgets/definitions/markdown/index.d.ts +5 -3
  875. package/widgets/definitions/markdown/index.d.ts.map +1 -1
  876. package/widgets/definitions/quick-links/index.d.ts +1 -1
  877. package/widgets/definitions/quick-links/index.d.ts.map +1 -1
  878. package/widgets/definitions/radial-gauge/index.d.ts +1 -1
  879. package/widgets/definitions/radial-gauge/index.d.ts.map +1 -1
  880. package/widgets/definitions/silo/index.d.ts +1 -1
  881. package/widgets/definitions/silo/index.d.ts.map +1 -1
  882. package/widgets/definitions/three-d-rotation/index.d.ts +1 -1
  883. package/widgets/definitions/three-d-rotation/index.d.ts.map +1 -1
  884. package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts.map +1 -1
  885. package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts.map +1 -1
  886. package/widgets/implementations/alarms/alarm-list-widget.model.d.ts.map +1 -1
  887. package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts.map +1 -1
  888. package/widgets/implementations/cockpit-welcome/welcome.component.d.ts +3 -2
  889. package/widgets/implementations/cockpit-welcome/welcome.component.d.ts.map +1 -1
  890. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts.map +1 -1
  891. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.d.ts.map +1 -1
  892. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts.map +1 -1
  893. package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts.map +1 -1
  894. package/widgets/implementations/datapoints-table/date-range-picker.component.d.ts.map +1 -1
  895. package/widgets/implementations/device-control-message/device-control-message-widget-view/device-control-message-widget-view.component.d.ts.map +1 -1
  896. package/widgets/implementations/device-management-welcome/welcome.component.d.ts.map +1 -1
  897. package/widgets/implementations/help-and-service-widget/help-and-service-view/help-and-service-view.component.d.ts.map +1 -1
  898. package/widgets/implementations/html-widget/advanced-settings/advanced-settings.component.d.ts.map +1 -1
  899. package/widgets/implementations/html-widget/html-widget-config.service.d.ts.map +1 -1
  900. package/widgets/implementations/html-widget/widget-code-editor-section/widget-code-editor.component.d.ts +5 -3
  901. package/widgets/implementations/html-widget/widget-code-editor-section/widget-code-editor.component.d.ts.map +1 -1
  902. package/widgets/implementations/image/image-widget-config/image-widget-config.component.d.ts.map +1 -1
  903. package/widgets/implementations/image/image-widget.service.d.ts +1 -2
  904. package/widgets/implementations/image/image-widget.service.d.ts.map +1 -1
  905. package/widgets/implementations/info-gauge/info-gauge-widget-config/info-gauge-widget-config.component.d.ts.map +1 -1
  906. package/widgets/implementations/linear-gauge/linear-gauge-widget-view/linear-gauge-widget-view.component.d.ts.map +1 -1
  907. package/widgets/implementations/map/map-widget-config.component.d.ts.map +1 -1
  908. package/widgets/implementations/map/map-widget.component.d.ts.map +1 -1
  909. package/widgets/implementations/markdown/markdown-widget-config/markdown-widget-config.component.d.ts.map +1 -1
  910. package/widgets/implementations/markdown/markdown-widget.service.d.ts.map +1 -1
  911. package/widgets/implementations/quick-links/quick-links-widget-config/quick-links-widget-config.component.d.ts.map +1 -1
  912. package/widgets/import-export-config/config-target-export.d.ts +3 -1
  913. package/widgets/import-export-config/config-target-export.d.ts.map +1 -1
  914. package/widgets/import-export-config/config-target-import.d.ts +3 -1
  915. package/widgets/import-export-config/config-target-import.d.ts.map +1 -1
  916. package/widgets/import-export-config/device-import-export.d.ts +3 -1
  917. package/widgets/import-export-config/device-import-export.d.ts.map +1 -1
  918. package/fesm2022/c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DjlpSztw.mjs.map +0 -1
  919. package/fesm2022/c8y-ngx-components-context-dashboard-dashboard-version-history.component-B2zLhv0X.mjs.map +0 -1
  920. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-CwfVxTSx.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-datapoint-selector.mjs","sources":["../../datapoint-selector/datapoint-attributes-form/datapoint-attributes.model.ts","../../datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.ts","../../datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.ts","../../datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.html","../../datapoint-selector/datapoint-selection.model.ts","../../datapoint-selector/datapoint-library.service.ts","../../datapoint-selector/datapoint-template-popover/datapoint-template-popover.component.ts","../../datapoint-selector/datapoint-template-popover/datapoint-template-popover.component.html","../../datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.ts","../../datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.html","../../datapoint-selector/pipes/includes-datapoint.pipe.ts","../../datapoint-selector/pipes/datapoint-label.pipe.ts","../../datapoint-selector/datapoint-selector.component.ts","../../datapoint-selector/datapoint-selector.component.html","../../datapoint-selector/datapoint-selector-modal/datapoint-selector-modal.component.ts","../../datapoint-selector/datapoint-selector-modal/datapoint-selector-modal.component.html","../../datapoint-selector/datapoint-selector.service.ts","../../datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.ts","../../datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.html","../../datapoint-selector/pipes/filter-datapoints.pipe.ts","../../datapoint-selector/datapoint-selector.module.ts","../../datapoint-selector/c8y-ngx-components-datapoint-selector.ts"],"sourcesContent":["import { gettext } from '@c8y/ngx-components';\n\nexport const AXIS_TYPES = [\n { val: undefined, text: gettext('Auto') },\n { val: 'left', text: gettext('Left') },\n { val: 'right', text: gettext('Right') }\n] as const;\n\nexport type AxisTypes = (typeof AXIS_TYPES)[1 | 2]['val'];\n\nexport const CHART_LINE_TYPES = [\n { val: 'line', text: gettext('Line') },\n { val: 'points', text: gettext('Points') },\n { val: 'linePoints', text: gettext('Line and points') },\n { val: 'bars', text: gettext('Bars') },\n { val: 'step-before', text: gettext('Step before') },\n { val: 'step-after', text: gettext('Step after') }\n] as const;\n\nexport type ChartLineTypes = (typeof CHART_LINE_TYPES)[number]['val'];\n\nexport const CHART_RENDER_TYPES = [\n { val: 'min', text: gettext('Minimum') },\n { val: 'max', text: gettext('Maximum') },\n { val: 'area', text: gettext('Minimum and maximum') }\n] as const;\n\nexport type ChartRenderTypes = (typeof CHART_RENDER_TYPES)[number]['val'];\n","import { Injectable } from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n ValidationErrors,\n ValidatorFn,\n Validators\n} from '@angular/forms';\nimport { C8yValidators, gettext } from '@c8y/ngx-components';\nimport { AXIS_TYPES, CHART_LINE_TYPES, CHART_RENDER_TYPES } from './datapoint-attributes.model';\n\n@Injectable({ providedIn: 'root' })\nexport class DatapointAttributesFormValidationService {\n constructor(private formBuilder: FormBuilder) {}\n\n getDefaultFormGroup(fieldsToRemove: string[] = []): FormGroup {\n const formFields = {\n __active: [true, []],\n __target: this.getTargetFormGroup(),\n __template: [undefined, []],\n color: ['', this.getColorValidators()],\n label: ['', this.getLabelValidators()],\n description: ['', this.getDescriptionValidators()],\n fragment: ['', this.getFragmentValidators()],\n series: ['', this.getSeriesValidators()],\n range: this.getMinMaxFormGroup(),\n unit: [undefined, this.getUnitValidators()],\n target: [undefined, this.getTargetValidators()],\n redRange: this.getMinMaxFormGroup(),\n yellowRange: this.getMinMaxFormGroup(),\n chart: this.getChartFormGroup(),\n display: this.getDisplayFormGroup()\n };\n if (fieldsToRemove.length) {\n for (const field of fieldsToRemove) {\n delete formFields[field];\n }\n }\n return this.formBuilder.group(formFields, {\n validators: this.getOverallValidators()\n });\n }\n\n convertToBackendFormat(formDataStructure: any, showChart: boolean) {\n if (!formDataStructure) {\n return {};\n }\n\n const {\n __active,\n __target,\n __template,\n color,\n label,\n description,\n fragment,\n series,\n range,\n unit,\n target,\n redRange,\n yellowRange,\n chart,\n display\n } = formDataStructure;\n const obj = {\n __active,\n __target,\n __template,\n color,\n label,\n description,\n fragment,\n series,\n min: range?.min,\n max: range?.max,\n unit,\n target,\n redRangeMin: redRange?.min,\n redRangeMax: redRange?.max,\n yellowRangeMin: yellowRange?.min,\n yellowRangeMax: yellowRange?.max,\n renderType: showChart ? chart?.renderType : display?.renderType,\n lineType: chart?.lineType,\n yAxisType: chart?.yAxisType\n };\n return obj;\n }\n\n convertToFormGroupFormat(backendDataStructure: any) {\n if (!backendDataStructure) {\n return {};\n }\n\n const {\n __active,\n __target,\n __template,\n color,\n label,\n description,\n fragment,\n series,\n min,\n max,\n unit,\n target,\n redRangeMin,\n redRangeMax,\n yellowRangeMin,\n yellowRangeMax,\n renderType,\n lineType,\n yAxisType\n } = backendDataStructure;\n\n const obj = {\n __active,\n __target,\n __template,\n color,\n label,\n description,\n fragment,\n series,\n range: {\n min: this.convertStringToNumber(min),\n max: this.convertStringToNumber(max)\n },\n unit,\n target: this.convertStringToNumber(target),\n redRange: {\n min: this.convertStringToNumber(redRangeMin),\n max: this.convertStringToNumber(redRangeMax)\n },\n yellowRange: {\n min: this.convertStringToNumber(yellowRangeMin),\n max: this.convertStringToNumber(yellowRangeMax)\n },\n chart: renderType || lineType || yAxisType ? { renderType, lineType, yAxisType } : undefined,\n display: renderType ? { renderType } : undefined\n };\n return obj;\n }\n\n getColorValidators(): ValidatorFn[] {\n return [Validators.required, Validators.minLength(4)];\n }\n\n getLabelValidators(): ValidatorFn[] {\n return [Validators.required, Validators.minLength(1), Validators.maxLength(120)];\n }\n\n getDescriptionValidators(): ValidatorFn[] {\n return [];\n }\n\n getFragmentValidators(): ValidatorFn[] {\n return [\n Validators.required,\n Validators.minLength(1),\n Validators.maxLength(120),\n Validators.pattern(/^[^.]*$/)\n ];\n }\n\n getSeriesValidators(): ValidatorFn[] {\n return [\n Validators.required,\n Validators.minLength(1),\n Validators.maxLength(120),\n (control: AbstractControl): ValidationErrors | null => {\n const forbidden = control.value?.includes('.') || '';\n return forbidden\n ? { noPeriods: { message: gettext('Series cannot contain periods.') } }\n : null;\n }\n ];\n }\n\n getMinMaxValidators(): ValidatorFn[] {\n return [C8yValidators.minMaxValidator(), C8yValidators.requireBothMinAndMax()];\n }\n\n getUnitValidators(): ValidatorFn[] {\n return [];\n }\n\n getTargetValidators(): ValidatorFn[] {\n return [];\n }\n\n getOverallValidators(): ValidatorFn[] {\n return [\n C8yValidators.withinScale('redRange.min'),\n C8yValidators.withinScale('redRange.max'),\n C8yValidators.withinScale('yellowRange.min'),\n C8yValidators.withinScale('yellowRange.max'),\n C8yValidators.withinScale('target')\n ];\n }\n\n getMinMaxFormGroup(): FormGroup {\n return this.formBuilder.group(\n { min: [undefined, []], max: [undefined, []] },\n { validators: this.getMinMaxValidators() }\n );\n }\n\n getChartFormGroup(): FormGroup {\n return this.formBuilder.group({\n renderType: [CHART_RENDER_TYPES[0].val, []],\n lineType: [CHART_LINE_TYPES[0].val, []],\n yAxisType: [AXIS_TYPES[0].val, []]\n });\n }\n\n getDisplayFormGroup(): FormGroup {\n return this.formBuilder.group({\n renderType: [CHART_RENDER_TYPES[0].val, []]\n });\n }\n\n getTargetFormGroup(): FormGroup {\n return this.formBuilder.group({\n id: [undefined, []],\n name: [undefined, []]\n });\n }\n\n private convertStringToNumber(possibleString: string | number): number {\n if (typeof possibleString === 'string') {\n try {\n return Number.parseFloat(possibleString);\n } catch {\n return undefined;\n }\n } else {\n return possibleString;\n }\n }\n}\n","import { Component, forwardRef, Input, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormGroup,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { map, take } from 'rxjs/operators';\nimport { DatapointAttributesFormValidationService } from './datapoint-attributes-form-validation.service';\nimport {\n AXIS_TYPES,\n AxisTypes,\n CHART_LINE_TYPES,\n CHART_RENDER_TYPES,\n ChartLineTypes,\n ChartRenderTypes\n} from './datapoint-attributes.model';\nimport { NgIf, NgFor, NgClass, NgTemplateOutlet, KeyValuePipe } from '@angular/common';\nimport {\n C8yTranslateDirective,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n MessagesComponent,\n MessageDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { PopoverDirective } from 'ngx-bootstrap/popover';\n\n@Component({\n selector: 'c8y-datapoint-attributes-form',\n templateUrl: './datapoint-attributes-form.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatapointAttributesFormComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DatapointAttributesFormComponent),\n multi: true\n }\n ],\n imports: [\n FormsModule,\n ReactiveFormsModule,\n NgIf,\n C8yTranslateDirective,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n MessagesComponent,\n NgFor,\n MessageDirective,\n NgClass,\n NgTemplateOutlet,\n PopoverDirective,\n C8yTranslatePipe,\n KeyValuePipe\n ]\n})\nexport class DatapointAttributesFormComponent implements ControlValueAccessor, Validator, OnInit {\n @Input() selectableChartRenderTypes: ChartRenderTypes[] = [];\n @Input() selectableChartLineTypes: ChartLineTypes[] = [];\n @Input() selectableAxisTypes: AxisTypes[] = [];\n @Input() showTarget = true;\n @Input() showRange = true;\n @Input() showYellowRange = true;\n @Input() showRedRange = true;\n @Input() showChart = true;\n @Input() showFormIfTemplateWasSelected = false;\n formGroup: FormGroup;\n range: FormGroup;\n yellowRange: FormGroup;\n redRange: FormGroup;\n chart: FormGroup;\n display: FormGroup;\n rawValue: any = {};\n CHART_RENDER_TYPES: Array<(typeof CHART_RENDER_TYPES)[number]> = Array.from(CHART_RENDER_TYPES);\n CHART_LINE_TYPES: Array<(typeof CHART_LINE_TYPES)[number]> = Array.from(CHART_LINE_TYPES);\n AXIS_TYPES: Array<(typeof AXIS_TYPES)[number]> = Array.from(AXIS_TYPES);\n\n customValidationErrorMessages: {\n [formField: string]: {\n [validationError: string]: string;\n };\n } = {};\n shouldForceInitialValidation = true;\n showOnlyDisplayForm: boolean;\n showChartForm: boolean;\n\n constructor(private formValidations: DatapointAttributesFormValidationService) {\n this.formGroup = this.formValidations.getDefaultFormGroup();\n this.setSubForms();\n }\n\n ngOnInit(): void {\n this.initializeFormVisibility();\n this.filterChartTypes();\n }\n\n validate(_control: AbstractControl): ValidationErrors {\n if (this.formGroup?.get('series')?.errors?.noPeriods) {\n return this.formGroup?.get('series')?.errors;\n }\n return this.formGroup?.valid ? null : { formInvalid: {} };\n }\n\n writeValue(obj: any): void {\n this.rawValue = obj || {};\n if (obj) {\n this.formGroup.patchValue(this.formValidations.convertToFormGroupFormat(obj), {\n emitEvent: false\n });\n }\n if (this.shouldForceInitialValidation) {\n queueMicrotask(() => {\n this.formGroup.updateValueAndValidity();\n });\n this.shouldForceInitialValidation = false;\n }\n }\n\n registerOnChange(fn: any): void {\n this.formGroup.valueChanges\n .pipe(\n map(formValue => this.formValidations.convertToBackendFormat(formValue, this.showChart)),\n map(formValue => Object.assign(this.rawValue, formValue))\n )\n .subscribe(fn);\n }\n\n registerOnTouched(fn: any): void {\n this.formGroup.valueChanges.pipe(take(1)).subscribe(fn);\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (this.formGroup?.disabled === isDisabled) {\n return;\n }\n isDisabled ? this.formGroup.disable() : this.formGroup.enable();\n }\n\n private setSubForms() {\n if (!this.formGroup) {\n this.range = this.yellowRange = this.redRange = this.chart = undefined;\n return;\n }\n this.range = this.formGroup.get('range') as FormGroup;\n this.yellowRange = this.formGroup.get('yellowRange') as FormGroup;\n this.redRange = this.formGroup.get('redRange') as FormGroup;\n this.chart = this.formGroup.get('chart') as FormGroup;\n this.display = this.formGroup.get('display') as FormGroup;\n }\n\n private initializeFormVisibility(): void {\n this.showChartForm = this.chart && this.showChart;\n\n const hasLineTypes = !!this.selectableChartLineTypes?.length;\n const hasAxisTypes = !!this.selectableAxisTypes?.length;\n const hasRenderTypes =\n this.selectableChartRenderTypes?.length > 0 || this.selectableChartRenderTypes === undefined;\n\n this.showOnlyDisplayForm =\n !this.showChartForm && !hasLineTypes && !hasAxisTypes && hasRenderTypes;\n }\n\n private filterChartTypes(): void {\n this.filterRenderTypes();\n this.filterLineTypes();\n this.filterAxisTypes();\n }\n\n private filterRenderTypes(): void {\n if (!!this.selectableChartRenderTypes?.length) {\n this.CHART_RENDER_TYPES = this.CHART_RENDER_TYPES.filter(renderType =>\n this.selectableChartRenderTypes.includes(renderType.val)\n );\n }\n }\n\n private filterLineTypes(): void {\n if (!!this.selectableChartLineTypes?.length) {\n this.CHART_LINE_TYPES = this.CHART_LINE_TYPES.filter(lineType =>\n this.selectableChartLineTypes.includes(lineType.val)\n );\n }\n }\n\n private filterAxisTypes(): void {\n if (!!this.selectableAxisTypes?.length) {\n this.AXIS_TYPES = this.AXIS_TYPES.filter(axisType =>\n this.selectableAxisTypes.includes(axisType.val)\n );\n }\n }\n}\n","<div [formGroup]=\"formGroup\">\n <ng-container *ngIf=\"!rawValue?.__template || showFormIfTemplateWasSelected\">\n <fieldset\n class=\"c8y-fieldset\"\n *ngIf=\"formGroup.controls?.label || formGroup.controls?.unit || formGroup.controls?.target\"\n >\n <legend translate>Details</legend>\n <div class=\"row\">\n <div\n class=\"col-md-6\"\n *ngIf=\"formGroup.controls?.label\"\n >\n <c8y-form-group class=\"form-group-sm\">\n <label translate>Label</label>\n <input\n class=\"form-control\"\n name=\"label\"\n formControlName=\"label\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'Temperature' }\"\n />\n <c8y-messages\n [show]=\"formGroup.controls.label.touched && formGroup.controls.label.errors\"\n >\n <c8y-message\n *ngFor=\"let item of customValidationErrorMessages['label'] | keyvalue\"\n [name]=\"item.key\"\n [text]=\"item.value\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-md-6\"\n *ngIf=\"formGroup.controls?.unit\"\n >\n <c8y-form-group class=\"form-group-sm\">\n <label translate>Unit</label>\n <input\n class=\"form-control\"\n name=\"unit\"\n formControlName=\"unit\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'ºC' }\"\n />\n <c8y-messages\n [show]=\"formGroup.controls.unit.touched && formGroup.controls.unit.errors\"\n >\n <c8y-message\n *ngFor=\"let item of customValidationErrorMessages['unit'] | keyvalue\"\n [name]=\"item.key\"\n [text]=\"item.value\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-md-6\"\n *ngIf=\"formGroup.controls?.target && showTarget\"\n >\n <c8y-form-group class=\"form-group-sm\"\n [ngClass]=\"{\n 'has-error':\n (range?.touched || formGroup.controls.target.touched) &&\n formGroup.controls?.target?.errors\n }\"\n >\n <label translate>Target</label>\n <input\n class=\"form-control\"\n name=\"target\"\n type=\"number\"\n formControlName=\"target\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 25 }\"\n />\n <c8y-messages\n [show]=\"\n (range?.touched || formGroup.controls.target.touched) &&\n formGroup.controls.target.errors\n \"\n >\n <c8y-message\n *ngFor=\"let item of customValidationErrorMessages['target'] | keyvalue\"\n [name]=\"item.key\"\n [text]=\"item.value\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n <fieldset\n class=\"c8y-fieldset\"\n *ngIf=\"range && showRange\"\n >\n <legend translate>Range</legend>\n <div\n class=\"row\"\n formGroupName=\"range\"\n >\n <div class=\"col-md-6\">\n <c8y-form-group class=\"form-group-sm\"\n [ngClass]=\"{ 'has-error': range?.touched && range?.controls?.min?.errors }\"\n >\n <label translate>Min</label>\n <input\n class=\"form-control\"\n name=\"min\"\n type=\"number\"\n formControlName=\"min\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 0 }\"\n />\n <c8y-messages [show]=\"range?.touched && range.controls?.min?.errors\"></c8y-messages>\n </c8y-form-group>\n </div>\n <div class=\"col-md-6\">\n <c8y-form-group class=\"form-group-sm\"\n [ngClass]=\"{ 'has-error': range?.touched && range?.controls?.max?.errors }\"\n >\n <label translate>Max</label>\n <input\n class=\"form-control\"\n name=\"max\"\n type=\"number\"\n formControlName=\"max\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 100 }\"\n />\n <c8y-messages [show]=\"range?.touched && range.controls?.max?.errors\">\n <c8y-message\n *ngFor=\"let item of customValidationErrorMessages['max'] | keyvalue\"\n [name]=\"item.key\"\n [text]=\"item.value\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n\n <fieldset\n class=\"c8y-fieldset\"\n formGroupName=\"yellowRange\"\n *ngIf=\"yellowRange && showYellowRange\"\n >\n <legend translate>Yellow range</legend>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <c8y-form-group class=\"form-group-sm\"\n [ngClass]=\"{\n 'has-error':\n (range?.touched || yellowRange?.touched) && yellowRange?.controls?.min?.errors\n }\"\n >\n <label translate>Min</label>\n <input\n class=\"form-control\"\n name=\"min\"\n type=\"number\"\n formControlName=\"min\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 50 }\"\n />\n <c8y-messages\n [show]=\"(range?.touched || yellowRange?.touched) && yellowRange.controls?.min?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n\n <div class=\"col-md-6\">\n <c8y-form-group class=\"form-group-sm\"\n [ngClass]=\"{\n 'has-error':\n (range?.touched || yellowRange?.touched) && yellowRange?.controls?.max?.errors\n }\"\n >\n <label translate>Max</label>\n <input\n class=\"form-control\"\n name=\"max\"\n type=\"number\"\n formControlName=\"max\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 75 }\"\n />\n <c8y-messages\n [show]=\"(range?.touched || yellowRange?.touched) && yellowRange.controls?.max?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n\n <fieldset\n class=\"c8y-fieldset\"\n formGroupName=\"redRange\"\n *ngIf=\"redRange && showRedRange\"\n >\n <legend translate>Red range</legend>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <c8y-form-group class=\"form-group-sm\"\n [ngClass]=\"{\n 'has-error': (range?.touched || redRange?.touched) && redRange?.controls?.min?.errors\n }\"\n >\n <label translate>Min</label>\n <input\n class=\"form-control\"\n name=\"min\"\n type=\"number\"\n formControlName=\"min\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 75 }\"\n />\n <c8y-messages\n [show]=\"(range?.touched || redRange?.touched) && redRange.controls?.min?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n\n <div class=\"col-md-6\">\n <c8y-form-group class=\"form-group-sm\"\n [ngClass]=\"{\n 'has-error': (range?.touched || redRange?.touched) && redRange?.controls?.max?.errors\n }\"\n >\n <label translate>Max</label>\n <input\n class=\"form-control\"\n name=\"max\"\n type=\"number\"\n formControlName=\"max\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 100 }\"\n />\n <c8y-messages\n [show]=\"(range?.touched || redRange?.touched) && redRange.controls?.max?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n </ng-container>\n\n <fieldset\n class=\"c8y-fieldset\"\n *ngIf=\"showChartForm\"\n formGroupName=\"chart\"\n >\n <legend translate>Chart</legend>\n <div class=\"tight-grid\">\n <div\n class=\"col-xs-6 col-sm-4\"\n *ngIf=\"selectableChartRenderTypes?.length !== 0\"\n >\n <c8y-form-group class=\"form-group-sm\">\n <ng-container *ngTemplateOutlet=\"displayHelpButton\"></ng-container>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n formControlName=\"renderType\"\n >\n <option\n *ngFor=\"let type of CHART_RENDER_TYPES\"\n [ngValue]=\"type.val\"\n >\n {{ type.text | translate }}\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n <div\n class=\"col-xs-6 col-sm-4\"\n *ngIf=\"selectableChartLineTypes?.length !== 0\"\n >\n <c8y-form-group class=\"form-group-sm\">\n <label\n for=\"chartType\"\n translate\n >\n Chart type\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n formControlName=\"lineType\"\n >\n <option\n *ngFor=\"let type of CHART_LINE_TYPES\"\n [ngValue]=\"type.val\"\n >\n {{ type.text | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </c8y-form-group>\n </div>\n <div\n class=\"col-xs-6 col-sm-4\"\n *ngIf=\"selectableAxisTypes?.length !== 0\"\n >\n <c8y-form-group class=\"form-group-sm\">\n <label\n for=\"yAxis\"\n translate\n >\n Y-axis\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n formControlName=\"yAxisType\"\n >\n <option\n *ngFor=\"let type of AXIS_TYPES\"\n [ngValue]=\"type.val\"\n >\n {{ type.text | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n <fieldset\n class=\"c8y-fieldset\"\n *ngIf=\"showOnlyDisplayForm\"\n formGroupName=\"display\"\n >\n <legend>\n <ng-container *ngTemplateOutlet=\"displayHelpButton\"></ng-container>\n </legend>\n <div class=\"tight-grid\">\n <div class=\"col-xs-6 col-sm-4\">\n <c8y-form-group class=\"form-group-sm\">\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n formControlName=\"renderType\"\n >\n <option\n *ngFor=\"let type of CHART_RENDER_TYPES\"\n [ngValue]=\"type.val\"\n >\n {{ type.text | translate }}\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n</div>\n\n<ng-template #displayHelpButton>\n <label>\n {{ 'Display' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ 'Value displayed when data is aggregated' | translate }}\"\n triggers=\"focus\"\n type=\"button\"\n placement=\"right\"\n ></button>\n </label>\n</ng-template>\n","import { IIdentified, IManagedObject } from '@c8y/client';\nimport { MillerViewComponent } from '@c8y/ngx-components/assets-navigator';\nimport { SupportedIconsSuggestions } from '@c8y/ngx-components/icon-selector/icons';\nimport {\n AxisTypes,\n ChartLineTypes,\n ChartRenderTypes\n} from './datapoint-attributes-form/datapoint-attributes.model';\n\nexport const DATAPOINT_LIBRARY_FRAGMENT = 'c8y_Kpi';\n\nexport interface KPIDetails {\n fragment: string;\n series: string;\n orientation?: string | null;\n __target?: IIdentified | null;\n __active?: boolean | null;\n __template?: string | null | number;\n unit?: string | null;\n min?: number | null;\n color?: string | null;\n max?: number | null;\n label?: string | null;\n target?: number | null;\n yellowRangeMax?: number | null;\n yellowRangeMin?: number | null;\n redRangeMin?: number | null;\n redRangeMax?: number | null;\n description?: string | null;\n renderType?: string | null;\n lineType?: string | null;\n yAxisType?: string | null;\n [key: string]: any;\n}\n\nexport interface ManagedObjectKPI extends IManagedObject {\n [DATAPOINT_LIBRARY_FRAGMENT]: KPIDetails;\n}\n\nexport interface DatapointAction {\n label: string;\n callback: (datapoint: KPIDetails) => void;\n icon: SupportedIconsSuggestions;\n}\n\nexport interface DatapointAttributesFormConfig {\n showTarget: boolean;\n showRange: boolean;\n showYellowRange: boolean;\n showRedRange: boolean;\n showChart: boolean;\n showFormIfTemplateWasSelected: boolean;\n selectableChartRenderTypes: ChartRenderTypes[];\n selectableChartLineTypes: ChartLineTypes[];\n selectableAxisTypes: AxisTypes[];\n}\n\nexport type DatapointSelectorModalAssetSelectorOptions = Omit<\n MillerViewComponent,\n | 'multi'\n | 'singleColumn'\n | 'onSelected'\n | 'millerViewWrapper'\n | 'columns'\n | 'ngOnInit'\n | 'ngOnChanges'\n | 'addNewColumn'\n | 'onSelectionChange'\n>;\n","import { Injectable } from '@angular/core';\nimport {\n IIdentified,\n IManagedObject,\n InventoryService,\n IResultList,\n MeasurementService\n} from '@c8y/client';\nimport { AppStateService, ColorService, MAX_PAGE_SIZE } from '@c8y/ngx-components';\nimport { get, sortBy, uniq } from 'lodash-es';\nimport { filter } from 'rxjs/operators';\nimport {\n DATAPOINT_LIBRARY_FRAGMENT,\n KPIDetails,\n ManagedObjectKPI\n} from './datapoint-selection.model';\n\n@Injectable({ providedIn: 'root' })\nexport class DatapointLibraryService {\n protected cache: Promise<ManagedObjectKPI[]>;\n constructor(\n private inventory: InventoryService,\n private appState: AppStateService,\n private measurements: MeasurementService,\n private color: ColorService\n ) {\n this.appState.currentUser.pipe(filter(user => !user)).subscribe(() => {\n this.cache = undefined;\n });\n }\n\n async getAllDatapointLibraryEntriesCached(forceCacheRenew = false): Promise<ManagedObjectKPI[]> {\n if (forceCacheRenew) {\n this.cache = undefined;\n }\n if (!this.cache) {\n this.cache = this.getAllDatapointLibraryEntries();\n }\n return this.cache;\n }\n\n async getFirstDatapointLibraryPage(): Promise<IResultList<ManagedObjectKPI>> {\n const filterObj = {\n currentPage: 1,\n pageSize: 50,\n fragmentType: DATAPOINT_LIBRARY_FRAGMENT,\n withTotalPages: true\n };\n return (await this.inventory.list(filterObj)) as IResultList<ManagedObjectKPI>;\n }\n\n async getAllDatapointLibraryItemsCached(): Promise<KPIDetails[]> {\n if (!this.cache) {\n this.cache = this.getAllDatapointLibraryEntries();\n }\n const res = await this.cache;\n return res.map(tmp => tmp[DATAPOINT_LIBRARY_FRAGMENT]);\n }\n\n async updateDatapoints(\n datapoints: KPIDetails[],\n skipUpdatingTarget = false\n ): Promise<KPIDetails[]> {\n if (!Array.isArray(datapoints)) {\n return datapoints;\n }\n const currentTargetsPromise: Promise<IManagedObject[]> = !skipUpdatingTarget\n ? this.getCurrentVersionOfTargetsFromDatapoints(datapoints)\n : Promise.resolve([]);\n const [currentTemplates, currentTargets] = await Promise.all([\n this.getCurrentTemplatesFromDatapoints(datapoints),\n currentTargetsPromise\n ]);\n const currentTemplateVersions = currentTemplates\n .map(tmp => this.mapDatapointLibraryEntry(tmp as ManagedObjectKPI))\n .filter(tmp => !!tmp);\n for (const datapoint of datapoints) {\n const { fragment, series, __active, __target, color, label, __template } = datapoint;\n const foundCurrentTemplateVersion = currentTemplateVersions.find(\n tmp => tmp.__template === datapoint.__template\n );\n if (foundCurrentTemplateVersion) {\n Object.assign(datapoint, foundCurrentTemplateVersion);\n Object.assign(datapoint, {\n fragment,\n series,\n __active,\n __target,\n color,\n label,\n __template\n });\n }\n\n const foundCurrentTarget = currentTargets.find(target => target.id === __target?.id);\n if (foundCurrentTarget) {\n const { id, name } = foundCurrentTarget;\n datapoint.__target = { id, name };\n }\n }\n return datapoints;\n }\n\n async getDatapointsOfAsset(\n parentReference: IIdentified,\n ignoreDatapointTemplates?: boolean,\n datapointTemplatesOnly = false\n ): Promise<KPIDetails[]> {\n const [kpiResponse, details] = await Promise.all([\n (ignoreDatapointTemplates\n ? Promise.resolve(null)\n : this.inventory.assetKPIsList(parentReference, { pageSize: MAX_PAGE_SIZE })) as Promise<\n IResultList<ManagedObjectKPI>\n >,\n this.inventory.getMeasurementsAndSeries(parentReference)\n ]);\n const kpis = kpiResponse && kpiResponse.data ? kpiResponse.data : [];\n const sortedDetails = sortBy(details, ['fragment', 'series']);\n\n return await this.combineFragmentSeriesTuplesWithDetails(\n sortedDetails,\n parentReference,\n kpis,\n datapointTemplatesOnly\n );\n }\n\n /**\n * Requests the last measurement with the given fragment and series to extract it's unit.\n * If the source attribute is provided, it will check the last measurement for this specific source.\n * @returns found unit or an empty string instead\n */\n async guessUnitOfDatapoint(\n fragment: string,\n series: string,\n source?: IIdentified\n ): Promise<string> {\n const measurementfilter: any = {\n valueFragmentSeries: series,\n valueFragmentType: fragment,\n pageSize: 1,\n revert: true,\n dateFrom: '1970-01-01'\n };\n if (source?.id) {\n measurementfilter.source = source?.id;\n }\n try {\n const { data: lastMeasurements } = await this.measurements.list(measurementfilter);\n const measurement = lastMeasurements[0];\n if (measurement) {\n const pathToUnit = `${fragment}.${series}.unit`;\n const unit = get(measurement, pathToUnit);\n if (unit?.length && typeof unit === 'string') {\n return unit;\n }\n }\n } catch {\n // nothing to do\n }\n return '';\n }\n\n protected async combineFragmentSeriesTuplesWithDetails(\n tuples: Array<{ fragment: string; series: string }>,\n target: IIdentified,\n kpis: ManagedObjectKPI[],\n datapointTemplatesOnly = false\n ) {\n const datapoints = tuples\n .map(tuple => {\n const foundDatapointLibraryEntry = kpis.find(\n kpi =>\n kpi[DATAPOINT_LIBRARY_FRAGMENT] &&\n kpi[DATAPOINT_LIBRARY_FRAGMENT].fragment === tuple.fragment &&\n kpi[DATAPOINT_LIBRARY_FRAGMENT].series === tuple.series\n );\n if (!foundDatapointLibraryEntry && datapointTemplatesOnly) {\n return null;\n }\n const datapoint: KPIDetails =\n this.mapDatapointLibraryEntry(foundDatapointLibraryEntry) || tuple;\n if (!datapoint.label) {\n datapoint.label = `${datapoint.fragment} → ${datapoint.series}`;\n }\n if (!datapoint.unit?.length) {\n datapoint.unit = '';\n }\n datapoint.__target = target;\n return datapoint;\n })\n .filter(Boolean);\n await this.assignColorToDatapoints(datapoints);\n return datapoints;\n }\n\n protected async assignColorToDatapoints(datapoints: KPIDetails[]): Promise<void> {\n const datapointsWithoutColor = datapoints.filter(datapoint => !datapoint.color);\n await Promise.all(\n datapointsWithoutColor.map(datapoint =>\n this.color\n .generateColorForDatapoint(datapoint.fragment, datapoint.series)\n .then(color => (datapoint.color = color))\n )\n );\n }\n\n protected async getAllDatapointLibraryEntries(): Promise<ManagedObjectKPI[]> {\n const entries = new Array<ManagedObjectKPI>();\n const filterObj = {\n currentPage: 1,\n pageSize: MAX_PAGE_SIZE,\n fragmentType: DATAPOINT_LIBRARY_FRAGMENT\n };\n let res = await this.inventory.list(filterObj);\n while (res.data.length) {\n entries.push(...(res.data as ManagedObjectKPI[]));\n if (res.data.length < res.paging.pageSize) {\n break;\n }\n if (!res.paging.nextPage) {\n break;\n }\n\n res = await res.paging.next();\n }\n return entries;\n }\n\n protected mapDatapointLibraryEntry(entry: ManagedObjectKPI): KPIDetails {\n if (!entry || !entry[DATAPOINT_LIBRARY_FRAGMENT]) {\n return null;\n }\n\n const datapoint = entry[DATAPOINT_LIBRARY_FRAGMENT];\n datapoint.__template = entry.id;\n return datapoint;\n }\n\n protected async getCurrentTemplatesFromDatapoints(\n datapoints: KPIDetails[]\n ): Promise<IManagedObject[]> {\n const datapointsWithTemplateId = datapoints.filter(dp => !!dp.__template);\n const usedTemplateIds = datapointsWithTemplateId.map(dp => dp.__template);\n return await this.getMOsByIds(usedTemplateIds);\n }\n\n protected async getCurrentVersionOfTargetsFromDatapoints(\n datapoints: KPIDetails[]\n ): Promise<IManagedObject[]> {\n const datapointsWithTarget = datapoints.filter(dp => !!dp.__target?.id);\n const usedTargetIds = datapointsWithTarget.map(dp => dp.__target.id);\n return await this.getMOsByIds(usedTargetIds);\n }\n\n protected async getMOsByIds(ids: Array<string | number>): Promise<IManagedObject[]> {\n const uniqManagedObjectIds = uniq(ids);\n if (!uniqManagedObjectIds.length) {\n return [];\n }\n try {\n const { data: managedObjects } = await this.inventory.list({\n ids: uniqManagedObjectIds.join(),\n pageSize: MAX_PAGE_SIZE\n });\n return managedObjects;\n } catch {\n // Fail silently in case we are not able to talk to the inventory API.\n // Should only be reached in case of an server side error.\n // instead of failing, pretend like we didn't receive any items.\n console.warn(\n `Failed to get the current version of the following managedObjects: ${uniqManagedObjectIds.join()}.`\n );\n return [];\n }\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { gettext, IconDirective, C8yTranslatePipe } from '@c8y/ngx-components';\nimport { KPIDetails } from '../datapoint-selection.model';\nimport { NgFor, NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault } from '@angular/common';\n\n@Component({\n selector: 'c8y-datapoint-template-popover',\n templateUrl: './datapoint-template-popover.component.html',\n imports: [IconDirective, NgFor, NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault, C8yTranslatePipe]\n})\nexport class DatapointTemplatePopoverComponent {\n @Input() datapoint: KPIDetails;\n @Input() attributes: Array<{\n label: string;\n labelColor?: string;\n key: keyof KPIDetails;\n }> = [\n {\n label: gettext('Fragment'),\n key: 'fragment'\n },\n {\n label: gettext('Series'),\n key: 'series'\n },\n {\n label: gettext('Unit'),\n key: 'unit'\n },\n {\n label: gettext('Range'),\n key: 'min'\n },\n {\n label: gettext('Target'),\n key: 'target'\n },\n {\n label: gettext('Yellow range'),\n labelColor: 'yellow',\n key: 'yellowRangeMin'\n },\n {\n label: gettext('Red range'),\n labelColor: 'red',\n key: 'redRangeMin'\n }\n ];\n}\n","<p class=\"text-medium\">\n <i c8yIcon=\"circle\" [style.color]=\"datapoint.color\"></i>\n {{ datapoint.label }}\n</p>\n<p>{{ datapoint.description }}</p>\n\n<ul class=\"list-unstyled small p-t-16\">\n <ng-container *ngFor=\"let attribute of attributes; let i = index\">\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\"\n *ngIf=\"datapoint[attribute.key] !== undefined\"\n >\n <label class=\"small m-b-0 m-r-8\">\n <i *ngIf=\"attribute.labelColor\" c8yIcon=\"square\" [style.color]=\"attribute.labelColor\"></i>\n {{ attribute.label | translate }}\n </label>\n <ng-container [ngSwitch]=\"attribute.key\">\n <span *ngSwitchCase=\"'min'\" class=\"m-l-auto\">\n {{ datapoint['min'] }} — {{ datapoint['max'] }}\n </span>\n <span *ngSwitchCase=\"'yellowRangeMin'\" class=\"m-l-auto\">\n {{ datapoint['yellowRangeMin'] }} — {{ datapoint['yellowRangeMax'] }}\n </span>\n <span *ngSwitchCase=\"'redRangeMin'\" class=\"m-l-auto\">\n {{ datapoint['redRangeMin'] }} — {{ datapoint['redRangeMax'] }}\n </span>\n <span *ngSwitchDefault class=\"m-l-auto\">\n {{ datapoint[attribute.key] }}\n </span>\n </ng-container>\n </li>\n </ng-container>\n</ul>\n","import { Component, ContentChild, EventEmitter, forwardRef, Input, Output } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormBuilder,\n FormGroup,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { IResultList } from '@c8y/client';\nimport { Observable, pipe } from 'rxjs';\nimport { map, startWith, take } from 'rxjs/operators';\nimport {\n ForOfFilterPipe,\n ListItemDragHandleComponent,\n ListItemComponent,\n ListItemCheckboxComponent,\n RequiredInputPlaceholderDirective,\n HighlightComponent,\n IconDirective,\n ListItemActionComponent,\n ListItemCollapseComponent,\n C8yTranslateDirective,\n TypeaheadComponent,\n ForOfDirective,\n ListItemIconComponent,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport {\n DatapointAction,\n DatapointAttributesFormConfig,\n DATAPOINT_LIBRARY_FRAGMENT,\n KPIDetails,\n ManagedObjectKPI\n} from '../datapoint-selection.model';\n\nimport { NgIf, NgFor, AsyncPipe } from '@angular/common';\nimport { PopoverDirective } from 'ngx-bootstrap/popover';\nimport { TooltipDirective } from 'ngx-bootstrap/tooltip';\nimport { DatapointTemplatePopoverComponent } from '../datapoint-template-popover/datapoint-template-popover.component';\nimport { DatapointAttributesFormComponent } from '../datapoint-attributes-form/datapoint-attributes-form.component';\n\nexport const AddButtonTypes = {\n none: 'none',\n addRemove: 'add-remove',\n select: 'select'\n} as const;\nexport type AddButtonType = (typeof AddButtonTypes)[keyof typeof AddButtonTypes];\n\n@Component({\n selector: 'c8y-datapoint-selector-list-item',\n templateUrl: './datapoint-selector-list-item.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatapointSelectorListItemComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DatapointSelectorListItemComponent),\n multi: true\n }\n ],\n imports: [\n ListItemComponent,\n FormsModule,\n ReactiveFormsModule,\n ListItemDragHandleComponent,\n NgIf,\n ListItemCheckboxComponent,\n RequiredInputPlaceholderDirective,\n HighlightComponent,\n IconDirective,\n PopoverDirective,\n TooltipDirective,\n ListItemActionComponent,\n NgFor,\n ListItemCollapseComponent,\n C8yTranslateDirective,\n TypeaheadComponent,\n ForOfDirective,\n ListItemIconComponent,\n DatapointTemplatePopoverComponent,\n DatapointAttributesFormComponent,\n C8yTranslatePipe,\n AsyncPipe\n ]\n})\nexport class DatapointSelectorListItemComponent implements ControlValueAccessor, Validator {\n formGroup: FormGroup;\n @Input() defaultFormOptions: Partial<DatapointAttributesFormConfig> = {};\n @Input() isSelected = false;\n @Input() isCollapsed = true;\n @Input() addButtonType: AddButtonType = AddButtonTypes.addRemove;\n @Input() editable = true;\n @Input() showActiveToggle = false;\n @Input() activeToggleDisabled = false;\n @Input() showOptions = false;\n @Input() datapointLibraryEntries: Observable<IResultList<ManagedObjectKPI>>;\n @Input() actions: DatapointAction[] = [];\n @Input() optionToRemove = false;\n @Input() hasUnlinkTemplateOption = false;\n @Output() added = new EventEmitter<KPIDetails>();\n @Output() removed = new EventEmitter<KPIDetails>();\n @Input() colorPickerDisabled = true;\n @Input() disableTypeaheadIfSelected = false;\n @Input() highlightText: string;\n @ContentChild(ListItemDragHandleComponent) dragHandle: ListItemDragHandleComponent;\n\n pattern = '';\n filterPipe: ForOfFilterPipe<ManagedObjectKPI>;\n isValid$: Observable<boolean>;\n errorMessage: string;\n AddButtonTypes = AddButtonTypes;\n\n constructor(private formBuilder: FormBuilder) {\n this.formGroup = this.formBuilder.group({\n details: [],\n color: [],\n __active: [],\n __target: [],\n fragment: [],\n series: [],\n __template: []\n });\n this.isValid$ = this.formGroup.statusChanges.pipe(\n map(status => status === 'VALID'),\n startWith(this.formGroup.valid)\n );\n }\n\n validate(_control: AbstractControl): ValidationErrors {\n if (this.formGroup?.invalid) {\n Object.keys(this.formGroup.controls).forEach(controlName => {\n const control = this.formGroup.controls[controlName];\n if (control.invalid) {\n const errors = control.errors;\n if (errors) {\n this.errorMessage = Object.values(errors)[0].message;\n }\n }\n });\n }\n return this.formGroup?.valid ? null : { formInvalid: {} };\n }\n\n writeValue(obj: any): void {\n this.formGroup.patchValue({ ...obj, details: obj });\n }\n\n registerOnChange(fn: any): void {\n this.formGroup.valueChanges.pipe(map(tmp => this.transformFormValue(tmp))).subscribe(fn);\n }\n\n registerOnTouched(fn: any): void {\n this.formGroup.valueChanges.pipe(take(1)).subscribe(fn);\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (this.formGroup?.disabled === isDisabled) {\n return;\n }\n isDisabled ? this.formGroup.disable() : this.formGroup.enable();\n }\n\n collapse() {\n this.isCollapsed = !this.isCollapsed;\n }\n\n addOrRemoveItem() {\n const value = this.transformFormValue(this.formGroup.value);\n if (this.isSelected) {\n this.removed.emit(value);\n } else {\n this.added.emit(value);\n }\n }\n\n remove() {\n this.removed.emit(this.transformFormValue(this.formGroup.value));\n }\n\n setPipe(filterStr: string) {\n this.pattern = filterStr;\n this.filterPipe = pipe(\n map((data: ManagedObjectKPI[]) => {\n return this.filterDatapointLabel(data, filterStr);\n })\n );\n }\n\n unlinkDatapointTemplate(): void {\n const details = this.formGroup.value.details || {};\n this.resetUnusedProperties(details);\n this.formGroup.patchValue({ __template: undefined, details });\n }\n\n dataPointTemplateSelected(template: ManagedObjectKPI) {\n const attributesToAssign: Array<keyof KPIDetails> = [\n 'color',\n 'label',\n 'min',\n 'max',\n 'yellowRangeMax',\n 'yellowRangeMin',\n 'redRangeMax',\n 'redRangeMin',\n 'target',\n 'orientation',\n 'unit'\n ];\n const { fragment, series, __target, __active } = this.formGroup.value;\n const dataPoint: KPIDetails = {\n fragment,\n series,\n __active,\n __target,\n __template: template.id\n };\n for (const attribute of attributesToAssign) {\n const value = template[DATAPOINT_LIBRARY_FRAGMENT][attribute];\n dataPoint[attribute] = value;\n }\n this.writeValue(dataPoint);\n this.setPipe('');\n }\n\n private resetUnusedProperties(details: Partial<KPIDetails>): void {\n const { showTarget, showYellowRange, showRedRange } = this.defaultFormOptions;\n details.__template = undefined;\n if (!showTarget) {\n details.target = undefined;\n }\n if (!showYellowRange) {\n details.yellowRangeMin = undefined;\n details.yellowRangeMax = undefined;\n }\n if (!showRedRange) {\n details.redRangeMin = undefined;\n details.redRangeMax = undefined;\n }\n }\n\n private filterDatapointLabel(kpis: ManagedObjectKPI[], filterStr: string): ManagedObjectKPI[] {\n return kpis.filter(\n (mo: ManagedObjectKPI) =>\n mo[DATAPOINT_LIBRARY_FRAGMENT] &&\n mo[DATAPOINT_LIBRARY_FRAGMENT].label &&\n typeof mo[DATAPOINT_LIBRARY_FRAGMENT].label === 'string' &&\n mo[DATAPOINT_LIBRARY_FRAGMENT].label.toLowerCase().indexOf(filterStr.toLowerCase()) > -1\n );\n }\n\n private transformFormValue(formValue: any) {\n const obj = Object.assign({}, formValue.details || {}, formValue);\n delete obj.details;\n return obj;\n }\n}\n","<c8y-li class=\"c8y-list__item__collapse--container-small\" [formGroup]=\"formGroup\" #li>\n <c8y-li-drag-handle><ng-content select=\"c8y-li-drag-handle\"></ng-content></c8y-li-drag-handle>\n <c8y-li-checkbox\n class=\"a-s-center p-r-0\"\n *ngIf=\"showActiveToggle\"\n [displayAsSwitch]=\"true\"\n formControlName=\"__active\"\n (click)=\"$event.stopPropagation()\"\n ></c8y-li-checkbox>\n\n <div class=\"d-flex a-i-center \">\n <div class=\"c8y-list__item__colorpicker p-t-0 p-b-0 p-l-16\" [title]=\"'Change color' | translate\">\n <div class=\"c8y-colorpicker\">\n <input\n type=\"color\"\n [attr.aria-label]=\"'Color' | translate\"\n formControlName=\"color\"\n (click)=\"$event.stopPropagation()\"\n />\n <span [style.background-color]=\"formGroup.value.color\"></span>\n </div>\n </div>\n <button\n class=\"btn-clean data-point-label text-truncate\"\n type=\"button\"\n [attr.aria-expanded]=\"!li.collapsed\"\n (click)=\"li.collapsed = !li.collapsed\"\n >\n <span class=\"text-truncate\" [title]=\"formGroup.value.details?.label\">\n <c8y-highlight\n [text]=\"formGroup.value.details?.label\"\n [pattern]=\"highlightText\"\n [shouldTrimPattern]=\"true\"\n ></c8y-highlight>\n </span>\n <small class=\"text-truncate text-muted icon-flex\" *ngIf=\"formGroup.value.__target\">\n <i c8yIcon=\"exchange\"></i>\n <span class=\"text-truncate\">{{ formGroup.value.__target.name }}</span>\n </small>\n </button>\n\n <button\n class=\"btn btn-dot btn-dot--danger m-l-auto\"\n type=\"button\"\n [attr.aria-label]=\"'Invalid' | translate\"\n [popover]=\"\n errorMessage\n ? errorMessage\n : ('Some entries are invalid. Check the input fields with red borders.' | translate)\n \"\n triggers=\"focus\"\n placement=\"left\"\n container=\"body\"\n *ngIf=\"!(isValid$ | async)\"\n >\n <i c8yIcon=\"warning\"></i>\n </button>\n <div class=\"m-l-auto a-s-center p-r-4\" *ngIf=\"addButtonType === AddButtonTypes.addRemove\">\n <button\n class=\"btn btn-dot btn-dot--danger\"\n type=\"button\"\n [attr.aria-label]=\"'Remove' | translate\"\n [tooltip]=\"'Remove from selected data points' | translate\"\n [delay]=\"500\"\n (click)=\"addOrRemoveItem()\"\n *ngIf=\"isSelected\"\n [attr.data-cy]=\"'datapoint-selector-list-item--remove-datapoint-button'\"\n >\n <i class=\"icon-20\" c8yIcon=\"minus-circle\"></i>\n </button>\n <button\n class=\"btn btn-dot text-primary\"\n type=\"button\"\n [attr.aria-label]=\"'Add to selected data points' | translate\"\n [tooltip]=\"'Add to selected data points' | translate\"\n [delay]=\"500\"\n [disabled]=\"!(isValid$ | async)\"\n (click)=\"addOrRemoveItem()\"\n *ngIf=\"!isSelected\"\n [attr.data-cy]=\"'datapoint-selector-list-item--add-datapoint-button'\"\n >\n <i class=\"text-primary icon-20\" c8yIcon=\"plus-circle\"></i>\n </button>\n </div>\n <button\n *ngIf=\"addButtonType === AddButtonTypes.select\"\n class=\"btn btn-default btn-sm m-l-auto\"\n type=\"button\"\n [attr.aria-label]=\"'Select' | translate\"\n [tooltip]=\"'Select data point' | translate\"\n [delay]=\"500\"\n (click)=\"addOrRemoveItem()\"\n >{{ 'Select' | translate }}</button>\n </div>\n\n <c8y-li-action\n *ngIf=\"optionToRemove\"\n [icon]=\"'minus-circle'\"\n [label]=\"'Remove from list' | translate\"\n (click)=\"remove()\"\n ></c8y-li-action>\n <c8y-li-action\n *ngFor=\"let action of actions\"\n [icon]=\"action.icon\"\n [label]=\"action.label\"\n (click)=\"action.callback(formGroup.value)\"\n ></c8y-li-action>\n <c8y-li-collapse *ngIf=\"editable\">\n <div class=\"data-point-details\">\n <ul class=\"list-unstyled small m-b-16\">\n <li class=\"p-t-4 p-b-4 d-flex separator-top-bottom\">\n <label class=\"small m-b-0 m-r-8 a-s-start text-muted\" translate>Fragment</label>\n <span class=\"m-l-auto\">\n <c8y-highlight\n [text]=\"formGroup.value.fragment\"\n [pattern]=\"highlightText\"\n [shouldTrimPattern]=\"true\"\n ></c8y-highlight>\n </span>\n </li>\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom\">\n <label class=\"small m-b-0 m-r-8 a-s-start text-muted\" translate>Series</label>\n <span class=\"m-l-auto\">\n <c8y-highlight\n [text]=\"formGroup.value.series\"\n [pattern]=\"highlightText\"\n [shouldTrimPattern]=\"true\"\n ></c8y-highlight>\n </span>\n </li>\n </ul>\n <div\n class=\"form-group form-group-sm\"\n *ngIf=\"datapointLibraryEntries && datapointLibraryEntries | async as libraryEntries\"\n >\n <label>\n {{ 'Data point template' | translate }} \n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"datapointHintPopoverTemplate\"\n (click)=\"$event.stopPropagation()\"\n triggers=\"focus\"\n placement=\"top\"\n ></button>\n </label>\n \n\n <ng-template #datapointHintPopoverTemplate>\n {{\n 'Using a data point template sets color, label, unit and ranges. Removing the template allows you to set the values manually.'\n | translate\n }}\n </ng-template>\n <div class=\"input-group input-group-sm\">\n <c8y-typeahead\n class=\"flex-grow\"\n [placeholder]=\"'No template' | translate\"\n [ngModel]=\"formGroup.value.__template ? formGroup.value.details : undefined\"\n [ngModelOptions]=\"{ standalone: true }\"\n (onSearch)=\"setPipe($event)\"\n [displayProperty]=\"'label'\"\n [hideNew]=\"true\"\n *ngIf=\"datapointLibraryEntries\"\n [disabled]=\"isSelected && disableTypeaheadIfSelected\"\n >\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link interact\"\n *c8yFor=\"\n let item of datapointLibraryEntries;\n loadMore: 'auto';\n pipe: filterPipe;\n notFound: notFoundTemplate\n \"\n (click)=\"dataPointTemplateSelected(item)\"\n [active]=\"formGroup.value.__template === item.id\"\n [attr.role]=\"'menuitem'\"\n >\n <c8y-highlight [text]=\"item.c8y_Kpi?.label\" [pattern]=\"pattern\"></c8y-highlight>\n <c8y-li-icon icon=\"circle\" [style.color]=\"item.c8y_Kpi?.color\"></c8y-li-icon>\n </c8y-li>\n <ng-template #notFoundTemplate>\n <c8y-li class=\"bg-level-2 p-8\" *ngIf=\"pattern.length > 0\">\n <span>No match found.</span>\n </c8y-li>\n </ng-template>\n </c8y-typeahead>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n [attr.aria-label]=\"'Info' | translate\"\n [popover]=\"datapointOverviewPopoverTemplate\"\n placement=\"left\"\n triggers=\"focus\"\n container=\"body\"\n *ngIf=\"formGroup.value.__template\"\n >\n <i class=\"text-info\" c8yIcon=\"info\"></i>\n </button>\n </div>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n tooltip=\"{{ 'Unlink data point template' | translate }}\"\n [attr.aria-label]=\"'Unlink data point template' | translate\"\n [delay]=\"500\"\n placement=\"left\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n *ngIf=\"formGroup.value.__template && hasUnlinkTemplateOption\"\n (click)=\"unlinkDatapointTemplate()\"\n >\n <i c8yIcon=\"unlink\"></i>\n </button>\n </div>\n </div>\n </div>\n <ng-template #datapointOverviewPopoverTemplate>\n <c8y-datapoint-template-popover\n [datapoint]=\"formGroup.value.details\"\n ></c8y-datapoint-template-popover>\n </ng-template>\n <c8y-datapoint-attributes-form\n *ngIf=\"defaultFormOptions\"\n [showTarget]=\"defaultFormOptions.showTarget\"\n [showRange]=\"defaultFormOptions.showRange\"\n [showYellowRange]=\"defaultFormOptions.showYellowRange\"\n [showRedRange]=\"defaultFormOptions.showRedRange\"\n [showChart]=\"defaultFormOptions.showChart\"\n [showFormIfTemplateWasSelected]=\"defaultFormOptions.showFormIfTemplateWasSelected\"\n [selectableChartRenderTypes]=\"defaultFormOptions.selectableChartRenderTypes\"\n [selectableChartLineTypes]=\"defaultFormOptions.selectableChartLineTypes\"\n [selectableAxisTypes]=\"defaultFormOptions.selectableAxisTypes\"\n formControlName=\"details\"\n ></c8y-datapoint-attributes-form>\n </div>\n </c8y-li-collapse>\n</c8y-li>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { KPIDetails } from '../datapoint-selection.model';\n\n@Pipe({ name: 'includesDatapoint' })\nexport class IncludesDatapointPipe implements PipeTransform {\n transform(datapointList: KPIDetails[], datapoint?: KPIDetails): boolean {\n if (!Array.isArray(datapointList) || !datapoint) {\n return false;\n }\n return datapointList.some(\n tmp =>\n tmp.fragment === datapoint.fragment &&\n tmp.series === datapoint.series &&\n tmp.__target?.id === datapoint.__target?.id\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { KPIDetails } from '../datapoint-selection.model';\n\n@Pipe({ name: 'datapointLabel' })\nexport class DatapointLabelPipe implements PipeTransform {\n transform(\n datapoint: KPIDetails,\n options = { includeDevice: false, doNotUseLabel: false }\n ): string {\n let label = '';\n try {\n if (!options?.doNotUseLabel && datapoint.label) {\n label = datapoint.label;\n } else {\n label = `${datapoint.fragment} → ${datapoint.series}`;\n }\n\n if (options?.includeDevice && (datapoint.__target?.name || datapoint.__target?.id)) {\n label += ` (${datapoint.__target?.name || datapoint.__target?.id})`;\n }\n } catch (e) {\n // nothing to do\n }\n\n return label;\n }\n}\n","import { Component, forwardRef, Input, OnInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { IIdentified, IResultList } from '@c8y/client';\nimport {\n gettext,\n EmptyStateComponent,\n LoadingComponent,\n IconDirective,\n ListGroupComponent,\n ListItemComponent,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { BehaviorSubject, combineLatest, from, Observable } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n map,\n shareReplay,\n switchMap,\n tap\n} from 'rxjs/operators';\nimport { DatapointLibraryService } from './datapoint-library.service';\nimport { KPIDetails, ManagedObjectKPI } from './datapoint-selection.model';\nimport {\n AddButtonTypes,\n DatapointSelectorListItemComponent\n} from './datapoint-selector-list-item/datapoint-selector-list-item.component';\nimport { NgClass, NgIf, NgFor, AsyncPipe } from '@angular/common';\nimport { MillerViewComponent } from '@c8y/ngx-components/assets-navigator';\nimport { IncludesDatapointPipe } from './pipes/includes-datapoint.pipe';\nimport { DatapointLabelPipe } from './pipes/datapoint-label.pipe';\n\n@Component({\n selector: 'c8y-datapoint-selector',\n templateUrl: './datapoint-selector.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => DatapointSelectorComponent)\n }\n ],\n imports: [\n NgClass,\n NgIf,\n MillerViewComponent,\n FormsModule,\n EmptyStateComponent,\n LoadingComponent,\n IconDirective,\n ListGroupComponent,\n ListItemComponent,\n NgFor,\n DatapointSelectorListItemComponent,\n C8yTranslatePipe,\n AsyncPipe,\n IncludesDatapointPipe,\n DatapointLabelPipe\n ]\n})\nexport class DatapointSelectorComponent implements OnInit, ControlValueAccessor {\n @Input() contextAsset: IIdentified;\n @Input() allowChangingContext = true;\n @Input() allowDatapointsFromMultipleAssets = true;\n selectedDatapoints = new Array<KPIDetails>();\n @Input() defaultActiveState = true;\n @Input() ignoreDatapointTemplates = false;\n @Input() datapointTemplatesOnly = false;\n @Input() guessDatapointUnit = true;\n @Input() allowSearch = true;\n @Input() hideSelection = false;\n @Input() itemsEditable = true;\n searchString = '';\n maxNumberOfDatapoints = 50;\n selectorTitle: string;\n emptyStateTitle: string;\n selectedListTitle: string;\n AddButtonTypes = AddButtonTypes;\n\n loadingDatapoints = false;\n assetSelection = new BehaviorSubject<IIdentified>(null);\n datapoints$: Observable<KPIDetails[]>;\n filteredDatapoints$: Observable<KPIDetails[]>;\n searchStringChanges$: Observable<string>;\n datapointLibraryEntries: Observable<IResultList<ManagedObjectKPI>>;\n\n emptyStateSubtitleWhenNoMatchingDataPoints = gettext('Try another search term.');\n emptyStateSubtitleWhenNoDataPointsInAsset = gettext(\n 'Select an asset with data points from the list.'\n );\n\n private searchString$ = new BehaviorSubject('');\n private touched = false;\n private onChange: (quantity: KPIDetails[]) => void;\n private onTouched: () => void;\n\n constructor(private datapointService: DatapointLibraryService) {}\n\n ngOnInit(): void {\n this.selectorTitle = this.datapointTemplatesOnly\n ? gettext('Available data point templates')\n : gettext('Available data points');\n this.emptyStateTitle = this.datapointTemplatesOnly\n ? gettext('No data point templates to display.')\n : gettext('No data points to display.');\n this.selectedListTitle = this.datapointTemplatesOnly\n ? gettext('Selected data point templates')\n : gettext('Selected data points');\n this.setupObservables();\n if (!this.ignoreDatapointTemplates) {\n this.datapointLibraryEntries = from(this.datapointService.getFirstDatapointLibraryPage());\n }\n\n if (this.contextAsset) {\n this.selectionChanged(this.contextAsset);\n }\n }\n\n writeValue(obj: KPIDetails[]): void {\n this.selectedDatapoints = obj;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n datapointAdded(dp: KPIDetails): void {\n this.markAsTouched();\n dp.__active = this.defaultActiveState;\n if (this.guessDatapointUnit && !dp.unit) {\n this.datapointService.guessUnitOfDatapoint(dp.fragment, dp.series, dp.__target).then(unit => {\n dp.unit = unit;\n });\n }\n this.selectedDatapoints = [...this.selectedDatapoints, dp];\n this.emitCurrentSelection();\n }\n\n datapointRemoved(dp: KPIDetails): void {\n this.markAsTouched();\n this.selectedDatapoints = this.selectedDatapoints.filter(\n tmp =>\n tmp.fragment !== dp.fragment ||\n tmp.series !== dp.series ||\n tmp.__target?.id !== dp.__target?.id\n );\n this.emitCurrentSelection();\n }\n\n selectionChanged(evt: IIdentified | IIdentified[]): void {\n if (Array.isArray(evt) && evt.length !== 0) {\n return this.selectAsset(evt[0]);\n }\n\n if (!Array.isArray(evt) && evt.items) {\n return this.selectionChanged(evt.items);\n }\n\n if (!Array.isArray(evt) && evt.id) {\n return this.selectAsset(evt);\n }\n\n // reset selection\n this.assetSelection.next(null);\n }\n\n trackByFn(_index: number, item: KPIDetails): string {\n return `${item.fragment}-${item.__target?.id}-${item.series}`;\n }\n\n searchStringChanged(newValue = ''): void {\n this.searchString$.next(newValue);\n this.searchString = newValue;\n }\n\n private setupObservables(): void {\n this.datapoints$ = this.assetSelection.pipe(\n tap(() => {\n this.loadingDatapoints = true;\n }),\n switchMap(asset =>\n asset?.id\n ? this.datapointService.getDatapointsOfAsset(\n asset,\n this.ignoreDatapointTemplates,\n this.datapointTemplatesOnly\n )\n : []\n ),\n tap(() => (this.loadingDatapoints = false)),\n shareReplay(1)\n );\n\n this.searchStringChanges$ = this.searchString$.pipe(\n distinctUntilChanged(),\n debounceTime(500),\n shareReplay(1)\n );\n\n this.filteredDatapoints$ = combineLatest([this.searchStringChanges$, this.datapoints$]).pipe(\n map(([searchString, datapoints]) => {\n if (!searchString) {\n return datapoints;\n }\n const lowerCaseSearchString = searchString.toLowerCase();\n return datapoints.filter(datapoint =>\n this.includesSearchString(datapoint, lowerCaseSearchString)\n );\n }),\n map(filtered => filtered.slice(0, this.maxNumberOfDatapoints))\n );\n }\n\n private selectAsset(asset: IIdentified) {\n this.assetSelection.next(asset);\n this.searchStringChanged();\n if (!this.allowDatapointsFromMultipleAssets) {\n this.clearSelection();\n }\n }\n\n private clearSelection(): void {\n this.selectedDatapoints = [];\n this.emitCurrentSelection();\n }\n\n private emitCurrentSelection() {\n this.onChange(this.selectedDatapoints);\n }\n\n private markAsTouched() {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n\n private includesSearchString(datapoint: KPIDetails, lowerCaseSearchString: string): boolean {\n const label = datapoint.label?.toLowerCase();\n if (label && label.includes(lowerCaseSearchString)) {\n return true;\n }\n\n const fragment = datapoint.fragment?.toLowerCase();\n if (fragment && fragment.includes(lowerCaseSearchString)) {\n return true;\n }\n\n const series = datapoint.series?.toLowerCase();\n if (series && series.includes(lowerCaseSearchString)) {\n return true;\n }\n\n return false;\n }\n}\n","<div\n class=\"d-grid grid__row--1 fit-h\"\n [ngClass]=\"{\n 'grid__col--3-6-3--md': allowChangingContext && !hideSelection,\n 'grid__col--8-4--md': !allowChangingContext && !hideSelection,\n 'grid__col--4-8--md': allowChangingContext && hideSelection\n }\"\n>\n <div\n class=\"d-flex d-col p-relative bg-level-1\"\n *ngIf=\"allowChangingContext\"\n >\n <c8y-asset-selector-miller\n class=\"d-contents\"\n [(ngModel)]=\"contextAsset\"\n [asset]=\"contextAsset\"\n (onSelected)=\"selectionChanged($event)\"\n [container]=\"''\"\n [config]=\"{\n view: 'miller',\n groupsSelectable: true,\n columnHeaders: true,\n showChildDevices: true,\n showUnassignedDevices: true,\n singleColumn: true,\n search: allowSearch,\n showFilter: true\n }\"\n ></c8y-asset-selector-miller>\n </div>\n <!-- center column -->\n <div class=\"inner-scroll bg-component\">\n <ng-template #noDeviceEmptyState>\n <div class=\"p-16\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"emptyStateTitle | translate\"\n [subtitle]=\"'Select an asset from the list.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </ng-template>\n <ng-template #loadingData>\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-template>\n <div\n class=\"bg-inherit\"\n *ngIf=\"assetSelection | async as asset; else noDeviceEmptyState\"\n >\n <div class=\"p-l-16 p-r-16 p-t-8 p-b-8 sticky-top bg-inherit separator-bottom\">\n <p\n class=\"text-medium text-truncate\"\n [title]=\"selectorTitle | translate\"\n >\n {{ selectorTitle | translate }}\n </p>\n <div\n class=\"input-group input-group-search m-t-4\"\n id=\"search\"\n *ngIf=\"!loadingDatapoints\"\n >\n <input\n class=\"form-control\"\n placeholder=\"Search…\"\n type=\"search\"\n [ngModel]=\"searchString\"\n (ngModelChange)=\"searchStringChanged($event)\"\n />\n <span class=\"input-group-addon\">\n <i\n c8yIcon=\"search\"\n *ngIf=\"!searchString; else clearSearchString\"\n ></i>\n <ng-template #clearSearchString>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n (click)=\"searchStringChanged()\"\n ></i>\n </ng-template>\n </span>\n </div>\n </div>\n <ng-container *ngIf=\"filteredDatapoints$ | async as filteredDatapoints; else loadingData\">\n <ng-container *ngIf=\"!loadingDatapoints; else loadingData\">\n <ng-container *ngIf=\"datapoints$ | async as datapoints\">\n <div\n class=\"p-16\"\n *ngIf=\"!filteredDatapoints.length\"\n >\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"emptyStateTitle | translate\"\n [subtitle]=\"\n datapoints.length\n ? (emptyStateSubtitleWhenNoMatchingDataPoints | translate)\n : (emptyStateSubtitleWhenNoDataPointsInAsset | translate)\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n\n <c8y-list-group>\n <c8y-list-item\n class=\"sticky-top\"\n style=\"top: 72px\"\n *ngIf=\"\n datapoints.length > maxNumberOfDatapoints &&\n filteredDatapoints.length >= maxNumberOfDatapoints\n \"\n >\n <div class=\"alert alert-warning m-b-0\">\n {{\n 'Due to the large number, only a subset of data points is displayed. Use search to narrow down the number of results.'\n | translate\n }}\n </div>\n </c8y-list-item>\n <c8y-datapoint-selector-list-item\n class=\"d-contents\"\n [ngModel]=\"dp\"\n [isSelected]=\"selectedDatapoints | includesDatapoint: dp\"\n [datapointLibraryEntries]=\"datapointLibraryEntries\"\n [disableTypeaheadIfSelected]=\"true\"\n [addButtonType]=\"hideSelection ? AddButtonTypes.select : AddButtonTypes.addRemove\"\n (added)=\"datapointAdded($event)\"\n (removed)=\"datapointRemoved($event)\"\n [highlightText]=\"searchStringChanges$ | async\"\n *ngFor=\"let dp of filteredDatapoints; trackBy: trackByFn\"\n [editable]=\"itemsEditable\"\n ></c8y-datapoint-selector-list-item>\n </c8y-list-group>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <!-- last column -->\n <div\n class=\"inner-scroll bg-level-1\"\n *ngIf=\"!hideSelection\"\n >\n <p\n class=\"text-medium p-l-16 p-r-16 p-t-8 p-b-8 separator-bottom sticky-top text-truncate\"\n [title]=\"selectedListTitle | translate\"\n >\n {{ selectedListTitle | translate }}\n </p>\n <div\n class=\"d-flex flex-wrap gap-8 p-l-16 p-r-16 p-t-8 p-b-16\"\n *ngIf=\"selectedDatapoints?.length\"\n >\n <div\n class=\"c8y-datapoint-pill\"\n *ngFor=\"let selectedDp of selectedDatapoints\"\n >\n <button\n class=\"c8y-datapoint-pill__btn\"\n [title]=\"'Remove' | translate\"\n type=\"button\"\n (click)=\"datapointRemoved(selectedDp)\"\n >\n <i\n class=\"icon-14\"\n c8yIcon=\"remove\"\n ></i>\n </button>\n <div\n class=\"c8y-datapoint-pill__label\"\n [title]=\"selectedDp | datapointLabel: { doNotUseLabel: true, includeDevice: true }\"\n >\n <i\n class=\"m-r-4 icon-14\"\n c8yIcon=\"circle\"\n [style.color]=\"selectedDp.color\"\n ></i>\n <span class=\"text-truncate\">\n <span class=\"text-truncate\">{{ selectedDp | datapointLabel }}</span>\n <small\n class=\"text-muted text-10\"\n *ngIf=\"selectedDp?.__target?.name\"\n >\n {{ selectedDp?.__target?.name }}\n </small>\n </span>\n </div>\n </div>\n </div>\n <div\n class=\"p-r-8\"\n *ngIf=\"!selectedDatapoints || !selectedDatapoints.length\"\n >\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"emptyStateTitle | translate\"\n [subtitle]=\"\n 'Select the asset, then on the available data points list, click on the plus button on the desired data point.'\n | translate\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </div>\n</div>\n","import { Component, ElementRef, OnInit } from '@angular/core';\nimport { IIdentified } from '@c8y/client';\nimport { gettext, C8yTranslateDirective, C8yTranslatePipe } from '@c8y/ngx-components';\nimport { get } from 'lodash-es';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport {\n DatapointSelectorModalAssetSelectorOptions,\n KPIDetails\n} from '../datapoint-selection.model';\nimport { DatapointSelectorComponent } from '../datapoint-selector.component';\nimport { FormsModule } from '@angular/forms';\nimport { NgIf } from '@angular/common';\n\n@Component({\n selector: 'c8y-datapoint-selector-modal',\n templateUrl: './datapoint-selector-modal.component.html',\n imports: [DatapointSelectorComponent, FormsModule, C8yTranslateDirective, NgIf, C8yTranslatePipe]\n})\nexport class DatapointSelectorModalComponent implements OnInit {\n contextAsset: IIdentified;\n allowChangingContext = true;\n allowSearch = true;\n allowDatapointsFromMultipleAssets = true;\n selectedDatapoints = new Array<KPIDetails>();\n title: string = gettext('Data point selector');\n saveButtonLabel: string = gettext('Add data points');\n guessDatapointUnit = true;\n defaultActiveState = true;\n finishWithFirstSelection = false;\n ignoreDatapointTemplates = false;\n itemsEditable = true;\n datapointTemplatesOnly = false;\n assetSelectorConfig: Partial<DatapointSelectorModalAssetSelectorOptions> = {};\n readonly result: Promise<KPIDetails[]> = new Promise((resolve, reject) => {\n this.save = resolve;\n this.cancel = reject;\n });\n\n private save: (value: KPIDetails[]) => void;\n private cancel: (reason?: any) => void;\n\n constructor(\n private bsModal: BsModalRef,\n private elementRef: ElementRef\n ) {}\n\n ngOnInit(): void {\n this.applyWorkaroundForAngularJSModalsThatMightBeOpenedInParallel();\n }\n\n saveChanges(): void {\n this.bsModal.hide();\n this.save(this.selectedDatapoints);\n }\n\n close() {\n this.bsModal.hide();\n this.cancel();\n }\n\n selectionChange(selection: Array<KPIDetails>) {\n this.selectedDatapoints = selection;\n if (this.finishWithFirstSelection) {\n this.saveChanges();\n }\n }\n\n /**\n * changes the z-index of the modal, to make sure this modal is on top.\n * required as angularJS modals are placing them selves on top via adjusting z-index.\n * while angular modals use the order within the dom for this..\n */\n private applyWorkaroundForAngularJSModalsThatMightBeOpenedInParallel() {\n const modalContainer: HTMLElement = get(\n this.elementRef,\n 'nativeElement.parentElement.parentElement.parentElement'\n );\n modalContainer.style.zIndex = '1060';\n }\n}\n","<div class=\"modal-header separator\">\n <h4 id=\"modal-title\" class=\"text-medium\">{{ title | translate }}</h4>\n</div>\n<div class=\"modal-inner-scroll modal-inner-scroll--fixed\" id=\"modal-body\">\n <c8y-datapoint-selector\n [contextAsset]=\"contextAsset\"\n [guessDatapointUnit]=\"guessDatapointUnit\"\n [allowDatapointsFromMultipleAssets]=\"allowDatapointsFromMultipleAssets\"\n [allowChangingContext]=\"allowChangingContext\"\n [defaultActiveState]=\"defaultActiveState\"\n [allowSearch]=\"allowSearch\"\n [hideSelection]=\"finishWithFirstSelection\"\n [ignoreDatapointTemplates]=\"ignoreDatapointTemplates\"\n [datapointTemplatesOnly]=\"datapointTemplatesOnly\"\n [itemsEditable]=\"itemsEditable\"\n [ngModel]=\"selectedDatapoints\"\n (ngModelChange)=\"selectionChange($event)\"\n ></c8y-datapoint-selector>\n</div>\n<div class=\"modal-footer\">\n <button\n type=\"button\"\n [title]=\"'Cancel' | translate\"\n class=\"btn btn-default\"\n (click)=\"close()\"\n translate\n >\n Cancel\n </button>\n <button\n [title]=\"saveButtonLabel | translate\"\n class=\"btn btn-primary\"\n [disabled]=\"!selectedDatapoints?.length\"\n (click)=\"saveChanges()\"\n *ngIf=\"!finishWithFirstSelection\"\n >\n {{ saveButtonLabel | translate }}\n </button>\n</div>\n","import { Injectable } from '@angular/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { KPIDetails } from './datapoint-selection.model';\nimport { DatapointSelectorModalComponent } from './datapoint-selector-modal/datapoint-selector-modal.component';\nimport { DatapointSelectorModalOptions } from './datapoint-selector-modal/datapoint-selector-modal.model';\n\n@Injectable({ providedIn: 'root' })\nexport class DatapointSelectorService {\n constructor(protected modal: BsModalService) {}\n\n selectDataPoints(\n initialState: Partial<DatapointSelectorModalOptions> = {}\n ): Promise<KPIDetails[]> {\n const modal = this.modal.show(DatapointSelectorModalComponent, {\n ignoreBackdropClick: true,\n keyboard: false,\n initialState,\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n class: 'modal-lg'\n });\n const content = modal.content as DatapointSelectorModalComponent;\n return content.result;\n }\n}\n","import {\n CdkDragDrop,\n moveItemInArray,\n CdkDropList,\n CdkDrag,\n CdkDragHandle\n} from '@angular/cdk/drag-drop';\nimport {\n Component,\n forwardRef,\n Input,\n OnChanges,\n OnInit,\n Optional,\n Output,\n SimpleChanges\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormArray,\n FormBuilder,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n ValidatorFn,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { IResultList } from '@c8y/client';\nimport {\n C8yValidators,\n ListGroupComponent,\n C8yTranslateDirective,\n EmptyStateComponent,\n ListItemDragHandleComponent,\n IconDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { WidgetConfigComponent } from '@c8y/ngx-components/context-dashboard';\nimport { from, Observable } from 'rxjs';\nimport { map, shareReplay, take, tap } from 'rxjs/operators';\nimport { DatapointLibraryService } from '../datapoint-library.service';\nimport {\n DatapointAction,\n DatapointAttributesFormConfig,\n KPIDetails,\n ManagedObjectKPI\n} from '../datapoint-selection.model';\nimport { DatapointSelectorModalOptions } from '../datapoint-selector-modal/datapoint-selector-modal.model';\nimport { DatapointSelectorService } from '../datapoint-selector.service';\nimport {\n AddButtonTypes,\n DatapointSelectorListItemComponent\n} from '../datapoint-selector-list-item/datapoint-selector-list-item.component';\nimport { NgIf, NgFor } from '@angular/common';\n\n@Component({\n selector: 'c8y-datapoint-selection-list',\n templateUrl: './datapoint-selection-list.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => DatapointSelectionListComponent)\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DatapointSelectionListComponent),\n multi: true\n }\n ],\n imports: [\n NgIf,\n ListGroupComponent,\n CdkDropList,\n C8yTranslateDirective,\n EmptyStateComponent,\n NgFor,\n FormsModule,\n ReactiveFormsModule,\n DatapointSelectorListItemComponent,\n CdkDrag,\n ListItemDragHandleComponent,\n CdkDragHandle,\n IconDirective,\n C8yTranslatePipe\n ]\n})\nexport class DatapointSelectionListComponent\n implements ControlValueAccessor, Validator, OnInit, OnChanges\n{\n @Input() actions: DatapointAction[] = [];\n /**\n * Enable or disable drag and drop functionality.\n */\n @Input() allowDragAndDrop = true;\n @Input() config: Partial<DatapointSelectorModalOptions> = {};\n @Input() defaultFormOptions: Partial<DatapointAttributesFormConfig> = {};\n /**\n * Maximum number of active datapoints allowed in the list.\n */\n @Input() maxActiveCount: number;\n /**\n * Minimum number of active datapoints required in the list.\n */\n @Input() minActiveCount = 1;\n @Input() resolveContext = true;\n @Input() listTitle = '';\n formArray: FormArray;\n datapointLibraryEntries: Observable<IResultList<ManagedObjectKPI>>;\n maxActiveCountReached = false;\n AddButtonTypes = AddButtonTypes;\n\n @Output() isValid: Observable<boolean>;\n @Output() change: Observable<any[]>;\n private usedValidators: { [key: string]: ValidatorFn } = {};\n\n constructor(\n private datapointSelector: DatapointSelectorService,\n private datapointLibrary: DatapointLibraryService,\n private formBuilder: FormBuilder,\n @Optional() private widgetComponent: WidgetConfigComponent\n ) {\n this.formArray = this.formBuilder.array([]);\n this.isValid = this.formArray.statusChanges.pipe(map(status => status === 'VALID'));\n this.datapointLibraryEntries = from(this.datapointLibrary.getFirstDatapointLibraryPage()).pipe(\n shareReplay()\n );\n this.change = this.formArray.valueChanges.pipe(map(res => this.transformValue(res)));\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!changes.maxActiveCount && !changes.minActiveCount) {\n return;\n }\n if (changes.maxActiveCount) {\n this.usedValidators.maxActiveCount = C8yValidators.maxActiveCount(this.maxActiveCount);\n }\n\n if (changes.minActiveCount) {\n this.usedValidators.minActiveCount = C8yValidators.minActiveCount(this.minActiveCount);\n }\n const validators = Object.values(this.usedValidators);\n this.formArray.setValidators(validators);\n }\n\n registerOnTouched(fn: any): void {\n this.formArray.valueChanges.pipe(take(1)).subscribe(fn);\n }\n\n validate(_control: AbstractControl): ValidationErrors {\n return this.formArray.valid ? null : { formInvalid: {} };\n }\n\n ngOnInit(): void {\n const context = this.widgetComponent?.context;\n if (context?.id && this.resolveContext) {\n const { name, id, c8y_IsDevice } = context;\n this.config.contextAsset = { name, id, c8y_IsDevice };\n }\n }\n\n writeValue(obj: KPIDetails[]): void {\n this.formArray.clear();\n if (obj?.length) {\n obj.forEach(val => {\n const formgroup = this.formBuilder.group({ details: [] });\n formgroup.patchValue({ details: val });\n this.formArray.push(formgroup);\n });\n }\n this.calculateMaxActiveCount();\n }\n\n registerOnChange(fn: any): void {\n this.formArray.valueChanges\n .pipe(\n map(res => this.transformValue(res)),\n // check maxActiveCount\n tap(() => {\n this.calculateMaxActiveCount();\n })\n )\n .subscribe(fn);\n }\n\n add() {\n const allowChangingContext =\n !this.widgetComponent?.isDeviceTypeDashboard && this.config?.allowChangingContext !== false;\n this.datapointSelector\n .selectDataPoints({\n ...(this.config || {}),\n selectedDatapoints: this.transformValue(this.formArray.value),\n defaultActiveState: true,\n allowChangingContext,\n allowSearch: !this.config?.contextAsset\n })\n .then(\n result => {\n this.writeValue(result);\n },\n () => {\n // nothing to do, modal was closed\n }\n );\n }\n\n onItemRemoved(index: number) {\n this.formArray.removeAt(index);\n }\n\n drop(event: CdkDragDrop<KPIDetails[]>) {\n const currentSorting = this.formArray.value;\n moveItemInArray(currentSorting, event.previousIndex, event.currentIndex);\n this.formArray.setValue(currentSorting);\n }\n\n private transformValue(formArrayValue: any[]) {\n if (!formArrayValue) {\n return [];\n }\n return formArrayValue.map(tmp => Object.assign({}, ...Object.values(tmp)));\n }\n\n private calculateMaxActiveCount() {\n if (this.maxActiveCount) {\n const currentlyActive = this.formArray.value.filter(tmp => tmp.details?.__active).length;\n this.maxActiveCountReached = currentlyActive >= this.maxActiveCount;\n }\n this.maxActiveCountReached = false;\n }\n}\n","<div class=\"card-header separator sticky-top bg-inherit\">\n <span\n class=\"card-title h4\"\n *ngIf=\"listTitle\"\n >\n {{ listTitle | translate }}\n </span>\n <span\n class=\"card-title h4\"\n *ngIf=\"!listTitle\"\n >\n {{ 'Data points' | translate }}\n </span>\n</div>\n\n<c8y-list-group\n class=\"flex-grow ff-scroll-fix cdk-droplist\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListDisabled]=\"!allowDragAndDrop || formArray.controls?.length < 2\"\n>\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n ngNonBindable\n *ngIf=\"formArray.errors?.minActiveCount\"\n translate\n [translateParams]=\"formArray.errors?.minActiveCount\"\n >\n At least {{ minActive }} active data points must be selected.\n </div>\n\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n ngNonBindable\n *ngIf=\"formArray.errors?.maxActiveCount\"\n translate\n [translateParams]=\"formArray.errors?.maxActiveCount\"\n >\n At maximum {{ maxActive }} active data points are allowed to be selected.\n </div>\n\n <ng-content select=\".alert\"></ng-content>\n\n <div\n class=\"p-t-8\"\n *ngIf=\"!formArray.controls?.length\"\n >\n <c8y-ui-empty-state\n class=\"p-t-8\"\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points to display.' | translate\"\n [subtitle]=\"'Add your first data point.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <div\n [formGroup]=\"dpForm\"\n *ngFor=\"let dpForm of formArray.controls; let index = index\"\n >\n <c8y-datapoint-selector-list-item\n class=\"d-block\"\n [defaultFormOptions]=\"defaultFormOptions\"\n [activeToggleDisabled]=\"maxActiveCountReached\"\n [showActiveToggle]=\"true\"\n [addButtonType]=\"AddButtonTypes.none\"\n [showOptions]=\"true\"\n [editable]=\"true\"\n [colorPickerDisabled]=\"false\"\n [actions]=\"actions\"\n [optionToRemove]=\"true\"\n [datapointLibraryEntries]=\"datapointLibraryEntries\"\n [hasUnlinkTemplateOption]=\"true\"\n formControlName=\"details\"\n (removed)=\"onItemRemoved(index)\"\n cdkDrag\n >\n <c8y-li-drag-handle\n title=\"{{ 'Click and drag to reorder' | translate }}\"\n cdkDragHandle\n >\n <i c8yIcon=\"drag-reorder\"></i>\n </c8y-li-drag-handle>\n </c8y-datapoint-selector-list-item>\n </div>\n</c8y-list-group>\n\n<div class=\"card-footer bg-inherit\">\n <button\n class=\"btn btn-default btn-sm\"\n [title]=\"'Add data point' | translate\"\n type=\"button\"\n data-cy=\"c8y-datapoint-selection-list--add-datapoint-button\"\n (click)=\"add()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add data point' | translate }}\n </button>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { KPIDetails } from '../datapoint-selection.model';\n\n@Pipe({ name: 'filterDatapoints' })\nexport class FilterDatapointsPipe implements PipeTransform {\n transform(datapoints: KPIDetails[], searchString: string): KPIDetails[] {\n if (!searchString || !datapoints || !Array.isArray(datapoints)) {\n return datapoints;\n }\n const lowerCaseSearchString = searchString.toLowerCase().trim();\n return datapoints.filter(datapoint =>\n this.includesSearchStringIgnoringCasing(datapoint, lowerCaseSearchString)\n );\n }\n\n private includesSearchStringIgnoringCasing(\n datapoint: KPIDetails,\n lowerCaseSearchString: string\n ): boolean {\n const label = datapoint.label?.toLowerCase();\n if (label && label.includes(lowerCaseSearchString)) {\n return true;\n }\n\n const fragment = datapoint.fragment?.toLowerCase();\n if (fragment && fragment.includes(lowerCaseSearchString)) {\n return true;\n }\n\n const series = datapoint.series?.toLowerCase();\n if (series && series.includes(lowerCaseSearchString)) {\n return true;\n }\n\n return false;\n }\n}\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { NgModule } from '@angular/core';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { AssetSelectorModule } from '@c8y/ngx-components/assets-navigator';\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { DatapointAttributesFormComponent } from './datapoint-attributes-form/datapoint-attributes-form.component';\nimport { DatapointSelectionListComponent } from './datapoint-selection-list/datapoint-selection-list.component';\nimport { DatapointSelectorListItemComponent } from './datapoint-selector-list-item/datapoint-selector-list-item.component';\nimport { DatapointSelectorModalComponent } from './datapoint-selector-modal/datapoint-selector-modal.component';\nimport { DatapointSelectorComponent } from './datapoint-selector.component';\nimport { DatapointTemplatePopoverComponent } from './datapoint-template-popover/datapoint-template-popover.component';\nimport { DatapointLabelPipe } from './pipes/datapoint-label.pipe';\nimport { FilterDatapointsPipe } from './pipes/filter-datapoints.pipe';\nimport { IncludesDatapointPipe } from './pipes/includes-datapoint.pipe';\n\n@NgModule({\n imports: [\n AssetSelectorModule,\n CollapseModule,\n CoreModule,\n BsDropdownModule,\n ModalModule,\n TooltipModule,\n PopoverModule,\n DragDropModule,\n DatapointSelectorComponent,\n DatapointSelectorModalComponent,\n DatapointSelectorListItemComponent,\n DatapointSelectionListComponent,\n DatapointTemplatePopoverComponent,\n IncludesDatapointPipe,\n DatapointLabelPipe,\n FilterDatapointsPipe,\n DatapointAttributesFormComponent\n ],\n exports: [\n DatapointSelectorComponent,\n DatapointSelectorModalComponent,\n DatapointSelectorListItemComponent,\n DatapointSelectionListComponent,\n DatapointTemplatePopoverComponent,\n IncludesDatapointPipe,\n DatapointLabelPipe,\n DatapointAttributesFormComponent\n ]\n})\nexport class DatapointSelectorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i1.DatapointAttributesFormValidationService","i2","i1.DatapointLibraryService","i1.DatapointSelectorService","i2.DatapointLibraryService","i3"],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-datapoint-selector.mjs","sources":["../../datapoint-selector/datapoint-attributes-form/datapoint-attributes.model.ts","../../datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.ts","../../datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.ts","../../datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.html","../../datapoint-selector/datapoint-selection.model.ts","../../datapoint-selector/datapoint-library.service.ts","../../datapoint-selector/datapoint-template-popover/datapoint-template-popover.component.ts","../../datapoint-selector/datapoint-template-popover/datapoint-template-popover.component.html","../../datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.ts","../../datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.html","../../datapoint-selector/pipes/includes-datapoint.pipe.ts","../../datapoint-selector/pipes/datapoint-label.pipe.ts","../../datapoint-selector/datapoint-selector.component.ts","../../datapoint-selector/datapoint-selector.component.html","../../datapoint-selector/datapoint-selector-modal/datapoint-selector-modal.component.ts","../../datapoint-selector/datapoint-selector-modal/datapoint-selector-modal.component.html","../../datapoint-selector/datapoint-selector.service.ts","../../datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.ts","../../datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.html","../../datapoint-selector/pipes/filter-datapoints.pipe.ts","../../datapoint-selector/datapoint-selector.module.ts","../../datapoint-selector/c8y-ngx-components-datapoint-selector.ts"],"sourcesContent":["import { gettext } from '@c8y/ngx-components/gettext';\n\nexport const AXIS_TYPES = [\n { val: undefined, text: gettext('Auto') },\n { val: 'left', text: gettext('Left') },\n { val: 'right', text: gettext('Right') }\n] as const;\n\nexport type AxisTypes = (typeof AXIS_TYPES)[1 | 2]['val'];\n\nexport const CHART_LINE_TYPES = [\n { val: 'line', text: gettext('Line') },\n { val: 'points', text: gettext('Points') },\n { val: 'linePoints', text: gettext('Line and points') },\n { val: 'bars', text: gettext('Bars') },\n { val: 'step-before', text: gettext('Step before') },\n { val: 'step-after', text: gettext('Step after') }\n] as const;\n\nexport type ChartLineTypes = (typeof CHART_LINE_TYPES)[number]['val'];\n\nexport const CHART_RENDER_TYPES = [\n { val: 'min', text: gettext('Minimum') },\n { val: 'max', text: gettext('Maximum') },\n { val: 'area', text: gettext('Minimum and maximum') }\n] as const;\n\nexport type ChartRenderTypes = (typeof CHART_RENDER_TYPES)[number]['val'];\n","import { Injectable } from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n ValidationErrors,\n ValidatorFn,\n Validators\n} from '@angular/forms';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { C8yValidators } from '@c8y/ngx-components';\nimport { AXIS_TYPES, CHART_LINE_TYPES, CHART_RENDER_TYPES } from './datapoint-attributes.model';\n\n@Injectable({ providedIn: 'root' })\nexport class DatapointAttributesFormValidationService {\n constructor(private formBuilder: FormBuilder) {}\n\n getDefaultFormGroup(fieldsToRemove: string[] = []): FormGroup {\n const formFields = {\n __active: [true, []],\n __target: this.getTargetFormGroup(),\n __template: [undefined, []],\n color: ['', this.getColorValidators()],\n label: ['', this.getLabelValidators()],\n description: ['', this.getDescriptionValidators()],\n fragment: ['', this.getFragmentValidators()],\n series: ['', this.getSeriesValidators()],\n range: this.getMinMaxFormGroup(),\n unit: [undefined, this.getUnitValidators()],\n target: [undefined, this.getTargetValidators()],\n redRange: this.getMinMaxFormGroup(),\n yellowRange: this.getMinMaxFormGroup(),\n chart: this.getChartFormGroup(),\n display: this.getDisplayFormGroup()\n };\n if (fieldsToRemove.length) {\n for (const field of fieldsToRemove) {\n delete formFields[field];\n }\n }\n return this.formBuilder.group(formFields, {\n validators: this.getOverallValidators()\n });\n }\n\n convertToBackendFormat(formDataStructure: any, showChart: boolean) {\n if (!formDataStructure) {\n return {};\n }\n\n const {\n __active,\n __target,\n __template,\n color,\n label,\n description,\n fragment,\n series,\n range,\n unit,\n target,\n redRange,\n yellowRange,\n chart,\n display\n } = formDataStructure;\n const obj = {\n __active,\n __target,\n __template,\n color,\n label,\n description,\n fragment,\n series,\n min: range?.min,\n max: range?.max,\n unit,\n target,\n redRangeMin: redRange?.min,\n redRangeMax: redRange?.max,\n yellowRangeMin: yellowRange?.min,\n yellowRangeMax: yellowRange?.max,\n renderType: showChart ? chart?.renderType : display?.renderType,\n lineType: chart?.lineType,\n yAxisType: chart?.yAxisType\n };\n return obj;\n }\n\n convertToFormGroupFormat(backendDataStructure: any) {\n if (!backendDataStructure) {\n return {};\n }\n\n const {\n __active,\n __target,\n __template,\n color,\n label,\n description,\n fragment,\n series,\n min,\n max,\n unit,\n target,\n redRangeMin,\n redRangeMax,\n yellowRangeMin,\n yellowRangeMax,\n renderType,\n lineType,\n yAxisType\n } = backendDataStructure;\n\n const obj = {\n __active,\n __target,\n __template,\n color,\n label,\n description,\n fragment,\n series,\n range: {\n min: this.convertStringToNumber(min),\n max: this.convertStringToNumber(max)\n },\n unit,\n target: this.convertStringToNumber(target),\n redRange: {\n min: this.convertStringToNumber(redRangeMin),\n max: this.convertStringToNumber(redRangeMax)\n },\n yellowRange: {\n min: this.convertStringToNumber(yellowRangeMin),\n max: this.convertStringToNumber(yellowRangeMax)\n },\n chart: renderType || lineType || yAxisType ? { renderType, lineType, yAxisType } : undefined,\n display: renderType ? { renderType } : undefined\n };\n return obj;\n }\n\n getColorValidators(): ValidatorFn[] {\n return [Validators.required, Validators.minLength(4)];\n }\n\n getLabelValidators(): ValidatorFn[] {\n return [Validators.required, Validators.minLength(1), Validators.maxLength(120)];\n }\n\n getDescriptionValidators(): ValidatorFn[] {\n return [];\n }\n\n getFragmentValidators(): ValidatorFn[] {\n return [\n Validators.required,\n Validators.minLength(1),\n Validators.maxLength(120),\n Validators.pattern(/^[^.]*$/)\n ];\n }\n\n getSeriesValidators(): ValidatorFn[] {\n return [\n Validators.required,\n Validators.minLength(1),\n Validators.maxLength(120),\n (control: AbstractControl): ValidationErrors | null => {\n const forbidden = control.value?.includes('.') || '';\n return forbidden\n ? { noPeriods: { message: gettext('Series cannot contain periods.') } }\n : null;\n }\n ];\n }\n\n getMinMaxValidators(): ValidatorFn[] {\n return [C8yValidators.minMaxValidator(), C8yValidators.requireBothMinAndMax()];\n }\n\n getUnitValidators(): ValidatorFn[] {\n return [];\n }\n\n getTargetValidators(): ValidatorFn[] {\n return [];\n }\n\n getOverallValidators(): ValidatorFn[] {\n return [\n C8yValidators.withinScale('redRange.min'),\n C8yValidators.withinScale('redRange.max'),\n C8yValidators.withinScale('yellowRange.min'),\n C8yValidators.withinScale('yellowRange.max'),\n C8yValidators.withinScale('target')\n ];\n }\n\n getMinMaxFormGroup(): FormGroup {\n return this.formBuilder.group(\n { min: [undefined, []], max: [undefined, []] },\n { validators: this.getMinMaxValidators() }\n );\n }\n\n getChartFormGroup(): FormGroup {\n return this.formBuilder.group({\n renderType: [CHART_RENDER_TYPES[0].val, []],\n lineType: [CHART_LINE_TYPES[0].val, []],\n yAxisType: [AXIS_TYPES[0].val, []]\n });\n }\n\n getDisplayFormGroup(): FormGroup {\n return this.formBuilder.group({\n renderType: [CHART_RENDER_TYPES[0].val, []]\n });\n }\n\n getTargetFormGroup(): FormGroup {\n return this.formBuilder.group({\n id: [undefined, []],\n name: [undefined, []]\n });\n }\n\n private convertStringToNumber(possibleString: string | number): number {\n if (typeof possibleString === 'string') {\n try {\n return Number.parseFloat(possibleString);\n } catch {\n return undefined;\n }\n } else {\n return possibleString;\n }\n }\n}\n","import { Component, forwardRef, Input, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormGroup,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { map, take } from 'rxjs/operators';\nimport { DatapointAttributesFormValidationService } from './datapoint-attributes-form-validation.service';\nimport {\n AXIS_TYPES,\n AxisTypes,\n CHART_LINE_TYPES,\n CHART_RENDER_TYPES,\n ChartLineTypes,\n ChartRenderTypes\n} from './datapoint-attributes.model';\nimport { NgIf, NgFor, NgClass, NgTemplateOutlet, KeyValuePipe } from '@angular/common';\nimport {\n C8yTranslateDirective,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n MessagesComponent,\n MessageDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { PopoverDirective } from 'ngx-bootstrap/popover';\n\n@Component({\n selector: 'c8y-datapoint-attributes-form',\n templateUrl: './datapoint-attributes-form.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatapointAttributesFormComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DatapointAttributesFormComponent),\n multi: true\n }\n ],\n imports: [\n FormsModule,\n ReactiveFormsModule,\n NgIf,\n C8yTranslateDirective,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n MessagesComponent,\n NgFor,\n MessageDirective,\n NgClass,\n NgTemplateOutlet,\n PopoverDirective,\n C8yTranslatePipe,\n KeyValuePipe\n ]\n})\nexport class DatapointAttributesFormComponent implements ControlValueAccessor, Validator, OnInit {\n @Input() selectableChartRenderTypes: ChartRenderTypes[] = [];\n @Input() selectableChartLineTypes: ChartLineTypes[] = [];\n @Input() selectableAxisTypes: AxisTypes[] = [];\n @Input() showTarget = true;\n @Input() showRange = true;\n @Input() showYellowRange = true;\n @Input() showRedRange = true;\n @Input() showChart = true;\n @Input() showFormIfTemplateWasSelected = false;\n formGroup: FormGroup;\n range: FormGroup;\n yellowRange: FormGroup;\n redRange: FormGroup;\n chart: FormGroup;\n display: FormGroup;\n rawValue: any = {};\n CHART_RENDER_TYPES: Array<(typeof CHART_RENDER_TYPES)[number]> = Array.from(CHART_RENDER_TYPES);\n CHART_LINE_TYPES: Array<(typeof CHART_LINE_TYPES)[number]> = Array.from(CHART_LINE_TYPES);\n AXIS_TYPES: Array<(typeof AXIS_TYPES)[number]> = Array.from(AXIS_TYPES);\n\n customValidationErrorMessages: {\n [formField: string]: {\n [validationError: string]: string;\n };\n } = {};\n shouldForceInitialValidation = true;\n showOnlyDisplayForm: boolean;\n showChartForm: boolean;\n\n constructor(private formValidations: DatapointAttributesFormValidationService) {\n this.formGroup = this.formValidations.getDefaultFormGroup();\n this.setSubForms();\n }\n\n ngOnInit(): void {\n this.initializeFormVisibility();\n this.filterChartTypes();\n }\n\n validate(_control: AbstractControl): ValidationErrors {\n if (this.formGroup?.get('series')?.errors?.noPeriods) {\n return this.formGroup?.get('series')?.errors;\n }\n return this.formGroup?.valid ? null : { formInvalid: {} };\n }\n\n writeValue(obj: any): void {\n this.rawValue = obj || {};\n if (obj) {\n this.formGroup.patchValue(this.formValidations.convertToFormGroupFormat(obj), {\n emitEvent: false\n });\n }\n if (this.shouldForceInitialValidation) {\n queueMicrotask(() => {\n this.formGroup.updateValueAndValidity();\n });\n this.shouldForceInitialValidation = false;\n }\n }\n\n registerOnChange(fn: any): void {\n this.formGroup.valueChanges\n .pipe(\n map(formValue => this.formValidations.convertToBackendFormat(formValue, this.showChart)),\n map(formValue => Object.assign(this.rawValue, formValue))\n )\n .subscribe(fn);\n }\n\n registerOnTouched(fn: any): void {\n this.formGroup.valueChanges.pipe(take(1)).subscribe(fn);\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (this.formGroup?.disabled === isDisabled) {\n return;\n }\n isDisabled ? this.formGroup.disable() : this.formGroup.enable();\n }\n\n private setSubForms() {\n if (!this.formGroup) {\n this.range = this.yellowRange = this.redRange = this.chart = undefined;\n return;\n }\n this.range = this.formGroup.get('range') as FormGroup;\n this.yellowRange = this.formGroup.get('yellowRange') as FormGroup;\n this.redRange = this.formGroup.get('redRange') as FormGroup;\n this.chart = this.formGroup.get('chart') as FormGroup;\n this.display = this.formGroup.get('display') as FormGroup;\n }\n\n private initializeFormVisibility(): void {\n this.showChartForm = this.chart && this.showChart;\n\n const hasLineTypes = !!this.selectableChartLineTypes?.length;\n const hasAxisTypes = !!this.selectableAxisTypes?.length;\n const hasRenderTypes =\n this.selectableChartRenderTypes?.length > 0 || this.selectableChartRenderTypes === undefined;\n\n this.showOnlyDisplayForm =\n !this.showChartForm && !hasLineTypes && !hasAxisTypes && hasRenderTypes;\n }\n\n private filterChartTypes(): void {\n this.filterRenderTypes();\n this.filterLineTypes();\n this.filterAxisTypes();\n }\n\n private filterRenderTypes(): void {\n if (!!this.selectableChartRenderTypes?.length) {\n this.CHART_RENDER_TYPES = this.CHART_RENDER_TYPES.filter(renderType =>\n this.selectableChartRenderTypes.includes(renderType.val)\n );\n }\n }\n\n private filterLineTypes(): void {\n if (!!this.selectableChartLineTypes?.length) {\n this.CHART_LINE_TYPES = this.CHART_LINE_TYPES.filter(lineType =>\n this.selectableChartLineTypes.includes(lineType.val)\n );\n }\n }\n\n private filterAxisTypes(): void {\n if (!!this.selectableAxisTypes?.length) {\n this.AXIS_TYPES = this.AXIS_TYPES.filter(axisType =>\n this.selectableAxisTypes.includes(axisType.val)\n );\n }\n }\n}\n","<div [formGroup]=\"formGroup\">\n <ng-container *ngIf=\"!rawValue?.__template || showFormIfTemplateWasSelected\">\n <fieldset\n class=\"c8y-fieldset\"\n *ngIf=\"formGroup.controls?.label || formGroup.controls?.unit || formGroup.controls?.target\"\n >\n <legend translate>Details</legend>\n <div class=\"row\">\n <div\n class=\"col-md-6\"\n *ngIf=\"formGroup.controls?.label\"\n >\n <c8y-form-group class=\"form-group-sm\">\n <label translate>Label</label>\n <input\n class=\"form-control\"\n name=\"label\"\n formControlName=\"label\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'Temperature' }\"\n />\n <c8y-messages\n [show]=\"formGroup.controls.label.touched && formGroup.controls.label.errors\"\n >\n <c8y-message\n *ngFor=\"let item of customValidationErrorMessages['label'] | keyvalue\"\n [name]=\"item.key\"\n [text]=\"item.value\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-md-6\"\n *ngIf=\"formGroup.controls?.unit\"\n >\n <c8y-form-group class=\"form-group-sm\">\n <label translate>Unit</label>\n <input\n class=\"form-control\"\n name=\"unit\"\n formControlName=\"unit\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'ºC' }\"\n />\n <c8y-messages\n [show]=\"formGroup.controls.unit.touched && formGroup.controls.unit.errors\"\n >\n <c8y-message\n *ngFor=\"let item of customValidationErrorMessages['unit'] | keyvalue\"\n [name]=\"item.key\"\n [text]=\"item.value\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-md-6\"\n *ngIf=\"formGroup.controls?.target && showTarget\"\n >\n <c8y-form-group class=\"form-group-sm\"\n [ngClass]=\"{\n 'has-error':\n (range?.touched || formGroup.controls.target.touched) &&\n formGroup.controls?.target?.errors\n }\"\n >\n <label translate>Target</label>\n <input\n class=\"form-control\"\n name=\"target\"\n type=\"number\"\n formControlName=\"target\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 25 }\"\n />\n <c8y-messages\n [show]=\"\n (range?.touched || formGroup.controls.target.touched) &&\n formGroup.controls.target.errors\n \"\n >\n <c8y-message\n *ngFor=\"let item of customValidationErrorMessages['target'] | keyvalue\"\n [name]=\"item.key\"\n [text]=\"item.value\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n <fieldset\n class=\"c8y-fieldset\"\n *ngIf=\"range && showRange\"\n >\n <legend translate>Range</legend>\n <div\n class=\"row\"\n formGroupName=\"range\"\n >\n <div class=\"col-md-6\">\n <c8y-form-group class=\"form-group-sm\"\n [ngClass]=\"{ 'has-error': range?.touched && range?.controls?.min?.errors }\"\n >\n <label translate>Min</label>\n <input\n class=\"form-control\"\n name=\"min\"\n type=\"number\"\n formControlName=\"min\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 0 }\"\n />\n <c8y-messages [show]=\"range?.touched && range.controls?.min?.errors\"></c8y-messages>\n </c8y-form-group>\n </div>\n <div class=\"col-md-6\">\n <c8y-form-group class=\"form-group-sm\"\n [ngClass]=\"{ 'has-error': range?.touched && range?.controls?.max?.errors }\"\n >\n <label translate>Max</label>\n <input\n class=\"form-control\"\n name=\"max\"\n type=\"number\"\n formControlName=\"max\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 100 }\"\n />\n <c8y-messages [show]=\"range?.touched && range.controls?.max?.errors\">\n <c8y-message\n *ngFor=\"let item of customValidationErrorMessages['max'] | keyvalue\"\n [name]=\"item.key\"\n [text]=\"item.value\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n\n <fieldset\n class=\"c8y-fieldset\"\n formGroupName=\"yellowRange\"\n *ngIf=\"yellowRange && showYellowRange\"\n >\n <legend translate>Yellow range</legend>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <c8y-form-group class=\"form-group-sm\"\n [ngClass]=\"{\n 'has-error':\n (range?.touched || yellowRange?.touched) && yellowRange?.controls?.min?.errors\n }\"\n >\n <label translate>Min</label>\n <input\n class=\"form-control\"\n name=\"min\"\n type=\"number\"\n formControlName=\"min\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 50 }\"\n />\n <c8y-messages\n [show]=\"(range?.touched || yellowRange?.touched) && yellowRange.controls?.min?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n\n <div class=\"col-md-6\">\n <c8y-form-group class=\"form-group-sm\"\n [ngClass]=\"{\n 'has-error':\n (range?.touched || yellowRange?.touched) && yellowRange?.controls?.max?.errors\n }\"\n >\n <label translate>Max</label>\n <input\n class=\"form-control\"\n name=\"max\"\n type=\"number\"\n formControlName=\"max\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 75 }\"\n />\n <c8y-messages\n [show]=\"(range?.touched || yellowRange?.touched) && yellowRange.controls?.max?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n\n <fieldset\n class=\"c8y-fieldset\"\n formGroupName=\"redRange\"\n *ngIf=\"redRange && showRedRange\"\n >\n <legend translate>Red range</legend>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <c8y-form-group class=\"form-group-sm\"\n [ngClass]=\"{\n 'has-error': (range?.touched || redRange?.touched) && redRange?.controls?.min?.errors\n }\"\n >\n <label translate>Min</label>\n <input\n class=\"form-control\"\n name=\"min\"\n type=\"number\"\n formControlName=\"min\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 75 }\"\n />\n <c8y-messages\n [show]=\"(range?.touched || redRange?.touched) && redRange.controls?.min?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n\n <div class=\"col-md-6\">\n <c8y-form-group class=\"form-group-sm\"\n [ngClass]=\"{\n 'has-error': (range?.touched || redRange?.touched) && redRange?.controls?.max?.errors\n }\"\n >\n <label translate>Max</label>\n <input\n class=\"form-control\"\n name=\"max\"\n type=\"number\"\n formControlName=\"max\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 100 }\"\n />\n <c8y-messages\n [show]=\"(range?.touched || redRange?.touched) && redRange.controls?.max?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n </ng-container>\n\n <fieldset\n class=\"c8y-fieldset\"\n *ngIf=\"showChartForm\"\n formGroupName=\"chart\"\n >\n <legend translate>Chart</legend>\n <div class=\"tight-grid\">\n <div\n class=\"col-xs-6 col-sm-4\"\n *ngIf=\"selectableChartRenderTypes?.length !== 0\"\n >\n <c8y-form-group class=\"form-group-sm\">\n <ng-container *ngTemplateOutlet=\"displayHelpButton\"></ng-container>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n formControlName=\"renderType\"\n >\n <option\n *ngFor=\"let type of CHART_RENDER_TYPES\"\n [ngValue]=\"type.val\"\n >\n {{ type.text | translate }}\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n <div\n class=\"col-xs-6 col-sm-4\"\n *ngIf=\"selectableChartLineTypes?.length !== 0\"\n >\n <c8y-form-group class=\"form-group-sm\">\n <label\n for=\"chartType\"\n translate\n >\n Chart type\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n formControlName=\"lineType\"\n >\n <option\n *ngFor=\"let type of CHART_LINE_TYPES\"\n [ngValue]=\"type.val\"\n >\n {{ type.text | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </c8y-form-group>\n </div>\n <div\n class=\"col-xs-6 col-sm-4\"\n *ngIf=\"selectableAxisTypes?.length !== 0\"\n >\n <c8y-form-group class=\"form-group-sm\">\n <label\n for=\"yAxis\"\n translate\n >\n Y-axis\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n formControlName=\"yAxisType\"\n >\n <option\n *ngFor=\"let type of AXIS_TYPES\"\n [ngValue]=\"type.val\"\n >\n {{ type.text | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n <fieldset\n class=\"c8y-fieldset\"\n *ngIf=\"showOnlyDisplayForm\"\n formGroupName=\"display\"\n >\n <legend>\n <ng-container *ngTemplateOutlet=\"displayHelpButton\"></ng-container>\n </legend>\n <div class=\"tight-grid\">\n <div class=\"col-xs-6 col-sm-4\">\n <c8y-form-group class=\"form-group-sm\">\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n formControlName=\"renderType\"\n >\n <option\n *ngFor=\"let type of CHART_RENDER_TYPES\"\n [ngValue]=\"type.val\"\n >\n {{ type.text | translate }}\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n</div>\n\n<ng-template #displayHelpButton>\n <label>\n {{ 'Display' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ 'Value displayed when data is aggregated' | translate }}\"\n triggers=\"focus\"\n type=\"button\"\n placement=\"right\"\n ></button>\n </label>\n</ng-template>\n","import { IIdentified, IManagedObject } from '@c8y/client';\nimport { MillerViewComponent } from '@c8y/ngx-components/assets-navigator';\nimport { SupportedIconsSuggestions } from '@c8y/ngx-components/icon-selector/icons';\nimport {\n AxisTypes,\n ChartLineTypes,\n ChartRenderTypes\n} from './datapoint-attributes-form/datapoint-attributes.model';\n\nexport const DATAPOINT_LIBRARY_FRAGMENT = 'c8y_Kpi';\n\nexport interface KPIDetails {\n fragment: string;\n series: string;\n orientation?: string | null;\n __target?: IIdentified | null;\n __active?: boolean | null;\n __template?: string | null | number;\n unit?: string | null;\n min?: number | null;\n color?: string | null;\n max?: number | null;\n label?: string | null;\n target?: number | null;\n yellowRangeMax?: number | null;\n yellowRangeMin?: number | null;\n redRangeMin?: number | null;\n redRangeMax?: number | null;\n description?: string | null;\n renderType?: string | null;\n lineType?: string | null;\n yAxisType?: string | null;\n [key: string]: any;\n}\n\nexport interface ManagedObjectKPI extends IManagedObject {\n [DATAPOINT_LIBRARY_FRAGMENT]: KPIDetails;\n}\n\nexport interface DatapointAction {\n label: string;\n callback: (datapoint: KPIDetails) => void;\n icon: SupportedIconsSuggestions;\n}\n\nexport interface DatapointAttributesFormConfig {\n showTarget: boolean;\n showRange: boolean;\n showYellowRange: boolean;\n showRedRange: boolean;\n showChart: boolean;\n showFormIfTemplateWasSelected: boolean;\n selectableChartRenderTypes: ChartRenderTypes[];\n selectableChartLineTypes: ChartLineTypes[];\n selectableAxisTypes: AxisTypes[];\n}\n\nexport type DatapointSelectorModalAssetSelectorOptions = Omit<\n MillerViewComponent,\n | 'multi'\n | 'singleColumn'\n | 'onSelected'\n | 'millerViewWrapper'\n | 'columns'\n | 'ngOnInit'\n | 'ngOnChanges'\n | 'addNewColumn'\n | 'onSelectionChange'\n>;\n","import { Injectable } from '@angular/core';\nimport {\n IIdentified,\n IManagedObject,\n InventoryService,\n IResultList,\n MeasurementService\n} from '@c8y/client';\nimport { AppStateService, ColorService, MAX_PAGE_SIZE } from '@c8y/ngx-components';\nimport { get, sortBy, uniq } from 'lodash-es';\nimport { filter } from 'rxjs/operators';\nimport {\n DATAPOINT_LIBRARY_FRAGMENT,\n KPIDetails,\n ManagedObjectKPI\n} from './datapoint-selection.model';\n\n@Injectable({ providedIn: 'root' })\nexport class DatapointLibraryService {\n protected cache: Promise<ManagedObjectKPI[]>;\n constructor(\n private inventory: InventoryService,\n private appState: AppStateService,\n private measurements: MeasurementService,\n private color: ColorService\n ) {\n this.appState.currentUser.pipe(filter(user => !user)).subscribe(() => {\n this.cache = undefined;\n });\n }\n\n async getAllDatapointLibraryEntriesCached(forceCacheRenew = false): Promise<ManagedObjectKPI[]> {\n if (forceCacheRenew) {\n this.cache = undefined;\n }\n if (!this.cache) {\n this.cache = this.getAllDatapointLibraryEntries();\n }\n return this.cache;\n }\n\n async getFirstDatapointLibraryPage(): Promise<IResultList<ManagedObjectKPI>> {\n const filterObj = {\n currentPage: 1,\n pageSize: 50,\n fragmentType: DATAPOINT_LIBRARY_FRAGMENT,\n withTotalPages: true\n };\n return (await this.inventory.list(filterObj)) as IResultList<ManagedObjectKPI>;\n }\n\n async getAllDatapointLibraryItemsCached(): Promise<KPIDetails[]> {\n if (!this.cache) {\n this.cache = this.getAllDatapointLibraryEntries();\n }\n const res = await this.cache;\n return res.map(tmp => tmp[DATAPOINT_LIBRARY_FRAGMENT]);\n }\n\n async updateDatapoints(\n datapoints: KPIDetails[],\n skipUpdatingTarget = false\n ): Promise<KPIDetails[]> {\n if (!Array.isArray(datapoints)) {\n return datapoints;\n }\n const currentTargetsPromise: Promise<IManagedObject[]> = !skipUpdatingTarget\n ? this.getCurrentVersionOfTargetsFromDatapoints(datapoints)\n : Promise.resolve([]);\n const [currentTemplates, currentTargets] = await Promise.all([\n this.getCurrentTemplatesFromDatapoints(datapoints),\n currentTargetsPromise\n ]);\n const currentTemplateVersions = currentTemplates\n .map(tmp => this.mapDatapointLibraryEntry(tmp as ManagedObjectKPI))\n .filter(tmp => !!tmp);\n for (const datapoint of datapoints) {\n const { fragment, series, __active, __target, color, label, __template } = datapoint;\n const foundCurrentTemplateVersion = currentTemplateVersions.find(\n tmp => tmp.__template === datapoint.__template\n );\n if (foundCurrentTemplateVersion) {\n Object.assign(datapoint, foundCurrentTemplateVersion);\n Object.assign(datapoint, {\n fragment,\n series,\n __active,\n __target,\n color,\n label,\n __template\n });\n }\n\n const foundCurrentTarget = currentTargets.find(target => target.id === __target?.id);\n if (foundCurrentTarget) {\n const { id, name } = foundCurrentTarget;\n datapoint.__target = { id, name };\n }\n }\n return datapoints;\n }\n\n async getDatapointsOfAsset(\n parentReference: IIdentified,\n ignoreDatapointTemplates?: boolean,\n datapointTemplatesOnly = false\n ): Promise<KPIDetails[]> {\n const [kpiResponse, details] = await Promise.all([\n (ignoreDatapointTemplates\n ? Promise.resolve(null)\n : this.inventory.assetKPIsList(parentReference, { pageSize: MAX_PAGE_SIZE })) as Promise<\n IResultList<ManagedObjectKPI>\n >,\n this.inventory.getMeasurementsAndSeries(parentReference)\n ]);\n const kpis = kpiResponse && kpiResponse.data ? kpiResponse.data : [];\n const sortedDetails = sortBy(details, ['fragment', 'series']);\n\n return await this.combineFragmentSeriesTuplesWithDetails(\n sortedDetails,\n parentReference,\n kpis,\n datapointTemplatesOnly\n );\n }\n\n /**\n * Requests the last measurement with the given fragment and series to extract it's unit.\n * If the source attribute is provided, it will check the last measurement for this specific source.\n * @returns found unit or an empty string instead\n */\n async guessUnitOfDatapoint(\n fragment: string,\n series: string,\n source?: IIdentified\n ): Promise<string> {\n const measurementfilter: any = {\n valueFragmentSeries: series,\n valueFragmentType: fragment,\n pageSize: 1,\n revert: true,\n dateFrom: '1970-01-01'\n };\n if (source?.id) {\n measurementfilter.source = source?.id;\n }\n try {\n const { data: lastMeasurements } = await this.measurements.list(measurementfilter);\n const measurement = lastMeasurements[0];\n if (measurement) {\n const pathToUnit = `${fragment}.${series}.unit`;\n const unit = get(measurement, pathToUnit);\n if (unit?.length && typeof unit === 'string') {\n return unit;\n }\n }\n } catch {\n // nothing to do\n }\n return '';\n }\n\n protected async combineFragmentSeriesTuplesWithDetails(\n tuples: Array<{ fragment: string; series: string }>,\n target: IIdentified,\n kpis: ManagedObjectKPI[],\n datapointTemplatesOnly = false\n ) {\n const datapoints = tuples\n .map(tuple => {\n const foundDatapointLibraryEntry = kpis.find(\n kpi =>\n kpi[DATAPOINT_LIBRARY_FRAGMENT] &&\n kpi[DATAPOINT_LIBRARY_FRAGMENT].fragment === tuple.fragment &&\n kpi[DATAPOINT_LIBRARY_FRAGMENT].series === tuple.series\n );\n if (!foundDatapointLibraryEntry && datapointTemplatesOnly) {\n return null;\n }\n const datapoint: KPIDetails =\n this.mapDatapointLibraryEntry(foundDatapointLibraryEntry) || tuple;\n if (!datapoint.label) {\n datapoint.label = `${datapoint.fragment} → ${datapoint.series}`;\n }\n if (!datapoint.unit?.length) {\n datapoint.unit = '';\n }\n datapoint.__target = target;\n return datapoint;\n })\n .filter(Boolean);\n await this.assignColorToDatapoints(datapoints);\n return datapoints;\n }\n\n protected async assignColorToDatapoints(datapoints: KPIDetails[]): Promise<void> {\n const datapointsWithoutColor = datapoints.filter(datapoint => !datapoint.color);\n await Promise.all(\n datapointsWithoutColor.map(datapoint =>\n this.color\n .generateColorForDatapoint(datapoint.fragment, datapoint.series)\n .then(color => (datapoint.color = color))\n )\n );\n }\n\n protected async getAllDatapointLibraryEntries(): Promise<ManagedObjectKPI[]> {\n const entries = new Array<ManagedObjectKPI>();\n const filterObj = {\n currentPage: 1,\n pageSize: MAX_PAGE_SIZE,\n fragmentType: DATAPOINT_LIBRARY_FRAGMENT\n };\n let res = await this.inventory.list(filterObj);\n while (res.data.length) {\n entries.push(...(res.data as ManagedObjectKPI[]));\n if (res.data.length < res.paging.pageSize) {\n break;\n }\n if (!res.paging.nextPage) {\n break;\n }\n\n res = await res.paging.next();\n }\n return entries;\n }\n\n protected mapDatapointLibraryEntry(entry: ManagedObjectKPI): KPIDetails {\n if (!entry || !entry[DATAPOINT_LIBRARY_FRAGMENT]) {\n return null;\n }\n\n const datapoint = entry[DATAPOINT_LIBRARY_FRAGMENT];\n datapoint.__template = entry.id;\n return datapoint;\n }\n\n protected async getCurrentTemplatesFromDatapoints(\n datapoints: KPIDetails[]\n ): Promise<IManagedObject[]> {\n const datapointsWithTemplateId = datapoints.filter(dp => !!dp.__template);\n const usedTemplateIds = datapointsWithTemplateId.map(dp => dp.__template);\n return await this.getMOsByIds(usedTemplateIds);\n }\n\n protected async getCurrentVersionOfTargetsFromDatapoints(\n datapoints: KPIDetails[]\n ): Promise<IManagedObject[]> {\n const datapointsWithTarget = datapoints.filter(dp => !!dp.__target?.id);\n const usedTargetIds = datapointsWithTarget.map(dp => dp.__target.id);\n return await this.getMOsByIds(usedTargetIds);\n }\n\n protected async getMOsByIds(ids: Array<string | number>): Promise<IManagedObject[]> {\n const uniqManagedObjectIds = uniq(ids);\n if (!uniqManagedObjectIds.length) {\n return [];\n }\n try {\n const { data: managedObjects } = await this.inventory.list({\n ids: uniqManagedObjectIds.join(),\n pageSize: MAX_PAGE_SIZE\n });\n return managedObjects;\n } catch {\n // Fail silently in case we are not able to talk to the inventory API.\n // Should only be reached in case of an server side error.\n // instead of failing, pretend like we didn't receive any items.\n console.warn(\n `Failed to get the current version of the following managedObjects: ${uniqManagedObjectIds.join()}.`\n );\n return [];\n }\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { IconDirective, C8yTranslatePipe } from '@c8y/ngx-components';\nimport { KPIDetails } from '../datapoint-selection.model';\nimport { NgFor, NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault } from '@angular/common';\n\n@Component({\n selector: 'c8y-datapoint-template-popover',\n templateUrl: './datapoint-template-popover.component.html',\n imports: [IconDirective, NgFor, NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault, C8yTranslatePipe]\n})\nexport class DatapointTemplatePopoverComponent {\n @Input() datapoint: KPIDetails;\n @Input() attributes: Array<{\n label: string;\n labelColor?: string;\n key: keyof KPIDetails;\n }> = [\n {\n label: gettext('Fragment'),\n key: 'fragment'\n },\n {\n label: gettext('Series'),\n key: 'series'\n },\n {\n label: gettext('Unit'),\n key: 'unit'\n },\n {\n label: gettext('Range'),\n key: 'min'\n },\n {\n label: gettext('Target'),\n key: 'target'\n },\n {\n label: gettext('Yellow range'),\n labelColor: 'yellow',\n key: 'yellowRangeMin'\n },\n {\n label: gettext('Red range'),\n labelColor: 'red',\n key: 'redRangeMin'\n }\n ];\n}\n","<p class=\"text-medium\">\n <i c8yIcon=\"circle\" [style.color]=\"datapoint.color\"></i>\n {{ datapoint.label }}\n</p>\n<p>{{ datapoint.description }}</p>\n\n<ul class=\"list-unstyled small p-t-16\">\n <ng-container *ngFor=\"let attribute of attributes; let i = index\">\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\"\n *ngIf=\"datapoint[attribute.key] !== undefined\"\n >\n <label class=\"small m-b-0 m-r-8\">\n <i *ngIf=\"attribute.labelColor\" c8yIcon=\"square\" [style.color]=\"attribute.labelColor\"></i>\n {{ attribute.label | translate }}\n </label>\n <ng-container [ngSwitch]=\"attribute.key\">\n <span *ngSwitchCase=\"'min'\" class=\"m-l-auto\">\n {{ datapoint['min'] }} — {{ datapoint['max'] }}\n </span>\n <span *ngSwitchCase=\"'yellowRangeMin'\" class=\"m-l-auto\">\n {{ datapoint['yellowRangeMin'] }} — {{ datapoint['yellowRangeMax'] }}\n </span>\n <span *ngSwitchCase=\"'redRangeMin'\" class=\"m-l-auto\">\n {{ datapoint['redRangeMin'] }} — {{ datapoint['redRangeMax'] }}\n </span>\n <span *ngSwitchDefault class=\"m-l-auto\">\n {{ datapoint[attribute.key] }}\n </span>\n </ng-container>\n </li>\n </ng-container>\n</ul>\n","import { Component, ContentChild, EventEmitter, forwardRef, Input, Output } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormBuilder,\n FormGroup,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { IResultList } from '@c8y/client';\nimport { Observable, pipe } from 'rxjs';\nimport { map, startWith, take } from 'rxjs/operators';\nimport {\n ForOfFilterPipe,\n ListItemDragHandleComponent,\n ListItemComponent,\n ListItemCheckboxComponent,\n RequiredInputPlaceholderDirective,\n HighlightComponent,\n IconDirective,\n ListItemActionComponent,\n ListItemCollapseComponent,\n C8yTranslateDirective,\n TypeaheadComponent,\n ForOfDirective,\n ListItemIconComponent,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport {\n DatapointAction,\n DatapointAttributesFormConfig,\n DATAPOINT_LIBRARY_FRAGMENT,\n KPIDetails,\n ManagedObjectKPI\n} from '../datapoint-selection.model';\n\nimport { NgIf, NgFor, AsyncPipe } from '@angular/common';\nimport { PopoverDirective } from 'ngx-bootstrap/popover';\nimport { TooltipDirective } from 'ngx-bootstrap/tooltip';\nimport { DatapointTemplatePopoverComponent } from '../datapoint-template-popover/datapoint-template-popover.component';\nimport { DatapointAttributesFormComponent } from '../datapoint-attributes-form/datapoint-attributes-form.component';\n\nexport const AddButtonTypes = {\n none: 'none',\n addRemove: 'add-remove',\n select: 'select'\n} as const;\nexport type AddButtonType = (typeof AddButtonTypes)[keyof typeof AddButtonTypes];\n\n@Component({\n selector: 'c8y-datapoint-selector-list-item',\n templateUrl: './datapoint-selector-list-item.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatapointSelectorListItemComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DatapointSelectorListItemComponent),\n multi: true\n }\n ],\n imports: [\n ListItemComponent,\n FormsModule,\n ReactiveFormsModule,\n ListItemDragHandleComponent,\n NgIf,\n ListItemCheckboxComponent,\n RequiredInputPlaceholderDirective,\n HighlightComponent,\n IconDirective,\n PopoverDirective,\n TooltipDirective,\n ListItemActionComponent,\n NgFor,\n ListItemCollapseComponent,\n C8yTranslateDirective,\n TypeaheadComponent,\n ForOfDirective,\n ListItemIconComponent,\n DatapointTemplatePopoverComponent,\n DatapointAttributesFormComponent,\n C8yTranslatePipe,\n AsyncPipe\n ]\n})\nexport class DatapointSelectorListItemComponent implements ControlValueAccessor, Validator {\n formGroup: FormGroup;\n @Input() defaultFormOptions: Partial<DatapointAttributesFormConfig> = {};\n @Input() isSelected = false;\n @Input() isCollapsed = true;\n @Input() addButtonType: AddButtonType = AddButtonTypes.addRemove;\n @Input() editable = true;\n @Input() showActiveToggle = false;\n @Input() activeToggleDisabled = false;\n @Input() showOptions = false;\n @Input() datapointLibraryEntries: Observable<IResultList<ManagedObjectKPI>>;\n @Input() actions: DatapointAction[] = [];\n @Input() optionToRemove = false;\n @Input() hasUnlinkTemplateOption = false;\n @Output() added = new EventEmitter<KPIDetails>();\n @Output() removed = new EventEmitter<KPIDetails>();\n @Input() colorPickerDisabled = true;\n @Input() disableTypeaheadIfSelected = false;\n @Input() highlightText: string;\n @ContentChild(ListItemDragHandleComponent) dragHandle: ListItemDragHandleComponent;\n\n pattern = '';\n filterPipe: ForOfFilterPipe<ManagedObjectKPI>;\n isValid$: Observable<boolean>;\n errorMessage: string;\n AddButtonTypes = AddButtonTypes;\n\n constructor(private formBuilder: FormBuilder) {\n this.formGroup = this.formBuilder.group({\n details: [],\n color: [],\n __active: [],\n __target: [],\n fragment: [],\n series: [],\n __template: []\n });\n this.isValid$ = this.formGroup.statusChanges.pipe(\n map(status => status === 'VALID'),\n startWith(this.formGroup.valid)\n );\n }\n\n validate(_control: AbstractControl): ValidationErrors {\n if (this.formGroup?.invalid) {\n Object.keys(this.formGroup.controls).forEach(controlName => {\n const control = this.formGroup.controls[controlName];\n if (control.invalid) {\n const errors = control.errors;\n if (errors) {\n this.errorMessage = Object.values(errors)[0].message;\n }\n }\n });\n }\n return this.formGroup?.valid ? null : { formInvalid: {} };\n }\n\n writeValue(obj: any): void {\n this.formGroup.patchValue({ ...obj, details: obj });\n }\n\n registerOnChange(fn: any): void {\n this.formGroup.valueChanges.pipe(map(tmp => this.transformFormValue(tmp))).subscribe(fn);\n }\n\n registerOnTouched(fn: any): void {\n this.formGroup.valueChanges.pipe(take(1)).subscribe(fn);\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (this.formGroup?.disabled === isDisabled) {\n return;\n }\n isDisabled ? this.formGroup.disable() : this.formGroup.enable();\n }\n\n collapse() {\n this.isCollapsed = !this.isCollapsed;\n }\n\n addOrRemoveItem() {\n const value = this.transformFormValue(this.formGroup.value);\n if (this.isSelected) {\n this.removed.emit(value);\n } else {\n this.added.emit(value);\n }\n }\n\n remove() {\n this.removed.emit(this.transformFormValue(this.formGroup.value));\n }\n\n setPipe(filterStr: string) {\n this.pattern = filterStr;\n this.filterPipe = pipe(\n map((data: ManagedObjectKPI[]) => {\n return this.filterDatapointLabel(data, filterStr);\n })\n );\n }\n\n unlinkDatapointTemplate(): void {\n const details = this.formGroup.value.details || {};\n this.resetUnusedProperties(details);\n this.formGroup.patchValue({ __template: undefined, details });\n }\n\n dataPointTemplateSelected(template: ManagedObjectKPI) {\n const attributesToAssign: Array<keyof KPIDetails> = [\n 'color',\n 'label',\n 'min',\n 'max',\n 'yellowRangeMax',\n 'yellowRangeMin',\n 'redRangeMax',\n 'redRangeMin',\n 'target',\n 'orientation',\n 'unit'\n ];\n const { fragment, series, __target, __active } = this.formGroup.value;\n const dataPoint: KPIDetails = {\n fragment,\n series,\n __active,\n __target,\n __template: template.id\n };\n for (const attribute of attributesToAssign) {\n const value = template[DATAPOINT_LIBRARY_FRAGMENT][attribute];\n dataPoint[attribute] = value;\n }\n this.writeValue(dataPoint);\n this.setPipe('');\n }\n\n private resetUnusedProperties(details: Partial<KPIDetails>): void {\n const { showTarget, showYellowRange, showRedRange } = this.defaultFormOptions;\n details.__template = undefined;\n if (!showTarget) {\n details.target = undefined;\n }\n if (!showYellowRange) {\n details.yellowRangeMin = undefined;\n details.yellowRangeMax = undefined;\n }\n if (!showRedRange) {\n details.redRangeMin = undefined;\n details.redRangeMax = undefined;\n }\n }\n\n private filterDatapointLabel(kpis: ManagedObjectKPI[], filterStr: string): ManagedObjectKPI[] {\n return kpis.filter(\n (mo: ManagedObjectKPI) =>\n mo[DATAPOINT_LIBRARY_FRAGMENT] &&\n mo[DATAPOINT_LIBRARY_FRAGMENT].label &&\n typeof mo[DATAPOINT_LIBRARY_FRAGMENT].label === 'string' &&\n mo[DATAPOINT_LIBRARY_FRAGMENT].label.toLowerCase().indexOf(filterStr.toLowerCase()) > -1\n );\n }\n\n private transformFormValue(formValue: any) {\n const obj = Object.assign({}, formValue.details || {}, formValue);\n delete obj.details;\n return obj;\n }\n}\n","<c8y-li class=\"c8y-list__item__collapse--container-small\" [formGroup]=\"formGroup\" #li>\n <c8y-li-drag-handle><ng-content select=\"c8y-li-drag-handle\"></ng-content></c8y-li-drag-handle>\n <c8y-li-checkbox\n class=\"a-s-center p-r-0\"\n *ngIf=\"showActiveToggle\"\n [displayAsSwitch]=\"true\"\n formControlName=\"__active\"\n (click)=\"$event.stopPropagation()\"\n ></c8y-li-checkbox>\n\n <div class=\"d-flex a-i-center \">\n <div class=\"c8y-list__item__colorpicker p-t-0 p-b-0 p-l-16\" [title]=\"'Change color' | translate\">\n <div class=\"c8y-colorpicker\">\n <input\n type=\"color\"\n [attr.aria-label]=\"'Color' | translate\"\n formControlName=\"color\"\n (click)=\"$event.stopPropagation()\"\n />\n <span [style.background-color]=\"formGroup.value.color\"></span>\n </div>\n </div>\n <button\n class=\"btn-clean data-point-label text-truncate\"\n type=\"button\"\n [attr.aria-expanded]=\"!li.collapsed\"\n (click)=\"li.collapsed = !li.collapsed\"\n >\n <span class=\"text-truncate\" [title]=\"formGroup.value.details?.label\">\n <c8y-highlight\n [text]=\"formGroup.value.details?.label\"\n [pattern]=\"highlightText\"\n [shouldTrimPattern]=\"true\"\n ></c8y-highlight>\n </span>\n <small class=\"text-truncate text-muted icon-flex\" *ngIf=\"formGroup.value.__target\">\n <i c8yIcon=\"exchange\"></i>\n <span class=\"text-truncate\">{{ formGroup.value.__target.name }}</span>\n </small>\n </button>\n\n <button\n class=\"btn btn-dot btn-dot--danger m-l-auto\"\n type=\"button\"\n [attr.aria-label]=\"'Invalid' | translate\"\n [popover]=\"\n errorMessage\n ? errorMessage\n : ('Some entries are invalid. Check the input fields with red borders.' | translate)\n \"\n triggers=\"focus\"\n placement=\"left\"\n container=\"body\"\n *ngIf=\"!(isValid$ | async)\"\n >\n <i c8yIcon=\"warning\"></i>\n </button>\n <div class=\"m-l-auto a-s-center p-r-4\" *ngIf=\"addButtonType === AddButtonTypes.addRemove\">\n <button\n class=\"btn btn-dot btn-dot--danger\"\n type=\"button\"\n [attr.aria-label]=\"'Remove' | translate\"\n [tooltip]=\"'Remove from selected data points' | translate\"\n [delay]=\"500\"\n (click)=\"addOrRemoveItem()\"\n *ngIf=\"isSelected\"\n [attr.data-cy]=\"'datapoint-selector-list-item--remove-datapoint-button'\"\n >\n <i class=\"icon-20\" c8yIcon=\"minus-circle\"></i>\n </button>\n <button\n class=\"btn btn-dot text-primary\"\n type=\"button\"\n [attr.aria-label]=\"'Add to selected data points' | translate\"\n [tooltip]=\"'Add to selected data points' | translate\"\n [delay]=\"500\"\n [disabled]=\"!(isValid$ | async)\"\n (click)=\"addOrRemoveItem()\"\n *ngIf=\"!isSelected\"\n [attr.data-cy]=\"'datapoint-selector-list-item--add-datapoint-button'\"\n >\n <i class=\"text-primary icon-20\" c8yIcon=\"plus-circle\"></i>\n </button>\n </div>\n <button\n *ngIf=\"addButtonType === AddButtonTypes.select\"\n class=\"btn btn-default btn-sm m-l-auto\"\n type=\"button\"\n [attr.aria-label]=\"'Select' | translate\"\n [tooltip]=\"'Select data point' | translate\"\n [delay]=\"500\"\n (click)=\"addOrRemoveItem()\"\n >{{ 'Select' | translate }}</button>\n </div>\n\n <c8y-li-action\n *ngIf=\"optionToRemove\"\n [icon]=\"'minus-circle'\"\n [label]=\"'Remove from list' | translate\"\n (click)=\"remove()\"\n ></c8y-li-action>\n <c8y-li-action\n *ngFor=\"let action of actions\"\n [icon]=\"action.icon\"\n [label]=\"action.label\"\n (click)=\"action.callback(formGroup.value)\"\n ></c8y-li-action>\n <c8y-li-collapse *ngIf=\"editable\">\n <div class=\"data-point-details\">\n <ul class=\"list-unstyled small m-b-16\">\n <li class=\"p-t-4 p-b-4 d-flex separator-top-bottom\">\n <label class=\"small m-b-0 m-r-8 a-s-start text-muted\" translate>Fragment</label>\n <span class=\"m-l-auto\">\n <c8y-highlight\n [text]=\"formGroup.value.fragment\"\n [pattern]=\"highlightText\"\n [shouldTrimPattern]=\"true\"\n ></c8y-highlight>\n </span>\n </li>\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom\">\n <label class=\"small m-b-0 m-r-8 a-s-start text-muted\" translate>Series</label>\n <span class=\"m-l-auto\">\n <c8y-highlight\n [text]=\"formGroup.value.series\"\n [pattern]=\"highlightText\"\n [shouldTrimPattern]=\"true\"\n ></c8y-highlight>\n </span>\n </li>\n </ul>\n <div\n class=\"form-group form-group-sm\"\n *ngIf=\"datapointLibraryEntries && datapointLibraryEntries | async as libraryEntries\"\n >\n <label>\n {{ 'Data point template' | translate }} \n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"datapointHintPopoverTemplate\"\n (click)=\"$event.stopPropagation()\"\n triggers=\"focus\"\n placement=\"top\"\n ></button>\n </label>\n \n\n <ng-template #datapointHintPopoverTemplate>\n {{\n 'Using a data point template sets color, label, unit and ranges. Removing the template allows you to set the values manually.'\n | translate\n }}\n </ng-template>\n <div class=\"input-group input-group-sm\">\n <c8y-typeahead\n class=\"flex-grow\"\n [placeholder]=\"'No template' | translate\"\n [ngModel]=\"formGroup.value.__template ? formGroup.value.details : undefined\"\n [ngModelOptions]=\"{ standalone: true }\"\n (onSearch)=\"setPipe($event)\"\n [displayProperty]=\"'label'\"\n [hideNew]=\"true\"\n *ngIf=\"datapointLibraryEntries\"\n [disabled]=\"isSelected && disableTypeaheadIfSelected\"\n >\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link interact\"\n *c8yFor=\"\n let item of datapointLibraryEntries;\n loadMore: 'auto';\n pipe: filterPipe;\n notFound: notFoundTemplate\n \"\n (click)=\"dataPointTemplateSelected(item)\"\n [active]=\"formGroup.value.__template === item.id\"\n [attr.role]=\"'menuitem'\"\n >\n <c8y-highlight [text]=\"item.c8y_Kpi?.label\" [pattern]=\"pattern\"></c8y-highlight>\n <c8y-li-icon icon=\"circle\" [style.color]=\"item.c8y_Kpi?.color\"></c8y-li-icon>\n </c8y-li>\n <ng-template #notFoundTemplate>\n <c8y-li class=\"bg-level-2 p-8\" *ngIf=\"pattern.length > 0\">\n <span>No match found.</span>\n </c8y-li>\n </ng-template>\n </c8y-typeahead>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n [attr.aria-label]=\"'Info' | translate\"\n [popover]=\"datapointOverviewPopoverTemplate\"\n placement=\"left\"\n triggers=\"focus\"\n container=\"body\"\n *ngIf=\"formGroup.value.__template\"\n >\n <i class=\"text-info\" c8yIcon=\"info\"></i>\n </button>\n </div>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n tooltip=\"{{ 'Unlink data point template' | translate }}\"\n [attr.aria-label]=\"'Unlink data point template' | translate\"\n [delay]=\"500\"\n placement=\"left\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n *ngIf=\"formGroup.value.__template && hasUnlinkTemplateOption\"\n (click)=\"unlinkDatapointTemplate()\"\n >\n <i c8yIcon=\"unlink\"></i>\n </button>\n </div>\n </div>\n </div>\n <ng-template #datapointOverviewPopoverTemplate>\n <c8y-datapoint-template-popover\n [datapoint]=\"formGroup.value.details\"\n ></c8y-datapoint-template-popover>\n </ng-template>\n <c8y-datapoint-attributes-form\n *ngIf=\"defaultFormOptions\"\n [showTarget]=\"defaultFormOptions.showTarget\"\n [showRange]=\"defaultFormOptions.showRange\"\n [showYellowRange]=\"defaultFormOptions.showYellowRange\"\n [showRedRange]=\"defaultFormOptions.showRedRange\"\n [showChart]=\"defaultFormOptions.showChart\"\n [showFormIfTemplateWasSelected]=\"defaultFormOptions.showFormIfTemplateWasSelected\"\n [selectableChartRenderTypes]=\"defaultFormOptions.selectableChartRenderTypes\"\n [selectableChartLineTypes]=\"defaultFormOptions.selectableChartLineTypes\"\n [selectableAxisTypes]=\"defaultFormOptions.selectableAxisTypes\"\n formControlName=\"details\"\n ></c8y-datapoint-attributes-form>\n </div>\n </c8y-li-collapse>\n</c8y-li>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { KPIDetails } from '../datapoint-selection.model';\n\n@Pipe({ name: 'includesDatapoint' })\nexport class IncludesDatapointPipe implements PipeTransform {\n transform(datapointList: KPIDetails[], datapoint?: KPIDetails): boolean {\n if (!Array.isArray(datapointList) || !datapoint) {\n return false;\n }\n return datapointList.some(\n tmp =>\n tmp.fragment === datapoint.fragment &&\n tmp.series === datapoint.series &&\n tmp.__target?.id === datapoint.__target?.id\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { KPIDetails } from '../datapoint-selection.model';\n\n@Pipe({ name: 'datapointLabel' })\nexport class DatapointLabelPipe implements PipeTransform {\n transform(\n datapoint: KPIDetails,\n options = { includeDevice: false, doNotUseLabel: false }\n ): string {\n let label = '';\n try {\n if (!options?.doNotUseLabel && datapoint.label) {\n label = datapoint.label;\n } else {\n label = `${datapoint.fragment} → ${datapoint.series}`;\n }\n\n if (options?.includeDevice && (datapoint.__target?.name || datapoint.__target?.id)) {\n label += ` (${datapoint.__target?.name || datapoint.__target?.id})`;\n }\n } catch (e) {\n // nothing to do\n }\n\n return label;\n }\n}\n","import { Component, forwardRef, Input, OnInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { IIdentified, IResultList } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n EmptyStateComponent,\n LoadingComponent,\n IconDirective,\n ListGroupComponent,\n ListItemComponent,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { BehaviorSubject, combineLatest, from, Observable } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n map,\n shareReplay,\n switchMap,\n tap\n} from 'rxjs/operators';\nimport { DatapointLibraryService } from './datapoint-library.service';\nimport { KPIDetails, ManagedObjectKPI } from './datapoint-selection.model';\nimport {\n AddButtonTypes,\n DatapointSelectorListItemComponent\n} from './datapoint-selector-list-item/datapoint-selector-list-item.component';\nimport { NgClass, NgIf, NgFor, AsyncPipe } from '@angular/common';\nimport { MillerViewComponent } from '@c8y/ngx-components/assets-navigator';\nimport { IncludesDatapointPipe } from './pipes/includes-datapoint.pipe';\nimport { DatapointLabelPipe } from './pipes/datapoint-label.pipe';\n\n@Component({\n selector: 'c8y-datapoint-selector',\n templateUrl: './datapoint-selector.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => DatapointSelectorComponent)\n }\n ],\n imports: [\n NgClass,\n NgIf,\n MillerViewComponent,\n FormsModule,\n EmptyStateComponent,\n LoadingComponent,\n IconDirective,\n ListGroupComponent,\n ListItemComponent,\n NgFor,\n DatapointSelectorListItemComponent,\n C8yTranslatePipe,\n AsyncPipe,\n IncludesDatapointPipe,\n DatapointLabelPipe\n ]\n})\nexport class DatapointSelectorComponent implements OnInit, ControlValueAccessor {\n @Input() contextAsset: IIdentified;\n @Input() allowChangingContext = true;\n @Input() allowDatapointsFromMultipleAssets = true;\n selectedDatapoints = new Array<KPIDetails>();\n @Input() defaultActiveState = true;\n @Input() ignoreDatapointTemplates = false;\n @Input() datapointTemplatesOnly = false;\n @Input() guessDatapointUnit = true;\n @Input() allowSearch = true;\n @Input() hideSelection = false;\n @Input() itemsEditable = true;\n searchString = '';\n maxNumberOfDatapoints = 50;\n selectorTitle: string;\n emptyStateTitle: string;\n selectedListTitle: string;\n AddButtonTypes = AddButtonTypes;\n\n loadingDatapoints = false;\n assetSelection = new BehaviorSubject<IIdentified>(null);\n datapoints$: Observable<KPIDetails[]>;\n filteredDatapoints$: Observable<KPIDetails[]>;\n searchStringChanges$: Observable<string>;\n datapointLibraryEntries: Observable<IResultList<ManagedObjectKPI>>;\n\n emptyStateSubtitleWhenNoMatchingDataPoints = gettext('Try another search term.');\n emptyStateSubtitleWhenNoDataPointsInAsset = gettext(\n 'Select an asset with data points from the list.'\n );\n\n private searchString$ = new BehaviorSubject('');\n private touched = false;\n private onChange: (quantity: KPIDetails[]) => void;\n private onTouched: () => void;\n\n constructor(private datapointService: DatapointLibraryService) {}\n\n ngOnInit(): void {\n this.selectorTitle = this.datapointTemplatesOnly\n ? gettext('Available data point templates')\n : gettext('Available data points');\n this.emptyStateTitle = this.datapointTemplatesOnly\n ? gettext('No data point templates to display.')\n : gettext('No data points to display.');\n this.selectedListTitle = this.datapointTemplatesOnly\n ? gettext('Selected data point templates')\n : gettext('Selected data points');\n this.setupObservables();\n if (!this.ignoreDatapointTemplates) {\n this.datapointLibraryEntries = from(this.datapointService.getFirstDatapointLibraryPage());\n }\n\n if (this.contextAsset) {\n this.selectionChanged(this.contextAsset);\n }\n }\n\n writeValue(obj: KPIDetails[]): void {\n this.selectedDatapoints = obj;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n datapointAdded(dp: KPIDetails): void {\n this.markAsTouched();\n dp.__active = this.defaultActiveState;\n if (this.guessDatapointUnit && !dp.unit) {\n this.datapointService.guessUnitOfDatapoint(dp.fragment, dp.series, dp.__target).then(unit => {\n dp.unit = unit;\n });\n }\n this.selectedDatapoints = [...this.selectedDatapoints, dp];\n this.emitCurrentSelection();\n }\n\n datapointRemoved(dp: KPIDetails): void {\n this.markAsTouched();\n this.selectedDatapoints = this.selectedDatapoints.filter(\n tmp =>\n tmp.fragment !== dp.fragment ||\n tmp.series !== dp.series ||\n tmp.__target?.id !== dp.__target?.id\n );\n this.emitCurrentSelection();\n }\n\n selectionChanged(evt: IIdentified | IIdentified[]): void {\n if (Array.isArray(evt) && evt.length !== 0) {\n return this.selectAsset(evt[0]);\n }\n\n if (!Array.isArray(evt) && evt.items) {\n return this.selectionChanged(evt.items);\n }\n\n if (!Array.isArray(evt) && evt.id) {\n return this.selectAsset(evt);\n }\n\n // reset selection\n this.assetSelection.next(null);\n }\n\n trackByFn(_index: number, item: KPIDetails): string {\n return `${item.fragment}-${item.__target?.id}-${item.series}`;\n }\n\n searchStringChanged(newValue = ''): void {\n this.searchString$.next(newValue);\n this.searchString = newValue;\n }\n\n private setupObservables(): void {\n this.datapoints$ = this.assetSelection.pipe(\n tap(() => {\n this.loadingDatapoints = true;\n }),\n switchMap(asset =>\n asset?.id\n ? this.datapointService.getDatapointsOfAsset(\n asset,\n this.ignoreDatapointTemplates,\n this.datapointTemplatesOnly\n )\n : []\n ),\n tap(() => (this.loadingDatapoints = false)),\n shareReplay(1)\n );\n\n this.searchStringChanges$ = this.searchString$.pipe(\n distinctUntilChanged(),\n debounceTime(500),\n shareReplay(1)\n );\n\n this.filteredDatapoints$ = combineLatest([this.searchStringChanges$, this.datapoints$]).pipe(\n map(([searchString, datapoints]) => {\n if (!searchString) {\n return datapoints;\n }\n const lowerCaseSearchString = searchString.toLowerCase();\n return datapoints.filter(datapoint =>\n this.includesSearchString(datapoint, lowerCaseSearchString)\n );\n }),\n map(filtered => filtered.slice(0, this.maxNumberOfDatapoints))\n );\n }\n\n private selectAsset(asset: IIdentified) {\n this.assetSelection.next(asset);\n this.searchStringChanged();\n if (!this.allowDatapointsFromMultipleAssets) {\n this.clearSelection();\n }\n }\n\n private clearSelection(): void {\n this.selectedDatapoints = [];\n this.emitCurrentSelection();\n }\n\n private emitCurrentSelection() {\n this.onChange(this.selectedDatapoints);\n }\n\n private markAsTouched() {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n\n private includesSearchString(datapoint: KPIDetails, lowerCaseSearchString: string): boolean {\n const label = datapoint.label?.toLowerCase();\n if (label && label.includes(lowerCaseSearchString)) {\n return true;\n }\n\n const fragment = datapoint.fragment?.toLowerCase();\n if (fragment && fragment.includes(lowerCaseSearchString)) {\n return true;\n }\n\n const series = datapoint.series?.toLowerCase();\n if (series && series.includes(lowerCaseSearchString)) {\n return true;\n }\n\n return false;\n }\n}\n","<div\n class=\"d-grid grid__row--1 fit-h\"\n [ngClass]=\"{\n 'grid__col--3-6-3--md': allowChangingContext && !hideSelection,\n 'grid__col--8-4--md': !allowChangingContext && !hideSelection,\n 'grid__col--4-8--md': allowChangingContext && hideSelection\n }\"\n>\n <div\n class=\"d-flex d-col p-relative bg-level-1\"\n *ngIf=\"allowChangingContext\"\n >\n <c8y-asset-selector-miller\n class=\"d-contents\"\n [(ngModel)]=\"contextAsset\"\n [asset]=\"contextAsset\"\n (onSelected)=\"selectionChanged($event)\"\n [container]=\"''\"\n [config]=\"{\n view: 'miller',\n groupsSelectable: true,\n columnHeaders: true,\n showChildDevices: true,\n showUnassignedDevices: true,\n singleColumn: true,\n search: allowSearch,\n showFilter: true\n }\"\n ></c8y-asset-selector-miller>\n </div>\n <!-- center column -->\n <div class=\"inner-scroll bg-component\">\n <ng-template #noDeviceEmptyState>\n <div class=\"p-16\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"emptyStateTitle | translate\"\n [subtitle]=\"'Select an asset from the list.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </ng-template>\n <ng-template #loadingData>\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-template>\n <div\n class=\"bg-inherit\"\n *ngIf=\"assetSelection | async as asset; else noDeviceEmptyState\"\n >\n <div class=\"p-l-16 p-r-16 p-t-8 p-b-8 sticky-top bg-inherit separator-bottom\">\n <p\n class=\"text-medium text-truncate\"\n [title]=\"selectorTitle | translate\"\n >\n {{ selectorTitle | translate }}\n </p>\n <div\n class=\"input-group input-group-search m-t-4\"\n id=\"search\"\n *ngIf=\"!loadingDatapoints\"\n >\n <input\n class=\"form-control\"\n placeholder=\"Search…\"\n type=\"search\"\n [ngModel]=\"searchString\"\n (ngModelChange)=\"searchStringChanged($event)\"\n />\n <span class=\"input-group-addon\">\n <i\n c8yIcon=\"search\"\n *ngIf=\"!searchString; else clearSearchString\"\n ></i>\n <ng-template #clearSearchString>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n (click)=\"searchStringChanged()\"\n ></i>\n </ng-template>\n </span>\n </div>\n </div>\n <ng-container *ngIf=\"filteredDatapoints$ | async as filteredDatapoints; else loadingData\">\n <ng-container *ngIf=\"!loadingDatapoints; else loadingData\">\n <ng-container *ngIf=\"datapoints$ | async as datapoints\">\n <div\n class=\"p-16\"\n *ngIf=\"!filteredDatapoints.length\"\n >\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"emptyStateTitle | translate\"\n [subtitle]=\"\n datapoints.length\n ? (emptyStateSubtitleWhenNoMatchingDataPoints | translate)\n : (emptyStateSubtitleWhenNoDataPointsInAsset | translate)\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n\n <c8y-list-group>\n <c8y-list-item\n class=\"sticky-top\"\n style=\"top: 72px\"\n *ngIf=\"\n datapoints.length > maxNumberOfDatapoints &&\n filteredDatapoints.length >= maxNumberOfDatapoints\n \"\n >\n <div class=\"alert alert-warning m-b-0\">\n {{\n 'Due to the large number, only a subset of data points is displayed. Use search to narrow down the number of results.'\n | translate\n }}\n </div>\n </c8y-list-item>\n <c8y-datapoint-selector-list-item\n class=\"d-contents\"\n [ngModel]=\"dp\"\n [isSelected]=\"selectedDatapoints | includesDatapoint: dp\"\n [datapointLibraryEntries]=\"datapointLibraryEntries\"\n [disableTypeaheadIfSelected]=\"true\"\n [addButtonType]=\"hideSelection ? AddButtonTypes.select : AddButtonTypes.addRemove\"\n (added)=\"datapointAdded($event)\"\n (removed)=\"datapointRemoved($event)\"\n [highlightText]=\"searchStringChanges$ | async\"\n *ngFor=\"let dp of filteredDatapoints; trackBy: trackByFn\"\n [editable]=\"itemsEditable\"\n ></c8y-datapoint-selector-list-item>\n </c8y-list-group>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <!-- last column -->\n <div\n class=\"inner-scroll bg-level-1\"\n *ngIf=\"!hideSelection\"\n >\n <p\n class=\"text-medium p-l-16 p-r-16 p-t-8 p-b-8 separator-bottom sticky-top text-truncate\"\n [title]=\"selectedListTitle | translate\"\n >\n {{ selectedListTitle | translate }}\n </p>\n <div\n class=\"d-flex flex-wrap gap-8 p-l-16 p-r-16 p-t-8 p-b-16\"\n *ngIf=\"selectedDatapoints?.length\"\n >\n <div\n class=\"c8y-datapoint-pill\"\n *ngFor=\"let selectedDp of selectedDatapoints\"\n >\n <button\n class=\"c8y-datapoint-pill__btn\"\n [title]=\"'Remove' | translate\"\n type=\"button\"\n (click)=\"datapointRemoved(selectedDp)\"\n >\n <i\n class=\"icon-14\"\n c8yIcon=\"remove\"\n ></i>\n </button>\n <div\n class=\"c8y-datapoint-pill__label\"\n [title]=\"selectedDp | datapointLabel: { doNotUseLabel: true, includeDevice: true }\"\n >\n <i\n class=\"m-r-4 icon-14\"\n c8yIcon=\"circle\"\n [style.color]=\"selectedDp.color\"\n ></i>\n <span class=\"text-truncate\">\n <span class=\"text-truncate\">{{ selectedDp | datapointLabel }}</span>\n <small\n class=\"text-muted text-10\"\n *ngIf=\"selectedDp?.__target?.name\"\n >\n {{ selectedDp?.__target?.name }}\n </small>\n </span>\n </div>\n </div>\n </div>\n <div\n class=\"p-r-8\"\n *ngIf=\"!selectedDatapoints || !selectedDatapoints.length\"\n >\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"emptyStateTitle | translate\"\n [subtitle]=\"\n 'Select the asset, then on the available data points list, click on the plus button on the desired data point.'\n | translate\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </div>\n</div>\n","import { Component, ElementRef, OnInit } from '@angular/core';\nimport { IIdentified } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { C8yTranslateDirective, C8yTranslatePipe } from '@c8y/ngx-components';\nimport { get } from 'lodash-es';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport {\n DatapointSelectorModalAssetSelectorOptions,\n KPIDetails\n} from '../datapoint-selection.model';\nimport { DatapointSelectorComponent } from '../datapoint-selector.component';\nimport { FormsModule } from '@angular/forms';\nimport { NgIf } from '@angular/common';\n\n@Component({\n selector: 'c8y-datapoint-selector-modal',\n templateUrl: './datapoint-selector-modal.component.html',\n imports: [DatapointSelectorComponent, FormsModule, C8yTranslateDirective, NgIf, C8yTranslatePipe]\n})\nexport class DatapointSelectorModalComponent implements OnInit {\n contextAsset: IIdentified;\n allowChangingContext = true;\n allowSearch = true;\n allowDatapointsFromMultipleAssets = true;\n selectedDatapoints = new Array<KPIDetails>();\n title: string = gettext('Data point selector');\n saveButtonLabel: string = gettext('Add data points');\n guessDatapointUnit = true;\n defaultActiveState = true;\n finishWithFirstSelection = false;\n ignoreDatapointTemplates = false;\n itemsEditable = true;\n datapointTemplatesOnly = false;\n assetSelectorConfig: Partial<DatapointSelectorModalAssetSelectorOptions> = {};\n readonly result: Promise<KPIDetails[]> = new Promise((resolve, reject) => {\n this.save = resolve;\n this.cancel = reject;\n });\n\n private save: (value: KPIDetails[]) => void;\n private cancel: (reason?: any) => void;\n\n constructor(\n private bsModal: BsModalRef,\n private elementRef: ElementRef\n ) {}\n\n ngOnInit(): void {\n this.applyWorkaroundForAngularJSModalsThatMightBeOpenedInParallel();\n }\n\n saveChanges(): void {\n this.bsModal.hide();\n this.save(this.selectedDatapoints);\n }\n\n close() {\n this.bsModal.hide();\n this.cancel();\n }\n\n selectionChange(selection: Array<KPIDetails>) {\n this.selectedDatapoints = selection;\n if (this.finishWithFirstSelection) {\n this.saveChanges();\n }\n }\n\n /**\n * changes the z-index of the modal, to make sure this modal is on top.\n * required as angularJS modals are placing them selves on top via adjusting z-index.\n * while angular modals use the order within the dom for this..\n */\n private applyWorkaroundForAngularJSModalsThatMightBeOpenedInParallel() {\n const modalContainer: HTMLElement = get(\n this.elementRef,\n 'nativeElement.parentElement.parentElement.parentElement'\n );\n modalContainer.style.zIndex = '1060';\n }\n}\n","<div class=\"modal-header separator\">\n <h4 id=\"modal-title\" class=\"text-medium\">{{ title | translate }}</h4>\n</div>\n<div class=\"modal-inner-scroll modal-inner-scroll--fixed\" id=\"modal-body\">\n <c8y-datapoint-selector\n [contextAsset]=\"contextAsset\"\n [guessDatapointUnit]=\"guessDatapointUnit\"\n [allowDatapointsFromMultipleAssets]=\"allowDatapointsFromMultipleAssets\"\n [allowChangingContext]=\"allowChangingContext\"\n [defaultActiveState]=\"defaultActiveState\"\n [allowSearch]=\"allowSearch\"\n [hideSelection]=\"finishWithFirstSelection\"\n [ignoreDatapointTemplates]=\"ignoreDatapointTemplates\"\n [datapointTemplatesOnly]=\"datapointTemplatesOnly\"\n [itemsEditable]=\"itemsEditable\"\n [ngModel]=\"selectedDatapoints\"\n (ngModelChange)=\"selectionChange($event)\"\n ></c8y-datapoint-selector>\n</div>\n<div class=\"modal-footer\">\n <button\n type=\"button\"\n [title]=\"'Cancel' | translate\"\n class=\"btn btn-default\"\n (click)=\"close()\"\n translate\n >\n Cancel\n </button>\n <button\n [title]=\"saveButtonLabel | translate\"\n class=\"btn btn-primary\"\n [disabled]=\"!selectedDatapoints?.length\"\n (click)=\"saveChanges()\"\n *ngIf=\"!finishWithFirstSelection\"\n >\n {{ saveButtonLabel | translate }}\n </button>\n</div>\n","import { Injectable } from '@angular/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { KPIDetails } from './datapoint-selection.model';\nimport { DatapointSelectorModalComponent } from './datapoint-selector-modal/datapoint-selector-modal.component';\nimport { DatapointSelectorModalOptions } from './datapoint-selector-modal/datapoint-selector-modal.model';\n\n@Injectable({ providedIn: 'root' })\nexport class DatapointSelectorService {\n constructor(protected modal: BsModalService) {}\n\n selectDataPoints(\n initialState: Partial<DatapointSelectorModalOptions> = {}\n ): Promise<KPIDetails[]> {\n const modal = this.modal.show(DatapointSelectorModalComponent, {\n ignoreBackdropClick: true,\n keyboard: false,\n initialState,\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n class: 'modal-lg'\n });\n const content = modal.content as DatapointSelectorModalComponent;\n return content.result;\n }\n}\n","import {\n CdkDragDrop,\n moveItemInArray,\n CdkDropList,\n CdkDrag,\n CdkDragHandle\n} from '@angular/cdk/drag-drop';\nimport {\n Component,\n forwardRef,\n Input,\n OnChanges,\n OnInit,\n Optional,\n Output,\n SimpleChanges\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormArray,\n FormBuilder,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n ValidatorFn,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { IResultList } from '@c8y/client';\nimport {\n C8yValidators,\n ListGroupComponent,\n C8yTranslateDirective,\n EmptyStateComponent,\n ListItemDragHandleComponent,\n IconDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { WidgetConfigComponent } from '@c8y/ngx-components/context-dashboard';\nimport { from, Observable } from 'rxjs';\nimport { map, shareReplay, take, tap } from 'rxjs/operators';\nimport { DatapointLibraryService } from '../datapoint-library.service';\nimport {\n DatapointAction,\n DatapointAttributesFormConfig,\n KPIDetails,\n ManagedObjectKPI\n} from '../datapoint-selection.model';\nimport { DatapointSelectorModalOptions } from '../datapoint-selector-modal/datapoint-selector-modal.model';\nimport { DatapointSelectorService } from '../datapoint-selector.service';\nimport {\n AddButtonTypes,\n DatapointSelectorListItemComponent\n} from '../datapoint-selector-list-item/datapoint-selector-list-item.component';\nimport { NgIf, NgFor } from '@angular/common';\n\n@Component({\n selector: 'c8y-datapoint-selection-list',\n templateUrl: './datapoint-selection-list.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => DatapointSelectionListComponent)\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DatapointSelectionListComponent),\n multi: true\n }\n ],\n imports: [\n NgIf,\n ListGroupComponent,\n CdkDropList,\n C8yTranslateDirective,\n EmptyStateComponent,\n NgFor,\n FormsModule,\n ReactiveFormsModule,\n DatapointSelectorListItemComponent,\n CdkDrag,\n ListItemDragHandleComponent,\n CdkDragHandle,\n IconDirective,\n C8yTranslatePipe\n ]\n})\nexport class DatapointSelectionListComponent\n implements ControlValueAccessor, Validator, OnInit, OnChanges\n{\n @Input() actions: DatapointAction[] = [];\n /**\n * Enable or disable drag and drop functionality.\n */\n @Input() allowDragAndDrop = true;\n @Input() config: Partial<DatapointSelectorModalOptions> = {};\n @Input() defaultFormOptions: Partial<DatapointAttributesFormConfig> = {};\n /**\n * Maximum number of active datapoints allowed in the list.\n */\n @Input() maxActiveCount: number;\n /**\n * Minimum number of active datapoints required in the list.\n */\n @Input() minActiveCount = 1;\n @Input() resolveContext = true;\n @Input() listTitle = '';\n formArray: FormArray;\n datapointLibraryEntries: Observable<IResultList<ManagedObjectKPI>>;\n maxActiveCountReached = false;\n AddButtonTypes = AddButtonTypes;\n\n @Output() isValid: Observable<boolean>;\n @Output() change: Observable<any[]>;\n private usedValidators: { [key: string]: ValidatorFn } = {};\n\n constructor(\n private datapointSelector: DatapointSelectorService,\n private datapointLibrary: DatapointLibraryService,\n private formBuilder: FormBuilder,\n @Optional() private widgetComponent: WidgetConfigComponent\n ) {\n this.formArray = this.formBuilder.array([]);\n this.isValid = this.formArray.statusChanges.pipe(map(status => status === 'VALID'));\n this.datapointLibraryEntries = from(this.datapointLibrary.getFirstDatapointLibraryPage()).pipe(\n shareReplay()\n );\n this.change = this.formArray.valueChanges.pipe(map(res => this.transformValue(res)));\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!changes.maxActiveCount && !changes.minActiveCount) {\n return;\n }\n if (changes.maxActiveCount) {\n this.usedValidators.maxActiveCount = C8yValidators.maxActiveCount(this.maxActiveCount);\n }\n\n if (changes.minActiveCount) {\n this.usedValidators.minActiveCount = C8yValidators.minActiveCount(this.minActiveCount);\n }\n const validators = Object.values(this.usedValidators);\n this.formArray.setValidators(validators);\n }\n\n registerOnTouched(fn: any): void {\n this.formArray.valueChanges.pipe(take(1)).subscribe(fn);\n }\n\n validate(_control: AbstractControl): ValidationErrors {\n return this.formArray.valid ? null : { formInvalid: {} };\n }\n\n ngOnInit(): void {\n const context = this.widgetComponent?.context;\n if (context?.id && this.resolveContext) {\n const { name, id, c8y_IsDevice } = context;\n this.config.contextAsset = { name, id, c8y_IsDevice };\n }\n }\n\n writeValue(obj: KPIDetails[]): void {\n this.formArray.clear();\n if (obj?.length) {\n obj.forEach(val => {\n const formgroup = this.formBuilder.group({ details: [] });\n formgroup.patchValue({ details: val });\n this.formArray.push(formgroup);\n });\n }\n this.calculateMaxActiveCount();\n }\n\n registerOnChange(fn: any): void {\n this.formArray.valueChanges\n .pipe(\n map(res => this.transformValue(res)),\n // check maxActiveCount\n tap(() => {\n this.calculateMaxActiveCount();\n })\n )\n .subscribe(fn);\n }\n\n add() {\n const allowChangingContext =\n !this.widgetComponent?.isDeviceTypeDashboard && this.config?.allowChangingContext !== false;\n this.datapointSelector\n .selectDataPoints({\n ...(this.config || {}),\n selectedDatapoints: this.transformValue(this.formArray.value),\n defaultActiveState: true,\n allowChangingContext,\n allowSearch: !this.config?.contextAsset\n })\n .then(\n result => {\n this.writeValue(result);\n },\n () => {\n // nothing to do, modal was closed\n }\n );\n }\n\n onItemRemoved(index: number) {\n this.formArray.removeAt(index);\n }\n\n drop(event: CdkDragDrop<KPIDetails[]>) {\n const currentSorting = this.formArray.value;\n moveItemInArray(currentSorting, event.previousIndex, event.currentIndex);\n this.formArray.setValue(currentSorting);\n }\n\n private transformValue(formArrayValue: any[]) {\n if (!formArrayValue) {\n return [];\n }\n return formArrayValue.map(tmp => Object.assign({}, ...Object.values(tmp)));\n }\n\n private calculateMaxActiveCount() {\n if (this.maxActiveCount) {\n const currentlyActive = this.formArray.value.filter(tmp => tmp.details?.__active).length;\n this.maxActiveCountReached = currentlyActive >= this.maxActiveCount;\n }\n this.maxActiveCountReached = false;\n }\n}\n","<div class=\"card-header separator sticky-top bg-inherit\">\n <span\n class=\"card-title h4\"\n *ngIf=\"listTitle\"\n >\n {{ listTitle | translate }}\n </span>\n <span\n class=\"card-title h4\"\n *ngIf=\"!listTitle\"\n >\n {{ 'Data points' | translate }}\n </span>\n</div>\n\n<c8y-list-group\n class=\"flex-grow ff-scroll-fix cdk-droplist\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListDisabled]=\"!allowDragAndDrop || formArray.controls?.length < 2\"\n>\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n ngNonBindable\n *ngIf=\"formArray.errors?.minActiveCount\"\n translate\n [translateParams]=\"formArray.errors?.minActiveCount\"\n >\n At least {{ minActive }} active data points must be selected.\n </div>\n\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n ngNonBindable\n *ngIf=\"formArray.errors?.maxActiveCount\"\n translate\n [translateParams]=\"formArray.errors?.maxActiveCount\"\n >\n At maximum {{ maxActive }} active data points are allowed to be selected.\n </div>\n\n <ng-content select=\".alert\"></ng-content>\n\n <div\n class=\"p-t-8\"\n *ngIf=\"!formArray.controls?.length\"\n >\n <c8y-ui-empty-state\n class=\"p-t-8\"\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points to display.' | translate\"\n [subtitle]=\"'Add your first data point.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <div\n [formGroup]=\"dpForm\"\n *ngFor=\"let dpForm of formArray.controls; let index = index\"\n >\n <c8y-datapoint-selector-list-item\n class=\"d-block\"\n [defaultFormOptions]=\"defaultFormOptions\"\n [activeToggleDisabled]=\"maxActiveCountReached\"\n [showActiveToggle]=\"true\"\n [addButtonType]=\"AddButtonTypes.none\"\n [showOptions]=\"true\"\n [editable]=\"true\"\n [colorPickerDisabled]=\"false\"\n [actions]=\"actions\"\n [optionToRemove]=\"true\"\n [datapointLibraryEntries]=\"datapointLibraryEntries\"\n [hasUnlinkTemplateOption]=\"true\"\n formControlName=\"details\"\n (removed)=\"onItemRemoved(index)\"\n cdkDrag\n >\n <c8y-li-drag-handle\n title=\"{{ 'Click and drag to reorder' | translate }}\"\n cdkDragHandle\n >\n <i c8yIcon=\"drag-reorder\"></i>\n </c8y-li-drag-handle>\n </c8y-datapoint-selector-list-item>\n </div>\n</c8y-list-group>\n\n<div class=\"card-footer bg-inherit\">\n <button\n class=\"btn btn-default btn-sm\"\n [title]=\"'Add data point' | translate\"\n type=\"button\"\n data-cy=\"c8y-datapoint-selection-list--add-datapoint-button\"\n (click)=\"add()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add data point' | translate }}\n </button>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { KPIDetails } from '../datapoint-selection.model';\n\n@Pipe({ name: 'filterDatapoints' })\nexport class FilterDatapointsPipe implements PipeTransform {\n transform(datapoints: KPIDetails[], searchString: string): KPIDetails[] {\n if (!searchString || !datapoints || !Array.isArray(datapoints)) {\n return datapoints;\n }\n const lowerCaseSearchString = searchString.toLowerCase().trim();\n return datapoints.filter(datapoint =>\n this.includesSearchStringIgnoringCasing(datapoint, lowerCaseSearchString)\n );\n }\n\n private includesSearchStringIgnoringCasing(\n datapoint: KPIDetails,\n lowerCaseSearchString: string\n ): boolean {\n const label = datapoint.label?.toLowerCase();\n if (label && label.includes(lowerCaseSearchString)) {\n return true;\n }\n\n const fragment = datapoint.fragment?.toLowerCase();\n if (fragment && fragment.includes(lowerCaseSearchString)) {\n return true;\n }\n\n const series = datapoint.series?.toLowerCase();\n if (series && series.includes(lowerCaseSearchString)) {\n return true;\n }\n\n return false;\n }\n}\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { NgModule } from '@angular/core';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { AssetSelectorModule } from '@c8y/ngx-components/assets-navigator';\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { DatapointAttributesFormComponent } from './datapoint-attributes-form/datapoint-attributes-form.component';\nimport { DatapointSelectionListComponent } from './datapoint-selection-list/datapoint-selection-list.component';\nimport { DatapointSelectorListItemComponent } from './datapoint-selector-list-item/datapoint-selector-list-item.component';\nimport { DatapointSelectorModalComponent } from './datapoint-selector-modal/datapoint-selector-modal.component';\nimport { DatapointSelectorComponent } from './datapoint-selector.component';\nimport { DatapointTemplatePopoverComponent } from './datapoint-template-popover/datapoint-template-popover.component';\nimport { DatapointLabelPipe } from './pipes/datapoint-label.pipe';\nimport { FilterDatapointsPipe } from './pipes/filter-datapoints.pipe';\nimport { IncludesDatapointPipe } from './pipes/includes-datapoint.pipe';\n\n@NgModule({\n imports: [\n AssetSelectorModule,\n CollapseModule,\n CoreModule,\n BsDropdownModule,\n ModalModule,\n TooltipModule,\n PopoverModule,\n DragDropModule,\n DatapointSelectorComponent,\n DatapointSelectorModalComponent,\n DatapointSelectorListItemComponent,\n DatapointSelectionListComponent,\n DatapointTemplatePopoverComponent,\n IncludesDatapointPipe,\n DatapointLabelPipe,\n FilterDatapointsPipe,\n DatapointAttributesFormComponent\n ],\n exports: [\n DatapointSelectorComponent,\n DatapointSelectorModalComponent,\n DatapointSelectorListItemComponent,\n DatapointSelectionListComponent,\n DatapointTemplatePopoverComponent,\n IncludesDatapointPipe,\n DatapointLabelPipe,\n DatapointAttributesFormComponent\n ]\n})\nexport class DatapointSelectorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i1.DatapointAttributesFormValidationService","i2","i1.DatapointLibraryService","i1.DatapointSelectorService","i2.DatapointLibraryService","i3"],"mappings":"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"}