@c8y/ngx-components 1021.13.3 → 1021.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (384) hide show
  1. package/alarms/alarms-list.component.d.ts +2 -17
  2. package/alarms/alarms-list.component.d.ts.map +1 -1
  3. package/alarms/alarms-view.service.d.ts +1 -0
  4. package/alarms/alarms-view.service.d.ts.map +1 -1
  5. package/alarms/alarms.model.d.ts +30 -0
  6. package/alarms/alarms.model.d.ts.map +1 -1
  7. package/context-dashboard/context-dashboard.model.d.ts +1 -0
  8. package/context-dashboard/context-dashboard.model.d.ts.map +1 -1
  9. package/context-dashboard/context-dashboard.service.d.ts +7 -5
  10. package/context-dashboard/context-dashboard.service.d.ts.map +1 -1
  11. package/context-dashboard/dashboard-detail.component.d.ts +4 -7
  12. package/context-dashboard/dashboard-detail.component.d.ts.map +1 -1
  13. package/context-dashboard/dashboard-detail.service.d.ts +4 -4
  14. package/context-dashboard/dashboard-detail.service.d.ts.map +1 -1
  15. package/context-dashboard/dashboard-settings/dashboard-general-settings.component.d.ts +2 -2
  16. package/context-dashboard/dashboard-settings/dashboard-general-settings.component.d.ts.map +1 -1
  17. package/context-dashboard/dashboard-settings/typed-dashboard-settings.component.d.ts +19 -6
  18. package/context-dashboard/dashboard-settings/typed-dashboard-settings.component.d.ts.map +1 -1
  19. package/core/action-bar/action-bar-item.component.d.ts +1 -1
  20. package/core/action-bar/action-bar-item.component.d.ts.map +1 -1
  21. package/core/action-bar/action-bar.module.d.ts +6 -6
  22. package/core/action-bar/action-bar.module.d.ts.map +1 -1
  23. package/core/bootstrap/bootstrap.component.d.ts +3 -1
  24. package/core/bootstrap/bootstrap.component.d.ts.map +1 -1
  25. package/core/common/aggregation/aggregation.model.d.ts +39 -0
  26. package/core/common/aggregation/aggregation.model.d.ts.map +1 -0
  27. package/core/common/aggregation/aggregation.service.d.ts +17 -0
  28. package/core/common/aggregation/aggregation.service.d.ts.map +1 -0
  29. package/core/common/index.d.ts +4 -0
  30. package/core/common/index.d.ts.map +1 -1
  31. package/core/common/inter-app.service.d.ts +48 -0
  32. package/core/common/inter-app.service.d.ts.map +1 -0
  33. package/core/common/interval-based-reload.abstract.d.ts +120 -0
  34. package/core/common/interval-based-reload.abstract.d.ts.map +1 -0
  35. package/core/dashboard/dashboard.module.d.ts +24 -18
  36. package/core/dashboard/dashboard.module.d.ts.map +1 -1
  37. package/core/dashboard/index.d.ts +3 -0
  38. package/core/dashboard/index.d.ts.map +1 -1
  39. package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts +31 -0
  40. package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts.map +1 -0
  41. package/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.d.ts +17 -0
  42. package/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.d.ts.map +1 -0
  43. package/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.d.ts +4 -0
  44. package/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.d.ts.map +1 -0
  45. package/core/dashboard/widget-auto-refresh-context/index.d.ts +8 -0
  46. package/core/dashboard/widget-auto-refresh-context/index.d.ts.map +1 -0
  47. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.d.ts +7 -0
  48. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.d.ts.map +1 -0
  49. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.d.ts +29 -0
  50. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.d.ts.map +1 -0
  51. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.d.ts +15 -0
  52. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.d.ts.map +1 -0
  53. package/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.d.ts +169 -0
  54. package/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.d.ts.map +1 -0
  55. package/core/dashboard/widgets-dashboard.component.d.ts +6 -3
  56. package/core/dashboard/widgets-dashboard.component.d.ts.map +1 -1
  57. package/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.d.ts +2 -2
  58. package/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.d.ts.map +1 -1
  59. package/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.d.ts +1 -1
  60. package/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.d.ts.map +1 -1
  61. package/core/dashboard/wiget-time-context/widget-time-context-query.service.d.ts.map +1 -1
  62. package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts +11 -8
  63. package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts.map +1 -1
  64. package/core/dashboard/wiget-time-context/widget-time-context.model.d.ts +6 -12
  65. package/core/dashboard/wiget-time-context/widget-time-context.model.d.ts.map +1 -1
  66. package/core/header/header.module.d.ts +18 -18
  67. package/core/header/header.module.d.ts.map +1 -1
  68. package/core/header/title/title.component.d.ts +1 -1
  69. package/core/header/title/title.component.d.ts.map +1 -1
  70. package/core/i18n/cached-locale-dictionary.service.d.ts +5 -1
  71. package/core/i18n/cached-locale-dictionary.service.d.ts.map +1 -1
  72. package/core/i18n/i18n.module.d.ts +0 -4
  73. package/core/i18n/i18n.module.d.ts.map +1 -1
  74. package/core/i18n/index.d.ts +2 -1
  75. package/core/i18n/index.d.ts.map +1 -1
  76. package/core/i18n/translation-loader.service.d.ts +50 -0
  77. package/core/i18n/translation-loader.service.d.ts.map +1 -0
  78. package/core/i18n/translation-utils.d.ts +14 -0
  79. package/core/i18n/translation-utils.d.ts.map +1 -0
  80. package/core/plugins/plugins-resolve.service.d.ts +7 -10
  81. package/core/plugins/plugins-resolve.service.d.ts.map +1 -1
  82. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.d.ts +2 -1
  83. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.d.ts.map +1 -1
  84. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts +11 -2
  85. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts.map +1 -1
  86. package/datapoint-selector/datapoint-selection.model.d.ts +6 -0
  87. package/datapoint-selector/datapoint-selection.model.d.ts.map +1 -1
  88. package/datapoints-export-selector/c8y-ngx-components-datapoints-export-selector.d.ts.map +1 -0
  89. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts +117 -0
  90. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts.map +1 -0
  91. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.d.ts +90 -0
  92. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.d.ts.map +1 -0
  93. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.d.ts +160 -0
  94. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.d.ts.map +1 -0
  95. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts +89 -0
  96. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts.map +1 -0
  97. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-preview/datapoints-export-selector-preview.component.d.ts +11 -0
  98. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-preview/datapoints-export-selector-preview.component.d.ts.map +1 -0
  99. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-data-scope/datapoints-exports-selector-data-scope.component.d.ts +27 -0
  100. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-data-scope/datapoints-exports-selector-data-scope.component.d.ts.map +1 -0
  101. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-file-types/datapoints-exports-selector-file-types.component.d.ts +12 -0
  102. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-file-types/datapoints-exports-selector-file-types.component.d.ts.map +1 -0
  103. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.d.ts +22 -0
  104. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.d.ts.map +1 -0
  105. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.d.ts +3 -0
  106. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.d.ts.map +1 -0
  107. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.d.ts +9 -0
  108. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.d.ts.map +1 -0
  109. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.d.ts +56 -0
  110. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.d.ts.map +1 -0
  111. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.d.ts +21 -0
  112. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.d.ts.map +1 -0
  113. package/datapoints-export-selector/datapoints-export-selector.component.d.ts +14 -0
  114. package/datapoints-export-selector/datapoints-export-selector.component.d.ts.map +1 -0
  115. package/datapoints-export-selector/datapoints-export-selector.model.d.ts +232 -0
  116. package/datapoints-export-selector/datapoints-export-selector.model.d.ts.map +1 -0
  117. package/datapoints-export-selector/index.d.ts +15 -0
  118. package/datapoints-export-selector/index.d.ts.map +1 -0
  119. package/device-list/device-list.module.d.ts +4 -2
  120. package/device-list/device-list.module.d.ts.map +1 -1
  121. package/esm2022/alarms/alarms-list.component.mjs +5 -16
  122. package/esm2022/alarms/alarms-view.service.mjs +2 -1
  123. package/esm2022/alarms/alarms.model.mjs +1 -1
  124. package/esm2022/context-dashboard/context-dashboard.component.mjs +4 -4
  125. package/esm2022/context-dashboard/context-dashboard.model.mjs +1 -1
  126. package/esm2022/context-dashboard/context-dashboard.service.mjs +47 -21
  127. package/esm2022/context-dashboard/dashboard-detail.component.mjs +8 -16
  128. package/esm2022/context-dashboard/dashboard-detail.service.mjs +13 -6
  129. package/esm2022/context-dashboard/dashboard-settings/dashboard-general-settings.component.mjs +3 -3
  130. package/esm2022/context-dashboard/dashboard-settings/typed-dashboard-settings.component.mjs +32 -11
  131. package/esm2022/core/action-bar/action-bar-item.component.mjs +3 -3
  132. package/esm2022/core/action-bar/action-bar.module.mjs +16 -5
  133. package/esm2022/core/bootstrap/bootstrap.component.mjs +21 -16
  134. package/esm2022/core/common/aggregation/aggregation.model.mjs +46 -0
  135. package/esm2022/core/common/aggregation/aggregation.service.mjs +34 -0
  136. package/esm2022/core/common/humanize-app-name.model.mjs +2 -2
  137. package/esm2022/core/common/humanize-app-name.pipe.mjs +2 -2
  138. package/esm2022/core/common/index.mjs +5 -1
  139. package/esm2022/core/common/inter-app.service.mjs +76 -0
  140. package/esm2022/core/common/interval-based-reload.abstract.mjs +110 -0
  141. package/esm2022/core/countdown-interval/countdown-interval.component.mjs +3 -3
  142. package/esm2022/core/dashboard/dashboard-child.component.mjs +6 -5
  143. package/esm2022/core/dashboard/dashboard.module.mjs +18 -1
  144. package/esm2022/core/dashboard/index.mjs +4 -1
  145. package/esm2022/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.mjs +101 -0
  146. package/esm2022/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.mjs +50 -0
  147. package/esm2022/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.mjs +7 -0
  148. package/esm2022/core/dashboard/widget-auto-refresh-context/index.mjs +8 -0
  149. package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.mjs +18 -0
  150. package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.mjs +127 -0
  151. package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.mjs +5 -0
  152. package/esm2022/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.mjs +233 -0
  153. package/esm2022/core/dashboard/widgets-dashboard.component.mjs +35 -30
  154. package/esm2022/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.mjs +4 -4
  155. package/esm2022/core/dashboard/wiget-time-context/realtime-control/realtime-control.component.mjs +2 -2
  156. package/esm2022/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.mjs +5 -5
  157. package/esm2022/core/dashboard/wiget-time-context/widget-time-context-query.service.mjs +7 -4
  158. package/esm2022/core/dashboard/wiget-time-context/widget-time-context.component.mjs +37 -37
  159. package/esm2022/core/dashboard/wiget-time-context/widget-time-context.model.mjs +1 -28
  160. package/esm2022/core/date-time-picker/date-time-picker.component.mjs +3 -3
  161. package/esm2022/core/header/header.module.mjs +7 -5
  162. package/esm2022/core/header/title/title.component.mjs +3 -3
  163. package/esm2022/core/i18n/cached-locale-dictionary.service.mjs +1 -1
  164. package/esm2022/core/i18n/i18n.module.mjs +7 -14
  165. package/esm2022/core/i18n/index.mjs +3 -2
  166. package/esm2022/core/i18n/translate.parser.mjs +2 -2
  167. package/esm2022/core/i18n/translation-loader.service.mjs +132 -0
  168. package/esm2022/core/i18n/translation-utils.mjs +24 -0
  169. package/esm2022/core/plugins/plugins-resolve.service.mjs +12 -37
  170. package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.mjs +13 -6
  171. package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.mjs +22 -5
  172. package/esm2022/datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.mjs +3 -3
  173. package/esm2022/datapoint-selector/datapoint-selection.model.mjs +1 -1
  174. package/esm2022/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.mjs +3 -3
  175. package/esm2022/datapoints-export-selector/c8y-ngx-components-datapoints-export-selector.mjs +5 -0
  176. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.mjs +407 -0
  177. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.mjs +207 -0
  178. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.mjs +467 -0
  179. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.mjs +187 -0
  180. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-preview/datapoints-export-selector-preview.component.mjs +27 -0
  181. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-data-scope/datapoints-exports-selector-data-scope.component.mjs +41 -0
  182. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-file-types/datapoints-exports-selector-file-types.component.mjs +23 -0
  183. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.mjs +42 -0
  184. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.mjs +120 -0
  185. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.mjs +282 -0
  186. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.mjs +76 -0
  187. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.mjs +46 -0
  188. package/esm2022/datapoints-export-selector/datapoints-export-selector.component.mjs +42 -0
  189. package/esm2022/datapoints-export-selector/datapoints-export-selector.model.mjs +43 -0
  190. package/esm2022/datapoints-export-selector/index.mjs +15 -0
  191. package/esm2022/device-list/add-smart-group.component.mjs +4 -3
  192. package/esm2022/device-list/device-list.module.mjs +22 -4
  193. package/esm2022/map/cluster-map.component.mjs +41 -13
  194. package/esm2022/map/map-status.component.mjs +6 -5
  195. package/esm2022/map/map.component.mjs +9 -5
  196. package/esm2022/map/map.model.mjs +1 -1
  197. package/esm2022/translation-editor/c8y-ngx-components-translation-editor.mjs +5 -0
  198. package/esm2022/translation-editor/data/c8y-ngx-components-translation-editor-data.mjs +5 -0
  199. package/esm2022/translation-editor/data/index.mjs +2 -0
  200. package/esm2022/translation-editor/data/translation-store.service.mjs +175 -0
  201. package/esm2022/translation-editor/index.mjs +10 -0
  202. package/esm2022/translation-editor/lazy/add-translation-modal/add-translation-modal.component.mjs +70 -0
  203. package/esm2022/translation-editor/lazy/c8y-ngx-components-translation-editor-lazy.mjs +5 -0
  204. package/esm2022/translation-editor/lazy/index.mjs +2 -0
  205. package/esm2022/translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.mjs +53 -0
  206. package/esm2022/translation-editor/lazy/translation-editor/translation-editor.component.mjs +124 -0
  207. package/esm2022/translation-editor/translation-editor-naviagtor-factory.service.mjs +31 -0
  208. package/esm2022/widgets/cockpit/index.mjs +4 -2
  209. package/esm2022/widgets/cockpit-exports/index.mjs +8 -1
  210. package/esm2022/widgets/definitions/alarms/alarm-list/index.mjs +6 -2
  211. package/esm2022/widgets/definitions/alarms/all-critical-alarms/index.mjs +6 -2
  212. package/esm2022/widgets/definitions/alarms/recent-alarms/index.mjs +6 -2
  213. package/esm2022/widgets/definitions/datapoints-table/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +5 -0
  214. package/esm2022/widgets/definitions/datapoints-table/index.mjs +34 -0
  215. package/esm2022/widgets/definitions/index.mjs +2 -1
  216. package/esm2022/widgets/definitions/map/index.mjs +4 -2
  217. package/esm2022/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.mjs +29 -15
  218. package/esm2022/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.mjs +57 -25
  219. package/esm2022/widgets/implementations/alarms/alarm-list-widget.model.mjs +2 -1
  220. package/esm2022/widgets/implementations/alarms/alarm-widget-alarms-reload.component.mjs +19 -21
  221. package/esm2022/widgets/implementations/datapoints-table/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +5 -0
  222. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.mjs +383 -0
  223. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.mjs +124 -0
  224. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/adjust-aggregated-time-range.pipe.mjs +191 -0
  225. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/apply-range-class.pipe.mjs +36 -0
  226. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/column-title.pipe.mjs +45 -0
  227. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.mjs +116 -0
  228. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.mjs +116 -0
  229. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/dynamic-column.directive.mjs +43 -0
  230. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.mjs +282 -0
  231. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.mjs +430 -0
  232. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/virtual-scroll-listener.directive.mjs +75 -0
  233. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-widget.model.mjs +76 -0
  234. package/esm2022/widgets/implementations/datapoints-table/datapoints-table.service.mjs +52 -0
  235. package/esm2022/widgets/implementations/datapoints-table/date-range-picker.component.mjs +68 -0
  236. package/esm2022/widgets/implementations/datapoints-table/index.mjs +10 -0
  237. package/esm2022/widgets/implementations/map/map-widget-config.component.mjs +19 -11
  238. package/esm2022/widgets/implementations/map/map-widget.component.mjs +20 -2
  239. package/esm2022/widgets/implementations/map/map-widget.model.mjs +1 -1
  240. package/fesm2022/c8y-ngx-components-alarms.mjs +5 -15
  241. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  242. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +135 -91
  243. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  244. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +37 -13
  245. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  246. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +1928 -0
  247. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -0
  248. package/fesm2022/c8y-ngx-components-device-list.mjs +24 -5
  249. package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
  250. package/fesm2022/c8y-ngx-components-map.mjs +52 -19
  251. package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
  252. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +181 -0
  253. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs.map +1 -0
  254. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +236 -0
  255. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -0
  256. package/fesm2022/c8y-ngx-components-translation-editor.mjs +46 -0
  257. package/fesm2022/c8y-ngx-components-translation-editor.mjs.map +1 -0
  258. package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs +7 -0
  259. package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs.map +1 -1
  260. package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs +3 -1
  261. package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs.map +1 -1
  262. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs +5 -1
  263. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
  264. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs +5 -1
  265. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs.map +1 -1
  266. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs +5 -1
  267. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs.map +1 -1
  268. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +41 -0
  269. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -0
  270. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs +3 -1
  271. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs.map +1 -1
  272. package/fesm2022/c8y-ngx-components-widgets-definitions.mjs +1 -0
  273. package/fesm2022/c8y-ngx-components-widgets-definitions.mjs.map +1 -1
  274. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +101 -58
  275. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  276. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +1967 -0
  277. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -0
  278. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +37 -11
  279. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  280. package/fesm2022/c8y-ngx-components.mjs +5080 -4272
  281. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  282. package/locales/de.po +289 -18
  283. package/locales/en.po +12 -0
  284. package/locales/en_US.po +3 -0
  285. package/locales/es.po +253 -18
  286. package/locales/fr.po +253 -18
  287. package/locales/ja_JP.po +282 -18
  288. package/locales/locales.pot +257 -18
  289. package/locales/nl.po +253 -18
  290. package/locales/pl.po +253 -18
  291. package/locales/pt_BR.po +253 -18
  292. package/map/cluster-map.component.d.ts +8 -3
  293. package/map/cluster-map.component.d.ts.map +1 -1
  294. package/map/map-status.component.d.ts +0 -3
  295. package/map/map-status.component.d.ts.map +1 -1
  296. package/map/map.component.d.ts +4 -2
  297. package/map/map.component.d.ts.map +1 -1
  298. package/map/map.model.d.ts +2 -1
  299. package/map/map.model.d.ts.map +1 -1
  300. package/package.json +1 -1
  301. package/translation-editor/c8y-ngx-components-translation-editor.d.ts.map +1 -0
  302. package/translation-editor/data/c8y-ngx-components-translation-editor-data.d.ts.map +1 -0
  303. package/translation-editor/data/index.d.ts +2 -0
  304. package/translation-editor/data/index.d.ts.map +1 -0
  305. package/translation-editor/data/translation-store.service.d.ts +61 -0
  306. package/translation-editor/data/translation-store.service.d.ts.map +1 -0
  307. package/translation-editor/index.d.ts +2 -0
  308. package/translation-editor/index.d.ts.map +1 -0
  309. package/translation-editor/lazy/add-translation-modal/add-translation-modal.component.d.ts +30 -0
  310. package/translation-editor/lazy/add-translation-modal/add-translation-modal.component.d.ts.map +1 -0
  311. package/translation-editor/lazy/c8y-ngx-components-translation-editor-lazy.d.ts.map +1 -0
  312. package/translation-editor/lazy/index.d.ts +2 -0
  313. package/translation-editor/lazy/index.d.ts.map +1 -0
  314. package/translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.d.ts +22 -0
  315. package/translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.d.ts.map +1 -0
  316. package/translation-editor/lazy/translation-editor/translation-editor.component.d.ts +34 -0
  317. package/translation-editor/lazy/translation-editor/translation-editor.component.d.ts.map +1 -0
  318. package/translation-editor/translation-editor-naviagtor-factory.service.d.ts +11 -0
  319. package/translation-editor/translation-editor-naviagtor-factory.service.d.ts.map +1 -0
  320. package/widgets/cockpit/index.d.ts +13 -0
  321. package/widgets/cockpit/index.d.ts.map +1 -1
  322. package/widgets/cockpit-exports/index.d.ts +6 -0
  323. package/widgets/cockpit-exports/index.d.ts.map +1 -1
  324. package/widgets/definitions/alarms/alarm-list/index.d.ts +2 -0
  325. package/widgets/definitions/alarms/alarm-list/index.d.ts.map +1 -1
  326. package/widgets/definitions/alarms/all-critical-alarms/index.d.ts +2 -0
  327. package/widgets/definitions/alarms/all-critical-alarms/index.d.ts.map +1 -1
  328. package/widgets/definitions/alarms/recent-alarms/index.d.ts +2 -0
  329. package/widgets/definitions/alarms/recent-alarms/index.d.ts.map +1 -1
  330. package/widgets/definitions/datapoints-table/c8y-ngx-components-widgets-definitions-datapoints-table.d.ts.map +1 -0
  331. package/widgets/definitions/datapoints-table/index.d.ts +14 -0
  332. package/widgets/definitions/datapoints-table/index.d.ts.map +1 -0
  333. package/widgets/definitions/index.d.ts +1 -0
  334. package/widgets/definitions/index.d.ts.map +1 -1
  335. package/widgets/definitions/map/index.d.ts +2 -1
  336. package/widgets/definitions/map/index.d.ts.map +1 -1
  337. package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts +5 -9
  338. package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts.map +1 -1
  339. package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts +17 -10
  340. package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts.map +1 -1
  341. package/widgets/implementations/alarms/alarm-list-widget.model.d.ts +5 -1
  342. package/widgets/implementations/alarms/alarm-list-widget.model.d.ts.map +1 -1
  343. package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts +5 -11
  344. package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts.map +1 -1
  345. package/widgets/implementations/datapoints-table/c8y-ngx-components-widgets-implementations-datapoints-table.d.ts.map +1 -0
  346. package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts +129 -0
  347. package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts.map +1 -0
  348. package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.d.ts +56 -0
  349. package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.d.ts.map +1 -0
  350. package/widgets/implementations/datapoints-table/datapoints-table-view/adjust-aggregated-time-range.pipe.d.ts +88 -0
  351. package/widgets/implementations/datapoints-table/datapoints-table-view/adjust-aggregated-time-range.pipe.d.ts.map +1 -0
  352. package/widgets/implementations/datapoints-table/datapoints-table-view/apply-range-class.pipe.d.ts +19 -0
  353. package/widgets/implementations/datapoints-table/datapoints-table-view/apply-range-class.pipe.d.ts.map +1 -0
  354. package/widgets/implementations/datapoints-table/datapoints-table-view/column-title.pipe.d.ts +26 -0
  355. package/widgets/implementations/datapoints-table/datapoints-table-view/column-title.pipe.d.ts.map +1 -0
  356. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts +63 -0
  357. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts.map +1 -0
  358. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.d.ts +38 -0
  359. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.d.ts.map +1 -0
  360. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/dynamic-column.directive.d.ts +13 -0
  361. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/dynamic-column.directive.d.ts.map +1 -0
  362. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts +123 -0
  363. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts.map +1 -0
  364. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.d.ts +196 -0
  365. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.d.ts.map +1 -0
  366. package/widgets/implementations/datapoints-table/datapoints-table-view/virtual-scroll-listener.directive.d.ts +41 -0
  367. package/widgets/implementations/datapoints-table/datapoints-table-view/virtual-scroll-listener.directive.d.ts.map +1 -0
  368. package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts +175 -0
  369. package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts.map +1 -0
  370. package/widgets/implementations/datapoints-table/datapoints-table.service.d.ts +12 -0
  371. package/widgets/implementations/datapoints-table/datapoints-table.service.d.ts.map +1 -0
  372. package/widgets/implementations/datapoints-table/date-range-picker.component.d.ts +34 -0
  373. package/widgets/implementations/datapoints-table/date-range-picker.component.d.ts.map +1 -0
  374. package/widgets/implementations/datapoints-table/index.d.ts +10 -0
  375. package/widgets/implementations/datapoints-table/index.d.ts.map +1 -0
  376. package/widgets/implementations/map/map-widget-config.component.d.ts +4 -4
  377. package/widgets/implementations/map/map-widget-config.component.d.ts.map +1 -1
  378. package/widgets/implementations/map/map-widget.component.d.ts +8 -3
  379. package/widgets/implementations/map/map-widget.component.d.ts.map +1 -1
  380. package/widgets/implementations/map/map-widget.model.d.ts +4 -3
  381. package/widgets/implementations/map/map-widget.model.d.ts.map +1 -1
  382. package/core/i18n/translate.loader.d.ts +0 -31
  383. package/core/i18n/translate.loader.d.ts.map +0 -1
  384. package/esm2022/core/i18n/translate.loader.mjs +0 -71
