@c8y/ngx-components 1022.13.0 → 1022.21.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/alarms/alarms.helper.d.ts.map +1 -1
  2. package/auth-configuration/sso-configuration/templates/template.component.d.ts +1 -1
  3. package/core/asset-property/asset-property.model.d.ts +0 -6
  4. package/core/asset-property/asset-property.model.d.ts.map +1 -1
  5. package/core/authentication/authentication.module.d.ts.map +1 -1
  6. package/core/authentication/new-password.component.d.ts +3 -2
  7. package/core/authentication/new-password.component.d.ts.map +1 -1
  8. package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts.map +1 -1
  9. package/core/drop-area/drop-area.component.d.ts +2 -0
  10. package/core/drop-area/drop-area.component.d.ts.map +1 -1
  11. package/core/dynamic-forms/file/file.type.component.d.ts.map +1 -1
  12. package/core/modal/modal.module.d.ts.map +1 -1
  13. package/core/modal/modal.service.d.ts +1 -0
  14. package/core/modal/modal.service.d.ts.map +1 -1
  15. package/core/plugins/plugins.module.d.ts.map +1 -1
  16. package/core/plugins/plugins.service.d.ts +1 -2
  17. package/core/plugins/plugins.service.d.ts.map +1 -1
  18. package/core/select/select.component.d.ts.map +1 -1
  19. package/core/user/user-edit-modal.component.d.ts +1 -0
  20. package/core/user/user-edit-modal.component.d.ts.map +1 -1
  21. package/core/user/user-edit.component.d.ts +4 -1
  22. package/core/user/user-edit.component.d.ts.map +1 -1
  23. package/datapoint-explorer/datapoint-explorer.module.d.ts +2 -0
  24. package/datapoint-explorer/datapoint-explorer.module.d.ts.map +1 -1
  25. package/datapoint-explorer/devicemanagement/c8y-ngx-components-datapoint-explorer-devicemanagement.d.ts.map +1 -0
  26. package/datapoint-explorer/devicemanagement/index.d.ts +2 -0
  27. package/datapoint-explorer/devicemanagement/index.d.ts.map +1 -0
  28. package/datapoint-explorer/view/datapoint-explorer.component.d.ts +6 -3
  29. package/datapoint-explorer/view/datapoint-explorer.component.d.ts.map +1 -1
  30. package/datapoint-explorer/view/datapoint-explorer.model.d.ts +8 -0
  31. package/datapoint-explorer/view/datapoint-explorer.model.d.ts.map +1 -0
  32. package/datapoint-explorer/view/index.d.ts +1 -0
  33. package/datapoint-explorer/view/index.d.ts.map +1 -1
  34. package/device-list/devices.breadcrumb-factory.d.ts +1 -0
  35. package/device-list/devices.breadcrumb-factory.d.ts.map +1 -1
  36. package/device-profile/add-device-profile.component.d.ts +1 -1
  37. package/device-profile/add-device-profile.component.d.ts.map +1 -1
  38. package/device-profile/device-profile-list.component.d.ts +1 -1
  39. package/device-profile/device-profile-list.component.d.ts.map +1 -1
  40. package/device-profile/device-profile.component.d.ts +1 -1
  41. package/device-profile/device-profile.component.d.ts.map +1 -1
  42. package/device-profile/device-profile.module.d.ts +17 -17
  43. package/device-profile/device-profile.module.d.ts.map +1 -1
  44. package/device-profile/device-tab-profile/device-profile-item-list.component.d.ts +1 -1
  45. package/device-profile/device-tab-profile/device-profile-item-list.component.d.ts.map +1 -1
  46. package/device-profile/device-tab-profile/device-tab-profile-detail.component.d.ts +1 -1
  47. package/device-profile/device-tab-profile/device-tab-profile-detail.component.d.ts.map +1 -1
  48. package/device-profile/device-tab-profile/device-tab-profile.component.d.ts +1 -1
  49. package/device-profile/device-tab-profile/device-tab-profile.component.d.ts.map +1 -1
  50. package/device-profile/select-configuration-modal.component.d.ts +1 -1
  51. package/device-profile/select-configuration-modal.component.d.ts.map +1 -1
  52. package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts +4 -2
  53. package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts.map +1 -1
  54. package/device-shell/command-templates/command-templates.component.d.ts +1 -1
  55. package/device-shell/command-templates/command-templates.component.d.ts.map +1 -1
  56. package/device-shell/command-templates/command-templates.directive.d.ts +1 -1
  57. package/device-shell/command-templates/command-templates.directive.d.ts.map +1 -1
  58. package/device-shell/command-templates/command-templates.module.d.ts +1 -1
  59. package/device-shell/shell/shell.component.d.ts +1 -1
  60. package/device-shell/shell/shell.component.d.ts.map +1 -1
  61. package/device-shell/shell/shell.module.d.ts +7 -7
  62. package/diagnostics/diagnostics.component.d.ts +1 -1
  63. package/diagnostics/diagnostics.component.d.ts.map +1 -1
  64. package/diagnostics/diagnostics.module.d.ts +8 -8
  65. package/diagnostics/diagnostics.module.d.ts.map +1 -1
  66. package/echart/services/chart-realtime.service.d.ts +2 -0
  67. package/echart/services/chart-realtime.service.d.ts.map +1 -1
  68. package/echart/services/echarts-options.service.d.ts +4 -4
  69. package/echart/services/echarts-options.service.d.ts.map +1 -1
  70. package/events/c8y-ngx-components-events.d.ts.map +1 -0
  71. package/events/events-timeline/c8y-ngx-components-events-events-timeline.d.ts.map +1 -0
  72. package/events/events-timeline/events-timeline.component.d.ts +19 -0
  73. package/events/events-timeline/events-timeline.component.d.ts.map +1 -0
  74. package/events/events-timeline/index.d.ts +2 -0
  75. package/events/events-timeline/index.d.ts.map +1 -0
  76. package/events/events.model.d.ts +6 -0
  77. package/events/events.model.d.ts.map +1 -0
  78. package/events/events.service.d.ts +10 -0
  79. package/events/events.service.d.ts.map +1 -0
  80. package/events/index.d.ts +3 -0
  81. package/events/index.d.ts.map +1 -0
  82. package/fesm2022/c8y-ngx-components-alarms.mjs +2 -1
  83. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  84. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +2 -2
  85. package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  86. package/fesm2022/c8y-ngx-components-datapoint-explorer-devicemanagement.mjs +38 -0
  87. package/fesm2022/c8y-ngx-components-datapoint-explorer-devicemanagement.mjs.map +1 -0
  88. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +143 -142
  89. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
  90. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +1 -1
  91. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs.map +1 -1
  92. package/fesm2022/c8y-ngx-components-device-list.mjs +10 -3
  93. package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
  94. package/fesm2022/c8y-ngx-components-device-profile.mjs +126 -49
  95. package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
  96. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +44 -12
  97. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -1
  98. package/fesm2022/c8y-ngx-components-device-shell.mjs +31 -22
  99. package/fesm2022/c8y-ngx-components-device-shell.mjs.map +1 -1
  100. package/fesm2022/c8y-ngx-components-diagnostics.mjs +36 -19
  101. package/fesm2022/c8y-ngx-components-diagnostics.mjs.map +1 -1
  102. package/fesm2022/c8y-ngx-components-echart.mjs +53 -17
  103. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
  104. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs +45 -0
  105. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs.map +1 -0
  106. package/fesm2022/c8y-ngx-components-events.mjs +44 -0
  107. package/fesm2022/c8y-ngx-components-events.mjs.map +1 -0
  108. package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs +8 -14
  109. package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs.map +1 -1
  110. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs +49 -49
  111. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs.map +1 -1
  112. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +27 -14
  113. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs.map +1 -1
  114. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs +27 -33
  115. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs.map +1 -1
  116. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs +51 -39
  117. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
  118. package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs +10 -8
  119. package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs.map +1 -1
  120. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs +16 -11
  121. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs.map +1 -1
  122. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs +8 -11
  123. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs.map +1 -1
  124. package/fesm2022/c8y-ngx-components-operations-operation-details.mjs +25 -21
  125. package/fesm2022/c8y-ngx-components-operations-operation-details.mjs.map +1 -1
  126. package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs +7 -9
  127. package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs.map +1 -1
  128. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs +31 -31
  129. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs.map +1 -1
  130. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +3 -3
  131. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
  132. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs +33 -13
  133. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs.map +1 -1
  134. package/fesm2022/c8y-ngx-components-operations-status-filter.mjs +19 -13
  135. package/fesm2022/c8y-ngx-components-operations-status-filter.mjs.map +1 -1
  136. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +40 -36
  137. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs.map +1 -1
  138. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +60 -41
  139. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs.map +1 -1
  140. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +122 -109
  141. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs.map +1 -1
  142. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +66 -41
  143. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs.map +1 -1
  144. package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs +11 -16
  145. package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs.map +1 -1
  146. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +212 -83
  147. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
  148. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +113 -54
  149. package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  150. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +130 -62
  151. package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
  152. package/fesm2022/c8y-ngx-components-repository-shared.mjs +37 -28
  153. package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
  154. package/fesm2022/c8y-ngx-components-repository-software.mjs +156 -83
  155. package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
  156. package/fesm2022/c8y-ngx-components-services.mjs +32 -19
  157. package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
  158. package/fesm2022/c8y-ngx-components-time-context.mjs +12 -5
  159. package/fesm2022/c8y-ngx-components-time-context.mjs.map +1 -1
  160. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +68 -31
  161. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  162. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs +16 -3
  163. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs.map +1 -1
  164. package/fesm2022/c8y-ngx-components-upgrade.mjs +1 -14
  165. package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
  166. package/fesm2022/c8y-ngx-components-user-roles.mjs +8 -3
  167. package/fesm2022/c8y-ngx-components-user-roles.mjs.map +1 -1
  168. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +4 -4
  169. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  170. package/fesm2022/c8y-ngx-components.mjs +1219 -1190
  171. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  172. package/locales/de.po +53 -35
  173. package/locales/es.po +26 -5
  174. package/locales/fr.po +51 -30
  175. package/locales/ja_JP.po +90 -67
  176. package/locales/ko.po +26 -5
  177. package/locales/locales.pot +22 -13
  178. package/locales/nl.po +26 -5
  179. package/locales/pl.po +26 -5
  180. package/locales/pt_BR.po +26 -5
  181. package/locales/zh_CN.po +27 -6
  182. package/locales/zh_TW.po +26 -5
  183. package/operations/bulk-operation-from-single/bulk-operation-from-single.component.d.ts +1 -1
  184. package/operations/bulk-operation-from-single/bulk-operation-from-single.component.d.ts.map +1 -1
  185. package/operations/bulk-operation-from-single/bulk-operation-from-single.module.d.ts +3 -5
  186. package/operations/bulk-operation-from-single/bulk-operation-from-single.module.d.ts.map +1 -1
  187. package/operations/bulk-operation-list-item/bulk-operation-list-item.component.d.ts +1 -1
  188. package/operations/bulk-operation-list-item/bulk-operation-list-item.component.d.ts.map +1 -1
  189. package/operations/bulk-operation-list-item/bulk-operation-list-item.module.d.ts +1 -7
  190. package/operations/bulk-operation-list-item/bulk-operation-list-item.module.d.ts.map +1 -1
  191. package/operations/bulk-operation-list-item/bulk-operation-wrapper.component.d.ts +1 -1
  192. package/operations/bulk-operation-list-item/bulk-operation-wrapper.component.d.ts.map +1 -1
  193. package/operations/bulk-operation-list-item/modal-body-host.directive.d.ts +1 -1
  194. package/operations/bulk-operation-list-item/modal-body-host.directive.d.ts.map +1 -1
  195. package/operations/bulk-operation-list-item/modals/bulk-operations-reschedule-modal.component.d.ts +1 -1
  196. package/operations/bulk-operation-list-item/modals/bulk-operations-reschedule-modal.component.d.ts.map +1 -1
  197. package/operations/bulk-operation-scheduler/bulk-operation-scheduler.module.d.ts +6 -6
  198. package/operations/bulk-operation-scheduler/operation-scheduler.component.d.ts +1 -1
  199. package/operations/bulk-operation-scheduler/operation-scheduler.component.d.ts.map +1 -1
  200. package/operations/bulk-operation-stepper/base-stepper.component.d.ts +1 -1
  201. package/operations/bulk-operation-stepper/bulk-operation-stepper.component.d.ts +1 -1
  202. package/operations/bulk-operation-stepper/bulk-operation-stepper.component.d.ts.map +1 -1
  203. package/operations/bulk-operation-stepper/bulk-operation-stepper.module.d.ts +1 -5
  204. package/operations/bulk-operation-stepper/bulk-operation-stepper.module.d.ts.map +1 -1
  205. package/operations/bulk-operation-stepper/custom-step.directive.d.ts +1 -1
  206. package/operations/bulk-operation-stepper/custom-step.directive.d.ts.map +1 -1
  207. package/operations/bulk-operations-list/bulk-operations-list.component.d.ts +1 -1
  208. package/operations/bulk-operations-list/bulk-operations-list.component.d.ts.map +1 -1
  209. package/operations/bulk-operations-list/bulk-operations-list.module.d.ts +4 -10
  210. package/operations/bulk-operations-list/bulk-operations-list.module.d.ts.map +1 -1
  211. package/operations/bulk-operations-list/modals/bulk-operations-modal.component.d.ts +1 -1
  212. package/operations/bulk-operations-list/modals/bulk-operations-modal.component.d.ts.map +1 -1
  213. package/operations/bulk-operations-stepper-container/bulk-operations-stepper-container.component.d.ts +1 -1
  214. package/operations/bulk-operations-stepper-container/bulk-operations-stepper-container.component.d.ts.map +1 -1
  215. package/operations/bulk-operations-stepper-container/bulk-operations-stepper-container.module.d.ts +3 -4
  216. package/operations/bulk-operations-stepper-container/bulk-operations-stepper-container.module.d.ts.map +1 -1
  217. package/operations/create-bulk-operation-details/create-bulk-operation-details.component.d.ts +1 -1
  218. package/operations/create-bulk-operation-details/create-bulk-operation-details.component.d.ts.map +1 -1
  219. package/operations/create-bulk-operation-details/create-bulk-operation-details.module.d.ts +1 -4
  220. package/operations/create-bulk-operation-details/create-bulk-operation-details.module.d.ts.map +1 -1
  221. package/operations/device-selector/device-selector.component.d.ts +1 -1
  222. package/operations/device-selector/device-selector.component.d.ts.map +1 -1
  223. package/operations/device-selector/device-selector.module.d.ts +1 -3
  224. package/operations/device-selector/device-selector.module.d.ts.map +1 -1
  225. package/operations/operation-details/operation-details-modal.component.d.ts +1 -1
  226. package/operations/operation-details/operation-details-modal.component.d.ts.map +1 -1
  227. package/operations/operation-details/operation-details.component.d.ts +1 -1
  228. package/operations/operation-details/operation-details.component.d.ts.map +1 -1
  229. package/operations/operation-details/operation-details.module.d.ts +1 -7
  230. package/operations/operation-details/operation-details.module.d.ts.map +1 -1
  231. package/operations/operation-details/operation-details.service.d.ts.map +1 -1
  232. package/operations/operation-summary/operation-summary.component.d.ts +1 -1
  233. package/operations/operation-summary/operation-summary.component.d.ts.map +1 -1
  234. package/operations/operation-summary/operation-summary.module.d.ts +1 -2
  235. package/operations/operation-summary/operation-summary.module.d.ts.map +1 -1
  236. package/operations/operations-list/operations-list-item.component.d.ts.map +1 -1
  237. package/operations/operations-list/operations-list.component.d.ts.map +1 -1
  238. package/operations/operations-list/operations-list.service.d.ts +1 -1
  239. package/operations/operations-list/operations-list.service.d.ts.map +1 -1
  240. package/operations/operations-list-item-details/operation-details-tabs.component.d.ts +1 -1
  241. package/operations/operations-list-item-details/operation-details-tabs.component.d.ts.map +1 -1
  242. package/operations/operations-list-item-details/operation-details.component.d.ts +1 -1
  243. package/operations/operations-list-item-details/operation-details.component.d.ts.map +1 -1
  244. package/operations/operations-list-item-details/operations-list-item-details.module.d.ts +1 -6
  245. package/operations/operations-list-item-details/operations-list-item-details.module.d.ts.map +1 -1
  246. package/operations/operations-timeline/operations-timeline.component.d.ts +5 -5
  247. package/operations/operations-timeline/operations-timeline.component.d.ts.map +1 -1
  248. package/operations/operations-timeline/operations-timeline.module.d.ts +4 -6
  249. package/operations/operations-timeline/operations-timeline.module.d.ts.map +1 -1
  250. package/operations/status-filter/status-filter.component.d.ts +1 -1
  251. package/operations/status-filter/status-filter.component.d.ts.map +1 -1
  252. package/operations/status-filter/status-filter.module.d.ts +1 -4
  253. package/operations/status-filter/status-filter.module.d.ts.map +1 -1
  254. package/operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.component.d.ts +1 -1
  255. package/operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.component.d.ts.map +1 -1
  256. package/operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.module.d.ts +1 -6
  257. package/operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.module.d.ts.map +1 -1
  258. package/operations/stepper-bulk-type-device-profile/confirm-device-profile-selection-step.component.d.ts +1 -1
  259. package/operations/stepper-bulk-type-device-profile/confirm-device-profile-selection-step.component.d.ts.map +1 -1
  260. package/operations/stepper-bulk-type-device-profile/select-device-profile-step.component.d.ts +1 -1
  261. package/operations/stepper-bulk-type-device-profile/select-device-profile-step.component.d.ts.map +1 -1
  262. package/operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.component.d.ts +1 -1
  263. package/operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.component.d.ts.map +1 -1
  264. package/operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.module.d.ts +1 -6
  265. package/operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.module.d.ts.map +1 -1
  266. package/operations/stepper-bulk-type-firmware/select-firmware.component.d.ts +1 -1
  267. package/operations/stepper-bulk-type-firmware/select-firmware.component.d.ts.map +1 -1
  268. package/operations/stepper-bulk-type-firmware/stepper-bulk-type-firmware.component.d.ts +1 -1
  269. package/operations/stepper-bulk-type-firmware/stepper-bulk-type-firmware.component.d.ts.map +1 -1
  270. package/operations/stepper-bulk-type-firmware/stepper-bulk-type-firmware.module.d.ts +1 -6
  271. package/operations/stepper-bulk-type-firmware/stepper-bulk-type-firmware.module.d.ts.map +1 -1
  272. package/operations/stepper-bulk-type-firmware/version-or-patch.component.d.ts +1 -1
  273. package/operations/stepper-bulk-type-firmware/version-or-patch.component.d.ts.map +1 -1
  274. package/operations/stepper-bulk-type-software/confirm-software-selection-step.component.d.ts +1 -1
  275. package/operations/stepper-bulk-type-software/confirm-software-selection-step.component.d.ts.map +1 -1
  276. package/operations/stepper-bulk-type-software/select-software-step.component.d.ts +1 -1
  277. package/operations/stepper-bulk-type-software/select-software-step.component.d.ts.map +1 -1
  278. package/operations/stepper-bulk-type-software/stepper-bulk-type-software.component.d.ts +1 -1
  279. package/operations/stepper-bulk-type-software/stepper-bulk-type-software.component.d.ts.map +1 -1
  280. package/operations/stepper-bulk-type-software/stepper-bulk-type-software.module.d.ts +1 -6
  281. package/operations/stepper-bulk-type-software/stepper-bulk-type-software.module.d.ts.map +1 -1
  282. package/operations/stepper-frames/preview-block.directive.d.ts +1 -1
  283. package/operations/stepper-frames/preview-block.directive.d.ts.map +1 -1
  284. package/operations/stepper-frames/preview-selection-frame.component.d.ts +1 -1
  285. package/operations/stepper-frames/preview-selection-frame.component.d.ts.map +1 -1
  286. package/operations/stepper-frames/select-step-frame.component.d.ts +1 -1
  287. package/operations/stepper-frames/select-step-frame.component.d.ts.map +1 -1
  288. package/operations/stepper-frames/stepper-frames.modules.d.ts +1 -2
  289. package/operations/stepper-frames/stepper-frames.modules.d.ts.map +1 -1
  290. package/package.json +1 -1
  291. package/protocol-opcua/opcua-address-space-detail.component.d.ts +1 -1
  292. package/protocol-opcua/opcua-address-space-detail.component.d.ts.map +1 -1
  293. package/protocol-opcua/opcua-address-space-tree.component.d.ts +1 -1
  294. package/protocol-opcua/opcua-address-space-tree.component.d.ts.map +1 -1
  295. package/protocol-opcua/opcua-address-space.component.d.ts +1 -1
  296. package/protocol-opcua/opcua-address-space.component.d.ts.map +1 -1
  297. package/protocol-opcua/opcua-auto-apply-settings.component.d.ts +1 -1
  298. package/protocol-opcua/opcua-auto-apply-settings.component.d.ts.map +1 -1
  299. package/protocol-opcua/opcua-device-protocol-browse-path-validation.directive.d.ts +1 -1
  300. package/protocol-opcua/opcua-device-protocol-browse-path-validation.directive.d.ts.map +1 -1
  301. package/protocol-opcua/opcua-device-protocol-data-reporting.component.d.ts +1 -1
  302. package/protocol-opcua/opcua-device-protocol-data-reporting.component.d.ts.map +1 -1
  303. package/protocol-opcua/opcua-device-protocol-description.component.d.ts +1 -1
  304. package/protocol-opcua/opcua-device-protocol-description.component.d.ts.map +1 -1
  305. package/protocol-opcua/opcua-device-protocol-detail.component.d.ts +1 -1
  306. package/protocol-opcua/opcua-device-protocol-detail.component.d.ts.map +1 -1
  307. package/protocol-opcua/opcua-device-protocol-mapping.component.d.ts +1 -1
  308. package/protocol-opcua/opcua-device-protocol-mapping.component.d.ts.map +1 -1
  309. package/protocol-opcua/opcua-device-protocol-object-mapping-status-icon.component.d.ts +1 -1
  310. package/protocol-opcua/opcua-device-protocol-object-mapping-status-icon.component.d.ts.map +1 -1
  311. package/protocol-opcua/opcua-protocol.module.d.ts +26 -26
  312. package/protocol-opcua/opcua-protocol.module.d.ts.map +1 -1
  313. package/protocol-opcua/opcua-server-config.component.d.ts +1 -1
  314. package/protocol-opcua/opcua-server-config.component.d.ts.map +1 -1
  315. package/protocol-opcua/opcua-server-list.component.d.ts +1 -1
  316. package/protocol-opcua/opcua-server-list.component.d.ts.map +1 -1
  317. package/protocol-opcua/opcua-servers.component.d.ts +1 -1
  318. package/protocol-opcua/opcua-servers.component.d.ts.map +1 -1
  319. package/repository/configuration/device-tab/configuration-filter.pipe.d.ts +1 -1
  320. package/repository/configuration/device-tab/configuration-filter.pipe.d.ts.map +1 -1
  321. package/repository/configuration/device-tab/configuration-preview.component.d.ts +1 -1
  322. package/repository/configuration/device-tab/configuration-preview.component.d.ts.map +1 -1
  323. package/repository/configuration/device-tab/configuration-repository-device-tab.module.d.ts +11 -13
  324. package/repository/configuration/device-tab/configuration-repository-device-tab.module.d.ts.map +1 -1
  325. package/repository/configuration/device-tab/device-configuration-list.component.d.ts +1 -1
  326. package/repository/configuration/device-tab/device-configuration-list.component.d.ts.map +1 -1
  327. package/repository/configuration/device-tab/device-configuration.component.d.ts +1 -1
  328. package/repository/configuration/device-tab/device-configuration.component.d.ts.map +1 -1
  329. package/repository/configuration/device-tab/save-to-repository.component.d.ts +1 -1
  330. package/repository/configuration/device-tab/save-to-repository.component.d.ts.map +1 -1
  331. package/repository/configuration/device-tab/source-code-preview.component.d.ts +1 -1
  332. package/repository/configuration/device-tab/source-code-preview.component.d.ts.map +1 -1
  333. package/repository/configuration/device-tab/text-based-configuration.component.d.ts +1 -1
  334. package/repository/configuration/device-tab/text-based-configuration.component.d.ts.map +1 -1
  335. package/repository/configuration/list/configuration-detail.component.d.ts +1 -1
  336. package/repository/configuration/list/configuration-detail.component.d.ts.map +1 -1
  337. package/repository/configuration/list/configuration-list.component.d.ts +1 -1
  338. package/repository/configuration/list/configuration-list.component.d.ts.map +1 -1
  339. package/repository/configuration/list/configuration-repository-list.module.d.ts +4 -7
  340. package/repository/configuration/list/configuration-repository-list.module.d.ts.map +1 -1
  341. package/repository/firmware/device-tab/firmware-device-tab.component.d.ts +1 -1
  342. package/repository/firmware/device-tab/firmware-device-tab.component.d.ts.map +1 -1
  343. package/repository/firmware/device-tab/firmware-repository-device-tab.module.d.ts +4 -6
  344. package/repository/firmware/device-tab/firmware-repository-device-tab.module.d.ts.map +1 -1
  345. package/repository/firmware/list/add-firmware-modal.component.d.ts +1 -1
  346. package/repository/firmware/list/add-firmware-modal.component.d.ts.map +1 -1
  347. package/repository/firmware/list/add-firmware-patch-modal.component.d.ts +1 -1
  348. package/repository/firmware/list/add-firmware-patch-modal.component.d.ts.map +1 -1
  349. package/repository/firmware/list/firmware-details.component.d.ts +1 -1
  350. package/repository/firmware/list/firmware-details.component.d.ts.map +1 -1
  351. package/repository/firmware/list/firmware-list.component.d.ts +1 -1
  352. package/repository/firmware/list/firmware-list.component.d.ts.map +1 -1
  353. package/repository/firmware/list/firmware-repository-list.module.d.ts +6 -11
  354. package/repository/firmware/list/firmware-repository-list.module.d.ts.map +1 -1
  355. package/repository/shared/file-download/file-download.component.d.ts +1 -1
  356. package/repository/shared/file-download/file-download.component.d.ts.map +1 -1
  357. package/repository/shared/select-modal/repository-select-modal.component.d.ts +1 -1
  358. package/repository/shared/select-modal/repository-select-modal.component.d.ts.map +1 -1
  359. package/repository/shared/shared-repository.module.d.ts +1 -4
  360. package/repository/shared/shared-repository.module.d.ts.map +1 -1
  361. package/repository/shared/software-type/software-type.component.d.ts +1 -1
  362. package/repository/shared/software-type/software-type.component.d.ts.map +1 -1
  363. package/repository/software/device-tab/device-software-changes.component.d.ts +1 -1
  364. package/repository/software/device-tab/device-software-changes.component.d.ts.map +1 -1
  365. package/repository/software/device-tab/device-software-list.component.d.ts +1 -1
  366. package/repository/software/device-tab/device-software-list.component.d.ts.map +1 -1
  367. package/repository/software/device-tab/installed-software.component.d.ts +1 -1
  368. package/repository/software/device-tab/installed-software.component.d.ts.map +1 -1
  369. package/repository/software/device-tab/software-device-tab.component.d.ts +1 -1
  370. package/repository/software/device-tab/software-device-tab.component.d.ts.map +1 -1
  371. package/repository/software/device-tab/software-repository-device-tab.module.d.ts +7 -11
  372. package/repository/software/device-tab/software-repository-device-tab.module.d.ts.map +1 -1
  373. package/repository/software/list/add-software-modal.component.d.ts +1 -1
  374. package/repository/software/list/add-software-modal.component.d.ts.map +1 -1
  375. package/repository/software/list/software-details.component.d.ts +1 -1
  376. package/repository/software/list/software-details.component.d.ts.map +1 -1
  377. package/repository/software/list/software-list.component.d.ts +1 -1
  378. package/repository/software/list/software-list.component.d.ts.map +1 -1
  379. package/repository/software/list/software-repository-list.module.d.ts +5 -11
  380. package/repository/software/list/software-repository-list.module.d.ts.map +1 -1
  381. package/services/services-device-tab/columns/last-updated-date.cell-renderer.component.d.ts +1 -1
  382. package/services/services-device-tab/columns/last-updated-date.cell-renderer.component.d.ts.map +1 -1
  383. package/services/services-device-tab/columns/name.cell-renderer.component.d.ts +1 -1
  384. package/services/services-device-tab/columns/name.cell-renderer.component.d.ts.map +1 -1
  385. package/services/services-device-tab/columns/status.cell-renderer.component.d.ts +1 -1
  386. package/services/services-device-tab/columns/status.cell-renderer.component.d.ts.map +1 -1
  387. package/services/services-device-tab/services-device-tab.component.d.ts +1 -1
  388. package/services/services-device-tab/services-device-tab.component.d.ts.map +1 -1
  389. package/services/services-device-tab/services-device-tab.module.d.ts +1 -4
  390. package/services/services-device-tab/services-device-tab.module.d.ts.map +1 -1
  391. package/time-context/index.d.ts +1 -0
  392. package/time-context/index.d.ts.map +1 -1
  393. package/time-context/time-context.component.d.ts +6 -3
  394. package/time-context/time-context.component.d.ts.map +1 -1
  395. package/time-context/time-context.model.d.ts +10 -0
  396. package/time-context/time-context.model.d.ts.map +1 -0
  397. package/time-context/time-context.service.d.ts +2 -6
  398. package/time-context/time-context.service.d.ts.map +1 -1
  399. package/trusted-certificates/crl/crl-settings.component.d.ts +5 -1
  400. package/trusted-certificates/crl/crl-settings.component.d.ts.map +1 -1
  401. package/trusted-certificates/factories/tabs.factory.d.ts +3 -2
  402. package/trusted-certificates/factories/tabs.factory.d.ts.map +1 -1
  403. package/trusted-certificates/factories/trusted-certificates-navigation.factory.d.ts +2 -0
  404. package/trusted-certificates/factories/trusted-certificates-navigation.factory.d.ts.map +1 -1
  405. package/trusted-certificates/list/trusted-certificate-list.component.d.ts +5 -1
  406. package/trusted-certificates/list/trusted-certificate-list.component.d.ts.map +1 -1
  407. package/trusted-certificates/trusted-certificates.guard.d.ts +11 -0
  408. package/trusted-certificates/trusted-certificates.guard.d.ts.map +1 -0
  409. package/upgrade/index.d.ts +0 -1
  410. package/upgrade/index.d.ts.map +1 -1
  411. package/upgrade/upgrade.module.d.ts.map +1 -1
  412. package/upgrade/upgraded-services/index.d.ts +1 -0
  413. package/upgrade/upgraded-services/index.d.ts.map +1 -1
  414. package/upgrade/upgraded-services/smart-rules.service.d.ts.map +1 -0
  415. package/upgrade/upgraded-services/upgraded-services.module.d.ts.map +1 -1
  416. package/user-roles/inventory-role-selector/inventory-role-selector.component.d.ts +2 -1
  417. package/user-roles/inventory-role-selector/inventory-role-selector.component.d.ts.map +1 -1
  418. package/user-roles/roles-asset-tree/roles-asset-tree.component.d.ts +2 -1
  419. package/user-roles/roles-asset-tree/roles-asset-tree.component.d.ts.map +1 -1
  420. package/device-parameters/c8y-ngx-components-device-parameters.d.ts.map +0 -1
  421. package/device-parameters/device-parameters-list.component.d.ts +0 -22
  422. package/device-parameters/device-parameters-list.component.d.ts.map +0 -1
  423. package/device-parameters/device-parameters-tab.guard.d.ts +0 -11
  424. package/device-parameters/device-parameters-tab.guard.d.ts.map +0 -1
  425. package/device-parameters/index.d.ts +0 -2
  426. package/device-parameters/index.d.ts.map +0 -1
  427. package/fesm2022/c8y-ngx-components-device-parameters.mjs +0 -118
  428. package/fesm2022/c8y-ngx-components-device-parameters.mjs.map +0 -1
  429. package/upgrade/smart-rules.service.d.ts.map +0 -1
  430. /package/upgrade/{smart-rules.service.d.ts → upgraded-services/smart-rules.service.d.ts} +0 -0
