@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-BxmSKHiM.mjs","sources":["../../computed-asset-properties/strategies/last-measurement-strategy.ts","../../computed-asset-properties/common/realtime-value-handler.ts","../../computed-asset-properties/last-measurement/last-measurement-value.ts","../../computed-asset-properties/last-measurement/last-measurement-computed-property.ts","../../computed-asset-properties/strategies/child-count-strategy.ts","../../computed-asset-properties/child-count/child-count-value.ts","../../computed-asset-properties/child-count/child-assets-count-computed-property.ts","../../computed-asset-properties/strategies/count-strategy-base.ts","../../computed-asset-properties/strategies/alarm-count-strategy.ts","../../computed-asset-properties/alarm-count/alarm-count-value.ts","../../computed-asset-properties/alarm-count/alarm-count-3-months-computed-property.ts","../../computed-asset-properties/alarm-count/alarm-count-today-computed-property.ts","../../computed-asset-properties/strategies/event-count-strategy.ts","../../computed-asset-properties/event-count/event-count-value.ts","../../computed-asset-properties/event-count/event-count-today.ts","../../computed-asset-properties/event-count/event-count-3-months.ts","../../computed-asset-properties/configuration-snapshot/configuration-snapshot-computed-property.ts","../../computed-asset-properties/child-count/child-devices-count-computed-property.ts","../../computed-asset-properties/strategies/last-device-message-strategy.ts","../../computed-asset-properties/last-device-message/last-device-message-value.ts","../../computed-asset-properties/last-device-message/last-device-message-computed-property.ts","../../computed-asset-properties/fieldbus-item-status/fieldbus-item-status.model.ts","../../computed-asset-properties/fieldbus-item-status/fieldbus.service.ts","../../computed-asset-properties/strategies/fieldbus-item-status-strategy.ts","../../computed-asset-properties/fieldbus-item-status/fieldbus-item-status-computed-property.ts","../../computed-asset-properties/index.ts","../../computed-asset-properties/c8y-ngx-components-computed-asset-properties.ts"],"sourcesContent":["import { Injector } from '@angular/core';\nimport { IMeasurement, IMeasurementValue, MeasurementService } from '@c8y/client';\nimport { DatePipe, MeasurementRealtimeService } from '@c8y/ngx-components';\nimport { filter, from, map, Observable, startWith } from 'rxjs';\nimport { KPIDetails } from '@c8y/ngx-components/datapoint-selector';\nimport { LastMeasurementConfig } from '../last-measurement/last-measurement.model';\nimport { ValueStrategy } from '../common/realtime-value-base';\n\nexport class LastMeasurementStrategy implements ValueStrategy<string | IMeasurementValue> {\n private measurementService: MeasurementService;\n private measurementRealtime: MeasurementRealtimeService;\n private datapoint: KPIDetails;\n private datePipe: DatePipe;\n\n constructor(\n private config: LastMeasurementConfig,\n injector: Injector\n ) {\n this.measurementService = injector.get(MeasurementService);\n this.measurementRealtime = injector.get(MeasurementRealtimeService);\n this.datePipe = injector.get(DatePipe);\n this.datapoint = config.dp.filter(dp => dp.__active)[0];\n }\n\n fetchCurrentValue(): Observable<string | IMeasurementValue> {\n const measurementFilter: any = {\n valueFragmentSeries: this.datapoint.series,\n valueFragmentType: this.datapoint.fragment,\n pageSize: 1,\n revert: true,\n dateFrom: '1970-01-01',\n source: this.datapoint.__target.id\n };\n\n return from(this.measurementService.list(measurementFilter)).pipe(\n map(({ data }) => data[0]),\n filter(measurement => !!measurement),\n map(measurement => this.formatMeasurement(measurement))\n );\n }\n\n createRealtimeStream(initialValue: string): Observable<string | IMeasurementValue> {\n return this.measurementRealtime\n .onCreateOfSpecificMeasurement$(\n this.datapoint.fragment,\n this.datapoint.series,\n this.datapoint.__target\n )\n .pipe(\n map(measurement => this.formatMeasurement(measurement)),\n startWith(initialValue)\n );\n }\n\n private formatMeasurement(measurement: IMeasurement): string | IMeasurementValue {\n const resultType = this.config?.resultType;\n const fragment = this.datapoint.fragment;\n const series = this.datapoint.series;\n\n if (resultType === 1) {\n return measurement[fragment][series].value;\n } else if (resultType === 2) {\n return measurement[fragment][series].value + ' ' + measurement[fragment][series].unit;\n } else if (resultType === 3) {\n const date = this.datePipe.transform(new Date(measurement.time as string), 'short');\n return `${date} | ${measurement[fragment][series].value} ${measurement[fragment][series].unit}`;\n } else if (resultType === 4) {\n return measurement[fragment][series] as IMeasurementValue;\n }\n return '';\n }\n}\n","import {\n distinctUntilChanged,\n NEVER,\n Observable,\n pairwise,\n share,\n startWith,\n switchMap,\n take\n} from 'rxjs';\nimport { ValueCallbackMetadata } from '@c8y/ngx-components/asset-properties';\nimport { ValueStrategy, RealtimeValueConfig } from './realtime-value-base';\n\n/**\n * Generic handler for realtime values following the three modes pattern\n * Closed for modification but open for extension through strategies\n */\nexport class RealtimeValueHandler<T> {\n private readonly config: Required<RealtimeValueConfig> = {\n refetchOnResume: true,\n preserveValueOnPause: true\n };\n\n constructor(\n private strategy: ValueStrategy<T>,\n config?: RealtimeValueConfig\n ) {\n if (config) {\n this.config = { ...this.config, ...config };\n }\n }\n\n /**\n * Creates an Observable based on the metadata mode\n */\n getValue(metadata: ValueCallbackMetadata = { mode: 'realtime' }): Observable<T> {\n if (metadata.mode === 'singleValue') {\n return this.strategy.fetchCurrentValue().pipe(take(1));\n }\n\n if (metadata.mode === 'realtime' && !metadata.realtimeControl$) {\n return this.handleUncontrolledRealtime();\n }\n\n if (metadata.mode === 'realtime' && metadata.realtimeControl$) {\n return this.handleControlledRealtime(metadata.realtimeControl$);\n }\n }\n\n private handleUncontrolledRealtime(): Observable<T> {\n return this.strategy\n .fetchCurrentValue()\n .pipe(switchMap(initialValue => this.strategy.createRealtimeStream(initialValue)));\n }\n\n private handleControlledRealtime(control$: Observable<boolean>): Observable<T> {\n const controlWithPrevious$ = control$.pipe(\n distinctUntilChanged(),\n startWith(null),\n pairwise(),\n share()\n );\n\n return controlWithPrevious$.pipe(\n switchMap(([previous, current]) => {\n if (!current) {\n // Realtime is disabled\n if (previous === null) {\n // Initial emission while disabled\n return this.strategy.fetchCurrentValue().pipe(take(1));\n } else if (this.config.preserveValueOnPause) {\n // Was previously enabled - preserve last value\n return NEVER;\n } else {\n // Don't preserve value - fetch current\n return this.strategy.fetchCurrentValue().pipe(take(1));\n }\n } else {\n // Realtime is enabled\n if (this.config.refetchOnResume || previous === null) {\n // Re-fetch current value and start streaming\n return this.strategy\n .fetchCurrentValue()\n .pipe(switchMap(currentValue => this.strategy.createRealtimeStream(currentValue)));\n } else {\n // Continue with realtime stream without re-fetching\n return this.strategy.createRealtimeStream(null as T);\n }\n }\n })\n );\n }\n}\n","import { inject, Injector } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { LastMeasurementConfig } from './last-measurement.model';\nimport { ValueCallbackMetadata } from '@c8y/ngx-components/asset-properties';\nimport { LastMeasurementStrategy } from '../strategies/last-measurement-strategy';\nimport { RealtimeValueHandler } from '../common/realtime-value-handler';\nimport { IMeasurementValue } from '@c8y/client';\n\n/**\n * Creates an Observable that tracks the latest measurement value for a specific datapoint.\n * Combines initial server fetch with real-time measurement updates.\n *\n * @param config - Measurement configuration (datapoint, result type, etc.)\n * @param metadata - Configuration controlling the behavior of the function\n * @returns Observable<string> - Stream of measurement string values\n */\nexport function lastMeasurementValue(\n config: LastMeasurementConfig,\n metadata: ValueCallbackMetadata = { mode: 'realtime' }\n): Observable<string | IMeasurementValue> {\n const injector = inject(Injector);\n const strategy = new LastMeasurementStrategy(config, injector);\n const handler = new RealtimeValueHandler(strategy);\n return handler.getValue(metadata);\n}\n","import { ComputedPropertyDefinition } from '@c8y/ngx-components/asset-properties';\nimport { LastMeasurementConfig } from './last-measurement.model';\nimport { lastMeasurementValue } from './last-measurement-value';\nimport { gettext } from '@c8y/ngx-components/gettext';\n\nexport const lastMeasurement: ComputedPropertyDefinition<\n ['device', 'asset', 'group'],\n LastMeasurementConfig\n> = {\n name: 'lastMeasurement',\n contextType: ['device', 'asset', 'group'],\n prop: {\n c8y_JsonSchema: {\n properties: {\n lastMeasurement: {\n label: 'Last measurement',\n type: 'string'\n }\n }\n },\n name: 'lastMeasurement',\n label: gettext('Last measurement'),\n type: 'string',\n config: { dp: [], resultType: 1 } as LastMeasurementConfig,\n computed: true,\n isEditable: false,\n isStandardProperty: true\n },\n loadConfigComponent: () =>\n import('./last-measurement-config.component').then(\n m => m.ComputedPropertyLastMeasurementConfigComponent\n ),\n value: ({ config }) => {\n return lastMeasurementValue(config);\n }\n};\n","import { Injector } from '@angular/core';\nimport { IManagedObject, InventoryService } from '@c8y/client';\nimport { ManagedObjectRealtimeService } from '@c8y/ngx-components';\nimport { from, map, Observable, startWith } from 'rxjs';\nimport { ValueStrategy } from '../common/realtime-value-base';\n\nexport class ChildCountStrategy implements ValueStrategy<number> {\n private inventoryService: InventoryService;\n private moRealtimeService: ManagedObjectRealtimeService;\n\n constructor(\n private asset: IManagedObject,\n private childType: 'childDevices' | 'childAssets',\n injector: Injector\n ) {\n this.inventoryService = injector.get(InventoryService);\n this.moRealtimeService = injector.get(ManagedObjectRealtimeService);\n }\n\n fetchCurrentValue(): Observable<number> {\n return from(this.inventoryService.detail(this.asset.id, { withChildren: true })).pipe(\n map(resp => resp?.data?.[this.childType]?.references?.length || 0)\n );\n }\n\n createRealtimeStream(initialValue: number): Observable<number> {\n return this.moRealtimeService.onAll$(this.asset.id).pipe(\n map(resp => (resp?.data as IManagedObject)?.[this.childType]?.references?.length || 0),\n startWith(initialValue)\n );\n }\n}\n","import { inject, Injector } from '@angular/core';\nimport { IManagedObject } from '@c8y/client';\nimport { ValueCallbackMetadata } from '@c8y/ngx-components/asset-properties';\nimport { Observable } from 'rxjs';\nimport { ChildCountStrategy } from '../strategies/child-count-strategy';\nimport { RealtimeValueHandler } from '../common/realtime-value-handler';\n\n/**\n * Shared function that tracks the count of child items (devices or assets) for a specific managed object.\n * Supports real-time updates when child items are added or removed.\n *\n * @param asset - The managed object to track child items for\n * @param childType - Type of child items ('childDevices' or 'childAssets')\n * @param metadata - Configuration controlling the behavior of the function\n * @returns Observable<number> - Stream of child items count values\n */\nexport function childCountValue(\n asset: IManagedObject,\n metadata: ValueCallbackMetadata = { mode: 'realtime' },\n childType: 'childDevices' | 'childAssets'\n): Observable<number> {\n const injector = inject(Injector);\n const strategy = new ChildCountStrategy(asset, childType, injector);\n const handler = new RealtimeValueHandler(strategy);\n return handler.getValue(metadata);\n}\n","import { IManagedObject } from '@c8y/client';\nimport {\n ComputedPropertyDefinition,\n ValueCallbackMetadata\n} from '@c8y/ngx-components/asset-properties';\nimport { Observable } from 'rxjs';\nimport { childCountValue } from './child-count-value';\nimport { gettext } from '@c8y/ngx-components/gettext';\n\nexport const childAssetsCount: ComputedPropertyDefinition<['group', 'asset']> = {\n name: 'childAssetsCount',\n contextType: ['group', 'asset'],\n prop: {\n c8y_JsonSchema: {\n properties: {\n childAssetsCount: {\n label: 'Number of child assets',\n type: 'number'\n }\n }\n },\n name: 'childAssetsCount',\n label: gettext('Number of child assets'),\n type: 'number',\n computed: true,\n isEditable: false,\n isStandardProperty: true\n },\n value: ({ context, metadata }) => childAssetsCountValue(context, metadata)\n};\n\n/**\n * Creates an Observable that tracks the count of child assets for a specific asset.\n * Supports real-time updates when child assets are added or removed.\n *\n * @param asset - The managed object (asset) to track child assets for\n * @param metadata - Configuration controlling the behavior of the function\n * @returns Observable<number> - Stream of child assets count values\n */\nexport function childAssetsCountValue(\n asset: IManagedObject,\n metadata: ValueCallbackMetadata = { mode: 'realtime' }\n): Observable<number> {\n return childCountValue(asset, metadata, 'childAssets');\n}\n","import { Observable, scan, startWith } from 'rxjs';\nimport { ValueStrategy } from '../common/realtime-value-base';\n\n/**\n * Base class for count-based strategies\n * Provides common accumulation logic\n */\nexport abstract class CountStrategyBase implements ValueStrategy<number> {\n abstract fetchCurrentValue(): Observable<number>;\n abstract getRealtimeIncrement$(): Observable<number>;\n\n createRealtimeStream(initialValue: number): Observable<number> {\n return this.getRealtimeIncrement$().pipe(\n scan((count, increment) => count + increment, initialValue),\n startWith(initialValue)\n );\n }\n}\n","import { Injector } from '@angular/core';\nimport {\n AlarmQueryFilter,\n AlarmService,\n IAlarm,\n IManagedObject,\n SeverityFilter\n} from '@c8y/client';\nimport { AlarmRealtimeService } from '@c8y/ngx-components';\nimport { filter, from, map, Observable, tap } from 'rxjs';\nimport { AlarmCountConfig } from '../alarm-count/alarm-count.model';\nimport { CountStrategyBase } from './count-strategy-base';\n\nexport class AlarmCountStrategy extends CountStrategyBase {\n private alarmService: AlarmService;\n private alarmRealtimeService: AlarmRealtimeService;\n private startTime: Date;\n\n constructor(\n private config: AlarmCountConfig,\n private asset: IManagedObject,\n private dateFrom: Date,\n injector: Injector\n ) {\n super();\n this.alarmService = injector.get(AlarmService);\n this.alarmRealtimeService = injector.get(AlarmRealtimeService);\n this.startTime = new Date();\n }\n\n fetchCurrentValue(): Observable<number> {\n const severities: SeverityFilter[] = Object.keys(this.config.severities || {}).filter(\n key => this.config.severities[key]\n ) as SeverityFilter[];\n\n const filters: AlarmQueryFilter = {\n source: this.asset.id,\n dateFrom: this.dateFrom.toISOString(),\n type: this.config.type,\n pageSize: 1,\n withTotalElements: true,\n ...(severities.length && { severity: severities.join(',') })\n };\n\n return from(this.alarmService.list(filters)).pipe(\n map(resp => resp?.paging?.totalElements || 0),\n tap(() => (this.startTime = new Date())) // Update start time after fetch\n );\n }\n\n getRealtimeIncrement$(): Observable<number> {\n return this.alarmRealtimeService.onAll$(this.asset.id).pipe(\n map(({ data }) => data as IAlarm),\n filter(\n alarm =>\n alarm.type === this.config.type &&\n this.config.severities[alarm.severity] &&\n new Date(alarm.creationTime) > this.startTime\n ),\n tap(() => (this.startTime = new Date())),\n map(() => 1) // Each matching alarm increments by 1\n );\n }\n}\n","import { inject, Injector } from '@angular/core';\nimport { IManagedObject } from '@c8y/client';\nimport { ValueCallbackMetadata } from '@c8y/ngx-components/asset-properties';\nimport { Observable } from 'rxjs';\nimport { AlarmCountStrategy } from '../strategies/alarm-count-strategy';\nimport { AlarmCountConfig } from './alarm-count.model';\nimport { RealtimeValueHandler } from '../common/realtime-value-handler';\n\n/**\n * Creates an Observable that tracks alarm count for a specific asset.\n * When real-time is paused and resumed, it re-fetches the current count from server\n * to account for alarms that occurred during the pause.\n *\n * @param config - Alarm filtering configuration (type, severities, etc.)\n * @param asset - The managed object (device/asset) to track alarms for\n * @param dateFrom - Start date for counting alarms\n * @param metadata - Configuration controlling the behavior of the function\n * @returns Observable<number> - Stream of alarm count values\n */\nexport function alarmCountValue(\n config: AlarmCountConfig,\n asset: IManagedObject,\n dateFrom: Date,\n metadata: ValueCallbackMetadata = { mode: 'realtime' }\n): Observable<number> {\n const injector = inject(Injector);\n const strategy = new AlarmCountStrategy(config, asset, dateFrom, injector);\n const handler = new RealtimeValueHandler(strategy);\n return handler.getValue(metadata);\n}\n","import { IManagedObject } from '@c8y/client';\nimport {\n ComputedPropertyDefinition,\n ValueCallbackMetadata\n} from '@c8y/ngx-components/asset-properties';\nimport { AlarmCountConfig } from './alarm-count.model';\nimport { alarmCountValue } from './alarm-count-value';\nimport { Observable } from 'rxjs';\nimport { gettext } from '@c8y/ngx-components/gettext';\n\nexport const alarmCount3Months: ComputedPropertyDefinition<\n ['device', 'group', 'asset'],\n AlarmCountConfig\n> = {\n name: 'alarmCount3Months',\n contextType: ['device', 'group', 'asset'],\n prop: {\n c8y_JsonSchema: {\n properties: {\n alarmCount3Months: {\n label: 'Alarm count 3 months',\n type: 'number'\n }\n }\n },\n name: 'alarmCount3Months',\n label: gettext('Alarm count 3 months'),\n type: 'number',\n config: { type: '' } as AlarmCountConfig,\n computed: true,\n isEditable: false,\n isStandardProperty: true\n },\n loadConfigComponent: () =>\n import('./alarm-count-config.component').then(m => m.ComputedPropertyAlarmCountConfigComponent),\n value: ({ config, context, metadata }) => alarmCount3MonthsValue(config, context, metadata)\n};\n\nfunction alarmCount3MonthsValue(\n config: AlarmCountConfig,\n asset: IManagedObject,\n metadata: ValueCallbackMetadata\n): Observable<number> {\n const threeMonthsAgo = new Date();\n threeMonthsAgo.setMonth(threeMonthsAgo.getMonth() - 3);\n return alarmCountValue(config, asset, threeMonthsAgo, metadata);\n}\n","import { IManagedObject } from '@c8y/client';\nimport {\n ComputedPropertyDefinition,\n ValueCallbackMetadata\n} from '@c8y/ngx-components/asset-properties';\nimport { AlarmCountConfig } from './alarm-count.model';\nimport { alarmCountValue } from './alarm-count-value';\nimport { Observable } from 'rxjs';\nimport { gettext } from '@c8y/ngx-components/gettext';\n\nexport const alarmCountToday: ComputedPropertyDefinition<\n ['device', 'group', 'asset'],\n AlarmCountConfig\n> = {\n name: 'alarmCountToday',\n contextType: ['device', 'group', 'asset'],\n prop: {\n c8y_JsonSchema: {\n properties: {\n alarmCountToday: {\n label: 'Alarm count today',\n type: 'number'\n }\n }\n },\n name: 'alarmCountToday',\n label: gettext('Alarm count today'),\n type: 'number',\n config: { type: '' } as AlarmCountConfig,\n computed: true,\n isEditable: false,\n isStandardProperty: true\n },\n loadConfigComponent: () =>\n import('./alarm-count-config.component').then(m => m.ComputedPropertyAlarmCountConfigComponent),\n value: ({ config, context, metadata }) => alarmCountTodayValue(config, context, metadata)\n};\n\nfunction alarmCountTodayValue(\n config: AlarmCountConfig,\n asset: IManagedObject,\n metadata: ValueCallbackMetadata\n): Observable<number> {\n const oneDayAgo = new Date();\n oneDayAgo.setDate(oneDayAgo.getDate() - 1);\n return alarmCountValue(config, asset, oneDayAgo, metadata);\n}\n","import { Injector } from '@angular/core';\nimport { EventService, IEvent, IManagedObject } from '@c8y/client';\nimport { EventRealtimeService } from '@c8y/ngx-components';\nimport { filter, from, map, Observable } from 'rxjs';\nimport { EventCountConfig } from '../event-count/event-count.model';\nimport { CountStrategyBase } from './count-strategy-base';\n\nexport class EventCountStrategy extends CountStrategyBase {\n private eventService: EventService;\n private eventRealtimeService: EventRealtimeService;\n\n constructor(\n private config: EventCountConfig,\n private asset: IManagedObject,\n private dateFrom: Date,\n injector: Injector\n ) {\n super();\n this.eventService = injector.get(EventService);\n this.eventRealtimeService = injector.get(EventRealtimeService);\n }\n\n fetchCurrentValue(): Observable<number> {\n const filters = {\n source: this.asset.id,\n dateFrom: this.dateFrom.toISOString(),\n type: this.config.type,\n pageSize: 1,\n withTotalElements: true\n };\n\n return from(this.eventService.list(filters)).pipe(\n map(resp => resp?.paging?.totalElements || 0)\n );\n }\n\n getRealtimeIncrement$(): Observable<number> {\n return this.eventRealtimeService.onAll$(this.asset.id).pipe(\n map(({ data }) => data as IEvent),\n filter(event => event.type === this.config.type && new Date(event.time) >= this.dateFrom),\n map(() => 1)\n );\n }\n}\n","import { inject, Injector } from '@angular/core';\nimport { IManagedObject } from '@c8y/client';\nimport { EventCountConfig } from './event-count.model';\nimport { Observable } from 'rxjs';\nimport { ValueCallbackMetadata } from '@c8y/ngx-components/asset-properties';\nimport { EventCountStrategy } from '../strategies/event-count-strategy';\nimport { RealtimeValueHandler } from '../common/realtime-value-handler';\n\n/**\n * Creates an Observable that tracks event count for a specific asset.\n * When real-time is paused and resumed, it re-fetches the current count from server\n * to account for events that occurred during the pause.\n *\n * @param config - Event filtering configuration (type, etc.)\n * @param asset - The managed object (device/asset) to track events for\n * @param dateFrom - Start date for counting events\n * @param metadata - Configuration controlling the behavior of the function\n * @returns Observable<number> - Stream of event count values\n */\nexport function eventCountValue(\n config: EventCountConfig,\n asset: IManagedObject,\n dateFrom: Date,\n metadata: ValueCallbackMetadata = { mode: 'realtime' }\n): Observable<number> {\n const injector = inject(Injector);\n const strategy = new EventCountStrategy(config, asset, dateFrom, injector);\n const handler = new RealtimeValueHandler(strategy);\n return handler.getValue(metadata);\n}\n","import { IManagedObject } from '@c8y/client';\nimport {\n ComputedPropertyDefinition,\n ValueCallbackMetadata\n} from '@c8y/ngx-components/asset-properties';\nimport { EventCountConfig } from './event-count.model';\nimport { eventCountValue } from './event-count-value';\nimport { Observable } from 'rxjs';\nimport { gettext } from '@c8y/ngx-components/gettext';\n\nexport const eventCountToday: ComputedPropertyDefinition<\n ['device', 'group', 'asset'],\n EventCountConfig\n> = {\n name: 'eventCountToday',\n contextType: ['device', 'group', 'asset'],\n prop: {\n c8y_JsonSchema: {\n properties: {\n eventCountToday: {\n label: 'Event count today',\n type: 'number'\n }\n }\n },\n name: 'eventCountToday',\n label: gettext('Event count today'),\n type: 'number',\n config: { type: '' },\n computed: true,\n isEditable: false,\n isStandardProperty: true\n },\n loadConfigComponent: () =>\n import('./event-count-config.component').then(m => m.ComputedPropertyEventCountConfigComponent),\n value: ({ config, context, metadata }) => eventCountTodayValue(config, context, metadata)\n};\n\nfunction eventCountTodayValue(\n config: EventCountConfig,\n asset: IManagedObject,\n metadata: ValueCallbackMetadata\n): Observable<number> {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n return eventCountValue(config, asset, today, metadata);\n}\n","import { IManagedObject } from '@c8y/client';\nimport {\n ComputedPropertyDefinition,\n ValueCallbackMetadata\n} from '@c8y/ngx-components/asset-properties';\nimport { EventCountConfig } from './event-count.model';\nimport { eventCountValue } from './event-count-value';\nimport { Observable } from 'rxjs';\nimport { gettext } from '@c8y/ngx-components/gettext';\n\nexport const eventCount3Months: ComputedPropertyDefinition<\n ['device', 'group', 'asset'],\n EventCountConfig\n> = {\n name: 'eventCount3Months',\n contextType: ['device', 'group', 'asset'],\n prop: {\n c8y_JsonSchema: {\n properties: {\n eventCount3Months: {\n label: 'Event count 3 months',\n type: 'number'\n }\n }\n },\n name: 'eventCount3Months',\n label: gettext('Event count 3 months'),\n type: 'number',\n config: { type: '' },\n computed: true,\n isEditable: false,\n isStandardProperty: true\n },\n loadConfigComponent: () =>\n import('./event-count-config.component').then(m => m.ComputedPropertyEventCountConfigComponent),\n value: ({ config, context, metadata }) => eventCount3MonthsValue(config, context, metadata)\n};\n\nfunction eventCount3MonthsValue(\n config: EventCountConfig,\n asset: IManagedObject,\n metadata: ValueCallbackMetadata\n): Observable<number> {\n const threeMonthsAgo = new Date();\n threeMonthsAgo.setMonth(threeMonthsAgo.getMonth() - 3);\n return eventCountValue(config, asset, threeMonthsAgo, metadata);\n}\n","import { ComputedPropertyDefinition } from '@c8y/ngx-components/asset-properties';\nimport { from, Observable, of, switchMap } from 'rxjs';\nimport { ConfigurationSnapshotConfig } from './configuration-snapshot.model';\nimport { IManagedObject, InventoryService } from '@c8y/client';\nimport { inject, Injector } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\n\nexport const configurationSnapshot: ComputedPropertyDefinition<\n ['device', 'asset'],\n ConfigurationSnapshotConfig\n> = {\n name: 'configurationSnapshot',\n contextType: ['device', 'asset'],\n prop: {\n c8y_JsonSchema: {\n properties: {\n configurationSnapshot: {\n label: 'Configuration snapshot',\n type: 'string'\n }\n }\n },\n contextType: ['device', 'asset'],\n name: 'configurationSnapshot',\n label: gettext('Configuration snapshot'),\n type: 'string',\n config: { legacy: true } as ConfigurationSnapshotConfig,\n computed: true,\n isEditable: false,\n isStandardProperty: true\n },\n loadConfigComponent: () =>\n import('./configuration-snapshot-config.component').then(\n m => m.ConfigurationSnapshotConfigComponent\n ),\n value: ({ config, context }) => configurationSnapshotValue(config, context)\n};\n\nfunction configurationSnapshotValue(\n config: ConfigurationSnapshotConfig,\n asset: IManagedObject\n): Observable<string> {\n if (config.legacy) {\n const configId = asset.c8y_ConfigurationDump?.id;\n if (!configId) {\n return of(null);\n }\n const injector = inject(Injector);\n const inventoryService = injector.get(InventoryService);\n return from(inventoryService.detail(configId)).pipe(\n switchMap(({ data }) => {\n return of(data?.name);\n })\n );\n } else {\n const fragment = `c8y_Configuration_${config.type}`;\n return of(asset[fragment]?.name);\n }\n}\n","import { IManagedObject } from '@c8y/client';\nimport {\n ComputedPropertyDefinition,\n ValueCallbackMetadata\n} from '@c8y/ngx-components/asset-properties';\nimport { Observable } from 'rxjs';\nimport { childCountValue } from './child-count-value';\nimport { gettext } from '@c8y/ngx-components/gettext';\n\nexport const childDevicesCount: ComputedPropertyDefinition<['group', 'device', 'asset']> = {\n name: 'childDevicesCount',\n contextType: ['group', 'device', 'asset'],\n prop: {\n c8y_JsonSchema: {\n properties: {\n childDevicesCount: {\n label: 'Number of child devices',\n type: 'number'\n }\n }\n },\n name: 'childDevicesCount',\n label: gettext('Number of child devices'),\n type: 'number',\n computed: true,\n isEditable: false,\n isStandardProperty: true\n },\n value: ({ context, metadata }) => childDevicesCountValue(context, metadata)\n};\n\n/**\n * Creates an Observable that tracks the count of child devices for a specific asset.\n * Supports real-time updates when child devices are added or removed.\n *\n * @param asset - The managed object (asset) to track child devices for\n * @param metadata - Configuration controlling the behavior of the function\n * @returns Observable<number> - Stream of child devices count values\n */\nexport function childDevicesCountValue(\n asset: IManagedObject,\n metadata: ValueCallbackMetadata = { mode: 'realtime' }\n): Observable<number> {\n return childCountValue(asset, metadata, 'childDevices');\n}\n","import { Injector } from '@angular/core';\nimport {\n AlarmService,\n EventService,\n IAlarm,\n IEvent,\n IManagedObject,\n IMeasurement,\n IOperation,\n MeasurementService,\n OperationService\n} from '@c8y/client';\nimport {\n AlarmRealtimeService,\n EventRealtimeService,\n MeasurementRealtimeService,\n OperationRealtimeService\n} from '@c8y/ngx-components';\nimport {\n catchError,\n combineLatest,\n filter,\n from,\n map,\n merge,\n Observable,\n of,\n scan,\n startWith\n} from 'rxjs';\nimport { ValueStrategy } from '../common/realtime-value-base';\n\nexport class LastDeviceMessageStrategy implements ValueStrategy<string> {\n private measurementService: MeasurementService;\n private measurementRealtime: MeasurementRealtimeService;\n private eventService: EventService;\n private eventRealtimeService: EventRealtimeService;\n private alarmService: AlarmService;\n private alarmRealtimeService: AlarmRealtimeService;\n private operationService: OperationService;\n private operationRealtimeService: OperationRealtimeService;\n private startTime: Date;\n\n constructor(\n private asset: IManagedObject,\n injector: Injector\n ) {\n this.measurementService = injector.get(MeasurementService);\n this.measurementRealtime = injector.get(MeasurementRealtimeService);\n this.eventService = injector.get(EventService);\n this.eventRealtimeService = injector.get(EventRealtimeService);\n this.alarmService = injector.get(AlarmService);\n this.alarmRealtimeService = injector.get(AlarmRealtimeService);\n this.operationService = injector.get(OperationService);\n this.operationRealtimeService = injector.get(OperationRealtimeService);\n this.startTime = new Date();\n }\n\n fetchCurrentValue(): Observable<string> {\n const fetchFilter = {\n source: this.asset.id,\n pageSize: 1,\n revert: true\n };\n\n const fetchLatestMeasurement = (): Observable<string | null> => {\n return from(this.measurementService.list(fetchFilter)).pipe(\n map(resp => resp.data?.[0]?.time || null),\n catchError(() => of(null))\n );\n };\n\n const fetchLatestEvent = (): Observable<string | null> => {\n return from(this.eventService.list(fetchFilter)).pipe(\n map(resp => resp.data?.[0]?.time || null),\n catchError(() => of(null))\n );\n };\n\n const fetchLatestAlarm = (): Observable<string | null> => {\n return from(this.alarmService.list(fetchFilter)).pipe(\n map(resp => resp.data?.[0]?.time || null),\n catchError(() => of(null))\n );\n };\n\n const fetchLatestOperation = (): Observable<string | null> => {\n return from(this.operationService.list(fetchFilter)).pipe(\n map(resp => resp.data?.[0]?.creationTime || null),\n catchError(() => of(null))\n );\n };\n\n return combineLatest([\n fetchLatestMeasurement(),\n fetchLatestEvent(),\n fetchLatestAlarm(),\n fetchLatestOperation()\n ]).pipe(\n map(timestamps => {\n const validTimestamps = timestamps.filter(Boolean) as string[];\n\n if (validTimestamps.length === 0) {\n return null;\n }\n\n const latest = validTimestamps.reduce((latest, current) => {\n return new Date(current) > new Date(latest) ? current : latest;\n });\n\n // Update start time for realtime filtering\n this.startTime = new Date();\n return latest;\n })\n );\n }\n\n createRealtimeStream(initialValue: string): Observable<string> {\n const measurementStream$ = this.measurementRealtime.onAll$(this.asset.id).pipe(\n map(({ data }) => (data as IMeasurement).time),\n filter(time => new Date(time) > this.startTime)\n );\n\n const eventStream$ = this.eventRealtimeService.onAll$(this.asset.id).pipe(\n map(({ data }) => (data as IEvent).time),\n filter(time => new Date(time) > this.startTime)\n );\n\n const alarmStream$ = this.alarmRealtimeService.onAll$(this.asset.id).pipe(\n map(({ data }) => (data as IAlarm).time),\n filter(time => time && new Date(time) > this.startTime)\n );\n\n const operationStream$ = this.operationRealtimeService.onAll$(this.asset.id).pipe(\n map(({ data }) => (data as IOperation).creationTime),\n filter(time => time && new Date(time) > this.startTime)\n );\n\n return merge(measurementStream$, eventStream$, alarmStream$, operationStream$).pipe(\n scan((latestTimestamp, newTimestamp) => {\n return new Date(newTimestamp) > new Date(latestTimestamp) ? newTimestamp : latestTimestamp;\n }, initialValue),\n startWith(initialValue)\n );\n }\n}\n","import { ValueCallbackMetadata } from '@c8y/ngx-components/asset-properties';\nimport { IManagedObject } from '@c8y/client';\nimport { inject, Injector } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { LastDeviceMessageStrategy } from '../strategies/last-device-message-strategy';\nimport { RealtimeValueHandler } from '../common/realtime-value-handler';\n\n/**\n * Gets the latest timestamp from events, alarms, measurements, and operations for a device.\n * Returns the most recent timestamp across all these sources.\n *\n * @param asset - The managed object (device/asset) to track\n * @param metadata - Configuration controlling the behavior of the function\n * @returns Observable<string> - Stream of latest timestamp values\n */\nexport function getLastDeviceMessage(\n asset: IManagedObject,\n metadata: ValueCallbackMetadata = { mode: 'realtime' }\n): Observable<string> {\n const injector = inject(Injector);\n const strategy = new LastDeviceMessageStrategy(asset, injector);\n const handler = new RealtimeValueHandler(strategy);\n return handler.getValue(metadata);\n}\n","import { ComputedPropertyDefinition } from '@c8y/ngx-components/asset-properties';\nimport { getLastDeviceMessage } from './last-device-message-value';\nimport { gettext } from '@c8y/ngx-components/gettext';\n\nexport const lastDeviceMessage: ComputedPropertyDefinition<['device']> = {\n name: 'lastDeviceMessage',\n contextType: ['device'],\n prop: {\n c8y_JsonSchema: {\n properties: {\n lastDeviceMessage: {\n label: 'Last device message',\n type: 'string'\n }\n }\n },\n name: 'lastDeviceMessage',\n label: gettext('Last device message'),\n printFormat: 'datetime',\n type: 'string',\n computed: true,\n isEditable: false,\n isStandardProperty: true\n },\n value: ({ context }) => {\n return getLastDeviceMessage(context);\n }\n};\n","import { IManagedObject } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\n\nexport interface FieldbusItemStatusConfig {\n itemName: string;\n itemType: 'c8y_Coil' | 'c8y_Register';\n resultType: keyof typeof RESULT_TYPES;\n}\n\nexport const RESULT_TYPES = {\n RAW_VALUE: { name: 'RAW_VALUE', value: 'RAW_VALUE', label: gettext('Raw value') },\n ENUM_VALUE: { name: 'ENUM_VALUE', value: 'ENUM_VALUE', label: gettext('Enum value') }\n} as const;\n\nexport interface FieldbusDevice extends IManagedObject {\n c8y_ModbusDevice?: {\n address: number;\n protocol: string;\n ipAddress: string;\n /** Reference URL to Fieldbus device type (e.g. /inventory/managedObjects/12345). */\n type: string;\n };\n c8y_CoilStatus?: {\n [name: string]: number;\n };\n c8y_RegisterStatus?: {\n [name: string]: number;\n };\n}\n\nexport interface FieldbusDeviceType extends IManagedObject {\n name: string;\n type: string;\n fieldbusType: string;\n c8y_Coils?: FieldbusCoil[];\n c8y_Registers?: FieldbusRegister[];\n}\n\nexport interface FieldbusCoil {\n number: number;\n name: string;\n input: boolean;\n statusMapping: {\n status: 'read' | 'write';\n };\n enumValues?: {\n [value: number]: string;\n };\n alarmMapping?: {\n severity: 'CRITICAL' | 'MAJOR' | 'MINOR' | 'WARNING';\n type: string;\n text: string;\n raiseAlarmTemplate: number;\n };\n}\n\nexport interface FieldbusRegister {\n number: number;\n input: boolean;\n startBit: number;\n noBits: number;\n name: string;\n multiplier: number;\n divisor: number;\n decimalPlaces: number;\n unit: string;\n signed: boolean;\n min: number;\n max: number;\n category: string;\n measurementMapping?: {\n series: string;\n sendMeasurementTemplate: number;\n type: string;\n };\n statusMapping?: {\n status: 'read' | 'write';\n };\n enumValues?: {\n [value: number]: string;\n };\n eventMapping?: {\n eventTemplate: number;\n type: string;\n text: string;\n };\n}\n\nexport interface LegacyFieldbusProperty {\n fieldbus: true;\n id: string;\n keyPath: [string, string];\n label: string;\n}\n","import { Injectable, inject } from '@angular/core';\nimport { InventoryService } from '@c8y/client';\nimport {\n FieldbusDevice,\n FieldbusDeviceType,\n LegacyFieldbusProperty\n} from './fieldbus-item-status.model';\nimport { AssetPropertyType, ComputedPropertiesService } from '@c8y/ngx-components/asset-properties';\n\n@Injectable({ providedIn: 'root' })\nexport class FieldbusService {\n private inventory = inject(InventoryService);\n private computedProperties = inject(ComputedPropertiesService);\n\n async getDeviceTypeOf(fieldbusDevice: FieldbusDevice): Promise<FieldbusDeviceType> {\n const typeRef = fieldbusDevice?.c8y_ModbusDevice?.type;\n if (!typeRef) {\n throw new Error('Provided device is missing c8y_ModbusDevice.type.');\n }\n\n const match = /^\\/inventory\\/managedObjects\\/(\\d+)$/.exec(typeRef);\n if (!match) {\n throw new Error(\n `Provided Fieldbus type reference ${typeRef} has invalid format, expected: /inventory/managedObjects/{id}`\n );\n }\n\n const deviceTypeId = match[1];\n try {\n const { data } = await this.inventory.detail(deviceTypeId);\n return data as FieldbusDeviceType;\n } catch (ex) {\n const errorMessage = ex instanceof Error ? ex.message : String(ex);\n throw new Error(\n `Could not fetch Fieldbus device type with ID ${deviceTypeId}: ${errorMessage}.`\n );\n }\n }\n\n async migrateFieldbusProperty(\n legacyProperty: LegacyFieldbusProperty,\n fieldbusDevice: FieldbusDevice\n ): Promise<AssetPropertyType> {\n if (!legacyProperty.fieldbus) {\n throw new Error('Provided property is not a legacy Fieldbus property.');\n }\n\n const computedPropertyName = 'fieldbusItemStatus';\n const computedProperty = await this.computedProperties.getByName(computedPropertyName);\n\n const [statusPropertyName, itemName] = legacyProperty.keyPath;\n const itemType = statusPropertyName === 'c8y_CoilStatus' ? 'c8y_Coil' : 'c8y_Register';\n const deviceType = await this.getDeviceTypeOf(fieldbusDevice);\n const itemListPropertyName = `${itemType}s` as 'c8y_Coils' | 'c8y_Registers';\n const itemList = deviceType[itemListPropertyName] || [];\n const item = itemList.find(i => i.name === itemName);\n const resultType = item.enumValues ? 'ENUM_VALUE' : 'RAW_VALUE';\n\n return {\n ...computedProperty.prop,\n active: true,\n temporary: true,\n asset: {\n id: fieldbusDevice.id,\n name: fieldbusDevice.name\n },\n config: {\n itemName,\n itemType,\n resultType\n }\n };\n }\n}\n","import { Injector } from '@angular/core';\nimport { IManagedObject, InventoryService } from '@c8y/client';\nimport { ManagedObjectRealtimeService } from '@c8y/ngx-components';\nimport { from, Observable, startWith, switchMap } from 'rxjs';\nimport { ValueStrategy } from '../common/realtime-value-base';\nimport {\n FieldbusCoil,\n FieldbusDevice,\n FieldbusDeviceType,\n FieldbusItemStatusConfig,\n FieldbusRegister,\n RESULT_TYPES\n} from '../fieldbus-item-status/fieldbus-item-status.model';\nimport { get } from 'lodash-es';\nimport { FieldbusService } from '../fieldbus-item-status/fieldbus.service';\n\nexport class FieldbusItemStatusStrategy implements ValueStrategy<number | string> {\n private inventoryService: InventoryService;\n private moRealtimeService: ManagedObjectRealtimeService;\n private fieldbusService: FieldbusService;\n private _fieldbusDeviceType: FieldbusDeviceType;\n\n constructor(\n private asset: IManagedObject,\n private config: FieldbusItemStatusConfig,\n injector: Injector\n ) {\n this.inventoryService = injector.get(InventoryService);\n this.moRealtimeService = injector.get(ManagedObjectRealtimeService);\n this.fieldbusService = injector.get(FieldbusService);\n }\n\n fetchCurrentValue(): Observable<number | string> {\n return from(this.inventoryService.detail(this.asset.id)).pipe(\n switchMap(({ data }) => this.getStatus(data as FieldbusDevice))\n );\n }\n\n createRealtimeStream(initialValue: number | string): Observable<number | string> {\n return this.moRealtimeService.onAll$(this.asset.id).pipe(\n switchMap(({ data }) => this.getStatus(data as FieldbusDevice)),\n startWith(initialValue)\n );\n }\n\n private async getStatus(fieldbusDevice: FieldbusDevice): Promise<number | string> {\n const fieldbusDeviceType = await this.getFieldbusDeviceType(fieldbusDevice);\n if (!fieldbusDeviceType) {\n return null;\n }\n\n const itemListPropertyName = `${this.config.itemType}s` as 'c8y_Coils' | 'c8y_Registers';\n const statusPropertyName = `${this.config.itemType}Status` as\n | 'c8y_CoilStatus'\n | 'c8y_RegisterStatus';\n const items: FieldbusCoil[] | FieldbusRegister[] =\n fieldbusDeviceType[itemListPropertyName] ?? [];\n const item: FieldbusCoil | FieldbusRegister = items.find(i => i.name === this.config.itemName);\n const statusProperty = get(fieldbusDevice, statusPropertyName);\n const rawValue: number = get(statusProperty, this.config.itemName);\n if (this.config.resultType === RESULT_TYPES.ENUM_VALUE.value && item?.enumValues) {\n return item.enumValues[rawValue] ?? rawValue;\n } else {\n return rawValue;\n }\n }\n\n private async getFieldbusDeviceType(fieldbusDevice: FieldbusDevice): Promise<FieldbusDeviceType> {\n if (this._fieldbusDeviceType === undefined) {\n try {\n this._fieldbusDeviceType = await this.fieldbusService.getDeviceTypeOf(fieldbusDevice);\n } catch (ex) {\n this._fieldbusDeviceType = null;\n }\n }\n return this._fieldbusDeviceType;\n }\n}\n","import {\n ComputedPropertyDefinition,\n ValueCallbackMetadata\n} from '@c8y/ngx-components/asset-properties';\nimport { Observable } from 'rxjs';\nimport { inject, Injector } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { FieldbusItemStatusConfig } from './fieldbus-item-status.model';\nimport { FieldbusItemStatusStrategy } from '../strategies/fieldbus-item-status-strategy';\nimport { RealtimeValueHandler } from '../common/realtime-value-handler';\nimport { IManagedObject } from '@c8y/client';\n\nexport const fieldbusItemStatus: ComputedPropertyDefinition<['device'], FieldbusItemStatusConfig> =\n {\n name: 'fieldbusItemStatus',\n contextType: ['device'],\n prop: {\n c8y_JsonSchema: {\n properties: {\n fieldbusItemStatus: {\n label: gettext('Fieldbus item status'),\n type: ['number', 'string']\n }\n }\n },\n name: 'fieldbusItemStatus',\n label: gettext('Fieldbus item status'),\n type: ['number', 'string'],\n config: {\n itemName: null,\n itemType: null,\n resultType: 'RAW_VALUE'\n } as FieldbusItemStatusConfig,\n computed: true,\n isEditable: false,\n isStandardProperty: true\n },\n loadConfigComponent: () =>\n import('./fieldbus-item-status-config.component').then(\n m => m.FieldbusItemStatusConfigComponent\n ),\n value: ({ config, context }) => fieldbusItemStatusValue(context, config)\n };\n\nexport function fieldbusItemStatusValue(\n asset: IManagedObject,\n config: FieldbusItemStatusConfig,\n metadata: ValueCallbackMetadata = { mode: 'realtime' }\n): Observable<number | string> {\n const injector = inject(Injector);\n const strategy = new FieldbusItemStatusStrategy(asset, config, injector);\n const handler = new RealtimeValueHandler(strategy);\n return handler.getValue(metadata);\n}\n","import { hookComputedProperty } from '@c8y/ngx-components/asset-properties';\nimport { lastMeasurement } from './last-measurement/last-measurement-computed-property';\nimport { childAssetsCount } from './child-count/child-assets-count-computed-property';\nimport {\n AlarmRealtimeService,\n EventRealtimeService,\n ManagedObjectRealtimeService,\n MeasurementRealtimeService,\n OperationRealtimeService\n} from '@c8y/ngx-components';\nimport { alarmCount3Months } from './alarm-count/alarm-count-3-months-computed-property';\nimport { alarmCountToday } from './alarm-count/alarm-count-today-computed-property';\nimport { eventCountToday } from './event-count/event-count-today';\nimport { eventCount3Months } from './event-count/event-count-3-months';\nimport { configurationSnapshot } from './configuration-snapshot/configuration-snapshot-computed-property';\nimport { childDevicesCount } from './child-count/child-devices-count-computed-property';\nimport { lastDeviceMessage } from './last-device-message/last-device-message-computed-property';\nimport { fieldbusItemStatus } from './fieldbus-item-status/fieldbus-item-status-computed-property';\n\nexport const computedAssetPropertiesProviders = [\n AlarmRealtimeService,\n EventRealtimeService,\n MeasurementRealtimeService,\n OperationRealtimeService,\n ManagedObjectRealtimeService,\n hookComputedProperty([\n lastMeasurement,\n lastDeviceMessage,\n childAssetsCount,\n childDevicesCount,\n alarmCount3Months,\n alarmCountToday,\n eventCountToday,\n eventCount3Months,\n configurationSnapshot,\n fieldbusItemStatus\n ])\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -59,10 +59,10 @@ class ConfigurationSnapshotConfigComponent {
59
59
  get isLegacy() {
60
60
  return this.formGroup.get('legacy')?.value;
61
61
  }
62
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ConfigurationSnapshotConfigComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
63
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: ConfigurationSnapshotConfigComponent, isStandalone: true, selector: "c8y-configuration-snapshot-config", inputs: { config: "config" }, ngImport: i0, template: "<form [formGroup]=\"formGroup\">\n <c8y-form-group class=\"m-b-8\">\n <label\n class=\"c8y-switch\"\n [title]=\"'Legacy configuration' | translate\"\n >\n <input\n type=\"checkbox\"\n formControlName=\"legacy\"\n />\n <span></span>\n <span>{{ 'Legacy configuration' | translate }}</span>\n <span class=\"sr-only\">{{ 'Legacy configuration' | translate }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n class=\"form-group-sm m-b-16\"\n *ngIf=\"!isLegacy\"\n >\n <label\n [title]=\"'Configuration type' | translate\"\n translate\n >\n Configuration type\n </label>\n <input\n class=\"form-control\"\n name=\"type\"\n type=\"text\"\n formControlName=\"type\"\n />\n <c8y-messages\n [show]=\"formGroup.controls?.type?.touched && formGroup?.controls?.type?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n</form>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: i1.MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: i1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
62
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ConfigurationSnapshotConfigComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
63
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: ConfigurationSnapshotConfigComponent, isStandalone: true, selector: "c8y-configuration-snapshot-config", inputs: { config: "config" }, ngImport: i0, template: "<form [formGroup]=\"formGroup\">\n <c8y-form-group class=\"m-b-8\">\n <label\n class=\"c8y-switch\"\n [title]=\"'Legacy configuration' | translate\"\n >\n <input\n type=\"checkbox\"\n formControlName=\"legacy\"\n />\n <span></span>\n <span>{{ 'Legacy configuration' | translate }}</span>\n <span class=\"sr-only\">{{ 'Legacy configuration' | translate }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n class=\"form-group-sm m-b-16\"\n *ngIf=\"!isLegacy\"\n >\n <label\n [title]=\"'Configuration type' | translate\"\n translate\n >\n Configuration type\n </label>\n <input\n class=\"form-control\"\n name=\"type\"\n type=\"text\"\n formControlName=\"type\"\n />\n <c8y-messages\n [show]=\"formGroup.controls?.type?.touched && formGroup?.controls?.type?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n</form>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: i1.MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: i1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
64
64
  }
65
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ConfigurationSnapshotConfigComponent, decorators: [{
65
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ConfigurationSnapshotConfigComponent, decorators: [{
66
66
  type: Component,
67
67
  args: [{ selector: 'c8y-configuration-snapshot-config', imports: [CoreModule, CommonModule, C8yTranslatePipe, ReactiveFormsModule], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<form [formGroup]=\"formGroup\">\n <c8y-form-group class=\"m-b-8\">\n <label\n class=\"c8y-switch\"\n [title]=\"'Legacy configuration' | translate\"\n >\n <input\n type=\"checkbox\"\n formControlName=\"legacy\"\n />\n <span></span>\n <span>{{ 'Legacy configuration' | translate }}</span>\n <span class=\"sr-only\">{{ 'Legacy configuration' | translate }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n class=\"form-group-sm m-b-16\"\n *ngIf=\"!isLegacy\"\n >\n <label\n [title]=\"'Configuration type' | translate\"\n translate\n >\n Configuration type\n </label>\n <input\n class=\"form-control\"\n name=\"type\"\n type=\"text\"\n formControlName=\"type\"\n />\n <c8y-messages\n [show]=\"formGroup.controls?.type?.touched && formGroup?.controls?.type?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n</form>\n" }]
68
68
  }], propDecorators: { config: [{
@@ -70,4 +70,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
70
70
  }] } });
71
71
 
72
72
  export { ConfigurationSnapshotConfigComponent };
73
- //# sourceMappingURL=c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-BOmgJI14.mjs.map
73
+ //# sourceMappingURL=c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-CbLcHjZB.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-BOmgJI14.mjs","sources":["../../computed-asset-properties/configuration-snapshot/configuration-snapshot-config.component.ts","../../computed-asset-properties/configuration-snapshot/configuration-snapshot-config.component.html"],"sourcesContent":["import { Component, DestroyRef, inject, Input, OnInit } from '@angular/core';\nimport {\n ControlContainer,\n FormBuilder,\n NgForm,\n ReactiveFormsModule,\n Validators\n} from '@angular/forms';\nimport { C8yTranslatePipe, CommonModule, CoreModule } from '@c8y/ngx-components';\nimport { Observable, startWith } from 'rxjs';\nimport { ConfigurationSnapshotConfig } from './configuration-snapshot.model';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'c8y-configuration-snapshot-config',\n templateUrl: './configuration-snapshot-config.component.html',\n imports: [CoreModule, CommonModule, C8yTranslatePipe, ReactiveFormsModule],\n viewProviders: [{ provide: ControlContainer, useExisting: NgForm }]\n})\nexport class ConfigurationSnapshotConfigComponent implements OnInit {\n @Input() config?: ConfigurationSnapshotConfig;\n formGroup: ReturnType<ConfigurationSnapshotConfigComponent['createForm']>;\n\n private formBuilder = inject(FormBuilder);\n private form = inject(NgForm);\n private destroyRef = inject(DestroyRef);\n\n ngOnInit() {\n this.initForm();\n this.setupLegacyToggle();\n }\n\n onBeforeSave(\n config?: ConfigurationSnapshotConfig\n ): boolean | Promise<boolean> | Observable<boolean> {\n if (this.formGroup.valid) {\n Object.assign(config, this.formGroup.value);\n return true;\n }\n return false;\n }\n\n private initForm(): void {\n this.formGroup = this.createForm();\n this.form.form.addControl('config', this.formGroup);\n this.formGroup.patchValue(this.config);\n }\n\n private createForm() {\n return this.formBuilder.group({\n legacy: [true, [Validators.required]],\n type: ['', []]\n });\n }\n\n private setupLegacyToggle(): void {\n this.formGroup\n .get('legacy')\n ?.valueChanges.pipe(startWith(this.isLegacy), takeUntilDestroyed(this.destroyRef))\n .subscribe(isLegacy => {\n this.updateTypeControlBasedOnLegacy(isLegacy);\n });\n }\n\n private updateTypeControlBasedOnLegacy(isLegacy: boolean): void {\n const typeControl = this.formGroup.get('type');\n\n if (isLegacy) {\n typeControl?.setValue(null);\n typeControl?.clearValidators();\n typeControl?.setErrors(null);\n } else {\n typeControl?.setValidators([Validators.required]);\n }\n\n typeControl?.updateValueAndValidity();\n }\n\n get isLegacy(): boolean {\n return this.formGroup.get('legacy')?.value;\n }\n}\n","<form [formGroup]=\"formGroup\">\n <c8y-form-group class=\"m-b-8\">\n <label\n class=\"c8y-switch\"\n [title]=\"'Legacy configuration' | translate\"\n >\n <input\n type=\"checkbox\"\n formControlName=\"legacy\"\n />\n <span></span>\n <span>{{ 'Legacy configuration' | translate }}</span>\n <span class=\"sr-only\">{{ 'Legacy configuration' | translate }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n class=\"form-group-sm m-b-16\"\n *ngIf=\"!isLegacy\"\n >\n <label\n [title]=\"'Configuration type' | translate\"\n translate\n >\n Configuration type\n </label>\n <input\n class=\"form-control\"\n name=\"type\"\n type=\"text\"\n formControlName=\"type\"\n />\n <c8y-messages\n [show]=\"formGroup.controls?.type?.touched && formGroup?.controls?.type?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n</form>\n"],"names":[],"mappings":";;;;;;;;;;MAmBa,oCAAoC,CAAA;AANjD,IAAA,WAAA,GAAA;AAUU,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AACrB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAwDxC,IAAA;IAtDC,QAAQ,GAAA;QACN,IAAI,CAAC,QAAQ,EAAE;QACf,IAAI,CAAC,iBAAiB,EAAE;IAC1B;AAEA,IAAA,YAAY,CACV,MAAoC,EAAA;AAEpC,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YACxB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAC3C,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,KAAK;IACd;IAEQ,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC;QACnD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;IACxC;IAEQ,UAAU,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAC5B,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACrC,YAAA,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;AACd,SAAA,CAAC;IACJ;IAEQ,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC;aACF,GAAG,CAAC,QAAQ;AACb,cAAE,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aAChF,SAAS,CAAC,QAAQ,IAAG;AACpB,YAAA,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CAAC;AAC/C,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,8BAA8B,CAAC,QAAiB,EAAA;QACtD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;QAE9C,IAAI,QAAQ,EAAE;AACZ,YAAA,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC;YAC3B,WAAW,EAAE,eAAe,EAAE;AAC9B,YAAA,WAAW,EAAE,SAAS,CAAC,IAAI,CAAC;QAC9B;aAAO;YACL,WAAW,EAAE,aAAa,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACnD;QAEA,WAAW,EAAE,sBAAsB,EAAE;IACvC;AAEA,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK;IAC5C;+GA7DW,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oCAAoC,2HCnBjD,27BAqCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDrBY,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iCAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,8BAAoB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAC1D,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAA,CAAA,CAAA;;4FAExD,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBANhD,SAAS;+BACE,mCAAmC,EAAA,OAAA,EAEpC,CAAC,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,iBAC3D,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAA,QAAA,EAAA,27BAAA,EAAA;;sBAGlE;;;;;"}
1
+ {"version":3,"file":"c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-CbLcHjZB.mjs","sources":["../../computed-asset-properties/configuration-snapshot/configuration-snapshot-config.component.ts","../../computed-asset-properties/configuration-snapshot/configuration-snapshot-config.component.html"],"sourcesContent":["import { Component, DestroyRef, inject, Input, OnInit } from '@angular/core';\nimport {\n ControlContainer,\n FormBuilder,\n NgForm,\n ReactiveFormsModule,\n Validators\n} from '@angular/forms';\nimport { C8yTranslatePipe, CommonModule, CoreModule } from '@c8y/ngx-components';\nimport { Observable, startWith } from 'rxjs';\nimport { ConfigurationSnapshotConfig } from './configuration-snapshot.model';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'c8y-configuration-snapshot-config',\n templateUrl: './configuration-snapshot-config.component.html',\n imports: [CoreModule, CommonModule, C8yTranslatePipe, ReactiveFormsModule],\n viewProviders: [{ provide: ControlContainer, useExisting: NgForm }]\n})\nexport class ConfigurationSnapshotConfigComponent implements OnInit {\n @Input() config?: ConfigurationSnapshotConfig;\n formGroup: ReturnType<ConfigurationSnapshotConfigComponent['createForm']>;\n\n private formBuilder = inject(FormBuilder);\n private form = inject(NgForm);\n private destroyRef = inject(DestroyRef);\n\n ngOnInit() {\n this.initForm();\n this.setupLegacyToggle();\n }\n\n onBeforeSave(\n config?: ConfigurationSnapshotConfig\n ): boolean | Promise<boolean> | Observable<boolean> {\n if (this.formGroup.valid) {\n Object.assign(config, this.formGroup.value);\n return true;\n }\n return false;\n }\n\n private initForm(): void {\n this.formGroup = this.createForm();\n this.form.form.addControl('config', this.formGroup);\n this.formGroup.patchValue(this.config);\n }\n\n private createForm() {\n return this.formBuilder.group({\n legacy: [true, [Validators.required]],\n type: ['', []]\n });\n }\n\n private setupLegacyToggle(): void {\n this.formGroup\n .get('legacy')\n ?.valueChanges.pipe(startWith(this.isLegacy), takeUntilDestroyed(this.destroyRef))\n .subscribe(isLegacy => {\n this.updateTypeControlBasedOnLegacy(isLegacy);\n });\n }\n\n private updateTypeControlBasedOnLegacy(isLegacy: boolean): void {\n const typeControl = this.formGroup.get('type');\n\n if (isLegacy) {\n typeControl?.setValue(null);\n typeControl?.clearValidators();\n typeControl?.setErrors(null);\n } else {\n typeControl?.setValidators([Validators.required]);\n }\n\n typeControl?.updateValueAndValidity();\n }\n\n get isLegacy(): boolean {\n return this.formGroup.get('legacy')?.value;\n }\n}\n","<form [formGroup]=\"formGroup\">\n <c8y-form-group class=\"m-b-8\">\n <label\n class=\"c8y-switch\"\n [title]=\"'Legacy configuration' | translate\"\n >\n <input\n type=\"checkbox\"\n formControlName=\"legacy\"\n />\n <span></span>\n <span>{{ 'Legacy configuration' | translate }}</span>\n <span class=\"sr-only\">{{ 'Legacy configuration' | translate }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n class=\"form-group-sm m-b-16\"\n *ngIf=\"!isLegacy\"\n >\n <label\n [title]=\"'Configuration type' | translate\"\n translate\n >\n Configuration type\n </label>\n <input\n class=\"form-control\"\n name=\"type\"\n type=\"text\"\n formControlName=\"type\"\n />\n <c8y-messages\n [show]=\"formGroup.controls?.type?.touched && formGroup?.controls?.type?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n</form>\n"],"names":[],"mappings":"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"}
@@ -30,10 +30,10 @@ class ComputedPropertyEventCountConfigComponent {
30
30
  type: ['', [Validators.required]]
31
31
  });
32
32
  }
33
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ComputedPropertyEventCountConfigComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
34
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: ComputedPropertyEventCountConfigComponent, isStandalone: true, selector: "c8y-event-count-config", inputs: { config: "config" }, ngImport: i0, template: "<form class=\"row d-flex-md\" [formGroup]=\"formGroup\">\n <div class=\"col-md-6\">\n <c8y-form-group class=\"m-b-16\">\n <label\n [title]=\"'Event type' | translate\"\n translate\n >\n Event type\n </label>\n <input\n class=\"form-control\"\n name=\"type\"\n type=\"string\"\n formControlName=\"type\"\n placeholder=\"{{ 'e.g. {{ example }}' | translate: { example: 'c8y_LocationUpdate' } }}\"\n />\n <c8y-messages\n [show]=\"formGroup.controls?.type?.touched && formGroup?.controls?.type?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n</form>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: i1.MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: i1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ComputedPropertyEventCountConfigComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
34
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: ComputedPropertyEventCountConfigComponent, isStandalone: true, selector: "c8y-event-count-config", inputs: { config: "config" }, ngImport: i0, template: "<form class=\"row d-flex-md\" [formGroup]=\"formGroup\">\n <div class=\"col-md-6\">\n <c8y-form-group class=\"m-b-16\">\n <label\n [title]=\"'Event type' | translate\"\n translate\n >\n Event type\n </label>\n <input\n class=\"form-control\"\n name=\"type\"\n type=\"string\"\n formControlName=\"type\"\n placeholder=\"{{ 'e.g. {{ example }}' | translate: { example: 'c8y_LocationUpdate' } }}\"\n />\n <c8y-messages\n [show]=\"formGroup.controls?.type?.touched && formGroup?.controls?.type?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n</form>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: i1.MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: i1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
35
35
  }
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ComputedPropertyEventCountConfigComponent, decorators: [{
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ComputedPropertyEventCountConfigComponent, decorators: [{
37
37
  type: Component,
38
38
  args: [{ selector: 'c8y-event-count-config', imports: [CoreModule, CommonModule, C8yTranslatePipe, ReactiveFormsModule], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<form class=\"row d-flex-md\" [formGroup]=\"formGroup\">\n <div class=\"col-md-6\">\n <c8y-form-group class=\"m-b-16\">\n <label\n [title]=\"'Event type' | translate\"\n translate\n >\n Event type\n </label>\n <input\n class=\"form-control\"\n name=\"type\"\n type=\"string\"\n formControlName=\"type\"\n placeholder=\"{{ 'e.g. {{ example }}' | translate: { example: 'c8y_LocationUpdate' } }}\"\n />\n <c8y-messages\n [show]=\"formGroup.controls?.type?.touched && formGroup?.controls?.type?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n</form>\n" }]
39
39
  }], propDecorators: { config: [{
@@ -41,4 +41,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
41
41
  }] } });
42
42
 
43
43
  export { ComputedPropertyEventCountConfigComponent };
44
- //# sourceMappingURL=c8y-ngx-components-computed-asset-properties-event-count-config.component-CaTb9cph.mjs.map
44
+ //# sourceMappingURL=c8y-ngx-components-computed-asset-properties-event-count-config.component-DSWgAtkH.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-computed-asset-properties-event-count-config.component-CaTb9cph.mjs","sources":["../../computed-asset-properties/event-count/event-count-config.component.ts","../../computed-asset-properties/event-count/event-count-config.component.html"],"sourcesContent":["import { Component, inject, Input, OnInit } from '@angular/core';\nimport {\n ControlContainer,\n FormBuilder,\n FormGroup,\n NgForm,\n ReactiveFormsModule,\n Validators\n} from '@angular/forms';\nimport { C8yTranslatePipe, CommonModule, CoreModule } from '@c8y/ngx-components';\n\nimport { EventCountConfig } from './event-count.model';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'c8y-event-count-config',\n templateUrl: './event-count-config.component.html',\n imports: [CoreModule, CommonModule, C8yTranslatePipe, ReactiveFormsModule],\n viewProviders: [{ provide: ControlContainer, useExisting: NgForm }]\n})\nexport class ComputedPropertyEventCountConfigComponent implements OnInit {\n @Input() config?: EventCountConfig;\n formGroup: FormGroup;\n\n private formBuilder = inject(FormBuilder);\n private form = inject(NgForm);\n\n ngOnInit(): void {\n this.initForm();\n }\n\n onBeforeSave(config?: EventCountConfig): boolean | Promise<boolean> | Observable<boolean> {\n if (this.formGroup.valid) {\n Object.assign(config, this.formGroup.value);\n return true;\n }\n return false;\n }\n\n private initForm(): void {\n this.formGroup = this.createForm();\n this.form.form.addControl('config', this.formGroup);\n this.formGroup.patchValue(this.config);\n }\n\n private createForm() {\n return this.formBuilder.group({\n type: ['', [Validators.required]]\n });\n }\n}\n","<form class=\"row d-flex-md\" [formGroup]=\"formGroup\">\n <div class=\"col-md-6\">\n <c8y-form-group class=\"m-b-16\">\n <label\n [title]=\"'Event type' | translate\"\n translate\n >\n Event type\n </label>\n <input\n class=\"form-control\"\n name=\"type\"\n type=\"string\"\n formControlName=\"type\"\n placeholder=\"{{ 'e.g. {{ example }}' | translate: { example: 'c8y_LocationUpdate' } }}\"\n />\n <c8y-messages\n [show]=\"formGroup.controls?.type?.touched && formGroup?.controls?.type?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n</form>\n"],"names":["i2"],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-computed-asset-properties-event-count-config.component-DSWgAtkH.mjs","sources":["../../computed-asset-properties/event-count/event-count-config.component.ts","../../computed-asset-properties/event-count/event-count-config.component.html"],"sourcesContent":["import { Component, inject, Input, OnInit } from '@angular/core';\nimport {\n ControlContainer,\n FormBuilder,\n FormGroup,\n NgForm,\n ReactiveFormsModule,\n Validators\n} from '@angular/forms';\nimport { C8yTranslatePipe, CommonModule, CoreModule } from '@c8y/ngx-components';\n\nimport { EventCountConfig } from './event-count.model';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'c8y-event-count-config',\n templateUrl: './event-count-config.component.html',\n imports: [CoreModule, CommonModule, C8yTranslatePipe, ReactiveFormsModule],\n viewProviders: [{ provide: ControlContainer, useExisting: NgForm }]\n})\nexport class ComputedPropertyEventCountConfigComponent implements OnInit {\n @Input() config?: EventCountConfig;\n formGroup: FormGroup;\n\n private formBuilder = inject(FormBuilder);\n private form = inject(NgForm);\n\n ngOnInit(): void {\n this.initForm();\n }\n\n onBeforeSave(config?: EventCountConfig): boolean | Promise<boolean> | Observable<boolean> {\n if (this.formGroup.valid) {\n Object.assign(config, this.formGroup.value);\n return true;\n }\n return false;\n }\n\n private initForm(): void {\n this.formGroup = this.createForm();\n this.form.form.addControl('config', this.formGroup);\n this.formGroup.patchValue(this.config);\n }\n\n private createForm() {\n return this.formBuilder.group({\n type: ['', [Validators.required]]\n });\n }\n}\n","<form class=\"row d-flex-md\" [formGroup]=\"formGroup\">\n <div class=\"col-md-6\">\n <c8y-form-group class=\"m-b-16\">\n <label\n [title]=\"'Event type' | translate\"\n translate\n >\n Event type\n </label>\n <input\n class=\"form-control\"\n name=\"type\"\n type=\"string\"\n formControlName=\"type\"\n placeholder=\"{{ 'e.g. {{ example }}' | translate: { example: 'c8y_LocationUpdate' } }}\"\n />\n <c8y-messages\n [show]=\"formGroup.controls?.type?.touched && formGroup?.controls?.type?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n</form>\n"],"names":["i2"],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, Input, Component } from '@angular/core';
3
+ import * as i3 from '@angular/forms';
4
+ import { FormBuilder, NgForm, Validators, ControlContainer, ReactiveFormsModule } from '@angular/forms';
5
+ import * as i1 from '@c8y/ngx-components';
6
+ import { CoreModule, CommonModule, C8yTranslatePipe } from '@c8y/ngx-components';
7
+ import { gettext } from '@c8y/ngx-components/gettext';
8
+ import { R as RESULT_TYPES, F as FieldbusService } from './c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-BxmSKHiM.mjs';
9
+ import * as i2 from '@angular/common';
10
+
11
+ class FieldbusItemStatusConfigComponent {
12
+ constructor() {
13
+ this.resultTypes = RESULT_TYPES;
14
+ this.groupedItems = [];
15
+ this.fieldbusService = inject(FieldbusService);
16
+ this.formBuilder = inject(FormBuilder);
17
+ this.form = inject(NgForm);
18
+ }
19
+ ngOnInit() {
20
+ this.initForm();
21
+ }
22
+ async ngOnChanges(changes) {
23
+ if (changes['asset'] && this.asset) {
24
+ try {
25
+ this.deviceType = await this.fieldbusService.getDeviceTypeOf(this.asset);
26
+ this.buildGroupedItemsFromDeviceType();
27
+ this.patchFormFromConfig();
28
+ }
29
+ catch (err) {
30
+ this.deviceType = null;
31
+ this.groupedItems = [];
32
+ this.formGroup.reset();
33
+ }
34
+ }
35
+ if (changes['config'] && this.config) {
36
+ this.patchFormFromConfig();
37
+ }
38
+ }
39
+ ngOnDestroy() {
40
+ this.form.form.removeControl('config');
41
+ }
42
+ onBeforeSave(config) {
43
+ if (this.formGroup.valid) {
44
+ Object.assign(config, this.formToConfig());
45
+ return true;
46
+ }
47
+ return false;
48
+ }
49
+ initForm() {
50
+ this.formGroup = this.createForm();
51
+ this.form.form.addControl('config', this.formGroup);
52
+ this.formGroup.patchValue({ item: null, resultType: RESULT_TYPES.RAW_VALUE.value });
53
+ this.patchFormFromConfig();
54
+ }
55
+ createForm() {
56
+ return this.formBuilder.group({
57
+ item: [null, [Validators.required]],
58
+ resultType: ['', [Validators.required]]
59
+ });
60
+ }
61
+ formToConfig() {
62
+ const formValue = this.formGroup.value;
63
+ if (!formValue.item)
64
+ return null;
65
+ const item = formValue.item;
66
+ const itemName = item.name;
67
+ const itemType = this.groupedItems.find(g => g.items.includes(item))?.type;
68
+ const resultType = formValue.resultType;
69
+ return { itemName, itemType, resultType };
70
+ }
71
+ patchFormFromConfig() {
72
+ if (!this.config || !this.groupedItems.length || !this.formGroup)
73
+ return;
74
+ const { itemType, itemName, resultType } = this.config;
75
+ let foundItem = null;
76
+ for (const group of this.groupedItems) {
77
+ foundItem = group.items.find(item => group.type === itemType && item.name === itemName);
78
+ if (foundItem)
79
+ break;
80
+ }
81
+ if (foundItem) {
82
+ this.formGroup.patchValue({ item: foundItem, resultType });
83
+ }
84
+ else {
85
+ this.formGroup.patchValue({ item: null, resultType: RESULT_TYPES.RAW_VALUE.value });
86
+ }
87
+ }
88
+ buildGroupedItemsFromDeviceType() {
89
+ this.groupedItems = [];
90
+ if (!this.deviceType)
91
+ return;
92
+ if (this.deviceType.c8y_Coils?.length) {
93
+ this.groupedItems.push({
94
+ type: 'c8y_Coil',
95
+ label: gettext('Coils'),
96
+ items: this.deviceType.c8y_Coils
97
+ });
98
+ }
99
+ if (this.deviceType.c8y_Registers?.length) {
100
+ this.groupedItems.push({
101
+ type: 'c8y_Register',
102
+ label: gettext('Registers'),
103
+ items: this.deviceType.c8y_Registers
104
+ });
105
+ }
106
+ }
107
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: FieldbusItemStatusConfigComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
108
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: FieldbusItemStatusConfigComponent, isStandalone: true, selector: "c8y-fieldbus-item-status-config", inputs: { config: "config", asset: "asset" }, usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"formGroup\">\n <div class=\"d-flex-md row\">\n <div class=\"col-md-6\">\n <c8y-form-group style=\"padding-top: var(--c8y-font-size-base)\">\n <label for=\"fieldbusItem\">{{ 'Fieldbus item' | translate }}</label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"fieldbusItem\"\n formControlName=\"item\"\n >\n @for (group of groupedItems; track group.label) {\n <optgroup [label]=\"group.label | translate\">\n @for (item of group.items; track item.name) {\n <option [ngValue]=\"item\">\n {{ item.name }}\n </option>\n }\n </optgroup>\n }\n </select>\n </div>\n <c8y-messages\n [show]=\"formGroup.controls?.item?.touched ? formGroup?.controls?.item?.errors : {}\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n <div class=\"col-md-6\">\n <c8y-form-group style=\"padding-top: var(--c8y-font-size-base)\">\n <label for=\"resultType\">{{ 'Result type' | translate }}</label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"resultType\"\n formControlName=\"resultType\"\n >\n @for (resultType of resultTypes | keyvalue; track resultType.key) {\n <option [ngValue]=\"resultType.value.value\">\n {{ resultType.value.label | translate }}\n </option>\n }\n </select>\n </div>\n </c8y-form-group>\n </div>\n </div>\n</form>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: i1.MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.KeyValuePipe, name: "keyvalue" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
109
+ }
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: FieldbusItemStatusConfigComponent, decorators: [{
111
+ type: Component,
112
+ args: [{ selector: 'c8y-fieldbus-item-status-config', imports: [CoreModule, CommonModule, C8yTranslatePipe, ReactiveFormsModule], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<form [formGroup]=\"formGroup\">\n <div class=\"d-flex-md row\">\n <div class=\"col-md-6\">\n <c8y-form-group style=\"padding-top: var(--c8y-font-size-base)\">\n <label for=\"fieldbusItem\">{{ 'Fieldbus item' | translate }}</label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"fieldbusItem\"\n formControlName=\"item\"\n >\n @for (group of groupedItems; track group.label) {\n <optgroup [label]=\"group.label | translate\">\n @for (item of group.items; track item.name) {\n <option [ngValue]=\"item\">\n {{ item.name }}\n </option>\n }\n </optgroup>\n }\n </select>\n </div>\n <c8y-messages\n [show]=\"formGroup.controls?.item?.touched ? formGroup?.controls?.item?.errors : {}\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n <div class=\"col-md-6\">\n <c8y-form-group style=\"padding-top: var(--c8y-font-size-base)\">\n <label for=\"resultType\">{{ 'Result type' | translate }}</label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"resultType\"\n formControlName=\"resultType\"\n >\n @for (resultType of resultTypes | keyvalue; track resultType.key) {\n <option [ngValue]=\"resultType.value.value\">\n {{ resultType.value.label | translate }}\n </option>\n }\n </select>\n </div>\n </c8y-form-group>\n </div>\n </div>\n</form>\n" }]
113
+ }], propDecorators: { config: [{
114
+ type: Input
115
+ }], asset: [{
116
+ type: Input
117
+ }] } });
118
+
119
+ export { FieldbusItemStatusConfigComponent };
120
+ //# sourceMappingURL=c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-CYskL4Lc.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-CYskL4Lc.mjs","sources":["../../computed-asset-properties/fieldbus-item-status/fieldbus-item-status-config.component.ts","../../computed-asset-properties/fieldbus-item-status/fieldbus-item-status-config.component.html"],"sourcesContent":["import {\n Component,\n inject,\n Input,\n OnInit,\n OnChanges,\n SimpleChanges,\n OnDestroy\n} from '@angular/core';\nimport {\n ControlContainer,\n FormBuilder,\n NgForm,\n ReactiveFormsModule,\n Validators\n} from '@angular/forms';\nimport { IManagedObject } from '@c8y/client';\nimport { C8yTranslatePipe, CommonModule, CoreModule } from '@c8y/ngx-components';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n FieldbusCoil,\n FieldbusDeviceType,\n FieldbusItemStatusConfig,\n FieldbusRegister,\n RESULT_TYPES\n} from './fieldbus-item-status.model';\nimport { FieldbusService } from './fieldbus.service';\nimport { Observable } from 'rxjs';\n\ntype FieldbusItemsGroup = {\n type: 'c8y_Coil' | 'c8y_Register';\n label: string;\n items: (FieldbusCoil | FieldbusRegister)[];\n};\n\n@Component({\n selector: 'c8y-fieldbus-item-status-config',\n templateUrl: './fieldbus-item-status-config.component.html',\n imports: [CoreModule, CommonModule, C8yTranslatePipe, ReactiveFormsModule],\n viewProviders: [{ provide: ControlContainer, useExisting: NgForm }]\n})\nexport class FieldbusItemStatusConfigComponent implements OnInit, OnChanges, OnDestroy {\n @Input() config?: FieldbusItemStatusConfig;\n @Input() asset?: IManagedObject;\n\n resultTypes = RESULT_TYPES;\n formGroup: ReturnType<FieldbusItemStatusConfigComponent['createForm']>;\n groupedItems: FieldbusItemsGroup[] = [];\n private deviceType: FieldbusDeviceType;\n\n private fieldbusService = inject(FieldbusService);\n private formBuilder = inject(FormBuilder);\n private form = inject(NgForm);\n\n ngOnInit() {\n this.initForm();\n }\n\n async ngOnChanges(changes: SimpleChanges) {\n if (changes['asset'] && this.asset) {\n try {\n this.deviceType = await this.fieldbusService.getDeviceTypeOf(this.asset);\n this.buildGroupedItemsFromDeviceType();\n this.patchFormFromConfig();\n } catch (err) {\n this.deviceType = null;\n this.groupedItems = [];\n this.formGroup.reset();\n }\n }\n\n if (changes['config'] && this.config) {\n this.patchFormFromConfig();\n }\n }\n\n ngOnDestroy() {\n this.form.form.removeControl('config');\n }\n\n onBeforeSave(\n config?: FieldbusItemStatusConfig\n ): boolean | Promise<boolean> | Observable<boolean> {\n if (this.formGroup.valid) {\n Object.assign(config, this.formToConfig());\n return true;\n }\n return false;\n }\n\n private initForm(): void {\n this.formGroup = this.createForm();\n this.form.form.addControl('config', this.formGroup);\n this.formGroup.patchValue({ item: null, resultType: RESULT_TYPES.RAW_VALUE.value });\n this.patchFormFromConfig();\n }\n\n private createForm() {\n return this.formBuilder.group({\n item: [null, [Validators.required]],\n resultType: ['', [Validators.required]]\n });\n }\n\n private formToConfig(): FieldbusItemStatusConfig {\n const formValue = this.formGroup.value;\n if (!formValue.item) return null;\n const item = formValue.item as FieldbusCoil | FieldbusRegister;\n const itemName = item.name;\n const itemType = this.groupedItems.find(g => g.items.includes(item))?.type;\n const resultType = formValue.resultType as keyof typeof RESULT_TYPES;\n return { itemName, itemType, resultType };\n }\n\n private patchFormFromConfig(): void {\n if (!this.config || !this.groupedItems.length || !this.formGroup) return;\n const { itemType, itemName, resultType } = this.config;\n let foundItem = null;\n for (const group of this.groupedItems) {\n foundItem = group.items.find(item => group.type === itemType && item.name === itemName);\n if (foundItem) break;\n }\n if (foundItem) {\n this.formGroup.patchValue({ item: foundItem, resultType });\n } else {\n this.formGroup.patchValue({ item: null, resultType: RESULT_TYPES.RAW_VALUE.value });\n }\n }\n\n private buildGroupedItemsFromDeviceType() {\n this.groupedItems = [];\n if (!this.deviceType) return;\n if (this.deviceType.c8y_Coils?.length) {\n this.groupedItems.push({\n type: 'c8y_Coil',\n label: gettext('Coils'),\n items: this.deviceType.c8y_Coils\n });\n }\n if (this.deviceType.c8y_Registers?.length) {\n this.groupedItems.push({\n type: 'c8y_Register',\n label: gettext('Registers'),\n items: this.deviceType.c8y_Registers\n });\n }\n }\n}\n","<form [formGroup]=\"formGroup\">\n <div class=\"d-flex-md row\">\n <div class=\"col-md-6\">\n <c8y-form-group style=\"padding-top: var(--c8y-font-size-base)\">\n <label for=\"fieldbusItem\">{{ 'Fieldbus item' | translate }}</label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"fieldbusItem\"\n formControlName=\"item\"\n >\n @for (group of groupedItems; track group.label) {\n <optgroup [label]=\"group.label | translate\">\n @for (item of group.items; track item.name) {\n <option [ngValue]=\"item\">\n {{ item.name }}\n </option>\n }\n </optgroup>\n }\n </select>\n </div>\n <c8y-messages\n [show]=\"formGroup.controls?.item?.touched ? formGroup?.controls?.item?.errors : {}\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n <div class=\"col-md-6\">\n <c8y-form-group style=\"padding-top: var(--c8y-font-size-base)\">\n <label for=\"resultType\">{{ 'Result type' | translate }}</label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"resultType\"\n formControlName=\"resultType\"\n >\n @for (resultType of resultTypes | keyvalue; track resultType.key) {\n <option [ngValue]=\"resultType.value.value\">\n {{ resultType.value.label | translate }}\n </option>\n }\n </select>\n </div>\n </c8y-form-group>\n </div>\n </div>\n</form>\n"],"names":["i1","i2","i3"],"mappings":";;;;;;;;;;MAyCa,iCAAiC,CAAA;AAN9C,IAAA,WAAA,GAAA;QAUE,IAAA,CAAA,WAAW,GAAG,YAAY;QAE1B,IAAA,CAAA,YAAY,GAAyB,EAAE;AAG/B,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AA+F9B,IAAA;IA7FC,QAAQ,GAAA;QACN,IAAI,CAAC,QAAQ,EAAE;IACjB;IAEA,MAAM,WAAW,CAAC,OAAsB,EAAA;QACtC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE;AAClC,YAAA,IAAI;AACF,gBAAA,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;gBACxE,IAAI,CAAC,+BAA+B,EAAE;gBACtC,IAAI,CAAC,mBAAmB,EAAE;YAC5B;YAAE,OAAO,GAAG,EAAE;AACZ,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,gBAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YACxB;QACF;QAEA,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;YACpC,IAAI,CAAC,mBAAmB,EAAE;QAC5B;IACF;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;IACxC;AAEA,IAAA,YAAY,CACV,MAAiC,EAAA;AAEjC,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YACxB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1C,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,KAAK;IACd;IAEQ,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC;AACnD,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACnF,IAAI,CAAC,mBAAmB,EAAE;IAC5B;IAEQ,UAAU,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAC5B,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACnC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;AACvC,SAAA,CAAC;IACJ;IAEQ,YAAY,GAAA;AAClB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK;QACtC,IAAI,CAAC,SAAS,CAAC,IAAI;AAAE,YAAA,OAAO,IAAI;AAChC,QAAA,MAAM,IAAI,GAAG,SAAS,CAAC,IAAuC;AAC9D,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI;AAC1E,QAAA,MAAM,UAAU,GAAG,SAAS,CAAC,UAAuC;AACpE,QAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE;IAC3C;IAEQ,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE;QAClE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,MAAM;QACtD,IAAI,SAAS,GAAG,IAAI;AACpB,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE;YACrC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC;AACvF,YAAA,IAAI,SAAS;gBAAE;QACjB;QACA,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;QAC5D;aAAO;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACrF;IACF;IAEQ,+BAA+B,GAAA;AACrC,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;QACtB,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE;QACtB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE;AACrC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC;AACvB,gBAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC;AACxB,aAAA,CAAC;QACJ;QACA,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE;AACzC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC;AAC3B,gBAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC;AACxB,aAAA,CAAC;QACJ;IACF;+GAzGW,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iCAAiC,8JCzC9C,krDA+CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDTY,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,8BAAoB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,aAAA,EAC1D,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAA,CAAA,CAAA;;4FAExD,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAN7C,SAAS;+BACE,iCAAiC,EAAA,OAAA,EAElC,CAAC,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,iBAC3D,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAA,QAAA,EAAA,krDAAA,EAAA;;sBAGlE;;sBACA;;;;;"}
@@ -42,6 +42,7 @@ class ComputedPropertyLastMeasurementConfigComponent {
42
42
  ngOnInit() {
43
43
  if (this.asset) {
44
44
  this.datapointSelectionConfig.contextAsset = this.asset;
45
+ this.datapointSelectionConfig.allowChangingContext = false;
45
46
  }
46
47
  this.initForm();
47
48
  }
@@ -69,10 +70,10 @@ class ComputedPropertyLastMeasurementConfigComponent {
69
70
  ])