@@ -3,7 +3,7 @@ import { CommonModule as NgCommonModule } from '@angular/common';
3
3
  import { FormsModule as NgFormsModule } from '@angular/forms';
4
4
  import { InventoryService } from '@c8y/client';
5
5
  import { ClusterMapComponent, MapModule } from '@c8y/ngx-components/map';
6
- import { AssetLinkPipe, CommonModule, DashboardChildComponent, FormsModule } from '@c8y/ngx-components';
6
+ import { AssetLinkPipe, CommonModule, DashboardChildComponent, DismissAlertStrategy, DynamicComponentAlert, FormsModule, gettext } from '@c8y/ngx-components';
7
7
  import { filter, takeUntil } from 'rxjs/operators';
8
8
  import { Subject } from 'rxjs';
9
9
  import { ContextDashboardComponent } from '@c8y/ngx-components/context-dashboard';
@@ -22,10 +22,13 @@ export class MapWidgetComponent {
22
22
  this.dashboardContextComponent = dashboardContextComponent;
23
23
  this.inventory = inventory;
24
24
  this.mapConfig = { center: [0, 0] };
25
+ this.TIMEOUT_ERROR_TEXT = gettext('The request is taking longer than usual. We apologize for the inconvenience.');
26
+ this.SERVER_ERROR_TEXT = gettext('Server error occurred.');
25
27
  this.destroy$ = new Subject();
26
28
  this.listenToWidgetResizeEvent(dashboardChild);
27
29
  }