@@ -13,7 +13,7 @@ class InventoryRoleSelector extends UpgradeComponent {
13
13
  super('c8yInventoryRoleSelector', elementRef, injector);
14
14
  }
15
15
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: InventoryRoleSelector, deps: [{ token: i0.ElementRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); }
16
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.14", type: InventoryRoleSelector, isStandalone: true, selector: "c8y-inventory-role-selector-upgraded", inputs: { assignedRoles: "assignedRoles", inheritedRoles: "inheritedRoles", inventoryRoles: "inventoryRoles", ownerAllowedRoles: "ownerAllowedRoles" }, outputs: { onApply: "onApply" }, usesInheritance: true, ngImport: i0 }); }
16
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.14", type: InventoryRoleSelector, isStandalone: true, selector: "c8y-inventory-role-selector-upgraded", inputs: { assignedRoles: "assignedRoles", inheritedRoles: "inheritedRoles", inventoryRoles: "inventoryRoles", ownerAllowedRoles: "ownerAllowedRoles", disableEditForExternalUsers: "disableEditForExternalUsers" }, outputs: { onApply: "onApply" }, usesInheritance: true, ngImport: i0 }); }
17
17
  }
18
18
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: InventoryRoleSelector, decorators: [{
19
19
  type: Directive,
@@ -26,6 +26,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
26
26
  type: Input
27
27
  }], ownerAllowedRoles: [{
28
28
  type: Input
29
+ }], disableEditForExternalUsers: [{
30
+ type: Input
29
31
  }], onApply: [{
30
32
  type: Output
31
33
  }] } });
