@c8y/ngx-components 1023.59.1 → 1023.61.2

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 (283) hide show
  1. package/alarm-event-selector/index.d.ts +54 -4
  2. package/alarm-event-selector/index.d.ts.map +1 -1
  3. package/asset-properties/index.d.ts +20 -5
  4. package/asset-properties/index.d.ts.map +1 -1
  5. package/context-dashboard/index.d.ts +31 -3
  6. package/context-dashboard/index.d.ts.map +1 -1
  7. package/datapoint-explorer/devicemanagement/index.d.ts.map +1 -1
  8. package/datapoint-explorer/view/index.d.ts.map +1 -1
  9. package/datapoint-selector/index.d.ts +90 -6
  10. package/datapoint-selector/index.d.ts.map +1 -1
  11. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs +16 -16
  12. package/fesm2022/c8y-ngx-components-advanced-software-management.mjs +7 -7
  13. package/fesm2022/c8y-ngx-components-ai-agent-chat.mjs +9 -9
  14. package/fesm2022/c8y-ngx-components-ai-ai-chat.mjs +12 -12
  15. package/fesm2022/c8y-ngx-components-ai.mjs +3 -3
  16. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +202 -44
  17. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
  18. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +4 -4
  19. package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs +3 -3
  20. package/fesm2022/c8y-ngx-components-alarms.mjs +82 -82
  21. package/fesm2022/c8y-ngx-components-api.mjs +7 -7
  22. package/fesm2022/c8y-ngx-components-app-logs.mjs +10 -10
  23. package/fesm2022/c8y-ngx-components-application-access-list.mjs +12 -12
  24. package/fesm2022/c8y-ngx-components-application-access-user-application-access-user-details-wrapper.mjs +3 -3
  25. package/fesm2022/c8y-ngx-components-asset-properties.mjs +121 -57
  26. package/fesm2022/c8y-ngx-components-asset-properties.mjs.map +1 -1
  27. package/fesm2022/{c8y-ngx-components-asset-property-grid.component-BoVrIpap.mjs → c8y-ngx-components-asset-property-grid.component-D3cPNQyD.mjs} +13 -13
  28. package/fesm2022/{c8y-ngx-components-asset-property-grid.component-BoVrIpap.mjs.map → c8y-ngx-components-asset-property-grid.component-D3cPNQyD.mjs.map} +1 -1
  29. package/fesm2022/c8y-ngx-components-assets-navigator.mjs +32 -32
  30. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +120 -120
  31. package/fesm2022/c8y-ngx-components-binary-file-download.mjs +7 -7
  32. package/fesm2022/c8y-ngx-components-bookmarks.mjs +13 -13
  33. package/fesm2022/c8y-ngx-components-branding-base-branding.mjs +4 -4
  34. package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs +7 -7
  35. package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs +7 -7
  36. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor-lazy.mjs +3 -3
  37. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs +7 -7
  38. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +15 -15
  39. package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs +6 -6
  40. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +36 -36
  41. package/fesm2022/c8y-ngx-components-branding-shared.mjs +13 -13
  42. package/fesm2022/c8y-ngx-components-child-devices.mjs +13 -13
  43. package/fesm2022/c8y-ngx-components-cockpit-config.mjs +40 -40
  44. package/fesm2022/{c8y-ngx-components-computed-asset-properties-alarm-count-config.component-SA0syLy7.mjs → c8y-ngx-components-computed-asset-properties-alarm-count-config.component-cxDrUoXY.mjs} +4 -4
  45. package/fesm2022/{c8y-ngx-components-computed-asset-properties-alarm-count-config.component-SA0syLy7.mjs.map → c8y-ngx-components-computed-asset-properties-alarm-count-config.component-cxDrUoXY.mjs.map} +1 -1
  46. package/fesm2022/{c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-C5oS4Be-.mjs → c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-BxmSKHiM.mjs} +11 -11
  47. package/fesm2022/{c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-C5oS4Be-.mjs.map → c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-BxmSKHiM.mjs.map} +1 -1
  48. package/fesm2022/{c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-BOmgJI14.mjs → c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-CbLcHjZB.mjs} +4 -4
  49. package/fesm2022/{c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-BOmgJI14.mjs.map → c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-CbLcHjZB.mjs.map} +1 -1
  50. package/fesm2022/{c8y-ngx-components-computed-asset-properties-event-count-config.component-CaTb9cph.mjs → c8y-ngx-components-computed-asset-properties-event-count-config.component-DSWgAtkH.mjs} +4 -4
  51. package/fesm2022/{c8y-ngx-components-computed-asset-properties-event-count-config.component-CaTb9cph.mjs.map → c8y-ngx-components-computed-asset-properties-event-count-config.component-DSWgAtkH.mjs.map} +1 -1
  52. package/fesm2022/{c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-Bg9mbBkF.mjs → c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-CYskL4Lc.mjs} +5 -5
  53. package/fesm2022/{c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-Bg9mbBkF.mjs.map → c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-CYskL4Lc.mjs.map} +1 -1
  54. package/fesm2022/{c8y-ngx-components-computed-asset-properties-last-measurement-config.component-DkrSvf9F.mjs → c8y-ngx-components-computed-asset-properties-last-measurement-config.component-CDFNPo4q.mjs} +5 -4
  55. package/fesm2022/c8y-ngx-components-computed-asset-properties-last-measurement-config.component-CDFNPo4q.mjs.map +1 -0
  56. package/fesm2022/c8y-ngx-components-computed-asset-properties.mjs +1 -1
  57. package/fesm2022/c8y-ngx-components-connectivity.mjs +53 -53
  58. package/fesm2022/c8y-ngx-components-context-dashboard-asset-add.mjs +10 -10
  59. package/fesm2022/c8y-ngx-components-context-dashboard-asset-view.mjs +7 -7
  60. package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs +11 -11
  61. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-BovfVT29.mjs → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-CfvHiXsE.mjs} +4 -4
  62. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-BovfVT29.mjs.map → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-CfvHiXsE.mjs.map} +1 -1
  63. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-CC5346kW.mjs → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DUbxiMZh.mjs} +10 -10
  64. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-CC5346kW.mjs.map → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DUbxiMZh.mjs.map} +1 -1
  65. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-CHuc--XM.mjs → c8y-ngx-components-context-dashboard-dashboard-version-history.component-Byk0CoOG.mjs} +4 -4
  66. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-CHuc--XM.mjs.map → c8y-ngx-components-context-dashboard-dashboard-version-history.component-Byk0CoOG.mjs.map} +1 -1
  67. package/fesm2022/c8y-ngx-components-context-dashboard-device-add.mjs +10 -10
  68. package/fesm2022/c8y-ngx-components-context-dashboard-device-view.mjs +7 -7
  69. package/fesm2022/c8y-ngx-components-context-dashboard-devicemanagement.mjs +3 -3
  70. package/fesm2022/c8y-ngx-components-context-dashboard-state.mjs +3 -3
  71. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +143 -107
  72. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  73. package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-DvKsV_Fs.mjs → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-CGnlj1KZ.mjs} +16 -16
  74. package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-DvKsV_Fs.mjs.map → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-CGnlj1KZ.mjs.map} +1 -1
  75. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs +12 -12
  76. package/fesm2022/c8y-ngx-components-dashboard-manager-devicemanagement.mjs +6 -6
  77. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs +22 -22
  78. package/fesm2022/c8y-ngx-components-data-broker.mjs +7 -7
  79. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs +3 -3
  80. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs +3 -3
  81. package/fesm2022/c8y-ngx-components-datapoint-explorer-devicemanagement.mjs +1 -1
  82. package/fesm2022/c8y-ngx-components-datapoint-explorer-devicemanagement.mjs.map +1 -1
  83. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +30 -25
  84. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
  85. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +18 -13
  86. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs.map +1 -1
  87. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs +3 -3
  88. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs +3 -3
  89. package/fesm2022/c8y-ngx-components-datapoint-library-services.mjs +3 -3
  90. package/fesm2022/c8y-ngx-components-datapoint-library.mjs +4 -4
  91. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +234 -67
  92. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  93. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +33 -33
  94. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs +16 -16
  95. package/fesm2022/c8y-ngx-components-device-enrolment-modal.mjs +9 -9
  96. package/fesm2022/c8y-ngx-components-device-enrolment.mjs +6 -6
  97. package/fesm2022/c8y-ngx-components-device-grid.mjs +43 -43
  98. package/fesm2022/c8y-ngx-components-device-list.mjs +22 -22
  99. package/fesm2022/c8y-ngx-components-device-map.mjs +12 -12
  100. package/fesm2022/c8y-ngx-components-device-profile.mjs +34 -34
  101. package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs +3 -3
  102. package/fesm2022/c8y-ngx-components-device-protocols.mjs +16 -16
  103. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +13 -13
  104. package/fesm2022/c8y-ngx-components-device-shell.mjs +31 -31
  105. package/fesm2022/c8y-ngx-components-diagnostics.mjs +13 -13
  106. package/fesm2022/c8y-ngx-components-echart.mjs +30 -30
  107. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +43 -43
  108. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs +7 -7
  109. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs +10 -10
  110. package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs +7 -7
  111. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +46 -46
  112. package/fesm2022/c8y-ngx-components-ecosystem.mjs +82 -82
  113. package/fesm2022/c8y-ngx-components-editor.mjs +6 -6
  114. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs +3 -3
  115. package/fesm2022/c8y-ngx-components-events.mjs +3 -3
  116. package/fesm2022/c8y-ngx-components-exports-list.mjs +6 -6
  117. package/fesm2022/c8y-ngx-components-feature-toggles-list.mjs +6 -6
  118. package/fesm2022/c8y-ngx-components-file-preview.mjs +7 -7
  119. package/fesm2022/c8y-ngx-components-files-repository.mjs +19 -19
  120. package/fesm2022/c8y-ngx-components-global-context.mjs +130 -130
  121. package/fesm2022/c8y-ngx-components-group-breadcrumbs.mjs +6 -6
  122. package/fesm2022/c8y-ngx-components-icon-selector.mjs +19 -19
  123. package/fesm2022/c8y-ngx-components-interval-picker.mjs +3 -3
  124. package/fesm2022/c8y-ngx-components-location.mjs +28 -28
  125. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs +16 -16
  126. package/fesm2022/c8y-ngx-components-map.mjs +19 -19
  127. package/fesm2022/c8y-ngx-components-messaging-management.mjs +55 -55
  128. package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs +7 -7
  129. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs +19 -19
  130. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +7 -7
  131. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs +13 -13
  132. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs +13 -13
  133. package/fesm2022/c8y-ngx-components-operations-bulk-operations-service.mjs +7 -7
  134. package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs +7 -7
  135. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs +3 -3
  136. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs +7 -7
  137. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs +7 -7
  138. package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs +12 -12
  139. package/fesm2022/c8y-ngx-components-operations-operation-details.mjs +13 -13
  140. package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs +7 -7
  141. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs +10 -10
  142. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +12 -12
  143. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs +7 -7
  144. package/fesm2022/c8y-ngx-components-operations-shared.mjs +10 -10
  145. package/fesm2022/c8y-ngx-components-operations-status-filter.mjs +7 -7
  146. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +7 -7
  147. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +13 -13
  148. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +13 -13
  149. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +13 -13
  150. package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs +13 -13
  151. package/fesm2022/c8y-ngx-components-operations.mjs +7 -7
  152. package/fesm2022/c8y-ngx-components-pending-mo-request.mjs +7 -7
  153. package/fesm2022/c8y-ngx-components-platform-configuration.mjs +10 -10
  154. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +38 -38
  155. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +58 -58
  156. package/fesm2022/c8y-ngx-components-register-device.mjs +58 -58
  157. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +9 -9
  158. package/fesm2022/c8y-ngx-components-remote-access-data.mjs +3 -3
  159. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs +3 -3
  160. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +6 -6
  161. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +3 -3
  162. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs +3 -3
  163. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs +3 -3
  164. package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs +3 -3
  165. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +3 -3
  166. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +6 -6
  167. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs +3 -3
  168. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs +6 -6
  169. package/fesm2022/c8y-ngx-components-replace-device.mjs +10 -10
  170. package/fesm2022/c8y-ngx-components-report-dashboard.mjs +16 -16
  171. package/fesm2022/c8y-ngx-components-reports.mjs +19 -19
  172. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +48 -48
  173. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +33 -33
  174. package/fesm2022/c8y-ngx-components-repository-shared.mjs +34 -34
  175. package/fesm2022/c8y-ngx-components-repository-software.mjs +42 -42
  176. package/fesm2022/c8y-ngx-components-repository.mjs +4 -4
  177. package/fesm2022/c8y-ngx-components-search.mjs +19 -19
  178. package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs +6 -6
  179. package/fesm2022/c8y-ngx-components-sensor-phone.mjs +7 -7
  180. package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs +3 -3
  181. package/fesm2022/c8y-ngx-components-services-shared.mjs +3 -3
  182. package/fesm2022/c8y-ngx-components-services.mjs +29 -29
  183. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs +16 -16
  184. package/fesm2022/c8y-ngx-components-sms-gateway.mjs +7 -7
  185. package/fesm2022/c8y-ngx-components-static-assets-data.mjs +3 -3
  186. package/fesm2022/c8y-ngx-components-static-assets-modal.mjs +9 -9
  187. package/fesm2022/c8y-ngx-components-static-assets.mjs +6 -6
  188. package/fesm2022/c8y-ngx-components-sub-assets.mjs +60 -60
  189. package/fesm2022/c8y-ngx-components-tenants.mjs +40 -40
  190. package/fesm2022/c8y-ngx-components-time-context.mjs +6 -6
  191. package/fesm2022/c8y-ngx-components-tracking.mjs +12 -12
  192. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +3 -3
  193. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +12 -12
  194. package/fesm2022/c8y-ngx-components-translation-editor.mjs +6 -6
  195. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +33 -33
  196. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs +4 -4
  197. package/fesm2022/c8y-ngx-components-upgrade.mjs +41 -41
  198. package/fesm2022/c8y-ngx-components-user-roles.mjs +10 -10
  199. package/fesm2022/c8y-ngx-components-widgets-definitions-asset-table.mjs +6 -6
  200. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +39 -3
  201. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs.map +1 -1
  202. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +19 -0
  203. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -1
  204. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget-ai-config.mjs +3 -3
  205. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs +6 -6
  206. package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs +95 -1
  207. package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs.map +1 -1
  208. package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs +21 -1
  209. package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs.map +1 -1
  210. package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs +23 -1
  211. package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs.map +1 -1
  212. package/fesm2022/c8y-ngx-components-widgets-definitions-pie-chart.mjs +15 -1
  213. package/fesm2022/c8y-ngx-components-widgets-definitions-pie-chart.mjs.map +1 -1
  214. package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs +24 -1
  215. package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs.map +1 -1
  216. package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs +23 -1
  217. package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs.map +1 -1
  218. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +19 -19
  219. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs +3 -3
  220. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-table.mjs +39 -39
  221. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-legacy-welcome.mjs +3 -3
  222. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs +3 -3
  223. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +31 -75
  224. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  225. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +74 -113
  226. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
  227. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs +3 -3
  228. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs +10 -10
  229. package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs +3 -3
  230. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs +24 -24
  231. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs +13 -14
  232. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs.map +1 -1
  233. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +36 -59
  234. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
  235. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs +14 -10
  236. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs.map +1 -1
  237. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs +15 -11
  238. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs.map +1 -1
  239. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +10 -10
  240. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  241. package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs +9 -9
  242. package/fesm2022/c8y-ngx-components-widgets-implementations-pie-chart.mjs +12 -46
  243. package/fesm2022/c8y-ngx-components-widgets-implementations-pie-chart.mjs.map +1 -1
  244. package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs +28 -25
  245. package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs.map +1 -1
  246. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs +9 -9
  247. package/fesm2022/c8y-ngx-components.mjs +1386 -1386
  248. package/locales/de.po +49 -11
  249. package/locales/es.po +49 -11
  250. package/locales/fr.po +49 -11
  251. package/locales/ja_JP.po +48 -11
  252. package/locales/ko.po +49 -11
  253. package/locales/locales.pot +30 -7
  254. package/locales/nl.po +49 -11
  255. package/locales/pl.po +49 -11
  256. package/locales/pt_BR.po +49 -11
  257. package/locales/zh_CN.po +49 -11
  258. package/locales/zh_TW.po +49 -11
  259. package/package.json +1 -1
  260. package/widgets/definitions/datapoints-graph/index.d.ts.map +1 -1
  261. package/widgets/definitions/datapoints-table/index.d.ts.map +1 -1
  262. package/widgets/definitions/info-gauge/index.d.ts.map +1 -1
  263. package/widgets/definitions/kpi/index.d.ts.map +1 -1
  264. package/widgets/definitions/linear-gauge/index.d.ts.map +1 -1
  265. package/widgets/definitions/pie-chart/index.d.ts.map +1 -1
  266. package/widgets/definitions/radial-gauge/index.d.ts.map +1 -1
  267. package/widgets/definitions/silo/index.d.ts.map +1 -1
  268. package/widgets/implementations/datapoints-graph/index.d.ts +4 -8
  269. package/widgets/implementations/datapoints-graph/index.d.ts.map +1 -1
  270. package/widgets/implementations/datapoints-table/index.d.ts +19 -23
  271. package/widgets/implementations/datapoints-table/index.d.ts.map +1 -1
  272. package/widgets/implementations/image/index.d.ts.map +1 -1
  273. package/widgets/implementations/info-gauge/index.d.ts +3 -2
  274. package/widgets/implementations/info-gauge/index.d.ts.map +1 -1
  275. package/widgets/implementations/kpi/index.d.ts +3 -2
  276. package/widgets/implementations/kpi/index.d.ts.map +1 -1
  277. package/widgets/implementations/linear-gauge/index.d.ts +3 -2
  278. package/widgets/implementations/linear-gauge/index.d.ts.map +1 -1
  279. package/widgets/implementations/pie-chart/index.d.ts +0 -9
  280. package/widgets/implementations/pie-chart/index.d.ts.map +1 -1
  281. package/widgets/implementations/quick-links/index.d.ts +1 -1
  282. package/widgets/implementations/quick-links/index.d.ts.map +1 -1
  283. package/fesm2022/c8y-ngx-components-computed-asset-properties-last-measurement-config.component-DkrSvf9F.mjs.map +0 -1
