@c8y/ngx-components 1023.58.3 → 1023.61.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) 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/assets-navigator/index.d.ts.map +1 -1
  6. package/computed-asset-properties/index.d.ts.map +1 -1
  7. package/context-dashboard/index.d.ts +31 -3
  8. package/context-dashboard/index.d.ts.map +1 -1
  9. package/datapoint-explorer/devicemanagement/index.d.ts.map +1 -1
  10. package/datapoint-selector/index.d.ts +90 -6
  11. package/datapoint-selector/index.d.ts.map +1 -1
  12. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs +16 -16
  13. package/fesm2022/c8y-ngx-components-advanced-software-management.mjs +7 -7
  14. package/fesm2022/c8y-ngx-components-ai-agent-chat.mjs +9 -9
  15. package/fesm2022/c8y-ngx-components-ai-ai-chat.mjs +12 -12
  16. package/fesm2022/c8y-ngx-components-ai.mjs +3 -3
  17. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +202 -44
  18. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
  19. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +4 -4
  20. package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs +3 -3
  21. package/fesm2022/c8y-ngx-components-alarms.mjs +82 -82
  22. package/fesm2022/c8y-ngx-components-api.mjs +7 -7
  23. package/fesm2022/c8y-ngx-components-app-logs.mjs +10 -10
  24. package/fesm2022/c8y-ngx-components-application-access-list.mjs +12 -12
  25. package/fesm2022/c8y-ngx-components-application-access-user-application-access-user-details-wrapper.mjs +3 -3
  26. package/fesm2022/c8y-ngx-components-asset-properties.mjs +121 -57
  27. package/fesm2022/c8y-ngx-components-asset-properties.mjs.map +1 -1
  28. package/fesm2022/{c8y-ngx-components-asset-property-grid.component-BoVrIpap.mjs → c8y-ngx-components-asset-property-grid.component-D3cPNQyD.mjs} +13 -13
  29. package/fesm2022/{c8y-ngx-components-asset-property-grid.component-BoVrIpap.mjs.map → c8y-ngx-components-asset-property-grid.component-D3cPNQyD.mjs.map} +1 -1
  30. package/fesm2022/c8y-ngx-components-assets-navigator.mjs +36 -34
  31. package/fesm2022/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  32. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +120 -120
  33. package/fesm2022/c8y-ngx-components-binary-file-download.mjs +7 -7
  34. package/fesm2022/c8y-ngx-components-bookmarks.mjs +13 -13
  35. package/fesm2022/c8y-ngx-components-branding-base-branding.mjs +4 -4
  36. package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs +7 -7
  37. package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs +7 -7
  38. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor-lazy.mjs +3 -3
  39. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs +7 -7
  40. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +15 -15
  41. package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs +6 -6
  42. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +36 -36
  43. package/fesm2022/c8y-ngx-components-branding-shared.mjs +13 -13
  44. package/fesm2022/c8y-ngx-components-child-devices.mjs +13 -13
  45. package/fesm2022/c8y-ngx-components-cockpit-config.mjs +40 -40
  46. 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
  47. 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
  48. package/fesm2022/c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-BxmSKHiM.mjs +790 -0
  49. package/fesm2022/c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-BxmSKHiM.mjs.map +1 -0
  50. 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
  51. 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
  52. 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
  53. 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
  54. package/fesm2022/c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-CYskL4Lc.mjs +120 -0
  55. package/fesm2022/c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-CYskL4Lc.mjs.map +1 -0
  56. 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
  57. package/fesm2022/c8y-ngx-components-computed-asset-properties-last-measurement-config.component-CDFNPo4q.mjs.map +1 -0
  58. package/fesm2022/c8y-ngx-components-computed-asset-properties.mjs +1 -642
  59. package/fesm2022/c8y-ngx-components-computed-asset-properties.mjs.map +1 -1
  60. package/fesm2022/c8y-ngx-components-connectivity.mjs +53 -53
  61. package/fesm2022/c8y-ngx-components-context-dashboard-asset-add.mjs +10 -10
  62. package/fesm2022/c8y-ngx-components-context-dashboard-asset-view.mjs +7 -7
  63. package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs +11 -11
  64. 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
  65. 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
  66. 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
  67. 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
  68. 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
  69. 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
  70. package/fesm2022/c8y-ngx-components-context-dashboard-device-add.mjs +10 -10
  71. package/fesm2022/c8y-ngx-components-context-dashboard-device-view.mjs +7 -7
  72. package/fesm2022/c8y-ngx-components-context-dashboard-devicemanagement.mjs +3 -3
  73. package/fesm2022/c8y-ngx-components-context-dashboard-state.mjs +3 -3
  74. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +143 -107
  75. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  76. 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
  77. 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
  78. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs +12 -12
  79. package/fesm2022/c8y-ngx-components-dashboard-manager-devicemanagement.mjs +6 -6
  80. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs +22 -22
  81. package/fesm2022/c8y-ngx-components-data-broker.mjs +7 -7
  82. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs +3 -3
  83. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs +3 -3
  84. package/fesm2022/c8y-ngx-components-datapoint-explorer-devicemanagement.mjs +1 -1
  85. package/fesm2022/c8y-ngx-components-datapoint-explorer-devicemanagement.mjs.map +1 -1
  86. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +25 -25
  87. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
  88. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +13 -13
  89. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs +3 -3
  90. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs +3 -3
  91. package/fesm2022/c8y-ngx-components-datapoint-library-services.mjs +3 -3
  92. package/fesm2022/c8y-ngx-components-datapoint-library.mjs +4 -4
  93. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +234 -67
  94. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  95. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +33 -33
  96. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs +16 -16
  97. package/fesm2022/c8y-ngx-components-device-enrolment-modal.mjs +9 -9
  98. package/fesm2022/c8y-ngx-components-device-enrolment.mjs +6 -6
  99. package/fesm2022/c8y-ngx-components-device-grid.mjs +43 -43
  100. package/fesm2022/c8y-ngx-components-device-list.mjs +22 -22
  101. package/fesm2022/c8y-ngx-components-device-map.mjs +12 -12
  102. package/fesm2022/c8y-ngx-components-device-profile.mjs +34 -34
  103. package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs +3 -3
  104. package/fesm2022/c8y-ngx-components-device-protocols.mjs +16 -16
  105. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +13 -13
  106. package/fesm2022/c8y-ngx-components-device-shell.mjs +31 -31
  107. package/fesm2022/c8y-ngx-components-diagnostics.mjs +13 -13
  108. package/fesm2022/c8y-ngx-components-echart.mjs +30 -30
  109. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +43 -43
  110. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs +7 -7
  111. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs +10 -10
  112. package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs +7 -7
  113. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +46 -46
  114. package/fesm2022/c8y-ngx-components-ecosystem.mjs +82 -82
  115. package/fesm2022/c8y-ngx-components-editor.mjs +6 -6
  116. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs +3 -3
  117. package/fesm2022/c8y-ngx-components-events.mjs +3 -3
  118. package/fesm2022/c8y-ngx-components-exports-list.mjs +6 -6
  119. package/fesm2022/c8y-ngx-components-feature-toggles-list.mjs +6 -6
  120. package/fesm2022/c8y-ngx-components-file-preview.mjs +7 -7
  121. package/fesm2022/c8y-ngx-components-files-repository.mjs +19 -19
  122. package/fesm2022/c8y-ngx-components-global-context.mjs +130 -130
  123. package/fesm2022/c8y-ngx-components-group-breadcrumbs.mjs +6 -6
  124. package/fesm2022/c8y-ngx-components-icon-selector.mjs +19 -19
  125. package/fesm2022/c8y-ngx-components-interval-picker.mjs +3 -3
  126. package/fesm2022/c8y-ngx-components-location.mjs +28 -28
  127. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs +16 -16
  128. package/fesm2022/c8y-ngx-components-map.mjs +19 -19
  129. package/fesm2022/c8y-ngx-components-messaging-management.mjs +55 -55
  130. package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs +7 -7
  131. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs +19 -19
  132. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +7 -7
  133. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs +13 -13
  134. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs +13 -13
  135. package/fesm2022/c8y-ngx-components-operations-bulk-operations-service.mjs +7 -7
  136. package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs +7 -7
  137. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs +3 -3
  138. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs +7 -7
  139. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs +7 -7
  140. package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs +12 -12
  141. package/fesm2022/c8y-ngx-components-operations-operation-details.mjs +13 -13
  142. package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs +7 -7
  143. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs +10 -10
  144. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +12 -12
  145. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs +7 -7
  146. package/fesm2022/c8y-ngx-components-operations-shared.mjs +10 -10
  147. package/fesm2022/c8y-ngx-components-operations-status-filter.mjs +7 -7
  148. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +7 -7
  149. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +13 -13
  150. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +13 -13
  151. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +13 -13
  152. package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs +13 -13
  153. package/fesm2022/c8y-ngx-components-operations.mjs +7 -7
  154. package/fesm2022/c8y-ngx-components-pending-mo-request.mjs +7 -7
  155. package/fesm2022/c8y-ngx-components-platform-configuration.mjs +10 -10
  156. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +38 -38
  157. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +58 -58
  158. package/fesm2022/c8y-ngx-components-register-device.mjs +58 -58
  159. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +9 -9
  160. package/fesm2022/c8y-ngx-components-remote-access-data.mjs +3 -3
  161. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs +3 -3
  162. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +6 -6
  163. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +3 -3
  164. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs +3 -3
  165. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs +3 -3
  166. package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs +3 -3
  167. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +3 -3
  168. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +6 -6
  169. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs +3 -3
  170. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs +6 -6
  171. package/fesm2022/c8y-ngx-components-replace-device.mjs +10 -10
  172. package/fesm2022/c8y-ngx-components-report-dashboard.mjs +16 -16
  173. package/fesm2022/c8y-ngx-components-reports.mjs +19 -19
  174. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +48 -48
  175. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +33 -33
  176. package/fesm2022/c8y-ngx-components-repository-shared.mjs +34 -34
  177. package/fesm2022/c8y-ngx-components-repository-software.mjs +42 -42
  178. package/fesm2022/c8y-ngx-components-repository.mjs +4 -4
  179. package/fesm2022/c8y-ngx-components-search.mjs +19 -19
  180. package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs +6 -6
  181. package/fesm2022/c8y-ngx-components-sensor-phone.mjs +7 -7
  182. package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs +3 -3
  183. package/fesm2022/c8y-ngx-components-services-shared.mjs +3 -3
  184. package/fesm2022/c8y-ngx-components-services.mjs +29 -29
  185. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs +16 -16
  186. package/fesm2022/c8y-ngx-components-sms-gateway.mjs +7 -7
  187. package/fesm2022/c8y-ngx-components-static-assets-data.mjs +3 -3
  188. package/fesm2022/c8y-ngx-components-static-assets-modal.mjs +9 -9
  189. package/fesm2022/c8y-ngx-components-static-assets.mjs +6 -6
  190. package/fesm2022/c8y-ngx-components-sub-assets.mjs +60 -60
  191. package/fesm2022/c8y-ngx-components-tenants.mjs +40 -40
  192. package/fesm2022/c8y-ngx-components-time-context.mjs +6 -6
  193. package/fesm2022/c8y-ngx-components-tracking.mjs +12 -12
  194. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +3 -3
  195. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +12 -12
  196. package/fesm2022/c8y-ngx-components-translation-editor.mjs +6 -6
  197. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +33 -33
  198. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs +4 -4
  199. package/fesm2022/c8y-ngx-components-upgrade.mjs +41 -41
  200. package/fesm2022/c8y-ngx-components-user-roles.mjs +10 -10
  201. package/fesm2022/c8y-ngx-components-widgets-definitions-asset-table.mjs +6 -6
  202. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +39 -3
  203. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs.map +1 -1
  204. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +19 -0
  205. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -1
  206. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget-ai-config.mjs +3 -3
  207. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs +6 -6
  208. package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs +95 -1
  209. package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs.map +1 -1
  210. package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs +21 -1
  211. package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs.map +1 -1
  212. package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs +23 -1
  213. package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs.map +1 -1
  214. package/fesm2022/c8y-ngx-components-widgets-definitions-pie-chart.mjs +15 -1
  215. package/fesm2022/c8y-ngx-components-widgets-definitions-pie-chart.mjs.map +1 -1
  216. package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs +24 -1
  217. package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs.map +1 -1
  218. package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs +23 -1
  219. package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs.map +1 -1
  220. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +19 -19
  221. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs +3 -3
  222. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-table.mjs +39 -39
  223. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-legacy-welcome.mjs +3 -3
  224. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs +3 -3
  225. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +31 -75
  226. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  227. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +74 -113
  228. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
  229. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs +3 -3
  230. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs +10 -10
  231. package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs +3 -3
  232. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs +24 -24
  233. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs +13 -14
  234. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs.map +1 -1
  235. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +36 -59
  236. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
  237. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs +14 -10
  238. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs.map +1 -1
  239. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs +15 -11
  240. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs.map +1 -1
  241. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +10 -10
  242. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  243. package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs +9 -9
  244. package/fesm2022/c8y-ngx-components-widgets-implementations-pie-chart.mjs +12 -46
  245. package/fesm2022/c8y-ngx-components-widgets-implementations-pie-chart.mjs.map +1 -1
  246. package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs +28 -25
  247. package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs.map +1 -1
  248. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs +9 -9
  249. package/fesm2022/c8y-ngx-components.mjs +1386 -1386
  250. package/locales/de.po +20 -0
  251. package/locales/es.po +20 -0
  252. package/locales/fr.po +20 -0
  253. package/locales/ja_JP.po +19 -0
  254. package/locales/ko.po +20 -0
  255. package/locales/locales.pot +45 -7
  256. package/locales/nl.po +20 -0
  257. package/locales/pl.po +20 -0
  258. package/locales/pt_BR.po +20 -0
  259. package/locales/zh_CN.po +20 -0
  260. package/locales/zh_TW.po +20 -0
  261. package/package.json +1 -1
  262. package/widgets/definitions/datapoints-graph/index.d.ts.map +1 -1
  263. package/widgets/definitions/datapoints-table/index.d.ts.map +1 -1
  264. package/widgets/definitions/info-gauge/index.d.ts.map +1 -1
  265. package/widgets/definitions/kpi/index.d.ts.map +1 -1
  266. package/widgets/definitions/linear-gauge/index.d.ts.map +1 -1
  267. package/widgets/definitions/pie-chart/index.d.ts.map +1 -1
  268. package/widgets/definitions/radial-gauge/index.d.ts.map +1 -1
  269. package/widgets/definitions/silo/index.d.ts.map +1 -1
  270. package/widgets/implementations/datapoints-graph/index.d.ts +4 -8
  271. package/widgets/implementations/datapoints-graph/index.d.ts.map +1 -1
  272. package/widgets/implementations/datapoints-table/index.d.ts +19 -23
  273. package/widgets/implementations/datapoints-table/index.d.ts.map +1 -1
  274. package/widgets/implementations/image/index.d.ts.map +1 -1
  275. package/widgets/implementations/info-gauge/index.d.ts +3 -2
  276. package/widgets/implementations/info-gauge/index.d.ts.map +1 -1
  277. package/widgets/implementations/kpi/index.d.ts +3 -2
  278. package/widgets/implementations/kpi/index.d.ts.map +1 -1
  279. package/widgets/implementations/linear-gauge/index.d.ts +3 -2
  280. package/widgets/implementations/linear-gauge/index.d.ts.map +1 -1
  281. package/widgets/implementations/pie-chart/index.d.ts +0 -9
  282. package/widgets/implementations/pie-chart/index.d.ts.map +1 -1
  283. package/widgets/implementations/quick-links/index.d.ts +1 -1
  284. package/widgets/implementations/quick-links/index.d.ts.map +1 -1
  285. package/fesm2022/c8y-ngx-components-computed-asset-properties-last-measurement-config.component-DkrSvf9F.mjs.map +0 -1