70
71
  });
71
72
  }
72
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ComputedPropertyLastMeasurementConfigComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
73
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: ComputedPropertyLastMeasurementConfigComponent, isStandalone: true, selector: "c8y-last-measurement-config", inputs: { config: "config", asset: "asset" }, ngImport: i0, template: "\n<form [formGroup]=\"formGroup\">\n <div class=\"d-flex-md row\">\n <div class=\"col-md-6\">\n <div class=\"form-group\" style=\"padding-top: var(--c8y-font-size-base)\">\n <label for=\"resultType\">{{ 'Result type' | translate }}</label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"resultType\"\n formControlName=\"resultType\"\n >\n <option\n *ngFor=\"let type of resultTypes | keyvalue\"\n [ngValue]=\"type.value.value\"\n >\n {{ type.value.label | translate }}\n </option>\n </select>\n </div>\n </div>\n </div>\n <div class=\"col-md-6 no-card-context\">\n <c8y-datapoint-selection-list\n class=\"bg-inherit\"\n name=\"dp\"\n [config]=\"datapointSelectionConfig\"\n [minActiveCount]=\"minSelectCount\"\n [maxActiveCount]=\"maxSelectCount\"\n formControlName=\"dp\"\n ></c8y-datapoint-selection-list>\n </div>\n </div>\n</form>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: DatapointSelectorModule }, { kind: "component", type: i3$1.DatapointSelectionListComponent, selector: "c8y-datapoint-selection-list", inputs: ["actions", "allowDragAndDrop", "config", "defaultFormOptions", "maxActiveCount", "minActiveCount", "resolveContext", "listTitle"], outputs: ["isValid", "change"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.KeyValuePipe, name: "keyvalue" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
73
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ComputedPropertyLastMeasurementConfigComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
74
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: ComputedPropertyLastMeasurementConfigComponent, isStandalone: true, selector: "c8y-last-measurement-config", inputs: { config: "config", asset: "asset" }, ngImport: i0, template: "\n<form [formGroup]=\"formGroup\">\n <div class=\"d-flex-md row\">\n <div class=\"col-md-6\">\n <div class=\"form-group\" style=\"padding-top: var(--c8y-font-size-base)\">\n <label for=\"resultType\">{{ 'Result type' | translate }}</label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"resultType\"\n formControlName=\"resultType\"\n >\n <option\n *ngFor=\"let type of resultTypes | keyvalue\"\n [ngValue]=\"type.value.value\"\n >\n {{ type.value.label | translate }}\n </option>\n </select>\n </div>\n </div>\n </div>\n <div class=\"col-md-6 no-card-context\">\n <c8y-datapoint-selection-list\n class=\"bg-inherit\"\n name=\"dp\"\n [config]=\"datapointSelectionConfig\"\n [minActiveCount]=\"minSelectCount\"\n [maxActiveCount]=\"maxSelectCount\"\n formControlName=\"dp\"\n ></c8y-datapoint-selection-list>\n </div>\n </div>\n</form>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: DatapointSelectorModule }, { kind: "component", type: i3$1.DatapointSelectionListComponent, selector: "c8y-datapoint-selection-list", inputs: ["actions", "allowDragAndDrop", "config", "defaultFormOptions", "maxActiveCount", "minActiveCount", "resolveContext", "listTitle", "removeTitle"], outputs: ["isValid", "change"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.KeyValuePipe, name: "keyvalue" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
74
75
  }