@@ -1,23 +1,24 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, Pipe, EventEmitter, Output, Input, Directive, ChangeDetectionStrategy, Component, signal, ViewChild, Optional } from '@angular/core';
3
- import * as i1$3 from '@angular/forms';
4
- import { ReactiveFormsModule, Validators } from '@angular/forms';
2
+ import { Injectable, Pipe, EventEmitter, Output, Input, Directive, ChangeDetectionStrategy, Component, signal, ViewChild, Optional, inject, DestroyRef } from '@angular/core';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
+ import * as i2$1 from '@angular/forms';
5
+ import { ReactiveFormsModule, FormBuilder, NgForm, Validators } from '@angular/forms';
5
6
  import * as i1$2 from '@c8y/ngx-components';
6
7
  import { DynamicComponentAlertAggregator, DynamicComponentAlert, CommonModule, DocsModule, DynamicComponentModule, ListGroupModule, DismissAlertStrategy, CoreModule } from '@c8y/ngx-components';
7
- import * as i2$1 from '@c8y/ngx-components/context-dashboard';
8
- import * as i4 from '@c8y/ngx-components/datapoint-selector';
8
+ import * as i4 from '@c8y/ngx-components/context-dashboard';
9
+ import { WidgetConfigComponent, WidgetConfigService } from '@c8y/ngx-components/context-dashboard';
9
10
  import { DatapointSelectorModule } from '@c8y/ngx-components/datapoint-selector';
