@c8y/ngx-components 1021.11.1 → 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 (434) hide show
  1. package/alarms/alarms-date-filter.component.d.ts +34 -0
  2. package/alarms/alarms-date-filter.component.d.ts.map +1 -0
  3. package/alarms/alarms-filter.component.d.ts +2 -1
  4. package/alarms/alarms-filter.component.d.ts.map +1 -1
  5. package/alarms/alarms-list.component.d.ts +2 -17
  6. package/alarms/alarms-list.component.d.ts.map +1 -1
  7. package/alarms/alarms-view.service.d.ts +5 -2
  8. package/alarms/alarms-view.service.d.ts.map +1 -1
  9. package/alarms/alarms.component.d.ts +3 -1
  10. package/alarms/alarms.component.d.ts.map +1 -1
  11. package/alarms/alarms.model.d.ts +47 -1
  12. package/alarms/alarms.model.d.ts.map +1 -1
  13. package/alarms/alarms.module.d.ts +15 -13
  14. package/alarms/alarms.module.d.ts.map +1 -1
  15. package/branding/shared/data/store-branding.service.d.ts +5 -0
  16. package/branding/shared/data/store-branding.service.d.ts.map +1 -1
  17. package/branding/shared/lazy/branding/branding.component.d.ts.map +1 -1
  18. package/context-dashboard/context-dashboard.model.d.ts +1 -0
  19. package/context-dashboard/context-dashboard.model.d.ts.map +1 -1
  20. package/context-dashboard/context-dashboard.service.d.ts +7 -5
  21. package/context-dashboard/context-dashboard.service.d.ts.map +1 -1
  22. package/context-dashboard/dashboard-detail.component.d.ts +4 -7
  23. package/context-dashboard/dashboard-detail.component.d.ts.map +1 -1
  24. package/context-dashboard/dashboard-detail.service.d.ts +4 -4
  25. package/context-dashboard/dashboard-detail.service.d.ts.map +1 -1
  26. package/context-dashboard/dashboard-settings/dashboard-general-settings.component.d.ts +2 -2
  27. package/context-dashboard/dashboard-settings/dashboard-general-settings.component.d.ts.map +1 -1
  28. package/context-dashboard/dashboard-settings/typed-dashboard-settings.component.d.ts +19 -6
  29. package/context-dashboard/dashboard-settings/typed-dashboard-settings.component.d.ts.map +1 -1
  30. package/core/action-bar/action-bar-item.component.d.ts +1 -1
  31. package/core/action-bar/action-bar-item.component.d.ts.map +1 -1
  32. package/core/action-bar/action-bar.module.d.ts +6 -6
  33. package/core/action-bar/action-bar.module.d.ts.map +1 -1
  34. package/core/bootstrap/bootstrap.component.d.ts +3 -1
  35. package/core/bootstrap/bootstrap.component.d.ts.map +1 -1
  36. package/core/common/aggregation/aggregation.model.d.ts +39 -0
  37. package/core/common/aggregation/aggregation.model.d.ts.map +1 -0
  38. package/core/common/aggregation/aggregation.service.d.ts +17 -0
  39. package/core/common/aggregation/aggregation.service.d.ts.map +1 -0
  40. package/core/common/index.d.ts +4 -0
  41. package/core/common/index.d.ts.map +1 -1
  42. package/core/common/inter-app.service.d.ts +48 -0
  43. package/core/common/inter-app.service.d.ts.map +1 -0
  44. package/core/common/interval-based-reload.abstract.d.ts +120 -0
  45. package/core/common/interval-based-reload.abstract.d.ts.map +1 -0
  46. package/core/dashboard/dashboard.module.d.ts +26 -20
  47. package/core/dashboard/dashboard.module.d.ts.map +1 -1
  48. package/core/dashboard/index.d.ts +3 -0
  49. package/core/dashboard/index.d.ts.map +1 -1
  50. package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts +31 -0
  51. package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts.map +1 -0
  52. package/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.d.ts +17 -0
  53. package/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.d.ts.map +1 -0
  54. package/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.d.ts +4 -0
  55. package/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.d.ts.map +1 -0
  56. package/core/dashboard/widget-auto-refresh-context/index.d.ts +8 -0
  57. package/core/dashboard/widget-auto-refresh-context/index.d.ts.map +1 -0
  58. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.d.ts +7 -0
  59. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.d.ts.map +1 -0
  60. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.d.ts +29 -0
  61. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.d.ts.map +1 -0
  62. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.d.ts +15 -0
  63. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.d.ts.map +1 -0
  64. package/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.d.ts +169 -0
  65. package/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.d.ts.map +1 -0
  66. package/core/dashboard/widget-change-event.model.d.ts +1 -1
  67. package/core/dashboard/widget-change-event.model.d.ts.map +1 -1
  68. package/core/dashboard/widgets-dashboard.component.d.ts +6 -3
  69. package/core/dashboard/widgets-dashboard.component.d.ts.map +1 -1
  70. package/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.d.ts +2 -2
  71. package/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.d.ts.map +1 -1
  72. package/core/dashboard/wiget-time-context/widget-time-context-helper.service.d.ts +2 -1
  73. package/core/dashboard/wiget-time-context/widget-time-context-helper.service.d.ts.map +1 -1
  74. package/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.d.ts +1 -1
  75. package/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.d.ts.map +1 -1
  76. package/core/dashboard/wiget-time-context/widget-time-context-query.service.d.ts.map +1 -1
  77. package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts +12 -8
  78. package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts.map +1 -1
  79. package/core/dashboard/wiget-time-context/widget-time-context.model.d.ts +7 -26
  80. package/core/dashboard/wiget-time-context/widget-time-context.model.d.ts.map +1 -1
  81. package/core/date-time-picker/date-time-picker.component.d.ts.map +1 -1
  82. package/core/header/header.module.d.ts +18 -18
  83. package/core/header/header.module.d.ts.map +1 -1
  84. package/core/header/title/title.component.d.ts +1 -1
  85. package/core/header/title/title.component.d.ts.map +1 -1
  86. package/core/i18n/cached-locale-dictionary.service.d.ts +5 -1
  87. package/core/i18n/cached-locale-dictionary.service.d.ts.map +1 -1
  88. package/core/i18n/i18n.module.d.ts +0 -4
  89. package/core/i18n/i18n.module.d.ts.map +1 -1
  90. package/core/i18n/index.d.ts +2 -1
  91. package/core/i18n/index.d.ts.map +1 -1
  92. package/core/i18n/translation-loader.service.d.ts +50 -0
  93. package/core/i18n/translation-loader.service.d.ts.map +1 -0
  94. package/core/i18n/translation-utils.d.ts +14 -0
  95. package/core/i18n/translation-utils.d.ts.map +1 -0
  96. package/core/plugins/plugins-resolve.service.d.ts +7 -10
  97. package/core/plugins/plugins-resolve.service.d.ts.map +1 -1
  98. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.d.ts +2 -1
  99. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.d.ts.map +1 -1
  100. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts +11 -2
  101. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts.map +1 -1
  102. package/datapoint-selector/datapoint-selection.model.d.ts +6 -0
  103. package/datapoint-selector/datapoint-selection.model.d.ts.map +1 -1
  104. package/datapoints-export-selector/c8y-ngx-components-datapoints-export-selector.d.ts.map +1 -0
  105. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts +117 -0
  106. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts.map +1 -0
  107. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.d.ts +90 -0
  108. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.d.ts.map +1 -0
  109. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.d.ts +160 -0
  110. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.d.ts.map +1 -0
  111. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts +89 -0
  112. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts.map +1 -0
  113. 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
  114. 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
  115. 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
  116. 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
  117. 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
  118. 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
  119. 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
  120. 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
  121. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.d.ts +3 -0
  122. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.d.ts.map +1 -0
  123. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.d.ts +9 -0
  124. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.d.ts.map +1 -0
  125. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.d.ts +56 -0
  126. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.d.ts.map +1 -0
  127. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.d.ts +21 -0
  128. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.d.ts.map +1 -0
  129. package/datapoints-export-selector/datapoints-export-selector.component.d.ts +14 -0
  130. package/datapoints-export-selector/datapoints-export-selector.component.d.ts.map +1 -0
  131. package/datapoints-export-selector/datapoints-export-selector.model.d.ts +232 -0
  132. package/datapoints-export-selector/datapoints-export-selector.model.d.ts.map +1 -0
  133. package/datapoints-export-selector/index.d.ts +15 -0
  134. package/datapoints-export-selector/index.d.ts.map +1 -0
  135. package/device-list/device-list.module.d.ts +4 -2
  136. package/device-list/device-list.module.d.ts.map +1 -1
  137. package/esm2022/alarm-event-selector/alarm-event-selection-list/alarm-event-selection-list.component.mjs +4 -4
  138. package/esm2022/alarm-event-selector/alarm-event-selector-list-item/alarm-event-selector-list-item.component.mjs +3 -3
  139. package/esm2022/alarms/alarms-date-filter.component.mjs +139 -0
  140. package/esm2022/alarms/alarms-filter.component.mjs +11 -5
  141. package/esm2022/alarms/alarms-list.component.mjs +5 -16
  142. package/esm2022/alarms/alarms-type-filter.component.mjs +3 -3
  143. package/esm2022/alarms/alarms-view.service.mjs +16 -2
  144. package/esm2022/alarms/alarms.component.mjs +12 -6
  145. package/esm2022/alarms/alarms.model.mjs +17 -1
  146. package/esm2022/alarms/alarms.module.mjs +11 -4
  147. package/esm2022/branding/shared/data/store-branding.service.mjs +24 -1
  148. package/esm2022/branding/shared/lazy/branding/branding.component.mjs +3 -1
  149. package/esm2022/context-dashboard/context-dashboard.component.mjs +4 -4
  150. package/esm2022/context-dashboard/context-dashboard.model.mjs +1 -1
  151. package/esm2022/context-dashboard/context-dashboard.service.mjs +47 -21
  152. package/esm2022/context-dashboard/dashboard-detail.component.mjs +8 -16
  153. package/esm2022/context-dashboard/dashboard-detail.service.mjs +13 -6
  154. package/esm2022/context-dashboard/dashboard-settings/dashboard-general-settings.component.mjs +3 -3
  155. package/esm2022/context-dashboard/dashboard-settings/typed-dashboard-settings.component.mjs +32 -11
  156. package/esm2022/core/action-bar/action-bar-item.component.mjs +3 -3
  157. package/esm2022/core/action-bar/action-bar.component.mjs +3 -3
  158. package/esm2022/core/action-bar/action-bar.module.mjs +16 -5
  159. package/esm2022/core/bootstrap/bootstrap.component.mjs +21 -16
  160. package/esm2022/core/common/aggregation/aggregation.model.mjs +46 -0
  161. package/esm2022/core/common/aggregation/aggregation.service.mjs +34 -0
  162. package/esm2022/core/common/humanize-app-name.model.mjs +2 -2
  163. package/esm2022/core/common/humanize-app-name.pipe.mjs +2 -2
  164. package/esm2022/core/common/index.mjs +5 -1
  165. package/esm2022/core/common/inter-app.service.mjs +76 -0
  166. package/esm2022/core/common/interval-based-reload.abstract.mjs +110 -0
  167. package/esm2022/core/countdown-interval/countdown-interval.component.mjs +3 -3
  168. package/esm2022/core/dashboard/dashboard-child.component.mjs +6 -5
  169. package/esm2022/core/dashboard/dashboard.module.mjs +22 -4
  170. package/esm2022/core/dashboard/index.mjs +4 -1
  171. package/esm2022/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.mjs +101 -0
  172. package/esm2022/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.mjs +50 -0
  173. package/esm2022/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.mjs +7 -0
  174. package/esm2022/core/dashboard/widget-auto-refresh-context/index.mjs +8 -0
  175. package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.mjs +18 -0
  176. package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.mjs +127 -0
  177. package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.mjs +5 -0
  178. package/esm2022/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.mjs +233 -0
  179. package/esm2022/core/dashboard/widget-change-event.model.mjs +1 -1
  180. package/esm2022/core/dashboard/widgets-dashboard.component.mjs +35 -30
  181. package/esm2022/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.mjs +4 -4
  182. package/esm2022/core/dashboard/wiget-time-context/realtime-control/realtime-control.component.mjs +2 -2
  183. package/esm2022/core/dashboard/wiget-time-context/widget-time-context-helper.service.mjs +3 -2
  184. package/esm2022/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.mjs +5 -5
  185. package/esm2022/core/dashboard/wiget-time-context/widget-time-context-query.service.mjs +7 -4
  186. package/esm2022/core/dashboard/wiget-time-context/widget-time-context.component.mjs +37 -36
  187. package/esm2022/core/dashboard/wiget-time-context/widget-time-context.model.mjs +1 -72
  188. package/esm2022/core/date-time-picker/date-time-picker.component.mjs +9 -3
  189. package/esm2022/core/header/header.module.mjs +7 -5
  190. package/esm2022/core/header/title/title.component.mjs +3 -3
  191. package/esm2022/core/i18n/cached-locale-dictionary.service.mjs +1 -1
  192. package/esm2022/core/i18n/i18n.module.mjs +7 -14
  193. package/esm2022/core/i18n/index.mjs +3 -2
  194. package/esm2022/core/i18n/translate.parser.mjs +2 -2
  195. package/esm2022/core/i18n/translation-loader.service.mjs +132 -0
  196. package/esm2022/core/i18n/translation-utils.mjs +24 -0
  197. package/esm2022/core/list-display-switch/list-display-switch.component.mjs +3 -3
  198. package/esm2022/core/plugins/plugins-resolve.service.mjs +12 -37
  199. package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.mjs +13 -6
  200. package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.mjs +22 -5
  201. package/esm2022/datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.mjs +3 -3
  202. package/esm2022/datapoint-selector/datapoint-selection.model.mjs +1 -1
  203. package/esm2022/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.mjs +3 -3
  204. package/esm2022/datapoints-export-selector/c8y-ngx-components-datapoints-export-selector.mjs +5 -0
  205. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.mjs +407 -0
  206. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.mjs +207 -0
  207. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.mjs +467 -0
  208. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.mjs +187 -0
  209. 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
  210. 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
  211. 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
  212. 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
  213. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.mjs +120 -0
  214. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.mjs +282 -0
  215. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.mjs +76 -0
  216. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.mjs +46 -0
  217. package/esm2022/datapoints-export-selector/datapoints-export-selector.component.mjs +42 -0
  218. package/esm2022/datapoints-export-selector/datapoints-export-selector.model.mjs +43 -0
  219. package/esm2022/datapoints-export-selector/index.mjs +15 -0
  220. package/esm2022/device-list/add-smart-group.component.mjs +4 -3
  221. package/esm2022/device-list/device-list.module.mjs +22 -4
  222. package/esm2022/interval-picker/c8y-ngx-components-interval-picker.mjs +5 -0
  223. package/esm2022/interval-picker/index.mjs +3 -0
  224. package/esm2022/interval-picker/interval-picker.component.mjs +68 -0
  225. package/esm2022/interval-picker/interval-picker.model.mjs +47 -0
  226. package/esm2022/map/cluster-map.component.mjs +41 -13
  227. package/esm2022/map/map-status.component.mjs +6 -5
  228. package/esm2022/map/map.component.mjs +9 -5
  229. package/esm2022/map/map.model.mjs +1 -1
  230. package/esm2022/translation-editor/c8y-ngx-components-translation-editor.mjs +5 -0
  231. package/esm2022/translation-editor/data/c8y-ngx-components-translation-editor-data.mjs +5 -0
  232. package/esm2022/translation-editor/data/index.mjs +2 -0
  233. package/esm2022/translation-editor/data/translation-store.service.mjs +175 -0
  234. package/esm2022/translation-editor/index.mjs +10 -0
  235. package/esm2022/translation-editor/lazy/add-translation-modal/add-translation-modal.component.mjs +70 -0
  236. package/esm2022/translation-editor/lazy/c8y-ngx-components-translation-editor-lazy.mjs +5 -0
  237. package/esm2022/translation-editor/lazy/index.mjs +2 -0
  238. package/esm2022/translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.mjs +53 -0
  239. package/esm2022/translation-editor/lazy/translation-editor/translation-editor.component.mjs +124 -0
  240. package/esm2022/translation-editor/translation-editor-naviagtor-factory.service.mjs +31 -0
  241. package/esm2022/widgets/cockpit/index.mjs +4 -2
  242. package/esm2022/widgets/cockpit-exports/index.mjs +8 -1
  243. package/esm2022/widgets/definitions/alarms/alarm-list/index.mjs +6 -2
  244. package/esm2022/widgets/definitions/alarms/all-critical-alarms/index.mjs +6 -2
  245. package/esm2022/widgets/definitions/alarms/recent-alarms/index.mjs +6 -2
  246. package/esm2022/widgets/definitions/datapoints-table/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +5 -0
  247. package/esm2022/widgets/definitions/datapoints-table/index.mjs +34 -0
  248. package/esm2022/widgets/definitions/index.mjs +2 -1
  249. package/esm2022/widgets/definitions/map/index.mjs +4 -2
  250. package/esm2022/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.mjs +29 -15
  251. package/esm2022/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.mjs +57 -25
  252. package/esm2022/widgets/implementations/alarms/alarm-list-widget.model.mjs +2 -1
  253. package/esm2022/widgets/implementations/alarms/alarm-widget-alarms-reload.component.mjs +19 -21
  254. package/esm2022/widgets/implementations/datapoints-table/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +5 -0
  255. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.mjs +383 -0
  256. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.mjs +124 -0
  257. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/adjust-aggregated-time-range.pipe.mjs +191 -0
  258. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/apply-range-class.pipe.mjs +36 -0
  259. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/column-title.pipe.mjs +45 -0
  260. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.mjs +116 -0
  261. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.mjs +116 -0
  262. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/dynamic-column.directive.mjs +43 -0
  263. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.mjs +282 -0
  264. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.mjs +430 -0
  265. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/virtual-scroll-listener.directive.mjs +75 -0
  266. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-widget.model.mjs +76 -0
  267. package/esm2022/widgets/implementations/datapoints-table/datapoints-table.service.mjs +52 -0
  268. package/esm2022/widgets/implementations/datapoints-table/date-range-picker.component.mjs +68 -0
  269. package/esm2022/widgets/implementations/datapoints-table/index.mjs +10 -0
  270. package/esm2022/widgets/implementations/map/map-widget-config.component.mjs +19 -11
  271. package/esm2022/widgets/implementations/map/map-widget.component.mjs +20 -2
  272. package/esm2022/widgets/implementations/map/map-widget.model.mjs +1 -1
  273. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +5 -5
  274. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
  275. package/fesm2022/c8y-ngx-components-alarms.mjs +189 -31
  276. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  277. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +23 -0
  278. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs.map +1 -1
  279. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +2 -0
  280. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
  281. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +135 -91
  282. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  283. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +37 -13
  284. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  285. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +1928 -0
  286. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -0
  287. package/fesm2022/c8y-ngx-components-device-list.mjs +24 -5
  288. package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
  289. package/fesm2022/c8y-ngx-components-interval-picker.mjs +120 -0
  290. package/fesm2022/c8y-ngx-components-interval-picker.mjs.map +1 -0
  291. package/fesm2022/c8y-ngx-components-map.mjs +52 -19
  292. package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
  293. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +181 -0
  294. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs.map +1 -0
  295. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +236 -0
  296. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -0
  297. package/fesm2022/c8y-ngx-components-translation-editor.mjs +46 -0
  298. package/fesm2022/c8y-ngx-components-translation-editor.mjs.map +1 -0
  299. package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs +7 -0
  300. package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs.map +1 -1
  301. package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs +3 -1
  302. package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs.map +1 -1
  303. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs +5 -1
  304. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
  305. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs +5 -1
  306. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs.map +1 -1
  307. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs +5 -1
  308. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs.map +1 -1
  309. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +41 -0
  310. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -0
  311. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs +3 -1
  312. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs.map +1 -1
  313. package/fesm2022/c8y-ngx-components-widgets-definitions.mjs +1 -0
  314. package/fesm2022/c8y-ngx-components-widgets-definitions.mjs.map +1 -1
  315. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +101 -58
  316. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  317. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +1967 -0
  318. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -0
  319. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +37 -11
  320. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  321. package/fesm2022/c8y-ngx-components.mjs +5093 -4369
  322. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  323. package/interval-picker/c8y-ngx-components-interval-picker.d.ts.map +1 -0
  324. package/interval-picker/index.d.ts +3 -0
  325. package/interval-picker/index.d.ts.map +1 -0
  326. package/{core/dashboard/wiget-time-context/interval-picker → interval-picker}/interval-picker.component.d.ts +10 -2
  327. package/interval-picker/interval-picker.component.d.ts.map +1 -0
  328. package/interval-picker/interval-picker.model.d.ts +15 -0
  329. package/interval-picker/interval-picker.model.d.ts.map +1 -0
  330. package/locales/de.po +289 -18
  331. package/locales/en.po +12 -0
  332. package/locales/en_US.po +3 -0
  333. package/locales/es.po +253 -18
  334. package/locales/fr.po +253 -18
  335. package/locales/ja_JP.po +282 -18
  336. package/locales/locales.pot +266 -21
  337. package/locales/nl.po +253 -18
  338. package/locales/pl.po +253 -18
  339. package/locales/pt_BR.po +253 -18
  340. package/map/cluster-map.component.d.ts +8 -3
  341. package/map/cluster-map.component.d.ts.map +1 -1
  342. package/map/map-status.component.d.ts +0 -3
  343. package/map/map-status.component.d.ts.map +1 -1
  344. package/map/map.component.d.ts +4 -2
  345. package/map/map.component.d.ts.map +1 -1
  346. package/map/map.model.d.ts +2 -1
  347. package/map/map.model.d.ts.map +1 -1
  348. package/package.json +1 -1
  349. package/translation-editor/c8y-ngx-components-translation-editor.d.ts.map +1 -0
  350. package/translation-editor/data/c8y-ngx-components-translation-editor-data.d.ts.map +1 -0
  351. package/translation-editor/data/index.d.ts +2 -0
  352. package/translation-editor/data/index.d.ts.map +1 -0
  353. package/translation-editor/data/translation-store.service.d.ts +61 -0
  354. package/translation-editor/data/translation-store.service.d.ts.map +1 -0
  355. package/translation-editor/index.d.ts +2 -0
  356. package/translation-editor/index.d.ts.map +1 -0
  357. package/translation-editor/lazy/add-translation-modal/add-translation-modal.component.d.ts +30 -0
  358. package/translation-editor/lazy/add-translation-modal/add-translation-modal.component.d.ts.map +1 -0
  359. package/translation-editor/lazy/c8y-ngx-components-translation-editor-lazy.d.ts.map +1 -0
  360. package/translation-editor/lazy/index.d.ts +2 -0
  361. package/translation-editor/lazy/index.d.ts.map +1 -0
  362. package/translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.d.ts +22 -0
  363. package/translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.d.ts.map +1 -0
  364. package/translation-editor/lazy/translation-editor/translation-editor.component.d.ts +34 -0
  365. package/translation-editor/lazy/translation-editor/translation-editor.component.d.ts.map +1 -0
  366. package/translation-editor/translation-editor-naviagtor-factory.service.d.ts +11 -0
  367. package/translation-editor/translation-editor-naviagtor-factory.service.d.ts.map +1 -0
  368. package/widgets/cockpit/index.d.ts +13 -0
  369. package/widgets/cockpit/index.d.ts.map +1 -1
  370. package/widgets/cockpit-exports/index.d.ts +6 -0
  371. package/widgets/cockpit-exports/index.d.ts.map +1 -1
  372. package/widgets/definitions/alarms/alarm-list/index.d.ts +2 -0
  373. package/widgets/definitions/alarms/alarm-list/index.d.ts.map +1 -1
  374. package/widgets/definitions/alarms/all-critical-alarms/index.d.ts +2 -0
  375. package/widgets/definitions/alarms/all-critical-alarms/index.d.ts.map +1 -1
  376. package/widgets/definitions/alarms/recent-alarms/index.d.ts +2 -0
  377. package/widgets/definitions/alarms/recent-alarms/index.d.ts.map +1 -1
  378. package/widgets/definitions/datapoints-table/c8y-ngx-components-widgets-definitions-datapoints-table.d.ts.map +1 -0
  379. package/widgets/definitions/datapoints-table/index.d.ts +14 -0
  380. package/widgets/definitions/datapoints-table/index.d.ts.map +1 -0
  381. package/widgets/definitions/index.d.ts +1 -0
  382. package/widgets/definitions/index.d.ts.map +1 -1
  383. package/widgets/definitions/map/index.d.ts +2 -1
  384. package/widgets/definitions/map/index.d.ts.map +1 -1
  385. package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts +5 -9
  386. package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts.map +1 -1
  387. package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts +17 -10
  388. package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts.map +1 -1
  389. package/widgets/implementations/alarms/alarm-list-widget.model.d.ts +5 -1
  390. package/widgets/implementations/alarms/alarm-list-widget.model.d.ts.map +1 -1
  391. package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts +5 -11
  392. package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts.map +1 -1
  393. package/widgets/implementations/datapoints-table/c8y-ngx-components-widgets-implementations-datapoints-table.d.ts.map +1 -0
  394. package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts +129 -0
  395. package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts.map +1 -0
  396. package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.d.ts +56 -0
  397. package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.d.ts.map +1 -0
  398. package/widgets/implementations/datapoints-table/datapoints-table-view/adjust-aggregated-time-range.pipe.d.ts +88 -0
  399. package/widgets/implementations/datapoints-table/datapoints-table-view/adjust-aggregated-time-range.pipe.d.ts.map +1 -0
  400. package/widgets/implementations/datapoints-table/datapoints-table-view/apply-range-class.pipe.d.ts +19 -0
  401. package/widgets/implementations/datapoints-table/datapoints-table-view/apply-range-class.pipe.d.ts.map +1 -0
  402. package/widgets/implementations/datapoints-table/datapoints-table-view/column-title.pipe.d.ts +26 -0
  403. package/widgets/implementations/datapoints-table/datapoints-table-view/column-title.pipe.d.ts.map +1 -0
  404. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts +63 -0
  405. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts.map +1 -0
  406. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.d.ts +38 -0
  407. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.d.ts.map +1 -0
  408. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/dynamic-column.directive.d.ts +13 -0
  409. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/dynamic-column.directive.d.ts.map +1 -0
  410. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts +123 -0
  411. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts.map +1 -0
  412. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.d.ts +196 -0
  413. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.d.ts.map +1 -0
  414. package/widgets/implementations/datapoints-table/datapoints-table-view/virtual-scroll-listener.directive.d.ts +41 -0
  415. package/widgets/implementations/datapoints-table/datapoints-table-view/virtual-scroll-listener.directive.d.ts.map +1 -0
  416. package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts +175 -0
  417. package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts.map +1 -0
  418. package/widgets/implementations/datapoints-table/datapoints-table.service.d.ts +12 -0
  419. package/widgets/implementations/datapoints-table/datapoints-table.service.d.ts.map +1 -0
  420. package/widgets/implementations/datapoints-table/date-range-picker.component.d.ts +34 -0
  421. package/widgets/implementations/datapoints-table/date-range-picker.component.d.ts.map +1 -0
  422. package/widgets/implementations/datapoints-table/index.d.ts +10 -0
  423. package/widgets/implementations/datapoints-table/index.d.ts.map +1 -0
  424. package/widgets/implementations/map/map-widget-config.component.d.ts +4 -4
  425. package/widgets/implementations/map/map-widget-config.component.d.ts.map +1 -1
  426. package/widgets/implementations/map/map-widget.component.d.ts +8 -3
  427. package/widgets/implementations/map/map-widget.component.d.ts.map +1 -1
  428. package/widgets/implementations/map/map-widget.model.d.ts +4 -3
  429. package/widgets/implementations/map/map-widget.model.d.ts.map +1 -1
  430. package/core/dashboard/wiget-time-context/interval-picker/interval-picker.component.d.ts.map +0 -1
  431. package/core/i18n/translate.loader.d.ts +0 -31
  432. package/core/i18n/translate.loader.d.ts.map +0 -1
  433. package/esm2022/core/dashboard/wiget-time-context/interval-picker/interval-picker.component.mjs +0 -55
  434. package/esm2022/core/i18n/translate.loader.mjs +0 -71