75
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ComputedPropertyLastMeasurementConfigComponent, decorators: [{
76
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ComputedPropertyLastMeasurementConfigComponent, decorators: [{
76
77
  type: Component,
77
78
  args: [{ selector: 'c8y-last-measurement-config', imports: [
78
79
  CoreModule,
@@ -88,4 +89,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
88
89
  }] } });
89
90
 
90
91
  export { ComputedPropertyLastMeasurementConfigComponent, exactlyASingleDatapointActive };
91
- //# sourceMappingURL=c8y-ngx-components-computed-asset-properties-last-measurement-config.component-DkrSvf9F.mjs.map
92
+ //# sourceMappingURL=c8y-ngx-components-computed-asset-properties-last-measurement-config.component-CDFNPo4q.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"c8y-ngx-components-computed-asset-properties-last-measurement-config.component-CDFNPo4q.mjs","sources":["../../computed-asset-properties/last-measurement/last-measurement.model.ts","../../computed-asset-properties/last-measurement/last-measurement-config.component.ts","../../computed-asset-properties/last-measurement/last-measurement-config.component.html"],"sourcesContent":["import { KPIDetails } from '@c8y/ngx-components/datapoint-selector';\nimport { gettext } from '@c8y/ngx-components/gettext';\n\nexport const RESULT_TYPES = {\n VALUE: { name: 'VALUE', value: 1, label: gettext('Only value') },\n VALUE_UNIT: { name: 'VALUE_UNIT', value: 2, label: gettext('Value and unit') },\n VALUE_UNIT_TIME: { name: 'VALUE_UNIT_TIME', value: 3, label: gettext('Value, unit and time') },\n OBJECT: { name: 'OBJECT', value: 4, label: gettext('Complete object') }\n};\n\nexport type LastMeasurementConfig = {\n dp: KPIDetails[];\n resultType: number;\n};\n","import { Component, inject, Input, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n ControlContainer,\n FormBuilder,\n NgForm,\n ReactiveFormsModule,\n ValidationErrors,\n ValidatorFn,\n Validators\n} from '@angular/forms';\nimport { IManagedObject } from '@c8y/client';\nimport { C8yTranslatePipe, CommonModule, CoreModule } from '@c8y/ngx-components';\nimport {\n DatapointSelectorModalOptions,\n DatapointSelectorModule,\n KPIDetails\n} from '@c8y/ngx-components/datapoint-selector';\nimport { Observable } from 'rxjs';\nimport { LastMeasurementConfig, RESULT_TYPES } from './last-measurement.model';\n\nexport function exactlyASingleDatapointActive(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const datapoints: KPIDetails[] = control.value;\n\n if (!datapoints || !datapoints.length) {\n return null;\n }\n\n const activeDatapoints = datapoints.filter(datapoint => datapoint.__active);\n\n if (activeDatapoints.length === 1) {\n return null;\n }\n\n return { exactlyOneDatapointNeedsToBeActive: true };\n };\n}\n\n@Component({\n selector: 'c8y-last-measurement-config',\n templateUrl: './last-measurement-config.component.html',\n imports: [\n CoreModule,\n DatapointSelectorModule,\n CommonModule,\n C8yTranslatePipe,\n ReactiveFormsModule\n ],\n viewProviders: [{ provide: ControlContainer, useExisting: NgForm }]\n})\nexport class ComputedPropertyLastMeasurementConfigComponent implements OnInit {\n @Input() config?: LastMeasurementConfig;\n @Input() asset?: IManagedObject;\n formGroup: ReturnType<ComputedPropertyLastMeasurementConfigComponent['createForm']>;\n datapointSelectionConfig: Partial<DatapointSelectorModalOptions> = {};\n\n private formBuilder = inject(FormBuilder);\n private form = inject(NgForm);\n\n selectedProperty: IManagedObject[] = [];\n minSelectCount = 1;\n maxSelectCount = 1;\n resultTypes = RESULT_TYPES;\n\n ngOnInit() {\n if (this.asset) {\n this.datapointSelectionConfig.contextAsset = this.asset;\n this.datapointSelectionConfig.allowChangingContext = false;\n }\n this.initForm();\n }\n\n onBeforeSave(config?: LastMeasurementConfig): boolean | Promise<boolean> | Observable<boolean> {\n if (this.formGroup.valid) {\n Object.assign(config, this.formGroup.value);\n config.dp = config.dp.filter(d => d.__active);\n config.dp[0].__target = { id: config.dp[0].__target.id, name: config.dp[0].__target.name };\n return true;\n }\n return false;\n }\n\n private initForm(): void {\n this.formGroup = this.createForm();\n this.form.form.addControl('config', this.formGroup);\n this.formGroup.patchValue(this.config);\n }\n\n private createForm() {\n return this.formBuilder.group({\n resultType: [this.resultTypes.VALUE.value, [Validators.required]],\n dp: this.formBuilder.control(new Array<KPIDetails>(), [\n Validators.required,\n Validators.minLength(1),\n exactlyASingleDatapointActive()\n ])\n });\n }\n}\n","\n<form [formGroup]=\"formGroup\">\n <div class=\"d-flex-md row\">\n <div class=\"col-md-6\">\n <div class=\"form-group\" style=\"padding-top: var(--c8y-font-size-base)\">\n <label for=\"resultType\">{{ 'Result type' | translate }}</label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"resultType\"\n formControlName=\"resultType\"\n >\n <option\n *ngFor=\"let type of resultTypes | keyvalue\"\n [ngValue]=\"type.value.value\"\n >\n {{ type.value.label | translate }}\n </option>\n </select>\n </div>\n </div>\n </div>\n <div class=\"col-md-6 no-card-context\">\n <c8y-datapoint-selection-list\n class=\"bg-inherit\"\n name=\"dp\"\n [config]=\"datapointSelectionConfig\"\n [minActiveCount]=\"minSelectCount\"\n [maxActiveCount]=\"maxSelectCount\"\n formControlName=\"dp\"\n ></c8y-datapoint-selection-list>\n </div>\n </div>\n</form>\n"],"names":["i3"],"mappings":"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"}