10
11
  import * as i5 from '@c8y/ngx-components/global-context';
11
12
  import { REFRESH_OPTION, GlobalContextWidgetWrapperComponent, AGGREGATION_LABELS, AGGREGATION_VALUES_ARR } from '@c8y/ngx-components/global-context';
12
13
  import { INTERVAL_VALUES } from '@c8y/ngx-components/interval-picker';
13
14
  import { PopoverModule } from 'ngx-bootstrap/popover';
14
- import { BehaviorSubject, Subject, debounceTime } from 'rxjs';
15
- import { skip, distinctUntilChanged, takeUntil, debounceTime as debounceTime$1 } from 'rxjs/operators';
15
+ import { auditTime, debounceTime as debounceTime$1 } from 'rxjs/operators';
16
16
  import { gettext } from '@c8y/ngx-components/gettext';
17
17
  import * as i1 from '@c8y/ngx-components/datapoints-export-selector';
18
18
  import { DatapointsExportSelectorComponent } from '@c8y/ngx-components/datapoints-export-selector';
19
19
  import * as i1$1 from '@ngx-translate/core';
20
- import { merge, isEqual } from 'lodash-es';
20
+ import { merge } from 'lodash-es';
21
+ import { BehaviorSubject, Subject, debounceTime } from 'rxjs';
21
22
  import { aggregationType } from '@c8y/client';
22
23
  import * as i2 from '@angular/common';
23
24
 
@@ -462,10 +463,10 @@ class DatapointsTableViewService {
462
463
  setToLastDayOfPreviousMonth(date) {
463
464
  date.setUTCDate(0);
464
465
  }
465
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DatapointsTableViewService, deps: [{ token: i1.DataFetchingService }], target: i0.ɵɵFactoryTarget.Injectable }); }
466
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DatapointsTableViewService, providedIn: 'root' }); }
466
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DatapointsTableViewService, deps: [{ token: i1.DataFetchingService }], target: i0.ɵɵFactoryTarget.Injectable }); }
467
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DatapointsTableViewService, providedIn: 'root' }); }
467
468
  }
468
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DatapointsTableViewService, decorators: [{
469
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DatapointsTableViewService, decorators: [{
469
470
  type: Injectable,
470
471
  args: [{
471
472
  providedIn: 'root'
@@ -649,10 +650,10 @@ class AdjustAggregatedTimeRangePipe {
649
650
  return `${hours.toString().padStart(2, '0')}:${useHourOnly ? '00' : minutes}`;
650
651
  }
651
652
  }
652
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AdjustAggregatedTimeRangePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
653
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: AdjustAggregatedTimeRangePipe, isStandalone: true, name: "adjustAggregatedTimeRange" }); }
653
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AdjustAggregatedTimeRangePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
654
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.17", ngImport: i0, type: AdjustAggregatedTimeRangePipe, isStandalone: true, name: "adjustAggregatedTimeRange" }); }
654
655
  }
655
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AdjustAggregatedTimeRangePipe, decorators: [{
656
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AdjustAggregatedTimeRangePipe, decorators: [{
656
657
  type: Pipe,
657
658
  args: [{
658
659
  name: 'adjustAggregatedTimeRange',
@@ -683,10 +684,10 @@ class ApplyRangeClassPipe {
683
684
  }
684
685
  return 'default';
685
686
  }
686
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ApplyRangeClassPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
687
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: ApplyRangeClassPipe, isStandalone: true, name: "applyRangeClass" }); }
687
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ApplyRangeClassPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
688
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.17", ngImport: i0, type: ApplyRangeClassPipe, isStandalone: true, name: "applyRangeClass" }); }
688
689
  }
689
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ApplyRangeClassPipe, decorators: [{
690
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ApplyRangeClassPipe, decorators: [{
690
691
  type: Pipe,
691
692
  args: [{
692
693
  name: 'applyRangeClass',
@@ -723,10 +724,10 @@ class ColumnTitlePipe {
723
724
  }
724
725
  return `${label} ${unit} (${renderType})`.trim();
725
726
  }
726
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ColumnTitlePipe, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe }); }
727
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: ColumnTitlePipe, isStandalone: true, name: "columnTitle" }); }
727
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ColumnTitlePipe, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe }); }
728
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.17", ngImport: i0, type: ColumnTitlePipe, isStandalone: true, name: "columnTitle" }); }
728
729
  }