@@ -34,6 +36,7 @@ class RolesAssetTreeComponent {
34
36
  constructor(c8yUserInventoryRoles, c8yRoles) {
35
37
  this.c8yUserInventoryRoles = c8yUserInventoryRoles;
36
38
  this.c8yRoles = c8yRoles;
39
+ this.disableEditForExternalUsers = false;
37
40
  this.onChangeRoles = new EventEmitter();
38
41
  this.onChangeItemCount = new EventEmitter();
39
42
  this.noSubgroupTitle = gettext('No subgroups');
@@ -143,7 +146,7 @@ class RolesAssetTreeComponent {
143
146
  return true;
144
147
  }
145
148
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RolesAssetTreeComponent, deps: [{ token: i1.Ng1UserInventoryRolesService, optional: true }, { token: i1.Ng1RolesService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
146
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: RolesAssetTreeComponent, isStandalone: true, selector: "c8y-roles-asset-tree-upgraded", inputs: { user: "user", searchFilter: "searchFilter", assignedRoles: "assignedRoles", ownerAssignedRoles: "ownerAssignedRoles", expandGroups: "expandGroups", pageSize: "pageSize", paginationOffset: "paginationOffset" }, outputs: { onChangeRoles: "onChangeRoles", onChangeItemCount: "onChangeItemCount" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"c8y-list__group m-b-0 no-border-last\">\n <div\n class=\"c8y-list__item\"\n *ngFor=\"\n let asset of flatAssetTree$ | async | slice: paginationOffset:paginationOffset + pageSize\n \"\n >\n <div\n class=\"c8y-list__item__block\"\n [title]=\"\n (asset._subGroups && asset.isOpened\n ? asset._subGroups.length\n ? asset._subGroups.length > 1\n ? manySubgroupsTitle\n : oneSubgroupTitle\n : noSubgroupTitle\n : clickToOpenTitle\n ) | translate: { count: asset._subGroups?.length }\n \"\n >\n <div [ngStyle]=\"{ 'padding-left': asset._depth * 8 + 'px' }\"></div>\n <div class=\"c8y-list__item__icon m-t-4 p-l-0\">\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"(!asset.isOpened ? expandAriaLabel : collapseAriaLabel) | translate\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group\"\n *ngIf=\"!asset.isOpened\"\n ></i>\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group-open\"\n *ngIf=\"asset.isOpened\"\n ></i>\n </button>\n </div>\n <div class=\"c8y-list__item__body\">\n <div class=\"d-flex a-i-center\">\n <div class=\"col-sm-7 p-l-0 col-xs-12\">\n <button\n class=\"btn-clean\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <span\n class=\"text-truncate\"\n [ngStyle]=\"{ cursor: 'pointer' }\"\n title=\"{{ asset.name }}\"\n >\n {{ asset.name }}\n </span>\n </button>\n </div>\n <div class=\"p-t-8 col-xs-12 visible-xs\"></div>\n <div class=\"col-sm-5 p-l-0 col-xs-12 p-r-0\">\n <div class=\"d-flex\">\n <div class=\"flex-grow form-group-sm max-width-100\">\n <c8y-inventory-role-selector-upgraded\n [ownerAllowedRoles]=\"\n ownerAllAssignedRoles ? ownerAllAssignedRoles[asset.id] : undefined\n \"\n [inheritedRoles]=\"inheritedRoles ? inheritedRoles[asset.id] : undefined\"\n [assignedRoles]=\"assignedRoles ? assignedRoles[asset.id] : undefined\"\n [inventoryRoles]=\"inventoryRoles\"\n (onApply)=\"onApply($event, asset.id)\"\n (click)=\"$event.stopPropagation()\"\n ></c8y-inventory-role-selector-upgraded>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No matching group found among the expanded groups.' | translate\"\n [subtitle]=\"'Try to expand more groups or to refine your search term.' | translate\"\n *ngIf=\"searchFilter && !(flatAssetTree$ | async).length\"\n [horizontal]=\"false\"\n ></c8y-ui-empty-state>\n</div>\n", dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: InventoryRoleSelector, selector: "c8y-inventory-role-selector-upgraded", inputs: ["assignedRoles", "inheritedRoles", "inventoryRoles", "ownerAllowedRoles"], outputs: ["onApply"] }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: SlicePipe, name: "slice" }] }); }
149
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: RolesAssetTreeComponent, isStandalone: true, selector: "c8y-roles-asset-tree-upgraded", inputs: { user: "user", searchFilter: "searchFilter", assignedRoles: "assignedRoles", ownerAssignedRoles: "ownerAssignedRoles", expandGroups: "expandGroups", pageSize: "pageSize", paginationOffset: "paginationOffset", disableEditForExternalUsers: "disableEditForExternalUsers" }, outputs: { onChangeRoles: "onChangeRoles", onChangeItemCount: "onChangeItemCount" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"c8y-list__group m-b-0 no-border-last\">\n <div\n class=\"c8y-list__item\"\n *ngFor=\"\n let asset of flatAssetTree$ | async | slice: paginationOffset:paginationOffset + pageSize\n \"\n >\n <div\n class=\"c8y-list__item__block\"\n [title]=\"\n (asset._subGroups && asset.isOpened\n ? asset._subGroups.length\n ? asset._subGroups.length > 1\n ? manySubgroupsTitle\n : oneSubgroupTitle\n : noSubgroupTitle\n : clickToOpenTitle\n ) | translate: { count: asset._subGroups?.length }\n \"\n >\n <div [ngStyle]=\"{ 'padding-left': asset._depth * 8 + 'px' }\"></div>\n <div class=\"c8y-list__item__icon m-t-4 p-l-0\">\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"(!asset.isOpened ? expandAriaLabel : collapseAriaLabel) | translate\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group\"\n *ngIf=\"!asset.isOpened\"\n ></i>\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group-open\"\n *ngIf=\"asset.isOpened\"\n ></i>\n </button>\n </div>\n <div class=\"c8y-list__item__body\">\n <div class=\"d-flex a-i-center\">\n <div class=\"col-sm-7 p-l-0 col-xs-12\">\n <button\n class=\"btn-clean\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <span\n class=\"text-truncate\"\n [ngStyle]=\"{ cursor: 'pointer' }\"\n title=\"{{ asset.name }}\"\n >\n {{ asset.name }}\n </span>\n </button>\n </div>\n <div class=\"p-t-8 col-xs-12 visible-xs\"></div>\n <div class=\"col-sm-5 p-l-0 col-xs-12 p-r-0\">\n <div class=\"d-flex\">\n <div class=\"flex-grow form-group-sm max-width-100\">\n <c8y-inventory-role-selector-upgraded\n [ownerAllowedRoles]=\"\n ownerAllAssignedRoles ? ownerAllAssignedRoles[asset.id] : undefined\n \"\n [inheritedRoles]=\"inheritedRoles ? inheritedRoles[asset.id] : undefined\"\n [assignedRoles]=\"assignedRoles ? assignedRoles[asset.id] : undefined\"\n [inventoryRoles]=\"inventoryRoles\"\n [disableEditForExternalUsers]=\"disableEditForExternalUsers\"\n (onApply)=\"onApply($event, asset.id)\"\n (click)=\"$event.stopPropagation()\"\n ></c8y-inventory-role-selector-upgraded>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No matching group found among the expanded groups.' | translate\"\n [subtitle]=\"'Try to expand more groups or to refine your search term.' | translate\"\n *ngIf=\"searchFilter && !(flatAssetTree$ | async).length\"\n [horizontal]=\"false\"\n ></c8y-ui-empty-state>\n</div>\n", dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: InventoryRoleSelector, selector: "c8y-inventory-role-selector-upgraded", inputs: ["assignedRoles", "inheritedRoles", "inventoryRoles", "ownerAllowedRoles", "disableEditForExternalUsers"], outputs: ["onApply"] }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: SlicePipe, name: "slice" }] }); }
147
150
  }