28
30
  async ngOnInit() {
31
+ this.alerts.setAlertGroupDismissStrategy('warning', DismissAlertStrategy.TEMPORARY_OR_PERMANENT);
29
32
  if (this.dashboardContextComponent?.dashboard?.deviceType && !this.config.device) {
30
33
  const context = this.dashboardContextComponent.context;
31
34
  if (context?.id) {
@@ -47,6 +50,9 @@ export class MapWidgetComponent {
47
50
  this.updateMapConfigRealtime();
48
51
  }
49
52
  }
53
+ ngAfterViewInit() {
54
+ this.subscribeToErrorsOccurred();
55
+ }
50
56
  startFollow(context) {
51
57
  if (context.id !== this.rootNode?.id) {
52
58
  this.rootNode = context;
@@ -77,6 +83,18 @@ export class MapWidgetComponent {
77
83
  this.clusterMap.reset();
78
84
  });
79
85
  }
86
+ subscribeToErrorsOccurred() {
87
+ this.clusterMap.errorNotifier
88
+ .pipe(filter(Boolean), takeUntil(this.destroy$))
89
+ .subscribe(error => {
90
+ this.alerts.addAlerts(new DynamicComponentAlert({
91
+ type: 'warning',
92
+ text: error?.name === 'TimeoutError'
93
+ ? this.TIMEOUT_ERROR_TEXT
94
+ : error?.message ?? this.SERVER_ERROR_TEXT
95
+ }));
96
+ });
97
+ }
80
98
  updateMapConfigRealtime() {
81
99
  this.mapConfig.realtime = this.config.realtime || false;
82
100
  }
@@ -105,4 +123,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
105
123
  type: ViewChild,
106
124
  args: [ClusterMapComponent]
107
125
  }] } });
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi93aWRnZXRzL2ltcGxlbWVudGF0aW9ucy9tYXAvbWFwLXdpZGdldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi93aWRnZXRzL2ltcGxlbWVudGF0aW9ucy9tYXAvbWFwLXdpZGdldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFJTCxRQUFRLEVBRVIsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLElBQUksY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsSUFBSSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQWtCLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBb0IsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM0YsT0FBTyxFQUNMLGFBQWEsRUFDYixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLFdBQVcsRUFDWixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNsRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixD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QVEsQ0FBQyxFQUM5QyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUN6QjthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLHVCQUF1QjtRQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUM7SUFDMUQsQ0FBQzs4R0FsRlUsa0JBQWtCO2tHQUFsQixrQkFBa0Isb0pBS2xCLG1CQUFtQixxRUNuRGhDLHF3Q0E2Q0EsNENEWEkscUJBQXFCLGlGQUNyQixjQUFjLGtJQUNkLGFBQWEsOEJBQ2IsWUFBWSwyUEFDWixXQUFXLDhCQUNYLGtCQUFrQiw4QkFDbEIsU0FBUywrYkFFVCxhQUFhLCtCQUNiLFVBQVU7OzJGQUdELGtCQUFrQjtrQkFqQjlCLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBRWQsSUFBSSxXQUNQO3dCQUNQLHFCQUFxQjt3QkFDckIsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxrQkFBa0I7d0JBQ2xCLFNBQVM7d0JBQ1QsYUFBYTt3QkFDYixhQUFhO3dCQUNiLFVBQVU7cUJBQ1g7OzBCQWVFLFFBQVE7d0VBVkYsTUFBTTtzQkFBZCxLQUFLO2dCQUdOLFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIGFzIE5nQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIGFzIE5nRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IENsdXN0ZXJNYXBDb21wb25lbnQsIENsdXN0ZXJNYXBDb25maWcsIE1hcE1vZHVsZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvbWFwJztcbmltcG9ydCB7XG4gIEFzc2V0TGlua1BpcGUsXG4gIENvbW1vbk1vZHVsZSxcbiAgRGFzaGJvYXJkQ2hpbGRDb21wb25lbnQsXG4gIEZvcm1zTW9kdWxlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgTWFwV2lkZ2V0Q29uZmlnIH0gZnJvbSAnLi9tYXAtd2lkZ2V0Lm1vZGVsJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29udGV4dERhc2hib2FyZENvbXBvbmVudCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvY29udGV4dC1kYXNoYm9hcmQnO1xuaW1wb3J0IHsgTWFwRXZlbnRJbmZvQ29tcG9uZW50IH0gZnJvbSAnLi9tYXAtZXZlbnQtaW5mby5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWNvblNlbGVjdG9yTW9kdWxlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pY29uLXNlbGVjdG9yJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3Rvb2x0aXAnO1xuaW1wb3J0IHsgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1tYXAtd2lkZ2V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hcC13aWRnZXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWFwRXZlbnRJbmZvQ29tcG9uZW50LFxuICAgIE5nQ29tbW9uTW9kdWxlLFxuICAgIE5nRm9ybXNNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEljb25TZWxlY3Rvck1vZHVsZSxcbiAgICBNYXBNb2R1bGUsXG4gICAgQXNzZXRMaW5rUGlwZSxcbiAgICBUb29sdGlwTW9kdWxlLFxuICAgIFJvdXRlckxpbmtcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBNYXBXaWRnZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgbWFwQ29uZmlnOiBDbHVzdGVyTWFwQ29uZmlnID0geyBjZW50ZXI6IFswLCAwXSB9O1xuICByb290Tm9kZTogSU1hbmFnZWRPYmplY3Q7XG4gIEBJbnB1dCgpIGNvbmZpZzogTWFwV2lkZ2V0Q29uZmlnO1xuXG4gIEBWaWV3Q2hpbGQoQ2x1c3Rlck1hcENvbXBvbmVudClcbiAgY2x1c3Rlck1hcDogQ2x1c3Rlck1hcENvbXBvbmVudDtcblxuICBwcml2YXRlIHNhdmVkTm9kZTogSU1hbmFnZWRPYmplY3Q7XG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGRhc2hib2FyZENoaWxkOiBEYXNoYm9hcmRDaGlsZENvbXBvbmVudCxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGRhc2hib2FyZENvbnRleHRDb21wb25lbnQ6IENvbnRleHREYXNoYm9hcmRDb21wb25lbnQsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5saXN0ZW5Ub1dpZGdldFJlc2l6ZUV2ZW50KGRhc2hib2FyZENoaWxkKTtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmRhc2hib2FyZENvbnRleHRDb21wb25lbnQ/LmRhc2hib2FyZD8uZGV2aWNlVHlwZSAmJiAhdGhpcy5jb25maWcuZGV2aWNlKSB7XG4gICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5kYXNoYm9hcmRDb250ZXh0Q29tcG9uZW50LmNvbnRleHQ7XG4gICAgICBpZiAoY29udGV4dD8uaWQpIHtcbiAgICAgICAgY29uc3QgeyBpZCB9ID0gY29udGV4dDtcbiAgICAgICAgdGhpcy5jb25maWcuZGV2aWNlID0gKGF3YWl0IHRoaXMuaW52ZW50b3J5LmRldGFpbChpZCkpLmRhdGE7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbmZpZy5kZXZpY2UpIHtcbiAgICAgIHRoaXMucm9vdE5vZGUgPSB0aGlzLmNvbmZpZy5kZXZpY2U7XG4gICAgfVxuICAgIHRoaXMubWFwQ29uZmlnID0geyAuLi50aGlzLmNvbmZpZy5tYXBDb25maWcgfTtcbiAgICBpZiAodGhpcy5jb25maWcud2lkZ2V0SW5zdGFuY2VHbG9iYWxUaW1lQ29udGV4dCkge1xuICAgICAgdGhpcy51cGRhdGVNYXBDb25maWdSZWFsdGltZSgpO1xuICAgIH1cbiAgICB0aGlzLnNhdmVkTm9kZSA9IHRoaXMucm9vdE5vZGU7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuY29uZmlnPy5jdXJyZW50VmFsdWU/LndpZGdldEluc3RhbmNlR2xvYmFsVGltZUNvbnRleHQpIHtcbiAgICAgIHRoaXMudXBkYXRlTWFwQ29uZmlnUmVhbHRpbWUoKTtcbiAgICB9XG4gIH1cblxuICBzdGFydEZvbGxvdyhjb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQuaWQgIT09IHRoaXMucm9vdE5vZGU/LmlkKSB7XG4gICAgICB0aGlzLnJvb3ROb2RlID0gY29udGV4dDtcbiAgICB9XG4gICAgdGhpcy5tYXBDb25maWcgPSB7XG4gICAgICAuLi50aGlzLmNvbmZpZy5tYXBDb25maWcsXG4gICAgICBmb2xsb3c6IHRydWUsXG4gICAgICByZWFsdGltZTogdHJ1ZVxuICAgIH07XG4gIH1cblxuICBzdG9wRm9sbG93KCkge1xuICAgIHRoaXMubWFwQ29uZmlnID0ge1xuICAgICAgLi4udGhpcy5jb25maWcubWFwQ29uZmlnLFxuICAgICAgZm9sbG93OiBmYWxzZVxuICAgIH07XG4gICAgaWYgKHRoaXMuY29uZmlnLndpZGdldEluc3RhbmNlR2xvYmFsVGltZUNvbnRleHQpIHtcbiAgICAgIHRoaXMudXBkYXRlTWFwQ29uZmlnUmVhbHRpbWUoKTtcbiAgICB9XG4gICAgdGhpcy5yb290Tm9kZSA9IHRoaXMuc2F2ZWROb2RlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblRvV2lkZ2V0UmVzaXplRXZlbnQoZGFzaGJvYXJkQ2hpbGQ6IERhc2hib2FyZENoaWxkQ29tcG9uZW50KSB7XG4gICAgZGFzaGJvYXJkQ2hpbGQuY2hhbmdlRW5kXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKGNoaWxkID0+IGNoaWxkLmxhc3RDaGFuZ2UgPT09ICdyZXNpemUnKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jbHVzdGVyTWFwLnJlc2V0KCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTWFwQ29uZmlnUmVhbHRpbWUoKSB7XG4gICAgdGhpcy5tYXBDb25maWcucmVhbHRpbWUgPSB0aGlzLmNvbmZpZy5yZWFsdGltZSB8fCBmYWxzZTtcbiAgfVxufVxuIiwiPGM4eS1tYXAtc3RhdHVzXG4gIFtjbHVzdGVyTWFwXT1cIm1hcFdpZGdldFwiXG4gIFsoY29uZmlnKV09XCJtYXBDb25maWdcIlxuICAob25VbmZvbGxvdyk9XCJzdG9wRm9sbG93KClcIlxuICBbYnV0dG9uc0NvbmZpZ109XCJjb25maWcud2lkZ2V0SW5zdGFuY2VHbG9iYWxUaW1lQ29udGV4dCA/IHsgcmVhbHRpbWU6IHsgc2hvdzogZmFsc2UgfSB9IDogbnVsbFwiXG4+PC9jOHktbWFwLXN0YXR1cz5cbjxjOHktY2x1c3Rlci1tYXBcbiAgI21hcFdpZGdldFxuICBbcm9vdE5vZGVdPVwicm9vdE5vZGVcIlxuICBbY29uZmlnXT1cIm1hcENvbmZpZ1wiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm1hcC1tYXJrZXJcIlxuICAgICpjOHlNYXBQb3B1cD1cImxldCBjb250ZXh0XCJcbiAgPlxuICAgIDxhXG4gICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGUgZGV2aWNlTGluayB0ZXh0LTEyXCJcbiAgICAgIHJvdXRlckxpbms9XCJ7eyBjb250ZXh0IHwgYXNzZXRMaW5rIH19XCJcbiAgICA+XG4gICAgICA8c3Ryb25nPnt7IGNvbnRleHQubmFtZSB9fTwvc3Ryb25nPlxuICAgIDwvYT5cbiAgICA8Yzh5LW1hcC1ldmVudC1pbmZvIFthc3NldF09XCJjb250ZXh0XCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi14cyBidG4tYmxvY2sgbS10LThcIlxuICAgICAgICBbdGl0bGVdPVwiJ0FjdGl2YXRlIHJlYWx0aW1lIG9uIHRoaXMgYXNzZXQgYW5kIGZvbGxvdyBpdCBpZiBpdCBtb3ZlcycgfCB0cmFuc2xhdGVcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cInN0YXJ0Rm9sbG93KGNvbnRleHQpXCJcbiAgICAgICAgKm5nSWY9XCIhbWFwQ29uZmlnLmZvbGxvd1wiXG4gICAgICAgIHRyYW5zbGF0ZVxuICAgICAgPlxuICAgICAgICBGb2xsb3dcbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4teHMgYnRuLWJsb2NrIG0tdC04XCJcbiAgICAgICAgW3RpdGxlXT1cIidTdG9wIGZvbGxvd2luZyB0aGlzIGFzc2V0LicgfCB0cmFuc2xhdGVcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cInN0b3BGb2xsb3coKVwiXG4gICAgICAgICpuZ0lmPVwibWFwQ29uZmlnLmZvbGxvd1wiXG4gICAgICAgIHRyYW5zbGF0ZVxuICAgICAgPlxuICAgICAgICBVbmZvbGxvd1xuICAgICAgPC9idXR0b24+XG4gICAgPC9jOHktbWFwLWV2ZW50LWluZm8+XG4gIDwvZGl2PlxuPC9jOHktY2x1c3Rlci1tYXA+XG4iXX0=
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi93aWRnZXRzL2ltcGxlbWVudGF0aW9ucy9tYXAvbWFwLXdpZGdldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi93aWRnZXRzL2ltcGxlbWVudGF0aW9ucy9tYXAvbWFwLXdpZGdldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULEtBQUssRUFJTCxRQUFRLEVBRVIsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLElBQUksY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsSUFBSSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQWtCLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBb0IsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM0YsT0FBTyxFQUNMLGFBQWEsRUFDYixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLG9CQUFvQixFQUVwQixxQkFBcUIsRUFFckIsV0FBVyxFQUNYLE9BQU8sRUFDUixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNsRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFD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SUFDMUQsQ0FBQzs4R0FqSFUsa0JBQWtCO2tHQUFsQixrQkFBa0Isb0pBT2xCLG1CQUFtQixxRUMzRGhDLHF3Q0E2Q0EsNENETEkscUJBQXFCLGlGQUNyQixjQUFjLGtJQUNkLGFBQWEsOEJBQ2IsWUFBWSwyUEFDWixXQUFXLDhCQUNYLGtCQUFrQiw4QkFDbEIsU0FBUywrYkFFVCxhQUFhLCtCQUNiLFVBQVU7OzJGQUdELGtCQUFrQjtrQkFqQjlCLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBRWQsSUFBSSxXQUNQO3dCQUNQLHFCQUFxQjt3QkFDckIsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxrQkFBa0I7d0JBQ2xCLFNBQVM7d0JBQ1QsYUFBYTt3QkFDYixhQUFhO3dCQUNiLFVBQVU7cUJBQ1g7OzBCQXNCRSxRQUFRO3dFQWZGLE1BQU07c0JBQWQsS0FBSztnQkFHTixVQUFVO3NCQURULFNBQVM7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSBhcyBOZ0NvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSBhcyBOZ0Zvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QsIEludmVudG9yeVNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBDbHVzdGVyTWFwQ29tcG9uZW50LCBDbHVzdGVyTWFwQ29uZmlnLCBNYXBNb2R1bGUgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL21hcCc7XG5pbXBvcnQge1xuICBBc3NldExpbmtQaXBlLFxuICBDb21tb25Nb2R1bGUsXG4gIERhc2hib2FyZENoaWxkQ29tcG9uZW50LFxuICBEaXNtaXNzQWxlcnRTdHJhdGVneSxcbiAgRHluYW1pY0NvbXBvbmVudCxcbiAgRHluYW1pY0NvbXBvbmVudEFsZXJ0LFxuICBEeW5hbWljQ29tcG9uZW50QWxlcnRBZ2dyZWdhdG9yLFxuICBGb3Jtc01vZHVsZSxcbiAgZ2V0dGV4dFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IE1hcFdpZGdldENvbmZpZyB9IGZyb20gJy4vbWFwLXdpZGdldC5tb2RlbCc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbnRleHREYXNoYm9hcmRDb21wb25lbnQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2NvbnRleHQtZGFzaGJvYXJkJztcbmltcG9ydCB7IE1hcEV2ZW50SW5mb0NvbXBvbmVudCB9IGZyb20gJy4vbWFwLWV2ZW50LWluZm8uY29tcG9uZW50JztcbmltcG9ydCB7IEljb25TZWxlY3Rvck1vZHVsZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvcic7XG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC90b29sdGlwJztcbmltcG9ydCB7IFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktbWFwLXdpZGdldCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXAtd2lkZ2V0LmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hcEV2ZW50SW5mb0NvbXBvbmVudCxcbiAgICBOZ0NvbW1vbk1vZHVsZSxcbiAgICBOZ0Zvcm1zTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBJY29uU2VsZWN0b3JNb2R1bGUsXG4gICAgTWFwTW9kdWxlLFxuICAgIEFzc2V0TGlua1BpcGUsXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgICBSb3V0ZXJMaW5rXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTWFwV2lkZ2V0Q29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgRHluYW1pY0NvbXBvbmVudFxue1xuICBtYXBDb25maWc6IENsdXN0ZXJNYXBDb25maWcgPSB7IGNlbnRlcjogWzAsIDBdIH07XG4gIHJvb3ROb2RlOiBJTWFuYWdlZE9iamVjdDtcbiAgQElucHV0KCkgY29uZmlnOiBNYXBXaWRnZXRDb25maWc7XG5cbiAgQFZpZXdDaGlsZChDbHVzdGVyTWFwQ29tcG9uZW50KVxuICBjbHVzdGVyTWFwOiBDbHVzdGVyTWFwQ29tcG9uZW50O1xuICBhbGVydHM6IER5bmFtaWNDb21wb25lbnRBbGVydEFnZ3JlZ2F0b3I7XG5cbiAgcHJpdmF0ZSBUSU1FT1VUX0VSUk9SX1RFWFQgPSBnZXR0ZXh0KFxuICAgICdUaGUgcmVxdWVzdCBpcyB0YWtpbmcgbG9uZ2VyIHRoYW4gdXN1YWwuIFdlIGFwb2xvZ2l6ZSBmb3IgdGhlIGluY29udmVuaWVuY2UuJ1xuICApO1xuICBwcml2YXRlIFNFUlZFUl9FUlJPUl9URVhUID0gZ2V0dGV4dCgnU2VydmVyIGVycm9yIG9jY3VycmVkLicpO1xuICBwcml2YXRlIHNhdmVkTm9kZTogSU1hbmFnZWRPYmplY3Q7XG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGRhc2hib2FyZENoaWxkOiBEYXNoYm9hcmRDaGlsZENvbXBvbmVudCxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGRhc2hib2FyZENvbnRleHRDb21wb25lbnQ6IENvbnRleHREYXNoYm9hcmRDb21wb25lbnQsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5saXN0ZW5Ub1dpZGdldFJlc2l6ZUV2ZW50KGRhc2hib2FyZENoaWxkKTtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYWxlcnRzLnNldEFsZXJ0R3JvdXBEaXNtaXNzU3RyYXRlZ3koXG4gICAgICAnd2FybmluZycsXG4gICAgICBEaXNtaXNzQWxlcnRTdHJhdGVneS5URU1QT1JBUllfT1JfUEVSTUFORU5UXG4gICAgKTtcbiAgICBpZiAodGhpcy5kYXNoYm9hcmRDb250ZXh0Q29tcG9uZW50Py5kYXNoYm9hcmQ/LmRldmljZVR5cGUgJiYgIXRoaXMuY29uZmlnLmRldmljZSkge1xuICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuZGFzaGJvYXJkQ29udGV4dENvbXBvbmVudC5jb250ZXh0O1xuICAgICAgaWYgKGNvbnRleHQ/LmlkKSB7XG4gICAgICAgIGNvbnN0IHsgaWQgfSA9IGNvbnRleHQ7XG4gICAgICAgIHRoaXMuY29uZmlnLmRldmljZSA9IChhd2FpdCB0aGlzLmludmVudG9yeS5kZXRhaWwoaWQpKS5kYXRhO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5jb25maWcuZGV2aWNlKSB7XG4gICAgICB0aGlzLnJvb3ROb2RlID0gdGhpcy5jb25maWcuZGV2aWNlO1xuICAgIH1cbiAgICB0aGlzLm1hcENvbmZpZyA9IHsgLi4udGhpcy5jb25maWcubWFwQ29uZmlnIH07XG4gICAgaWYgKHRoaXMuY29uZmlnLndpZGdldEluc3RhbmNlR2xvYmFsVGltZUNvbnRleHQpIHtcbiAgICAgIHRoaXMudXBkYXRlTWFwQ29uZmlnUmVhbHRpbWUoKTtcbiAgICB9XG4gICAgdGhpcy5zYXZlZE5vZGUgPSB0aGlzLnJvb3ROb2RlO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLmNvbmZpZz8uY3VycmVudFZhbHVlPy53aWRnZXRJbnN0YW5jZUdsb2JhbFRpbWVDb250ZXh0KSB7XG4gICAgICB0aGlzLnVwZGF0ZU1hcENvbmZpZ1JlYWx0aW1lKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaWJlVG9FcnJvcnNPY2N1cnJlZCgpO1xuICB9XG5cbiAgc3RhcnRGb2xsb3coY29udGV4dCkge1xuICAgIGlmIChjb250ZXh0LmlkICE9PSB0aGlzLnJvb3ROb2RlPy5pZCkge1xuICAgICAgdGhpcy5yb290Tm9kZSA9IGNvbnRleHQ7XG4gICAgfVxuICAgIHRoaXMubWFwQ29uZmlnID0ge1xuICAgICAgLi4udGhpcy5jb25maWcubWFwQ29uZmlnLFxuICAgICAgZm9sbG93OiB0cnVlLFxuICAgICAgcmVhbHRpbWU6IHRydWVcbiAgICB9O1xuICB9XG5cbiAgc3RvcEZvbGxvdygpIHtcbiAgICB0aGlzLm1hcENvbmZpZyA9IHtcbiAgICAgIC4uLnRoaXMuY29uZmlnLm1hcENvbmZpZyxcbiAgICAgIGZvbGxvdzogZmFsc2VcbiAgICB9O1xuICAgIGlmICh0aGlzLmNvbmZpZy53aWRnZXRJbnN0YW5jZUdsb2JhbFRpbWVDb250ZXh0KSB7XG4gICAgICB0aGlzLnVwZGF0ZU1hcENvbmZpZ1JlYWx0aW1lKCk7XG4gICAgfVxuICAgIHRoaXMucm9vdE5vZGUgPSB0aGlzLnNhdmVkTm9kZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Ub1dpZGdldFJlc2l6ZUV2ZW50KGRhc2hib2FyZENoaWxkOiBEYXNoYm9hcmRDaGlsZENvbXBvbmVudCkge1xuICAgIGRhc2hib2FyZENoaWxkLmNoYW5nZUVuZFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcihjaGlsZCA9PiBjaGlsZC5sYXN0Q2hhbmdlID09PSAncmVzaXplJyksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2x1c3Rlck1hcC5yZXNldCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZVRvRXJyb3JzT2NjdXJyZWQoKSB7XG4gICAgdGhpcy5jbHVzdGVyTWFwLmVycm9yTm90aWZpZXJcbiAgICAgIC5waXBlKGZpbHRlcihCb29sZWFuKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZShlcnJvciA9PiB7XG4gICAgICAgIHRoaXMuYWxlcnRzLmFkZEFsZXJ0cyhcbiAgICAgICAgICBuZXcgRHluYW1pY0NvbXBvbmVudEFsZXJ0KHtcbiAgICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJyxcbiAgICAgICAgICAgIHRleHQ6XG4gICAgICAgICAgICAgIGVycm9yPy5uYW1lID09PSAnVGltZW91dEVycm9yJ1xuICAgICAgICAgICAgICAgID8gdGhpcy5USU1FT1VUX0VSUk9SX1RFWFRcbiAgICAgICAgICAgICAgICA6IGVycm9yPy5tZXNzYWdlID8/IHRoaXMuU0VSVkVSX0VSUk9SX1RFWFRcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU1hcENvbmZpZ1JlYWx0aW1lKCkge1xuICAgIHRoaXMubWFwQ29uZmlnLnJlYWx0aW1lID0gdGhpcy5jb25maWcucmVhbHRpbWUgfHwgZmFsc2U7XG4gIH1cbn1cbiIsIjxjOHktbWFwLXN0YXR1c1xuICBbY2x1c3Rlck1hcF09XCJtYXBXaWRnZXRcIlxuICBbKGNvbmZpZyldPVwibWFwQ29uZmlnXCJcbiAgKG9uVW5mb2xsb3cpPVwic3RvcEZvbGxvdygpXCJcbiAgW2J1dHRvbnNDb25maWddPVwiY29uZmlnLndpZGdldEluc3RhbmNlR2xvYmFsVGltZUNvbnRleHQgPyB7IHJlYWx0aW1lOiB7IHNob3c6IGZhbHNlIH0gfSA6IG51bGxcIlxuPjwvYzh5LW1hcC1zdGF0dXM+XG48Yzh5LWNsdXN0ZXItbWFwXG4gICNtYXBXaWRnZXRcbiAgW3Jvb3ROb2RlXT1cInJvb3ROb2RlXCJcbiAgW2NvbmZpZ109XCJtYXBDb25maWdcIlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJtYXAtbWFya2VyXCJcbiAgICAqYzh5TWFwUG9wdXA9XCJsZXQgY29udGV4dFwiXG4gID5cbiAgICA8YVxuICAgICAgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlIGRldmljZUxpbmsgdGV4dC0xMlwiXG4gICAgICByb3V0ZXJMaW5rPVwie3sgY29udGV4dCB8IGFzc2V0TGluayB9fVwiXG4gICAgPlxuICAgICAgPHN0cm9uZz57eyBjb250ZXh0Lm5hbWUgfX08L3N0cm9uZz5cbiAgICA8L2E+XG4gICAgPGM4eS1tYXAtZXZlbnQtaW5mbyBbYXNzZXRdPVwiY29udGV4dFwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4teHMgYnRuLWJsb2NrIG0tdC04XCJcbiAgICAgICAgW3RpdGxlXT1cIidBY3RpdmF0ZSByZWFsdGltZSBvbiB0aGlzIGFzc2V0IGFuZCBmb2xsb3cgaXQgaWYgaXQgbW92ZXMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJzdGFydEZvbGxvdyhjb250ZXh0KVwiXG4gICAgICAgICpuZ0lmPVwiIW1hcENvbmZpZy5mb2xsb3dcIlxuICAgICAgICB0cmFuc2xhdGVcbiAgICAgID5cbiAgICAgICAgRm9sbG93XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXhzIGJ0bi1ibG9jayBtLXQtOFwiXG4gICAgICAgIFt0aXRsZV09XCInU3RvcCBmb2xsb3dpbmcgdGhpcyBhc3NldC4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJzdG9wRm9sbG93KClcIlxuICAgICAgICAqbmdJZj1cIm1hcENvbmZpZy5mb2xsb3dcIlxuICAgICAgICB0cmFuc2xhdGVcbiAgICAgID5cbiAgICAgICAgVW5mb2xsb3dcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvYzh5LW1hcC1ldmVudC1pbmZvPlxuICA8L2Rpdj5cbjwvYzh5LWNsdXN0ZXItbWFwPlxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXdpZGdldC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3dpZGdldHMvaW1wbGVtZW50YXRpb25zL21hcC9tYXAtd2lkZ2V0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJTWFuYWdlZE9iamVjdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IENsdXN0ZXJNYXBDb25maWcgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL21hcCc7XG5pbXBvcnQgeyBHbG9iYWxUaW1lQ29udGV4dFdpZGdldENvbmZpZyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuXG5leHBvcnQgdHlwZSBSZWZyZXNoT3B0aW9ucyA9ICdub25lJyB8ICdyZWFsdGltZScgfCAnaW50ZXJ2YWwnIHwgJ2Rhc2hib2FyZC1yZWFsdGltZS1jb250ZXh0JztcblxuZXhwb3J0IGludGVyZmFjZSBNYXBXaWRnZXRDb25maWcgZXh0ZW5kcyBHbG9iYWxUaW1lQ29udGV4dFdpZGdldENvbmZpZyB7XG4gIGRldmljZT86IElNYW5hZ2VkT2JqZWN0O1xuICBtYXBDb25maWc6IENsdXN0ZXJNYXBDb25maWc7XG4gIHdpZGdldEluc3RhbmNlR2xvYmFsVGltZUNvbnRleHQ/OiBib29sZWFuO1xuICByZWFsdGltZT86IGJvb2xlYW47XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXdpZGdldC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3dpZGdldHMvaW1wbGVtZW50YXRpb25zL21hcC9tYXAtd2lkZ2V0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJTWFuYWdlZE9iamVjdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IENsdXN0ZXJNYXBDb25maWcgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL21hcCc7XG5pbXBvcnQgeyBHbG9iYWxBdXRvUmVmcmVzaFdpZGdldENvbmZpZywgR2xvYmFsVGltZUNvbnRleHRXaWRnZXRDb25maWcgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcblxuZXhwb3J0IHR5cGUgTWFwUmVmcmVzaE9wdGlvbiA9XG4gIHwgJ25vbmUnXG4gIHwgJ3JlYWx0aW1lJ1xuICB8ICdpbnRlcnZhbCdcbiAgfCAnZGFzaGJvYXJkLWF1dG8tcmVmcmVzaC1jb250ZXh0J1xuICB8ICdkYXNoYm9hcmQtcmVhbHRpbWUtY29udGV4dCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwV2lkZ2V0Q29uZmlnXG4gIGV4dGVuZHMgR2xvYmFsVGltZUNvbnRleHRXaWRnZXRDb25maWcsXG4gICAgR2xvYmFsQXV0b1JlZnJlc2hXaWRnZXRDb25maWcge1xuICBkZXZpY2U/OiBJTWFuYWdlZE9iamVjdDtcbiAgbWFwQ29uZmlnOiBDbHVzdGVyTWFwQ29uZmlnO1xuICB3aWRnZXRJbnN0YW5jZUdsb2JhbFRpbWVDb250ZXh0PzogYm9vbGVhbjtcbiAgd2lkZ2V0SW5zdGFuY2VHbG9iYWxBdXRvUmVmcmVzaENvbnRleHQ/OiBib29sZWFuO1xuICByZWFsdGltZT86IGJvb2xlYW47XG59XG4iXX0=
@@ -286,6 +286,7 @@ class AlarmsViewService {
286
286
  this.optionsService = optionsService;
287
287
  this.ALARM_REFRESH_TYPE_KEY = 'alarmsRefreshType';
288
288
  this.DEFAULT_INTERVAL_VALUE = 30_000;
289
+ this.DEFAULT_REFRESH_OPTION_VALUE = 'interval';
289
290
  this.DEFAULT_INTERVAL_VALUES = [5_000, 10_000, 15_000, 30_000, 60_000];
290
291
  this.REALTIME_UPDATE_ALARMS_MESSAGE = gettext('The list was updated, click to refresh.');
291
292
  this.reloadAlarmsList$ = new Subject();
@@ -1563,21 +1564,10 @@ class AlarmsListComponent {
1563
1564
  * clicks on an alarm.
1564
1565
  */
1565
1566
  this.navigationOptions = {
1566
- /**
1567
- * Defines if the alarm should navigate to a detail view when clicked.
1568
- */
1569
1567
  allowNavigationToAlarmsView: true,
1570
- /**
1571
- * Defines if the component should try to determine the context to navigate
1572
- * to the correct alarm detail view or not. If set to true, the component will
1573
- * not try to determine the context and will always navigate to the all alarms view.
1574
- */
1575
1568
  alwaysNavigateToAllAlarms: false,
1576
- /**
1577
- * Defines if the cleared query parameter should be included in the navigation if
1578
- * the alarm is cleared.
1579
- */
1580
- includeClearedQueryParams: false
1569
+ includeClearedQueryParams: false,
1570
+ queryParamsHandling: 'merge'
1581
1571
  };
1582
1572
  /**
1583
1573
  * Controls the visibility of the loading bar
@@ -1686,11 +1676,11 @@ class AlarmsListComponent {
1686
1676
  this.activeChildParam$.subscribe();
1687
1677
  }
1688
1678
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AlarmsListComponent, deps: [{ token: i1$1.ActivatedRoute }, { token: AlarmsViewService }, { token: i3.ContextRouteService }, { token: i1$1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
1689
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: AlarmsListComponent, selector: "c8y-alarms-list", inputs: { alarms: "alarms", hasPermissions: "hasPermissions", typeFilters: "typeFilters", loadMoreMode: "loadMoreMode", navigationOptions: "navigationOptions", isInitialLoading: "isInitialLoading", splitView: "splitView" }, outputs: { onSelectedAlarm: "onSelectedAlarm", onScrollingStateChange: "onScrollingStateChange" }, viewQueries: [{ propertyName: "innerScrollWrapper", first: true, predicate: ["scrollWrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"inner-scroll\"\n [ngClass]=\"{ 'split-view__list bg-level-1': splitView, 'bg-component': !splitView }\"\n data-cy=\"c8y-alarms-list\"\n #scrollWrapper\n>\n <div\n class=\"flex-wrap flex-no-shrink sticky-top m-b-16\"\n [ngClass]=\"{\n 'separator-bottom card-header p-b-0': splitView,\n 'd-flex fit-w separator-top-bottom widget-bar p-l-16 p-r-16':\n !splitView && navigationOptions.allowNavigationToAlarmsView\n }\"\n >\n <div\n class=\"h4 card-title\"\n *ngIf=\"splitView\"\n >\n {{ 'Alarms list' | translate }}\n </div>\n <div\n [ngClass]=\"{ 'fit-w d-flex a-i-center gap-16': !splitView, 'fit-h-20 m-l-auto': splitView }\"\n >\n <ng-content></ng-content>\n </div>\n <!-- Loading -->\n <div\n class=\"fit-w overflow-hidden\"\n [ngClass]=\"{ 'p-t-16': splitView }\"\n >\n <div\n class=\"loading-bar\"\n style=\"z-index: 101\"\n [ngClass]=\"{ active: isInitialLoading && !isEmptyListLoading }\"\n ></div>\n </div>\n\n <div\n class=\"alert alert-warning\"\n role=\"alert\"\n translate\n *ngIf=\"\n !isEmptyListLoading &&\n (activeChildParam$ | async) &&\n (activeAlarm$ | async)?.id !== (activeChildParam$ | async)\n \"\n >\n The selected alarm is not currently in the list, change your filter.\n </div>\n </div>\n <c8y-list-group\n class=\"p-r-16 interactive\"\n [ngStyle]=\"{ opacity: isInitialLoading && !isEmptyListLoading ? 0.2 : 1 }\"\n style=\"transition: opacity 0.15s linear\"\n data-cy=\"c8y-alarm-list--group\"\n >\n <c8y-li-timeline\n class=\"pointer\"\n role=\"button\"\n data-cy=\"c8y-alarm-list--timeline-repeat\"\n *c8yFor=\"let alarm of alarms; let i = index; pipe: mapAlarmLink; loadMore: loadMoreMode\"\n [routerLink]=\"navigationOptions.allowNavigationToAlarmsView ? alarm.link : null\"\n routerLinkActive=\"active\"\n queryParamsHandling=\"merge\"\n (isActiveChange)=\"activeRouteChanged($event, liScrollAnchor, alarm)\"\n (click)=\"onAlarmOpen(alarm)\"\n [queryParams]=\"\n navigationOptions.includeClearedQueryParams\n ? { showCleared: alarm.status === 'CLEARED' }\n : {}\n \"\n >\n <span\n [attr.aria-label]=\"alarmLastOccurrenceLabel | translate\"\n [tooltip]=\"alarmLastOccurrenceLabel | translate\"\n placement=\"right\"\n container=\"body\"\n [delay]=\"500\"\n >\n {{ alarm.time | c8yDate: 'mediumDate' }}\n {{ alarm.time | c8yDate: 'mediumTime' }}\n </span>\n <c8y-li\n style=\"scroll-margin-top: 56px\"\n #liScrollAnchor\n >\n <c8y-li-icon class=\"a-s-start\">\n <div class=\"alarm-icons\">\n <c8y-alarms-icon [typeFilters]=\"typeFilters\" [alarm]=\"alarm\"></c8y-alarms-icon>\n </div>\n <button\n class=\"btn-clean text-center\"\n [attr.aria-label]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n [tooltip]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n placement=\"right\"\n container=\"body\"\n type=\"button\"\n *ngIf=\"alarm.firstOccurrenceTime\"\n (click)=\"$event.stopPropagation()\"\n [delay]=\"500\"\n >\n <span\n class=\"badge badge-info\"\n *ngIf=\"alarm.count > 1\"\n >\n {{ alarm.count }}\n </span>\n </button>\n </c8y-li-icon>\n <c8y-li-body class=\"a-s-stretch\">\n <div class=\"d-flex a-i-start fit-h\">\n <div class=\"min-width-0 flex-grow\">\n <p class=\"text-truncate-wrap p-b-4\">\n {{ alarm.text | translate }}\n </p>\n <div class=\"d-flex\">\n <p\n class=\"small text-muted text-truncate flex-grow\"\n [title]=\"alarm.source.name\"\n >\n <i [c8yIcon]=\"'exchange'\"></i>\n {{ alarm.source.name }}\n </p>\n <div class=\"d-flex\">\n <div\n [title]=\"item.title | translate\"\n *ngFor=\"let item of alarm | alarmListIndicator | async\"\n >\n <i\n [class]=\"item.class\"\n [c8yIcon]=\"item.icon\"\n ></i>\n </div>\n </div>\n </div>\n </div>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-li-timeline>\n <c8y-loading *ngIf=\"isInitialLoading && isEmptyListLoading\"></c8y-loading>\n <div\n class=\"p-relative p-l-24\"\n *ngIf=\"isEmptyListLoading && !isInitialLoading\"\n >\n <c8y-ui-empty-state\n [icon]=\"'c8y-alert-idle'\"\n [title]=\"'No alarms to display.' | translate\"\n data-cy=\"alarm-list--empty-state\"\n *ngIf=\"hasPermissions; else alertsA\"\n >\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a\n c8y-guide-href=\"/docs/device-management-application/monitoring-and-controlling-devices/#working-with-alarms\"\n >\n user documentation\n </a>\n .\n </small>\n </p>\n </c8y-ui-empty-state>\n </div>\n </c8y-list-group>\n</div>\n\n<ng-template #alertsA>\n <c8y-dynamic-component-alerts [alerts]=\"alertAggregator\"></c8y-dynamic-component-alerts>\n</ng-template>\n", dependencies: [{ kind: "component", type: i3.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "directive", type: i3.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i3.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "component", type: i3.DynamicComponentAlertsComponent, selector: "c8y-dynamic-component-alerts", inputs: ["alerts"] }, { kind: "component", type: i3.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i3.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i3.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i3.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i3.ListItemTimelineComponent, selector: "c8y-list-item-timeline, c8y-li-timeline" }, { 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: "directive", type: i1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: AlarmsIconComponent, selector: "c8y-alarms-icon", inputs: ["alarm", "typeFilters"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.DatePipe, name: "c8yDate" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: AlarmListIndicatorPipe, name: "alarmListIndicator" }] }); }
1679
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: AlarmsListComponent, selector: "c8y-alarms-list", inputs: { alarms: "alarms", hasPermissions: "hasPermissions", typeFilters: "typeFilters", loadMoreMode: "loadMoreMode", navigationOptions: "navigationOptions", isInitialLoading: "isInitialLoading", splitView: "splitView" }, outputs: { onSelectedAlarm: "onSelectedAlarm", onScrollingStateChange: "onScrollingStateChange" }, viewQueries: [{ propertyName: "innerScrollWrapper", first: true, predicate: ["scrollWrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"inner-scroll\"\n [ngClass]=\"{ 'split-view__list bg-level-1': splitView, 'bg-component': !splitView }\"\n data-cy=\"c8y-alarms-list\"\n #scrollWrapper\n>\n <div\n class=\"flex-wrap flex-no-shrink sticky-top m-b-16\"\n [ngClass]=\"{\n 'separator-bottom card-header p-b-0': splitView,\n 'd-flex fit-w separator-top-bottom widget-bar p-l-16 p-r-16':\n !splitView && navigationOptions.allowNavigationToAlarmsView\n }\"\n >\n <div\n class=\"h4 card-title\"\n *ngIf=\"splitView\"\n >\n {{ 'Alarms list' | translate }}\n </div>\n <div\n [ngClass]=\"{ 'fit-w d-flex a-i-center gap-16': !splitView, 'fit-h-20 m-l-auto': splitView }\"\n >\n <ng-content></ng-content>\n </div>\n <!-- Loading -->\n <div\n class=\"fit-w overflow-hidden\"\n [ngClass]=\"{ 'p-t-16': splitView }\"\n >\n <div\n class=\"loading-bar\"\n style=\"z-index: 101\"\n [ngClass]=\"{ active: isInitialLoading && !isEmptyListLoading }\"\n ></div>\n </div>\n\n <div\n class=\"alert alert-warning\"\n role=\"alert\"\n translate\n *ngIf=\"\n !isEmptyListLoading &&\n (activeChildParam$ | async) &&\n (activeAlarm$ | async)?.id !== (activeChildParam$ | async)\n \"\n >\n The selected alarm is not currently in the list, change your filter.\n </div>\n </div>\n <c8y-list-group\n class=\"p-r-16 interactive\"\n [ngStyle]=\"{ opacity: isInitialLoading && !isEmptyListLoading ? 0.2 : 1 }\"\n style=\"transition: opacity 0.15s linear\"\n data-cy=\"c8y-alarm-list--group\"\n >\n <c8y-li-timeline\n class=\"pointer\"\n role=\"button\"\n data-cy=\"c8y-alarm-list--timeline-repeat\"\n *c8yFor=\"let alarm of alarms; let i = index; pipe: mapAlarmLink; loadMore: loadMoreMode\"\n [routerLink]=\"navigationOptions.allowNavigationToAlarmsView ? alarm.link : null\"\n routerLinkActive=\"active\"\n [queryParamsHandling]=\"navigationOptions.queryParamsHandling\"\n (isActiveChange)=\"activeRouteChanged($event, liScrollAnchor, alarm)\"\n (click)=\"onAlarmOpen(alarm)\"\n [queryParams]=\"\n navigationOptions.includeClearedQueryParams\n ? { showCleared: alarm.status === 'CLEARED' }\n : {}\n \"\n >\n <span\n [attr.aria-label]=\"alarmLastOccurrenceLabel | translate\"\n [tooltip]=\"alarmLastOccurrenceLabel | translate\"\n placement=\"right\"\n container=\"body\"\n [delay]=\"500\"\n >\n {{ alarm.time | c8yDate: 'mediumDate' }}\n {{ alarm.time | c8yDate: 'mediumTime' }}\n </span>\n <c8y-li\n style=\"scroll-margin-top: 56px\"\n #liScrollAnchor\n >\n <c8y-li-icon class=\"a-s-start\">\n <div class=\"alarm-icons\">\n <c8y-alarms-icon [typeFilters]=\"typeFilters\" [alarm]=\"alarm\"></c8y-alarms-icon>\n </div>\n <button\n class=\"btn-clean text-center\"\n [attr.aria-label]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n [tooltip]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n placement=\"right\"\n container=\"body\"\n type=\"button\"\n *ngIf=\"alarm.firstOccurrenceTime\"\n (click)=\"$event.stopPropagation()\"\n [delay]=\"500\"\n >\n <span\n class=\"badge badge-info\"\n *ngIf=\"alarm.count > 1\"\n >\n {{ alarm.count }}\n </span>\n </button>\n </c8y-li-icon>\n <c8y-li-body class=\"a-s-stretch\">\n <div class=\"d-flex a-i-start fit-h\">\n <div class=\"min-width-0 flex-grow\">\n <p class=\"text-truncate-wrap p-b-4\">\n {{ alarm.text | translate }}\n </p>\n <div class=\"d-flex\">\n <p\n class=\"small text-muted text-truncate flex-grow\"\n [title]=\"alarm.source.name\"\n >\n <i [c8yIcon]=\"'exchange'\"></i>\n {{ alarm.source.name }}\n </p>\n <div class=\"d-flex\">\n <div\n [title]=\"item.title | translate\"\n *ngFor=\"let item of alarm | alarmListIndicator | async\"\n >\n <i\n [class]=\"item.class\"\n [c8yIcon]=\"item.icon\"\n ></i>\n </div>\n </div>\n </div>\n </div>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-li-timeline>\n <c8y-loading *ngIf=\"isInitialLoading && isEmptyListLoading\"></c8y-loading>\n <div\n class=\"p-relative p-l-24\"\n *ngIf=\"isEmptyListLoading && !isInitialLoading\"\n >\n <c8y-ui-empty-state\n [icon]=\"'c8y-alert-idle'\"\n [title]=\"'No alarms to display.' | translate\"\n data-cy=\"alarm-list--empty-state\"\n *ngIf=\"hasPermissions; else alertsA\"\n >\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a\n c8y-guide-href=\"/docs/device-management-application/monitoring-and-controlling-devices/#working-with-alarms\"\n >\n user documentation\n </a>\n .\n </small>\n </p>\n </c8y-ui-empty-state>\n </div>\n </c8y-list-group>\n</div>\n\n<ng-template #alertsA>\n <c8y-dynamic-component-alerts [alerts]=\"alertAggregator\"></c8y-dynamic-component-alerts>\n</ng-template>\n", dependencies: [{ kind: "component", type: i3.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "directive", type: i3.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i3.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "component", type: i3.DynamicComponentAlertsComponent, selector: "c8y-dynamic-component-alerts", inputs: ["alerts"] }, { kind: "component", type: i3.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i3.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i3.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i3.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i3.ListItemTimelineComponent, selector: "c8y-list-item-timeline, c8y-li-timeline" }, { 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: "directive", type: i1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: AlarmsIconComponent, selector: "c8y-alarms-icon", inputs: ["alarm", "typeFilters"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.DatePipe, name: "c8yDate" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: AlarmListIndicatorPipe, name: "alarmListIndicator" }] }); }
1690
1680
  }
1691
1681
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AlarmsListComponent, decorators: [{
1692
1682
  type: Component,
1693
- args: [{ selector: 'c8y-alarms-list', template: "<div\n class=\"inner-scroll\"\n [ngClass]=\"{ 'split-view__list bg-level-1': splitView, 'bg-component': !splitView }\"\n data-cy=\"c8y-alarms-list\"\n #scrollWrapper\n>\n <div\n class=\"flex-wrap flex-no-shrink sticky-top m-b-16\"\n [ngClass]=\"{\n 'separator-bottom card-header p-b-0': splitView,\n 'd-flex fit-w separator-top-bottom widget-bar p-l-16 p-r-16':\n !splitView && navigationOptions.allowNavigationToAlarmsView\n }\"\n >\n <div\n class=\"h4 card-title\"\n *ngIf=\"splitView\"\n >\n {{ 'Alarms list' | translate }}\n </div>\n <div\n [ngClass]=\"{ 'fit-w d-flex a-i-center gap-16': !splitView, 'fit-h-20 m-l-auto': splitView }\"\n >\n <ng-content></ng-content>\n </div>\n <!-- Loading -->\n <div\n class=\"fit-w overflow-hidden\"\n [ngClass]=\"{ 'p-t-16': splitView }\"\n >\n <div\n class=\"loading-bar\"\n style=\"z-index: 101\"\n [ngClass]=\"{ active: isInitialLoading && !isEmptyListLoading }\"\n ></div>\n </div>\n\n <div\n class=\"alert alert-warning\"\n role=\"alert\"\n translate\n *ngIf=\"\n !isEmptyListLoading &&\n (activeChildParam$ | async) &&\n (activeAlarm$ | async)?.id !== (activeChildParam$ | async)\n \"\n >\n The selected alarm is not currently in the list, change your filter.\n </div>\n </div>\n <c8y-list-group\n class=\"p-r-16 interactive\"\n [ngStyle]=\"{ opacity: isInitialLoading && !isEmptyListLoading ? 0.2 : 1 }\"\n style=\"transition: opacity 0.15s linear\"\n data-cy=\"c8y-alarm-list--group\"\n >\n <c8y-li-timeline\n class=\"pointer\"\n role=\"button\"\n data-cy=\"c8y-alarm-list--timeline-repeat\"\n *c8yFor=\"let alarm of alarms; let i = index; pipe: mapAlarmLink; loadMore: loadMoreMode\"\n [routerLink]=\"navigationOptions.allowNavigationToAlarmsView ? alarm.link : null\"\n routerLinkActive=\"active\"\n queryParamsHandling=\"merge\"\n (isActiveChange)=\"activeRouteChanged($event, liScrollAnchor, alarm)\"\n (click)=\"onAlarmOpen(alarm)\"\n [queryParams]=\"\n navigationOptions.includeClearedQueryParams\n ? { showCleared: alarm.status === 'CLEARED' }\n : {}\n \"\n >\n <span\n [attr.aria-label]=\"alarmLastOccurrenceLabel | translate\"\n [tooltip]=\"alarmLastOccurrenceLabel | translate\"\n placement=\"right\"\n container=\"body\"\n [delay]=\"500\"\n >\n {{ alarm.time | c8yDate: 'mediumDate' }}\n {{ alarm.time | c8yDate: 'mediumTime' }}\n </span>\n <c8y-li\n style=\"scroll-margin-top: 56px\"\n #liScrollAnchor\n >\n <c8y-li-icon class=\"a-s-start\">\n <div class=\"alarm-icons\">\n <c8y-alarms-icon [typeFilters]=\"typeFilters\" [alarm]=\"alarm\"></c8y-alarms-icon>\n </div>\n <button\n class=\"btn-clean text-center\"\n [attr.aria-label]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n [tooltip]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n placement=\"right\"\n container=\"body\"\n type=\"button\"\n *ngIf=\"alarm.firstOccurrenceTime\"\n (click)=\"$event.stopPropagation()\"\n [delay]=\"500\"\n >\n <span\n class=\"badge badge-info\"\n *ngIf=\"alarm.count > 1\"\n >\n {{ alarm.count }}\n </span>\n </button>\n </c8y-li-icon>\n <c8y-li-body class=\"a-s-stretch\">\n <div class=\"d-flex a-i-start fit-h\">\n <div class=\"min-width-0 flex-grow\">\n <p class=\"text-truncate-wrap p-b-4\">\n {{ alarm.text | translate }}\n </p>\n <div class=\"d-flex\">\n <p\n class=\"small text-muted text-truncate flex-grow\"\n [title]=\"alarm.source.name\"\n >\n <i [c8yIcon]=\"'exchange'\"></i>\n {{ alarm.source.name }}\n </p>\n <div class=\"d-flex\">\n <div\n [title]=\"item.title | translate\"\n *ngFor=\"let item of alarm | alarmListIndicator | async\"\n >\n <i\n [class]=\"item.class\"\n [c8yIcon]=\"item.icon\"\n ></i>\n </div>\n </div>\n </div>\n </div>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-li-timeline>\n <c8y-loading *ngIf=\"isInitialLoading && isEmptyListLoading\"></c8y-loading>\n <div\n class=\"p-relative p-l-24\"\n *ngIf=\"isEmptyListLoading && !isInitialLoading\"\n >\n <c8y-ui-empty-state\n [icon]=\"'c8y-alert-idle'\"\n [title]=\"'No alarms to display.' | translate\"\n data-cy=\"alarm-list--empty-state\"\n *ngIf=\"hasPermissions; else alertsA\"\n >\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a\n c8y-guide-href=\"/docs/device-management-application/monitoring-and-controlling-devices/#working-with-alarms\"\n >\n user documentation\n </a>\n .\n </small>\n </p>\n </c8y-ui-empty-state>\n </div>\n </c8y-list-group>\n</div>\n\n<ng-template #alertsA>\n <c8y-dynamic-component-alerts [alerts]=\"alertAggregator\"></c8y-dynamic-component-alerts>\n</ng-template>\n" }]
1683
+ args: [{ selector: 'c8y-alarms-list', template: "<div\n class=\"inner-scroll\"\n [ngClass]=\"{ 'split-view__list bg-level-1': splitView, 'bg-component': !splitView }\"\n data-cy=\"c8y-alarms-list\"\n #scrollWrapper\n>\n <div\n class=\"flex-wrap flex-no-shrink sticky-top m-b-16\"\n [ngClass]=\"{\n 'separator-bottom card-header p-b-0': splitView,\n 'd-flex fit-w separator-top-bottom widget-bar p-l-16 p-r-16':\n !splitView && navigationOptions.allowNavigationToAlarmsView\n }\"\n >\n <div\n class=\"h4 card-title\"\n *ngIf=\"splitView\"\n >\n {{ 'Alarms list' | translate }}\n </div>\n <div\n [ngClass]=\"{ 'fit-w d-flex a-i-center gap-16': !splitView, 'fit-h-20 m-l-auto': splitView }\"\n >\n <ng-content></ng-content>\n </div>\n <!-- Loading -->\n <div\n class=\"fit-w overflow-hidden\"\n [ngClass]=\"{ 'p-t-16': splitView }\"\n >\n <div\n class=\"loading-bar\"\n style=\"z-index: 101\"\n [ngClass]=\"{ active: isInitialLoading && !isEmptyListLoading }\"\n ></div>\n </div>\n\n <div\n class=\"alert alert-warning\"\n role=\"alert\"\n translate\n *ngIf=\"\n !isEmptyListLoading &&\n (activeChildParam$ | async) &&\n (activeAlarm$ | async)?.id !== (activeChildParam$ | async)\n \"\n >\n The selected alarm is not currently in the list, change your filter.\n </div>\n </div>\n <c8y-list-group\n class=\"p-r-16 interactive\"\n [ngStyle]=\"{ opacity: isInitialLoading && !isEmptyListLoading ? 0.2 : 1 }\"\n style=\"transition: opacity 0.15s linear\"\n data-cy=\"c8y-alarm-list--group\"\n >\n <c8y-li-timeline\n class=\"pointer\"\n role=\"button\"\n data-cy=\"c8y-alarm-list--timeline-repeat\"\n *c8yFor=\"let alarm of alarms; let i = index; pipe: mapAlarmLink; loadMore: loadMoreMode\"\n [routerLink]=\"navigationOptions.allowNavigationToAlarmsView ? alarm.link : null\"\n routerLinkActive=\"active\"\n [queryParamsHandling]=\"navigationOptions.queryParamsHandling\"\n (isActiveChange)=\"activeRouteChanged($event, liScrollAnchor, alarm)\"\n (click)=\"onAlarmOpen(alarm)\"\n [queryParams]=\"\n navigationOptions.includeClearedQueryParams\n ? { showCleared: alarm.status === 'CLEARED' }\n : {}\n \"\n >\n <span\n [attr.aria-label]=\"alarmLastOccurrenceLabel | translate\"\n [tooltip]=\"alarmLastOccurrenceLabel | translate\"\n placement=\"right\"\n container=\"body\"\n [delay]=\"500\"\n >\n {{ alarm.time | c8yDate: 'mediumDate' }}\n {{ alarm.time | c8yDate: 'mediumTime' }}\n </span>\n <c8y-li\n style=\"scroll-margin-top: 56px\"\n #liScrollAnchor\n >\n <c8y-li-icon class=\"a-s-start\">\n <div class=\"alarm-icons\">\n <c8y-alarms-icon [typeFilters]=\"typeFilters\" [alarm]=\"alarm\"></c8y-alarms-icon>\n </div>\n <button\n class=\"btn-clean text-center\"\n [attr.aria-label]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n [tooltip]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n placement=\"right\"\n container=\"body\"\n type=\"button\"\n *ngIf=\"alarm.firstOccurrenceTime\"\n (click)=\"$event.stopPropagation()\"\n [delay]=\"500\"\n >\n <span\n class=\"badge badge-info\"\n *ngIf=\"alarm.count > 1\"\n >\n {{ alarm.count }}\n </span>\n </button>\n </c8y-li-icon>\n <c8y-li-body class=\"a-s-stretch\">\n <div class=\"d-flex a-i-start fit-h\">\n <div class=\"min-width-0 flex-grow\">\n <p class=\"text-truncate-wrap p-b-4\">\n {{ alarm.text | translate }}\n </p>\n <div class=\"d-flex\">\n <p\n class=\"small text-muted text-truncate flex-grow\"\n [title]=\"alarm.source.name\"\n >\n <i [c8yIcon]=\"'exchange'\"></i>\n {{ alarm.source.name }}\n </p>\n <div class=\"d-flex\">\n <div\n [title]=\"item.title | translate\"\n *ngFor=\"let item of alarm | alarmListIndicator | async\"\n >\n <i\n [class]=\"item.class\"\n [c8yIcon]=\"item.icon\"\n ></i>\n </div>\n </div>\n </div>\n </div>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-li-timeline>\n <c8y-loading *ngIf=\"isInitialLoading && isEmptyListLoading\"></c8y-loading>\n <div\n class=\"p-relative p-l-24\"\n *ngIf=\"isEmptyListLoading && !isInitialLoading\"\n >\n <c8y-ui-empty-state\n [icon]=\"'c8y-alert-idle'\"\n [title]=\"'No alarms to display.' | translate\"\n data-cy=\"alarm-list--empty-state\"\n *ngIf=\"hasPermissions; else alertsA\"\n >\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a\n c8y-guide-href=\"/docs/device-management-application/monitoring-and-controlling-devices/#working-with-alarms\"\n >\n user documentation\n </a>\n .\n </small>\n </p>\n </c8y-ui-empty-state>\n </div>\n </c8y-list-group>\n</div>\n\n<ng-template #alertsA>\n <c8y-dynamic-component-alerts [alerts]=\"alertAggregator\"></c8y-dynamic-component-alerts>\n</ng-template>\n" }]
1694
1684
  }], ctorParameters: () => [{ type: i1$1.ActivatedRoute }, { type: AlarmsViewService }, { type: i3.ContextRouteService }, { type: i1$1.Router }], propDecorators: { alarms: [{
1695
1685
  type: Input
1696
1686
  }], hasPermissions: [{