729
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ColumnTitlePipe, decorators: [{
730
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ColumnTitlePipe, decorators: [{
730
731
  type: Pipe,
731
732
  args: [{
732
733
  name: 'columnTitle',
@@ -790,10 +791,10 @@ class VirtualScrollListenerDirective {
790
791
  this.ngZone.run(() => this.scrolledToTop.emit());
791
792
  }
792
793
  }
793
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: VirtualScrollListenerDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
794
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.16", type: VirtualScrollListenerDirective, isStandalone: true, selector: "[c8yVirtualScrollListener]", inputs: { scrollThreshold: "scrollThreshold" }, outputs: { scrolled: "scrolled", scrolledToTop: "scrolledToTop" }, ngImport: i0 }); }
794
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: VirtualScrollListenerDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
795
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.17", type: VirtualScrollListenerDirective, isStandalone: true, selector: "[c8yVirtualScrollListener]", inputs: { scrollThreshold: "scrollThreshold" }, outputs: { scrolled: "scrolled", scrolledToTop: "scrolledToTop" }, ngImport: i0 }); }
795
796
  }
796
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: VirtualScrollListenerDirective, decorators: [{
797
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: VirtualScrollListenerDirective, decorators: [{
797
798
  type: Directive,
798
799
  args: [{
799
800
  selector: '[c8yVirtualScrollListener]',
@@ -834,10 +835,10 @@ class DynamicColumnDirective {
834
835
  this.renderer.addClass(this.el.nativeElement, className);
835
836
  }
836
837
  }
837
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DynamicColumnDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
838
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.16", type: DynamicColumnDirective, isStandalone: true, selector: "[c8yDynamicColumn]", inputs: { numberOfColumns: ["c8yDynamicColumn", "numberOfColumns"] }, ngImport: i0 }); }
838
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DynamicColumnDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
839
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.17", type: DynamicColumnDirective, isStandalone: true, selector: "[c8yDynamicColumn]", inputs: { numberOfColumns: ["c8yDynamicColumn", "numberOfColumns"] }, ngImport: i0 }); }
839
840
  }
840
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DynamicColumnDirective, decorators: [{
841
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DynamicColumnDirective, decorators: [{
841
842
  type: Directive,
842
843
  args: [{
843
844
  selector: '[c8yDynamicColumn]',
@@ -918,10 +919,10 @@ class DatapointsTableComponent {
918
919
  type: 'system'
919
920
  }));
920
921
  }
921
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DatapointsTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
922
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DatapointsTableComponent, isStandalone: true, selector: "c8y-datapoints-table", inputs: { aggregationType: "aggregationType", datapointsTableItems: "datapointsTableItems", devicesColumnHeaders: "devicesColumnHeaders", decimalPlaces: "decimalPlaces", hasMultipleDatapoints: "hasMultipleDatapoints", isLoading: "isLoading", seriesWithoutPermissionToReadCount: "seriesWithoutPermissionToReadCount" }, outputs: { isScrolling: "isScrolling" }, host: { classAttribute: "d-col flex-grow" }, usesOnChanges: true, ngImport: i0, template: "@if (!hasNoPermissionsToReadAnyMeasurement) {\n <div class=\"c8y-cq-440\">\n <div\n class=\"hidden-xs c8y-list__item c8y-list--timeline hidden-cq\"\n [ngClass]=\"{ 'separator-top-bottom': devicesColumnHeaders.length > 0 }\"\n >\n <div class=\"d-flex container-fluid\">\n <div class=\"c8y-list--timeline__item__date\"></div>\n <div class=\"c8y-list__item__block flex-grow min-width-0\">\n <div class=\"c8y-list__item__body\">\n <div class=\"d-flex row\">\n @if (hasMultipleDatapoints) {\n <div\n class=\"min-width-0\"\n [title]=\"'Device' | translate\"\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n >\n <span class=\"text-medium text-truncate\">\n {{ 'Device' | translate }}\n </span>\n </div>\n }\n <!-- Data points column headers -->\n @for (header of devicesColumnHeaders; track header) {\n <div\n class=\"min-width-0\"\n title=\"{{ header | columnTitle }}\"\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n >\n <span class=\"text-medium text-truncate\">\n {{ header.label }} {{ header.unit }}\n </span>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- The record list -->\n @if (!isLoading) {\n @if (datapointsTableItems.length) {\n <c8y-list-group\n class=\"p-t-8 flex-grow c8y-cq-440\"\n c8yVirtualScrollListener\n (scrolled)=\"onListScrolled()\"\n (scrolledToTop)=\"onListScrolledToTop()\"\n >\n <c8y-li-timeline\n *c8yFor=\"\n let tableItem of { data: datapointsTableItems, res: null };\n enableVirtualScroll: true;\n virtualScrollElementSize: 48;\n virtualScrollStrategy: 'fixed'\n \"\n >\n {{ tableItem.dateAndTime | c8yDate: 'mediumDate' }}\n {{\n tableItem.dateAndTime\n | c8yDate: 'mediumTime'\n | adjustAggregatedTimeRange: aggregationType\n }}\n <c8y-li>\n <c8y-li-body>\n <div class=\"d-flex row\">\n @if (devicesColumnHeaders.length > 1) {\n <div\n class=\"min-width-0\"\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n [attr.data-label]=\"'Device' | translate\"\n >\n <div\n class=\"text-truncate\"\n title=\"{{ tableItem.deviceName }}\"\n >\n {{ tableItem.deviceName }}\n </div>\n </div>\n }\n <!-- Data point value row cells -->\n\n @for (row of tableItem.rowItems; track row) {\n @if (row !== null) {\n @switch (row.renderType) {\n @case ('min') {\n <div\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n [ngClass]=\"row.value.min ?? null | applyRangeClass: getRangeValues(row)\"\n [attr.data-label]=\"row.label\"\n data-cy=\"c8y-datapoints-table--value-min\"\n >\n <div\n class=\"text-truncate\"\n title=\"{{\n row.value.min ?? '' | number: getFractionSize(row.value.min)\n }}\"\n >\n {{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\n </div>\n </div>\n }\n @case ('max') {\n <div\n class=\"col-md-4\"\n [ngClass]=\"row.value.max ?? null | applyRangeClass: getRangeValues(row)\"\n data-cy=\"c8y-datapoints-table--value-max\"\n >\n <div\n class=\"text-truncate\"\n title=\"{{\n row.value.max ?? '' | number: getFractionSize(row.value.max)\n }}\"\n >\n {{ row.value.max ?? '' | number: getFractionSize(row.value.max) }}\n </div>\n </div>\n }\n @case ('area') {\n <div\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n data-cy=\"c8y-datapoints-table--value-minmax\"\n >\n <span\n class=\"text-truncate\"\n title=\"{{\n row.value.min ?? '' | number: getFractionSize(row.value.min)\n }}\"\n [ngClass]=\"row.value.min ?? null | applyRangeClass: getRangeValues(row)\"\n data-cy=\"c8y-datapoints-table--value-minmax-min\"\n >\n {{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\n </span>\n ...\n <span\n class=\"text-truncate\"\n title=\"{{\n row.value.max ?? '' | number: getFractionSize(row.value.max)\n }}\"\n [ngClass]=\"row.value.max ?? null | applyRangeClass: getRangeValues(row)\"\n data-cy=\"c8y-datapoints-table--value-minmax-max\"\n >\n {{ row.value.max ?? '' | number: getFractionSize(row.value.max) }}\n </span>\n </div>\n }\n @default {\n <div [c8yDynamicColumn]=\"devicesColumnHeaders.length\">\n <span\n class=\"text-truncate\"\n title=\"{{\n row.value.min ?? '' | number: getFractionSize(row.value.min)\n }}\"\n [ngClass]=\"row.value.min ?? null | applyRangeClass: getRangeValues(row)\"\n >\n {{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\n </span>\n </div>\n }\n }\n } @else {\n <div [c8yDynamicColumn]=\"devicesColumnHeaders.length\"></div>\n }\n }\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-li-timeline>\n </c8y-list-group>\n } @else {\n <div class=\"p-relative p-l-24\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-alert-idle'\"\n [title]=\"'No data to display.' | translate\"\n [horizontal]=\"true\"\n data-cy=\"datapoints-table-list--empty-state\"\n >\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a c8y-guide-href=\"/docs/cockpit/widgets-collection/#data-point-table\">\n user documentation</a\n >.\n </small>\n </p>\n </c8y-ui-empty-state>\n </div>\n }\n } @else {\n <c8y-loading></c8y-loading>\n }\n} @else {\n <div class=\"p-t-24 p-r-16 p-l-16 p-b-16 d-flex\">\n <div class=\"center-block\">\n <c8y-dynamic-component-alerts\n [alerts]=\"missingAllPermissionsAlert\"\n ></c8y-dynamic-component-alerts>\n </div>\n </div>\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: i1$2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i1$2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: i1$2.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "ngmodule", type: DocsModule }, { kind: "directive", type: i1$2.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i1$2.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "directive", type: DynamicColumnDirective, selector: "[c8yDynamicColumn]", inputs: ["c8yDynamicColumn"] }, { kind: "ngmodule", type: DynamicComponentModule }, { kind: "component", type: i1$2.DynamicComponentAlertsComponent, selector: "c8y-dynamic-component-alerts", inputs: ["alerts"] }, { kind: "ngmodule", type: ListGroupModule }, { kind: "component", type: i1$2.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i1$2.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i1$2.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i1$2.ListItemTimelineComponent, selector: "c8y-list-item-timeline, c8y-li-timeline" }, { kind: "directive", type: VirtualScrollListenerDirective, selector: "[c8yVirtualScrollListener]", inputs: ["scrollThreshold"], outputs: ["scrolled", "scrolledToTop"] }, { kind: "pipe", type: AdjustAggregatedTimeRangePipe, name: "adjustAggregatedTimeRange" }, { kind: "pipe", type: ApplyRangeClassPipe, name: "applyRangeClass" }, { kind: "pipe", type: ColumnTitlePipe, name: "columnTitle" }, { kind: "pipe", type: i1$2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.DecimalPipe, name: "number" }, { kind: "pipe", type: i1$2.DatePipe, name: "c8yDate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
922
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DatapointsTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
923
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: DatapointsTableComponent, isStandalone: true, selector: "c8y-datapoints-table", inputs: { aggregationType: "aggregationType", datapointsTableItems: "datapointsTableItems", devicesColumnHeaders: "devicesColumnHeaders", decimalPlaces: "decimalPlaces", hasMultipleDatapoints: "hasMultipleDatapoints", isLoading: "isLoading", seriesWithoutPermissionToReadCount: "seriesWithoutPermissionToReadCount" }, outputs: { isScrolling: "isScrolling" }, host: { classAttribute: "d-col flex-grow" }, usesOnChanges: true, ngImport: i0, template: "@if (!hasNoPermissionsToReadAnyMeasurement) {\n <div class=\"c8y-cq-440\">\n <div\n class=\"hidden-xs c8y-list__item c8y-list--timeline hidden-cq\"\n [ngClass]=\"{ 'separator-top-bottom': devicesColumnHeaders.length > 0 }\"\n >\n <div class=\"d-flex container-fluid\">\n <div class=\"c8y-list--timeline__item__date\"></div>\n <div class=\"c8y-list__item__block flex-grow min-width-0\">\n <div class=\"c8y-list__item__body\">\n <div class=\"d-flex row\">\n @if (hasMultipleDatapoints) {\n <div\n class=\"min-width-0\"\n [title]=\"'Device' | translate\"\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n >\n <span class=\"text-medium text-truncate\">\n {{ 'Device' | translate }}\n </span>\n </div>\n }\n <!-- Data points column headers -->\n @for (header of devicesColumnHeaders; track header) {\n <div\n class=\"min-width-0\"\n title=\"{{ header | columnTitle }}\"\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n >\n <span class=\"text-medium text-truncate\">\n {{ header.label }} {{ header.unit }}\n </span>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- The record list -->\n @if (!isLoading) {\n @if (datapointsTableItems.length) {\n <c8y-list-group\n class=\"p-t-8 flex-grow c8y-cq-440\"\n c8yVirtualScrollListener\n (scrolled)=\"onListScrolled()\"\n (scrolledToTop)=\"onListScrolledToTop()\"\n >\n <c8y-li-timeline\n *c8yFor=\"\n let tableItem of { data: datapointsTableItems, res: null };\n enableVirtualScroll: true;\n virtualScrollElementSize: 48;\n virtualScrollStrategy: 'fixed'\n \"\n >\n {{ tableItem.dateAndTime | c8yDate: 'mediumDate' }}\n {{\n tableItem.dateAndTime\n | c8yDate: 'mediumTime'\n | adjustAggregatedTimeRange: aggregationType\n }}\n <c8y-li>\n <c8y-li-body>\n <div class=\"d-flex row\">\n @if (devicesColumnHeaders.length > 1) {\n <div\n class=\"min-width-0\"\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n [attr.data-label]=\"'Device' | translate\"\n >\n <div\n class=\"text-truncate\"\n title=\"{{ tableItem.deviceName }}\"\n >\n {{ tableItem.deviceName }}\n </div>\n </div>\n }\n <!-- Data point value row cells -->\n\n @for (row of tableItem.rowItems; track row) {\n @if (row !== null) {\n @switch (row.renderType) {\n @case ('min') {\n <div\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n [ngClass]=\"row.value.min ?? null | applyRangeClass: getRangeValues(row)\"\n [attr.data-label]=\"row.label\"\n data-cy=\"c8y-datapoints-table--value-min\"\n >\n <div\n class=\"text-truncate\"\n title=\"{{\n row.value.min ?? '' | number: getFractionSize(row.value.min)\n }}\"\n >\n {{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\n </div>\n </div>\n }\n @case ('max') {\n <div\n class=\"col-md-4\"\n [ngClass]=\"row.value.max ?? null | applyRangeClass: getRangeValues(row)\"\n data-cy=\"c8y-datapoints-table--value-max\"\n >\n <div\n class=\"text-truncate\"\n title=\"{{\n row.value.max ?? '' | number: getFractionSize(row.value.max)\n }}\"\n >\n {{ row.value.max ?? '' | number: getFractionSize(row.value.max) }}\n </div>\n </div>\n }\n @case ('area') {\n <div\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n data-cy=\"c8y-datapoints-table--value-minmax\"\n >\n <span\n class=\"text-truncate\"\n title=\"{{\n row.value.min ?? '' | number: getFractionSize(row.value.min)\n }}\"\n [ngClass]=\"row.value.min ?? null | applyRangeClass: getRangeValues(row)\"\n data-cy=\"c8y-datapoints-table--value-minmax-min\"\n >\n {{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\n </span>\n ...\n <span\n class=\"text-truncate\"\n title=\"{{\n row.value.max ?? '' | number: getFractionSize(row.value.max)\n }}\"\n [ngClass]=\"row.value.max ?? null | applyRangeClass: getRangeValues(row)\"\n data-cy=\"c8y-datapoints-table--value-minmax-max\"\n >\n {{ row.value.max ?? '' | number: getFractionSize(row.value.max) }}\n </span>\n </div>\n }\n @default {\n <div [c8yDynamicColumn]=\"devicesColumnHeaders.length\">\n <span\n class=\"text-truncate\"\n title=\"{{\n row.value.min ?? '' | number: getFractionSize(row.value.min)\n }}\"\n [ngClass]=\"row.value.min ?? null | applyRangeClass: getRangeValues(row)\"\n >\n {{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\n </span>\n </div>\n }\n }\n } @else {\n <div [c8yDynamicColumn]=\"devicesColumnHeaders.length\"></div>\n }\n }\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-li-timeline>\n </c8y-list-group>\n } @else {\n <div class=\"p-relative p-l-24\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-alert-idle'\"\n [title]=\"'No data to display.' | translate\"\n [horizontal]=\"true\"\n data-cy=\"datapoints-table-list--empty-state\"\n >\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a c8y-guide-href=\"/docs/cockpit/widgets-collection/#data-point-table\">\n user documentation</a\n >.\n </small>\n </p>\n </c8y-ui-empty-state>\n </div>\n }\n } @else {\n <c8y-loading></c8y-loading>\n }\n} @else {\n <div class=\"p-t-24 p-r-16 p-l-16 p-b-16 d-flex\">\n <div class=\"center-block\">\n <c8y-dynamic-component-alerts\n [alerts]=\"missingAllPermissionsAlert\"\n ></c8y-dynamic-component-alerts>\n </div>\n </div>\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: i1$2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i1$2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: i1$2.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "ngmodule", type: DocsModule }, { kind: "directive", type: i1$2.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i1$2.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "directive", type: DynamicColumnDirective, selector: "[c8yDynamicColumn]", inputs: ["c8yDynamicColumn"] }, { kind: "ngmodule", type: DynamicComponentModule }, { kind: "component", type: i1$2.DynamicComponentAlertsComponent, selector: "c8y-dynamic-component-alerts", inputs: ["alerts"] }, { kind: "ngmodule", type: ListGroupModule }, { kind: "component", type: i1$2.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i1$2.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i1$2.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i1$2.ListItemTimelineComponent, selector: "c8y-list-item-timeline, c8y-li-timeline" }, { kind: "directive", type: VirtualScrollListenerDirective, selector: "[c8yVirtualScrollListener]", inputs: ["scrollThreshold"], outputs: ["scrolled", "scrolledToTop"] }, { kind: "pipe", type: AdjustAggregatedTimeRangePipe, name: "adjustAggregatedTimeRange" }, { kind: "pipe", type: ApplyRangeClassPipe, name: "applyRangeClass" }, { kind: "pipe", type: ColumnTitlePipe, name: "columnTitle" }, { kind: "pipe", type: i1$2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.DecimalPipe, name: "number" }, { kind: "pipe", type: i1$2.DatePipe, name: "c8yDate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
923
924
  }
924
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DatapointsTableComponent, decorators: [{
925
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DatapointsTableComponent, decorators: [{
925
926
  type: Component,
926
927
  args: [{ selector: 'c8y-datapoints-table', host: { class: 'd-col flex-grow' }, standalone: true, imports: [
927
928
  AdjustAggregatedTimeRangePipe,
@@ -1234,10 +1235,10 @@ class DatapointsTableViewWidgetComponent {
1234
1235
  datapoint.__target = { name, id };
1235
1236
  }
1236
1237
  }
1237
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DatapointsTableViewWidgetComponent, deps: [{ token: i1$2.AlertService }, { token: DatapointsTableViewService }, { token: i1$1.TranslateService }, { token: i2$1.ContextDashboardComponent, optional: true }, { token: i5.WidgetConfigMigrationService }], target: i0.ɵɵFactoryTarget.Component }); }
1238
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: DatapointsTableViewWidgetComponent, isStandalone: true, selector: "c8y-datapoints-table-view", inputs: { config: "config", isInPreviewMode: "isInPreviewMode" }, host: { classAttribute: "d-col fit-h" }, viewQueries: [{ propertyName: "globalContextWidgetWrapperComponent", first: true, predicate: GlobalContextWidgetWrapperComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!isInPreviewMode\">\n <div class=\"d-flex gap-16 p-r-16 inner-scroll h-auto min-width-0\">\n <c8y-global-context-widget-wrapper\n *ngIf=\"widgetControls\"\n [widgetControls]=\"widgetControls\"\n [displayMode]=\"'inline'\"\n [isLoading]=\"isLoading$ | async\"\n [config]=\"config\"\n (globalContextChange)=\"onGlobalContextChange($event)\"\n ></c8y-global-context-widget-wrapper>\n <ng-container *ngIf=\"config.datapoints.length > 0\"></ng-container>\n <c8y-datapoints-export-selector\n class=\"m-l-auto p-b-8\"\n [containerClass]=\"containerClass\"\n [exportConfig]=\"exportConfig\"\n (isOpen)=\"onExportModalOpen($event)\"\n ></c8y-datapoints-export-selector>\n </div>\n</ng-container>\n<ng-container *ngIf=\"devicesColumnHeaders\">\n <c8y-datapoints-table\n [aggregationType]=\"config.aggregation\"\n [datapointsTableItems]=\"datapointsTableItems\"\n [decimalPlaces]=\"config.decimalPlaces\"\n [devicesColumnHeaders]=\"devicesColumnHeaders\"\n [hasMultipleDatapoints]=\"hasMultipleDatapoints\"\n [isLoading]=\"isLoading$ | async\"\n [seriesWithoutPermissionToReadCount]=\"seriesWithoutPermissionToRead?.length\"\n (isScrolling)=\"onScrolling($event)\"\n ></c8y-datapoints-table>\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DatapointsExportSelectorComponent, selector: "c8y-datapoints-export-selector", inputs: ["displayMode", "containerClass", "exportConfig"], outputs: ["isOpen"] }, { kind: "component", type: DatapointsTableComponent, selector: "c8y-datapoints-table", inputs: ["aggregationType", "datapointsTableItems", "devicesColumnHeaders", "decimalPlaces", "hasMultipleDatapoints", "isLoading", "seriesWithoutPermissionToReadCount"], outputs: ["isScrolling"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: GlobalContextWidgetWrapperComponent, selector: "c8y-global-context-widget-wrapper", inputs: ["isLoading", "displayMode", "widgetControls", "controlLinks", "dashboardChildForLegacy", "config", "disableRefreshEmits"], outputs: ["globalContextChange"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
1238
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DatapointsTableViewWidgetComponent, deps: [{ token: i1$2.AlertService }, { token: DatapointsTableViewService }, { token: i1$1.TranslateService }, { token: i4.ContextDashboardComponent, optional: true }, { token: i5.WidgetConfigMigrationService }], target: i0.ɵɵFactoryTarget.Component }); }
1239
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: DatapointsTableViewWidgetComponent, isStandalone: true, selector: "c8y-datapoints-table-view", inputs: { config: "config", isInPreviewMode: "isInPreviewMode" }, host: { classAttribute: "d-col fit-h" }, viewQueries: [{ propertyName: "globalContextWidgetWrapperComponent", first: true, predicate: GlobalContextWidgetWrapperComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!isInPreviewMode\">\n <div class=\"d-flex gap-16 p-r-16 inner-scroll h-auto min-width-0\">\n <c8y-global-context-widget-wrapper\n *ngIf=\"widgetControls\"\n [widgetControls]=\"widgetControls\"\n [displayMode]=\"'inline'\"\n [isLoading]=\"isLoading$ | async\"\n [config]=\"config\"\n (globalContextChange)=\"onGlobalContextChange($event)\"\n ></c8y-global-context-widget-wrapper>\n <ng-container *ngIf=\"config.datapoints.length > 0\"></ng-container>\n <c8y-datapoints-export-selector\n class=\"m-l-auto p-b-8\"\n [containerClass]=\"containerClass\"\n [exportConfig]=\"exportConfig\"\n (isOpen)=\"onExportModalOpen($event)\"\n ></c8y-datapoints-export-selector>\n </div>\n</ng-container>\n<ng-container *ngIf=\"devicesColumnHeaders\">\n <c8y-datapoints-table\n [aggregationType]=\"config.aggregation\"\n [datapointsTableItems]=\"datapointsTableItems\"\n [decimalPlaces]=\"config.decimalPlaces\"\n [devicesColumnHeaders]=\"devicesColumnHeaders\"\n [hasMultipleDatapoints]=\"hasMultipleDatapoints\"\n [isLoading]=\"isLoading$ | async\"\n [seriesWithoutPermissionToReadCount]=\"seriesWithoutPermissionToRead?.length\"\n (isScrolling)=\"onScrolling($event)\"\n ></c8y-datapoints-table>\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DatapointsExportSelectorComponent, selector: "c8y-datapoints-export-selector", inputs: ["displayMode", "containerClass", "exportConfig"], outputs: ["isOpen"] }, { kind: "component", type: DatapointsTableComponent, selector: "c8y-datapoints-table", inputs: ["aggregationType", "datapointsTableItems", "devicesColumnHeaders", "decimalPlaces", "hasMultipleDatapoints", "isLoading", "seriesWithoutPermissionToReadCount"], outputs: ["isScrolling"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: GlobalContextWidgetWrapperComponent, selector: "c8y-global-context-widget-wrapper", inputs: ["isLoading", "displayMode", "widgetControls", "controlLinks", "dashboardChildForLegacy", "config", "disableRefreshEmits"], outputs: ["globalContextChange"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
1239
1240
  }
1240
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DatapointsTableViewWidgetComponent, decorators: [{
1241
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DatapointsTableViewWidgetComponent, decorators: [{
1241
1242
  type: Component,
1242
1243
  args: [{ selector: 'c8y-datapoints-table-view', host: { class: 'd-col fit-h' }, standalone: true, imports: [
1243
1244
  CommonModule,
@@ -1246,7 +1247,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
1246
1247
  ReactiveFormsModule,
1247
1248
  GlobalContextWidgetWrapperComponent
1248
1249
  ], template: "<ng-container *ngIf=\"!isInPreviewMode\">\n <div class=\"d-flex gap-16 p-r-16 inner-scroll h-auto min-width-0\">\n <c8y-global-context-widget-wrapper\n *ngIf=\"widgetControls\"\n [widgetControls]=\"widgetControls\"\n [displayMode]=\"'inline'\"\n [isLoading]=\"isLoading$ | async\"\n [config]=\"config\"\n (globalContextChange)=\"onGlobalContextChange($event)\"\n ></c8y-global-context-widget-wrapper>\n <ng-container *ngIf=\"config.datapoints.length > 0\"></ng-container>\n <c8y-datapoints-export-selector\n class=\"m-l-auto p-b-8\"\n [containerClass]=\"containerClass\"\n [exportConfig]=\"exportConfig\"\n (isOpen)=\"onExportModalOpen($event)\"\n ></c8y-datapoints-export-selector>\n </div>\n</ng-container>\n<ng-container *ngIf=\"devicesColumnHeaders\">\n <c8y-datapoints-table\n [aggregationType]=\"config.aggregation\"\n [datapointsTableItems]=\"datapointsTableItems\"\n [decimalPlaces]=\"config.decimalPlaces\"\n [devicesColumnHeaders]=\"devicesColumnHeaders\"\n [hasMultipleDatapoints]=\"hasMultipleDatapoints\"\n [isLoading]=\"isLoading$ | async\"\n [seriesWithoutPermissionToReadCount]=\"seriesWithoutPermissionToRead?.length\"\n (isScrolling)=\"onScrolling($event)\"\n ></c8y-datapoints-table>\n</ng-container>\n" }]
1249
- }], ctorParameters: () => [{ type: i1$2.AlertService }, { type: DatapointsTableViewService }, { type: i1$1.TranslateService }, { type: i2$1.ContextDashboardComponent, decorators: [{
1250
+ }], ctorParameters: () => [{ type: i1$2.AlertService }, { type: DatapointsTableViewService }, { type: i1$1.TranslateService }, { type: i4.ContextDashboardComponent, decorators: [{
1250
1251
  type: Optional
1251
1252
  }] }, { type: i5.WidgetConfigMigrationService }], propDecorators: { globalContextWidgetWrapperComponent: [{
1252
1253
  type: ViewChild,
@@ -1257,33 +1258,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
1257
1258
  type: Input
1258
1259
  }] } });
1259
1260
 
1260
- function minOneDatapointActive() {
1261
- return (control) => {
1262
- const datapoints = control.value;
1263
- if (!datapoints || !datapoints.length) {
1264
- return null;
1265
- }
1266
- const activeDatapoints = datapoints.filter(datapoint => datapoint.__active);
1267
- if (activeDatapoints.length >= 1) {
1268
- return null;
1269
- }
1270
- return { exactlyOneDatapointNeedsToBeActive: true };
1271
- };
1272
- }
1261
+ const DEFAULT_DECIMAL_PLACES = 2;
1262
+ const MIN_DECIMAL_PLACES = 0;
1263
+ const MAX_DECIMAL_PLACES = 10;
1273
1264
  class DatapointsTableWidgetConfigComponent {
1274
- set previewMapSet(template) {
1275
- if (template) {
1276
- this.widgetConfigService.setPreview(template);
1277
- return;
1278
- }
1279
- this.widgetConfigService.setPreview(null);
1280
- }
1281
- constructor(form, formBuilder, widgetConfig, widgetConfigService) {
1282
- this.form = form;
1283
- this.formBuilder = formBuilder;
1284
- this.widgetConfig = widgetConfig;
1285
- this.widgetConfigService = widgetConfigService;
1286
- this.composedConfig = null;
1265
+ constructor() {
1266
+ this.destroyRef = inject(DestroyRef);
1267
+ this.formBuilder = inject(FormBuilder);
1268
+ this.parentForm = inject(NgForm, { optional: true });
1269
+ this.widgetConfig = inject(WidgetConfigComponent);
1270
+ this.widgetConfigService = inject(WidgetConfigService);
1287
1271
  this.AGGREGATION_LABELS = AGGREGATION_LABELS;
1288
1272
  this.DATE_SELECTION_LABELS = DATE_SELECTION_LABELS;
1289
1273
  this.DEFAULT_DATE_SELECTOR_VALUE = DATE_SELECTION_VALUES.dashboard_context;
@@ -1301,88 +1285,65 @@ class DatapointsTableWidgetConfigComponent {
1301
1285
  showRedRange: true,
1302
1286
  showYellowRange: true
1303
1287
  };
1304
- this.decimalLimits = {
1305
- numberOfDecimalPlacesMin: 0,
1306
- numberOfDecimalPlacesMax: 10
1307
- };
1308
- this.destroy$ = new Subject();
1309
1288
  this.widgetControls = {
1310
1289
  presets: ['defaultWithAggregation']
1311
1290
  };
1291
+ /**
1292
+ * Debounced config for preview to prevent multiple series requests on initial load.
1293
+ * Uses auditTime to batch rapid emissions (e.g., from initConfig + GlobalContext processing).
1294
+ * Without it the preview may request data multiple times unnecessarily.
1295
+ */
1296
+ this.previewConfig$ = this.widgetConfigService.currentConfig$.pipe(auditTime(350));
1297
+ this.DATAPOINTS_TABLE_CONTROL_NAME = 'datapointsTableControl';
1298
+ }
1299
+ set previewMapSet(template) {
1300
+ this.widgetConfigService.setPreview(template ?? null);
1312
1301
  }
1313
1302
  ngOnInit() {
1314
1303
  if (this.widgetConfig.context?.id) {
1315
1304
  this.datapointSelectionConfig.contextAsset = this.widgetConfig?.context;
1316
1305
  }
1317
- this.composedConfig = { ...this.composedConfig, ...structuredClone(this.config) };
1318
1306
  this.initForm();
1319
1307
  }
1320
1308
  ngOnDestroy() {
1321
- this.destroy$.next();
1322
- this.destroy$.complete();
1309
+ this.parentForm.form.removeControl(this.DATAPOINTS_TABLE_CONTROL_NAME);
1323
1310
  }
1324
1311
  onBeforeSave(config) {
1325
- Object.assign(config, this.composedConfig);
1326
- return true;
1327
- }
1328
- ngOnChanges(changes) {
1329
- if (changes.config?.currentValue) {
1330
- const { dateTimeContext, refreshInterval, isAutoRefreshEnabled, aggregation, displayMode, refreshOption } = changes.config.currentValue;
1331
- this.composedConfig = {
1332
- ...this.composedConfig,
1333
- dateTimeContext,
1334
- refreshInterval,
1335
- isAutoRefreshEnabled,
1336
- aggregation,
1337
- displayMode,
1338
- refreshOption
1339
- };
1312
+ if (this.formGroup.valid) {
1313
+ Object.assign(config, this.formGroup.value);
1314
+ return true;
1340
1315
  }
1316
+ return false;
1341
1317
  }
1342
1318
  initForm() {
1343
1319
  this.formGroup = this.createForm();
1344
- if (!('aggregation' in this.config) || this.config.aggregation === undefined) {
1345
- this.config.aggregation = null;
1346
- }
1347
- this.form.form.addControl('config', this.formGroup);
1348
- this.formGroup.patchValue(this.config, { emitEvent: false });
1320
+ this.parentForm.form.addControl(this.DATAPOINTS_TABLE_CONTROL_NAME, this.formGroup);
1321
+ this.subscribeToFormChanges();
1322
+ }
1323
+ subscribeToFormChanges() {
1349
1324
  this.formGroup.valueChanges
1350
- .pipe(skip(1), distinctUntilChanged((prev, curr) => isEqual(prev, curr)), takeUntil(this.destroy$), debounceTime$1(300))
1351
- .subscribe((formValue) => {
1352
- const decimalPlaces = formValue.decimalPlaces;
1353
- const { numberOfDecimalPlacesMin, numberOfDecimalPlacesMax } = this.decimalLimits;
1354
- if (typeof decimalPlaces === 'number' &&
1355
- (decimalPlaces < numberOfDecimalPlacesMin || decimalPlaces > numberOfDecimalPlacesMax)) {
1356
- return;
1357
- }
1358
- this.composedConfig = { ...this.composedConfig, ...formValue };
1359
- if (formValue.datapoints?.length > 0) {
1360
- this.previewActiveDatapoint = formValue.datapoints.find(dp => dp.__active);
1361
- }
1325
+ .pipe(debounceTime$1(150), takeUntilDestroyed(this.destroyRef))
1326
+ .subscribe(formValue => {
1327
+ this.widgetConfigService.updateConfig(formValue);
1362
1328
  });
1363
1329
  }
1364
1330
  createForm() {
1365
1331
  return this.formBuilder.group({
1366
- datapoints: this.formBuilder.control(this.config?.datapoints ?? [], [
1367
- Validators.required,
1368
- Validators.minLength(1),
1369
- minOneDatapointActive()
1370
- ]),
1371
1332
  decimalPlaces: [
1372
- this.config?.decimalPlaces ?? 2,
1333
+ this.config.decimalPlaces ?? DEFAULT_DECIMAL_PLACES,
1373
1334
  [
1374
1335
  Validators.required,
1375
- Validators.min(this.decimalLimits.numberOfDecimalPlacesMin),
1376
- Validators.max(this.decimalLimits.numberOfDecimalPlacesMax),
1336
+ Validators.min(MIN_DECIMAL_PLACES),
1337
+ Validators.max(MAX_DECIMAL_PLACES),
1377
1338
  Validators.pattern('^[0-9]+$')
1378
1339
  ]
1379
1340
  ]
1380
1341
  });
1381
1342
  }
1382
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DatapointsTableWidgetConfigComponent, deps: [{ token: i1$3.NgForm }, { token: i1$3.FormBuilder }, { token: i2$1.WidgetConfigComponent }, { token: i2$1.WidgetConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
1383
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DatapointsTableWidgetConfigComponent, isStandalone: true, selector: "c8y-datapoints-table-view-config", inputs: { config: "config" }, viewQueries: [{ propertyName: "previewMapSet", first: true, predicate: ["datapointsTablePreview"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"p-l-24 p-r-24\">\n @if (formGroup) {\n <form\n class=\"no-card-context\"\n [formGroup]=\"formGroup\"\n >\n <fieldset class=\"c8y-fieldset\">\n <legend>\n {{ 'Decimal places' | translate }}\n </legend>\n <c8y-form-group class=\"p-t-8\">\n <input\n class=\"form-control\"\n name=\"decimalPlaces\"\n type=\"number\"\n formControlName=\"decimalPlaces\"\n step=\"1\"\n />\n </c8y-form-group>\n </fieldset>\n <c8y-datapoint-selection-list\n class=\"bg-inherit separator-top p-t-16 d-block\"\n listTitle=\"{{ 'Data points' | translate }}\"\n name=\"datapoints\"\n [defaultFormOptions]=\"defaultFormOptions\"\n [config]=\"datapointSelectionConfig\"\n [minActiveCount]=\"1\"\n formControlName=\"datapoints\"\n ></c8y-datapoint-selection-list>\n </form>\n }\n</div>\n\n<ng-template #datapointsTablePreview>\n @if (formGroup && formGroup.value && formGroup.value.datapoints?.length > 0) {\n <c8y-global-context-widget-wrapper\n [widgetControls]=\"widgetControls\"\n [displayMode]=\"'preview'\"\n [config]=\"composedConfig\"\n ></c8y-global-context-widget-wrapper>\n @if (composedConfig) {\n <c8y-datapoints-table-view\n [config]=\"composedConfig\"\n [isInPreviewMode]=\"true\"\n ></c8y-datapoints-table-view>\n }\n } @else {\n <div class=\"col-md-6 d-col a-i-start j-c-center\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points selected' | translate\"\n [subtitle]=\"'Select data point to render content' | translate\"\n [horizontal]=\"false\"\n data-cy=\"datapoints-table-list--empty-state-no-data-point-selected\"\n >\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a c8y-guide-href=\"/docs/cockpit/widgets-collection/#data-point-table\">\n user documentation</a\n >.\n </small>\n </p>\n </c8y-ui-empty-state>\n </div>\n }\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "component", type: i1$2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i1$2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i1$2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1$2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i1$2.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i1$2.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: DatapointSelectorModule }, { kind: "component", type: i4.DatapointSelectionListComponent, selector: "c8y-datapoint-selection-list", inputs: ["actions", "allowDragAndDrop", "config", "defaultFormOptions", "maxActiveCount", "minActiveCount", "resolveContext", "listTitle"], outputs: ["isValid", "change"] }, { kind: "component", type: DatapointsTableViewWidgetComponent, selector: "c8y-datapoints-table-view", inputs: ["config", "isInPreviewMode"] }, { kind: "component", type: GlobalContextWidgetWrapperComponent, selector: "c8y-global-context-widget-wrapper", inputs: ["isLoading", "displayMode", "widgetControls", "controlLinks", "dashboardChildForLegacy", "config", "disableRefreshEmits"], outputs: ["globalContextChange"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "pipe", type: i1$2.C8yTranslatePipe, name: "translate" }] }); }
1343
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DatapointsTableWidgetConfigComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1344
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: DatapointsTableWidgetConfigComponent, isStandalone: true, selector: "c8y-datapoints-table-view-config", inputs: { config: "config" }, viewQueries: [{ propertyName: "previewMapSet", first: true, predicate: ["datapointsTablePreview"], descendants: true }], ngImport: i0, template: "<div class=\"p-l-24 p-r-24\">\n @if (formGroup) {\n <form [formGroup]=\"formGroup\">\n <fieldset class=\"c8y-fieldset\">\n <legend>\n {{ 'Decimal places' | translate }}\n </legend>\n <c8y-form-group class=\"p-t-8\">\n <input\n class=\"form-control\"\n name=\"decimalPlaces\"\n type=\"number\"\n formControlName=\"decimalPlaces\"\n step=\"1\"\n />\n </c8y-form-group>\n </fieldset>\n </form>\n }\n</div>\n\n<ng-template #datapointsTablePreview>\n @let previewConfig = previewConfig$ | async;\n\n @if (previewConfig?.datapoints?.length > 0) {\n <c8y-global-context-widget-wrapper\n [widgetControls]=\"widgetControls\"\n [displayMode]=\"'preview'\"\n [config]=\"previewConfig\"\n ></c8y-global-context-widget-wrapper>\n <c8y-datapoints-table-view\n [config]=\"previewConfig\"\n [isInPreviewMode]=\"true\"\n ></c8y-datapoints-table-view>\n } @else {\n <div class=\"col-md-6 d-col a-i-start j-c-center\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points selected' | translate\"\n [subtitle]=\"'Select data point to render content' | translate\"\n [horizontal]=\"false\"\n data-cy=\"datapoints-table-list--empty-state-no-data-point-selected\"\n >\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a c8y-guide-href=\"/docs/cockpit/widgets-collection/#data-point-table\">\n user documentation</a\n >.\n </small>\n </p>\n </c8y-ui-empty-state>\n </div>\n }\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "component", type: i1$2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i1$2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i1$2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1$2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i1$2.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i1$2.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: DatapointSelectorModule }, { kind: "component", type: DatapointsTableViewWidgetComponent, selector: "c8y-datapoints-table-view", inputs: ["config", "isInPreviewMode"] }, { kind: "component", type: GlobalContextWidgetWrapperComponent, selector: "c8y-global-context-widget-wrapper", inputs: ["isLoading", "displayMode", "widgetControls", "controlLinks", "dashboardChildForLegacy", "config", "disableRefreshEmits"], outputs: ["globalContextChange"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "pipe", type: i1$2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
1384
1345
  }
1385
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DatapointsTableWidgetConfigComponent, decorators: [{
1346
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DatapointsTableWidgetConfigComponent, decorators: [{
1386
1347
  type: Component,
1387
1348
  args: [{ selector: 'c8y-datapoints-table-view-config', standalone: true, imports: [
1388
1349
  CoreModule,
@@ -1391,8 +1352,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
1391
1352
  GlobalContextWidgetWrapperComponent,
1392
1353
  PopoverModule,
1393
1354
  ReactiveFormsModule
1394
- ], template: "<div class=\"p-l-24 p-r-24\">\n @if (formGroup) {\n <form\n class=\"no-card-context\"\n [formGroup]=\"formGroup\"\n >\n <fieldset class=\"c8y-fieldset\">\n <legend>\n {{ 'Decimal places' | translate }}\n </legend>\n <c8y-form-group class=\"p-t-8\">\n <input\n class=\"form-control\"\n name=\"decimalPlaces\"\n type=\"number\"\n formControlName=\"decimalPlaces\"\n step=\"1\"\n />\n </c8y-form-group>\n </fieldset>\n <c8y-datapoint-selection-list\n class=\"bg-inherit separator-top p-t-16 d-block\"\n listTitle=\"{{ 'Data points' | translate }}\"\n name=\"datapoints\"\n [defaultFormOptions]=\"defaultFormOptions\"\n [config]=\"datapointSelectionConfig\"\n [minActiveCount]=\"1\"\n formControlName=\"datapoints\"\n ></c8y-datapoint-selection-list>\n </form>\n }\n</div>\n\n<ng-template #datapointsTablePreview>\n @if (formGroup && formGroup.value && formGroup.value.datapoints?.length > 0) {\n <c8y-global-context-widget-wrapper\n [widgetControls]=\"widgetControls\"\n [displayMode]=\"'preview'\"\n [config]=\"composedConfig\"\n ></c8y-global-context-widget-wrapper>\n @if (composedConfig) {\n <c8y-datapoints-table-view\n [config]=\"composedConfig\"\n [isInPreviewMode]=\"true\"\n ></c8y-datapoints-table-view>\n }\n } @else {\n <div class=\"col-md-6 d-col a-i-start j-c-center\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points selected' | translate\"\n [subtitle]=\"'Select data point to render content' | translate\"\n [horizontal]=\"false\"\n data-cy=\"datapoints-table-list--empty-state-no-data-point-selected\"\n >\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a c8y-guide-href=\"/docs/cockpit/widgets-collection/#data-point-table\">\n user documentation</a\n >.\n </small>\n </p>\n </c8y-ui-empty-state>\n </div>\n }\n</ng-template>\n" }]
1395
- }], ctorParameters: () => [{ type: i1$3.NgForm }, { type: i1$3.FormBuilder }, { type: i2$1.WidgetConfigComponent }, { type: i2$1.WidgetConfigService }], propDecorators: { previewMapSet: [{
1355
+ ], template: "<div class=\"p-l-24 p-r-24\">\n @if (formGroup) {\n <form [formGroup]=\"formGroup\">\n <fieldset class=\"c8y-fieldset\">\n <legend>\n {{ 'Decimal places' | translate }}\n </legend>\n <c8y-form-group class=\"p-t-8\">\n <input\n class=\"form-control\"\n name=\"decimalPlaces\"\n type=\"number\"\n formControlName=\"decimalPlaces\"\n step=\"1\"\n />\n </c8y-form-group>\n </fieldset>\n </form>\n }\n</div>\n\n<ng-template #datapointsTablePreview>\n @let previewConfig = previewConfig$ | async;\n\n @if (previewConfig?.datapoints?.length > 0) {\n <c8y-global-context-widget-wrapper\n [widgetControls]=\"widgetControls\"\n [displayMode]=\"'preview'\"\n [config]=\"previewConfig\"\n ></c8y-global-context-widget-wrapper>\n <c8y-datapoints-table-view\n [config]=\"previewConfig\"\n [isInPreviewMode]=\"true\"\n ></c8y-datapoints-table-view>\n } @else {\n <div class=\"col-md-6 d-col a-i-start j-c-center\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points selected' | translate\"\n [subtitle]=\"'Select data point to render content' | translate\"\n [horizontal]=\"false\"\n data-cy=\"datapoints-table-list--empty-state-no-data-point-selected\"\n >\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a c8y-guide-href=\"/docs/cockpit/widgets-collection/#data-point-table\">\n user documentation</a\n >.\n </small>\n </p>\n </c8y-ui-empty-state>\n </div>\n }\n</ng-template>\n" }]
1356
+ }], propDecorators: { previewMapSet: [{
1396
1357
  type: ViewChild,
1397
1358
  args: ['datapointsTablePreview']
1398
1359
  }], config: [{
@@ -1403,5 +1364,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
1403
1364
  * Generated bundle index. Do not edit.
1404
1365
  */
1405
1366
 
1406
- export { AdjustAggregatedTimeRangePipe, ApplyRangeClassPipe, DATE_SELECTION_LABELS, DATE_SELECTION_VALUES, DATE_SELECTION_VALUES_ARR, DEFAULT_DPT_REFRESH_INTERVAL_VALUE, DURATION_OPTIONS, DatapointsTableComponent, DatapointsTableViewService, DatapointsTableViewWidgetComponent, DatapointsTableWidgetConfigComponent, INTERVAL_VALUES_ARR, REFRESH_INTERVAL_VALUES_ARR, RENDER_TYPES_LABELS, TIME_RANGE_INTERVAL_LABELS, VirtualScrollListenerDirective, minOneDatapointActive };
1367
+ export { AdjustAggregatedTimeRangePipe, ApplyRangeClassPipe, DATE_SELECTION_LABELS, DATE_SELECTION_VALUES, DATE_SELECTION_VALUES_ARR, DEFAULT_DPT_REFRESH_INTERVAL_VALUE, DURATION_OPTIONS, DatapointsTableComponent, DatapointsTableViewService, DatapointsTableViewWidgetComponent, DatapointsTableWidgetConfigComponent, INTERVAL_VALUES_ARR, REFRESH_INTERVAL_VALUES_ARR, RENDER_TYPES_LABELS, TIME_RANGE_INTERVAL_LABELS, VirtualScrollListenerDirective };
1407
1368
  //# sourceMappingURL=c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map