@@ -2,6 +2,67 @@ import { gettext } from '@c8y/ngx-components/gettext';
2
2
  import { DynamicComponentErrorStrategy, DynamicDatapointsResolver, hookWidget } from '@c8y/ngx-components';
3
3
  import { defaultWidgetIds } from '@c8y/ngx-components/widgets/definitions';
4
4
  import { importConfigWithTargets, exportConfigWithTargets } from '@c8y/ngx-components/widgets/import-export-config';
5
+ import { hookWidgetConfig } from '@c8y/ngx-components/context-dashboard';
6
+ import { FormGroup } from '@angular/forms';
7
+
8
+ const AT_LEAST_ONE_ACTIVE_ERROR_KEY = 'noActiveDataPoint';
9
+ function atLeastOneDataPointActive(dataPointsControlNames) {
10
+ const validatorFn = (formGroup) => {
11
+ if (!(formGroup instanceof FormGroup))
12
+ return null;
13
+ const errorKey = AT_LEAST_ONE_ACTIVE_ERROR_KEY;
14
+ let anyActive = false;
15
+ for (const controlName of dataPointsControlNames) {
16
+ const control = formGroup.get(controlName);
17
+ const value = control?.value;
18
+ if (Array.isArray(value) && value.some(item => item?.__active)) {
19
+ anyActive = true;
20
+ break;
21
+ }
22
+ }
23
+ // If none are active
24
+ if (!anyActive) {
25
+ // Set error on all specified controls
26
+ for (const controlName of dataPointsControlNames) {
27
+ const control = formGroup.get(controlName);
28
+ if (control) {
29
+ const errors = { ...(control.errors || {}) };
30
+ errors[errorKey] = true;
31
+ control.setErrors(errors);
32
+ }
33
+ }
34
+ // Set error on the group
35
+ return { [errorKey]: true };
36
+ }
37
+ else {
38
+ // Remove error from all specified controls if present
39
+ for (const controlName of dataPointsControlNames) {
40
+ const control = formGroup.get(controlName);
41
+ if (control?.errors?.[errorKey]) {
42
+ const errors = { ...control.errors };
43
+ delete errors[errorKey];
44
+ control.setErrors(Object.keys(errors).length ? errors : null);
45
+ }
46
+ }
47
+ // Validation passes for the group
48
+ return null;
49
+ }
50
+ };
51
+ // Attach metadata to the validator function
52
+ validatorFn.controlNames = dataPointsControlNames;
53
+ return validatorFn;
54
+ }
55
+ const DEFAULT_FORM_CONFIG = {
56
+ showRedRange: true,
57
+ showYellowRange: true,
58
+ showRange: true,
59
+ selectableChartRenderTypes: []
60
+ };
61
+ const DATAPOINTS_GAUGE_CONTROL_NAME = 'datapointsGauge';
62
+ const DATAPOINTS_LABELS_CONTROL_NAME = 'datapointsLabels';
63
+ const minActiveDataPointError = {
64
+ [AT_LEAST_ONE_ACTIVE_ERROR_KEY]: gettext('At least 1 data point must be selected and active for the gauge or the labels.')
65
+ };
5
66
 
6
67
  const infoGaugeWidgetDefinition = {
7
68
  id: defaultWidgetIds.INFO_GAUGE,
@@ -34,7 +95,40 @@ const infoGaugeWidgetDefinition = {
34
95
  }
35
96
  }
36
97
  };
37
- const infoGaugeWidgetProviders = [hookWidget(infoGaugeWidgetDefinition)];
98
+ const infoGaugeWidgetProviders = [
99
+ hookWidget(infoGaugeWidgetDefinition),
100
+ hookWidgetConfig({
101
+ widgetId: defaultWidgetIds.INFO_GAUGE,
102
+ label: gettext('Gauge`display`'),
103
+ loadComponent: () => import('@c8y/ngx-components/datapoint-selector').then(m => m.WidgetDatapointsSelectorComponent),
104
+ initialState: {
105
+ minActiveCount: 0,
106
+ defaultFormOptions: DEFAULT_FORM_CONFIG,
107
+ controlName: DATAPOINTS_GAUGE_CONTROL_NAME
108
+ },
109
+ expanded: true,
110
+ validators: [
111
+ atLeastOneDataPointActive([DATAPOINTS_GAUGE_CONTROL_NAME, DATAPOINTS_LABELS_CONTROL_NAME])
112
+ ],
113
+ validationErrors: minActiveDataPointError,
114
+ priority: 110
115
+ }),
116
+ hookWidgetConfig({
117
+ widgetId: defaultWidgetIds.INFO_GAUGE,
118
+ label: gettext('Multiple label and value pairs'),
119
+ loadComponent: () => import('@c8y/ngx-components/datapoint-selector').then(m => m.WidgetDatapointsSelectorComponent),
120
+ initialState: {
121
+ minActiveCount: 0,
122
+ defaultFormOptions: DEFAULT_FORM_CONFIG,
123
+ controlName: DATAPOINTS_LABELS_CONTROL_NAME
124
+ },
125
+ validators: [
126
+ atLeastOneDataPointActive([DATAPOINTS_GAUGE_CONTROL_NAME, DATAPOINTS_LABELS_CONTROL_NAME])
127
+ ],
128
+ validationErrors: minActiveDataPointError,
129
+ priority: 100
130
+ })
131
+ ];
38
132
 