@@ -0,0 +1,187 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { AGGREGATION_VALUES, AggregationService, AlertService, gettext } from '@c8y/ngx-components';
3
+ import { TranslateService } from '@ngx-translate/core';
4
+ import { TIME_RANGE_INTERVAL_UNITS_VALUES } from '../../datapoints-export-selector.model';
5
+ import { DataProcessingService } from './data-processing.service';
6
+ import { TimeSpanInMs } from '@c8y/ngx-components/interval-picker';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@c8y/ngx-components";
9
+ import * as i2 from "./data-processing.service";
10
+ import * as i3 from "@ngx-translate/core";
11
+ export class DatapointsExportSelectorFileExporterService {
12
+ constructor(aggregationService, alertService, datapointsExportSelectorDataProcessingService, translateService) {
13
+ this.aggregationService = aggregationService;
14
+ this.alertService = alertService;
15
+ this.datapointsExportSelectorDataProcessingService = datapointsExportSelectorDataProcessingService;
16
+ this.translateService = translateService;
17
+ }
18
+ /**
19
+ * Determines the interval between two dates.
20
+ *
21
+ * @param dateFrom - The starting date in ISO 8601 string format.
22
+ * @param dateTo - The ending date in ISO 8601 string format.
23
+ * @returns The time range interval unit.
24
+ */
25
+ determineInterval(dateFrom, dateTo) {
26
+ const from = new Date(dateFrom);
27
+ const to = new Date(dateTo);
28
+ const differenceInMilliseconds = to.getTime() - from.getTime();
29
+ const intervals = [
30
+ { value: TimeSpanInMs.MINUTE, label: TIME_RANGE_INTERVAL_UNITS_VALUES.minutes }, // milliseconds in one minute
31
+ { value: TimeSpanInMs.HOUR, label: TIME_RANGE_INTERVAL_UNITS_VALUES.hours }, // milliseconds in one hour
32
+ { value: TimeSpanInMs.DAY, label: TIME_RANGE_INTERVAL_UNITS_VALUES.days }, // milliseconds in one day
33
+ { value: TimeSpanInMs.WEEK, label: TIME_RANGE_INTERVAL_UNITS_VALUES.weeks }, // milliseconds in one week
34
+ { value: TimeSpanInMs.MONTH, label: TIME_RANGE_INTERVAL_UNITS_VALUES.months } // approximation for milliseconds in one month
35
+ ];
36
+ for (let i = 0; i < intervals.length; i++) {
37
+ if (differenceInMilliseconds <= intervals[i].value) {
38
+ return intervals[i].label;
39
+ }
40
+ }
41
+ return TIME_RANGE_INTERVAL_UNITS_VALUES.custom;
42
+ }
43
+ /**
44
+ * Updates the disabled state of aggregation options based on the current value of the time interval form control.
45
+ *
46
+ * This method:
47
+ * - Retrieves the current date range from the form controls.
48
+ * - Determines the current time interval based on the date range.
49
+ * - Sets the disabled state for each aggregation option based on predefined conditions.
50
+ *
51
+ * The disabled state is stored in the `disabledAggregationOptions` object,
52
+ * where the key is the aggregation value and the value is a boolean indicating whether the option should be disabled.
53
+ *
54
+ * The `disabledConditions` object defines the conditions under which each aggregation option should be disabled.
55
+ *
56
+ * @param dateFrom - The value of the "date from" input.
57
+ * @param dateTo - The value of the "date to" input.
58
+ * @param disabledAggregationOptions - The object containing the disabled state of aggregation options.
59
+ * @returns The updated object with the disabled state of aggregation options.
60
+ */
61
+ updateDisabledStateOfAggregationOptionEntries(dateFrom, dateTo, disabledAggregationOptions) {
62
+ disabledAggregationOptions = this.aggregationService.getDisabledAggregationOptions(dateFrom, dateTo);
63
+ return disabledAggregationOptions;
64
+ }
65
+ /**
66
+ * Sets the aggregation control to the first available (non-disabled) option if the current option is disabled.
67
+ *
68
+ * This method:
69
+ * - Retrieves the current value of the aggregation control.
70
+ * - Checks if the current aggregation option is disabled.
71
+ * - If the current option is disabled, sets the control to the first available (non-disabled) option based on the following order:
72
+ * - If the current value is `DAILY`, it switches to `HOURLY` if it's not disabled, otherwise to `MINUTELY` if `HOURLY` is also disabled.
73
+ * - If the current value is `HOURLY`, it switches to `MINUTELY` if it's not disabled.
74
+ * - If all options are disabled, it sets the value to `NONE`.
75
+ *
76
+ * The disabled state is stored in the `disabledAggregationOptions` object,
77
+ * where the key is the aggregation value and the value is a boolean indicating whether the option is disabled.
78
+ *
79
+ * The `AGGREGATION_VALUES` object defines the possible aggregation values.
80
+ *
81
+ * @param aggregationValue - The value of the current aggregation option.
82
+ * @param disabledAggregationOptions - An object containing disabled aggregation options.
83
+ * @returns The new aggregation option to be set.
84
+ */
85
+ setToFirstAvailableAggregationOptionIfCurrentIsDisabled(aggregationValue, disabledAggregationOptions) {
86
+ const currentValue = aggregationValue;
87
+ const disabledOptions = disabledAggregationOptions;
88
+ if (disabledOptions[currentValue]) {
89
+ const { daily, hourly, minutely, none } = AGGREGATION_VALUES;
90
+ let newAggregationValue = none;
91
+ if (currentValue === daily) {
92
+ if (!disabledOptions[hourly]) {
93
+ newAggregationValue = hourly;
94
+ }
95
+ else if (!disabledOptions[minutely]) {
96
+ newAggregationValue = minutely;
97
+ }
98
+ }
99
+ else if (currentValue === hourly && !disabledOptions[minutely]) {
100
+ newAggregationValue = minutely;
101
+ }
102
+ return newAggregationValue;
103
+ }
104
+ }
105
+ async getMeasurementExportedDataBlob(extension, dataToExport) {
106
+ try {
107
+ return await this.getMeasurementDataZipBlob(extension, dataToExport);
108
+ }
109
+ catch (error) {
110
+ this.showZipCreationErrorAlert();
111
+ return null;
112
+ }
113
+ }
114
+ async getSeriesExportedDataBlob(fileType, dataToExport, mergedExportDetails) {
115
+ try {
116
+ return await this.getSeriesDataBlob(fileType, dataToExport, mergedExportDetails);
117
+ }
118
+ catch (error) {
119
+ this.showZipCreationErrorAlert();
120
+ return null;
121
+ }
122
+ }
123
+ cleanupCachedData() {
124
+ this.cachedRawExportSeriesData = null;
125
+ this.cachedFlatteredAndSortedSeriesExportData = null;
126
+ }
127
+ showZipCreationErrorAlert() {
128
+ const alertMessage = this.translateService.instant(gettext('Could not create zip file.'));
129
+ this.alertService.danger(alertMessage);
130
+ return null;
131
+ }
132
+ getMeasurementDataZipBlob(extension, dataToExportWithBackendCreatedFile) {
133
+ const files = [];
134
+ this.createRawMeasurementExportedFiles(dataToExportWithBackendCreatedFile, extension, files);
135
+ return this.datapointsExportSelectorDataProcessingService.zipFiles(files);
136
+ }
137
+ createRawMeasurementExportedFiles(dataToExportWithBackendCreatedFile, fileExtension, files) {
138
+ dataToExportWithBackendCreatedFile.forEach(data => {
139
+ if (data) {
140
+ const fragmentSeries = `${data.valueFragmentType}_${data.valueFragmentSeries}`;
141
+ const fileName = this.datapointsExportSelectorDataProcessingService.createFileName(data.source, fragmentSeries, fileExtension);
142
+ const fileData = data.fetchedMeasurementsBlobFile;
143
+ const exportedFile = { fileName, fileData };
144
+ files.push(exportedFile);
145
+ }
146
+ });
147
+ }
148
+ /**
149
+ * Converts data to a specified file type and returns the generated blob.
150
+ *
151
+ * Unlike measurements, data must be transformed to an exportable file structure before exporting.
152
+ *
153
+ * @param fileType - The type of file to which the data points should be exported. This can be 'csv' or 'excel'.
154
+ * @param dataToExport - An array of processed measurement data combined with the respective properties of the datapoint.
155
+ * @param mergedExportDetails - The details for the merged export, contains date range and aggregation.
156
+ * @returns A promise that resolves to the generated ZIP blob or null if an error occurs.
157
+ */
158
+ async getSeriesDataBlob(fileType, dataToExport, mergedExportDetails) {
159
+ this.transformSeriesDataToExportableFileStructure(dataToExport);
160
+ const exportParams = {
161
+ flattenedAndSortedExportData: this.cachedFlatteredAndSortedSeriesExportData,
162
+ fileType,
163
+ mergedExportDetails: mergedExportDetails
164
+ };
165
+ return await this.datapointsExportSelectorDataProcessingService.exportSeriesData(exportParams);
166
+ }
167
+ transformSeriesDataToExportableFileStructure(dataToExport) {
168
+ if (!this.cachedRawExportSeriesData) {
169
+ this.cachedRawExportSeriesData =
170
+ this.datapointsExportSelectorDataProcessingService.transformToExportFileStructure(dataToExport);
171
+ this.cachedFlatteredAndSortedSeriesExportData = this.cachedRawExportSeriesData
172
+ .flat()
173
+ .sort((a, b) => {
174
+ return new Date(a.time).getTime() - new Date(b.time).getTime();
175
+ });
176
+ }
177
+ }
178
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatapointsExportSelectorFileExporterService, deps: [{ token: i1.AggregationService }, { token: i1.AlertService }, { token: i2.DataProcessingService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
179
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatapointsExportSelectorFileExporterService, providedIn: 'root' }); }
180
+ }
181
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatapointsExportSelectorFileExporterService, decorators: [{
182
+ type: Injectable,
183
+ args: [{
184
+ providedIn: 'root'
185
+ }]
186
+ }], ctorParameters: () => [{ type: i1.AggregationService }, { type: i1.AlertService }, { type: i2.DataProcessingService }, { type: i3.TranslateService }] });
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItZmlsZS1leHBvcnRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3IvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItbW9kYWwvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItZmlsZS1leHBvcnRlci9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci1maWxlLWV4cG9ydGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsa0JBQWtCLEVBR2xCLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osT0FBTyxFQUNSLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQU9MLGdDQUFnQyxFQUVqQyxNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7QUFLbkUsTUFBTSxPQUFPLDJDQUEyQztJQVV0RCxZQUNVLGtCQUFzQyxFQUN0QyxZQUEwQixFQUMxQiw2Q0FBb0UsRUFDcEUsZ0JBQWtDO1FBSGxDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsa0RBQTZDLEdBQTdDLDZDQUE2QyxDQUF1QjtRQUNwRSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQ3pDLENBQUM7SUFFSjs7Ozs7O09BTUc7SUFDSCxpQkFBaUIsQ0FBQyxRQUFnQixFQUFFLE1BQWM7UUFDaEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsTUFBTSxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUIsTUFBTSx3QkFBd0IsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRS9ELE1BQU0sU0FBUyxHQUFHO1lBQ2hCLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLGdDQUFnQyxDQUFDLE9BQU8sRUFBRSxFQUFFLDZCQUE2QjtZQUM5RyxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxnQ0FBZ0MsQ0FBQyxLQUFLLEVBQUUsRUFBRSwyQkFBMkI7WUFDeEcsRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsZ0NBQWdDLENBQUMsSUFBSSxFQUFFLEVBQUUsMEJBQTBCO1lBQ3JHLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLGdDQUFnQyxDQUFDLEtBQUssRUFBRSxFQUFFLDJCQUEyQjtZQUN4RyxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxnQ0FBZ0MsQ0FBQyxNQUFNLEVBQUUsQ0FBQyw4Q0FBOEM7U0FDN0gsQ0FBQztRQUVGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDMUMsSUFBSSx3QkFBd0IsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ25ELE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUM1QixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sZ0NBQWdDLENBQUMsTUFBTSxDQUFDO0lBQ2pELENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FpQkc7SUFDSCw2Q0FBNkMsQ0FDM0MsUUFBZ0IsRUFDaEIsTUFBYyxFQUNkLDBCQUFtRDtRQUVuRCwwQkFBMEIsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsNkJBQTZCLENBQ2hGLFFBQVEsRUFDUixNQUFNLENBQ1AsQ0FBQztRQUNGLE9BQU8sMEJBQTBCLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BbUJHO0lBQ0gsdURBQXVELENBQ3JELGdCQUF3QixFQUN4QiwwQkFBbUQ7UUFFbkQsTUFBTSxZQUFZLEdBQUcsZ0JBQWdCLENBQUM7UUFDdEMsTUFBTSxlQUFlLEdBQUcsMEJBQTBCLENBQUM7UUFFbkQsSUFBSSxlQUFlLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUNsQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsa0JBQWtCLENBQUM7WUFDN0QsSUFBSSxtQkFBbUIsR0FBc0IsSUFBSSxDQUFDO1lBRWxELElBQUksWUFBWSxLQUFLLEtBQUssRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7b0JBQzdCLG1CQUFtQixHQUFHLE1BQU0sQ0FBQztnQkFDL0IsQ0FBQztxQkFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7b0JBQ3RDLG1CQUFtQixHQUFHLFFBQVEsQ0FBQztnQkFDakMsQ0FBQztZQUNILENBQUM7aUJBQU0sSUFBSSxZQUFZLEtBQUssTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pFLG1CQUFtQixHQUFHLFFBQVEsQ0FBQztZQUNqQyxDQUFDO1lBRUQsT0FBTyxtQkFBbUIsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyw4QkFBOEIsQ0FDbEMsU0FBaUIsRUFDakIsWUFBa0Q7UUFFbEQsSUFBSSxDQUFDO1lBQ0gsT0FBTyxNQUFNLElBQUksQ0FBQyx5QkFBeUIsQ0FDekMsU0FBUyxFQUNULFlBQW9ELENBQ3JELENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1lBRWpDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMseUJBQXlCLENBQzdCLFFBQWdCLEVBQ2hCLFlBQTRCLEVBQzVCLG1CQUF3QztRQUV4QyxJQUFJLENBQUM7WUFDSCxPQUFPLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUNqQyxRQUFRLEVBQ1IsWUFBOEIsRUFDOUIsbUJBQW1CLENBQ3BCLENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1lBRWpDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDO1FBQ3RDLElBQUksQ0FBQyx3Q0FBd0MsR0FBRyxJQUFJLENBQUM7SUFDdkQsQ0FBQztJQUVPLHlCQUF5QjtRQUMvQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUM7UUFDMUYsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFdkMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8seUJBQXlCLENBQy9CLFNBQWlCLEVBQ2pCLGtDQUF3RTtRQUV4RSxNQUFNLEtBQUssR0FBbUIsRUFBRSxDQUFDO1FBRWpDLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxrQ0FBa0MsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFN0YsT0FBTyxJQUFJLENBQUMsNkNBQTZDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFTyxpQ0FBaUMsQ0FDdkMsa0NBQXdFLEVBQ3hFLGFBQXFCLEVBQ3JCLEtBQXFCO1FBRXJCLGtDQUFrQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNoRCxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNULE1BQU0sY0FBYyxHQUFHLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUUvRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsNkNBQTZDLENBQUMsY0FBYyxDQUNoRixJQUFJLENBQUMsTUFBTSxFQUNYLGNBQWMsRUFDZCxhQUFhLENBQ2QsQ0FBQztnQkFFRixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUM7Z0JBRWxELE1BQU0sWUFBWSxHQUFpQixFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQztnQkFFMUQsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMzQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ssS0FBSyxDQUFDLGlCQUFpQixDQUM3QixRQUFnQixFQUNoQixZQUE0QixFQUM1QixtQkFBd0M7UUFFeEMsSUFBSSxDQUFDLDRDQUE0QyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRWhFLE1BQU0sWUFBWSxHQUF1QjtZQUN2Qyw0QkFBNEIsRUFBRSxJQUFJLENBQUMsd0NBQXdDO1lBQzNFLFFBQVE7WUFDUixtQkFBbUIsRUFBRSxtQkFBbUI7U0FDekMsQ0FBQztRQUVGLE9BQU8sTUFBTSxJQUFJLENBQUMsNkNBQTZDLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDakcsQ0FBQztJQUVPLDRDQUE0QyxDQUFDLFlBQTRCO1FBQy9FLElBQUksQ0FBQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMseUJBQXlCO2dCQUM1QixJQUFJLENBQUMsNkNBQTZDLENBQUMsOEJBQThCLENBQy9FLFlBQVksQ0FDYixDQUFDO1lBQ0osSUFBSSxDQUFDLHdDQUF3QyxHQUFHLElBQUksQ0FBQyx5QkFBeUI7aUJBQzNFLElBQUksRUFBRTtpQkFDTixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2IsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pFLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7OEdBaFBVLDJDQUEyQztrSEFBM0MsMkNBQTJDLGNBRjFDLE1BQU07OzJGQUVQLDJDQUEyQztrQkFIdkQsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBR0dSRUdBVElPTl9WQUxVRVMsXG4gIEFnZ3JlZ2F0aW9uT3B0aW9uLFxuICBBZ2dyZWdhdGlvbk9wdGlvblN0YXR1cyxcbiAgQWdncmVnYXRpb25TZXJ2aWNlLFxuICBBbGVydFNlcnZpY2UsXG4gIGdldHRleHRcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1xuICBEYXRhVG9FeHBvcnQsXG4gIERhdGFUb0V4cG9ydFdpdGhCYWNrZW5kQ3JlYXRlZEZpbGUsXG4gIEV4cG9ydERhdGEsXG4gIEV4cG9ydGVkRmlsZSxcbiAgTWVyZ2VkRXhwb3J0RGV0YWlscyxcbiAgU2VyaWVzRXhwb3J0UGFyYW1zLFxuICBUSU1FX1JBTkdFX0lOVEVSVkFMX1VOSVRTX1ZBTFVFUyxcbiAgVGltZVJhbmdlSW50ZXJ2YWxcbn0gZnJvbSAnLi4vLi4vZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3IubW9kZWwnO1xuaW1wb3J0IHsgRGF0YVByb2Nlc3NpbmdTZXJ2aWNlIH0gZnJvbSAnLi9kYXRhLXByb2Nlc3Npbmcuc2VydmljZSc7XG5pbXBvcnQgeyBUaW1lU3BhbkluTXMgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2ludGVydmFsLXBpY2tlcic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIERhdGFwb2ludHNFeHBvcnRTZWxlY3RvckZpbGVFeHBvcnRlclNlcnZpY2Uge1xuICAvKipcbiAgICogQ2FjaGVkIGRhdGEgaXMgcmV1c2VkIHdoZW4gYm90aCBDU1YgYW5kIEV4Y2VsIGZpbGVzIHdlcmUgc2VsZWN0ZWQgZm9yIGV4cG9ydCwgdXNlZCBmb3IgbWVyZ2VkIGZpbGUuXG4gICAqL1xuICBwcml2YXRlIGNhY2hlZEZsYXR0ZXJlZEFuZFNvcnRlZFNlcmllc0V4cG9ydERhdGE6IEV4cG9ydERhdGFbXTtcbiAgLyoqXG4gICAqIENhY2hlZCBkYXRhIGlzIHJldXNlZCB3aGVuIGJvdGggQ1NWIGFuZCBFeGNlbCBmaWxlcyB3ZXJlIHNlbGVjdGVkIGZvciBleHBvcnQsIHVzZWQgZm9yIHJhdyBmaWxlcy5cbiAgICovXG4gIHByaXZhdGUgY2FjaGVkUmF3RXhwb3J0U2VyaWVzRGF0YTogRXhwb3J0RGF0YVtdW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhZ2dyZWdhdGlvblNlcnZpY2U6IEFnZ3JlZ2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGF0YXBvaW50c0V4cG9ydFNlbGVjdG9yRGF0YVByb2Nlc3NpbmdTZXJ2aWNlOiBEYXRhUHJvY2Vzc2luZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB0aGUgaW50ZXJ2YWwgYmV0d2VlbiB0d28gZGF0ZXMuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRlRnJvbSAtIFRoZSBzdGFydGluZyBkYXRlIGluIElTTyA4NjAxIHN0cmluZyBmb3JtYXQuXG4gICAqIEBwYXJhbSBkYXRlVG8gLSBUaGUgZW5kaW5nIGRhdGUgaW4gSVNPIDg2MDEgc3RyaW5nIGZvcm1hdC5cbiAgICogQHJldHVybnMgVGhlIHRpbWUgcmFuZ2UgaW50ZXJ2YWwgdW5pdC5cbiAgICovXG4gIGRldGVybWluZUludGVydmFsKGRhdGVGcm9tOiBzdHJpbmcsIGRhdGVUbzogc3RyaW5nKTogVGltZVJhbmdlSW50ZXJ2YWwge1xuICAgIGNvbnN0IGZyb20gPSBuZXcgRGF0ZShkYXRlRnJvbSk7XG4gICAgY29uc3QgdG8gPSBuZXcgRGF0ZShkYXRlVG8pO1xuICAgIGNvbnN0IGRpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcyA9IHRvLmdldFRpbWUoKSAtIGZyb20uZ2V0VGltZSgpO1xuXG4gICAgY29uc3QgaW50ZXJ2YWxzID0gW1xuICAgICAgeyB2YWx1ZTogVGltZVNwYW5Jbk1zLk1JTlVURSwgbGFiZWw6IFRJTUVfUkFOR0VfSU5URVJWQUxfVU5JVFNfVkFMVUVTLm1pbnV0ZXMgfSwgLy8gbWlsbGlzZWNvbmRzIGluIG9uZSBtaW51dGVcbiAgICAgIHsgdmFsdWU6IFRpbWVTcGFuSW5Ncy5IT1VSLCBsYWJlbDogVElNRV9SQU5HRV9JTlRFUlZBTF9VTklUU19WQUxVRVMuaG91cnMgfSwgLy8gbWlsbGlzZWNvbmRzIGluIG9uZSBob3VyXG4gICAgICB7IHZhbHVlOiBUaW1lU3BhbkluTXMuREFZLCBsYWJlbDogVElNRV9SQU5HRV9JTlRFUlZBTF9VTklUU19WQUxVRVMuZGF5cyB9LCAvLyBtaWxsaXNlY29uZHMgaW4gb25lIGRheVxuICAgICAgeyB2YWx1ZTogVGltZVNwYW5Jbk1zLldFRUssIGxhYmVsOiBUSU1FX1JBTkdFX0lOVEVSVkFMX1VOSVRTX1ZBTFVFUy53ZWVrcyB9LCAvLyBtaWxsaXNlY29uZHMgaW4gb25lIHdlZWtcbiAgICAgIHsgdmFsdWU6IFRpbWVTcGFuSW5Ncy5NT05USCwgbGFiZWw6IFRJTUVfUkFOR0VfSU5URVJWQUxfVU5JVFNfVkFMVUVTLm1vbnRocyB9IC8vIGFwcHJveGltYXRpb24gZm9yIG1pbGxpc2Vjb25kcyBpbiBvbmUgbW9udGhcbiAgICBdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnRlcnZhbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMgPD0gaW50ZXJ2YWxzW2ldLnZhbHVlKSB7XG4gICAgICAgIHJldHVybiBpbnRlcnZhbHNbaV0ubGFiZWw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFRJTUVfUkFOR0VfSU5URVJWQUxfVU5JVFNfVkFMVUVTLmN1c3RvbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBkaXNhYmxlZCBzdGF0ZSBvZiBhZ2dyZWdhdGlvbiBvcHRpb25zIGJhc2VkIG9uIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSB0aW1lIGludGVydmFsIGZvcm0gY29udHJvbC5cbiAgICpcbiAgICogVGhpcyBtZXRob2Q6XG4gICAqIC0gUmV0cmlldmVzIHRoZSBjdXJyZW50IGRhdGUgcmFuZ2UgZnJvbSB0aGUgZm9ybSBjb250cm9scy5cbiAgICogLSBEZXRlcm1pbmVzIHRoZSBjdXJyZW50IHRpbWUgaW50ZXJ2YWwgYmFzZWQgb24gdGhlIGRhdGUgcmFuZ2UuXG4gICAqIC0gU2V0cyB0aGUgZGlzYWJsZWQgc3RhdGUgZm9yIGVhY2ggYWdncmVnYXRpb24gb3B0aW9uIGJhc2VkIG9uIHByZWRlZmluZWQgY29uZGl0aW9ucy5cbiAgICpcbiAgICogVGhlIGRpc2FibGVkIHN0YXRlIGlzIHN0b3JlZCBpbiB0aGUgYGRpc2FibGVkQWdncmVnYXRpb25PcHRpb25zYCBvYmplY3QsXG4gICAqIHdoZXJlIHRoZSBrZXkgaXMgdGhlIGFnZ3JlZ2F0aW9uIHZhbHVlIGFuZCB0aGUgdmFsdWUgaXMgYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgb3B0aW9uIHNob3VsZCBiZSBkaXNhYmxlZC5cbiAgICpcbiAgICogVGhlIGBkaXNhYmxlZENvbmRpdGlvbnNgIG9iamVjdCBkZWZpbmVzIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGVhY2ggYWdncmVnYXRpb24gb3B0aW9uIHNob3VsZCBiZSBkaXNhYmxlZC5cbiAgICpcbiAgICogQHBhcmFtIGRhdGVGcm9tIC0gVGhlIHZhbHVlIG9mIHRoZSBcImRhdGUgZnJvbVwiIGlucHV0LlxuICAgKiBAcGFyYW0gZGF0ZVRvIC0gVGhlIHZhbHVlIG9mIHRoZSBcImRhdGUgdG9cIiBpbnB1dC5cbiAgICogQHBhcmFtIGRpc2FibGVkQWdncmVnYXRpb25PcHRpb25zIC0gVGhlIG9iamVjdCBjb250YWluaW5nIHRoZSBkaXNhYmxlZCBzdGF0ZSBvZiBhZ2dyZWdhdGlvbiBvcHRpb25zLlxuICAgKiBAcmV0dXJucyBUaGUgdXBkYXRlZCBvYmplY3Qgd2l0aCB0aGUgZGlzYWJsZWQgc3RhdGUgb2YgYWdncmVnYXRpb24gb3B0aW9ucy5cbiAgICovXG4gIHVwZGF0ZURpc2FibGVkU3RhdGVPZkFnZ3JlZ2F0aW9uT3B0aW9uRW50cmllcyhcbiAgICBkYXRlRnJvbTogc3RyaW5nLFxuICAgIGRhdGVUbzogc3RyaW5nLFxuICAgIGRpc2FibGVkQWdncmVnYXRpb25PcHRpb25zOiBBZ2dyZWdhdGlvbk9wdGlvblN0YXR1c1xuICApOiBBZ2dyZWdhdGlvbk9wdGlvblN0YXR1cyB7XG4gICAgZGlzYWJsZWRBZ2dyZWdhdGlvbk9wdGlvbnMgPSB0aGlzLmFnZ3JlZ2F0aW9uU2VydmljZS5nZXREaXNhYmxlZEFnZ3JlZ2F0aW9uT3B0aW9ucyhcbiAgICAgIGRhdGVGcm9tLFxuICAgICAgZGF0ZVRvXG4gICAgKTtcbiAgICByZXR1cm4gZGlzYWJsZWRBZ2dyZWdhdGlvbk9wdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYWdncmVnYXRpb24gY29udHJvbCB0byB0aGUgZmlyc3QgYXZhaWxhYmxlIChub24tZGlzYWJsZWQpIG9wdGlvbiBpZiB0aGUgY3VycmVudCBvcHRpb24gaXMgZGlzYWJsZWQuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kOlxuICAgKiAtIFJldHJpZXZlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgYWdncmVnYXRpb24gY29udHJvbC5cbiAgICogLSBDaGVja3MgaWYgdGhlIGN1cnJlbnQgYWdncmVnYXRpb24gb3B0aW9uIGlzIGRpc2FibGVkLlxuICAgKiAtIElmIHRoZSBjdXJyZW50IG9wdGlvbiBpcyBkaXNhYmxlZCwgc2V0cyB0aGUgY29udHJvbCB0byB0aGUgZmlyc3QgYXZhaWxhYmxlIChub24tZGlzYWJsZWQpIG9wdGlvbiBiYXNlZCBvbiB0aGUgZm9sbG93aW5nIG9yZGVyOlxuICAgKiAgIC0gSWYgdGhlIGN1cnJlbnQgdmFsdWUgaXMgYERBSUxZYCwgaXQgc3dpdGNoZXMgdG8gYEhPVVJMWWAgaWYgaXQncyBub3QgZGlzYWJsZWQsIG90aGVyd2lzZSB0byBgTUlOVVRFTFlgIGlmIGBIT1VSTFlgIGlzIGFsc28gZGlzYWJsZWQuXG4gICAqICAgLSBJZiB0aGUgY3VycmVudCB2YWx1ZSBpcyBgSE9VUkxZYCwgaXQgc3dpdGNoZXMgdG8gYE1JTlVURUxZYCBpZiBpdCdzIG5vdCBkaXNhYmxlZC5cbiAgICogICAtIElmIGFsbCBvcHRpb25zIGFyZSBkaXNhYmxlZCwgaXQgc2V0cyB0aGUgdmFsdWUgdG8gYE5PTkVgLlxuICAgKlxuICAgKiBUaGUgZGlzYWJsZWQgc3RhdGUgaXMgc3RvcmVkIGluIHRoZSBgZGlzYWJsZWRBZ2dyZWdhdGlvbk9wdGlvbnNgIG9iamVjdCxcbiAgICogd2hlcmUgdGhlIGtleSBpcyB0aGUgYWdncmVnYXRpb24gdmFsdWUgYW5kIHRoZSB2YWx1ZSBpcyBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBvcHRpb24gaXMgZGlzYWJsZWQuXG4gICAqXG4gICAqIFRoZSBgQUdHUkVHQVRJT05fVkFMVUVTYCBvYmplY3QgZGVmaW5lcyB0aGUgcG9zc2libGUgYWdncmVnYXRpb24gdmFsdWVzLlxuICAgKlxuICAgKiBAcGFyYW0gYWdncmVnYXRpb25WYWx1ZSAtIFRoZSB2YWx1ZSBvZiB0aGUgY3VycmVudCBhZ2dyZWdhdGlvbiBvcHRpb24uXG4gICAqIEBwYXJhbSBkaXNhYmxlZEFnZ3JlZ2F0aW9uT3B0aW9ucyAtIEFuIG9iamVjdCBjb250YWluaW5nIGRpc2FibGVkIGFnZ3JlZ2F0aW9uIG9wdGlvbnMuXG4gICAqIEByZXR1cm5zIFRoZSBuZXcgYWdncmVnYXRpb24gb3B0aW9uIHRvIGJlIHNldC5cbiAgICovXG4gIHNldFRvRmlyc3RBdmFpbGFibGVBZ2dyZWdhdGlvbk9wdGlvbklmQ3VycmVudElzRGlzYWJsZWQoXG4gICAgYWdncmVnYXRpb25WYWx1ZTogc3RyaW5nLFxuICAgIGRpc2FibGVkQWdncmVnYXRpb25PcHRpb25zOiBBZ2dyZWdhdGlvbk9wdGlvblN0YXR1c1xuICApOiBBZ2dyZWdhdGlvbk9wdGlvbiB7XG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gYWdncmVnYXRpb25WYWx1ZTtcbiAgICBjb25zdCBkaXNhYmxlZE9wdGlvbnMgPSBkaXNhYmxlZEFnZ3JlZ2F0aW9uT3B0aW9ucztcblxuICAgIGlmIChkaXNhYmxlZE9wdGlvbnNbY3VycmVudFZhbHVlXSkge1xuICAgICAgY29uc3QgeyBkYWlseSwgaG91cmx5LCBtaW51dGVseSwgbm9uZSB9ID0gQUdHUkVHQVRJT05fVkFMVUVTO1xuICAgICAgbGV0IG5ld0FnZ3JlZ2F0aW9uVmFsdWU6IEFnZ3JlZ2F0aW9uT3B0aW9uID0gbm9uZTtcblxuICAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PT0gZGFpbHkpIHtcbiAgICAgICAgaWYgKCFkaXNhYmxlZE9wdGlvbnNbaG91cmx5XSkge1xuICAgICAgICAgIG5ld0FnZ3JlZ2F0aW9uVmFsdWUgPSBob3VybHk7XG4gICAgICAgIH0gZWxzZSBpZiAoIWRpc2FibGVkT3B0aW9uc1ttaW51dGVseV0pIHtcbiAgICAgICAgICBuZXdBZ2dyZWdhdGlvblZhbHVlID0gbWludXRlbHk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY3VycmVudFZhbHVlID09PSBob3VybHkgJiYgIWRpc2FibGVkT3B0aW9uc1ttaW51dGVseV0pIHtcbiAgICAgICAgbmV3QWdncmVnYXRpb25WYWx1ZSA9IG1pbnV0ZWx5O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3QWdncmVnYXRpb25WYWx1ZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRNZWFzdXJlbWVudEV4cG9ydGVkRGF0YUJsb2IoXG4gICAgZXh0ZW5zaW9uOiBzdHJpbmcsXG4gICAgZGF0YVRvRXhwb3J0OiBEYXRhVG9FeHBvcnRXaXRoQmFja2VuZENyZWF0ZWRGaWxlW11cbiAgKTogUHJvbWlzZTxCbG9iIHwgbnVsbD4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRNZWFzdXJlbWVudERhdGFaaXBCbG9iKFxuICAgICAgICBleHRlbnNpb24sXG4gICAgICAgIGRhdGFUb0V4cG9ydCBhcyBEYXRhVG9FeHBvcnRXaXRoQmFja2VuZENyZWF0ZWRGaWxlW11cbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuc2hvd1ppcENyZWF0aW9uRXJyb3JBbGVydCgpO1xuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRTZXJpZXNFeHBvcnRlZERhdGFCbG9iKFxuICAgIGZpbGVUeXBlOiBzdHJpbmcsXG4gICAgZGF0YVRvRXhwb3J0OiBEYXRhVG9FeHBvcnRbXSxcbiAgICBtZXJnZWRFeHBvcnREZXRhaWxzOiBNZXJnZWRFeHBvcnREZXRhaWxzXG4gICk6IFByb21pc2U8QmxvYiB8IG51bGw+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0U2VyaWVzRGF0YUJsb2IoXG4gICAgICAgIGZpbGVUeXBlLFxuICAgICAgICBkYXRhVG9FeHBvcnQgYXMgRGF0YVRvRXhwb3J0W10sXG4gICAgICAgIG1lcmdlZEV4cG9ydERldGFpbHNcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuc2hvd1ppcENyZWF0aW9uRXJyb3JBbGVydCgpO1xuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBjbGVhbnVwQ2FjaGVkRGF0YSgpOiB2b2lkIHtcbiAgICB0aGlzLmNhY2hlZFJhd0V4cG9ydFNlcmllc0RhdGEgPSBudWxsO1xuICAgIHRoaXMuY2FjaGVkRmxhdHRlcmVkQW5kU29ydGVkU2VyaWVzRXhwb3J0RGF0YSA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHNob3daaXBDcmVhdGlvbkVycm9yQWxlcnQoKTogdm9pZCB7XG4gICAgY29uc3QgYWxlcnRNZXNzYWdlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgnQ291bGQgbm90IGNyZWF0ZSB6aXAgZmlsZS4nKSk7XG4gICAgdGhpcy5hbGVydFNlcnZpY2UuZGFuZ2VyKGFsZXJ0TWVzc2FnZSk7XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWVhc3VyZW1lbnREYXRhWmlwQmxvYihcbiAgICBleHRlbnNpb246IHN0cmluZyxcbiAgICBkYXRhVG9FeHBvcnRXaXRoQmFja2VuZENyZWF0ZWRGaWxlOiBEYXRhVG9FeHBvcnRXaXRoQmFja2VuZENyZWF0ZWRGaWxlW11cbiAgKTogUHJvbWlzZTxCbG9iIHwgbnVsbD4ge1xuICAgIGNvbnN0IGZpbGVzOiBFeHBvcnRlZEZpbGVbXSA9IFtdO1xuXG4gICAgdGhpcy5jcmVhdGVSYXdNZWFzdXJlbWVudEV4cG9ydGVkRmlsZXMoZGF0YVRvRXhwb3J0V2l0aEJhY2tlbmRDcmVhdGVkRmlsZSwgZXh0ZW5zaW9uLCBmaWxlcyk7XG5cbiAgICByZXR1cm4gdGhpcy5kYXRhcG9pbnRzRXhwb3J0U2VsZWN0b3JEYXRhUHJvY2Vzc2luZ1NlcnZpY2UuemlwRmlsZXMoZmlsZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVSYXdNZWFzdXJlbWVudEV4cG9ydGVkRmlsZXMoXG4gICAgZGF0YVRvRXhwb3J0V2l0aEJhY2tlbmRDcmVhdGVkRmlsZTogRGF0YVRvRXhwb3J0V2l0aEJhY2tlbmRDcmVhdGVkRmlsZVtdLFxuICAgIGZpbGVFeHRlbnNpb246IHN0cmluZyxcbiAgICBmaWxlczogRXhwb3J0ZWRGaWxlW11cbiAgKTogdm9pZCB7XG4gICAgZGF0YVRvRXhwb3J0V2l0aEJhY2tlbmRDcmVhdGVkRmlsZS5mb3JFYWNoKGRhdGEgPT4ge1xuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgY29uc3QgZnJhZ21lbnRTZXJpZXMgPSBgJHtkYXRhLnZhbHVlRnJhZ21lbnRUeXBlfV8ke2RhdGEudmFsdWVGcmFnbWVudFNlcmllc31gO1xuXG4gICAgICAgIGNvbnN0IGZpbGVOYW1lID0gdGhpcy5kYXRhcG9pbnRzRXhwb3J0U2VsZWN0b3JEYXRhUHJvY2Vzc2luZ1NlcnZpY2UuY3JlYXRlRmlsZU5hbWUoXG4gICAgICAgICAgZGF0YS5zb3VyY2UsXG4gICAgICAgICAgZnJhZ21lbnRTZXJpZXMsXG4gICAgICAgICAgZmlsZUV4dGVuc2lvblxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGZpbGVEYXRhID0gZGF0YS5mZXRjaGVkTWVhc3VyZW1lbnRzQmxvYkZpbGU7XG5cbiAgICAgICAgY29uc3QgZXhwb3J0ZWRGaWxlOiBFeHBvcnRlZEZpbGUgPSB7IGZpbGVOYW1lLCBmaWxlRGF0YSB9O1xuXG4gICAgICAgIGZpbGVzLnB1c2goZXhwb3J0ZWRGaWxlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBkYXRhIHRvIGEgc3BlY2lmaWVkIGZpbGUgdHlwZSBhbmQgcmV0dXJucyB0aGUgZ2VuZXJhdGVkIGJsb2IuXG4gICAqXG4gICAqIFVubGlrZSBtZWFzdXJlbWVudHMsIGRhdGEgbXVzdCBiZSB0cmFuc2Zvcm1lZCB0byBhbiBleHBvcnRhYmxlIGZpbGUgc3RydWN0dXJlIGJlZm9yZSBleHBvcnRpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBmaWxlVHlwZSAtIFRoZSB0eXBlIG9mIGZpbGUgdG8gd2hpY2ggdGhlIGRhdGEgcG9pbnRzIHNob3VsZCBiZSBleHBvcnRlZC4gVGhpcyBjYW4gYmUgJ2Nzdicgb3IgJ2V4Y2VsJy5cbiAgICogQHBhcmFtIGRhdGFUb0V4cG9ydCAtIEFuIGFycmF5IG9mIHByb2Nlc3NlZCBtZWFzdXJlbWVudCBkYXRhIGNvbWJpbmVkIHdpdGggdGhlIHJlc3BlY3RpdmUgcHJvcGVydGllcyBvZiB0aGUgZGF0YXBvaW50LlxuICAgKiBAcGFyYW0gbWVyZ2VkRXhwb3J0RGV0YWlscyAtIFRoZSBkZXRhaWxzIGZvciB0aGUgbWVyZ2VkIGV4cG9ydCwgY29udGFpbnMgZGF0ZSByYW5nZSBhbmQgYWdncmVnYXRpb24uXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBnZW5lcmF0ZWQgWklQIGJsb2Igb3IgbnVsbCBpZiBhbiBlcnJvciBvY2N1cnMuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGdldFNlcmllc0RhdGFCbG9iKFxuICAgIGZpbGVUeXBlOiBzdHJpbmcsXG4gICAgZGF0YVRvRXhwb3J0OiBEYXRhVG9FeHBvcnRbXSxcbiAgICBtZXJnZWRFeHBvcnREZXRhaWxzOiBNZXJnZWRFeHBvcnREZXRhaWxzXG4gICk6IFByb21pc2U8QmxvYiB8IG51bGw+IHtcbiAgICB0aGlzLnRyYW5zZm9ybVNlcmllc0RhdGFUb0V4cG9ydGFibGVGaWxlU3RydWN0dXJlKGRhdGFUb0V4cG9ydCk7XG5cbiAgICBjb25zdCBleHBvcnRQYXJhbXM6IFNlcmllc0V4cG9ydFBhcmFtcyA9IHtcbiAgICAgIGZsYXR0ZW5lZEFuZFNvcnRlZEV4cG9ydERhdGE6IHRoaXMuY2FjaGVkRmxhdHRlcmVkQW5kU29ydGVkU2VyaWVzRXhwb3J0RGF0YSxcbiAgICAgIGZpbGVUeXBlLFxuICAgICAgbWVyZ2VkRXhwb3J0RGV0YWlsczogbWVyZ2VkRXhwb3J0RGV0YWlsc1xuICAgIH07XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5kYXRhcG9pbnRzRXhwb3J0U2VsZWN0b3JEYXRhUHJvY2Vzc2luZ1NlcnZpY2UuZXhwb3J0U2VyaWVzRGF0YShleHBvcnRQYXJhbXMpO1xuICB9XG5cbiAgcHJpdmF0ZSB0cmFuc2Zvcm1TZXJpZXNEYXRhVG9FeHBvcnRhYmxlRmlsZVN0cnVjdHVyZShkYXRhVG9FeHBvcnQ6IERhdGFUb0V4cG9ydFtdKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNhY2hlZFJhd0V4cG9ydFNlcmllc0RhdGEpIHtcbiAgICAgIHRoaXMuY2FjaGVkUmF3RXhwb3J0U2VyaWVzRGF0YSA9XG4gICAgICAgIHRoaXMuZGF0YXBvaW50c0V4cG9ydFNlbGVjdG9yRGF0YVByb2Nlc3NpbmdTZXJ2aWNlLnRyYW5zZm9ybVRvRXhwb3J0RmlsZVN0cnVjdHVyZShcbiAgICAgICAgICBkYXRhVG9FeHBvcnRcbiAgICAgICAgKTtcbiAgICAgIHRoaXMuY2FjaGVkRmxhdHRlcmVkQW5kU29ydGVkU2VyaWVzRXhwb3J0RGF0YSA9IHRoaXMuY2FjaGVkUmF3RXhwb3J0U2VyaWVzRGF0YVxuICAgICAgICAuZmxhdCgpXG4gICAgICAgIC5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGEudGltZSkuZ2V0VGltZSgpIC0gbmV3IERhdGUoYi50aW1lKS5nZXRUaW1lKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,27 @@
1
+ import { A11yModule } from '@angular/cdk/a11y';
2
+ import { Component, Input } from '@angular/core';
3
+ import { CoreModule } from '@c8y/ngx-components';
4
+ import { PopoverModule } from 'ngx-bootstrap/popover';
5
+ import { MEASUREMENTS_PREVIEW_ITEMS_LIMIT } from '../../../datapoints-export-selector.model';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@c8y/ngx-components";
8
+ import * as i2 from "@angular/common";
9
+ import * as i3 from "ngx-bootstrap/popover";
10
+ export class DataPointsExportSelectorPreviewComponent {
11
+ constructor() {
12
+ this.MEASUREMENTS_PREVIEW_ITEMS_LIMIT = MEASUREMENTS_PREVIEW_ITEMS_LIMIT;
13
+ }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DataPointsExportSelectorPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: DataPointsExportSelectorPreviewComponent, isStandalone: true, selector: "c8y-datapoints-export-selector-preview", inputs: { hasFetchedDataAnyValuesToExport: "hasFetchedDataAnyValuesToExport", isPreviewLoading: "isPreviewLoading", previewTableData: "previewTableData" }, ngImport: i0, template: "<div class=\"p-t-16 p-l-16 p-r-16 m-b-0\">\n <div class=\"d-flex a-i-center\">\n <label\n class=\"m-b-0 d-flex a-i-center gap-4\"\n [title]=\"'Preview`of exported file`' | translate\"\n >\n {{ 'Preview`of exported file`' | translate }}\n <button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"popoverPreviewTemplate\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n [adaptivePosition]=\"true\"\n ></button>\n <ng-template #popoverPreviewTemplate>\n <span translate>\n <p>The preview shows the structure of the raw file from a single source.</p>\n <p>If no data is available, only the column headers are visible.</p>\n <p>\n The preview is limited to\n <b>{{ MEASUREMENTS_PREVIEW_ITEMS_LIMIT }}</b>\n records.\n </p>\n </span>\n </ng-template>\n </label>\n </div>\n <div\n class=\"table-responsive\"\n style=\"min-height: 275px\"\n >\n <table class=\"table\">\n <thead>\n <tr>\n <th>{{ 'Time' | translate }}</th>\n <th>{{ 'Source' | translate }}</th>\n <th>{{ 'Device name' | translate }}</th>\n <th>\n {{ 'Fragment and series' | translate }}\n </th>\n <th>{{ 'Value' | translate }}</th>\n <th>{{ 'Unit' | translate }}</th>\n </tr>\n </thead>\n <ng-container *ngIf=\"hasFetchedDataAnyValuesToExport || isPreviewLoading; else emptyState\">\n <ng-container *ngIf=\"!isPreviewLoading; else loading\">\n <tbody>\n <tr *ngFor=\"let row of previewTableData\">\n <td>{{ row.time }}</td>\n <td>{{ row.source }}</td>\n <td>{{ row.device_name }}</td>\n <td>\n {{ row.fragment_series }}\n </td>\n <td>{{ row.value }}</td>\n <td>{{ row.unit }}</td>\n </tr>\n </tbody>\n </ng-container>\n </ng-container>\n <ng-template #emptyState>\n <tbody>\n <tr>\n <td colspan=\"8\">\n <div class=\"d-col a-i-center\">\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No data available.' | translate\"\n [horizontal]=\"true\"\n data-cy=\"datapoints-table-list--empty-state\"\n ></c8y-ui-empty-state>\n </div>\n </td>\n </tr>\n </tbody>\n </ng-template>\n <ng-template #loading>\n <tbody>\n <tr>\n <td colspan=\"8\">\n <c8y-loading></c8y-loading>\n </td>\n </tr>\n </tbody>\n </ng-template>\n </table>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "ngmodule", type: CoreModule }, { kind: "component", type: i1.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i3.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }] }); }
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DataPointsExportSelectorPreviewComponent, decorators: [{
18
+ type: Component,
19
+ args: [{ selector: 'c8y-datapoints-export-selector-preview', standalone: true, imports: [A11yModule, CoreModule, PopoverModule], template: "<div class=\"p-t-16 p-l-16 p-r-16 m-b-0\">\n <div class=\"d-flex a-i-center\">\n <label\n class=\"m-b-0 d-flex a-i-center gap-4\"\n [title]=\"'Preview`of exported file`' | translate\"\n >\n {{ 'Preview`of exported file`' | translate }}\n <button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"popoverPreviewTemplate\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n [adaptivePosition]=\"true\"\n ></button>\n <ng-template #popoverPreviewTemplate>\n <span translate>\n <p>The preview shows the structure of the raw file from a single source.</p>\n <p>If no data is available, only the column headers are visible.</p>\n <p>\n The preview is limited to\n <b>{{ MEASUREMENTS_PREVIEW_ITEMS_LIMIT }}</b>\n records.\n </p>\n </span>\n </ng-template>\n </label>\n </div>\n <div\n class=\"table-responsive\"\n style=\"min-height: 275px\"\n >\n <table class=\"table\">\n <thead>\n <tr>\n <th>{{ 'Time' | translate }}</th>\n <th>{{ 'Source' | translate }}</th>\n <th>{{ 'Device name' | translate }}</th>\n <th>\n {{ 'Fragment and series' | translate }}\n </th>\n <th>{{ 'Value' | translate }}</th>\n <th>{{ 'Unit' | translate }}</th>\n </tr>\n </thead>\n <ng-container *ngIf=\"hasFetchedDataAnyValuesToExport || isPreviewLoading; else emptyState\">\n <ng-container *ngIf=\"!isPreviewLoading; else loading\">\n <tbody>\n <tr *ngFor=\"let row of previewTableData\">\n <td>{{ row.time }}</td>\n <td>{{ row.source }}</td>\n <td>{{ row.device_name }}</td>\n <td>\n {{ row.fragment_series }}\n </td>\n <td>{{ row.value }}</td>\n <td>{{ row.unit }}</td>\n </tr>\n </tbody>\n </ng-container>\n </ng-container>\n <ng-template #emptyState>\n <tbody>\n <tr>\n <td colspan=\"8\">\n <div class=\"d-col a-i-center\">\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No data available.' | translate\"\n [horizontal]=\"true\"\n data-cy=\"datapoints-table-list--empty-state\"\n ></c8y-ui-empty-state>\n </div>\n </td>\n </tr>\n </tbody>\n </ng-template>\n <ng-template #loading>\n <tbody>\n <tr>\n <td colspan=\"8\">\n <c8y-loading></c8y-loading>\n </td>\n </tr>\n </tbody>\n </ng-template>\n </table>\n </div>\n</div>\n" }]
20
+ }], propDecorators: { hasFetchedDataAnyValuesToExport: [{
21
+ type: Input
22
+ }], isPreviewLoading: [{
23
+ type: Input
24
+ }], previewTableData: [{
25
+ type: Input
26
+ }] } });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItcHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci1tb2RhbC9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci1maWxlLWV4cG9ydGVyL2RhdGFwb2ludHMtZXhwb3J0LXNlbGVjdG9yLXByZXZpZXcvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci1tb2RhbC9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci1maWxlLWV4cG9ydGVyL2RhdGFwb2ludHMtZXhwb3J0LXNlbGVjdG9yLXByZXZpZXcvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItcHJldmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBRUwsZ0NBQWdDLEVBQ2pDLE1BQU0sMkNBQTJDLENBQUM7Ozs7O0FBUW5ELE1BQU0sT0FBTyx3Q0FBd0M7SUFOckQ7UUFXVyxxQ0FBZ0MsR0FBRyxnQ0FBZ0MsQ0FBQztLQUM5RTs4R0FOWSx3Q0FBd0M7a0dBQXhDLHdDQUF3Qyw4UENmckQsczFGQTJGQSwyQ0Q5RVksVUFBVSw4QkFBRSxVQUFVLCtwQkFBRSxhQUFhOzsyRkFFcEMsd0NBQXdDO2tCQU5wRCxTQUFTOytCQUNFLHdDQUF3QyxjQUV0QyxJQUFJLFdBQ1AsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQzs4QkFHdkMsK0JBQStCO3NCQUF2QyxLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29yZU1vZHVsZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgUG9wb3Zlck1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvcG9wb3Zlcic7XG5pbXBvcnQge1xuICBFeHBvcnREYXRhLFxuICBNRUFTVVJFTUVOVFNfUFJFVklFV19JVEVNU19MSU1JVFxufSBmcm9tICcuLi8uLi8uLi9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci1wcmV2aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGFwb2ludHMtZXhwb3J0LXNlbGVjdG9yLXByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQTExeU1vZHVsZSwgQ29yZU1vZHVsZSwgUG9wb3Zlck1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgRGF0YVBvaW50c0V4cG9ydFNlbGVjdG9yUHJldmlld0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGhhc0ZldGNoZWREYXRhQW55VmFsdWVzVG9FeHBvcnQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlzUHJldmlld0xvYWRpbmc6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHByZXZpZXdUYWJsZURhdGE6IEV4cG9ydERhdGFbXTtcblxuICByZWFkb25seSBNRUFTVVJFTUVOVFNfUFJFVklFV19JVEVNU19MSU1JVCA9IE1FQVNVUkVNRU5UU19QUkVWSUVXX0lURU1TX0xJTUlUO1xufVxuIiwiPGRpdiBjbGFzcz1cInAtdC0xNiBwLWwtMTYgcC1yLTE2IG0tYi0wXCI+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlclwiPlxuICAgIDxsYWJlbFxuICAgICAgY2xhc3M9XCJtLWItMCBkLWZsZXggYS1pLWNlbnRlciBnYXAtNFwiXG4gICAgICBbdGl0bGVdPVwiJ1ByZXZpZXdgb2YgZXhwb3J0ZWQgZmlsZWAnIHwgdHJhbnNsYXRlXCJcbiAgICA+XG4gICAgICB7eyAnUHJldmlld2BvZiBleHBvcnRlZCBmaWxlYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4taGVscFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW3BvcG92ZXJdPVwicG9wb3ZlclByZXZpZXdUZW1wbGF0ZVwiXG4gICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW2FkYXB0aXZlUG9zaXRpb25dPVwidHJ1ZVwiXG4gICAgICA+PC9idXR0b24+XG4gICAgICA8bmctdGVtcGxhdGUgI3BvcG92ZXJQcmV2aWV3VGVtcGxhdGU+XG4gICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5cbiAgICAgICAgICA8cD5UaGUgcHJldmlldyBzaG93cyB0aGUgc3RydWN0dXJlIG9mIHRoZSByYXcgZmlsZSBmcm9tIGEgc2luZ2xlIHNvdXJjZS48L3A+XG4gICAgICAgICAgPHA+SWYgbm8gZGF0YSBpcyBhdmFpbGFibGUsIG9ubHkgdGhlIGNvbHVtbiBoZWFkZXJzIGFyZSB2aXNpYmxlLjwvcD5cbiAgICAgICAgICA8cD5cbiAgICAgICAgICAgIFRoZSBwcmV2aWV3IGlzIGxpbWl0ZWQgdG9cbiAgICAgICAgICAgIDxiPnt7IE1FQVNVUkVNRU5UU19QUkVWSUVXX0lURU1TX0xJTUlUIH19PC9iPlxuICAgICAgICAgICAgcmVjb3Jkcy5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIlxuICAgIHN0eWxlPVwibWluLWhlaWdodDogMjc1cHhcIlxuICA+XG4gICAgPHRhYmxlIGNsYXNzPVwidGFibGVcIj5cbiAgICAgIDx0aGVhZD5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0aD57eyAnVGltZScgfCB0cmFuc2xhdGUgfX08L3RoPlxuICAgICAgICAgIDx0aD57eyAnU291cmNlJyB8IHRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgICAgPHRoPnt7ICdEZXZpY2UgbmFtZScgfCB0cmFuc2xhdGUgfX08L3RoPlxuICAgICAgICAgIDx0aD5cbiAgICAgICAgICAgIHt7ICdGcmFnbWVudCBhbmQgc2VyaWVzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPHRoPnt7ICdWYWx1ZScgfCB0cmFuc2xhdGUgfX08L3RoPlxuICAgICAgICAgIDx0aD57eyAnVW5pdCcgfCB0cmFuc2xhdGUgfX08L3RoPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90aGVhZD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNGZXRjaGVkRGF0YUFueVZhbHVlc1RvRXhwb3J0IHx8IGlzUHJldmlld0xvYWRpbmc7IGVsc2UgZW1wdHlTdGF0ZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzUHJldmlld0xvYWRpbmc7IGVsc2UgbG9hZGluZ1wiPlxuICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcm93IG9mIHByZXZpZXdUYWJsZURhdGFcIj5cbiAgICAgICAgICAgICAgPHRkPnt7IHJvdy50aW1lIH19PC90ZD5cbiAgICAgICAgICAgICAgPHRkPnt7IHJvdy5zb3VyY2UgfX08L3RkPlxuICAgICAgICAgICAgICA8dGQ+e3sgcm93LmRldmljZV9uYW1lIH19PC90ZD5cbiAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgIHt7IHJvdy5mcmFnbWVudF9zZXJpZXMgfX1cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkPnt7IHJvdy52YWx1ZSB9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZD57eyByb3cudW5pdCB9fTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2VtcHR5U3RhdGU+XG4gICAgICAgIDx0Ym9keT5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjhcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtY29sIGEtaS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICAgICAgICAgICAgICBbaWNvbl09XCInc2VhcmNoJ1wiXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ05vIGRhdGEgYXZhaWxhYmxlLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBkYXRhLWN5PVwiZGF0YXBvaW50cy10YWJsZS1saXN0LS1lbXB0eS1zdGF0ZVwiXG4gICAgICAgICAgICAgICAgPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gICAgICAgIDx0Ym9keT5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjhcIj5cbiAgICAgICAgICAgICAgPGM4eS1sb2FkaW5nPjwvYzh5LWxvYWRpbmc+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvdGFibGU+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,41 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { FormsModule } from '@angular/forms';
3
+ import { AGGREGATION_LABELS, AGGREGATION_VALUES_ARR, CoreModule } from '@c8y/ngx-components';
4
+ import { PopoverModule } from 'ngx-bootstrap/popover';
5
+ import { EXPORT_MODE_LABELS, EXPORT_MODE_VALUES } from '../../../datapoints-export-selector.model';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@c8y/ngx-components";
8
+ import * as i2 from "@angular/common";
9
+ import * as i3 from "@angular/forms";
10
+ import * as i4 from "ngx-bootstrap/popover";
11
+ export class DataPointsExportSelectorDataScopeComponent {
12
+ constructor() {
13
+ this.onAggregationChange = new EventEmitter();
14
+ this.onExportTypeChange = new EventEmitter();
15
+ this.AGGREGATION_LABELS = AGGREGATION_LABELS;
16
+ this.AGGREGATION_VALUES_ARR = AGGREGATION_VALUES_ARR;
17
+ this.EXPORT_MODE_LABELS = EXPORT_MODE_LABELS;
18
+ this.EXPORT_MODE_VALUES_ARR = [EXPORT_MODE_VALUES.full, EXPORT_MODE_VALUES.compact];
19
+ }
20
+ emitAggregationChange(aggregation) {
21
+ this.onAggregationChange.emit(aggregation);
22
+ }
23
+ emitExportTypeChange(exportType) {
24
+ this.onExportTypeChange.emit(exportType);
25
+ }
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DataPointsExportSelectorDataScopeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: DataPointsExportSelectorDataScopeComponent, isStandalone: true, selector: "c8y-datapoints-export-selector-data-scope", inputs: { disabledAggregationOptions: "disabledAggregationOptions", formGroup: "formGroup" }, outputs: { onAggregationChange: "onAggregationChange", onExportTypeChange: "onExportTypeChange" }, ngImport: i0, template: "<fieldset class=\"c8y-fieldset\">\n <legend class=\"d-flex a-i-center\">\n {{ 'Data scope' | translate }}\n <button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"popoverDataScopeTemplate\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n [adaptivePosition]=\"true\"\n ></button>\n <ng-template #popoverDataScopeTemplate>\n <p\n class=\"m-b-8\"\n translate\n >\n Choose type of an export to generate, the available options are:\n </p>\n <p><strong translate>Compact</strong></p>\n <ul class=\"p-l-16\">\n <li translate>\n Up to 5,000 records per data point, or up to the data retention limit\n </li>\n <li translate>Creates a single merged file containing all the data</li>\n <li translate>Preview is not available</li>\n <li translate>Supports data aggregation (optional)</li>\n </ul>\n <p><strong translate>Full</strong></p>\n <ul class=\"p-l-16\">\n <li translate>\n Up to 1,000,000 records per data point, or up to the data retention limit\n </li>\n <li translate>\n If the export exceeds 50,000 records, the data will be sent via email\n </li>\n <li translate>\n Creates a compressed ZIP file that contains separate data files for each of your\n selected points\n </li>\n <li translate>Preview is available</li>\n <li translate>No data aggregation</li>\n </ul>\n </ng-template>\n </legend>\n <c8y-form-group class=\"m-b-8\">\n <label>\n {{ 'Export mode' | translate }}\n </label>\n <div\n class=\"c8y-select-wrapper\"\n [formGroup]=\"formGroup\"\n >\n <select\n class=\"form-control text-12\"\n [title]=\"'Export mode' | translate\"\n id=\"exportMode\"\n formControlName=\"exportMode\"\n (ngModelChange)=\"emitExportTypeChange($event)\"\n >\n <option\n *ngFor=\"let exportModeValue of EXPORT_MODE_VALUES_ARR\"\n [ngValue]=\"exportModeValue\"\n >\n {{ EXPORT_MODE_LABELS[exportModeValue] | translate }}\n </option>\n </select>\n </div>\n </c8y-form-group>\n <c8y-form-group class=\"m-b-8\">\n <label>\n {{ 'Aggregation' | translate }}\n </label>\n <div\n class=\"c8y-select-wrapper\"\n [formGroup]=\"formGroup\"\n >\n <select\n class=\"form-control text-12\"\n [title]=\"'Aggregation' | translate\"\n id=\"aggregation\"\n formControlName=\"aggregation\"\n (ngModelChange)=\"emitAggregationChange($event)\"\n >\n <option\n *ngFor=\"let aggregationValue of AGGREGATION_VALUES_ARR\"\n [ngValue]=\"aggregationValue\"\n [disabled]=\"disabledAggregationOptions[aggregationValue]\"\n >\n {{ AGGREGATION_LABELS[aggregationValue] | translate }}\n </option>\n </select>\n </div>\n </c8y-form-group>\n </fieldset>", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i4.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }] }); }
28
+ }
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DataPointsExportSelectorDataScopeComponent, decorators: [{
30
+ type: Component,
31
+ args: [{ selector: 'c8y-datapoints-export-selector-data-scope', standalone: true, imports: [CoreModule, FormsModule, PopoverModule], template: "<fieldset class=\"c8y-fieldset\">\n <legend class=\"d-flex a-i-center\">\n {{ 'Data scope' | translate }}\n <button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"popoverDataScopeTemplate\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n [adaptivePosition]=\"true\"\n ></button>\n <ng-template #popoverDataScopeTemplate>\n <p\n class=\"m-b-8\"\n translate\n >\n Choose type of an export to generate, the available options are:\n </p>\n <p><strong translate>Compact</strong></p>\n <ul class=\"p-l-16\">\n <li translate>\n Up to 5,000 records per data point, or up to the data retention limit\n </li>\n <li translate>Creates a single merged file containing all the data</li>\n <li translate>Preview is not available</li>\n <li translate>Supports data aggregation (optional)</li>\n </ul>\n <p><strong translate>Full</strong></p>\n <ul class=\"p-l-16\">\n <li translate>\n Up to 1,000,000 records per data point, or up to the data retention limit\n </li>\n <li translate>\n If the export exceeds 50,000 records, the data will be sent via email\n </li>\n <li translate>\n Creates a compressed ZIP file that contains separate data files for each of your\n selected points\n </li>\n <li translate>Preview is available</li>\n <li translate>No data aggregation</li>\n </ul>\n </ng-template>\n </legend>\n <c8y-form-group class=\"m-b-8\">\n <label>\n {{ 'Export mode' | translate }}\n </label>\n <div\n class=\"c8y-select-wrapper\"\n [formGroup]=\"formGroup\"\n >\n <select\n class=\"form-control text-12\"\n [title]=\"'Export mode' | translate\"\n id=\"exportMode\"\n formControlName=\"exportMode\"\n (ngModelChange)=\"emitExportTypeChange($event)\"\n >\n <option\n *ngFor=\"let exportModeValue of EXPORT_MODE_VALUES_ARR\"\n [ngValue]=\"exportModeValue\"\n >\n {{ EXPORT_MODE_LABELS[exportModeValue] | translate }}\n </option>\n </select>\n </div>\n </c8y-form-group>\n <c8y-form-group class=\"m-b-8\">\n <label>\n {{ 'Aggregation' | translate }}\n </label>\n <div\n class=\"c8y-select-wrapper\"\n [formGroup]=\"formGroup\"\n >\n <select\n class=\"form-control text-12\"\n [title]=\"'Aggregation' | translate\"\n id=\"aggregation\"\n formControlName=\"aggregation\"\n (ngModelChange)=\"emitAggregationChange($event)\"\n >\n <option\n *ngFor=\"let aggregationValue of AGGREGATION_VALUES_ARR\"\n [ngValue]=\"aggregationValue\"\n [disabled]=\"disabledAggregationOptions[aggregationValue]\"\n >\n {{ AGGREGATION_LABELS[aggregationValue] | translate }}\n </option>\n </select>\n </div>\n </c8y-form-group>\n </fieldset>" }]
32
+ }], propDecorators: { disabledAggregationOptions: [{
33
+ type: Input
34
+ }], formGroup: [{
35
+ type: Input
36
+ }], onAggregationChange: [{
37
+ type: Output
38
+ }], onExportTypeChange: [{
39
+ type: Output
40
+ }] } });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50cy1leHBvcnRzLXNlbGVjdG9yLWRhdGEtc2NvcGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3IvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItbW9kYWwvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItZmlsZS1leHBvcnRlci9kYXRhcG9pbnRzLWV4cG9ydHMtc2VsZWN0b3ItZGF0YS1zY29wZS9kYXRhcG9pbnRzLWV4cG9ydHMtc2VsZWN0b3ItZGF0YS1zY29wZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci1tb2RhbC9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci1maWxlLWV4cG9ydGVyL2RhdGFwb2ludHMtZXhwb3J0cy1zZWxlY3Rvci1kYXRhLXNjb3BlL2RhdGFwb2ludHMtZXhwb3J0cy1zZWxlY3Rvci1kYXRhLXNjb3BlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsc0JBQXNCLEVBR3RCLFVBQVUsRUFDWCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7Ozs7O0FBU25HLE1BQU0sT0FBTywwQ0FBMEM7SUFOdkQ7UUFTWSx3QkFBbUIsR0FDM0IsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFDOUIsdUJBQWtCLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFFdkUsdUJBQWtCLEdBQUcsa0JBQWtCLENBQUM7UUFDeEMsMkJBQXNCLEdBQUcsc0JBQXNCLENBQUM7UUFDaEQsdUJBQWtCLEdBQUcsa0JBQWtCLENBQUM7UUFDeEMsMkJBQXNCLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLENBQUMsT0FBTyxDQUFVLENBQUM7S0FTbEc7SUFQQyxxQkFBcUIsQ0FBQyxXQUE4QjtRQUNsRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxVQUFrQjtRQUNyQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7OEdBbEJVLDBDQUEwQztrR0FBMUMsMENBQTBDLHNTQ25CdkQsMnRHQStGYSwyQ0Q5RUQsVUFBVSx1NkNBQUUsV0FBVyw4QkFBRSxhQUFhOzsyRkFFckMsMENBQTBDO2tCQU50RCxTQUFTOytCQUNFLDJDQUEyQyxjQUV6QyxJQUFJLFdBQ1AsQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLGFBQWEsQ0FBQzs4QkFHeEMsMEJBQTBCO3NCQUFsQyxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0ksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUVHLGtCQUFrQjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIEFHR1JFR0FUSU9OX0xBQkVMUyxcbiAgQUdHUkVHQVRJT05fVkFMVUVTX0FSUixcbiAgQWdncmVnYXRpb25PcHRpb24sXG4gIEFnZ3JlZ2F0aW9uT3B0aW9uU3RhdHVzLFxuICBDb3JlTW9kdWxlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgUG9wb3Zlck1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvcG9wb3Zlcic7XG5pbXBvcnQgeyBFWFBPUlRfTU9ERV9MQUJFTFMsIEVYUE9SVF9NT0RFX1ZBTFVFUyB9IGZyb20gJy4uLy4uLy4uL2RhdGFwb2ludHMtZXhwb3J0LXNlbGVjdG9yLm1vZGVsJztcbmltcG9ydCB7IERhdGFwb2ludHNFeHBvcnRTZWxlY3RvckZpbGVFeHBvcnRlckNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGFwb2ludHMtZXhwb3J0LXNlbGVjdG9yLWZpbGUtZXhwb3J0ZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRhdGFwb2ludHMtZXhwb3J0LXNlbGVjdG9yLWRhdGEtc2NvcGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YXBvaW50cy1leHBvcnRzLXNlbGVjdG9yLWRhdGEtc2NvcGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29yZU1vZHVsZSwgRm9ybXNNb2R1bGUsIFBvcG92ZXJNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIERhdGFQb2ludHNFeHBvcnRTZWxlY3RvckRhdGFTY29wZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGRpc2FibGVkQWdncmVnYXRpb25PcHRpb25zOiBBZ2dyZWdhdGlvbk9wdGlvblN0YXR1cztcbiAgQElucHV0KCkgZm9ybUdyb3VwOiBSZXR1cm5UeXBlPERhdGFwb2ludHNFeHBvcnRTZWxlY3RvckZpbGVFeHBvcnRlckNvbXBvbmVudFsnY3JlYXRlRm9ybSddPjtcbiAgQE91dHB1dCgpIG9uQWdncmVnYXRpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxBZ2dyZWdhdGlvbk9wdGlvbj4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8QWdncmVnYXRpb25PcHRpb24+KCk7XG4gIEBPdXRwdXQoKSBvbkV4cG9ydFR5cGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgcmVhZG9ubHkgQUdHUkVHQVRJT05fTEFCRUxTID0gQUdHUkVHQVRJT05fTEFCRUxTO1xuICByZWFkb25seSBBR0dSRUdBVElPTl9WQUxVRVNfQVJSID0gQUdHUkVHQVRJT05fVkFMVUVTX0FSUjtcbiAgcmVhZG9ubHkgRVhQT1JUX01PREVfTEFCRUxTID0gRVhQT1JUX01PREVfTEFCRUxTO1xuICByZWFkb25seSBFWFBPUlRfTU9ERV9WQUxVRVNfQVJSID0gW0VYUE9SVF9NT0RFX1ZBTFVFUy5mdWxsLCBFWFBPUlRfTU9ERV9WQUxVRVMuY29tcGFjdF0gYXMgY29uc3Q7XG5cbiAgZW1pdEFnZ3JlZ2F0aW9uQ2hhbmdlKGFnZ3JlZ2F0aW9uOiBBZ2dyZWdhdGlvbk9wdGlvbik6IHZvaWQge1xuICAgIHRoaXMub25BZ2dyZWdhdGlvbkNoYW5nZS5lbWl0KGFnZ3JlZ2F0aW9uKTtcbiAgfVxuXG4gIGVtaXRFeHBvcnRUeXBlQ2hhbmdlKGV4cG9ydFR5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMub25FeHBvcnRUeXBlQ2hhbmdlLmVtaXQoZXhwb3J0VHlwZSk7XG4gIH1cbn1cbiIsIjxmaWVsZHNldCBjbGFzcz1cImM4eS1maWVsZHNldFwiPlxuICAgIDxsZWdlbmQgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlclwiPlxuICAgICAge3sgJ0RhdGEgc2NvcGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuLWhlbHBcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtwb3BvdmVyXT1cInBvcG92ZXJEYXRhU2NvcGVUZW1wbGF0ZVwiXG4gICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW2FkYXB0aXZlUG9zaXRpb25dPVwidHJ1ZVwiXG4gICAgICA+PC9idXR0b24+XG4gICAgICA8bmctdGVtcGxhdGUgI3BvcG92ZXJEYXRhU2NvcGVUZW1wbGF0ZT5cbiAgICAgICAgPHBcbiAgICAgICAgICBjbGFzcz1cIm0tYi04XCJcbiAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgPlxuICAgICAgICAgIENob29zZSB0eXBlIG9mIGFuIGV4cG9ydCB0byBnZW5lcmF0ZSwgdGhlIGF2YWlsYWJsZSBvcHRpb25zIGFyZTpcbiAgICAgICAgPC9wPlxuICAgICAgICA8cD48c3Ryb25nIHRyYW5zbGF0ZT5Db21wYWN0PC9zdHJvbmc+PC9wPlxuICAgICAgICA8dWwgY2xhc3M9XCJwLWwtMTZcIj5cbiAgICAgICAgICA8bGkgdHJhbnNsYXRlPlxuICAgICAgICAgICAgVXAgdG8gNSwwMDAgcmVjb3JkcyBwZXIgZGF0YSBwb2ludCwgb3IgdXAgdG8gdGhlIGRhdGEgcmV0ZW50aW9uIGxpbWl0XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgICA8bGkgdHJhbnNsYXRlPkNyZWF0ZXMgYSBzaW5nbGUgbWVyZ2VkIGZpbGUgY29udGFpbmluZyBhbGwgdGhlIGRhdGE8L2xpPlxuICAgICAgICAgIDxsaSB0cmFuc2xhdGU+UHJldmlldyBpcyBub3QgYXZhaWxhYmxlPC9saT5cbiAgICAgICAgICA8bGkgdHJhbnNsYXRlPlN1cHBvcnRzIGRhdGEgYWdncmVnYXRpb24gKG9wdGlvbmFsKTwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICAgIDxwPjxzdHJvbmcgdHJhbnNsYXRlPkZ1bGw8L3N0cm9uZz48L3A+XG4gICAgICAgIDx1bCBjbGFzcz1cInAtbC0xNlwiPlxuICAgICAgICAgIDxsaSB0cmFuc2xhdGU+XG4gICAgICAgICAgICBVcCB0byAxLDAwMCwwMDAgcmVjb3JkcyBwZXIgZGF0YSBwb2ludCwgb3IgdXAgdG8gdGhlIGRhdGEgcmV0ZW50aW9uIGxpbWl0XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgICA8bGkgdHJhbnNsYXRlPlxuICAgICAgICAgICAgSWYgdGhlIGV4cG9ydCBleGNlZWRzIDUwLDAwMCByZWNvcmRzLCB0aGUgZGF0YSB3aWxsIGJlIHNlbnQgdmlhIGVtYWlsXG4gICAgICAgICAgPC9saT5cbiAgICAgICAgICA8bGkgdHJhbnNsYXRlPlxuICAgICAgICAgICAgQ3JlYXRlcyBhIGNvbXByZXNzZWQgWklQIGZpbGUgdGhhdCBjb250YWlucyBzZXBhcmF0ZSBkYXRhIGZpbGVzIGZvciBlYWNoIG9mIHlvdXJcbiAgICAgICAgICAgIHNlbGVjdGVkIHBvaW50c1xuICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPGxpIHRyYW5zbGF0ZT5QcmV2aWV3IGlzIGF2YWlsYWJsZTwvbGk+XG4gICAgICAgICAgPGxpIHRyYW5zbGF0ZT5ObyBkYXRhIGFnZ3JlZ2F0aW9uPC9saT5cbiAgICAgICAgPC91bD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9sZWdlbmQ+XG4gICAgPGM4eS1mb3JtLWdyb3VwIGNsYXNzPVwibS1iLThcIj5cbiAgICAgIDxsYWJlbD5cbiAgICAgICAge3sgJ0V4cG9ydCBtb2RlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9sYWJlbD5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJjOHktc2VsZWN0LXdyYXBwZXJcIlxuICAgICAgICBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiXG4gICAgICA+XG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCB0ZXh0LTEyXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ0V4cG9ydCBtb2RlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgaWQ9XCJleHBvcnRNb2RlXCJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJleHBvcnRNb2RlXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJlbWl0RXhwb3J0VHlwZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBleHBvcnRNb2RlVmFsdWUgb2YgRVhQT1JUX01PREVfVkFMVUVTX0FSUlwiXG4gICAgICAgICAgICBbbmdWYWx1ZV09XCJleHBvcnRNb2RlVmFsdWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IEVYUE9SVF9NT0RFX0xBQkVMU1tleHBvcnRNb2RlVmFsdWVdIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG4gICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJtLWItOFwiPlxuICAgICAgPGxhYmVsPlxuICAgICAgICB7eyAnQWdncmVnYXRpb24nIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2xhYmVsPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImM4eS1zZWxlY3Qtd3JhcHBlclwiXG4gICAgICAgIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcbiAgICAgID5cbiAgICAgICAgPHNlbGVjdFxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIHRleHQtMTJcIlxuICAgICAgICAgIFt0aXRsZV09XCInQWdncmVnYXRpb24nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBpZD1cImFnZ3JlZ2F0aW9uXCJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhZ2dyZWdhdGlvblwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZW1pdEFnZ3JlZ2F0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFnZ3JlZ2F0aW9uVmFsdWUgb2YgQUdHUkVHQVRJT05fVkFMVUVTX0FSUlwiXG4gICAgICAgICAgICBbbmdWYWx1ZV09XCJhZ2dyZWdhdGlvblZhbHVlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZEFnZ3JlZ2F0aW9uT3B0aW9uc1thZ2dyZWdhdGlvblZhbHVlXVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgQUdHUkVHQVRJT05fTEFCRUxTW2FnZ3JlZ2F0aW9uVmFsdWVdIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG4gICAgPC9jOHktZm9ybS1ncm91cD5cbiAgPC9maWVsZHNldD4iXX0=
@@ -0,0 +1,23 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { FormsModule } from '@angular/forms';
3
+ import { CoreModule } from '@c8y/ngx-components';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@c8y/ngx-components";
6
+ import * as i2 from "@angular/common";
7
+ import * as i3 from "@angular/forms";
8
+ export class DataPointsExportSelectorFileTypesComponent {
9
+ constructor() {
10
+ this.dynamicFilesTypeMetadata = {};
11
+ }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DataPointsExportSelectorFileTypesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: DataPointsExportSelectorFileTypesComponent, isStandalone: true, selector: "c8y-datapoints-export-selector-file-types", inputs: { dynamicFilesTypeMetadata: "dynamicFilesTypeMetadata", formGroup: "formGroup" }, ngImport: i0, template: "<fieldset class=\"c8y-fieldset\">\n <legend class=\"d-flex a-i-center\">{{ 'File types' | translate }}</legend>\n <div [formGroup]=\"formGroup\">\n <div formGroupName=\"fileTypes\">\n <c8y-form-group\n class=\"m-b-8\"\n *ngFor=\"let item of dynamicFilesTypeMetadata | keyvalue\"\n >\n <label>{{ item.value.label | translate }}</label>\n <label\n class=\"c8y-checkbox m-t-0\"\n title=\"{{ item.value.title }}\"\n >\n <input\n type=\"checkbox\"\n formControlName=\"{{ item.key }}\"\n />\n <span></span>\n <i\n class=\"m-l-8 m-r-4\"\n c8yIcon=\"{{ item.value.icon }}\"\n ></i>\n </label>\n </c8y-form-group>\n </div>\n </div>\n</fieldset>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i2.KeyValuePipe, name: "keyvalue" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "ngmodule", type: FormsModule }] }); }
14
+ }
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DataPointsExportSelectorFileTypesComponent, decorators: [{
16
+ type: Component,
17
+ args: [{ selector: 'c8y-datapoints-export-selector-file-types', standalone: true, imports: [CoreModule, FormsModule], template: "<fieldset class=\"c8y-fieldset\">\n <legend class=\"d-flex a-i-center\">{{ 'File types' | translate }}</legend>\n <div [formGroup]=\"formGroup\">\n <div formGroupName=\"fileTypes\">\n <c8y-form-group\n class=\"m-b-8\"\n *ngFor=\"let item of dynamicFilesTypeMetadata | keyvalue\"\n >\n <label>{{ item.value.label | translate }}</label>\n <label\n class=\"c8y-checkbox m-t-0\"\n title=\"{{ item.value.title }}\"\n >\n <input\n type=\"checkbox\"\n formControlName=\"{{ item.key }}\"\n />\n <span></span>\n <i\n class=\"m-l-8 m-r-4\"\n c8yIcon=\"{{ item.value.icon }}\"\n ></i>\n </label>\n </c8y-form-group>\n </div>\n </div>\n</fieldset>\n" }]
18
+ }], propDecorators: { dynamicFilesTypeMetadata: [{
19
+ type: Input
20
+ }], formGroup: [{
21
+ type: Input
22
+ }] } });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50cy1leHBvcnRzLXNlbGVjdG9yLWZpbGUtdHlwZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3IvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItbW9kYWwvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItZmlsZS1leHBvcnRlci9kYXRhcG9pbnRzLWV4cG9ydHMtc2VsZWN0b3ItZmlsZS10eXBlcy9kYXRhcG9pbnRzLWV4cG9ydHMtc2VsZWN0b3ItZmlsZS10eXBlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci1tb2RhbC9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci1maWxlLWV4cG9ydGVyL2RhdGFwb2ludHMtZXhwb3J0cy1zZWxlY3Rvci1maWxlLXR5cGVzL2RhdGFwb2ludHMtZXhwb3J0cy1zZWxlY3Rvci1maWxlLXR5cGVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7O0FBVWpELE1BQU0sT0FBTywwQ0FBMEM7SUFOdkQ7UUFPVyw2QkFBd0IsR0FBd0MsRUFBRSxDQUFDO0tBRTdFOzhHQUhZLDBDQUEwQztrR0FBMUMsMENBQTBDLCtMQ1p2RCw0eUJBMkJBLDJDRGpCWSxVQUFVLGs5Q0FBRSxXQUFXOzsyRkFFdEIsMENBQTBDO2tCQU50RCxTQUFTOytCQUNFLDJDQUEyQyxjQUV6QyxJQUFJLFdBQ1AsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDOzhCQUd6Qix3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29yZU1vZHVsZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgRmlsZVR5cGVNZXRhZGF0YSB9IGZyb20gJy4uLy4uLy4uL2RhdGFwb2ludHMtZXhwb3J0LXNlbGVjdG9yLm1vZGVsJztcbmltcG9ydCB7IERhdGFwb2ludHNFeHBvcnRTZWxlY3RvckZpbGVFeHBvcnRlckNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGFwb2ludHMtZXhwb3J0LXNlbGVjdG9yLWZpbGUtZXhwb3J0ZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRhdGFwb2ludHMtZXhwb3J0LXNlbGVjdG9yLWZpbGUtdHlwZXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YXBvaW50cy1leHBvcnRzLXNlbGVjdG9yLWZpbGUtdHlwZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29yZU1vZHVsZSwgRm9ybXNNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIERhdGFQb2ludHNFeHBvcnRTZWxlY3RvckZpbGVUeXBlc0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGR5bmFtaWNGaWxlc1R5cGVNZXRhZGF0YTogeyBba2V5OiBzdHJpbmddOiBGaWxlVHlwZU1ldGFkYXRhIH0gPSB7fTtcbiAgQElucHV0KCkgZm9ybUdyb3VwOiBSZXR1cm5UeXBlPERhdGFwb2ludHNFeHBvcnRTZWxlY3RvckZpbGVFeHBvcnRlckNvbXBvbmVudFsnY3JlYXRlRm9ybSddPjtcbn1cbiIsIjxmaWVsZHNldCBjbGFzcz1cImM4eS1maWVsZHNldFwiPlxuICA8bGVnZW5kIGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXJcIj57eyAnRmlsZSB0eXBlcycgfCB0cmFuc2xhdGUgfX08L2xlZ2VuZD5cbiAgPGRpdiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICAgIDxkaXYgZm9ybUdyb3VwTmFtZT1cImZpbGVUeXBlc1wiPlxuICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgIGNsYXNzPVwibS1iLThcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkeW5hbWljRmlsZXNUeXBlTWV0YWRhdGEgfCBrZXl2YWx1ZVwiXG4gICAgICA+XG4gICAgICAgIDxsYWJlbD57eyBpdGVtLnZhbHVlLmxhYmVsIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgY2xhc3M9XCJjOHktY2hlY2tib3ggbS10LTBcIlxuICAgICAgICAgIHRpdGxlPVwie3sgaXRlbS52YWx1ZS50aXRsZSB9fVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBpdGVtLmtleSB9fVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwibS1sLTggbS1yLTRcIlxuICAgICAgICAgICAgYzh5SWNvbj1cInt7IGl0ZW0udmFsdWUuaWNvbiB9fVwiXG4gICAgICAgICAgPjwvaT5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9maWVsZHNldD5cbiJdfQ==
@@ -0,0 +1,42 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { FormsModule } from '@angular/forms';
3
+ import { CoreModule, gettext } from '@c8y/ngx-components';
4
+ import { HAS_ERROR } from '../../../datapoints-export-selector.model';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@c8y/ngx-components";
7
+ import * as i2 from "@angular/common";
8
+ import * as i3 from "@angular/forms";
9
+ export class DataPointsExportSelectorTimeRangeComponent {
10
+ constructor() {
11
+ this.onDateFromChange = new EventEmitter();
12
+ this.onDateToChange = new EventEmitter();
13
+ this.DATE_FROM = 'dateFrom';
14
+ this.DATE_TO = 'dateTo';
15
+ this.FROM_DATE = gettext('From`date`');
16
+ this.HAS_ERROR = HAS_ERROR;
17
+ this.INVALID_DATE_TIME = 'invalidDateTime';
18
+ this.THIS_DATE_IS_INVALID = gettext('This date is invalid.');
19
+ this.THIS_DATE_IS_AFTER_THE_LAST_ALLOWED_DATE = gettext('This date is after the latest allowed date.');
20
+ this.THIS_DATE_IS_BEFORE_THE_EARLIEST_ALLOWED_DATE = gettext('This date is before the earliest allowed date.');
21
+ this.TO_DATE = gettext('To`date`');
22
+ }
23
+ emitDateFromChange(updatedDate) {
24
+ this.onDateFromChange.emit(updatedDate);
25
+ }
26
+ emitDateToChange(updatedDate) {
27
+ this.onDateToChange.emit(updatedDate);
28
+ }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DataPointsExportSelectorTimeRangeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: DataPointsExportSelectorTimeRangeComponent, isStandalone: true, selector: "c8y-datapoints-export-selector-time-range", inputs: { formGroup: "formGroup" }, outputs: { onDateFromChange: "onDateFromChange", onDateToChange: "onDateToChange" }, ngImport: i0, template: "<fieldset class=\"c8y-fieldset\">\n <legend>{{ 'Time range' | translate }}</legend>\n <c8y-form-group\n class=\"m-b-8\"\n [ngClass]=\"formGroup.controls.dateFrom.errors ? HAS_ERROR : ''\"\n >\n <label\n [title]=\"FROM_DATE | translate\"\n [for]=\"DATE_FROM\"\n >\n {{ FROM_DATE | translate }}\n </label>\n <div>\n <c8y-date-time-picker\n id=\"DATE_FROM\"\n [maxDate]=\"formGroup.value.dateTo\"\n [placeholder]=\"FROM_DATE | translate\"\n [formControl]=\"formGroup.controls.dateFrom\"\n [ngClass]=\"formGroup.controls.dateFrom.errors ? HAS_ERROR : ''\"\n (ngModelChange)=\"emitDateFromChange($event)\"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"formGroup.controls.dateFrom.errors\">\n <c8y-message\n name=\"dateAfterRangeMax\"\n [text]=\"THIS_DATE_IS_AFTER_THE_LAST_ALLOWED_DATE | translate\"\n ></c8y-message>\n <c8y-message\n name=\"INVALID_DATE_TIME\"\n [text]=\"THIS_DATE_IS_INVALID | translate\"\n ></c8y-message>\n </c8y-messages>\n </div>\n </c8y-form-group>\n <c8y-form-group\n class=\"m-b-8\"\n [ngClass]=\"formGroup.controls.dateTo.errors ? HAS_ERROR : ''\"\n >\n <label\n [title]=\"TO_DATE | translate\"\n [for]=\"DATE_TO\"\n >\n {{ TO_DATE | translate }}\n </label>\n <div>\n <c8y-date-time-picker\n id=\"DATE_TO\"\n [minDate]=\"formGroup.value.dateFrom\"\n [placeholder]=\"TO_DATE | translate\"\n [formControl]=\"formGroup.controls.dateTo\"\n [ngClass]=\"formGroup.controls.dateTo.errors ? HAS_ERROR : ''\"\n (ngModelChange)=\"emitDateToChange($event)\"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"formGroup.controls.dateTo.errors\">\n <c8y-message\n name=\"dateBeforeRangeMin\"\n [text]=\"THIS_DATE_IS_BEFORE_THE_EARLIEST_ALLOWED_DATE | translate\"\n ></c8y-message>\n <c8y-message\n name=\"INVALID_DATE_TIME\"\n [text]=\"THIS_DATE_IS_INVALID | translate\"\n ></c8y-message>\n </c8y-messages>\n </div>\n </c8y-form-group>\n</fieldset>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1.MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: i1.MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i1.DateTimePickerComponent, selector: "c8y-date-time-picker", inputs: ["minDate", "maxDate", "placeholder", "dateInputFormat", "adaptivePosition", "size", "dateType", "config"], outputs: ["onDateSelected"] }, { kind: "ngmodule", type: FormsModule }] }); }
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DataPointsExportSelectorTimeRangeComponent, decorators: [{
33
+ type: Component,
34
+ args: [{ selector: 'c8y-datapoints-export-selector-time-range', standalone: true, imports: [CoreModule, FormsModule], template: "<fieldset class=\"c8y-fieldset\">\n <legend>{{ 'Time range' | translate }}</legend>\n <c8y-form-group\n class=\"m-b-8\"\n [ngClass]=\"formGroup.controls.dateFrom.errors ? HAS_ERROR : ''\"\n >\n <label\n [title]=\"FROM_DATE | translate\"\n [for]=\"DATE_FROM\"\n >\n {{ FROM_DATE | translate }}\n </label>\n <div>\n <c8y-date-time-picker\n id=\"DATE_FROM\"\n [maxDate]=\"formGroup.value.dateTo\"\n [placeholder]=\"FROM_DATE | translate\"\n [formControl]=\"formGroup.controls.dateFrom\"\n [ngClass]=\"formGroup.controls.dateFrom.errors ? HAS_ERROR : ''\"\n (ngModelChange)=\"emitDateFromChange($event)\"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"formGroup.controls.dateFrom.errors\">\n <c8y-message\n name=\"dateAfterRangeMax\"\n [text]=\"THIS_DATE_IS_AFTER_THE_LAST_ALLOWED_DATE | translate\"\n ></c8y-message>\n <c8y-message\n name=\"INVALID_DATE_TIME\"\n [text]=\"THIS_DATE_IS_INVALID | translate\"\n ></c8y-message>\n </c8y-messages>\n </div>\n </c8y-form-group>\n <c8y-form-group\n class=\"m-b-8\"\n [ngClass]=\"formGroup.controls.dateTo.errors ? HAS_ERROR : ''\"\n >\n <label\n [title]=\"TO_DATE | translate\"\n [for]=\"DATE_TO\"\n >\n {{ TO_DATE | translate }}\n </label>\n <div>\n <c8y-date-time-picker\n id=\"DATE_TO\"\n [minDate]=\"formGroup.value.dateFrom\"\n [placeholder]=\"TO_DATE | translate\"\n [formControl]=\"formGroup.controls.dateTo\"\n [ngClass]=\"formGroup.controls.dateTo.errors ? HAS_ERROR : ''\"\n (ngModelChange)=\"emitDateToChange($event)\"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"formGroup.controls.dateTo.errors\">\n <c8y-message\n name=\"dateBeforeRangeMin\"\n [text]=\"THIS_DATE_IS_BEFORE_THE_EARLIEST_ALLOWED_DATE | translate\"\n ></c8y-message>\n <c8y-message\n name=\"INVALID_DATE_TIME\"\n [text]=\"THIS_DATE_IS_INVALID | translate\"\n ></c8y-message>\n </c8y-messages>\n </div>\n </c8y-form-group>\n</fieldset>\n" }]
35
+ }], propDecorators: { formGroup: [{
36
+ type: Input
37
+ }], onDateFromChange: [{
38
+ type: Output
39
+ }], onDateToChange: [{
40
+ type: Output
41
+ }] } });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50cy1leHBvcnRzLXNlbGVjdG9yLXRpbWUtcmFuZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3IvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItbW9kYWwvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItZmlsZS1leHBvcnRlci9kYXRhcG9pbnRzLWV4cG9ydHMtc2VsZWN0b3ItdGltZS1yYW5nZS9kYXRhcG9pbnRzLWV4cG9ydHMtc2VsZWN0b3ItdGltZS1yYW5nZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci1tb2RhbC9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci1maWxlLWV4cG9ydGVyL2RhdGFwb2ludHMtZXhwb3J0cy1zZWxlY3Rvci10aW1lLXJhbmdlL2RhdGFwb2ludHMtZXhwb3J0cy1zZWxlY3Rvci10aW1lLXJhbmdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7OztBQVN0RSxNQUFNLE9BQU8sMENBQTBDO0lBTnZEO1FBUVkscUJBQWdCLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDcEUsbUJBQWMsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVuRSxjQUFTLEdBQUcsVUFBVSxDQUFDO1FBQ3ZCLFlBQU8sR0FBRyxRQUFRLENBQUM7UUFDbkIsY0FBUyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsQyxjQUFTLEdBQUcsU0FBUyxDQUFDO1FBQ3RCLHNCQUFpQixHQUFHLGlCQUFpQixDQUFDO1FBQ3RDLHlCQUFvQixHQUFHLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3hELDZDQUF3QyxHQUFHLE9BQU8sQ0FDekQsNkNBQTZDLENBQzlDLENBQUM7UUFDTyxrREFBNkMsR0FBRyxPQUFPLENBQzlELGdEQUFnRCxDQUNqRCxDQUFDO1FBQ08sWUFBTyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztLQVN4QztJQVBDLGtCQUFrQixDQUFDLFdBQW1CO1FBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELGdCQUFnQixDQUFDLFdBQW1CO1FBQ2xDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7OEdBekJVLDBDQUEwQztrR0FBMUMsMENBQTBDLDhOQ1p2RCx1cEVBaUVBLDJDRHZEWSxVQUFVLDhqQ0FBRSxXQUFXOzsyRkFFdEIsMENBQTBDO2tCQU50RCxTQUFTOytCQUNFLDJDQUEyQyxjQUV6QyxJQUFJLFdBQ1AsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDOzhCQUd6QixTQUFTO3NCQUFqQixLQUFLO2dCQUNJLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29yZU1vZHVsZSwgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgSEFTX0VSUk9SIH0gZnJvbSAnLi4vLi4vLi4vZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3IubW9kZWwnO1xuaW1wb3J0IHsgRGF0YXBvaW50c0V4cG9ydFNlbGVjdG9yRmlsZUV4cG9ydGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItZmlsZS1leHBvcnRlci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItdGltZS1yYW5nZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhcG9pbnRzLWV4cG9ydHMtc2VsZWN0b3ItdGltZS1yYW5nZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb3JlTW9kdWxlLCBGb3Jtc01vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgRGF0YVBvaW50c0V4cG9ydFNlbGVjdG9yVGltZVJhbmdlQ29tcG9uZW50IHtcbiAgQElucHV0KCkgZm9ybUdyb3VwOiBSZXR1cm5UeXBlPERhdGFwb2ludHNFeHBvcnRTZWxlY3RvckZpbGVFeHBvcnRlckNvbXBvbmVudFsnY3JlYXRlRm9ybSddPjtcbiAgQE91dHB1dCgpIG9uRGF0ZUZyb21DaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBvbkRhdGVUb0NoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICByZWFkb25seSBEQVRFX0ZST00gPSAnZGF0ZUZyb20nO1xuICByZWFkb25seSBEQVRFX1RPID0gJ2RhdGVUbyc7XG4gIHJlYWRvbmx5IEZST01fREFURSA9IGdldHRleHQoJ0Zyb21gZGF0ZWAnKTtcbiAgcmVhZG9ubHkgSEFTX0VSUk9SID0gSEFTX0VSUk9SO1xuICByZWFkb25seSBJTlZBTElEX0RBVEVfVElNRSA9ICdpbnZhbGlkRGF0ZVRpbWUnO1xuICByZWFkb25seSBUSElTX0RBVEVfSVNfSU5WQUxJRCA9IGdldHRleHQoJ1RoaXMgZGF0ZSBpcyBpbnZhbGlkLicpO1xuICByZWFkb25seSBUSElTX0RBVEVfSVNfQUZURVJfVEhFX0xBU1RfQUxMT1dFRF9EQVRFID0gZ2V0dGV4dChcbiAgICAnVGhpcyBkYXRlIGlzIGFmdGVyIHRoZSBsYXRlc3QgYWxsb3dlZCBkYXRlLidcbiAgKTtcbiAgcmVhZG9ubHkgVEhJU19EQVRFX0lTX0JFRk9SRV9USEVfRUFSTElFU1RfQUxMT1dFRF9EQVRFID0gZ2V0dGV4dChcbiAgICAnVGhpcyBkYXRlIGlzIGJlZm9yZSB0aGUgZWFybGllc3QgYWxsb3dlZCBkYXRlLidcbiAgKTtcbiAgcmVhZG9ubHkgVE9fREFURSA9IGdldHRleHQoJ1RvYGRhdGVgJyk7XG5cbiAgZW1pdERhdGVGcm9tQ2hhbmdlKHVwZGF0ZWREYXRlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm9uRGF0ZUZyb21DaGFuZ2UuZW1pdCh1cGRhdGVkRGF0ZSk7XG4gIH1cblxuICBlbWl0RGF0ZVRvQ2hhbmdlKHVwZGF0ZWREYXRlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm9uRGF0ZVRvQ2hhbmdlLmVtaXQodXBkYXRlZERhdGUpO1xuICB9XG59XG4iLCI8ZmllbGRzZXQgY2xhc3M9XCJjOHktZmllbGRzZXRcIj5cbiAgPGxlZ2VuZD57eyAnVGltZSByYW5nZScgfCB0cmFuc2xhdGUgfX08L2xlZ2VuZD5cbiAgPGM4eS1mb3JtLWdyb3VwXG4gICAgY2xhc3M9XCJtLWItOFwiXG4gICAgW25nQ2xhc3NdPVwiZm9ybUdyb3VwLmNvbnRyb2xzLmRhdGVGcm9tLmVycm9ycyA/IEhBU19FUlJPUiA6ICcnXCJcbiAgPlxuICAgIDxsYWJlbFxuICAgICAgW3RpdGxlXT1cIkZST01fREFURSB8IHRyYW5zbGF0ZVwiXG4gICAgICBbZm9yXT1cIkRBVEVfRlJPTVwiXG4gICAgPlxuICAgICAge3sgRlJPTV9EQVRFIHwgdHJhbnNsYXRlIH19XG4gICAgPC9sYWJlbD5cbiAgICA8ZGl2PlxuICAgICAgPGM4eS1kYXRlLXRpbWUtcGlja2VyXG4gICAgICAgIGlkPVwiREFURV9GUk9NXCJcbiAgICAgICAgW21heERhdGVdPVwiZm9ybUdyb3VwLnZhbHVlLmRhdGVUb1wiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJGUk9NX0RBVEUgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUdyb3VwLmNvbnRyb2xzLmRhdGVGcm9tXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiZm9ybUdyb3VwLmNvbnRyb2xzLmRhdGVGcm9tLmVycm9ycyA/IEhBU19FUlJPUiA6ICcnXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZW1pdERhdGVGcm9tQ2hhbmdlKCRldmVudClcIlxuICAgICAgPjwvYzh5LWRhdGUtdGltZS1waWNrZXI+XG4gICAgICA8Yzh5LW1lc3NhZ2VzIFtzaG93XT1cImZvcm1Hcm91cC5jb250cm9scy5kYXRlRnJvbS5lcnJvcnNcIj5cbiAgICAgICAgPGM4eS1tZXNzYWdlXG4gICAgICAgICAgbmFtZT1cImRhdGVBZnRlclJhbmdlTWF4XCJcbiAgICAgICAgICBbdGV4dF09XCJUSElTX0RBVEVfSVNfQUZURVJfVEhFX0xBU1RfQUxMT1dFRF9EQVRFIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgPjwvYzh5LW1lc3NhZ2U+XG4gICAgICAgIDxjOHktbWVzc2FnZVxuICAgICAgICAgIG5hbWU9XCJJTlZBTElEX0RBVEVfVElNRVwiXG4gICAgICAgICAgW3RleHRdPVwiVEhJU19EQVRFX0lTX0lOVkFMSUQgfCB0cmFuc2xhdGVcIlxuICAgICAgICA+PC9jOHktbWVzc2FnZT5cbiAgICAgIDwvYzh5LW1lc3NhZ2VzPlxuICAgIDwvZGl2PlxuICA8L2M4eS1mb3JtLWdyb3VwPlxuICA8Yzh5LWZvcm0tZ3JvdXBcbiAgICBjbGFzcz1cIm0tYi04XCJcbiAgICBbbmdDbGFzc109XCJmb3JtR3JvdXAuY29udHJvbHMuZGF0ZVRvLmVycm9ycyA/IEhBU19FUlJPUiA6ICcnXCJcbiAgPlxuICAgIDxsYWJlbFxuICAgICAgW3RpdGxlXT1cIlRPX0RBVEUgfCB0cmFuc2xhdGVcIlxuICAgICAgW2Zvcl09XCJEQVRFX1RPXCJcbiAgICA+XG4gICAgICB7eyBUT19EQVRFIHwgdHJhbnNsYXRlIH19XG4gICAgPC9sYWJlbD5cbiAgICA8ZGl2PlxuICAgICAgPGM4eS1kYXRlLXRpbWUtcGlja2VyXG4gICAgICAgIGlkPVwiREFURV9UT1wiXG4gICAgICAgIFttaW5EYXRlXT1cImZvcm1Hcm91cC52YWx1ZS5kYXRlRnJvbVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJUT19EQVRFIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Hcm91cC5jb250cm9scy5kYXRlVG9cIlxuICAgICAgICBbbmdDbGFzc109XCJmb3JtR3JvdXAuY29udHJvbHMuZGF0ZVRvLmVycm9ycyA/IEhBU19FUlJPUiA6ICcnXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZW1pdERhdGVUb0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgID48L2M4eS1kYXRlLXRpbWUtcGlja2VyPlxuICAgICAgPGM4eS1tZXNzYWdlcyBbc2hvd109XCJmb3JtR3JvdXAuY29udHJvbHMuZGF0ZVRvLmVycm9yc1wiPlxuICAgICAgICA8Yzh5LW1lc3NhZ2VcbiAgICAgICAgICBuYW1lPVwiZGF0ZUJlZm9yZVJhbmdlTWluXCJcbiAgICAgICAgICBbdGV4dF09XCJUSElTX0RBVEVfSVNfQkVGT1JFX1RIRV9FQVJMSUVTVF9BTExPV0VEX0RBVEUgfCB0cmFuc2xhdGVcIlxuICAgICAgICA+PC9jOHktbWVzc2FnZT5cbiAgICAgICAgPGM4eS1tZXNzYWdlXG4gICAgICAgICAgbmFtZT1cIklOVkFMSURfREFURV9USU1FXCJcbiAgICAgICAgICBbdGV4dF09XCJUSElTX0RBVEVfSVNfSU5WQUxJRCB8IHRyYW5zbGF0ZVwiXG4gICAgICAgID48L2M4eS1tZXNzYWdlPlxuICAgICAgPC9jOHktbWVzc2FnZXM+XG4gICAgPC9kaXY+XG4gIDwvYzh5LWZvcm0tZ3JvdXA+XG48L2ZpZWxkc2V0PlxuIl19