148
151
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RolesAssetTreeComponent, decorators: [{
149
152
  type: Component,
@@ -157,7 +160,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
157
160
  C8yTranslatePipe,
158
161
  AsyncPipe,
159
162
  SlicePipe
160
- ], template: "<div class=\"c8y-list__group m-b-0 no-border-last\">\n <div\n class=\"c8y-list__item\"\n *ngFor=\"\n let asset of flatAssetTree$ | async | slice: paginationOffset:paginationOffset + pageSize\n \"\n >\n <div\n class=\"c8y-list__item__block\"\n [title]=\"\n (asset._subGroups && asset.isOpened\n ? asset._subGroups.length\n ? asset._subGroups.length > 1\n ? manySubgroupsTitle\n : oneSubgroupTitle\n : noSubgroupTitle\n : clickToOpenTitle\n ) | translate: { count: asset._subGroups?.length }\n \"\n >\n <div [ngStyle]=\"{ 'padding-left': asset._depth * 8 + 'px' }\"></div>\n <div class=\"c8y-list__item__icon m-t-4 p-l-0\">\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"(!asset.isOpened ? expandAriaLabel : collapseAriaLabel) | translate\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group\"\n *ngIf=\"!asset.isOpened\"\n ></i>\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group-open\"\n *ngIf=\"asset.isOpened\"\n ></i>\n </button>\n </div>\n <div class=\"c8y-list__item__body\">\n <div class=\"d-flex a-i-center\">\n <div class=\"col-sm-7 p-l-0 col-xs-12\">\n <button\n class=\"btn-clean\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <span\n class=\"text-truncate\"\n [ngStyle]=\"{ cursor: 'pointer' }\"\n title=\"{{ asset.name }}\"\n >\n {{ asset.name }}\n </span>\n </button>\n </div>\n <div class=\"p-t-8 col-xs-12 visible-xs\"></div>\n <div class=\"col-sm-5 p-l-0 col-xs-12 p-r-0\">\n <div class=\"d-flex\">\n <div class=\"flex-grow form-group-sm max-width-100\">\n <c8y-inventory-role-selector-upgraded\n [ownerAllowedRoles]=\"\n ownerAllAssignedRoles ? ownerAllAssignedRoles[asset.id] : undefined\n \"\n [inheritedRoles]=\"inheritedRoles ? inheritedRoles[asset.id] : undefined\"\n [assignedRoles]=\"assignedRoles ? assignedRoles[asset.id] : undefined\"\n [inventoryRoles]=\"inventoryRoles\"\n (onApply)=\"onApply($event, asset.id)\"\n (click)=\"$event.stopPropagation()\"\n ></c8y-inventory-role-selector-upgraded>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No matching group found among the expanded groups.' | translate\"\n [subtitle]=\"'Try to expand more groups or to refine your search term.' | translate\"\n *ngIf=\"searchFilter && !(flatAssetTree$ | async).length\"\n [horizontal]=\"false\"\n ></c8y-ui-empty-state>\n</div>\n" }]
163
+ ], template: "<div class=\"c8y-list__group m-b-0 no-border-last\">\n <div\n class=\"c8y-list__item\"\n *ngFor=\"\n let asset of flatAssetTree$ | async | slice: paginationOffset:paginationOffset + pageSize\n \"\n >\n <div\n class=\"c8y-list__item__block\"\n [title]=\"\n (asset._subGroups && asset.isOpened\n ? asset._subGroups.length\n ? asset._subGroups.length > 1\n ? manySubgroupsTitle\n : oneSubgroupTitle\n : noSubgroupTitle\n : clickToOpenTitle\n ) | translate: { count: asset._subGroups?.length }\n \"\n >\n <div [ngStyle]=\"{ 'padding-left': asset._depth * 8 + 'px' }\"></div>\n <div class=\"c8y-list__item__icon m-t-4 p-l-0\">\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"(!asset.isOpened ? expandAriaLabel : collapseAriaLabel) | translate\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group\"\n *ngIf=\"!asset.isOpened\"\n ></i>\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group-open\"\n *ngIf=\"asset.isOpened\"\n ></i>\n </button>\n </div>\n <div class=\"c8y-list__item__body\">\n <div class=\"d-flex a-i-center\">\n <div class=\"col-sm-7 p-l-0 col-xs-12\">\n <button\n class=\"btn-clean\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <span\n class=\"text-truncate\"\n [ngStyle]=\"{ cursor: 'pointer' }\"\n title=\"{{ asset.name }}\"\n >\n {{ asset.name }}\n </span>\n </button>\n </div>\n <div class=\"p-t-8 col-xs-12 visible-xs\"></div>\n <div class=\"col-sm-5 p-l-0 col-xs-12 p-r-0\">\n <div class=\"d-flex\">\n <div class=\"flex-grow form-group-sm max-width-100\">\n <c8y-inventory-role-selector-upgraded\n [ownerAllowedRoles]=\"\n ownerAllAssignedRoles ? ownerAllAssignedRoles[asset.id] : undefined\n \"\n [inheritedRoles]=\"inheritedRoles ? inheritedRoles[asset.id] : undefined\"\n [assignedRoles]=\"assignedRoles ? assignedRoles[asset.id] : undefined\"\n [inventoryRoles]=\"inventoryRoles\"\n [disableEditForExternalUsers]=\"disableEditForExternalUsers\"\n (onApply)=\"onApply($event, asset.id)\"\n (click)=\"$event.stopPropagation()\"\n ></c8y-inventory-role-selector-upgraded>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No matching group found among the expanded groups.' | translate\"\n [subtitle]=\"'Try to expand more groups or to refine your search term.' | translate\"\n *ngIf=\"searchFilter && !(flatAssetTree$ | async).length\"\n [horizontal]=\"false\"\n ></c8y-ui-empty-state>\n</div>\n" }]
161
164
  }], ctorParameters: () => [{ type: i1.Ng1UserInventoryRolesService, decorators: [{
162
165
  type: Optional
163
166
  }] }, { type: i1.Ng1RolesService, decorators: [{
@@ -176,6 +179,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
176
179
  type: Input
177
180
  }], paginationOffset: [{
178
181
  type: Input
182
+ }], disableEditForExternalUsers: [{
183
+ type: Input
179
184
  }], onChangeRoles: [{
180
185
  type: Output
181
186
  }], onChangeItemCount: [{
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-user-roles.mjs","sources":["../../user-roles/inventory-role-selector/inventory-role-selector.component.ts","../../user-roles/roles-asset-tree/roles-asset-tree.component.ts","../../user-roles/roles-asset-tree/roles-asset-tree.component.html","../../user-roles/user-roles.module.ts","../../user-roles/c8y-ngx-components-user-roles.ts"],"sourcesContent":["import { Directive, ElementRef, EventEmitter, Injector, Input, Output } from '@angular/core';\nimport { UpgradeComponent } from '@angular/upgrade/static';\n\n@Directive({ selector: 'c8y-inventory-role-selector-upgraded' })\nexport class InventoryRoleSelector extends UpgradeComponent {\n @Input() assignedRoles: any;\n @Input() inheritedRoles: any;\n @Input() inventoryRoles: any;\n @Input() ownerAllowedRoles: any;\n @Output() onApply: EventEmitter<any>;\n\n constructor(elementRef: ElementRef, injector: Injector) {\n super('c8yInventoryRoleSelector', elementRef, injector);\n }\n}\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Optional, Output } from '@angular/core';\nimport { gettext, IconDirective, EmptyStateComponent, C8yTranslatePipe } from '@c8y/ngx-components';\n\nimport {\n mergeWith,\n map as _map,\n filter,\n flatten,\n uniqBy,\n identity,\n property,\n get,\n reduce\n} from 'lodash-es';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\nimport { IIdentified } from '@c8y/client';\nimport {\n Ng1RolesService,\n Ng1UserInventoryRolesService\n} from '@c8y/ngx-components/upgrade/upgraded-services';\nimport { NgFor, NgStyle, NgIf, AsyncPipe, SlicePipe } from '@angular/common';\nimport { InventoryRoleSelector } from '../inventory-role-selector/inventory-role-selector.component';\n\n@Component({\n selector: 'c8y-roles-asset-tree-upgraded',\n templateUrl: './roles-asset-tree.component.html',\n imports: [\n NgFor,\n NgStyle,\n NgIf,\n IconDirective,\n InventoryRoleSelector,\n EmptyStateComponent,\n C8yTranslatePipe,\n AsyncPipe,\n SlicePipe\n ]\n})\nexport class RolesAssetTreeComponent implements OnInit, OnChanges {\n @Input() user;\n @Input() searchFilter;\n @Input() assignedRoles;\n @Input() ownerAssignedRoles;\n @Input() expandGroups;\n @Input() pageSize;\n @Input() paginationOffset;\n @Output() onChangeRoles = new EventEmitter();\n @Output() onChangeItemCount = new EventEmitter();\n\n rootGroups;\n flatAssetTree;\n inventoryRoles;\n loadingAssetTree;\n inheritedRoles;\n ownerAllAssignedRoles;\n\n noSubgroupTitle = gettext('No subgroups');\n manySubgroupsTitle = gettext('Subgroups: {{ count }}');\n oneSubgroupTitle = gettext('Subgroup: 1');\n clickToOpenTitle = gettext('Click to fetch subgroups');\n expandAriaLabel = gettext('Expand');\n collapseAriaLabel = gettext('Collapse');\n\n searchTermSubject = new BehaviorSubject<string>('');\n flatTreeSubject = new BehaviorSubject<IIdentified[]>([]);\n\n flatAssetTree$ = combineLatest([this.searchTermSubject, this.flatTreeSubject]).pipe(\n map(([searchTerm, flatTree]) => {\n return flatTree\n .filter(group => group.name.toLowerCase().includes(searchTerm.toLowerCase()))\n .filter(this.filterAsset.bind(this));\n }),\n tap(flatTree => {\n this.onChangeItemCount.emit(flatTree.length);\n })\n );\n\n constructor(\n @Optional() public c8yUserInventoryRoles: Ng1UserInventoryRolesService,\n @Optional() public c8yRoles: Ng1RolesService\n ) {}\n\n ngOnInit() {\n this.loadInventoryRoles();\n }\n\n loadAssetTree() {\n const onlyRootsUser = this.user.owner;\n return this.c8yUserInventoryRoles.listRootGroups({ onlyRootsUser }).then(result => {\n this.rootGroups = result;\n this.updateTree();\n });\n }\n\n updateTree() {\n this.flatAssetTree = this.c8yUserInventoryRoles.flatTree(this.rootGroups);\n this.setInheritedRoles();\n this.flatTreeSubject.next(this.flatAssetTree);\n }\n\n loadChildren(mo) {\n if (mo.isOpened) {\n // eslint-disable-next-line no-underscore-dangle\n mo._subGroups = [];\n mo.isOpened = false;\n this.updateTree();\n } else {\n this.c8yUserInventoryRoles.loadChildren(mo).then(_ => {\n this.updateTree();\n });\n mo.isOpened = true;\n }\n }\n\n loadInventoryRoles() {\n this.c8yRoles.list({ pageSize: 1000 }).then(roles => {\n this.inventoryRoles = roles;\n });\n }\n\n ngOnChanges(changes) {\n if (changes.searchFilter) {\n this.searchTermSubject.next(this.searchFilter || '');\n }\n if (changes.user && !this.loadingAssetTree) {\n this.loadingAssetTree = this.loadAssetTree();\n }\n if (changes.assignedRoles || changes.ownerAssignedRoles) {\n this.loadingAssetTree.then(this.setInheritedRoles.bind(this));\n }\n if (changes.expandGroups && this.expandGroups) {\n this.c8yUserInventoryRoles.expandAll(this.rootGroups, this.updateTree.bind(this));\n }\n }\n\n setInheritedRoles() {\n if (this.assignedRoles) {\n this.inheritedRoles = this.getInventoryInheritedRoles(this.flatAssetTree, this.assignedRoles);\n }\n if (this.ownerAssignedRoles) {\n const ownerInheritedRoles = this.getInventoryInheritedRoles(\n this.flatAssetTree,\n this.ownerAssignedRoles\n );\n this.ownerAllAssignedRoles = mergeWith(\n ownerInheritedRoles,\n this.ownerAssignedRoles,\n (objValue, srcValue) => {\n if (srcValue) {\n if (objValue) {\n return uniqBy(objValue.concat(srcValue.roles), 'id');\n }\n return srcValue.roles;\n }\n return objValue;\n }\n );\n }\n }\n\n getInventoryInheritedRoles(flatTree, assignedRoles) {\n return reduce(\n flatTree,\n (inheritedRoles, asset) => {\n // eslint-disable-next-line no-underscore-dangle\n let chain = asset._parentGroups;\n chain = _map(chain, group => get(assignedRoles, group.id));\n chain = filter(chain, identity);\n chain = _map(chain, property('roles'));\n chain = flatten(chain);\n chain = uniqBy(chain, 'id');\n inheritedRoles[asset.id] = chain;\n return inheritedRoles;\n },\n {}\n );\n }\n\n onApply(ev, managedObjectId) {\n return this.onChangeRoles.emit({\n managedObjectId: managedObjectId,\n roles: ev.roles\n });\n }\n\n filterAsset(asset) {\n if (this.ownerAllAssignedRoles) {\n return get(this.ownerAllAssignedRoles, [asset.id, 'length']);\n }\n return true;\n }\n}\n","<div class=\"c8y-list__group m-b-0 no-border-last\">\n <div\n class=\"c8y-list__item\"\n *ngFor=\"\n let asset of flatAssetTree$ | async | slice: paginationOffset:paginationOffset + pageSize\n \"\n >\n <div\n class=\"c8y-list__item__block\"\n [title]=\"\n (asset._subGroups && asset.isOpened\n ? asset._subGroups.length\n ? asset._subGroups.length > 1\n ? manySubgroupsTitle\n : oneSubgroupTitle\n : noSubgroupTitle\n : clickToOpenTitle\n ) | translate: { count: asset._subGroups?.length }\n \"\n >\n <div [ngStyle]=\"{ 'padding-left': asset._depth * 8 + 'px' }\"></div>\n <div class=\"c8y-list__item__icon m-t-4 p-l-0\">\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"(!asset.isOpened ? expandAriaLabel : collapseAriaLabel) | translate\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group\"\n *ngIf=\"!asset.isOpened\"\n ></i>\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group-open\"\n *ngIf=\"asset.isOpened\"\n ></i>\n </button>\n </div>\n <div class=\"c8y-list__item__body\">\n <div class=\"d-flex a-i-center\">\n <div class=\"col-sm-7 p-l-0 col-xs-12\">\n <button\n class=\"btn-clean\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <span\n class=\"text-truncate\"\n [ngStyle]=\"{ cursor: 'pointer' }\"\n title=\"{{ asset.name }}\"\n >\n {{ asset.name }}\n </span>\n </button>\n </div>\n <div class=\"p-t-8 col-xs-12 visible-xs\"></div>\n <div class=\"col-sm-5 p-l-0 col-xs-12 p-r-0\">\n <div class=\"d-flex\">\n <div class=\"flex-grow form-group-sm max-width-100\">\n <c8y-inventory-role-selector-upgraded\n [ownerAllowedRoles]=\"\n ownerAllAssignedRoles ? ownerAllAssignedRoles[asset.id] : undefined\n \"\n [inheritedRoles]=\"inheritedRoles ? inheritedRoles[asset.id] : undefined\"\n [assignedRoles]=\"assignedRoles ? assignedRoles[asset.id] : undefined\"\n [inventoryRoles]=\"inventoryRoles\"\n (onApply)=\"onApply($event, asset.id)\"\n (click)=\"$event.stopPropagation()\"\n ></c8y-inventory-role-selector-upgraded>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No matching group found among the expanded groups.' | translate\"\n [subtitle]=\"'Try to expand more groups or to refine your search term.' | translate\"\n *ngIf=\"searchFilter && !(flatAssetTree$ | async).length\"\n [horizontal]=\"false\"\n ></c8y-ui-empty-state>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { InventoryRoleSelector } from './inventory-role-selector/inventory-role-selector.component';\nimport { RolesAssetTreeComponent } from './roles-asset-tree/roles-asset-tree.component';\n\n@NgModule({\n imports: [CoreModule, InventoryRoleSelector, RolesAssetTreeComponent]\n})\nexport class UserRolesModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_map"],"mappings":";;;;;;;;;;AAIM,MAAO,qBAAsB,SAAQ,gBAAgB,CAAA;IAOzD,WAAY,CAAA,UAAsB,EAAE,QAAkB,EAAA;AACpD,QAAA,KAAK,CAAC,0BAA0B,EAAE,UAAU,EAAE,QAAQ,CAAC;;+GAR9C,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,SAAS;mBAAC,EAAE,QAAQ,EAAE,sCAAsC,EAAE;sGAEpD,aAAa,EAAA,CAAA;sBAArB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,iBAAiB,EAAA,CAAA;sBAAzB;gBACS,OAAO,EAAA,CAAA;sBAAhB;;;MC8BU,uBAAuB,CAAA;IAuClC,WACqB,CAAA,qBAAmD,EACnD,QAAyB,EAAA;QADzB,IAAqB,CAAA,qBAAA,GAArB,qBAAqB;QACrB,IAAQ,CAAA,QAAA,GAAR,QAAQ;AAjCnB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAE;AAClC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAE;AAShD,QAAA,IAAA,CAAA,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;AACzC,QAAA,IAAA,CAAA,kBAAkB,GAAG,OAAO,CAAC,wBAAwB,CAAC;AACtD,QAAA,IAAA,CAAA,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;AACzC,QAAA,IAAA,CAAA,gBAAgB,GAAG,OAAO,CAAC,0BAA0B,CAAC;AACtD,QAAA,IAAA,CAAA,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;AACnC,QAAA,IAAA,CAAA,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;AAEvC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AACnD,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAgB,EAAE,CAAC;QAExD,IAAc,CAAA,cAAA,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CACjF,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAI;AAC7B,YAAA,OAAO;AACJ,iBAAA,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;iBAC3E,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC,SAAC,CAAC,EACF,GAAG,CAAC,QAAQ,IAAG;YACb,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;SAC7C,CAAC,CACH;;IAOD,QAAQ,GAAA;QACN,IAAI,CAAC,kBAAkB,EAAE;;IAG3B,aAAa,GAAA;AACX,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK;AACrC,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAG;AAChF,YAAA,IAAI,CAAC,UAAU,GAAG,MAAM;YACxB,IAAI,CAAC,UAAU,EAAE;AACnB,SAAC,CAAC;;IAGJ,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;QACzE,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;;AAG/C,IAAA,YAAY,CAAC,EAAE,EAAA;AACb,QAAA,IAAI,EAAE,CAAC,QAAQ,EAAE;;AAEf,YAAA,EAAE,CAAC,UAAU,GAAG,EAAE;AAClB,YAAA,EAAE,CAAC,QAAQ,GAAG,KAAK;YACnB,IAAI,CAAC,UAAU,EAAE;;aACZ;AACL,YAAA,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAG;gBACnD,IAAI,CAAC,UAAU,EAAE;AACnB,aAAC,CAAC;AACF,YAAA,EAAE,CAAC,QAAQ,GAAG,IAAI;;;IAItB,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAG;AAClD,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC7B,SAAC,CAAC;;AAGJ,IAAA,WAAW,CAAC,OAAO,EAAA;AACjB,QAAA,IAAI,OAAO,CAAC,YAAY,EAAE;YACxB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;;QAEtD,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC1C,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,EAAE;;QAE9C,IAAI,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,kBAAkB,EAAE;AACvD,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;QAE/D,IAAI,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,EAAE;AAC7C,YAAA,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;;IAIrF,iBAAiB,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC;;AAE/F,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,YAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,0BAA0B,CACzD,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,kBAAkB,CACxB;AACD,YAAA,IAAI,CAAC,qBAAqB,GAAG,SAAS,CACpC,mBAAmB,EACnB,IAAI,CAAC,kBAAkB,EACvB,CAAC,QAAQ,EAAE,QAAQ,KAAI;gBACrB,IAAI,QAAQ,EAAE;oBACZ,IAAI,QAAQ,EAAE;AACZ,wBAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;;oBAEtD,OAAO,QAAQ,CAAC,KAAK;;AAEvB,gBAAA,OAAO,QAAQ;AACjB,aAAC,CACF;;;IAIL,0BAA0B,CAAC,QAAQ,EAAE,aAAa,EAAA;QAChD,OAAO,MAAM,CACX,QAAQ,EACR,CAAC,cAAc,EAAE,KAAK,KAAI;;AAExB,YAAA,IAAI,KAAK,GAAG,KAAK,CAAC,aAAa;AAC/B,YAAA,KAAK,GAAGA,KAAI,CAAC,KAAK,EAAE,KAAK,IAAI,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;AAC1D,YAAA,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC;YAC/B,KAAK,GAAGA,KAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;AACtC,YAAA,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AACtB,YAAA,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;AAC3B,YAAA,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK;AAChC,YAAA,OAAO,cAAc;SACtB,EACD,EAAE,CACH;;IAGH,OAAO,CAAC,EAAE,EAAE,eAAe,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AAC7B,YAAA,eAAe,EAAE,eAAe;YAChC,KAAK,EAAE,EAAE,CAAC;AACX,SAAA,CAAC;;AAGJ,IAAA,WAAW,CAAC,KAAK,EAAA;AACf,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,YAAA,OAAO,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;;AAE9D,QAAA,OAAO,IAAI;;+GAvJF,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,+ZCvCpC,wmGAsFA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED1DI,KAAK,EACL,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,2EACP,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,aAAa,EACb,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,2LACrB,mBAAmB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACnB,gBAAgB,EAChB,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,SAAS,yCACT,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAGA,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAfnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,+BAA+B,EAEhC,OAAA,EAAA;wBACP,KAAK;wBACL,OAAO;wBACP,IAAI;wBACJ,aAAa;wBACb,qBAAqB;wBACrB,mBAAmB;wBACnB,gBAAgB;wBAChB,SAAS;wBACT;AACD,qBAAA,EAAA,QAAA,EAAA,wmGAAA,EAAA;;0BA0CE;;0BACA;yCAxCM,IAAI,EAAA,CAAA;sBAAZ;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,kBAAkB,EAAA,CAAA;sBAA1B;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBACS,aAAa,EAAA,CAAA;sBAAtB;gBACS,iBAAiB,EAAA,CAAA;sBAA1B;;;MExCU,eAAe,CAAA;+GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAFhB,OAAA,EAAA,CAAA,UAAU,EAAE,qBAAqB,EAAE,uBAAuB,CAAA,EAAA,CAAA,CAAA;gHAEzD,eAAe,EAAA,OAAA,EAAA,CAFhB,UAAU,EAAyB,uBAAuB,CAAA,EAAA,CAAA,CAAA;;4FAEzD,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,UAAU,EAAE,qBAAqB,EAAE,uBAAuB;AACrE,iBAAA;;;ACPD;;AAEG;;;;"}
1
+ {"version":3,"file":"c8y-ngx-components-user-roles.mjs","sources":["../../user-roles/inventory-role-selector/inventory-role-selector.component.ts","../../user-roles/roles-asset-tree/roles-asset-tree.component.ts","../../user-roles/roles-asset-tree/roles-asset-tree.component.html","../../user-roles/user-roles.module.ts","../../user-roles/c8y-ngx-components-user-roles.ts"],"sourcesContent":["import { Directive, ElementRef, EventEmitter, Injector, Input, Output } from '@angular/core';\nimport { UpgradeComponent } from '@angular/upgrade/static';\n\n@Directive({ selector: 'c8y-inventory-role-selector-upgraded' })\nexport class InventoryRoleSelector extends UpgradeComponent {\n @Input() assignedRoles: any;\n @Input() inheritedRoles: any;\n @Input() inventoryRoles: any;\n @Input() ownerAllowedRoles: any;\n @Input() disableEditForExternalUsers: any;\n @Output() onApply: EventEmitter<any>;\n\n constructor(elementRef: ElementRef, injector: Injector) {\n super('c8yInventoryRoleSelector', elementRef, injector);\n }\n}\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Optional, Output } from '@angular/core';\nimport { gettext, IconDirective, EmptyStateComponent, C8yTranslatePipe } from '@c8y/ngx-components';\n\nimport {\n mergeWith,\n map as _map,\n filter,\n flatten,\n uniqBy,\n identity,\n property,\n get,\n reduce\n} from 'lodash-es';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\nimport { IIdentified } from '@c8y/client';\nimport {\n Ng1RolesService,\n Ng1UserInventoryRolesService\n} from '@c8y/ngx-components/upgrade/upgraded-services';\nimport { NgFor, NgStyle, NgIf, AsyncPipe, SlicePipe } from '@angular/common';\nimport { InventoryRoleSelector } from '../inventory-role-selector/inventory-role-selector.component';\n\n@Component({\n selector: 'c8y-roles-asset-tree-upgraded',\n templateUrl: './roles-asset-tree.component.html',\n imports: [\n NgFor,\n NgStyle,\n NgIf,\n IconDirective,\n InventoryRoleSelector,\n EmptyStateComponent,\n C8yTranslatePipe,\n AsyncPipe,\n SlicePipe\n ]\n})\nexport class RolesAssetTreeComponent implements OnInit, OnChanges {\n @Input() user;\n @Input() searchFilter;\n @Input() assignedRoles;\n @Input() ownerAssignedRoles;\n @Input() expandGroups;\n @Input() pageSize;\n @Input() paginationOffset;\n @Input() disableEditForExternalUsers = false;\n @Output() onChangeRoles = new EventEmitter();\n @Output() onChangeItemCount = new EventEmitter();\n\n rootGroups;\n flatAssetTree;\n inventoryRoles;\n loadingAssetTree;\n inheritedRoles;\n ownerAllAssignedRoles;\n\n noSubgroupTitle = gettext('No subgroups');\n manySubgroupsTitle = gettext('Subgroups: {{ count }}');\n oneSubgroupTitle = gettext('Subgroup: 1');\n clickToOpenTitle = gettext('Click to fetch subgroups');\n expandAriaLabel = gettext('Expand');\n collapseAriaLabel = gettext('Collapse');\n\n searchTermSubject = new BehaviorSubject<string>('');\n flatTreeSubject = new BehaviorSubject<IIdentified[]>([]);\n\n flatAssetTree$ = combineLatest([this.searchTermSubject, this.flatTreeSubject]).pipe(\n map(([searchTerm, flatTree]) => {\n return flatTree\n .filter(group => group.name.toLowerCase().includes(searchTerm.toLowerCase()))\n .filter(this.filterAsset.bind(this));\n }),\n tap(flatTree => {\n this.onChangeItemCount.emit(flatTree.length);\n })\n );\n\n constructor(\n @Optional() public c8yUserInventoryRoles: Ng1UserInventoryRolesService,\n @Optional() public c8yRoles: Ng1RolesService\n ) {}\n\n ngOnInit() {\n this.loadInventoryRoles();\n }\n\n loadAssetTree() {\n const onlyRootsUser = this.user.owner;\n return this.c8yUserInventoryRoles.listRootGroups({ onlyRootsUser }).then(result => {\n this.rootGroups = result;\n this.updateTree();\n });\n }\n\n updateTree() {\n this.flatAssetTree = this.c8yUserInventoryRoles.flatTree(this.rootGroups);\n this.setInheritedRoles();\n this.flatTreeSubject.next(this.flatAssetTree);\n }\n\n loadChildren(mo) {\n if (mo.isOpened) {\n // eslint-disable-next-line no-underscore-dangle\n mo._subGroups = [];\n mo.isOpened = false;\n this.updateTree();\n } else {\n this.c8yUserInventoryRoles.loadChildren(mo).then(_ => {\n this.updateTree();\n });\n mo.isOpened = true;\n }\n }\n\n loadInventoryRoles() {\n this.c8yRoles.list({ pageSize: 1000 }).then(roles => {\n this.inventoryRoles = roles;\n });\n }\n\n ngOnChanges(changes) {\n if (changes.searchFilter) {\n this.searchTermSubject.next(this.searchFilter || '');\n }\n if (changes.user && !this.loadingAssetTree) {\n this.loadingAssetTree = this.loadAssetTree();\n }\n if (changes.assignedRoles || changes.ownerAssignedRoles) {\n this.loadingAssetTree.then(this.setInheritedRoles.bind(this));\n }\n if (changes.expandGroups && this.expandGroups) {\n this.c8yUserInventoryRoles.expandAll(this.rootGroups, this.updateTree.bind(this));\n }\n }\n\n setInheritedRoles() {\n if (this.assignedRoles) {\n this.inheritedRoles = this.getInventoryInheritedRoles(this.flatAssetTree, this.assignedRoles);\n }\n if (this.ownerAssignedRoles) {\n const ownerInheritedRoles = this.getInventoryInheritedRoles(\n this.flatAssetTree,\n this.ownerAssignedRoles\n );\n this.ownerAllAssignedRoles = mergeWith(\n ownerInheritedRoles,\n this.ownerAssignedRoles,\n (objValue, srcValue) => {\n if (srcValue) {\n if (objValue) {\n return uniqBy(objValue.concat(srcValue.roles), 'id');\n }\n return srcValue.roles;\n }\n return objValue;\n }\n );\n }\n }\n\n getInventoryInheritedRoles(flatTree, assignedRoles) {\n return reduce(\n flatTree,\n (inheritedRoles, asset) => {\n // eslint-disable-next-line no-underscore-dangle\n let chain = asset._parentGroups;\n chain = _map(chain, group => get(assignedRoles, group.id));\n chain = filter(chain, identity);\n chain = _map(chain, property('roles'));\n chain = flatten(chain);\n chain = uniqBy(chain, 'id');\n inheritedRoles[asset.id] = chain;\n return inheritedRoles;\n },\n {}\n );\n }\n\n onApply(ev, managedObjectId) {\n return this.onChangeRoles.emit({\n managedObjectId: managedObjectId,\n roles: ev.roles\n });\n }\n\n filterAsset(asset) {\n if (this.ownerAllAssignedRoles) {\n return get(this.ownerAllAssignedRoles, [asset.id, 'length']);\n }\n return true;\n }\n}\n","<div class=\"c8y-list__group m-b-0 no-border-last\">\n <div\n class=\"c8y-list__item\"\n *ngFor=\"\n let asset of flatAssetTree$ | async | slice: paginationOffset:paginationOffset + pageSize\n \"\n >\n <div\n class=\"c8y-list__item__block\"\n [title]=\"\n (asset._subGroups && asset.isOpened\n ? asset._subGroups.length\n ? asset._subGroups.length > 1\n ? manySubgroupsTitle\n : oneSubgroupTitle\n : noSubgroupTitle\n : clickToOpenTitle\n ) | translate: { count: asset._subGroups?.length }\n \"\n >\n <div [ngStyle]=\"{ 'padding-left': asset._depth * 8 + 'px' }\"></div>\n <div class=\"c8y-list__item__icon m-t-4 p-l-0\">\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"(!asset.isOpened ? expandAriaLabel : collapseAriaLabel) | translate\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group\"\n *ngIf=\"!asset.isOpened\"\n ></i>\n <i\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"c8y-group-open\"\n *ngIf=\"asset.isOpened\"\n ></i>\n </button>\n </div>\n <div class=\"c8y-list__item__body\">\n <div class=\"d-flex a-i-center\">\n <div class=\"col-sm-7 p-l-0 col-xs-12\">\n <button\n class=\"btn-clean\"\n type=\"button\"\n (click)=\"loadChildren(asset)\"\n >\n <span\n class=\"text-truncate\"\n [ngStyle]=\"{ cursor: 'pointer' }\"\n title=\"{{ asset.name }}\"\n >\n {{ asset.name }}\n </span>\n </button>\n </div>\n <div class=\"p-t-8 col-xs-12 visible-xs\"></div>\n <div class=\"col-sm-5 p-l-0 col-xs-12 p-r-0\">\n <div class=\"d-flex\">\n <div class=\"flex-grow form-group-sm max-width-100\">\n <c8y-inventory-role-selector-upgraded\n [ownerAllowedRoles]=\"\n ownerAllAssignedRoles ? ownerAllAssignedRoles[asset.id] : undefined\n \"\n [inheritedRoles]=\"inheritedRoles ? inheritedRoles[asset.id] : undefined\"\n [assignedRoles]=\"assignedRoles ? assignedRoles[asset.id] : undefined\"\n [inventoryRoles]=\"inventoryRoles\"\n [disableEditForExternalUsers]=\"disableEditForExternalUsers\"\n (onApply)=\"onApply($event, asset.id)\"\n (click)=\"$event.stopPropagation()\"\n ></c8y-inventory-role-selector-upgraded>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No matching group found among the expanded groups.' | translate\"\n [subtitle]=\"'Try to expand more groups or to refine your search term.' | translate\"\n *ngIf=\"searchFilter && !(flatAssetTree$ | async).length\"\n [horizontal]=\"false\"\n ></c8y-ui-empty-state>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { InventoryRoleSelector } from './inventory-role-selector/inventory-role-selector.component';\nimport { RolesAssetTreeComponent } from './roles-asset-tree/roles-asset-tree.component';\n\n@NgModule({\n imports: [CoreModule, InventoryRoleSelector, RolesAssetTreeComponent]\n})\nexport class UserRolesModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_map"],"mappings":"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"}
@@ -232,7 +232,7 @@ class DatapointsGraphWidgetConfigComponent {
232
232
  (this.config?.datapoints?.filter(dp => dp.__active)?.length || 0) > 0;
233
233
  }
234
234
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DatapointsGraphWidgetConfigComponent, deps: [{ token: i1.WidgetConfigComponent, optional: true }, { token: i1.ContextDashboardComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
235
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: DatapointsGraphWidgetConfigComponent, isStandalone: true, selector: "c8y-datapoints-graph-widget-config", inputs: { config: "config" }, host: { classAttribute: "d-contents" }, providers: [ChartEventsService, ChartAlarmsService], viewQueries: [{ propertyName: "previewMapSet", first: true, predicate: ["dataPointsGraphPreview"], descendants: true }], ngImport: i0, template: "<div class=\"no-card-context\">\n <div class=\"conf-col\">\n <form [formGroup]=\"formGroup\">\n <c8y-datapoint-selection-list\n class=\"separator-bottom d-block\"\n name=\"datapoints\"\n [minActiveCount]=\"1\"\n [defaultFormOptions]=\"datapointSelectDefaultFormOptions\"\n [config]=\"datapointSelectionConfig\"\n formControlName=\"datapoints\"\n ></c8y-datapoint-selection-list>\n\n <c8y-alarm-event-selection-list\n class=\"separator-bottom d-block\"\n name=\"alarms\"\n formControlName=\"alarms\"\n [timelineType]=\"'ALARM'\"\n [datapoints]=\"config?.datapoints\"\n ></c8y-alarm-event-selection-list>\n\n <c8y-alarm-event-selection-list\n class=\"bg-inherit\"\n name=\"events\"\n formControlName=\"events\"\n [timelineType]=\"'EVENT'\"\n [datapoints]=\"config?.datapoints\"\n ></c8y-alarm-event-selection-list>\n\n <label\n [title]=\"'Number of decimal places' | translate\"\n translate\n >\n Number of decimal places\n </label>\n <input\n class=\"form-control\"\n name=\"numberOfDecimalPlaces\"\n type=\"number\"\n formControlName=\"numberOfDecimalPlaces\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 1 }\"\n />\n <c8y-messages\n [show]=\"\n formGroup.controls?.numberOfDecimalPlaces?.touched &&\n formGroup?.controls?.numberOfDecimalPlaces?.errors\n \"\n ></c8y-messages>\n </form>\n </div>\n\n <div class=\"p-t-32 separator-top\">\n <div class=\"d-col fit-h\">\n <div class=\"form-group p-t-8 form-group-sm d-flex a-i-center m-b-8\">\n <div class=\"d-flex a-i-center m-r-4\">\n <label\n class=\"m-b-0\"\n translate\n >\n Date selection\n </label>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"dateSelectionHelpTemplate\"\n placement=\"bottom\"\n triggers=\"focus\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n ></button>\n </div>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control input-sm\"\n [ngModel]=\"dateSelection\"\n (ngModelChange)=\"dateSelectionChange($event)\"\n [ngModelOptions]=\"{ standalone: true }\"\n >\n <option\n title=\"{{ 'Dashboard time range' | translate }}\"\n [value]=\"DATE_SELECTION.DASHBOARD_CONTEXT\"\n >\n {{ 'Dashboard time range' | translate }}\n </option>\n <option\n title=\"{{ 'Widget configuration' | translate }}\"\n [value]=\"DATE_SELECTION.CONFIG\"\n >\n {{ 'Widget configuration' | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n <label\n class=\"text-12\"\n *ngIf=\"dateSelection === DATE_SELECTION.CONFIG\"\n >\n {{ 'Options' | translate }}\n </label>\n <c8y-time-context\n *ngIf=\"dateSelection === DATE_SELECTION.CONFIG\"\n [changedDateContext]=\"timeProps\"\n [controlsAvailable]=\"{\n realtime: true,\n timeRange: true,\n interval: true,\n aggregation: true\n }\"\n (contextChange)=\"timePropsChanged($event)\"\n ></c8y-time-context>\n\n <form\n class=\"d-block p-t-16\"\n [formGroup]=\"formGroup\"\n >\n <label>{{ 'Display options' | translate }}</label>\n <fieldset class=\"c8y-fieldset m-b-24 m-t-0\">\n <legend>{{ 'Axis' | translate }}</legend>\n <c8y-form-group class=\"p-b-16 m-b-0 p-t-8 form-group-sm\">\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Y-axis helper lines' | translate\"\n >\n <input\n name=\"yAxisSplitLines\"\n type=\"checkbox\"\n formControlName=\"yAxisSplitLines\"\n />\n <span></span>\n <span translate>Y-axis helper lines</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'X-axis helper lines' | translate\"\n >\n <input\n name=\"xAxisSplitLines\"\n type=\"checkbox\"\n formControlName=\"xAxisSplitLines\"\n />\n <span></span>\n <span translate>X-axis helper lines</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Merge matching data points into single axis' | translate\"\n >\n <input\n name=\"mergeMatchingDatapoints\"\n type=\"checkbox\"\n formControlName=\"mergeMatchingDatapoints\"\n />\n <span></span>\n <span translate>Merge matching data points into single axis</span>\n <button\n class=\"btn-dot m-l-8\"\n [attr.aria-label]=\"\n 'Data points with the same min and max values will be merged into a single axis. The values must be defined in the data point configuration.'\n | translate\n \"\n [tooltip]=\"\n 'Data points with the same min and max values will be merged into a single axis. The values must be defined in the data point configuration.'\n | translate\n \"\n container=\"body\"\n type=\"button\"\n (click)=\"$event.stopPropagation()\"\n [adaptivePosition]=\"false\"\n >\n <i\n class=\"text-info\"\n c8yIcon=\"info\"\n ></i>\n </button>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Force merge all data points into single axis' | translate\"\n >\n <input\n name=\"forceMergeDatapoints\"\n type=\"checkbox\"\n formControlName=\"forceMergeDatapoints\"\n />\n <span></span>\n <span translate>Force merge all datapoints into a single axis</span>\n <button\n class=\"btn-dot m-l-8\"\n [attr.aria-label]=\"\n 'All axes will be force merged to a single axis with the scale being set to the max and min value of all axes. It\\'s recommended to use this option for data points with similar values.'\n | translate\n \"\n [tooltip]=\"\n 'All axes will be force merged to a single axis with the scale being set to the max and min value of all axes. It\\'s recommended to use this option for data points with similar values.'\n | translate\n \"\n container=\"body\"\n type=\"button\"\n (click)=\"$event.stopPropagation()\"\n [adaptivePosition]=\"false\"\n >\n <i\n class=\"text-info\"\n c8yIcon=\"info\"\n ></i>\n </button>\n </label>\n </c8y-form-group>\n </fieldset>\n <fieldset class=\"c8y-fieldset m-b-24 m-t-0\">\n <legend>{{ 'Alarms & events' | translate }}</legend>\n <c8y-form-group class=\"p-b-16 m-b-0 p-t-8 form-group-sm\">\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Show vertical line on every occurrence' | translate\"\n >\n <input\n name=\"displayMarkedLine\"\n type=\"checkbox\"\n formControlName=\"displayMarkedLine\"\n />\n <span></span>\n <span translate>Show vertical line on every occurrence</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Show icon when triggered' | translate\"\n >\n <input\n name=\"displayMarkedPoint\"\n type=\"checkbox\"\n formControlName=\"displayMarkedPoint\"\n />\n <span></span>\n <span translate>Show icon when triggered</span>\n <button\n class=\"btn-clean m-l-8\"\n [attr.aria-label]=\"\n 'Some alarms or events have no matching data points. No icons will be shown for them.'\n | translate\n \"\n [tooltip]=\"\n 'Some alarms or events have no matching data points. No icons will be shown for them.'\n | translate\n \"\n container=\"body\"\n type=\"button\"\n *ngIf=\"alarmsOrEventsHaveNoMatchingDps\"\n (click)=\"$event.stopPropagation()\"\n [adaptivePosition]=\"false\"\n >\n <input\n name=\"yAxisSplitLines\"\n type=\"checkbox\"\n formControlName=\"yAxisSplitLines\"\n />\n <span></span>\n <span translate>Y-axis helper lines</span>\n </button>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'X-axis helper lines' | translate\"\n >\n <input\n name=\"xAxisSplitLines\"\n type=\"checkbox\"\n formControlName=\"xAxisSplitLines\"\n />\n <span></span>\n <span translate>X-axis helper lines</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Merge matching data points into single axis' | translate\"\n >\n <input\n name=\"mergeMatchingDatapoints\"\n type=\"checkbox\"\n formControlName=\"mergeMatchingDatapoints\"\n />\n <span></span>\n <span translate>Merge matching data points into single axis</span>\n </label>\n </c8y-form-group>\n </fieldset>\n <fieldset class=\"c8y-fieldset m-b-24 m-t-0\">\n <legend>{{ 'Alarms & events' | translate }}</legend>\n <c8y-form-group class=\"p-b-16 m-b-0 p-t-8 form-group-sm\">\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Show vertical line on every occurrence' | translate\"\n >\n <input\n name=\"displayMarkedLine\"\n type=\"checkbox\"\n formControlName=\"displayMarkedLine\"\n />\n <span></span>\n <span translate>Show vertical line on every occurrence</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Show icon when triggered' | translate\"\n >\n <input\n name=\"displayMarkedPoint\"\n type=\"checkbox\"\n formControlName=\"displayMarkedPoint\"\n />\n <span></span>\n <span translate>Show icon when triggered</span>\n <button\n class=\"btn-clean m-l-8\"\n [attr.aria-label]=\"\n 'Some alarms or events have no matching data points. No icons will be shown for them.'\n | translate\n \"\n [tooltip]=\"\n 'Some alarms or events have no matching data points. No icons will be shown for them.'\n | translate\n \"\n container=\"body\"\n type=\"button\"\n *ngIf=\"alarmsOrEventsHaveNoMatchingDps\"\n (click)=\"$event.stopPropagation()\"\n [adaptivePosition]=\"false\"\n >\n <i\n class=\"text-warning\"\n c8yIcon=\"exclamation-triangle\"\n ></i>\n </button>\n </label>\n </c8y-form-group>\n </fieldset>\n <fieldset class=\"c8y-fieldset m-b-24 m-t-0\">\n <legend>{{ 'Chart' | translate }}</legend>\n <c8y-form-group class=\"p-b-16 m-b-0 p-t-8 form-group-sm\">\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Enable date selection in the widget view.' | translate\"\n >\n <input\n name=\"displayDateSelection\"\n type=\"checkbox\"\n formControlName=\"displayDateSelection\"\n />\n <span></span>\n <span translate>Date selection in the widget view.</span>\n <button\n class=\"btn-clean m-l-8\"\n [attr.aria-label]=\"\n 'Date selection in widget view is not possible when using dashboard time range.'\n | translate\n \"\n [tooltip]=\"\n 'Date selection in widget view is not possible when using dashboard time range.'\n | translate\n \"\n container=\"body\"\n type=\"button\"\n *ngIf=\"dateSelection === DATE_SELECTION.DASHBOARD_CONTEXT\"\n (click)=\"$event.stopPropagation()\"\n [adaptivePosition]=\"false\"\n >\n <i\n class=\"text-info\"\n c8yIcon=\"info\"\n ></i>\n </button>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Aggregation selection' | translate\"\n >\n <input\n name=\"displayAggregationSelection\"\n type=\"checkbox\"\n formControlName=\"displayAggregationSelection\"\n />\n <span></span>\n <span translate>Aggregation selection</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Show labels and units' | translate\"\n >\n <input\n name=\"showLabelAndUnit\"\n type=\"checkbox\"\n formControlName=\"showLabelAndUnit\"\n />\n <span></span>\n <span translate>Display labels and units on Y-axis</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Show slider' | translate\"\n >\n <input\n name=\"showSlider\"\n type=\"checkbox\"\n formControlName=\"showSlider\"\n />\n <span></span>\n <span translate>Show slider</span>\n </label>\n </c8y-form-group>\n </fieldset>\n </form>\n </div>\n </div>\n</div>\n\n<ng-template #dataPointsGraphPreview>\n <c8y-charts\n class=\"d-block p-relative\"\n *ngIf=\"activeDatapointsExists\"\n [config]=\"config\"\n [alerts]=\"alerts\"\n (timeRangeChangeOnRealtime)=\"updateTimeRangeOnRealtime($event)\"\n (configChangeOnZoomOut)=\"updateDashboardTimeContext($event)\"\n ></c8y-charts>\n\n <c8y-ui-empty-state\n class=\"d-block m-t-24\"\n [icon]=\"'search'\"\n [title]=\"'No data points selected' | translate\"\n [subtitle]=\"'Select data point to render chart' | translate\"\n *ngIf=\"!activeDatapointsExists\"\n ></c8y-ui-empty-state>\n</ng-template>\n\n<ng-template #dateSelectionHelpTemplate>\n <div [innerHTML]=\"dateSelectionHelp\"></div>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.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: i4.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: i2.MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: i2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5$1.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i6.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: ChartsComponent, selector: "c8y-charts", inputs: ["config", "alerts"], outputs: ["configChangeOnZoomOut", "timeRangeChangeOnRealtime", "datapointOutOfSync", "updateAlarmsAndEvents", "isMarkedAreaEnabled"] }, { kind: "ngmodule", type: DatapointSelectorModule }, { kind: "component", type: i7.DatapointSelectionListComponent, selector: "c8y-datapoint-selection-list", inputs: ["actions", "allowDragAndDrop", "config", "defaultFormOptions", "maxActiveCount", "minActiveCount", "resolveContext", "listTitle"], outputs: ["isValid", "change"] }, { kind: "ngmodule", type: AlarmEventSelectorModule }, { kind: "component", type: i8.AlarmEventSelectionListComponent, selector: "c8y-alarm-event-selection-list", inputs: ["timelineType", "canRemove", "canEdit", "canDragAndDrop", "title", "addButtonLabel", "hideSource", "inline", "activeToggleAsSwitch", "omitProperties", "datapoints", "config"] }, { kind: "component", type: TimeContextComponent, selector: "c8y-time-context", inputs: ["changedDateContext", "controlsAvailable", "context"], outputs: ["contextChange"] }] }); }
235
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: DatapointsGraphWidgetConfigComponent, isStandalone: true, selector: "c8y-datapoints-graph-widget-config", inputs: { config: "config" }, host: { classAttribute: "d-contents" }, providers: [ChartEventsService, ChartAlarmsService], viewQueries: [{ propertyName: "previewMapSet", first: true, predicate: ["dataPointsGraphPreview"], descendants: true }], ngImport: i0, template: "<div class=\"no-card-context\">\n <div class=\"conf-col\">\n <form [formGroup]=\"formGroup\">\n <c8y-datapoint-selection-list\n class=\"separator-bottom d-block\"\n name=\"datapoints\"\n [minActiveCount]=\"1\"\n [defaultFormOptions]=\"datapointSelectDefaultFormOptions\"\n [config]=\"datapointSelectionConfig\"\n formControlName=\"datapoints\"\n ></c8y-datapoint-selection-list>\n\n <c8y-alarm-event-selection-list\n class=\"separator-bottom d-block\"\n name=\"alarms\"\n formControlName=\"alarms\"\n [timelineType]=\"'ALARM'\"\n [datapoints]=\"config?.datapoints\"\n ></c8y-alarm-event-selection-list>\n\n <c8y-alarm-event-selection-list\n class=\"bg-inherit\"\n name=\"events\"\n formControlName=\"events\"\n [timelineType]=\"'EVENT'\"\n [datapoints]=\"config?.datapoints\"\n ></c8y-alarm-event-selection-list>\n\n <label\n [title]=\"'Number of decimal places' | translate\"\n translate\n >\n Number of decimal places\n </label>\n <input\n class=\"form-control\"\n name=\"numberOfDecimalPlaces\"\n type=\"number\"\n formControlName=\"numberOfDecimalPlaces\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 1 }\"\n />\n <c8y-messages\n [show]=\"\n formGroup.controls?.numberOfDecimalPlaces?.touched &&\n formGroup?.controls?.numberOfDecimalPlaces?.errors\n \"\n ></c8y-messages>\n </form>\n </div>\n\n <div class=\"p-t-32 separator-top\">\n <div class=\"d-col fit-h\">\n <div class=\"form-group p-t-8 form-group-sm d-flex a-i-center m-b-8\">\n <div class=\"d-flex a-i-center m-r-4\">\n <label\n class=\"m-b-0\"\n translate\n >\n Date selection\n </label>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"dateSelectionHelpTemplate\"\n placement=\"bottom\"\n triggers=\"focus\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n ></button>\n </div>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control input-sm\"\n [ngModel]=\"dateSelection\"\n (ngModelChange)=\"dateSelectionChange($event)\"\n [ngModelOptions]=\"{ standalone: true }\"\n >\n <option\n title=\"{{ 'Dashboard time range' | translate }}\"\n [value]=\"DATE_SELECTION.DASHBOARD_CONTEXT\"\n >\n {{ 'Dashboard time range' | translate }}\n </option>\n <option\n title=\"{{ 'Widget configuration' | translate }}\"\n [value]=\"DATE_SELECTION.CONFIG\"\n >\n {{ 'Widget configuration' | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n <label\n class=\"text-12\"\n *ngIf=\"dateSelection === DATE_SELECTION.CONFIG\"\n >\n {{ 'Options' | translate }}\n </label>\n <c8y-time-context\n *ngIf=\"dateSelection === DATE_SELECTION.CONFIG\"\n [changedDateContext]=\"timeProps\"\n [controlsAvailable]=\"{\n realtime: true,\n timeRange: true,\n interval: true,\n aggregation: true\n }\"\n (contextChange)=\"timePropsChanged($event)\"\n ></c8y-time-context>\n\n <form\n class=\"d-block p-t-16\"\n [formGroup]=\"formGroup\"\n >\n <label>{{ 'Display options' | translate }}</label>\n <fieldset class=\"c8y-fieldset m-b-24 m-t-0\">\n <legend>{{ 'Axis' | translate }}</legend>\n <c8y-form-group class=\"p-b-16 m-b-0 p-t-8 form-group-sm\">\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Y-axis helper lines' | translate\"\n >\n <input\n name=\"yAxisSplitLines\"\n type=\"checkbox\"\n formControlName=\"yAxisSplitLines\"\n />\n <span></span>\n <span translate>Y-axis helper lines</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'X-axis helper lines' | translate\"\n >\n <input\n name=\"xAxisSplitLines\"\n type=\"checkbox\"\n formControlName=\"xAxisSplitLines\"\n />\n <span></span>\n <span translate>X-axis helper lines</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Merge matching data points into single axis' | translate\"\n >\n <input\n name=\"mergeMatchingDatapoints\"\n type=\"checkbox\"\n formControlName=\"mergeMatchingDatapoints\"\n />\n <span></span>\n <span translate>Merge matching data points into single axis</span>\n <button\n class=\"btn-dot m-l-8\"\n [attr.aria-label]=\"\n 'Data points with the same min and max values will be merged into a single axis. The values must be defined in the data point configuration.'\n | translate\n \"\n [tooltip]=\"\n 'Data points with the same min and max values will be merged into a single axis. The values must be defined in the data point configuration.'\n | translate\n \"\n container=\"body\"\n type=\"button\"\n (click)=\"$event.stopPropagation()\"\n [adaptivePosition]=\"false\"\n >\n <i\n class=\"text-info\"\n c8yIcon=\"info\"\n ></i>\n </button>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Force merge all data points into single axis' | translate\"\n >\n <input\n name=\"forceMergeDatapoints\"\n type=\"checkbox\"\n formControlName=\"forceMergeDatapoints\"\n />\n <span></span>\n <span translate>Force merge all datapoints into a single axis</span>\n <button\n class=\"btn-dot m-l-8\"\n [attr.aria-label]=\"\n 'All axes will be force merged to a single axis with the scale being set to the max and min value of all axes. It\\'s recommended to use this option for data points with similar values.'\n | translate\n \"\n [tooltip]=\"\n 'All axes will be force merged to a single axis with the scale being set to the max and min value of all axes. It\\'s recommended to use this option for data points with similar values.'\n | translate\n \"\n container=\"body\"\n type=\"button\"\n (click)=\"$event.stopPropagation()\"\n [adaptivePosition]=\"false\"\n >\n <i\n class=\"text-info\"\n c8yIcon=\"info\"\n ></i>\n </button>\n </label>\n </c8y-form-group>\n </fieldset>\n <fieldset class=\"c8y-fieldset m-b-24 m-t-0\">\n <legend>{{ 'Alarms & events' | translate }}</legend>\n <c8y-form-group class=\"p-b-16 m-b-0 p-t-8 form-group-sm\">\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Show vertical line on every occurrence' | translate\"\n >\n <input\n name=\"displayMarkedLine\"\n type=\"checkbox\"\n formControlName=\"displayMarkedLine\"\n />\n <span></span>\n <span translate>Show vertical line on every occurrence</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Show icon when triggered' | translate\"\n >\n <input\n name=\"displayMarkedPoint\"\n type=\"checkbox\"\n formControlName=\"displayMarkedPoint\"\n />\n <span></span>\n <span translate>Show icon when triggered</span>\n <button\n class=\"btn-clean m-l-8\"\n [attr.aria-label]=\"\n 'Some alarms or events have no matching data points. No icons will be shown for them.'\n | translate\n \"\n [tooltip]=\"\n 'Some alarms or events have no matching data points. No icons will be shown for them.'\n | translate\n \"\n container=\"body\"\n type=\"button\"\n *ngIf=\"alarmsOrEventsHaveNoMatchingDps\"\n (click)=\"$event.stopPropagation()\"\n [adaptivePosition]=\"false\"\n >\n <i\n class=\"text-warning\"\n c8yIcon=\"exclamation-triangle\"\n ></i>\n </button>\n </label>\n </c8y-form-group>\n </fieldset>\n <fieldset class=\"c8y-fieldset m-b-24 m-t-0\">\n <legend>{{ 'Chart' | translate }}</legend>\n <c8y-form-group class=\"p-b-16 m-b-0 p-t-8 form-group-sm\">\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Enable date selection in the widget view.' | translate\"\n >\n <input\n name=\"displayDateSelection\"\n type=\"checkbox\"\n formControlName=\"displayDateSelection\"\n />\n <span></span>\n <span translate>Date selection in the widget view.</span>\n <button\n class=\"btn-clean m-l-8\"\n [attr.aria-label]=\"\n 'Date selection in widget view is not possible when using dashboard time range.'\n | translate\n \"\n [tooltip]=\"\n 'Date selection in widget view is not possible when using dashboard time range.'\n | translate\n \"\n container=\"body\"\n type=\"button\"\n *ngIf=\"dateSelection === DATE_SELECTION.DASHBOARD_CONTEXT\"\n (click)=\"$event.stopPropagation()\"\n [adaptivePosition]=\"false\"\n >\n <i\n class=\"text-info\"\n c8yIcon=\"info\"\n ></i>\n </button>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Aggregation selection' | translate\"\n >\n <input\n name=\"displayAggregationSelection\"\n type=\"checkbox\"\n formControlName=\"displayAggregationSelection\"\n />\n <span></span>\n <span translate>Aggregation selection</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Show labels and units' | translate\"\n >\n <input\n name=\"showLabelAndUnit\"\n type=\"checkbox\"\n formControlName=\"showLabelAndUnit\"\n />\n <span></span>\n <span translate>Display labels and units on Y-axis</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Show slider' | translate\"\n >\n <input\n name=\"showSlider\"\n type=\"checkbox\"\n formControlName=\"showSlider\"\n />\n <span></span>\n <span translate>Show slider</span>\n </label>\n </c8y-form-group>\n </fieldset>\n </form>\n </div>\n </div>\n</div>\n\n<ng-template #dataPointsGraphPreview>\n <c8y-charts\n class=\"d-block p-relative\"\n *ngIf=\"activeDatapointsExists\"\n [config]=\"config\"\n [alerts]=\"alerts\"\n (timeRangeChangeOnRealtime)=\"updateTimeRangeOnRealtime($event)\"\n (configChangeOnZoomOut)=\"updateDashboardTimeContext($event)\"\n ></c8y-charts>\n\n <c8y-ui-empty-state\n class=\"d-block m-t-24\"\n [icon]=\"'search'\"\n [title]=\"'No data points selected' | translate\"\n [subtitle]=\"'Select data point to render chart' | translate\"\n *ngIf=\"!activeDatapointsExists\"\n ></c8y-ui-empty-state>\n</ng-template>\n\n<ng-template #dateSelectionHelpTemplate>\n <div [innerHTML]=\"dateSelectionHelp\"></div>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.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: i4.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: i2.MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: i2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5$1.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i6.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: ChartsComponent, selector: "c8y-charts", inputs: ["config", "alerts"], outputs: ["configChangeOnZoomOut", "timeRangeChangeOnRealtime", "datapointOutOfSync", "updateAlarmsAndEvents", "isMarkedAreaEnabled"] }, { kind: "ngmodule", type: DatapointSelectorModule }, { kind: "component", type: i7.DatapointSelectionListComponent, selector: "c8y-datapoint-selection-list", inputs: ["actions", "allowDragAndDrop", "config", "defaultFormOptions", "maxActiveCount", "minActiveCount", "resolveContext", "listTitle"], outputs: ["isValid", "change"] }, { kind: "ngmodule", type: AlarmEventSelectorModule }, { kind: "component", type: i8.AlarmEventSelectionListComponent, selector: "c8y-alarm-event-selection-list", inputs: ["timelineType", "canRemove", "canEdit", "canDragAndDrop", "title", "addButtonLabel", "hideSource", "inline", "activeToggleAsSwitch", "omitProperties", "datapoints", "config"] }, { kind: "component", type: TimeContextComponent, selector: "c8y-time-context", inputs: ["changedDateContext", "controlsAvailable", "timeContext", "context"], outputs: ["contextChange"] }] }); }
236
236
  }
237
237
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DatapointsGraphWidgetConfigComponent, decorators: [{
238
238
  type: Component,
@@ -246,7 +246,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
246
246
  DatapointSelectorModule,
247
247
  AlarmEventSelectorModule,
248
248
  TimeContextComponent
249
- ], providers: [ChartEventsService, ChartAlarmsService], template: "<div class=\"no-card-context\">\n <div class=\"conf-col\">\n <form [formGroup]=\"formGroup\">\n <c8y-datapoint-selection-list\n class=\"separator-bottom d-block\"\n name=\"datapoints\"\n [minActiveCount]=\"1\"\n [defaultFormOptions]=\"datapointSelectDefaultFormOptions\"\n [config]=\"datapointSelectionConfig\"\n formControlName=\"datapoints\"\n ></c8y-datapoint-selection-list>\n\n <c8y-alarm-event-selection-list\n class=\"separator-bottom d-block\"\n name=\"alarms\"\n formControlName=\"alarms\"\n [timelineType]=\"'ALARM'\"\n [datapoints]=\"config?.datapoints\"\n ></c8y-alarm-event-selection-list>\n\n <c8y-alarm-event-selection-list\n class=\"bg-inherit\"\n name=\"events\"\n formControlName=\"events\"\n [timelineType]=\"'EVENT'\"\n [datapoints]=\"config?.datapoints\"\n ></c8y-alarm-event-selection-list>\n\n <label\n [title]=\"'Number of decimal places' | translate\"\n translate\n >\n Number of decimal places\n </label>\n <input\n class=\"form-control\"\n name=\"numberOfDecimalPlaces\"\n type=\"number\"\n formControlName=\"numberOfDecimalPlaces\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 1 }\"\n />\n <c8y-messages\n [show]=\"\n formGroup.controls?.numberOfDecimalPlaces?.touched &&\n formGroup?.controls?.numberOfDecimalPlaces?.errors\n \"\n ></c8y-messages>\n </form>\n </div>\n\n <div class=\"p-t-32 separator-top\">\n <div class=\"d-col fit-h\">\n <div class=\"form-group p-t-8 form-group-sm d-flex a-i-center m-b-8\">\n <div class=\"d-flex a-i-center m-r-4\">\n <label\n class=\"m-b-0\"\n translate\n >\n Date selection\n </label>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"dateSelectionHelpTemplate\"\n placement=\"bottom\"\n triggers=\"focus\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n ></button>\n </div>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control input-sm\"\n [ngModel]=\"dateSelection\"\n (ngModelChange)=\"dateSelectionChange($event)\"\n [ngModelOptions]=\"{ standalone: true }\"\n >\n <option\n title=\"{{ 'Dashboard time range' | translate }}\"\n [value]=\"DATE_SELECTION.DASHBOARD_CONTEXT\"\n >\n {{ 'Dashboard time range' | translate }}\n </option>\n <option\n title=\"{{ 'Widget configuration' | translate }}\"\n [value]=\"DATE_SELECTION.CONFIG\"\n >\n {{ 'Widget configuration' | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n <label\n class=\"text-12\"\n *ngIf=\"dateSelection === DATE_SELECTION.CONFIG\"\n >\n {{ 'Options' | translate }}\n </label>\n <c8y-time-context\n *ngIf=\"dateSelection === DATE_SELECTION.CONFIG\"\n [changedDateContext]=\"timeProps\"\n [controlsAvailable]=\"{\n realtime: true,\n timeRange: true,\n interval: true,\n aggregation: true\n }\"\n (contextChange)=\"timePropsChanged($event)\"\n ></c8y-time-context>\n\n <form\n class=\"d-block p-t-16\"\n [formGroup]=\"formGroup\"\n >\n <label>{{ 'Display options' | translate }}</label>\n <fieldset class=\"c8y-fieldset m-b-24 m-t-0\">\n <legend>{{ 'Axis' | translate }}</legend>\n <c8y-form-group class=\"p-b-16 m-b-0 p-t-8 form-group-sm\">\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Y-axis helper lines' | translate\"\n >\n <input\n name=\"yAxisSplitLines\"\n type=\"checkbox\"\n formControlName=\"yAxisSplitLines\"\n />\n <span></span>\n <span translate>Y-axis helper lines</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'X-axis helper lines' | translate\"\n >\n <input\n name=\"xAxisSplitLines\"\n type=\"checkbox\"\n formControlName=\"xAxisSplitLines\"\n />\n <span></span>\n <span translate>X-axis helper lines</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Merge matching data points into single axis' | translate\"\n >\n <input\n name=\"mergeMatchingDatapoints\"\n type=\"checkbox\"\n formControlName=\"mergeMatchingDatapoints\"\n />\n <span></span>\n <span translate>Merge matching data points into single axis</span>\n <button\n class=\"btn-dot m-l-8\"\n [attr.aria-label]=\"\n 'Data points with the same min and max values will be merged into a single axis. The values must be defined in the data point configuration.'\n | translate\n \"\n [tooltip]=\"\n 'Data points with the same min and max values will be merged into a single axis. The values must be defined in the data point configuration.'\n | translate\n \"\n container=\"body\"\n type=\"button\"\n (click)=\"$event.stopPropagation()\"\n [adaptivePosition]=\"false\"\n >\n <i\n class=\"text-info\"\n c8yIcon=\"info\"\n ></i>\n </button>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Force merge all data points into single axis' | translate\"\n >\n <input\n name=\"forceMergeDatapoints\"\n type=\"checkbox\"\n formControlName=\"forceMergeDatapoints\"\n />\n <span></span>\n <span translate>Force merge all datapoints into a single axis</span>\n <button\n class=\"btn-dot m-l-8\"\n [attr.aria-label]=\"\n 'All axes will be force merged to a single axis with the scale being set to the max and min value of all axes. It\\'s recommended to use this option for data points with similar values.'\n | translate\n \"\n [tooltip]=\"\n 'All axes will be force merged to a single axis with the scale being set to the max and min value of all axes. It\\'s recommended to use this option for data points with similar values.'\n | translate\n \"\n container=\"body\"\n type=\"button\"\n (click)=\"$event.stopPropagation()\"\n [adaptivePosition]=\"false\"\n >\n <i\n class=\"text-info\"\n c8yIcon=\"info\"\n ></i>\n </button>\n </label>\n </c8y-form-group>\n </fieldset>\n <fieldset class=\"c8y-fieldset m-b-24 m-t-0\">\n <legend>{{ 'Alarms & events' | translate }}</legend>\n <c8y-form-group class=\"p-b-16 m-b-0 p-t-8 form-group-sm\">\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Show vertical line on every occurrence' | translate\"\n >\n <input\n name=\"displayMarkedLine\"\n type=\"checkbox\"\n formControlName=\"displayMarkedLine\"\n />\n <span></span>\n <span translate>Show vertical line on every occurrence</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Show icon when triggered' | translate\"\n >\n <input\n name=\"displayMarkedPoint\"\n type=\"checkbox\"\n formControlName=\"displayMarkedPoint\"\n />\n <span></span>\n <span translate>Show icon when triggered</span>\n <button\n class=\"btn-clean m-l-8\"\n [attr.aria-label]=\"\n 'Some alarms or events have no matching data points. No icons will be shown for them.'\n | translate\n \"\n [tooltip]=\"\n 'Some alarms or events have no matching data points. No icons will be shown for them.'\n | translate\n \"\n container=\"body\"\n type=\"button\"\n *ngIf=\"alarmsOrEventsHaveNoMatchingDps\"\n (click)=\"$event.stopPropagation()\"\n [adaptivePosition]=\"false\"\n >\n <input\n name=\"yAxisSplitLines\"\n type=\"checkbox\"\n formControlName=\"yAxisSplitLines\"\n />\n <span></span>\n <span translate>Y-axis helper lines</span>\n </button>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'X-axis helper lines' | translate\"\n >\n <input\n name=\"xAxisSplitLines\"\n type=\"checkbox\"\n formControlName=\"xAxisSplitLines\"\n />\n <span></span>\n <span translate>X-axis helper lines</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Merge matching data points into single axis' | translate\"\n >\n <input\n name=\"mergeMatchingDatapoints\"\n type=\"checkbox\"\n formControlName=\"mergeMatchingDatapoints\"\n />\n <span></span>\n <span translate>Merge matching data points into single axis</span>\n </label>\n </c8y-form-group>\n </fieldset>\n <fieldset class=\"c8y-fieldset m-b-24 m-t-0\">\n <legend>{{ 'Alarms & events' | translate }}</legend>\n <c8y-form-group class=\"p-b-16 m-b-0 p-t-8 form-group-sm\">\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Show vertical line on every occurrence' | translate\"\n >\n <input\n name=\"displayMarkedLine\"\n type=\"checkbox\"\n formControlName=\"displayMarkedLine\"\n />\n <span></span>\n <span translate>Show vertical line on every occurrence</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Show icon when triggered' | translate\"\n >\n <input\n name=\"displayMarkedPoint\"\n type=\"checkbox\"\n formControlName=\"displayMarkedPoint\"\n />\n <span></span>\n <span translate>Show icon when triggered</span>\n <button\n class=\"btn-clean m-l-8\"\n [attr.aria-label]=\"\n 'Some alarms or events have no matching data points. No icons will be shown for them.'\n | translate\n \"\n [tooltip]=\"\n 'Some alarms or events have no matching data points. No icons will be shown for them.'\n | translate\n \"\n container=\"body\"\n type=\"button\"\n *ngIf=\"alarmsOrEventsHaveNoMatchingDps\"\n (click)=\"$event.stopPropagation()\"\n [adaptivePosition]=\"false\"\n >\n <i\n class=\"text-warning\"\n c8yIcon=\"exclamation-triangle\"\n ></i>\n </button>\n </label>\n </c8y-form-group>\n </fieldset>\n <fieldset class=\"c8y-fieldset m-b-24 m-t-0\">\n <legend>{{ 'Chart' | translate }}</legend>\n <c8y-form-group class=\"p-b-16 m-b-0 p-t-8 form-group-sm\">\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Enable date selection in the widget view.' | translate\"\n >\n <input\n name=\"displayDateSelection\"\n type=\"checkbox\"\n formControlName=\"displayDateSelection\"\n />\n <span></span>\n <span translate>Date selection in the widget view.</span>\n <button\n class=\"btn-clean m-l-8\"\n [attr.aria-label]=\"\n 'Date selection in widget view is not possible when using dashboard time range.'\n | translate\n \"\n [tooltip]=\"\n 'Date selection in widget view is not possible when using dashboard time range.'\n | translate\n \"\n container=\"body\"\n type=\"button\"\n *ngIf=\"dateSelection === DATE_SELECTION.DASHBOARD_CONTEXT\"\n (click)=\"$event.stopPropagation()\"\n [adaptivePosition]=\"false\"\n >\n <i\n class=\"text-info\"\n c8yIcon=\"info\"\n ></i>\n </button>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Aggregation selection' | translate\"\n >\n <input\n name=\"displayAggregationSelection\"\n type=\"checkbox\"\n formControlName=\"displayAggregationSelection\"\n />\n <span></span>\n <span translate>Aggregation selection</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Show labels and units' | translate\"\n >\n <input\n name=\"showLabelAndUnit\"\n type=\"checkbox\"\n formControlName=\"showLabelAndUnit\"\n />\n <span></span>\n <span translate>Display labels and units on Y-axis</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Show slider' | translate\"\n >\n <input\n name=\"showSlider\"\n type=\"checkbox\"\n formControlName=\"showSlider\"\n />\n <span></span>\n <span translate>Show slider</span>\n </label>\n </c8y-form-group>\n </fieldset>\n </form>\n </div>\n </div>\n</div>\n\n<ng-template #dataPointsGraphPreview>\n <c8y-charts\n class=\"d-block p-relative\"\n *ngIf=\"activeDatapointsExists\"\n [config]=\"config\"\n [alerts]=\"alerts\"\n (timeRangeChangeOnRealtime)=\"updateTimeRangeOnRealtime($event)\"\n (configChangeOnZoomOut)=\"updateDashboardTimeContext($event)\"\n ></c8y-charts>\n\n <c8y-ui-empty-state\n class=\"d-block m-t-24\"\n [icon]=\"'search'\"\n [title]=\"'No data points selected' | translate\"\n [subtitle]=\"'Select data point to render chart' | translate\"\n *ngIf=\"!activeDatapointsExists\"\n ></c8y-ui-empty-state>\n</ng-template>\n\n<ng-template #dateSelectionHelpTemplate>\n <div [innerHTML]=\"dateSelectionHelp\"></div>\n</ng-template>\n" }]
249
+ ], providers: [ChartEventsService, ChartAlarmsService], template: "<div class=\"no-card-context\">\n <div class=\"conf-col\">\n <form [formGroup]=\"formGroup\">\n <c8y-datapoint-selection-list\n class=\"separator-bottom d-block\"\n name=\"datapoints\"\n [minActiveCount]=\"1\"\n [defaultFormOptions]=\"datapointSelectDefaultFormOptions\"\n [config]=\"datapointSelectionConfig\"\n formControlName=\"datapoints\"\n ></c8y-datapoint-selection-list>\n\n <c8y-alarm-event-selection-list\n class=\"separator-bottom d-block\"\n name=\"alarms\"\n formControlName=\"alarms\"\n [timelineType]=\"'ALARM'\"\n [datapoints]=\"config?.datapoints\"\n ></c8y-alarm-event-selection-list>\n\n <c8y-alarm-event-selection-list\n class=\"bg-inherit\"\n name=\"events\"\n formControlName=\"events\"\n [timelineType]=\"'EVENT'\"\n [datapoints]=\"config?.datapoints\"\n ></c8y-alarm-event-selection-list>\n\n <label\n [title]=\"'Number of decimal places' | translate\"\n translate\n >\n Number of decimal places\n </label>\n <input\n class=\"form-control\"\n name=\"numberOfDecimalPlaces\"\n type=\"number\"\n formControlName=\"numberOfDecimalPlaces\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 1 }\"\n />\n <c8y-messages\n [show]=\"\n formGroup.controls?.numberOfDecimalPlaces?.touched &&\n formGroup?.controls?.numberOfDecimalPlaces?.errors\n \"\n ></c8y-messages>\n </form>\n </div>\n\n <div class=\"p-t-32 separator-top\">\n <div class=\"d-col fit-h\">\n <div class=\"form-group p-t-8 form-group-sm d-flex a-i-center m-b-8\">\n <div class=\"d-flex a-i-center m-r-4\">\n <label\n class=\"m-b-0\"\n translate\n >\n Date selection\n </label>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"dateSelectionHelpTemplate\"\n placement=\"bottom\"\n triggers=\"focus\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n ></button>\n </div>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control input-sm\"\n [ngModel]=\"dateSelection\"\n (ngModelChange)=\"dateSelectionChange($event)\"\n [ngModelOptions]=\"{ standalone: true }\"\n >\n <option\n title=\"{{ 'Dashboard time range' | translate }}\"\n [value]=\"DATE_SELECTION.DASHBOARD_CONTEXT\"\n >\n {{ 'Dashboard time range' | translate }}\n </option>\n <option\n title=\"{{ 'Widget configuration' | translate }}\"\n [value]=\"DATE_SELECTION.CONFIG\"\n >\n {{ 'Widget configuration' | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n <label\n class=\"text-12\"\n *ngIf=\"dateSelection === DATE_SELECTION.CONFIG\"\n >\n {{ 'Options' | translate }}\n </label>\n <c8y-time-context\n *ngIf=\"dateSelection === DATE_SELECTION.CONFIG\"\n [changedDateContext]=\"timeProps\"\n [controlsAvailable]=\"{\n realtime: true,\n timeRange: true,\n interval: true,\n aggregation: true\n }\"\n (contextChange)=\"timePropsChanged($event)\"\n ></c8y-time-context>\n\n <form\n class=\"d-block p-t-16\"\n [formGroup]=\"formGroup\"\n >\n <label>{{ 'Display options' | translate }}</label>\n <fieldset class=\"c8y-fieldset m-b-24 m-t-0\">\n <legend>{{ 'Axis' | translate }}</legend>\n <c8y-form-group class=\"p-b-16 m-b-0 p-t-8 form-group-sm\">\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Y-axis helper lines' | translate\"\n >\n <input\n name=\"yAxisSplitLines\"\n type=\"checkbox\"\n formControlName=\"yAxisSplitLines\"\n />\n <span></span>\n <span translate>Y-axis helper lines</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'X-axis helper lines' | translate\"\n >\n <input\n name=\"xAxisSplitLines\"\n type=\"checkbox\"\n formControlName=\"xAxisSplitLines\"\n />\n <span></span>\n <span translate>X-axis helper lines</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Merge matching data points into single axis' | translate\"\n >\n <input\n name=\"mergeMatchingDatapoints\"\n type=\"checkbox\"\n formControlName=\"mergeMatchingDatapoints\"\n />\n <span></span>\n <span translate>Merge matching data points into single axis</span>\n <button\n class=\"btn-dot m-l-8\"\n [attr.aria-label]=\"\n 'Data points with the same min and max values will be merged into a single axis. The values must be defined in the data point configuration.'\n | translate\n \"\n [tooltip]=\"\n 'Data points with the same min and max values will be merged into a single axis. The values must be defined in the data point configuration.'\n | translate\n \"\n container=\"body\"\n type=\"button\"\n (click)=\"$event.stopPropagation()\"\n [adaptivePosition]=\"false\"\n >\n <i\n class=\"text-info\"\n c8yIcon=\"info\"\n ></i>\n </button>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Force merge all data points into single axis' | translate\"\n >\n <input\n name=\"forceMergeDatapoints\"\n type=\"checkbox\"\n formControlName=\"forceMergeDatapoints\"\n />\n <span></span>\n <span translate>Force merge all datapoints into a single axis</span>\n <button\n class=\"btn-dot m-l-8\"\n [attr.aria-label]=\"\n 'All axes will be force merged to a single axis with the scale being set to the max and min value of all axes. It\\'s recommended to use this option for data points with similar values.'\n | translate\n \"\n [tooltip]=\"\n 'All axes will be force merged to a single axis with the scale being set to the max and min value of all axes. It\\'s recommended to use this option for data points with similar values.'\n | translate\n \"\n container=\"body\"\n type=\"button\"\n (click)=\"$event.stopPropagation()\"\n [adaptivePosition]=\"false\"\n >\n <i\n class=\"text-info\"\n c8yIcon=\"info\"\n ></i>\n </button>\n </label>\n </c8y-form-group>\n </fieldset>\n <fieldset class=\"c8y-fieldset m-b-24 m-t-0\">\n <legend>{{ 'Alarms & events' | translate }}</legend>\n <c8y-form-group class=\"p-b-16 m-b-0 p-t-8 form-group-sm\">\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Show vertical line on every occurrence' | translate\"\n >\n <input\n name=\"displayMarkedLine\"\n type=\"checkbox\"\n formControlName=\"displayMarkedLine\"\n />\n <span></span>\n <span translate>Show vertical line on every occurrence</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Show icon when triggered' | translate\"\n >\n <input\n name=\"displayMarkedPoint\"\n type=\"checkbox\"\n formControlName=\"displayMarkedPoint\"\n />\n <span></span>\n <span translate>Show icon when triggered</span>\n <button\n class=\"btn-clean m-l-8\"\n [attr.aria-label]=\"\n 'Some alarms or events have no matching data points. No icons will be shown for them.'\n | translate\n \"\n [tooltip]=\"\n 'Some alarms or events have no matching data points. No icons will be shown for them.'\n | translate\n \"\n container=\"body\"\n type=\"button\"\n *ngIf=\"alarmsOrEventsHaveNoMatchingDps\"\n (click)=\"$event.stopPropagation()\"\n [adaptivePosition]=\"false\"\n >\n <i\n class=\"text-warning\"\n c8yIcon=\"exclamation-triangle\"\n ></i>\n </button>\n </label>\n </c8y-form-group>\n </fieldset>\n <fieldset class=\"c8y-fieldset m-b-24 m-t-0\">\n <legend>{{ 'Chart' | translate }}</legend>\n <c8y-form-group class=\"p-b-16 m-b-0 p-t-8 form-group-sm\">\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Enable date selection in the widget view.' | translate\"\n >\n <input\n name=\"displayDateSelection\"\n type=\"checkbox\"\n formControlName=\"displayDateSelection\"\n />\n <span></span>\n <span translate>Date selection in the widget view.</span>\n <button\n class=\"btn-clean m-l-8\"\n [attr.aria-label]=\"\n 'Date selection in widget view is not possible when using dashboard time range.'\n | translate\n \"\n [tooltip]=\"\n 'Date selection in widget view is not possible when using dashboard time range.'\n | translate\n \"\n container=\"body\"\n type=\"button\"\n *ngIf=\"dateSelection === DATE_SELECTION.DASHBOARD_CONTEXT\"\n (click)=\"$event.stopPropagation()\"\n [adaptivePosition]=\"false\"\n >\n <i\n class=\"text-info\"\n c8yIcon=\"info\"\n ></i>\n </button>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Aggregation selection' | translate\"\n >\n <input\n name=\"displayAggregationSelection\"\n type=\"checkbox\"\n formControlName=\"displayAggregationSelection\"\n />\n <span></span>\n <span translate>Aggregation selection</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Show labels and units' | translate\"\n >\n <input\n name=\"showLabelAndUnit\"\n type=\"checkbox\"\n formControlName=\"showLabelAndUnit\"\n />\n <span></span>\n <span translate>Display labels and units on Y-axis</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Show slider' | translate\"\n >\n <input\n name=\"showSlider\"\n type=\"checkbox\"\n formControlName=\"showSlider\"\n />\n <span></span>\n <span translate>Show slider</span>\n </label>\n </c8y-form-group>\n </fieldset>\n </form>\n </div>\n </div>\n</div>\n\n<ng-template #dataPointsGraphPreview>\n <c8y-charts\n class=\"d-block p-relative\"\n *ngIf=\"activeDatapointsExists\"\n [config]=\"config\"\n [alerts]=\"alerts\"\n (timeRangeChangeOnRealtime)=\"updateTimeRangeOnRealtime($event)\"\n (configChangeOnZoomOut)=\"updateDashboardTimeContext($event)\"\n ></c8y-charts>\n\n <c8y-ui-empty-state\n class=\"d-block m-t-24\"\n [icon]=\"'search'\"\n [title]=\"'No data points selected' | translate\"\n [subtitle]=\"'Select data point to render chart' | translate\"\n *ngIf=\"!activeDatapointsExists\"\n ></c8y-ui-empty-state>\n</ng-template>\n\n<ng-template #dateSelectionHelpTemplate>\n <div [innerHTML]=\"dateSelectionHelp\"></div>\n</ng-template>\n" }]
250
250
  }], ctorParameters: () => [{ type: i1.WidgetConfigComponent, decorators: [{
251
251
  type: Optional
252
252
  }] }, { type: i1.ContextDashboardComponent, decorators: [{
@@ -343,7 +343,7 @@ class DatapointsGraphWidgetViewComponent {
343
343
  this.widgetTimeContextDateRangeService.updateInitialTimeRange(null);
344
344
  }
345
345
  if (timeProps.realtime !== this.displayConfig?.realtime ||
346
- (timeProps.realtime === this.displayConfig?.realtime) === false) {
346
+ (!timeProps.realtime && !this.displayConfig?.realtime)) {
347
347
  const patchValues = {
348
348
  dateFrom: new Date(timeProps.currentDateContextFromDate),
349
349
  dateTo: new Date(timeProps.currentDateContextToDate),
@@ -472,7 +472,7 @@ class DatapointsGraphWidgetViewComponent {
472
472
  return form;
473
473
  }
474
474
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DatapointsGraphWidgetViewComponent, deps: [{ token: i4.FormBuilder }, { token: i2$1.TranslateService }, { token: i2.WidgetTimeContextDateRangeService }, { token: i1.ContextDashboardComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
475
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: DatapointsGraphWidgetViewComponent, isStandalone: true, selector: "c8y-datapoints-graph-widget-view", inputs: { config: "config" }, providers: [ChartEventsService, ChartAlarmsService], viewQueries: [{ propertyName: "chartComponent", first: true, predicate: ChartsComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"p-l-16 p-r-16\">\n <div class=\"d-flex gap-16 a-i-start\">\n <div\n class=\"btn-group btn-group-sm flex-no-shrink\"\n *ngIf=\"\n !displayConfig?.widgetInstanceGlobalTimeContext && displayConfig?.datapoints.length > 0 && displayConfig?.displayDateSelection || displayConfig?.displayAggregationSelection\n \"\n >\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Aggregation' | translate\"\n tooltip=\"{{\n (displayConfig?.aggregation\n ? AGGREGATION_TEXTS[displayConfig.aggregation]\n : AGGREGATION_TEXTS.undefined\n ) | translate\n }}\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n [adaptivePosition]=\"false\"\n [delay]=\"500\"\n >\n <i\n class=\"icon-14\"\n [c8yIcon]=\"\n displayConfig?.aggregation\n ? AGGREGATION_ICONS[displayConfig.aggregation]\n : AGGREGATION_ICONS.undefined\n \"\n ></i>\n </button>\n\n <c8y-time-context\n class=\"d-contents\"\n (contextChange)=\"timePropsChanged($event)\"\n [changedDateContext]=\"timeProps\"\n [controlsAvailable]=\"{\n realtime: true,\n timeRange: displayConfig?.displayDateSelection,\n interval: displayConfig?.displayDateSelection,\n aggregation: displayConfig?.displayAggregationSelection\n }\"\n ></c8y-time-context>\n </div>\n <c8y-alarms-filter\n class=\"d-contents form-group-sm\"\n *ngIf=\"hasAtLeastOneAlarmActive\"\n (filterApplied)=\"filterSeverity($event)\"\n ></c8y-alarms-filter>\n\n <div class=\"m-l-auto btn-group btn-group-sm flex-no-shrink\">\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Save as image' | translate\"\n tooltip=\"{{ 'Save as image' | translate }}\"\n container=\"body\"\n type=\"button\"\n (click)=\"chart.saveAsImage()\"\n [adaptivePosition]=\"false\"\n >\n <i\n class=\"icon-14\"\n c8yIcon=\"image-file-checked\"\n ></i>\n </button>\n </div>\n </div>\n <div\n class=\"d-flex\"\n style=\"align-items: center\"\n *ngIf=\"displayConfig?.datapoints.length > 0\"\n >\n <button\n class=\"btn-help btn-help--sm m-r-8\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"legendHelpTemplate\"\n placement=\"bottom\"\n triggers=\"focus\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n ></button>\n <div class=\"inner-scroll\">\n <div class=\"flex-grow p-t-8 d-flex a-i-start gap-8 p-b-4\">\n <div\n class=\"c8y-datapoint-pill flex-no-shrink\"\n title=\"{{ datapoint.label }} - {{ datapoint.__target.name }}\"\n *ngFor=\"let datapoint of displayConfig.datapoints\"\n [ngClass]=\"{ active: datapoint.__active }\"\n >\n <i\n class=\"text-warning m-l-4\"\n c8yIcon=\"exclamation-triangle\"\n [tooltip]=\"'At least 1 data point must be active.' | translate\"\n container=\"body\"\n *ngIf=\"!hasAtLeastOneDatapointActive && datapoint.__active\"\n [adaptivePosition]=\"false\"\n ></i>\n <button\n class=\"c8y-datapoint-pill__btn\"\n title=\"{{\n (datapoint.__active ? hideDatapointLabel : showDatapointLabel) | translate\n }} \"\n type=\"button\"\n (click)=\"toggleChart(datapoint)\"\n >\n <i\n class=\"icon-14\"\n [c8yIcon]=\"datapoint.__active ? 'eye text-primary' : 'eye-slash text-muted'\"\n ></i>\n </button>\n <div class=\"c8y-datapoint-pill__label c8y-datapoint-pill__btn\">\n <i\n class=\"m-r-4 icon-14\"\n c8yIcon=\"circle\"\n [ngStyle]=\"{\n color: datapoint.color\n }\"\n ></i>\n <span\n class=\"text-truncate\"\n [ngClass]=\"{ 'text-muted': !datapoint.__active }\"\n >\n <span class=\"text-truncate\">\n {{ datapoint.label }}\n </span>\n <small class=\"text-muted text-10\">\n {{ datapoint.__target.name }}\n </small>\n </span>\n <i\n class=\"text-warning m-l-4\"\n c8yIcon=\"exclamation-triangle\"\n [tooltip]=\"\n 'Measurements received for this data point may be out of sync.' | translate\n \"\n container=\"body\"\n *ngIf=\"datapointsOutOfSync.get(datapoint)\"\n [adaptivePosition]=\"false\"\n ></i>\n </div>\n </div>\n <!-- Alarms -->\n\n <ng-container *ngFor=\"let alarm of alarms\">\n <div\n class=\"c8y-alarm-pill flex-no-shrink\"\n title=\"{{ alarm.filters.type }} \"\n *ngIf=\"alarm.__active\"\n >\n <i\n class=\"text-warning m-l-4\"\n c8yIcon=\"exclamation-triangle\"\n [tooltip]=\"\n 'Alarm of this type is currently active and outside of the selected time range'\n | translate\n \"\n container=\"body\"\n *ngIf=\"displayConfig?.activeAlarmTypesOutOfRange?.includes(alarm.filters.type)\"\n [adaptivePosition]=\"false\"\n ></i>\n <button\n class=\"c8y-alarm-pill__btn\"\n title=\"{{ alarm.filters.type }} \"\n type=\"button\"\n (click)=\"toggleAlarmEventType(alarm)\"\n >\n <i\n class=\"icon-14\"\n [c8yIcon]=\"alarm.__hidden ? 'eye-slash text-muted' : 'eye text-primary'\"\n ></i>\n </button>\n <button\n class=\"c8y-alarm-pill__label c8y-alarm-pill__btn\"\n (click)=\"toggleMarkedArea(alarm)\"\n [ngClass]=\"{\n active: !isMarkedAreaEnabled && alarm.filters.type === enabledMarkedAreaAlarmType\n }\"\n >\n <span\n class=\"circle-icon-wrapper circle-icon-wrapper--small m-r-4\"\n [style.background-color]=\"alarm.color\"\n >\n <i\n class=\"stroked-icon\"\n c8yIcon=\"bell\"\n ></i>\n </span>\n <span\n class=\"text-truncate\"\n [ngClass]=\"{ 'text-muted': alarm.__hidden }\"\n >\n <span class=\"text-truncate\">\n {{ alarm.filters.type }}\n </span>\n <small class=\"text-muted text-10\">\n {{ alarm.__target.name }}\n </small>\n </span>\n </button>\n </div>\n </ng-container>\n\n <!-- Events -->\n <ng-container *ngFor=\"let event of events\">\n <div\n class=\"c8y-event-pill flex-no-shrink\"\n title=\"{{ event.filters.type }}\"\n *ngIf=\"event.__active\"\n >\n <button\n class=\"c8y-event-pill__btn\"\n title=\"{{ event.filters.type }} \"\n type=\"button\"\n (click)=\"toggleAlarmEventType(event)\"\n >\n <i\n class=\"icon-14\"\n [c8yIcon]=\"event.__hidden ? 'eye-slash text-muted' : 'eye text-primary'\"\n ></i>\n </button>\n <div class=\"c8y-event-pill__label c8y-event-pill__btn\">\n <span\n class=\"circle-icon-wrapper circle-icon-wrapper--small m-r-4\"\n [ngStyle]=\"{ 'background-color': event.color }\"\n >\n <i\n class=\"stroked-icon\"\n c8yIcon=\"online1\"\n ></i>\n </span>\n <span\n class=\"text-truncate\"\n [ngClass]=\"{ 'text-muted': event.__hidden }\"\n >\n <span class=\"text-truncate\">\n {{ event.filters.type }}\n </span>\n <small class=\"text-muted text-10\">\n {{ event.__target.name }}\n </small>\n </span>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n\n<c8y-charts\n #chart\n [config]=\"displayConfig\"\n [alerts]=\"alerts\"\n (updateAlarmsAndEvents)=\"updateAlarmsAndEvents($event)\"\n (configChangeOnZoomOut)=\"updateDashboardTimeContext($event)\"\n (datapointOutOfSync)=\"handleDatapointOutOfSync($event)\"\n (timeRangeChangeOnRealtime)=\"updateTimeRangeOnRealtime($event)\"\n (isMarkedAreaEnabled)=\"isMarkedAreaEnabled = $event\"\n></c8y-charts>\n\n<ng-template #legendHelpTemplate>\n <div [innerHTML]=\"legendHelp\"></div>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "ngmodule", type: CommonModule$1 }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: ChartsComponent, selector: "c8y-charts", inputs: ["config", "alerts"], outputs: ["configChangeOnZoomOut", "timeRangeChangeOnRealtime", "datapointOutOfSync", "updateAlarmsAndEvents", "isMarkedAreaEnabled"] }, { kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5$1.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "ngmodule", type: BsDropdownModule }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i6.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "ngmodule", type: AlarmsModule }, { kind: "component", type: i8$1.AlarmsFilterComponent, selector: "c8y-alarms-filter", inputs: ["contextSourceId"], outputs: ["onFilterApplied"] }, { kind: "component", type: TimeContextComponent, selector: "c8y-time-context", inputs: ["changedDateContext", "controlsAvailable", "context"], outputs: ["contextChange"] }] }); }
475
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: DatapointsGraphWidgetViewComponent, isStandalone: true, selector: "c8y-datapoints-graph-widget-view", inputs: { config: "config" }, providers: [ChartEventsService, ChartAlarmsService], viewQueries: [{ propertyName: "chartComponent", first: true, predicate: ChartsComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"p-l-16 p-r-16\">\n <div class=\"d-flex gap-16 a-i-start\">\n <div\n class=\"btn-group btn-group-sm flex-no-shrink\"\n *ngIf=\"\n !displayConfig?.widgetInstanceGlobalTimeContext && displayConfig?.datapoints.length > 0 && displayConfig?.displayDateSelection || displayConfig?.displayAggregationSelection\n \"\n >\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Aggregation' | translate\"\n tooltip=\"{{\n (displayConfig?.aggregation\n ? AGGREGATION_TEXTS[displayConfig.aggregation]\n : AGGREGATION_TEXTS.undefined\n ) | translate\n }}\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n [adaptivePosition]=\"false\"\n [delay]=\"500\"\n >\n <i\n class=\"icon-14\"\n [c8yIcon]=\"\n displayConfig?.aggregation\n ? AGGREGATION_ICONS[displayConfig.aggregation]\n : AGGREGATION_ICONS.undefined\n \"\n ></i>\n </button>\n\n <c8y-time-context\n class=\"d-contents\"\n (contextChange)=\"timePropsChanged($event)\"\n [changedDateContext]=\"timeProps\"\n [controlsAvailable]=\"{\n realtime: true,\n timeRange: displayConfig?.displayDateSelection,\n interval: displayConfig?.displayDateSelection,\n aggregation: displayConfig?.displayAggregationSelection\n }\"\n ></c8y-time-context>\n </div>\n <c8y-alarms-filter\n class=\"d-contents form-group-sm\"\n *ngIf=\"hasAtLeastOneAlarmActive\"\n (filterApplied)=\"filterSeverity($event)\"\n ></c8y-alarms-filter>\n\n <div class=\"m-l-auto btn-group btn-group-sm flex-no-shrink\">\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Save as image' | translate\"\n tooltip=\"{{ 'Save as image' | translate }}\"\n container=\"body\"\n type=\"button\"\n (click)=\"chart.saveAsImage()\"\n [adaptivePosition]=\"false\"\n >\n <i\n class=\"icon-14\"\n c8yIcon=\"image-file-checked\"\n ></i>\n </button>\n </div>\n </div>\n <div\n class=\"d-flex\"\n style=\"align-items: center\"\n *ngIf=\"displayConfig?.datapoints.length > 0\"\n >\n <button\n class=\"btn-help btn-help--sm m-r-8\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"legendHelpTemplate\"\n placement=\"bottom\"\n triggers=\"focus\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n ></button>\n <div class=\"inner-scroll\">\n <div class=\"flex-grow p-t-8 d-flex a-i-start gap-8 p-b-4\">\n <div\n class=\"c8y-datapoint-pill flex-no-shrink\"\n title=\"{{ datapoint.label }} - {{ datapoint.__target.name }}\"\n *ngFor=\"let datapoint of displayConfig.datapoints\"\n [ngClass]=\"{ active: datapoint.__active }\"\n >\n <i\n class=\"text-warning m-l-4\"\n c8yIcon=\"exclamation-triangle\"\n [tooltip]=\"'At least 1 data point must be active.' | translate\"\n container=\"body\"\n *ngIf=\"!hasAtLeastOneDatapointActive && datapoint.__active\"\n [adaptivePosition]=\"false\"\n ></i>\n <button\n class=\"c8y-datapoint-pill__btn\"\n title=\"{{\n (datapoint.__active ? hideDatapointLabel : showDatapointLabel) | translate\n }} \"\n type=\"button\"\n (click)=\"toggleChart(datapoint)\"\n >\n <i\n class=\"icon-14\"\n [c8yIcon]=\"datapoint.__active ? 'eye text-primary' : 'eye-slash text-muted'\"\n ></i>\n </button>\n <div class=\"c8y-datapoint-pill__label c8y-datapoint-pill__btn\">\n <i\n class=\"m-r-4 icon-14\"\n c8yIcon=\"circle\"\n [ngStyle]=\"{\n color: datapoint.color\n }\"\n ></i>\n <span\n class=\"text-truncate\"\n [ngClass]=\"{ 'text-muted': !datapoint.__active }\"\n >\n <span class=\"text-truncate\">\n {{ datapoint.label }}\n </span>\n <small class=\"text-muted text-10\">\n {{ datapoint.__target.name }}\n </small>\n </span>\n <i\n class=\"text-warning m-l-4\"\n c8yIcon=\"exclamation-triangle\"\n [tooltip]=\"\n 'Measurements received for this data point may be out of sync.' | translate\n \"\n container=\"body\"\n *ngIf=\"datapointsOutOfSync.get(datapoint)\"\n [adaptivePosition]=\"false\"\n ></i>\n </div>\n </div>\n <!-- Alarms -->\n\n <ng-container *ngFor=\"let alarm of alarms\">\n <div\n class=\"c8y-alarm-pill flex-no-shrink\"\n title=\"{{ alarm.filters.type }} \"\n *ngIf=\"alarm.__active\"\n >\n <i\n class=\"text-warning m-l-4\"\n c8yIcon=\"exclamation-triangle\"\n [tooltip]=\"\n 'Alarm of this type is currently active and outside of the selected time range'\n | translate\n \"\n container=\"body\"\n *ngIf=\"displayConfig?.activeAlarmTypesOutOfRange?.includes(alarm.filters.type)\"\n [adaptivePosition]=\"false\"\n ></i>\n <button\n class=\"c8y-alarm-pill__btn\"\n title=\"{{ alarm.filters.type }} \"\n type=\"button\"\n (click)=\"toggleAlarmEventType(alarm)\"\n >\n <i\n class=\"icon-14\"\n [c8yIcon]=\"alarm.__hidden ? 'eye-slash text-muted' : 'eye text-primary'\"\n ></i>\n </button>\n <button\n class=\"c8y-alarm-pill__label c8y-alarm-pill__btn\"\n (click)=\"toggleMarkedArea(alarm)\"\n [ngClass]=\"{\n active: !isMarkedAreaEnabled && alarm.filters.type === enabledMarkedAreaAlarmType\n }\"\n >\n <span\n class=\"circle-icon-wrapper circle-icon-wrapper--small m-r-4\"\n [style.background-color]=\"alarm.color\"\n >\n <i\n class=\"stroked-icon\"\n c8yIcon=\"bell\"\n ></i>\n </span>\n <span\n class=\"text-truncate\"\n [ngClass]=\"{ 'text-muted': alarm.__hidden }\"\n >\n <span class=\"text-truncate\">\n {{ alarm.filters.type }}\n </span>\n <small class=\"text-muted text-10\">\n {{ alarm.__target.name }}\n </small>\n </span>\n </button>\n </div>\n </ng-container>\n\n <!-- Events -->\n <ng-container *ngFor=\"let event of events\">\n <div\n class=\"c8y-event-pill flex-no-shrink\"\n title=\"{{ event.filters.type }}\"\n *ngIf=\"event.__active\"\n >\n <button\n class=\"c8y-event-pill__btn\"\n title=\"{{ event.filters.type }} \"\n type=\"button\"\n (click)=\"toggleAlarmEventType(event)\"\n >\n <i\n class=\"icon-14\"\n [c8yIcon]=\"event.__hidden ? 'eye-slash text-muted' : 'eye text-primary'\"\n ></i>\n </button>\n <div class=\"c8y-event-pill__label c8y-event-pill__btn\">\n <span\n class=\"circle-icon-wrapper circle-icon-wrapper--small m-r-4\"\n [ngStyle]=\"{ 'background-color': event.color }\"\n >\n <i\n class=\"stroked-icon\"\n c8yIcon=\"online1\"\n ></i>\n </span>\n <span\n class=\"text-truncate\"\n [ngClass]=\"{ 'text-muted': event.__hidden }\"\n >\n <span class=\"text-truncate\">\n {{ event.filters.type }}\n </span>\n <small class=\"text-muted text-10\">\n {{ event.__target.name }}\n </small>\n </span>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n\n<c8y-charts\n #chart\n [config]=\"displayConfig\"\n [alerts]=\"alerts\"\n (updateAlarmsAndEvents)=\"updateAlarmsAndEvents($event)\"\n (configChangeOnZoomOut)=\"updateDashboardTimeContext($event)\"\n (datapointOutOfSync)=\"handleDatapointOutOfSync($event)\"\n (timeRangeChangeOnRealtime)=\"updateTimeRangeOnRealtime($event)\"\n (isMarkedAreaEnabled)=\"isMarkedAreaEnabled = $event\"\n></c8y-charts>\n\n<ng-template #legendHelpTemplate>\n <div [innerHTML]=\"legendHelp\"></div>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "ngmodule", type: CommonModule$1 }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: ChartsComponent, selector: "c8y-charts", inputs: ["config", "alerts"], outputs: ["configChangeOnZoomOut", "timeRangeChangeOnRealtime", "datapointOutOfSync", "updateAlarmsAndEvents", "isMarkedAreaEnabled"] }, { kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5$1.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "ngmodule", type: BsDropdownModule }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i6.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "ngmodule", type: AlarmsModule }, { kind: "component", type: i8$1.AlarmsFilterComponent, selector: "c8y-alarms-filter", inputs: ["contextSourceId"], outputs: ["onFilterApplied"] }, { kind: "component", type: TimeContextComponent, selector: "c8y-time-context", inputs: ["changedDateContext", "controlsAvailable", "timeContext", "context"], outputs: ["contextChange"] }] }); }
476
476
  }
477
477
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DatapointsGraphWidgetViewComponent, decorators: [{
478
478
  type: Component,