39
133
  /**
40
134
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-widgets-definitions-info-gauge.mjs","sources":["../../widgets/definitions/info-gauge/index.ts","../../widgets/definitions/info-gauge/c8y-ngx-components-widgets-definitions-info-gauge.ts"],"sourcesContent":["import type { DynamicWidgetDefinition } from '@c8y/ngx-components';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n DynamicDatapointsResolver,\n hookWidget,\n DynamicComponentErrorStrategy\n} from '@c8y/ngx-components';\nimport { defaultWidgetIds } from '@c8y/ngx-components/widgets/definitions';\nimport {\n exportConfigWithTargets,\n importConfigWithTargets\n} from '@c8y/ngx-components/widgets/import-export-config';\n\nexport const infoGaugeWidgetDefinition = {\n id: defaultWidgetIds.INFO_GAUGE,\n label: gettext('Info gauge'),\n description: gettext('Radial gauge and multiple label and value pairs for data points'),\n loadComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/info-gauge').then(\n m => m.InfoGaugeWidgetViewComponent\n ),\n loadConfigComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/info-gauge').then(\n m => m.InfoGaugeWidgetConfigComponent\n ),\n previewImage: 'c8y-style-assets/info-gauge-widget-pr.png',\n resolve: {\n datapointsLabels: DynamicDatapointsResolver,\n datapointsGauge: DynamicDatapointsResolver\n },\n errorStrategy: DynamicComponentErrorStrategy.OVERLAY_ERROR,\n data: {\n schema: () =>\n import(\n 'c8y-schema-loader?interfaceName=InfoGaugeWidgetConfig!@c8y/ngx-components/widgets/implementations/info-gauge'\n ),\n export: exportConfigWithTargets,\n import: importConfigWithTargets,\n settings: {\n noNewWidgets: false,\n widgetDefaults: {\n _width: 4,\n _height: 2\n },\n ng1: {\n options: {\n noDeviceTarget: true,\n groupsSelectable: false\n }\n }\n }\n }\n} satisfies DynamicWidgetDefinition;\n\nexport const infoGaugeWidgetProviders = [hookWidget(infoGaugeWidgetDefinition)];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAaO,MAAM,yBAAyB,GAAG;IACvC,EAAE,EAAE,gBAAgB,CAAC,UAAU;AAC/B,IAAA,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC;AAC5B,IAAA,WAAW,EAAE,OAAO,CAAC,iEAAiE,CAAC;AACvF,IAAA,aAAa,EAAE,MACb,OAAO,wDAAwD,CAAC,CAAC,IAAI,CACnE,CAAC,IAAI,CAAC,CAAC,4BAA4B,CACpC;AACH,IAAA,mBAAmB,EAAE,MACnB,OAAO,wDAAwD,CAAC,CAAC,IAAI,CACnE,CAAC,IAAI,CAAC,CAAC,8BAA8B,CACtC;AACH,IAAA,YAAY,EAAE,2CAA2C;AACzD,IAAA,OAAO,EAAE;AACP,QAAA,gBAAgB,EAAE,yBAAyB;AAC3C,QAAA,eAAe,EAAE;AAClB,KAAA;IACD,aAAa,EAAE,6BAA6B,CAAC,aAAa;AAC1D,IAAA,IAAI,EAAE;AACJ,QAAA,MAAM,EAAE,MACN,OACE,8GAA8G,CAC/G;AACH,QAAA,MAAM,EAAE,uBAAuB;AAC/B,QAAA,MAAM,EAAE,uBAAuB;AAC/B,QAAA,QAAQ,EAAE;AACR,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,cAAc,EAAE;AACd,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,OAAO,EAAE;AACV,aAAA;AACD,YAAA,GAAG,EAAE;AACH,gBAAA,OAAO,EAAE;AACP,oBAAA,cAAc,EAAE,IAAI;AACpB,oBAAA,gBAAgB,EAAE;AACnB;AACF;AACF;AACF;;AAGI,MAAM,wBAAwB,GAAG,CAAC,UAAU,CAAC,yBAAyB,CAAC;;ACtD9E;;AAEG;;;;"}
1
+ {"version":3,"file":"c8y-ngx-components-widgets-definitions-info-gauge.mjs","sources":["../../widgets/definitions/info-gauge/info-gauge.constants.ts","../../widgets/definitions/info-gauge/index.ts","../../widgets/definitions/info-gauge/c8y-ngx-components-widgets-definitions-info-gauge.ts"],"sourcesContent":["import { DatapointAttributesFormConfig } from '@c8y/ngx-components/datapoint-selector';\nimport { AbstractControl, FormGroup, ValidatorFn } from '@angular/forms';\nimport { gettext } from '@c8y/ngx-components/gettext';\n\nconst AT_LEAST_ONE_ACTIVE_ERROR_KEY = 'noActiveDataPoint';\n\nexport function atLeastOneDataPointActive(dataPointsControlNames: string[]): ValidatorFn {\n const validatorFn = (formGroup: AbstractControl) => {\n if (!(formGroup instanceof FormGroup)) return null;\n\n const errorKey = AT_LEAST_ONE_ACTIVE_ERROR_KEY;\n let anyActive = false;\n\n for (const controlName of dataPointsControlNames) {\n const control = formGroup.get(controlName);\n const value = control?.value;\n if (Array.isArray(value) && value.some(item => item?.__active)) {\n anyActive = true;\n break;\n }\n }\n\n // If none are active\n if (!anyActive) {\n // Set error on all specified controls\n for (const controlName of dataPointsControlNames) {\n const control = formGroup.get(controlName);\n if (control) {\n const errors = { ...(control.errors || {}) };\n errors[errorKey] = true;\n control.setErrors(errors);\n }\n }\n // Set error on the group\n return { [errorKey]: true };\n } else {\n // Remove error from all specified controls if present\n for (const controlName of dataPointsControlNames) {\n const control = formGroup.get(controlName);\n if (control?.errors?.[errorKey]) {\n const errors = { ...control.errors };\n delete errors[errorKey];\n control.setErrors(Object.keys(errors).length ? errors : null);\n }\n }\n // Validation passes for the group\n return null;\n }\n };\n\n // Attach metadata to the validator function\n (validatorFn as any).controlNames = dataPointsControlNames;\n\n return validatorFn;\n}\n\nexport const DEFAULT_FORM_CONFIG: Partial<DatapointAttributesFormConfig> = {\n showRedRange: true,\n showYellowRange: true,\n showRange: true,\n selectableChartRenderTypes: []\n};\n\nexport const DATAPOINTS_GAUGE_CONTROL_NAME = 'datapointsGauge';\nexport const DATAPOINTS_LABELS_CONTROL_NAME = 'datapointsLabels';\n\nexport const minActiveDataPointError = {\n [AT_LEAST_ONE_ACTIVE_ERROR_KEY]: gettext(\n 'At least 1 data point must be selected and active for the gauge or the labels.'\n )\n} as const;\n","import type { DynamicWidgetDefinition } from '@c8y/ngx-components';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n DynamicDatapointsResolver,\n hookWidget,\n DynamicComponentErrorStrategy\n} from '@c8y/ngx-components';\nimport { defaultWidgetIds } from '@c8y/ngx-components/widgets/definitions';\nimport {\n exportConfigWithTargets,\n importConfigWithTargets\n} from '@c8y/ngx-components/widgets/import-export-config';\nimport { hookWidgetConfig } from '@c8y/ngx-components/context-dashboard';\nimport {\n DATAPOINTS_LABELS_CONTROL_NAME,\n DEFAULT_FORM_CONFIG,\n atLeastOneDataPointActive,\n DATAPOINTS_GAUGE_CONTROL_NAME,\n minActiveDataPointError\n} from './info-gauge.constants';\n\nexport const infoGaugeWidgetDefinition = {\n id: defaultWidgetIds.INFO_GAUGE,\n label: gettext('Info gauge'),\n description: gettext('Radial gauge and multiple label and value pairs for data points'),\n loadComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/info-gauge').then(\n m => m.InfoGaugeWidgetViewComponent\n ),\n loadConfigComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/info-gauge').then(\n m => m.InfoGaugeWidgetConfigComponent\n ),\n previewImage: 'c8y-style-assets/info-gauge-widget-pr.png',\n resolve: {\n datapointsLabels: DynamicDatapointsResolver,\n datapointsGauge: DynamicDatapointsResolver\n },\n errorStrategy: DynamicComponentErrorStrategy.OVERLAY_ERROR,\n data: {\n schema: () =>\n import(\n 'c8y-schema-loader?interfaceName=InfoGaugeWidgetConfig!@c8y/ngx-components/widgets/implementations/info-gauge'\n ),\n export: exportConfigWithTargets,\n import: importConfigWithTargets,\n settings: {\n noNewWidgets: false,\n widgetDefaults: {\n _width: 4,\n _height: 2\n },\n ng1: {\n options: {\n noDeviceTarget: true,\n groupsSelectable: false\n }\n }\n }\n }\n} satisfies DynamicWidgetDefinition;\n\nexport const infoGaugeWidgetProviders = [\n hookWidget(infoGaugeWidgetDefinition),\n hookWidgetConfig({\n widgetId: defaultWidgetIds.INFO_GAUGE,\n label: gettext('Gauge`display`'),\n loadComponent: () =>\n import('@c8y/ngx-components/datapoint-selector').then(\n m => m.WidgetDatapointsSelectorComponent\n ),\n initialState: {\n minActiveCount: 0,\n defaultFormOptions: DEFAULT_FORM_CONFIG,\n controlName: DATAPOINTS_GAUGE_CONTROL_NAME\n },\n expanded: true,\n validators: [\n atLeastOneDataPointActive([DATAPOINTS_GAUGE_CONTROL_NAME, DATAPOINTS_LABELS_CONTROL_NAME])\n ],\n validationErrors: minActiveDataPointError,\n priority: 110\n }),\n hookWidgetConfig({\n widgetId: defaultWidgetIds.INFO_GAUGE,\n label: gettext('Multiple label and value pairs'),\n loadComponent: () =>\n import('@c8y/ngx-components/datapoint-selector').then(\n m => m.WidgetDatapointsSelectorComponent\n ),\n initialState: {\n minActiveCount: 0,\n defaultFormOptions: DEFAULT_FORM_CONFIG,\n controlName: DATAPOINTS_LABELS_CONTROL_NAME\n },\n validators: [\n atLeastOneDataPointActive([DATAPOINTS_GAUGE_CONTROL_NAME, DATAPOINTS_LABELS_CONTROL_NAME])\n ],\n validationErrors: minActiveDataPointError,\n priority: 100\n })\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAIA,MAAM,6BAA6B,GAAG,mBAAmB;AAEnD,SAAU,yBAAyB,CAAC,sBAAgC,EAAA;AACxE,IAAA,MAAM,WAAW,GAAG,CAAC,SAA0B,KAAI;AACjD,QAAA,IAAI,EAAE,SAAS,YAAY,SAAS,CAAC;AAAE,YAAA,OAAO,IAAI;QAElD,MAAM,QAAQ,GAAG,6BAA6B;QAC9C,IAAI,SAAS,GAAG,KAAK;AAErB,QAAA,KAAK,MAAM,WAAW,IAAI,sBAAsB,EAAE;YAChD,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;AAC1C,YAAA,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK;YAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,QAAQ,CAAC,EAAE;gBAC9D,SAAS,GAAG,IAAI;gBAChB;YACF;QACF;;QAGA,IAAI,CAAC,SAAS,EAAE;;AAEd,YAAA,KAAK,MAAM,WAAW,IAAI,sBAAsB,EAAE;gBAChD,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;gBAC1C,IAAI,OAAO,EAAE;AACX,oBAAA,MAAM,MAAM,GAAG,EAAE,IAAI,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE;AAC5C,oBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI;AACvB,oBAAA,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;gBAC3B;YACF;;AAEA,YAAA,OAAO,EAAE,CAAC,QAAQ,GAAG,IAAI,EAAE;QAC7B;aAAO;;AAEL,YAAA,KAAK,MAAM,WAAW,IAAI,sBAAsB,EAAE;gBAChD,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;gBAC1C,IAAI,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAC,EAAE;oBAC/B,MAAM,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE;AACpC,oBAAA,OAAO,MAAM,CAAC,QAAQ,CAAC;oBACvB,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;gBAC/D;YACF;;AAEA,YAAA,OAAO,IAAI;QACb;AACF,IAAA,CAAC;;AAGA,IAAA,WAAmB,CAAC,YAAY,GAAG,sBAAsB;AAE1D,IAAA,OAAO,WAAW;AACpB;AAEO,MAAM,mBAAmB,GAA2C;AACzE,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,eAAe,EAAE,IAAI;AACrB,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,0BAA0B,EAAE;CAC7B;AAEM,MAAM,6BAA6B,GAAG,iBAAiB;AACvD,MAAM,8BAA8B,GAAG,kBAAkB;AAEzD,MAAM,uBAAuB,GAAG;AACrC,IAAA,CAAC,6BAA6B,GAAG,OAAO,CACtC,gFAAgF;CAE1E;;ACjDH,MAAM,yBAAyB,GAAG;IACvC,EAAE,EAAE,gBAAgB,CAAC,UAAU;AAC/B,IAAA,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC;AAC5B,IAAA,WAAW,EAAE,OAAO,CAAC,iEAAiE,CAAC;AACvF,IAAA,aAAa,EAAE,MACb,OAAO,wDAAwD,CAAC,CAAC,IAAI,CACnE,CAAC,IAAI,CAAC,CAAC,4BAA4B,CACpC;AACH,IAAA,mBAAmB,EAAE,MACnB,OAAO,wDAAwD,CAAC,CAAC,IAAI,CACnE,CAAC,IAAI,CAAC,CAAC,8BAA8B,CACtC;AACH,IAAA,YAAY,EAAE,2CAA2C;AACzD,IAAA,OAAO,EAAE;AACP,QAAA,gBAAgB,EAAE,yBAAyB;AAC3C,QAAA,eAAe,EAAE;AAClB,KAAA;IACD,aAAa,EAAE,6BAA6B,CAAC,aAAa;AAC1D,IAAA,IAAI,EAAE;AACJ,QAAA,MAAM,EAAE,MACN,OACE,8GAA8G,CAC/G;AACH,QAAA,MAAM,EAAE,uBAAuB;AAC/B,QAAA,MAAM,EAAE,uBAAuB;AAC/B,QAAA,QAAQ,EAAE;AACR,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,cAAc,EAAE;AACd,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,OAAO,EAAE;AACV,aAAA;AACD,YAAA,GAAG,EAAE;AACH,gBAAA,OAAO,EAAE;AACP,oBAAA,cAAc,EAAE,IAAI;AACpB,oBAAA,gBAAgB,EAAE;AACnB;AACF;AACF;AACF;;AAGI,MAAM,wBAAwB,GAAG;IACtC,UAAU,CAAC,yBAAyB,CAAC;AACrC,IAAA,gBAAgB,CAAC;QACf,QAAQ,EAAE,gBAAgB,CAAC,UAAU;AACrC,QAAA,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC;AAChC,QAAA,aAAa,EAAE,MACb,OAAO,wCAAwC,CAAC,CAAC,IAAI,CACnD,CAAC,IAAI,CAAC,CAAC,iCAAiC,CACzC;AACH,QAAA,YAAY,EAAE;AACZ,YAAA,cAAc,EAAE,CAAC;AACjB,YAAA,kBAAkB,EAAE,mBAAmB;AACvC,YAAA,WAAW,EAAE;AACd,SAAA;AACD,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,UAAU,EAAE;AACV,YAAA,yBAAyB,CAAC,CAAC,6BAA6B,EAAE,8BAA8B,CAAC;AAC1F,SAAA;AACD,QAAA,gBAAgB,EAAE,uBAAuB;AACzC,QAAA,QAAQ,EAAE;KACX,CAAC;AACF,IAAA,gBAAgB,CAAC;QACf,QAAQ,EAAE,gBAAgB,CAAC,UAAU;AACrC,QAAA,KAAK,EAAE,OAAO,CAAC,gCAAgC,CAAC;AAChD,QAAA,aAAa,EAAE,MACb,OAAO,wCAAwC,CAAC,CAAC,IAAI,CACnD,CAAC,IAAI,CAAC,CAAC,iCAAiC,CACzC;AACH,QAAA,YAAY,EAAE;AACZ,YAAA,cAAc,EAAE,CAAC;AACjB,YAAA,kBAAkB,EAAE,mBAAmB;AACvC,YAAA,WAAW,EAAE;AACd,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,yBAAyB,CAAC,CAAC,6BAA6B,EAAE,8BAA8B,CAAC;AAC1F,SAAA;AACD,QAAA,gBAAgB,EAAE,uBAAuB;AACzC,QAAA,QAAQ,EAAE;KACX;;;ACpGH;;AAEG;;;;"}
@@ -2,6 +2,12 @@ import { gettext } from '@c8y/ngx-components/gettext';
2
2
  import { DynamicComponentErrorStrategy, DynamicDatapointsResolver, hookWidget } from '@c8y/ngx-components';
3
3
  import { defaultWidgetIds } from '@c8y/ngx-components/widgets/definitions';
4
4
  import { importConfigWithTargets, exportConfigWithTargets } from '@c8y/ngx-components/widgets/import-export-config';
5
+ import { hookWidgetConfig } from '@c8y/ngx-components/context-dashboard';
6
+
7
+ const KPI_FORM_OPTIONS = {
8
+ showRedRange: true,
9
+ showYellowRange: true
10
+ };
5
11
 
6
12
  const kpiWidgetDefinition = {
7
13
  id: defaultWidgetIds.KPI,
@@ -33,7 +39,21 @@ const kpiWidgetDefinition = {
33
39
  }
34
40
  }
35
41
  };
36
- const kpiWidgetProviders = [hookWidget(kpiWidgetDefinition)];
42
+ const kpiWidgetProviders = [
43
+ hookWidget(kpiWidgetDefinition),
44
+ hookWidgetConfig({
45
+ widgetId: defaultWidgetIds.KPI,
46
+ label: gettext('Data point selection'),
47
+ loadComponent: () => import('@c8y/ngx-components/datapoint-selector').then(m => m.WidgetDatapointsSelectorComponent),
48
+ initialState: {
49
+ minActiveCount: 1,
50
+ maxActiveCount: 1,
51
+ defaultFormOptions: KPI_FORM_OPTIONS
52
+ },
53
+ expanded: true,
54
+ priority: 100
55
+ })
56
+ ];
37
57
 
38
58
  /**
39
59
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-widgets-definitions-kpi.mjs","sources":["../../widgets/definitions/kpi/index.ts","../../widgets/definitions/kpi/c8y-ngx-components-widgets-definitions-kpi.ts"],"sourcesContent":["import { gettext } from '@c8y/ngx-components/gettext';\nimport {\n DynamicComponentErrorStrategy,\n DynamicDatapointsResolver,\n DynamicWidgetDefinition,\n hookWidget\n} from '@c8y/ngx-components';\nimport { defaultWidgetIds } from '@c8y/ngx-components/widgets/definitions';\nimport {\n exportConfigWithTargets,\n importConfigWithTargets\n} from '@c8y/ngx-components/widgets/import-export-config';\n\nexport const kpiWidgetDefinition = {\n id: defaultWidgetIds.KPI,\n label: gettext('KPI'),\n description: gettext('Displays the last measurement value of a device.'),\n loadComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/kpi').then(m => m.KpiWidgetViewComponent),\n loadConfigComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/kpi').then(m => m.KpiWidgetConfigComponent),\n previewImage: 'c8y-style-assets/kpi-widget.png',\n resolve: {\n datapoints: DynamicDatapointsResolver\n },\n errorStrategy: DynamicComponentErrorStrategy.OVERLAY_ERROR,\n data: {\n schema: () =>\n import(\n 'c8y-schema-loader?interfaceName=KpiWidgetConfig!@c8y/ngx-components/widgets/implementations/kpi'\n ),\n export: exportConfigWithTargets,\n import: importConfigWithTargets,\n settings: {\n noNewWidgets: false,\n widgetDefaults: {\n _width: 4,\n _height: 2\n },\n ng1: {\n options: {\n noDeviceTarget: true,\n groupsSelectable: false\n }\n }\n }\n }\n} satisfies DynamicWidgetDefinition;\n\nexport const kpiWidgetProviders = [hookWidget(kpiWidgetDefinition)];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAaO,MAAM,mBAAmB,GAAG;IACjC,EAAE,EAAE,gBAAgB,CAAC,GAAG;AACxB,IAAA,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC;AACrB,IAAA,WAAW,EAAE,OAAO,CAAC,kDAAkD,CAAC;AACxE,IAAA,aAAa,EAAE,MACb,OAAO,iDAAiD,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,sBAAsB,CAAC;AAC/F,IAAA,mBAAmB,EAAE,MACnB,OAAO,iDAAiD,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,wBAAwB,CAAC;AACjG,IAAA,YAAY,EAAE,iCAAiC;AAC/C,IAAA,OAAO,EAAE;AACP,QAAA,UAAU,EAAE;AACb,KAAA;IACD,aAAa,EAAE,6BAA6B,CAAC,aAAa;AAC1D,IAAA,IAAI,EAAE;AACJ,QAAA,MAAM,EAAE,MACN,OACE,iGAAiG,CAClG;AACH,QAAA,MAAM,EAAE,uBAAuB;AAC/B,QAAA,MAAM,EAAE,uBAAuB;AAC/B,QAAA,QAAQ,EAAE;AACR,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,cAAc,EAAE;AACd,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,OAAO,EAAE;AACV,aAAA;AACD,YAAA,GAAG,EAAE;AACH,gBAAA,OAAO,EAAE;AACP,oBAAA,cAAc,EAAE,IAAI;AACpB,oBAAA,gBAAgB,EAAE;AACnB;AACF;AACF;AACF;;AAGI,MAAM,kBAAkB,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC;;ACjDlE;;AAEG;;;;"}
1
+ {"version":3,"file":"c8y-ngx-components-widgets-definitions-kpi.mjs","sources":["../../widgets/definitions/kpi/kpi.constants.ts","../../widgets/definitions/kpi/index.ts","../../widgets/definitions/kpi/c8y-ngx-components-widgets-definitions-kpi.ts"],"sourcesContent":["import { DatapointAttributesFormConfig } from '@c8y/ngx-components/datapoint-selector';\n\nexport const KPI_FORM_OPTIONS: Partial<DatapointAttributesFormConfig> = {\n showRedRange: true,\n showYellowRange: true\n};\n","import { gettext } from '@c8y/ngx-components/gettext';\nimport {\n DynamicComponentErrorStrategy,\n DynamicDatapointsResolver,\n DynamicWidgetDefinition,\n hookWidget\n} from '@c8y/ngx-components';\nimport { defaultWidgetIds } from '@c8y/ngx-components/widgets/definitions';\nimport {\n exportConfigWithTargets,\n importConfigWithTargets\n} from '@c8y/ngx-components/widgets/import-export-config';\nimport { hookWidgetConfig } from '@c8y/ngx-components/context-dashboard';\nimport { KPI_FORM_OPTIONS } from './kpi.constants';\n\nexport const kpiWidgetDefinition = {\n id: defaultWidgetIds.KPI,\n label: gettext('KPI'),\n description: gettext('Displays the last measurement value of a device.'),\n loadComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/kpi').then(m => m.KpiWidgetViewComponent),\n loadConfigComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/kpi').then(m => m.KpiWidgetConfigComponent),\n previewImage: 'c8y-style-assets/kpi-widget.png',\n resolve: {\n datapoints: DynamicDatapointsResolver\n },\n errorStrategy: DynamicComponentErrorStrategy.OVERLAY_ERROR,\n data: {\n schema: () =>\n import(\n 'c8y-schema-loader?interfaceName=KpiWidgetConfig!@c8y/ngx-components/widgets/implementations/kpi'\n ),\n export: exportConfigWithTargets,\n import: importConfigWithTargets,\n settings: {\n noNewWidgets: false,\n widgetDefaults: {\n _width: 4,\n _height: 2\n },\n ng1: {\n options: {\n noDeviceTarget: true,\n groupsSelectable: false\n }\n }\n }\n }\n} satisfies DynamicWidgetDefinition;\n\nexport const kpiWidgetProviders = [\n hookWidget(kpiWidgetDefinition),\n hookWidgetConfig({\n widgetId: defaultWidgetIds.KPI,\n label: gettext('Data point selection'),\n loadComponent: () =>\n import('@c8y/ngx-components/datapoint-selector').then(\n m => m.WidgetDatapointsSelectorComponent\n ),\n initialState: {\n minActiveCount: 1,\n maxActiveCount: 1,\n defaultFormOptions: KPI_FORM_OPTIONS\n },\n expanded: true,\n priority: 100\n })\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAEO,MAAM,gBAAgB,GAA2C;AACtE,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,eAAe,EAAE;CAClB;;ACUM,MAAM,mBAAmB,GAAG;IACjC,EAAE,EAAE,gBAAgB,CAAC,GAAG;AACxB,IAAA,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC;AACrB,IAAA,WAAW,EAAE,OAAO,CAAC,kDAAkD,CAAC;AACxE,IAAA,aAAa,EAAE,MACb,OAAO,iDAAiD,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,sBAAsB,CAAC;AAC/F,IAAA,mBAAmB,EAAE,MACnB,OAAO,iDAAiD,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,wBAAwB,CAAC;AACjG,IAAA,YAAY,EAAE,iCAAiC;AAC/C,IAAA,OAAO,EAAE;AACP,QAAA,UAAU,EAAE;AACb,KAAA;IACD,aAAa,EAAE,6BAA6B,CAAC,aAAa;AAC1D,IAAA,IAAI,EAAE;AACJ,QAAA,MAAM,EAAE,MACN,OACE,iGAAiG,CAClG;AACH,QAAA,MAAM,EAAE,uBAAuB;AAC/B,QAAA,MAAM,EAAE,uBAAuB;AAC/B,QAAA,QAAQ,EAAE;AACR,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,cAAc,EAAE;AACd,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,OAAO,EAAE;AACV,aAAA;AACD,YAAA,GAAG,EAAE;AACH,gBAAA,OAAO,EAAE;AACP,oBAAA,cAAc,EAAE,IAAI;AACpB,oBAAA,gBAAgB,EAAE;AACnB;AACF;AACF;AACF;;AAGI,MAAM,kBAAkB,GAAG;IAChC,UAAU,CAAC,mBAAmB,CAAC;AAC/B,IAAA,gBAAgB,CAAC;QACf,QAAQ,EAAE,gBAAgB,CAAC,GAAG;AAC9B,QAAA,KAAK,EAAE,OAAO,CAAC,sBAAsB,CAAC;AACtC,QAAA,aAAa,EAAE,MACb,OAAO,wCAAwC,CAAC,CAAC,IAAI,CACnD,CAAC,IAAI,CAAC,CAAC,iCAAiC,CACzC;AACH,QAAA,YAAY,EAAE;AACZ,YAAA,cAAc,EAAE,CAAC;AACjB,YAAA,cAAc,EAAE,CAAC;AACjB,YAAA,kBAAkB,EAAE;AACrB,SAAA;AACD,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,QAAQ,EAAE;KACX;;;ACnEH;;AAEG;;;;"}
@@ -2,6 +2,14 @@ import { gettext } from '@c8y/ngx-components/gettext';
2
2
  import { DynamicComponentErrorStrategy, DynamicDatapointsResolver, hookWidget } from '@c8y/ngx-components';
3
3
  import { defaultWidgetIds } from '@c8y/ngx-components/widgets/definitions';
4
4
  import { importConfigWithTargets, exportConfigWithTargets } from '@c8y/ngx-components/widgets/import-export-config';
5
+ import { hookWidgetConfig } from '@c8y/ngx-components/context-dashboard';
6
+
7
+ const LINEAR_GAUGE_OPTIONS = {
8
+ showRedRange: true,
9
+ showYellowRange: true,
10
+ showRange: true,
11
+ showTarget: true
12
+ };
5
13
 
6
14
  const linearGaugeWidgetDefinition = {
7
15
  id: defaultWidgetIds.LINEAR_GAUGE,
@@ -33,7 +41,21 @@ const linearGaugeWidgetDefinition = {
33
41
  }
34
42
  }
35
43
  };
36
- const linearGaugeWidgetProviders = [hookWidget(linearGaugeWidgetDefinition)];
44
+ const linearGaugeWidgetProviders = [
45
+ hookWidget(linearGaugeWidgetDefinition),
46
+ hookWidgetConfig({
47
+ widgetId: defaultWidgetIds.LINEAR_GAUGE,
48
+ label: gettext('Data point selection'),
49
+ loadComponent: () => import('@c8y/ngx-components/datapoint-selector').then(m => m.WidgetDatapointsSelectorComponent),
50
+ initialState: {
51
+ minActiveCount: 1,
52
+ maxActiveCount: 1,
53
+ defaultFormOptions: LINEAR_GAUGE_OPTIONS
54
+ },
55
+ expanded: true,
56
+ priority: 100
57
+ })
58
+ ];
37
59
 
38
60
  /**
39
61
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-widgets-definitions-linear-gauge.mjs","sources":["../../widgets/definitions/linear-gauge/index.ts","../../widgets/definitions/linear-gauge/c8y-ngx-components-widgets-definitions-linear-gauge.ts"],"sourcesContent":["import type { DynamicWidgetDefinition } from '@c8y/ngx-components';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n DynamicComponentErrorStrategy,\n DynamicDatapointsResolver,\n hookWidget\n} from '@c8y/ngx-components';\nimport { defaultWidgetIds } from '@c8y/ngx-components/widgets/definitions';\nimport {\n exportConfigWithTargets,\n importConfigWithTargets\n} from '@c8y/ngx-components/widgets/import-export-config';\n\nexport const linearGaugeWidgetDefinition = {\n id: defaultWidgetIds.LINEAR_GAUGE,\n label: gettext('Linear Gauge'),\n description: gettext('A linear gauge graph displaying current values for selected measurements'),\n loadComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/linear-gauge').then(\n m => m.LinearGaugeWidgetViewComponent\n ),\n loadConfigComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/linear-gauge').then(\n m => m.LinearGaugeWidgetConfigComponent\n ),\n previewImage: 'c8y-style-assets/linear-gauge-widget-pr.png',\n resolve: {\n datapoints: DynamicDatapointsResolver\n },\n errorStrategy: DynamicComponentErrorStrategy.OVERLAY_ERROR,\n data: {\n schema: () =>\n import(\n 'c8y-schema-loader?interfaceName=LinearGaugeWidgetConfig!@c8y/ngx-components/widgets/implementations/linear-gauge'\n ),\n export: exportConfigWithTargets,\n import: importConfigWithTargets,\n settings: {\n noNewWidgets: false,\n widgetDefaults: {\n _width: 4,\n _height: 3\n },\n ng1: {\n options: {\n noDeviceTarget: true,\n groupsSelectable: false\n }\n }\n }\n }\n} satisfies DynamicWidgetDefinition;\n\nexport const linearGaugeWidgetProviders = [hookWidget(linearGaugeWidgetDefinition)];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAaO,MAAM,2BAA2B,GAAG;IACzC,EAAE,EAAE,gBAAgB,CAAC,YAAY;AACjC,IAAA,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC;AAC9B,IAAA,WAAW,EAAE,OAAO,CAAC,0EAA0E,CAAC;AAChG,IAAA,aAAa,EAAE,MACb,OAAO,0DAA0D,CAAC,CAAC,IAAI,CACrE,CAAC,IAAI,CAAC,CAAC,8BAA8B,CACtC;AACH,IAAA,mBAAmB,EAAE,MACnB,OAAO,0DAA0D,CAAC,CAAC,IAAI,CACrE,CAAC,IAAI,CAAC,CAAC,gCAAgC,CACxC;AACH,IAAA,YAAY,EAAE,6CAA6C;AAC3D,IAAA,OAAO,EAAE;AACP,QAAA,UAAU,EAAE;AACb,KAAA;IACD,aAAa,EAAE,6BAA6B,CAAC,aAAa;AAC1D,IAAA,IAAI,EAAE;AACJ,QAAA,MAAM,EAAE,MACN,OACE,kHAAkH,CACnH;AACH,QAAA,MAAM,EAAE,uBAAuB;AAC/B,QAAA,MAAM,EAAE,uBAAuB;AAC/B,QAAA,QAAQ,EAAE;AACR,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,cAAc,EAAE;AACd,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,OAAO,EAAE;AACV,aAAA;AACD,YAAA,GAAG,EAAE;AACH,gBAAA,OAAO,EAAE;AACP,oBAAA,cAAc,EAAE,IAAI;AACpB,oBAAA,gBAAgB,EAAE;AACnB;AACF;AACF;AACF;;AAGI,MAAM,0BAA0B,GAAG,CAAC,UAAU,CAAC,2BAA2B,CAAC;;ACrDlF;;AAEG;;;;"}
1
+ {"version":3,"file":"c8y-ngx-components-widgets-definitions-linear-gauge.mjs","sources":["../../widgets/definitions/linear-gauge/linear-gauge.constants.ts","../../widgets/definitions/linear-gauge/index.ts","../../widgets/definitions/linear-gauge/c8y-ngx-components-widgets-definitions-linear-gauge.ts"],"sourcesContent":["import { DatapointAttributesFormConfig } from '@c8y/ngx-components/datapoint-selector';\n\nexport const LINEAR_GAUGE_OPTIONS: Partial<DatapointAttributesFormConfig> = {\n showRedRange: true,\n showYellowRange: true,\n showRange: true,\n showTarget: true\n};\n","import type { DynamicWidgetDefinition } from '@c8y/ngx-components';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n DynamicComponentErrorStrategy,\n DynamicDatapointsResolver,\n hookWidget\n} from '@c8y/ngx-components';\nimport { defaultWidgetIds } from '@c8y/ngx-components/widgets/definitions';\nimport {\n exportConfigWithTargets,\n importConfigWithTargets\n} from '@c8y/ngx-components/widgets/import-export-config';\nimport { hookWidgetConfig } from '@c8y/ngx-components/context-dashboard';\nimport { LINEAR_GAUGE_OPTIONS } from './linear-gauge.constants';\n\nexport const linearGaugeWidgetDefinition = {\n id: defaultWidgetIds.LINEAR_GAUGE,\n label: gettext('Linear Gauge'),\n description: gettext('A linear gauge graph displaying current values for selected measurements'),\n loadComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/linear-gauge').then(\n m => m.LinearGaugeWidgetViewComponent\n ),\n loadConfigComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/linear-gauge').then(\n m => m.LinearGaugeWidgetConfigComponent\n ),\n previewImage: 'c8y-style-assets/linear-gauge-widget-pr.png',\n resolve: {\n datapoints: DynamicDatapointsResolver\n },\n errorStrategy: DynamicComponentErrorStrategy.OVERLAY_ERROR,\n data: {\n schema: () =>\n import(\n 'c8y-schema-loader?interfaceName=LinearGaugeWidgetConfig!@c8y/ngx-components/widgets/implementations/linear-gauge'\n ),\n export: exportConfigWithTargets,\n import: importConfigWithTargets,\n settings: {\n noNewWidgets: false,\n widgetDefaults: {\n _width: 4,\n _height: 3\n },\n ng1: {\n options: {\n noDeviceTarget: true,\n groupsSelectable: false\n }\n }\n }\n }\n} satisfies DynamicWidgetDefinition;\n\nexport const linearGaugeWidgetProviders = [\n hookWidget(linearGaugeWidgetDefinition),\n hookWidgetConfig({\n widgetId: defaultWidgetIds.LINEAR_GAUGE,\n label: gettext('Data point selection'),\n loadComponent: () =>\n import('@c8y/ngx-components/datapoint-selector').then(\n m => m.WidgetDatapointsSelectorComponent\n ),\n initialState: {\n minActiveCount: 1,\n maxActiveCount: 1,\n defaultFormOptions: LINEAR_GAUGE_OPTIONS\n },\n expanded: true,\n priority: 100\n })\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAEO,MAAM,oBAAoB,GAA2C;AAC1E,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,eAAe,EAAE,IAAI;AACrB,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,UAAU,EAAE;CACb;;ACQM,MAAM,2BAA2B,GAAG;IACzC,EAAE,EAAE,gBAAgB,CAAC,YAAY;AACjC,IAAA,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC;AAC9B,IAAA,WAAW,EAAE,OAAO,CAAC,0EAA0E,CAAC;AAChG,IAAA,aAAa,EAAE,MACb,OAAO,0DAA0D,CAAC,CAAC,IAAI,CACrE,CAAC,IAAI,CAAC,CAAC,8BAA8B,CACtC;AACH,IAAA,mBAAmB,EAAE,MACnB,OAAO,0DAA0D,CAAC,CAAC,IAAI,CACrE,CAAC,IAAI,CAAC,CAAC,gCAAgC,CACxC;AACH,IAAA,YAAY,EAAE,6CAA6C;AAC3D,IAAA,OAAO,EAAE;AACP,QAAA,UAAU,EAAE;AACb,KAAA;IACD,aAAa,EAAE,6BAA6B,CAAC,aAAa;AAC1D,IAAA,IAAI,EAAE;AACJ,QAAA,MAAM,EAAE,MACN,OACE,kHAAkH,CACnH;AACH,QAAA,MAAM,EAAE,uBAAuB;AAC/B,QAAA,MAAM,EAAE,uBAAuB;AAC/B,QAAA,QAAQ,EAAE;AACR,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,cAAc,EAAE;AACd,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,OAAO,EAAE;AACV,aAAA;AACD,YAAA,GAAG,EAAE;AACH,gBAAA,OAAO,EAAE;AACP,oBAAA,cAAc,EAAE,IAAI;AACpB,oBAAA,gBAAgB,EAAE;AACnB;AACF;AACF;AACF;;AAGI,MAAM,0BAA0B,GAAG;IACxC,UAAU,CAAC,2BAA2B,CAAC;AACvC,IAAA,gBAAgB,CAAC;QACf,QAAQ,EAAE,gBAAgB,CAAC,YAAY;AACvC,QAAA,KAAK,EAAE,OAAO,CAAC,sBAAsB,CAAC;AACtC,QAAA,aAAa,EAAE,MACb,OAAO,wCAAwC,CAAC,CAAC,IAAI,CACnD,CAAC,IAAI,CAAC,CAAC,iCAAiC,CACzC;AACH,QAAA,YAAY,EAAE;AACZ,YAAA,cAAc,EAAE,CAAC;AACjB,YAAA,cAAc,EAAE,CAAC;AACjB,YAAA,kBAAkB,EAAE;AACrB,SAAA;AACD,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,QAAQ,EAAE;KACX;;;ACvEH;;AAEG;;;;"}
@@ -1,6 +1,7 @@
1
1
  import { gettext } from '@c8y/ngx-components/gettext';
2
2
  import { hookWidget } from '@c8y/ngx-components';
3
3
  import { defaultWidgetIds } from '@c8y/ngx-components/widgets/definitions';
4
+ import { hookWidgetConfig } from '@c8y/ngx-components/context-dashboard';
4
5
 
5
6
  const pieChartWidgetDefinition = {
6
7
  id: defaultWidgetIds.PIE_CHART,
@@ -20,7 +21,20 @@ const pieChartWidgetDefinition = {
20
21
  }
21
22
  }
22
23
  };
23
- const pieChartWidgetProviders = [hookWidget(pieChartWidgetDefinition)];
24
+ const pieChartWidgetProviders = [
25
+ hookWidget(pieChartWidgetDefinition),
26
+ hookWidgetConfig({
27
+ widgetId: defaultWidgetIds.PIE_CHART,
28
+ label: gettext('Data point selection'),
29
+ loadComponent: () => import('@c8y/ngx-components/datapoint-selector').then(m => m.WidgetDatapointsSelectorComponent),
30
+ initialState: {
31
+ minActiveCount: 1,
32
+ showDifferentUnitsAlert: true
33
+ },
34
+ expanded: true,
35
+ priority: 100
36
+ })
37
+ ];
24
38
 
25
39
  /**
26
40
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-widgets-definitions-pie-chart.mjs","sources":["../../widgets/definitions/pie-chart/index.ts","../../widgets/definitions/pie-chart/c8y-ngx-components-widgets-definitions-pie-chart.ts"],"sourcesContent":["import type { DynamicWidgetDefinition } from '@c8y/ngx-components';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { hookWidget } from '@c8y/ngx-components';\nimport { defaultWidgetIds } from '@c8y/ngx-components/widgets/definitions';\n\nexport const pieChartWidgetDefinition = {\n id: defaultWidgetIds.PIE_CHART,\n label: gettext('Pie chart'),\n description: gettext(`Displays data in a pie chart format.`),\n previewImage: 'c8y-style-assets/pie-chart-widget-pr.png',\n loadComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/pie-chart').then(\n m => m.PieChartWidgetViewComponent\n ),\n loadConfigComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/pie-chart').then(\n m => m.PieChartWidgetConfigComponent\n ),\n data: {\n settings: {\n noNewWidgets: false,\n widgetDefaults: {\n _width: 8,\n _height: 4\n },\n noDeviceTarget: true\n }\n }\n} satisfies DynamicWidgetDefinition;\n\nexport const pieChartWidgetProviders = [hookWidget(pieChartWidgetDefinition)];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAKO,MAAM,wBAAwB,GAAG;IACtC,EAAE,EAAE,gBAAgB,CAAC,SAAS;AAC9B,IAAA,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC;AAC3B,IAAA,WAAW,EAAE,OAAO,CAAC,CAAA,oCAAA,CAAsC,CAAC;AAC5D,IAAA,YAAY,EAAE,0CAA0C;AACxD,IAAA,aAAa,EAAE,MACb,OAAO,uDAAuD,CAAC,CAAC,IAAI,CAClE,CAAC,IAAI,CAAC,CAAC,2BAA2B,CACnC;AACH,IAAA,mBAAmB,EAAE,MACnB,OAAO,uDAAuD,CAAC,CAAC,IAAI,CAClE,CAAC,IAAI,CAAC,CAAC,6BAA6B,CACrC;AACH,IAAA,IAAI,EAAE;AACJ,QAAA,QAAQ,EAAE;AACR,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,cAAc,EAAE;AACd,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,OAAO,EAAE;AACV,aAAA;AACD,YAAA,cAAc,EAAE;AACjB;AACF;;AAGI,MAAM,uBAAuB,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC;;AC9B5E;;AAEG;;;;"}
1
+ {"version":3,"file":"c8y-ngx-components-widgets-definitions-pie-chart.mjs","sources":["../../widgets/definitions/pie-chart/index.ts","../../widgets/definitions/pie-chart/c8y-ngx-components-widgets-definitions-pie-chart.ts"],"sourcesContent":["import type { DynamicWidgetDefinition } from '@c8y/ngx-components';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { hookWidget } from '@c8y/ngx-components';\nimport { defaultWidgetIds } from '@c8y/ngx-components/widgets/definitions';\nimport { hookWidgetConfig } from '@c8y/ngx-components/context-dashboard';\n\nexport const pieChartWidgetDefinition = {\n id: defaultWidgetIds.PIE_CHART,\n label: gettext('Pie chart'),\n description: gettext(`Displays data in a pie chart format.`),\n previewImage: 'c8y-style-assets/pie-chart-widget-pr.png',\n loadComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/pie-chart').then(\n m => m.PieChartWidgetViewComponent\n ),\n loadConfigComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/pie-chart').then(\n m => m.PieChartWidgetConfigComponent\n ),\n data: {\n settings: {\n noNewWidgets: false,\n widgetDefaults: {\n _width: 8,\n _height: 4\n },\n noDeviceTarget: true\n }\n }\n} satisfies DynamicWidgetDefinition;\n\nexport const pieChartWidgetProviders = [\n hookWidget(pieChartWidgetDefinition),\n hookWidgetConfig({\n widgetId: defaultWidgetIds.PIE_CHART,\n label: gettext('Data point selection'),\n loadComponent: () =>\n import('@c8y/ngx-components/datapoint-selector').then(\n m => m.WidgetDatapointsSelectorComponent\n ),\n initialState: {\n minActiveCount: 1,\n showDifferentUnitsAlert: true\n },\n expanded: true,\n priority: 100\n })\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAMO,MAAM,wBAAwB,GAAG;IACtC,EAAE,EAAE,gBAAgB,CAAC,SAAS;AAC9B,IAAA,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC;AAC3B,IAAA,WAAW,EAAE,OAAO,CAAC,CAAA,oCAAA,CAAsC,CAAC;AAC5D,IAAA,YAAY,EAAE,0CAA0C;AACxD,IAAA,aAAa,EAAE,MACb,OAAO,uDAAuD,CAAC,CAAC,IAAI,CAClE,CAAC,IAAI,CAAC,CAAC,2BAA2B,CACnC;AACH,IAAA,mBAAmB,EAAE,MACnB,OAAO,uDAAuD,CAAC,CAAC,IAAI,CAClE,CAAC,IAAI,CAAC,CAAC,6BAA6B,CACrC;AACH,IAAA,IAAI,EAAE;AACJ,QAAA,QAAQ,EAAE;AACR,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,cAAc,EAAE;AACd,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,OAAO,EAAE;AACV,aAAA;AACD,YAAA,cAAc,EAAE;AACjB;AACF;;AAGI,MAAM,uBAAuB,GAAG;IACrC,UAAU,CAAC,wBAAwB,CAAC;AACpC,IAAA,gBAAgB,CAAC;QACf,QAAQ,EAAE,gBAAgB,CAAC,SAAS;AACpC,QAAA,KAAK,EAAE,OAAO,CAAC,sBAAsB,CAAC;AACtC,QAAA,aAAa,EAAE,MACb,OAAO,wCAAwC,CAAC,CAAC,IAAI,CACnD,CAAC,IAAI,CAAC,CAAC,iCAAiC,CACzC;AACH,QAAA,YAAY,EAAE;AACZ,YAAA,cAAc,EAAE,CAAC;AACjB,YAAA,uBAAuB,EAAE;AAC1B,SAAA;AACD,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,QAAQ,EAAE;KACX;;;AC9CH;;AAEG;;;;"}
@@ -2,6 +2,14 @@ import { gettext } from '@c8y/ngx-components/gettext';
2
2
  import { DynamicDatapointsResolver, hookWidget } from '@c8y/ngx-components';
3
3
  import { importConfigWithTargets, exportConfigWithTargets } from '@c8y/ngx-components/widgets/import-export-config';
4
4
  import { defaultWidgetIds } from '@c8y/ngx-components/widgets/definitions';
5
+ import { hookWidgetConfig } from '@c8y/ngx-components/context-dashboard';
6
+
7
+ const RADIAL_GAUGE_OPTIONS = {
8
+ showRedRange: true,
9
+ showYellowRange: true,
10
+ showRange: true,
11
+ selectableChartRenderTypes: []
12
+ };
5
13
 
6
14
  const radialGaugeWidgetDefinition = {
7
15
  id: defaultWidgetIds.RADIAL_GAUGE,
@@ -34,7 +42,22 @@ const radialGaugeWidgetDefinition = {
34
42
  }
35
43
  }
36
44
  };
37
- const radialGaugeWidgetProviders = [hookWidget(radialGaugeWidgetDefinition)];
45
+ const radialGaugeWidgetProviders = [
46
+ hookWidget(radialGaugeWidgetDefinition),
47
+ hookWidgetConfig({
48
+ widgetId: defaultWidgetIds.RADIAL_GAUGE,
49
+ label: gettext('Data point selection'),
50
+ loadComponent: () => import('@c8y/ngx-components/datapoint-selector').then(m => m.WidgetDatapointsSelectorComponent),
51
+ initialState: {
52
+ minActiveCount: 1,
53
+ maxActiveCount: 1,
54
+ defaultFormOptions: RADIAL_GAUGE_OPTIONS,
55
+ controlName: 'datapointsGauge'
56
+ },
57
+ expanded: true,
58
+ priority: 100
59
+ })
60
+ ];
38
61
 
39
62
  /**
40
63
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-widgets-definitions-radial-gauge.mjs","sources":["../../widgets/definitions/radial-gauge/index.ts","../../widgets/definitions/radial-gauge/c8y-ngx-components-widgets-definitions-radial-gauge.ts"],"sourcesContent":["import type { DynamicWidgetDefinition } from '@c8y/ngx-components';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { DynamicDatapointsResolver, hookWidget } from '@c8y/ngx-components';\nimport {\n exportConfigWithTargets,\n importConfigWithTargets\n} from '@c8y/ngx-components/widgets/import-export-config';\nimport { defaultWidgetIds } from '@c8y/ngx-components/widgets/definitions';\n\nexport const radialGaugeWidgetDefinition = {\n id: defaultWidgetIds.RADIAL_GAUGE,\n label: gettext('Radial gauge'),\n // Info gauge config and view components are used for the radial gauge. Eventually both will be merged into one component.\n description: gettext('Shows the device measurements in a radial gauge.'),\n loadComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/info-gauge').then(\n m => m.InfoGaugeWidgetViewComponent\n ),\n // Gauge type is determined in the component\n loadConfigComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/info-gauge').then(\n m => m.InfoGaugeWidgetConfigComponent\n ),\n previewImage: 'c8y-style-assets/radial-gauge-pr.png',\n resolve: {\n datapoints: DynamicDatapointsResolver\n },\n data: {\n schema: () =>\n import(\n 'c8y-schema-loader?interfaceName=InfoGaugeWidgetConfig!@c8y/ngx-components/widgets/implementations/info-gauge'\n ),\n export: exportConfigWithTargets,\n import: importConfigWithTargets,\n settings: {\n noNewWidgets: false,\n widgetDefaults: {\n _width: 8,\n _height: 4\n },\n ng1: {\n options: {\n noDeviceTarget: true,\n groupsSelectable: false\n }\n }\n }\n }\n} satisfies DynamicWidgetDefinition;\n\nexport const radialGaugeWidgetProviders = [hookWidget(radialGaugeWidgetDefinition)];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AASO,MAAM,2BAA2B,GAAG;IACzC,EAAE,EAAE,gBAAgB,CAAC,YAAY;AACjC,IAAA,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC;;AAE9B,IAAA,WAAW,EAAE,OAAO,CAAC,kDAAkD,CAAC;AACxE,IAAA,aAAa,EAAE,MACb,OAAO,wDAAwD,CAAC,CAAC,IAAI,CACnE,CAAC,IAAI,CAAC,CAAC,4BAA4B,CACpC;;AAEH,IAAA,mBAAmB,EAAE,MACnB,OAAO,wDAAwD,CAAC,CAAC,IAAI,CACnE,CAAC,IAAI,CAAC,CAAC,8BAA8B,CACtC;AACH,IAAA,YAAY,EAAE,sCAAsC;AACpD,IAAA,OAAO,EAAE;AACP,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,MAAM,EAAE,MACN,OACE,8GAA8G,CAC/G;AACH,QAAA,MAAM,EAAE,uBAAuB;AAC/B,QAAA,MAAM,EAAE,uBAAuB;AAC/B,QAAA,QAAQ,EAAE;AACR,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,cAAc,EAAE;AACd,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,OAAO,EAAE;AACV,aAAA;AACD,YAAA,GAAG,EAAE;AACH,gBAAA,OAAO,EAAE;AACP,oBAAA,cAAc,EAAE,IAAI;AACpB,oBAAA,gBAAgB,EAAE;AACnB;AACF;AACF;AACF;;AAGI,MAAM,0BAA0B,GAAG,CAAC,UAAU,CAAC,2BAA2B,CAAC;;AClDlF;;AAEG;;;;"}
1
+ {"version":3,"file":"c8y-ngx-components-widgets-definitions-radial-gauge.mjs","sources":["../../widgets/definitions/radial-gauge/radial-gauge.constants.ts","../../widgets/definitions/radial-gauge/index.ts","../../widgets/definitions/radial-gauge/c8y-ngx-components-widgets-definitions-radial-gauge.ts"],"sourcesContent":["import { DatapointAttributesFormConfig } from '@c8y/ngx-components/datapoint-selector';\n\nexport const RADIAL_GAUGE_OPTIONS: Partial<DatapointAttributesFormConfig> = {\n showRedRange: true,\n showYellowRange: true,\n showRange: true,\n selectableChartRenderTypes: []\n};\n","import type { DynamicWidgetDefinition } from '@c8y/ngx-components';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { DynamicDatapointsResolver, hookWidget } from '@c8y/ngx-components';\nimport {\n exportConfigWithTargets,\n importConfigWithTargets\n} from '@c8y/ngx-components/widgets/import-export-config';\nimport { defaultWidgetIds } from '@c8y/ngx-components/widgets/definitions';\nimport { hookWidgetConfig } from '@c8y/ngx-components/context-dashboard';\nimport { RADIAL_GAUGE_OPTIONS } from './radial-gauge.constants';\n\nexport const radialGaugeWidgetDefinition = {\n id: defaultWidgetIds.RADIAL_GAUGE,\n label: gettext('Radial gauge'),\n // Info gauge config and view components are used for the radial gauge. Eventually both will be merged into one component.\n description: gettext('Shows the device measurements in a radial gauge.'),\n loadComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/info-gauge').then(\n m => m.InfoGaugeWidgetViewComponent\n ),\n // Gauge type is determined in the component\n loadConfigComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/info-gauge').then(\n m => m.InfoGaugeWidgetConfigComponent\n ),\n previewImage: 'c8y-style-assets/radial-gauge-pr.png',\n resolve: {\n datapoints: DynamicDatapointsResolver\n },\n data: {\n schema: () =>\n import(\n 'c8y-schema-loader?interfaceName=InfoGaugeWidgetConfig!@c8y/ngx-components/widgets/implementations/info-gauge'\n ),\n export: exportConfigWithTargets,\n import: importConfigWithTargets,\n settings: {\n noNewWidgets: false,\n widgetDefaults: {\n _width: 8,\n _height: 4\n },\n ng1: {\n options: {\n noDeviceTarget: true,\n groupsSelectable: false\n }\n }\n }\n }\n} satisfies DynamicWidgetDefinition;\n\nexport const radialGaugeWidgetProviders = [\n hookWidget(radialGaugeWidgetDefinition),\n hookWidgetConfig({\n widgetId: defaultWidgetIds.RADIAL_GAUGE,\n label: gettext('Data point selection'),\n loadComponent: () =>\n import('@c8y/ngx-components/datapoint-selector').then(\n m => m.WidgetDatapointsSelectorComponent\n ),\n initialState: {\n minActiveCount: 1,\n maxActiveCount: 1,\n defaultFormOptions: RADIAL_GAUGE_OPTIONS,\n controlName: 'datapointsGauge'\n },\n expanded: true,\n priority: 100\n })\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAEO,MAAM,oBAAoB,GAA2C;AAC1E,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,eAAe,EAAE,IAAI;AACrB,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,0BAA0B,EAAE;CAC7B;;ACIM,MAAM,2BAA2B,GAAG;IACzC,EAAE,EAAE,gBAAgB,CAAC,YAAY;AACjC,IAAA,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC;;AAE9B,IAAA,WAAW,EAAE,OAAO,CAAC,kDAAkD,CAAC;AACxE,IAAA,aAAa,EAAE,MACb,OAAO,wDAAwD,CAAC,CAAC,IAAI,CACnE,CAAC,IAAI,CAAC,CAAC,4BAA4B,CACpC;;AAEH,IAAA,mBAAmB,EAAE,MACnB,OAAO,wDAAwD,CAAC,CAAC,IAAI,CACnE,CAAC,IAAI,CAAC,CAAC,8BAA8B,CACtC;AACH,IAAA,YAAY,EAAE,sCAAsC;AACpD,IAAA,OAAO,EAAE;AACP,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,MAAM,EAAE,MACN,OACE,8GAA8G,CAC/G;AACH,QAAA,MAAM,EAAE,uBAAuB;AAC/B,QAAA,MAAM,EAAE,uBAAuB;AAC/B,QAAA,QAAQ,EAAE;AACR,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,cAAc,EAAE;AACd,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,OAAO,EAAE;AACV,aAAA;AACD,YAAA,GAAG,EAAE;AACH,gBAAA,OAAO,EAAE;AACP,oBAAA,cAAc,EAAE,IAAI;AACpB,oBAAA,gBAAgB,EAAE;AACnB;AACF;AACF;AACF;;AAGI,MAAM,0BAA0B,GAAG;IACxC,UAAU,CAAC,2BAA2B,CAAC;AACvC,IAAA,gBAAgB,CAAC;QACf,QAAQ,EAAE,gBAAgB,CAAC,YAAY;AACvC,QAAA,KAAK,EAAE,OAAO,CAAC,sBAAsB,CAAC;AACtC,QAAA,aAAa,EAAE,MACb,OAAO,wCAAwC,CAAC,CAAC,IAAI,CACnD,CAAC,IAAI,CAAC,CAAC,iCAAiC,CACzC;AACH,QAAA,YAAY,EAAE;AACZ,YAAA,cAAc,EAAE,CAAC;AACjB,YAAA,cAAc,EAAE,CAAC;AACjB,YAAA,kBAAkB,EAAE,oBAAoB;AACxC,YAAA,WAAW,EAAE;AACd,SAAA;AACD,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,QAAQ,EAAE;KACX;;;ACrEH;;AAEG;;;;"}
@@ -2,6 +2,14 @@ import { gettext } from '@c8y/ngx-components/gettext';
2
2
  import { DynamicComponentErrorStrategy, DynamicDatapointsResolver, hookWidget } from '@c8y/ngx-components';
3
3
  import { defaultWidgetIds } from '@c8y/ngx-components/widgets/definitions';
4
4
  import { importConfigWithTargets, exportConfigWithTargets } from '@c8y/ngx-components/widgets/import-export-config';
5
+ import { hookWidgetConfig } from '@c8y/ngx-components/context-dashboard';
6
+
7
+ const SILO_OPTIONS = {
8
+ showRedRange: true,
9
+ showYellowRange: true,
10
+ showRange: true,
11
+ showTarget: true
12
+ };
5
13
 
6
14
  const siloWidgetDefinition = {
7
15
  id: defaultWidgetIds.SILO,
@@ -33,7 +41,21 @@ const siloWidgetDefinition = {
33
41
  }
34
42
  }
35
43
  };
36
- const siloWidgetProviders = [hookWidget(siloWidgetDefinition)];
44
+ const siloWidgetProviders = [
45
+ hookWidget(siloWidgetDefinition),
46
+ hookWidgetConfig({
47
+ widgetId: defaultWidgetIds.SILO,
48
+ label: gettext('Data point selection'),
49
+ loadComponent: () => import('@c8y/ngx-components/datapoint-selector').then(m => m.WidgetDatapointsSelectorComponent),
50
+ initialState: {
51
+ minActiveCount: 1,
52
+ maxActiveCount: 1,
53
+ defaultFormOptions: SILO_OPTIONS
54
+ },
55
+ expanded: true,
56
+ priority: 100
57
+ })
58
+ ];
37
59
 
38
60
  /**
39
61
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-widgets-definitions-silo.mjs","sources":["../../widgets/definitions/silo/index.ts","../../widgets/definitions/silo/c8y-ngx-components-widgets-definitions-silo.ts"],"sourcesContent":["import type { DynamicWidgetDefinition } from '@c8y/ngx-components';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n DynamicComponentErrorStrategy,\n DynamicDatapointsResolver,\n hookWidget\n} from '@c8y/ngx-components';\nimport { defaultWidgetIds } from '@c8y/ngx-components/widgets/definitions';\nimport {\n exportConfigWithTargets,\n importConfigWithTargets\n} from '@c8y/ngx-components/widgets/import-export-config';\n\nexport const siloWidgetDefinition = {\n id: defaultWidgetIds.SILO,\n label: gettext('Silo'),\n description: gettext('A silo displaying current values for selected measurements'),\n loadComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/linear-gauge').then(\n m => m.LinearGaugeWidgetViewComponent\n ),\n loadConfigComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/linear-gauge').then(\n m => m.LinearGaugeWidgetConfigComponent\n ),\n previewImage: 'c8y-style-assets/silo-widget-pr.png',\n resolve: {\n datapoints: DynamicDatapointsResolver\n },\n errorStrategy: DynamicComponentErrorStrategy.OVERLAY_ERROR,\n data: {\n schema: () =>\n import(\n 'c8y-schema-loader?interfaceName=LinearGaugeWidgetConfig!@c8y/ngx-components/widgets/implementations/linear-gauge'\n ),\n export: exportConfigWithTargets,\n import: importConfigWithTargets,\n settings: {\n noNewWidgets: false,\n widgetDefaults: {\n _width: 4,\n _height: 4\n },\n ng1: {\n options: {\n noDeviceTarget: true,\n groupsSelectable: false\n }\n }\n }\n }\n} satisfies DynamicWidgetDefinition;\n\nexport const siloWidgetProviders = [hookWidget(siloWidgetDefinition)];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAaO,MAAM,oBAAoB,GAAG;IAClC,EAAE,EAAE,gBAAgB,CAAC,IAAI;AACzB,IAAA,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC;AACtB,IAAA,WAAW,EAAE,OAAO,CAAC,4DAA4D,CAAC;AAClF,IAAA,aAAa,EAAE,MACb,OAAO,0DAA0D,CAAC,CAAC,IAAI,CACrE,CAAC,IAAI,CAAC,CAAC,8BAA8B,CACtC;AACH,IAAA,mBAAmB,EAAE,MACnB,OAAO,0DAA0D,CAAC,CAAC,IAAI,CACrE,CAAC,IAAI,CAAC,CAAC,gCAAgC,CACxC;AACH,IAAA,YAAY,EAAE,qCAAqC;AACnD,IAAA,OAAO,EAAE;AACP,QAAA,UAAU,EAAE;AACb,KAAA;IACD,aAAa,EAAE,6BAA6B,CAAC,aAAa;AAC1D,IAAA,IAAI,EAAE;AACJ,QAAA,MAAM,EAAE,MACN,OACE,kHAAkH,CACnH;AACH,QAAA,MAAM,EAAE,uBAAuB;AAC/B,QAAA,MAAM,EAAE,uBAAuB;AAC/B,QAAA,QAAQ,EAAE;AACR,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,cAAc,EAAE;AACd,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,OAAO,EAAE;AACV,aAAA;AACD,YAAA,GAAG,EAAE;AACH,gBAAA,OAAO,EAAE;AACP,oBAAA,cAAc,EAAE,IAAI;AACpB,oBAAA,gBAAgB,EAAE;AACnB;AACF;AACF;AACF;;AAGI,MAAM,mBAAmB,GAAG,CAAC,UAAU,CAAC,oBAAoB,CAAC;;ACrDpE;;AAEG;;;;"}
1
+ {"version":3,"file":"c8y-ngx-components-widgets-definitions-silo.mjs","sources":["../../widgets/definitions/silo/silo.constants.ts","../../widgets/definitions/silo/index.ts","../../widgets/definitions/silo/c8y-ngx-components-widgets-definitions-silo.ts"],"sourcesContent":["import { DatapointAttributesFormConfig } from '@c8y/ngx-components/datapoint-selector';\n\nexport const SILO_OPTIONS: Partial<DatapointAttributesFormConfig> = {\n showRedRange: true,\n showYellowRange: true,\n showRange: true,\n showTarget: true\n};\n","import type { DynamicWidgetDefinition } from '@c8y/ngx-components';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n DynamicComponentErrorStrategy,\n DynamicDatapointsResolver,\n hookWidget\n} from '@c8y/ngx-components';\nimport { defaultWidgetIds } from '@c8y/ngx-components/widgets/definitions';\nimport {\n exportConfigWithTargets,\n importConfigWithTargets\n} from '@c8y/ngx-components/widgets/import-export-config';\nimport { hookWidgetConfig } from '@c8y/ngx-components/context-dashboard';\nimport { SILO_OPTIONS } from './silo.constants';\n\nexport const siloWidgetDefinition = {\n id: defaultWidgetIds.SILO,\n label: gettext('Silo'),\n description: gettext('A silo displaying current values for selected measurements'),\n loadComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/linear-gauge').then(\n m => m.LinearGaugeWidgetViewComponent\n ),\n loadConfigComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/linear-gauge').then(\n m => m.LinearGaugeWidgetConfigComponent\n ),\n previewImage: 'c8y-style-assets/silo-widget-pr.png',\n resolve: {\n datapoints: DynamicDatapointsResolver\n },\n errorStrategy: DynamicComponentErrorStrategy.OVERLAY_ERROR,\n data: {\n schema: () =>\n import(\n 'c8y-schema-loader?interfaceName=LinearGaugeWidgetConfig!@c8y/ngx-components/widgets/implementations/linear-gauge'\n ),\n export: exportConfigWithTargets,\n import: importConfigWithTargets,\n settings: {\n noNewWidgets: false,\n widgetDefaults: {\n _width: 4,\n _height: 4\n },\n ng1: {\n options: {\n noDeviceTarget: true,\n groupsSelectable: false\n }\n }\n }\n }\n} satisfies DynamicWidgetDefinition;\n\nexport const siloWidgetProviders = [\n hookWidget(siloWidgetDefinition),\n hookWidgetConfig({\n widgetId: defaultWidgetIds.SILO,\n label: gettext('Data point selection'),\n loadComponent: () =>\n import('@c8y/ngx-components/datapoint-selector').then(\n m => m.WidgetDatapointsSelectorComponent\n ),\n initialState: {\n minActiveCount: 1,\n maxActiveCount: 1,\n defaultFormOptions: SILO_OPTIONS\n },\n expanded: true,\n priority: 100\n })\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAEO,MAAM,YAAY,GAA2C;AAClE,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,eAAe,EAAE,IAAI;AACrB,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,UAAU,EAAE;CACb;;ACQM,MAAM,oBAAoB,GAAG;IAClC,EAAE,EAAE,gBAAgB,CAAC,IAAI;AACzB,IAAA,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC;AACtB,IAAA,WAAW,EAAE,OAAO,CAAC,4DAA4D,CAAC;AAClF,IAAA,aAAa,EAAE,MACb,OAAO,0DAA0D,CAAC,CAAC,IAAI,CACrE,CAAC,IAAI,CAAC,CAAC,8BAA8B,CACtC;AACH,IAAA,mBAAmB,EAAE,MACnB,OAAO,0DAA0D,CAAC,CAAC,IAAI,CACrE,CAAC,IAAI,CAAC,CAAC,gCAAgC,CACxC;AACH,IAAA,YAAY,EAAE,qCAAqC;AACnD,IAAA,OAAO,EAAE;AACP,QAAA,UAAU,EAAE;AACb,KAAA;IACD,aAAa,EAAE,6BAA6B,CAAC,aAAa;AAC1D,IAAA,IAAI,EAAE;AACJ,QAAA,MAAM,EAAE,MACN,OACE,kHAAkH,CACnH;AACH,QAAA,MAAM,EAAE,uBAAuB;AAC/B,QAAA,MAAM,EAAE,uBAAuB;AAC/B,QAAA,QAAQ,EAAE;AACR,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,cAAc,EAAE;AACd,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,OAAO,EAAE;AACV,aAAA;AACD,YAAA,GAAG,EAAE;AACH,gBAAA,OAAO,EAAE;AACP,oBAAA,cAAc,EAAE,IAAI;AACpB,oBAAA,gBAAgB,EAAE;AACnB;AACF;AACF;AACF;;AAGI,MAAM,mBAAmB,GAAG;IACjC,UAAU,CAAC,oBAAoB,CAAC;AAChC,IAAA,gBAAgB,CAAC;QACf,QAAQ,EAAE,gBAAgB,CAAC,IAAI;AAC/B,QAAA,KAAK,EAAE,OAAO,CAAC,sBAAsB,CAAC;AACtC,QAAA,aAAa,EAAE,MACb,OAAO,wCAAwC,CAAC,CAAC,IAAI,CACnD,CAAC,IAAI,CAAC,CAAC,iCAAiC,CACzC;AACH,QAAA,YAAY,EAAE;AACZ,YAAA,cAAc,EAAE,CAAC;AACjB,YAAA,cAAc,EAAE,CAAC;AACjB,YAAA,kBAAkB,EAAE;AACrB,SAAA;AACD,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,QAAQ,EAAE;KACX;;;ACvEH;;AAEG;;;;"}
@@ -384,10 +384,10 @@ class AlarmWidgetService {
384
384
  buildOrderParameters(orderParams) {
385
385
  return `$orderby=${orderParams.join(',')}`;
386
386
  }
387
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AlarmWidgetService, deps: [{ token: i1.AlarmsViewService }], target: i0.ɵɵFactoryTarget.Injectable }); }
388
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AlarmWidgetService, providedIn: 'root' }); }
387
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AlarmWidgetService, deps: [{ token: i1.AlarmsViewService }], target: i0.ɵɵFactoryTarget.Injectable }); }
388
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AlarmWidgetService, providedIn: 'root' }); }
389
389
  }
390
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AlarmWidgetService, decorators: [{
390
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AlarmWidgetService, decorators: [{
391
391
  type: Injectable,
392
392
  args: [{ providedIn: 'root' }]
393
393
  }], ctorParameters: () => [{ type: i1.AlarmsViewService }] });
@@ -421,10 +421,10 @@ class SeverityIconPipe {
421
421
  c8yIcon: severityClassName
422
422
  };
423
423
  }
424
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SeverityIconPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
425
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: SeverityIconPipe, isStandalone: true, name: "severityIcon" }); }
424
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: SeverityIconPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
425
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.17", ngImport: i0, type: SeverityIconPipe, isStandalone: true, name: "severityIcon" }); }
426
426
  }
427
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SeverityIconPipe, decorators: [{
427
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: SeverityIconPipe, decorators: [{
428
428
  type: Pipe,
429
429
  args: [{ name: 'severityIcon' }]
430
430
  }] });
@@ -444,10 +444,10 @@ class SortingDescriptionPopoverMessagePipe {
444
444
  return '';
445
445
  }
446
446
  }
447
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SortingDescriptionPopoverMessagePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
448
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: SortingDescriptionPopoverMessagePipe, isStandalone: true, name: "sortingDescriptionPopoverMessage" }); }
447
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: SortingDescriptionPopoverMessagePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
448
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.17", ngImport: i0, type: SortingDescriptionPopoverMessagePipe, isStandalone: true, name: "sortingDescriptionPopoverMessage" }); }
449
449
  }
450
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SortingDescriptionPopoverMessagePipe, decorators: [{
450
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: SortingDescriptionPopoverMessagePipe, decorators: [{
451
451
  type: Pipe,
452
452
  args: [{ name: 'sortingDescriptionPopoverMessage' }]
453
453
  }] });
@@ -617,10 +617,10 @@ class AlarmListWidgetConfigComponent {
617
617
  typesControl.push(this.formBuilder.control(''));
618
618
  }
619
619
  }
620
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AlarmListWidgetConfigComponent, deps: [{ token: AlarmWidgetService }, { token: i2.AlarmService }, { token: i1.AlarmsViewService }, { token: i4.AlertService }, { token: i5.NgForm }, { token: i5.FormBuilder }, { token: i6.WidgetConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
621
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AlarmListWidgetConfigComponent, isStandalone: true, selector: "c8y-alarm-list-widget-config", inputs: { config: "config" }, viewQueries: [{ propertyName: "previewMapSet", first: true, predicate: ["alarmListPreview"], descendants: true }], ngImport: i0, template: "<div\n class=\"p-l-24 p-r-24\"\n [style.pointer-events]=\"'auto'\"\n [style.opacity]=\"1\"\n></div>\n\n@if (formGroup) {\n <form\n class=\"row d-flex flex-wrap\"\n [formGroup]=\"formGroup\"\n >\n <div class=\"col-md-6\">\n <fieldset class=\"c8y-fieldset\">\n <legend>{{ 'Order`of items on a list, noun`' | translate }}</legend>\n <c8y-form-group class=\"m-b-8\">\n @for (order of orderList; track order; let i = $index) {\n <div\n class=\"d-flex p-b-8 p-t-4 a-i-center\"\n data-cy=\"c8y-alarm-list-widget-config--order-elements\"\n >\n <label\n class=\"c8y-radio gap-4\"\n title=\"{{ ALARM_ORDER_LABELS[order] | translate }}\"\n >\n <input\n type=\"radio\"\n [value]=\"order\"\n formControlName=\"order\"\n />\n <span class=\"a-s-center\"></span>\n <span class=\"text-truncate\">{{ ALARM_ORDER_LABELS[order] | translate }}</span>\n </label>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"order | sortingDescriptionPopoverMessage | translate\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n [adaptivePosition]=\"true\"\n ></button>\n </div>\n }\n </c8y-form-group>\n </fieldset>\n </div>\n <div class=\"col-md-6 col-xs-12\">\n <fieldset\n class=\"c8y-fieldset\"\n formGroupName=\"severities\"\n >\n <legend>{{ 'Severities' | translate }}</legend>\n <c8y-form-group\n [hasError]=\"formGroup.controls.severities.hasError('required')\"\n [ngClass]=\"{\n 'm-b-8': !formGroup.controls.severities.hasError('required')\n }\"\n data-cy=\"c8y-alarm-list-widget-config--severities-elements\"\n >\n @for (severityOption of severityList; track severityOption) {\n <label\n class=\"c8y-checkbox m-t-0 gap-4\"\n [title]=\"SEVERITY_LABELS[severityOption] | translate\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"severityOption\"\n [name]=\"severityOption\"\n />\n <span class=\"a-s-center\"></span>\n @let severityIcon = severityOption | severityIcon;\n <i\n class=\"a-s-center m-r-4 icon-20 {{ severityIcon.iconClass }}\"\n [c8yIcon]=\"severityIcon.c8yIcon\"\n ></i>\n <span>{{ SEVERITY_LABELS[severityOption] | translate }}</span>\n </label>\n }\n <c8y-messages>\n @if (formGroup.controls.severities.hasError('required')) {\n <c8y-message>\n {{ 'Select at least one severity.' | translate }}\n </c8y-message>\n }\n </c8y-messages>\n </c8y-form-group>\n </fieldset>\n @if (showDateFilter) {\n <fieldset class=\"c8y-fieldset\">\n <legend>{{ 'Date filter' | translate }}</legend>\n <c8y-form-group class=\"m-b-8\">\n <c8y-alarms-date-filter\n [updateQueryParams]=\"false\"\n [DEFAULT_INTERVAL]=\"config.interval || 'none'\"\n formControlName=\"dateFilter\"\n (dateFilterChange)=\"onDateFilterChange($event)\"\n ></c8y-alarms-date-filter>\n </c8y-form-group>\n </fieldset>\n }\n </div>\n\n <div class=\"col-md-6 col-xs-12\">\n <fieldset\n class=\"c8y-fieldset\"\n formGroupName=\"status\"\n >\n <legend data-cy=\"c8y-alarm-list-widget-config-status-label\">\n {{ 'Status' | translate }}\n </legend>\n <c8y-form-group\n [hasError]=\"formGroup.controls.status.hasError('required')\"\n [ngClass]=\"{\n 'm-b-8': !formGroup.controls.status.hasError('required')\n }\"\n data-cy=\"c8y-alarm-list-widget-config--status-elements\"\n >\n @for (statusOption of statusList; track statusOption) {\n <label\n class=\"c8y-checkbox m-t-0 gap-4\"\n [title]=\"STATUS_LABELS[statusOption] | translate\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"statusOption\"\n [name]=\"statusOption\"\n />\n <span class=\"a-s-center\"></span>\n <i\n class=\"a-s-center m-l-4 m-r-4 text-gray-dark c8y-icon icon-20\"\n [c8yIcon]=\"\n statusOption === CLEARED_STATUS_VALUE\n ? C8Y_ALERT_IDLE_ICON\n : statusOption === ACKNOWLEDGE_STATUS_VALUE\n ? BELL_SLASH_ICON\n : BELL_ICON\n \"\n ></i>\n <span>{{ STATUS_LABELS[statusOption] | translate }}</span>\n </label>\n }\n <c8y-messages>\n @if (formGroup.controls.status.hasError('required')) {\n <c8y-message>\n {{ 'Select at least one status.' | translate }}\n </c8y-message>\n }\n </c8y-messages>\n </c8y-form-group>\n </fieldset>\n </div>\n <div class=\"col-md-6 col-xs-12\">\n <fieldset\n class=\"c8y-fieldset\"\n data-cy=\"c8y-alarm-list-widget-config--child-devices-section\"\n >\n <legend>{{ 'Child devices' | translate }}</legend>\n <c8y-form-group class=\"m-b-8\">\n <label\n class=\"c8y-switch\"\n [title]=\"'Show alarms from child devices' | translate\"\n data-cy=\"c8y-alarm-list-widget-config--child-devices-label\"\n >\n <input\n type=\"checkbox\"\n formControlName=\"showAlarmsForChildren\"\n data-cy=\"c8y-alarm-list-widget-config--showAlarmsForChildren-checkbox\"\n />\n <span></span>\n <span>{{ 'Show alarms' | translate }}</span>\n <span class=\"sr-only\">{{ 'Show alarms' | translate }}</span>\n </label>\n </c8y-form-group>\n </fieldset>\n </div>\n\n <div class=\"col-xs-12\">\n <fieldset class=\"c8y-fieldset\">\n <legend>{{ 'Types' | translate }}</legend>\n <c8y-form-group\n class=\"m-b-8\"\n formArrayName=\"types\"\n >\n @for (type of types.controls; track type; let i = $index) {\n <div\n class=\"input-group m-b-4\"\n data-cy=\"c8y-alarm-list-widget-config--types-elements\"\n >\n <input\n class=\"form-control\"\n type=\"text\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'c8y_Alarm' }\"\n [formControlName]=\"i\"\n />\n <div class=\"input-group-btn\">\n <button\n class=\"btn-dot btn-dot--danger m-l-auto\"\n [title]=\"'Remove' | translate\"\n type=\"button\"\n (click)=\"removeType(i)\"\n data-cy=\"c8y-alarm-list-widget-config--types-remove-type\"\n [disabled]=\"types.controls?.length === 1 && !type.value\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n @if (i === types.controls.length - 1) {\n <div class=\"input-group-btn\">\n <button\n class=\"btn-dot btn-dot--primary m-l-auto\"\n [title]=\"'Add alarm type' | translate\"\n type=\"button\"\n (click)=\"addType()\"\n data-cy=\"c8y-alarm-list-widget-config--types-add-type\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n </button>\n </div>\n }\n </div>\n }\n </c8y-form-group>\n </fieldset>\n </div>\n </form>\n}\n\n<ng-template #alarmListPreview>\n @if ((config$ | async)?.displayMode !== 'dashboard') {\n <c8y-local-controls\n [controls]=\"controls\"\n [displayMode]=\"(config$ | async)?.displayMode\"\n [config]=\"config$ | async\"\n [disabled]=\"true\"\n ></c8y-local-controls>\n }\n <c8y-alarms-list\n [alarms]=\"alarms$ | async\"\n [isInPreviewMode]=\"true\"\n [isInitialLoading]=\"isLoading\"\n [navigationOptions]=\"{\n allowNavigationToAlarmsView: false,\n alwaysNavigateToAllAlarms: false,\n includeClearedQueryParams: false,\n queryParamsHandling: 'merge'\n }\"\n data-cy=\"c8y-alarm-list-widget-config--preview-alarm-list\"\n ></c8y-alarms-list>\n</ng-template>\n\n<ng-template #dateSelectionHelpTemplate>\n <div [innerHTML]=\"dateSelectionHelp\"></div>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.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: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i5.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: AlarmsDateFilterComponent, selector: "c8y-alarms-date-filter", inputs: ["DEFAULT_INTERVAL", "updateQueryParams", "date"], outputs: ["dateFilterChange"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: AlarmsListComponent, selector: "c8y-alarms-list", inputs: ["alarms", "hasPermissions", "typeFilters", "loadMoreMode", "navigationOptions", "isInitialLoading", "isInPreviewMode"], outputs: ["onSelectedAlarm", "onScrollingStateChange"] }, { kind: "component", type: LocalControlsComponent, selector: "c8y-local-controls", inputs: ["controls", "displayMode", "config", "isLoading", "disabled"], outputs: ["configChange", "refresh"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: SeverityIconPipe, name: "severityIcon" }, { kind: "pipe", type: SortingDescriptionPopoverMessagePipe, name: "sortingDescriptionPopoverMessage" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
620
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AlarmListWidgetConfigComponent, deps: [{ token: AlarmWidgetService }, { token: i2.AlarmService }, { token: i1.AlarmsViewService }, { token: i4.AlertService }, { token: i5.NgForm }, { token: i5.FormBuilder }, { token: i6.WidgetConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
621
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: AlarmListWidgetConfigComponent, isStandalone: true, selector: "c8y-alarm-list-widget-config", inputs: { config: "config" }, viewQueries: [{ propertyName: "previewMapSet", first: true, predicate: ["alarmListPreview"], descendants: true }], ngImport: i0, template: "<div\n class=\"p-l-24 p-r-24\"\n [style.pointer-events]=\"'auto'\"\n [style.opacity]=\"1\"\n></div>\n\n@if (formGroup) {\n <form\n class=\"row d-flex flex-wrap\"\n [formGroup]=\"formGroup\"\n >\n <div class=\"col-md-6\">\n <fieldset class=\"c8y-fieldset\">\n <legend>{{ 'Order`of items on a list, noun`' | translate }}</legend>\n <c8y-form-group class=\"m-b-8\">\n @for (order of orderList; track order; let i = $index) {\n <div\n class=\"d-flex p-b-8 p-t-4 a-i-center\"\n data-cy=\"c8y-alarm-list-widget-config--order-elements\"\n >\n <label\n class=\"c8y-radio gap-4\"\n title=\"{{ ALARM_ORDER_LABELS[order] | translate }}\"\n >\n <input\n type=\"radio\"\n [value]=\"order\"\n formControlName=\"order\"\n />\n <span class=\"a-s-center\"></span>\n <span class=\"text-truncate\">{{ ALARM_ORDER_LABELS[order] | translate }}</span>\n </label>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"order | sortingDescriptionPopoverMessage | translate\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n [adaptivePosition]=\"true\"\n ></button>\n </div>\n }\n </c8y-form-group>\n </fieldset>\n </div>\n <div class=\"col-md-6 col-xs-12\">\n <fieldset\n class=\"c8y-fieldset\"\n formGroupName=\"severities\"\n >\n <legend>{{ 'Severities' | translate }}</legend>\n <c8y-form-group\n [hasError]=\"formGroup.controls.severities.hasError('required')\"\n [ngClass]=\"{\n 'm-b-8': !formGroup.controls.severities.hasError('required')\n }\"\n data-cy=\"c8y-alarm-list-widget-config--severities-elements\"\n >\n @for (severityOption of severityList; track severityOption) {\n <label\n class=\"c8y-checkbox m-t-0 gap-4\"\n [title]=\"SEVERITY_LABELS[severityOption] | translate\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"severityOption\"\n [name]=\"severityOption\"\n />\n <span class=\"a-s-center\"></span>\n @let severityIcon = severityOption | severityIcon;\n <i\n class=\"a-s-center m-r-4 icon-20 {{ severityIcon.iconClass }}\"\n [c8yIcon]=\"severityIcon.c8yIcon\"\n ></i>\n <span>{{ SEVERITY_LABELS[severityOption] | translate }}</span>\n </label>\n }\n <c8y-messages>\n @if (formGroup.controls.severities.hasError('required')) {\n <c8y-message>\n {{ 'Select at least one severity.' | translate }}\n </c8y-message>\n }\n </c8y-messages>\n </c8y-form-group>\n </fieldset>\n @if (showDateFilter) {\n <fieldset class=\"c8y-fieldset\">\n <legend>{{ 'Date filter' | translate }}</legend>\n <c8y-form-group class=\"m-b-8\">\n <c8y-alarms-date-filter\n [updateQueryParams]=\"false\"\n [DEFAULT_INTERVAL]=\"config.interval || 'none'\"\n formControlName=\"dateFilter\"\n (dateFilterChange)=\"onDateFilterChange($event)\"\n ></c8y-alarms-date-filter>\n </c8y-form-group>\n </fieldset>\n }\n </div>\n\n <div class=\"col-md-6 col-xs-12\">\n <fieldset\n class=\"c8y-fieldset\"\n formGroupName=\"status\"\n >\n <legend data-cy=\"c8y-alarm-list-widget-config-status-label\">\n {{ 'Status' | translate }}\n </legend>\n <c8y-form-group\n [hasError]=\"formGroup.controls.status.hasError('required')\"\n [ngClass]=\"{\n 'm-b-8': !formGroup.controls.status.hasError('required')\n }\"\n data-cy=\"c8y-alarm-list-widget-config--status-elements\"\n >\n @for (statusOption of statusList; track statusOption) {\n <label\n class=\"c8y-checkbox m-t-0 gap-4\"\n [title]=\"STATUS_LABELS[statusOption] | translate\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"statusOption\"\n [name]=\"statusOption\"\n />\n <span class=\"a-s-center\"></span>\n <i\n class=\"a-s-center m-l-4 m-r-4 text-gray-dark c8y-icon icon-20\"\n [c8yIcon]=\"\n statusOption === CLEARED_STATUS_VALUE\n ? C8Y_ALERT_IDLE_ICON\n : statusOption === ACKNOWLEDGE_STATUS_VALUE\n ? BELL_SLASH_ICON\n : BELL_ICON\n \"\n ></i>\n <span>{{ STATUS_LABELS[statusOption] | translate }}</span>\n </label>\n }\n <c8y-messages>\n @if (formGroup.controls.status.hasError('required')) {\n <c8y-message>\n {{ 'Select at least one status.' | translate }}\n </c8y-message>\n }\n </c8y-messages>\n </c8y-form-group>\n </fieldset>\n </div>\n <div class=\"col-md-6 col-xs-12\">\n <fieldset\n class=\"c8y-fieldset\"\n data-cy=\"c8y-alarm-list-widget-config--child-devices-section\"\n >\n <legend>{{ 'Child devices' | translate }}</legend>\n <c8y-form-group class=\"m-b-8\">\n <label\n class=\"c8y-switch\"\n [title]=\"'Show alarms from child devices' | translate\"\n data-cy=\"c8y-alarm-list-widget-config--child-devices-label\"\n >\n <input\n type=\"checkbox\"\n formControlName=\"showAlarmsForChildren\"\n data-cy=\"c8y-alarm-list-widget-config--showAlarmsForChildren-checkbox\"\n />\n <span></span>\n <span>{{ 'Show alarms' | translate }}</span>\n <span class=\"sr-only\">{{ 'Show alarms' | translate }}</span>\n </label>\n </c8y-form-group>\n </fieldset>\n </div>\n\n <div class=\"col-xs-12\">\n <fieldset class=\"c8y-fieldset\">\n <legend>{{ 'Types' | translate }}</legend>\n <c8y-form-group\n class=\"m-b-8\"\n formArrayName=\"types\"\n >\n @for (type of types.controls; track type; let i = $index) {\n <div\n class=\"input-group m-b-4\"\n data-cy=\"c8y-alarm-list-widget-config--types-elements\"\n >\n <input\n class=\"form-control\"\n type=\"text\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'c8y_Alarm' }\"\n [formControlName]=\"i\"\n />\n <div class=\"input-group-btn\">\n <button\n class=\"btn-dot btn-dot--danger m-l-auto\"\n [title]=\"'Remove' | translate\"\n type=\"button\"\n (click)=\"removeType(i)\"\n data-cy=\"c8y-alarm-list-widget-config--types-remove-type\"\n [disabled]=\"types.controls?.length === 1 && !type.value\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n @if (i === types.controls.length - 1) {\n <div class=\"input-group-btn\">\n <button\n class=\"btn-dot btn-dot--primary m-l-auto\"\n [title]=\"'Add alarm type' | translate\"\n type=\"button\"\n (click)=\"addType()\"\n data-cy=\"c8y-alarm-list-widget-config--types-add-type\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n </button>\n </div>\n }\n </div>\n }\n </c8y-form-group>\n </fieldset>\n </div>\n </form>\n}\n\n<ng-template #alarmListPreview>\n @if ((config$ | async)?.displayMode !== 'dashboard') {\n <c8y-local-controls\n [controls]=\"controls\"\n [displayMode]=\"(config$ | async)?.displayMode\"\n [config]=\"config$ | async\"\n [disabled]=\"true\"\n ></c8y-local-controls>\n }\n <c8y-alarms-list\n [alarms]=\"alarms$ | async\"\n [isInPreviewMode]=\"true\"\n [isInitialLoading]=\"isLoading\"\n [navigationOptions]=\"{\n allowNavigationToAlarmsView: false,\n alwaysNavigateToAllAlarms: false,\n includeClearedQueryParams: false,\n queryParamsHandling: 'merge'\n }\"\n data-cy=\"c8y-alarm-list-widget-config--preview-alarm-list\"\n ></c8y-alarms-list>\n</ng-template>\n\n<ng-template #dateSelectionHelpTemplate>\n <div [innerHTML]=\"dateSelectionHelp\"></div>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.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: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i5.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: AlarmsDateFilterComponent, selector: "c8y-alarms-date-filter", inputs: ["DEFAULT_INTERVAL", "updateQueryParams", "date"], outputs: ["dateFilterChange"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: AlarmsListComponent, selector: "c8y-alarms-list", inputs: ["alarms", "hasPermissions", "typeFilters", "loadMoreMode", "navigationOptions", "isInitialLoading", "isInPreviewMode"], outputs: ["onSelectedAlarm", "onScrollingStateChange"] }, { kind: "component", type: LocalControlsComponent, selector: "c8y-local-controls", inputs: ["controls", "displayMode", "config", "isLoading", "disabled"], outputs: ["configChange", "refresh"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: SeverityIconPipe, name: "severityIcon" }, { kind: "pipe", type: SortingDescriptionPopoverMessagePipe, name: "sortingDescriptionPopoverMessage" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
622
622
  }
623
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AlarmListWidgetConfigComponent, decorators: [{
623
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AlarmListWidgetConfigComponent, decorators: [{
624
624
  type: Component,
625
625
  args: [{ selector: 'c8y-alarm-list-widget-config', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], imports: [
626
626
  FormsModule,
@@ -793,10 +793,10 @@ class AlarmListWidgetComponent {
793
793
  Object.assign(this.config, predefinedConfig);
794
794
  }
795
795
  }
796
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AlarmListWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
797
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AlarmListWidgetComponent, isStandalone: true, selector: "c8y-alarm-list-widget", inputs: { config: "config" }, providers: [AlarmRealtimeService, AlarmWithChildrenRealtimeService], ngImport: i0, template: "@if (displayMode() === GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD) {\n <c8y-global-context-connector\n [controls]=\"widgetControls()\"\n [config]=\"contextConfig()\"\n [isLoading]=\"isLoading$ | async\"\n [dashboardChild]=\"getDashboardChild()\"\n [linked]=\"isLinkedToGlobal()\"\n (configChange)=\"onContextChange($event)\"\n (refresh)=\"onRefresh()\"\n ></c8y-global-context-connector>\n} @else {\n <c8y-local-controls\n [controls]=\"widgetControls()\"\n [displayMode]=\"displayMode()\"\n [config]=\"contextConfig()\"\n [isLoading]=\"isLoading$ | async\"\n (configChange)=\"onContextChange($event)\"\n (refresh)=\"onRefresh()\"\n ></c8y-local-controls>\n}\n\n<c8y-alarms-list\n #list\n [alarms]=\"alarms$ | async\"\n [navigationOptions]=\"{\n alwaysNavigateToAllAlarms: !config.device,\n allowNavigationToAlarmsView: true,\n includeClearedQueryParams: true,\n queryParamsHandling: ''\n }\"\n [isInitialLoading]=\"isLoading$ | async\"\n [hasPermissions]=\"hasPermissions\"\n (onScrollingStateChange)=\"onScrollingStateChange($event)\"\n></c8y-alarms-list>\n", dependencies: [{ kind: "component", type: AlarmsListComponent, selector: "c8y-alarms-list", inputs: ["alarms", "hasPermissions", "typeFilters", "loadMoreMode", "navigationOptions", "isInitialLoading", "isInPreviewMode"], outputs: ["onSelectedAlarm", "onScrollingStateChange"] }, { kind: "component", type: LocalControlsComponent, selector: "c8y-local-controls", inputs: ["controls", "displayMode", "config", "isLoading", "disabled"], outputs: ["configChange", "refresh"] }, { kind: "component", type: GlobalContextConnectorComponent, selector: "c8y-global-context-connector", inputs: ["controls", "config", "isLoading", "dashboardChild", "linked", "emitRefresh"], outputs: ["configChange", "refresh", "linkedChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
796
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AlarmListWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
797
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: AlarmListWidgetComponent, isStandalone: true, selector: "c8y-alarm-list-widget", inputs: { config: "config" }, providers: [AlarmRealtimeService, AlarmWithChildrenRealtimeService], ngImport: i0, template: "@if (displayMode() === GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD) {\n <c8y-global-context-connector\n [controls]=\"widgetControls()\"\n [config]=\"contextConfig()\"\n [isLoading]=\"isLoading$ | async\"\n [dashboardChild]=\"getDashboardChild()\"\n [linked]=\"isLinkedToGlobal()\"\n (configChange)=\"onContextChange($event)\"\n (refresh)=\"onRefresh()\"\n ></c8y-global-context-connector>\n} @else {\n <c8y-local-controls\n [controls]=\"widgetControls()\"\n [displayMode]=\"displayMode()\"\n [config]=\"contextConfig()\"\n [isLoading]=\"isLoading$ | async\"\n (configChange)=\"onContextChange($event)\"\n (refresh)=\"onRefresh()\"\n ></c8y-local-controls>\n}\n\n<c8y-alarms-list\n #list\n [alarms]=\"alarms$ | async\"\n [navigationOptions]=\"{\n alwaysNavigateToAllAlarms: !config.device,\n allowNavigationToAlarmsView: true,\n includeClearedQueryParams: true,\n queryParamsHandling: ''\n }\"\n [isInitialLoading]=\"isLoading$ | async\"\n [hasPermissions]=\"hasPermissions\"\n (onScrollingStateChange)=\"onScrollingStateChange($event)\"\n></c8y-alarms-list>\n", dependencies: [{ kind: "component", type: AlarmsListComponent, selector: "c8y-alarms-list", inputs: ["alarms", "hasPermissions", "typeFilters", "loadMoreMode", "navigationOptions", "isInitialLoading", "isInPreviewMode"], outputs: ["onSelectedAlarm", "onScrollingStateChange"] }, { kind: "component", type: LocalControlsComponent, selector: "c8y-local-controls", inputs: ["controls", "displayMode", "config", "isLoading", "disabled"], outputs: ["configChange", "refresh"] }, { kind: "component", type: GlobalContextConnectorComponent, selector: "c8y-global-context-connector", inputs: ["controls", "config", "isLoading", "dashboardChild", "linked", "emitRefresh"], outputs: ["configChange", "refresh", "linkedChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
798
798
  }
799
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AlarmListWidgetComponent, decorators: [{
799
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AlarmListWidgetComponent, decorators: [{
800
800
  type: Component,
801
801
  args: [{ selector: 'c8y-alarm-list-widget', providers: [AlarmRealtimeService, AlarmWithChildrenRealtimeService], imports: [AlarmsListComponent, AsyncPipe, LocalControlsComponent, GlobalContextConnectorComponent], template: "@if (displayMode() === GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD) {\n <c8y-global-context-connector\n [controls]=\"widgetControls()\"\n [config]=\"contextConfig()\"\n [isLoading]=\"isLoading$ | async\"\n [dashboardChild]=\"getDashboardChild()\"\n [linked]=\"isLinkedToGlobal()\"\n (configChange)=\"onContextChange($event)\"\n (refresh)=\"onRefresh()\"\n ></c8y-global-context-connector>\n} @else {\n <c8y-local-controls\n [controls]=\"widgetControls()\"\n [displayMode]=\"displayMode()\"\n [config]=\"contextConfig()\"\n [isLoading]=\"isLoading$ | async\"\n (configChange)=\"onContextChange($event)\"\n (refresh)=\"onRefresh()\"\n ></c8y-local-controls>\n}\n\n<c8y-alarms-list\n #list\n [alarms]=\"alarms$ | async\"\n [navigationOptions]=\"{\n alwaysNavigateToAllAlarms: !config.device,\n allowNavigationToAlarmsView: true,\n includeClearedQueryParams: true,\n queryParamsHandling: ''\n }\"\n [isInitialLoading]=\"isLoading$ | async\"\n [hasPermissions]=\"hasPermissions\"\n (onScrollingStateChange)=\"onScrollingStateChange($event)\"\n></c8y-alarms-list>\n" }]
802
802
  }], propDecorators: { config: [{
@@ -804,8 +804,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
804
804
  }] } });
805
805
 
806
806
  class AlarmsWidgetModule {
807
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AlarmsWidgetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
808
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: AlarmsWidgetModule, imports: [AlarmsModule,
807
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AlarmsWidgetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
808
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.17", ngImport: i0, type: AlarmsWidgetModule, imports: [AlarmsModule,
809
809
  CommonModule,
810
810
  CountdownIntervalModule,
811
811
  DocsModule,
@@ -822,7 +822,7 @@ class AlarmsWidgetModule {
822
822
  GlobalContextInlineComponent,
823
823
  ConfigContextSelectorComponent,
824
824
  GlobalContextWidgetWrapperComponent] }); }
825
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AlarmsWidgetModule, imports: [AlarmsModule,
825
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AlarmsWidgetModule, imports: [AlarmsModule,
826
826
  CommonModule,
827
827
  CountdownIntervalModule,
828
828
  DocsModule,
@@ -840,7 +840,7 @@ class AlarmsWidgetModule {
840
840
  ConfigContextSelectorComponent,
841
841
  GlobalContextWidgetWrapperComponent] }); }
842
842
  }
843
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AlarmsWidgetModule, decorators: [{
843
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AlarmsWidgetModule, decorators: [{
844
844
  type: NgModule,
845
845
  args: [{
846
846
  imports: [