@c8y/ngx-components 1022.13.0 → 1022.21.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/alarms/alarms.helper.d.ts.map +1 -1
  2. package/auth-configuration/sso-configuration/templates/template.component.d.ts +1 -1
  3. package/core/asset-property/asset-property.model.d.ts +0 -6
  4. package/core/asset-property/asset-property.model.d.ts.map +1 -1
  5. package/core/authentication/authentication.module.d.ts.map +1 -1
  6. package/core/authentication/new-password.component.d.ts +3 -2
  7. package/core/authentication/new-password.component.d.ts.map +1 -1
  8. package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts.map +1 -1
  9. package/core/drop-area/drop-area.component.d.ts +2 -0
  10. package/core/drop-area/drop-area.component.d.ts.map +1 -1
  11. package/core/dynamic-forms/file/file.type.component.d.ts.map +1 -1
  12. package/core/modal/modal.module.d.ts.map +1 -1
  13. package/core/modal/modal.service.d.ts +1 -0
  14. package/core/modal/modal.service.d.ts.map +1 -1
  15. package/core/plugins/plugins.module.d.ts.map +1 -1
  16. package/core/plugins/plugins.service.d.ts +1 -2
  17. package/core/plugins/plugins.service.d.ts.map +1 -1
  18. package/core/select/select.component.d.ts.map +1 -1
  19. package/core/user/user-edit-modal.component.d.ts +1 -0
  20. package/core/user/user-edit-modal.component.d.ts.map +1 -1
  21. package/core/user/user-edit.component.d.ts +4 -1
  22. package/core/user/user-edit.component.d.ts.map +1 -1
  23. package/datapoint-explorer/datapoint-explorer.module.d.ts +2 -0
  24. package/datapoint-explorer/datapoint-explorer.module.d.ts.map +1 -1
  25. package/datapoint-explorer/devicemanagement/c8y-ngx-components-datapoint-explorer-devicemanagement.d.ts.map +1 -0
  26. package/datapoint-explorer/devicemanagement/index.d.ts +2 -0
  27. package/datapoint-explorer/devicemanagement/index.d.ts.map +1 -0
  28. package/datapoint-explorer/view/datapoint-explorer.component.d.ts +6 -3
  29. package/datapoint-explorer/view/datapoint-explorer.component.d.ts.map +1 -1
  30. package/datapoint-explorer/view/datapoint-explorer.model.d.ts +8 -0
  31. package/datapoint-explorer/view/datapoint-explorer.model.d.ts.map +1 -0
  32. package/datapoint-explorer/view/index.d.ts +1 -0
  33. package/datapoint-explorer/view/index.d.ts.map +1 -1
  34. package/device-list/devices.breadcrumb-factory.d.ts +1 -0
  35. package/device-list/devices.breadcrumb-factory.d.ts.map +1 -1
  36. package/device-profile/add-device-profile.component.d.ts +1 -1
  37. package/device-profile/add-device-profile.component.d.ts.map +1 -1
  38. package/device-profile/device-profile-list.component.d.ts +1 -1
  39. package/device-profile/device-profile-list.component.d.ts.map +1 -1
  40. package/device-profile/device-profile.component.d.ts +1 -1
  41. package/device-profile/device-profile.component.d.ts.map +1 -1
  42. package/device-profile/device-profile.module.d.ts +17 -17
  43. package/device-profile/device-profile.module.d.ts.map +1 -1
  44. package/device-profile/device-tab-profile/device-profile-item-list.component.d.ts +1 -1
  45. package/device-profile/device-tab-profile/device-profile-item-list.component.d.ts.map +1 -1
  46. package/device-profile/device-tab-profile/device-tab-profile-detail.component.d.ts +1 -1
  47. package/device-profile/device-tab-profile/device-tab-profile-detail.component.d.ts.map +1 -1
  48. package/device-profile/device-tab-profile/device-tab-profile.component.d.ts +1 -1
  49. package/device-profile/device-tab-profile/device-tab-profile.component.d.ts.map +1 -1
  50. package/device-profile/select-configuration-modal.component.d.ts +1 -1
  51. package/device-profile/select-configuration-modal.component.d.ts.map +1 -1
  52. package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts +4 -2
  53. package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts.map +1 -1
  54. package/device-shell/command-templates/command-templates.component.d.ts +1 -1
  55. package/device-shell/command-templates/command-templates.component.d.ts.map +1 -1
  56. package/device-shell/command-templates/command-templates.directive.d.ts +1 -1
  57. package/device-shell/command-templates/command-templates.directive.d.ts.map +1 -1
  58. package/device-shell/command-templates/command-templates.module.d.ts +1 -1
  59. package/device-shell/shell/shell.component.d.ts +1 -1
  60. package/device-shell/shell/shell.component.d.ts.map +1 -1
  61. package/device-shell/shell/shell.module.d.ts +7 -7
  62. package/diagnostics/diagnostics.component.d.ts +1 -1
  63. package/diagnostics/diagnostics.component.d.ts.map +1 -1
  64. package/diagnostics/diagnostics.module.d.ts +8 -8
  65. package/diagnostics/diagnostics.module.d.ts.map +1 -1
  66. package/echart/services/chart-realtime.service.d.ts +2 -0
  67. package/echart/services/chart-realtime.service.d.ts.map +1 -1
  68. package/echart/services/echarts-options.service.d.ts +4 -4
  69. package/echart/services/echarts-options.service.d.ts.map +1 -1
  70. package/events/c8y-ngx-components-events.d.ts.map +1 -0
  71. package/events/events-timeline/c8y-ngx-components-events-events-timeline.d.ts.map +1 -0
  72. package/events/events-timeline/events-timeline.component.d.ts +19 -0
  73. package/events/events-timeline/events-timeline.component.d.ts.map +1 -0
  74. package/events/events-timeline/index.d.ts +2 -0
  75. package/events/events-timeline/index.d.ts.map +1 -0
  76. package/events/events.model.d.ts +6 -0
  77. package/events/events.model.d.ts.map +1 -0
  78. package/events/events.service.d.ts +10 -0
  79. package/events/events.service.d.ts.map +1 -0
  80. package/events/index.d.ts +3 -0
  81. package/events/index.d.ts.map +1 -0
  82. package/fesm2022/c8y-ngx-components-alarms.mjs +2 -1
  83. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  84. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +2 -2
  85. package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  86. package/fesm2022/c8y-ngx-components-datapoint-explorer-devicemanagement.mjs +38 -0
  87. package/fesm2022/c8y-ngx-components-datapoint-explorer-devicemanagement.mjs.map +1 -0
  88. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +143 -142
  89. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
  90. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +1 -1
  91. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs.map +1 -1
  92. package/fesm2022/c8y-ngx-components-device-list.mjs +10 -3
  93. package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
  94. package/fesm2022/c8y-ngx-components-device-profile.mjs +126 -49
  95. package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
  96. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +44 -12
  97. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -1
  98. package/fesm2022/c8y-ngx-components-device-shell.mjs +31 -22
  99. package/fesm2022/c8y-ngx-components-device-shell.mjs.map +1 -1
  100. package/fesm2022/c8y-ngx-components-diagnostics.mjs +36 -19
  101. package/fesm2022/c8y-ngx-components-diagnostics.mjs.map +1 -1
  102. package/fesm2022/c8y-ngx-components-echart.mjs +53 -17
  103. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
  104. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs +45 -0
  105. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs.map +1 -0
  106. package/fesm2022/c8y-ngx-components-events.mjs +44 -0
  107. package/fesm2022/c8y-ngx-components-events.mjs.map +1 -0
  108. package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs +8 -14
  109. package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs.map +1 -1
  110. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs +49 -49
  111. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs.map +1 -1
  112. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +27 -14
  113. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs.map +1 -1
  114. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs +27 -33
  115. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs.map +1 -1
  116. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs +51 -39
  117. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
  118. package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs +10 -8
  119. package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs.map +1 -1
  120. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs +16 -11
  121. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs.map +1 -1
  122. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs +8 -11
  123. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs.map +1 -1
  124. package/fesm2022/c8y-ngx-components-operations-operation-details.mjs +25 -21
  125. package/fesm2022/c8y-ngx-components-operations-operation-details.mjs.map +1 -1
  126. package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs +7 -9
  127. package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs.map +1 -1
  128. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs +31 -31
  129. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs.map +1 -1
  130. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +3 -3
  131. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
  132. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs +33 -13
  133. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs.map +1 -1
  134. package/fesm2022/c8y-ngx-components-operations-status-filter.mjs +19 -13
  135. package/fesm2022/c8y-ngx-components-operations-status-filter.mjs.map +1 -1
  136. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +40 -36
  137. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs.map +1 -1
  138. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +60 -41
  139. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs.map +1 -1
  140. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +122 -109
  141. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs.map +1 -1
  142. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +66 -41
  143. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs.map +1 -1
  144. package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs +11 -16
  145. package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs.map +1 -1
  146. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +212 -83
  147. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
  148. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +113 -54
  149. package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  150. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +130 -62
  151. package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
  152. package/fesm2022/c8y-ngx-components-repository-shared.mjs +37 -28
  153. package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
  154. package/fesm2022/c8y-ngx-components-repository-software.mjs +156 -83
  155. package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
  156. package/fesm2022/c8y-ngx-components-services.mjs +32 -19
  157. package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
  158. package/fesm2022/c8y-ngx-components-time-context.mjs +12 -5
  159. package/fesm2022/c8y-ngx-components-time-context.mjs.map +1 -1
  160. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +68 -31
  161. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  162. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs +16 -3
  163. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs.map +1 -1
  164. package/fesm2022/c8y-ngx-components-upgrade.mjs +1 -14
  165. package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
  166. package/fesm2022/c8y-ngx-components-user-roles.mjs +8 -3
  167. package/fesm2022/c8y-ngx-components-user-roles.mjs.map +1 -1
  168. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +4 -4
  169. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  170. package/fesm2022/c8y-ngx-components.mjs +1219 -1190
  171. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  172. package/locales/de.po +53 -35
  173. package/locales/es.po +26 -5
  174. package/locales/fr.po +51 -30
  175. package/locales/ja_JP.po +90 -67
  176. package/locales/ko.po +26 -5
  177. package/locales/locales.pot +22 -13
  178. package/locales/nl.po +26 -5
  179. package/locales/pl.po +26 -5
  180. package/locales/pt_BR.po +26 -5
  181. package/locales/zh_CN.po +27 -6
  182. package/locales/zh_TW.po +26 -5
  183. package/operations/bulk-operation-from-single/bulk-operation-from-single.component.d.ts +1 -1
  184. package/operations/bulk-operation-from-single/bulk-operation-from-single.component.d.ts.map +1 -1
  185. package/operations/bulk-operation-from-single/bulk-operation-from-single.module.d.ts +3 -5
  186. package/operations/bulk-operation-from-single/bulk-operation-from-single.module.d.ts.map +1 -1
  187. package/operations/bulk-operation-list-item/bulk-operation-list-item.component.d.ts +1 -1
  188. package/operations/bulk-operation-list-item/bulk-operation-list-item.component.d.ts.map +1 -1
  189. package/operations/bulk-operation-list-item/bulk-operation-list-item.module.d.ts +1 -7
  190. package/operations/bulk-operation-list-item/bulk-operation-list-item.module.d.ts.map +1 -1
  191. package/operations/bulk-operation-list-item/bulk-operation-wrapper.component.d.ts +1 -1
  192. package/operations/bulk-operation-list-item/bulk-operation-wrapper.component.d.ts.map +1 -1
  193. package/operations/bulk-operation-list-item/modal-body-host.directive.d.ts +1 -1
  194. package/operations/bulk-operation-list-item/modal-body-host.directive.d.ts.map +1 -1
  195. package/operations/bulk-operation-list-item/modals/bulk-operations-reschedule-modal.component.d.ts +1 -1
  196. package/operations/bulk-operation-list-item/modals/bulk-operations-reschedule-modal.component.d.ts.map +1 -1
  197. package/operations/bulk-operation-scheduler/bulk-operation-scheduler.module.d.ts +6 -6
  198. package/operations/bulk-operation-scheduler/operation-scheduler.component.d.ts +1 -1
  199. package/operations/bulk-operation-scheduler/operation-scheduler.component.d.ts.map +1 -1
  200. package/operations/bulk-operation-stepper/base-stepper.component.d.ts +1 -1
  201. package/operations/bulk-operation-stepper/bulk-operation-stepper.component.d.ts +1 -1
  202. package/operations/bulk-operation-stepper/bulk-operation-stepper.component.d.ts.map +1 -1
  203. package/operations/bulk-operation-stepper/bulk-operation-stepper.module.d.ts +1 -5
  204. package/operations/bulk-operation-stepper/bulk-operation-stepper.module.d.ts.map +1 -1
  205. package/operations/bulk-operation-stepper/custom-step.directive.d.ts +1 -1
  206. package/operations/bulk-operation-stepper/custom-step.directive.d.ts.map +1 -1
  207. package/operations/bulk-operations-list/bulk-operations-list.component.d.ts +1 -1
  208. package/operations/bulk-operations-list/bulk-operations-list.component.d.ts.map +1 -1
  209. package/operations/bulk-operations-list/bulk-operations-list.module.d.ts +4 -10
  210. package/operations/bulk-operations-list/bulk-operations-list.module.d.ts.map +1 -1
  211. package/operations/bulk-operations-list/modals/bulk-operations-modal.component.d.ts +1 -1
  212. package/operations/bulk-operations-list/modals/bulk-operations-modal.component.d.ts.map +1 -1
  213. package/operations/bulk-operations-stepper-container/bulk-operations-stepper-container.component.d.ts +1 -1
  214. package/operations/bulk-operations-stepper-container/bulk-operations-stepper-container.component.d.ts.map +1 -1
  215. package/operations/bulk-operations-stepper-container/bulk-operations-stepper-container.module.d.ts +3 -4
  216. package/operations/bulk-operations-stepper-container/bulk-operations-stepper-container.module.d.ts.map +1 -1
  217. package/operations/create-bulk-operation-details/create-bulk-operation-details.component.d.ts +1 -1
  218. package/operations/create-bulk-operation-details/create-bulk-operation-details.component.d.ts.map +1 -1
  219. package/operations/create-bulk-operation-details/create-bulk-operation-details.module.d.ts +1 -4
  220. package/operations/create-bulk-operation-details/create-bulk-operation-details.module.d.ts.map +1 -1
  221. package/operations/device-selector/device-selector.component.d.ts +1 -1
  222. package/operations/device-selector/device-selector.component.d.ts.map +1 -1
  223. package/operations/device-selector/device-selector.module.d.ts +1 -3
  224. package/operations/device-selector/device-selector.module.d.ts.map +1 -1
  225. package/operations/operation-details/operation-details-modal.component.d.ts +1 -1
  226. package/operations/operation-details/operation-details-modal.component.d.ts.map +1 -1
  227. package/operations/operation-details/operation-details.component.d.ts +1 -1
  228. package/operations/operation-details/operation-details.component.d.ts.map +1 -1
  229. package/operations/operation-details/operation-details.module.d.ts +1 -7
  230. package/operations/operation-details/operation-details.module.d.ts.map +1 -1
  231. package/operations/operation-details/operation-details.service.d.ts.map +1 -1
  232. package/operations/operation-summary/operation-summary.component.d.ts +1 -1
  233. package/operations/operation-summary/operation-summary.component.d.ts.map +1 -1
  234. package/operations/operation-summary/operation-summary.module.d.ts +1 -2
  235. package/operations/operation-summary/operation-summary.module.d.ts.map +1 -1
  236. package/operations/operations-list/operations-list-item.component.d.ts.map +1 -1
  237. package/operations/operations-list/operations-list.component.d.ts.map +1 -1
  238. package/operations/operations-list/operations-list.service.d.ts +1 -1
  239. package/operations/operations-list/operations-list.service.d.ts.map +1 -1
  240. package/operations/operations-list-item-details/operation-details-tabs.component.d.ts +1 -1
  241. package/operations/operations-list-item-details/operation-details-tabs.component.d.ts.map +1 -1
  242. package/operations/operations-list-item-details/operation-details.component.d.ts +1 -1
  243. package/operations/operations-list-item-details/operation-details.component.d.ts.map +1 -1
  244. package/operations/operations-list-item-details/operations-list-item-details.module.d.ts +1 -6
  245. package/operations/operations-list-item-details/operations-list-item-details.module.d.ts.map +1 -1
  246. package/operations/operations-timeline/operations-timeline.component.d.ts +5 -5
  247. package/operations/operations-timeline/operations-timeline.component.d.ts.map +1 -1
  248. package/operations/operations-timeline/operations-timeline.module.d.ts +4 -6
  249. package/operations/operations-timeline/operations-timeline.module.d.ts.map +1 -1
  250. package/operations/status-filter/status-filter.component.d.ts +1 -1
  251. package/operations/status-filter/status-filter.component.d.ts.map +1 -1
  252. package/operations/status-filter/status-filter.module.d.ts +1 -4
  253. package/operations/status-filter/status-filter.module.d.ts.map +1 -1
  254. package/operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.component.d.ts +1 -1
  255. package/operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.component.d.ts.map +1 -1
  256. package/operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.module.d.ts +1 -6
  257. package/operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.module.d.ts.map +1 -1
  258. package/operations/stepper-bulk-type-device-profile/confirm-device-profile-selection-step.component.d.ts +1 -1
  259. package/operations/stepper-bulk-type-device-profile/confirm-device-profile-selection-step.component.d.ts.map +1 -1
  260. package/operations/stepper-bulk-type-device-profile/select-device-profile-step.component.d.ts +1 -1
  261. package/operations/stepper-bulk-type-device-profile/select-device-profile-step.component.d.ts.map +1 -1
  262. package/operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.component.d.ts +1 -1
  263. package/operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.component.d.ts.map +1 -1
  264. package/operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.module.d.ts +1 -6
  265. package/operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.module.d.ts.map +1 -1
  266. package/operations/stepper-bulk-type-firmware/select-firmware.component.d.ts +1 -1
  267. package/operations/stepper-bulk-type-firmware/select-firmware.component.d.ts.map +1 -1
  268. package/operations/stepper-bulk-type-firmware/stepper-bulk-type-firmware.component.d.ts +1 -1
  269. package/operations/stepper-bulk-type-firmware/stepper-bulk-type-firmware.component.d.ts.map +1 -1
  270. package/operations/stepper-bulk-type-firmware/stepper-bulk-type-firmware.module.d.ts +1 -6
  271. package/operations/stepper-bulk-type-firmware/stepper-bulk-type-firmware.module.d.ts.map +1 -1
  272. package/operations/stepper-bulk-type-firmware/version-or-patch.component.d.ts +1 -1
  273. package/operations/stepper-bulk-type-firmware/version-or-patch.component.d.ts.map +1 -1
  274. package/operations/stepper-bulk-type-software/confirm-software-selection-step.component.d.ts +1 -1
  275. package/operations/stepper-bulk-type-software/confirm-software-selection-step.component.d.ts.map +1 -1
  276. package/operations/stepper-bulk-type-software/select-software-step.component.d.ts +1 -1
  277. package/operations/stepper-bulk-type-software/select-software-step.component.d.ts.map +1 -1
  278. package/operations/stepper-bulk-type-software/stepper-bulk-type-software.component.d.ts +1 -1
  279. package/operations/stepper-bulk-type-software/stepper-bulk-type-software.component.d.ts.map +1 -1
  280. package/operations/stepper-bulk-type-software/stepper-bulk-type-software.module.d.ts +1 -6
  281. package/operations/stepper-bulk-type-software/stepper-bulk-type-software.module.d.ts.map +1 -1
  282. package/operations/stepper-frames/preview-block.directive.d.ts +1 -1
  283. package/operations/stepper-frames/preview-block.directive.d.ts.map +1 -1
  284. package/operations/stepper-frames/preview-selection-frame.component.d.ts +1 -1
  285. package/operations/stepper-frames/preview-selection-frame.component.d.ts.map +1 -1
  286. package/operations/stepper-frames/select-step-frame.component.d.ts +1 -1
  287. package/operations/stepper-frames/select-step-frame.component.d.ts.map +1 -1
  288. package/operations/stepper-frames/stepper-frames.modules.d.ts +1 -2
  289. package/operations/stepper-frames/stepper-frames.modules.d.ts.map +1 -1
  290. package/package.json +1 -1
  291. package/protocol-opcua/opcua-address-space-detail.component.d.ts +1 -1
  292. package/protocol-opcua/opcua-address-space-detail.component.d.ts.map +1 -1
  293. package/protocol-opcua/opcua-address-space-tree.component.d.ts +1 -1
  294. package/protocol-opcua/opcua-address-space-tree.component.d.ts.map +1 -1
  295. package/protocol-opcua/opcua-address-space.component.d.ts +1 -1
  296. package/protocol-opcua/opcua-address-space.component.d.ts.map +1 -1
  297. package/protocol-opcua/opcua-auto-apply-settings.component.d.ts +1 -1
  298. package/protocol-opcua/opcua-auto-apply-settings.component.d.ts.map +1 -1
  299. package/protocol-opcua/opcua-device-protocol-browse-path-validation.directive.d.ts +1 -1
  300. package/protocol-opcua/opcua-device-protocol-browse-path-validation.directive.d.ts.map +1 -1
  301. package/protocol-opcua/opcua-device-protocol-data-reporting.component.d.ts +1 -1
  302. package/protocol-opcua/opcua-device-protocol-data-reporting.component.d.ts.map +1 -1
  303. package/protocol-opcua/opcua-device-protocol-description.component.d.ts +1 -1
  304. package/protocol-opcua/opcua-device-protocol-description.component.d.ts.map +1 -1
  305. package/protocol-opcua/opcua-device-protocol-detail.component.d.ts +1 -1
  306. package/protocol-opcua/opcua-device-protocol-detail.component.d.ts.map +1 -1
  307. package/protocol-opcua/opcua-device-protocol-mapping.component.d.ts +1 -1
  308. package/protocol-opcua/opcua-device-protocol-mapping.component.d.ts.map +1 -1
  309. package/protocol-opcua/opcua-device-protocol-object-mapping-status-icon.component.d.ts +1 -1
  310. package/protocol-opcua/opcua-device-protocol-object-mapping-status-icon.component.d.ts.map +1 -1
  311. package/protocol-opcua/opcua-protocol.module.d.ts +26 -26
  312. package/protocol-opcua/opcua-protocol.module.d.ts.map +1 -1
  313. package/protocol-opcua/opcua-server-config.component.d.ts +1 -1
  314. package/protocol-opcua/opcua-server-config.component.d.ts.map +1 -1
  315. package/protocol-opcua/opcua-server-list.component.d.ts +1 -1
  316. package/protocol-opcua/opcua-server-list.component.d.ts.map +1 -1
  317. package/protocol-opcua/opcua-servers.component.d.ts +1 -1
  318. package/protocol-opcua/opcua-servers.component.d.ts.map +1 -1
  319. package/repository/configuration/device-tab/configuration-filter.pipe.d.ts +1 -1
  320. package/repository/configuration/device-tab/configuration-filter.pipe.d.ts.map +1 -1
  321. package/repository/configuration/device-tab/configuration-preview.component.d.ts +1 -1
  322. package/repository/configuration/device-tab/configuration-preview.component.d.ts.map +1 -1
  323. package/repository/configuration/device-tab/configuration-repository-device-tab.module.d.ts +11 -13
  324. package/repository/configuration/device-tab/configuration-repository-device-tab.module.d.ts.map +1 -1
  325. package/repository/configuration/device-tab/device-configuration-list.component.d.ts +1 -1
  326. package/repository/configuration/device-tab/device-configuration-list.component.d.ts.map +1 -1
  327. package/repository/configuration/device-tab/device-configuration.component.d.ts +1 -1
  328. package/repository/configuration/device-tab/device-configuration.component.d.ts.map +1 -1
  329. package/repository/configuration/device-tab/save-to-repository.component.d.ts +1 -1
  330. package/repository/configuration/device-tab/save-to-repository.component.d.ts.map +1 -1
  331. package/repository/configuration/device-tab/source-code-preview.component.d.ts +1 -1
  332. package/repository/configuration/device-tab/source-code-preview.component.d.ts.map +1 -1
  333. package/repository/configuration/device-tab/text-based-configuration.component.d.ts +1 -1
  334. package/repository/configuration/device-tab/text-based-configuration.component.d.ts.map +1 -1
  335. package/repository/configuration/list/configuration-detail.component.d.ts +1 -1
  336. package/repository/configuration/list/configuration-detail.component.d.ts.map +1 -1
  337. package/repository/configuration/list/configuration-list.component.d.ts +1 -1
  338. package/repository/configuration/list/configuration-list.component.d.ts.map +1 -1
  339. package/repository/configuration/list/configuration-repository-list.module.d.ts +4 -7
  340. package/repository/configuration/list/configuration-repository-list.module.d.ts.map +1 -1
  341. package/repository/firmware/device-tab/firmware-device-tab.component.d.ts +1 -1
  342. package/repository/firmware/device-tab/firmware-device-tab.component.d.ts.map +1 -1
  343. package/repository/firmware/device-tab/firmware-repository-device-tab.module.d.ts +4 -6
  344. package/repository/firmware/device-tab/firmware-repository-device-tab.module.d.ts.map +1 -1
  345. package/repository/firmware/list/add-firmware-modal.component.d.ts +1 -1
  346. package/repository/firmware/list/add-firmware-modal.component.d.ts.map +1 -1
  347. package/repository/firmware/list/add-firmware-patch-modal.component.d.ts +1 -1
  348. package/repository/firmware/list/add-firmware-patch-modal.component.d.ts.map +1 -1
  349. package/repository/firmware/list/firmware-details.component.d.ts +1 -1
  350. package/repository/firmware/list/firmware-details.component.d.ts.map +1 -1
  351. package/repository/firmware/list/firmware-list.component.d.ts +1 -1
  352. package/repository/firmware/list/firmware-list.component.d.ts.map +1 -1
  353. package/repository/firmware/list/firmware-repository-list.module.d.ts +6 -11
  354. package/repository/firmware/list/firmware-repository-list.module.d.ts.map +1 -1
  355. package/repository/shared/file-download/file-download.component.d.ts +1 -1
  356. package/repository/shared/file-download/file-download.component.d.ts.map +1 -1
  357. package/repository/shared/select-modal/repository-select-modal.component.d.ts +1 -1
  358. package/repository/shared/select-modal/repository-select-modal.component.d.ts.map +1 -1
  359. package/repository/shared/shared-repository.module.d.ts +1 -4
  360. package/repository/shared/shared-repository.module.d.ts.map +1 -1
  361. package/repository/shared/software-type/software-type.component.d.ts +1 -1
  362. package/repository/shared/software-type/software-type.component.d.ts.map +1 -1
  363. package/repository/software/device-tab/device-software-changes.component.d.ts +1 -1
  364. package/repository/software/device-tab/device-software-changes.component.d.ts.map +1 -1
  365. package/repository/software/device-tab/device-software-list.component.d.ts +1 -1
  366. package/repository/software/device-tab/device-software-list.component.d.ts.map +1 -1
  367. package/repository/software/device-tab/installed-software.component.d.ts +1 -1
  368. package/repository/software/device-tab/installed-software.component.d.ts.map +1 -1
  369. package/repository/software/device-tab/software-device-tab.component.d.ts +1 -1
  370. package/repository/software/device-tab/software-device-tab.component.d.ts.map +1 -1
  371. package/repository/software/device-tab/software-repository-device-tab.module.d.ts +7 -11
  372. package/repository/software/device-tab/software-repository-device-tab.module.d.ts.map +1 -1
  373. package/repository/software/list/add-software-modal.component.d.ts +1 -1
  374. package/repository/software/list/add-software-modal.component.d.ts.map +1 -1
  375. package/repository/software/list/software-details.component.d.ts +1 -1
  376. package/repository/software/list/software-details.component.d.ts.map +1 -1
  377. package/repository/software/list/software-list.component.d.ts +1 -1
  378. package/repository/software/list/software-list.component.d.ts.map +1 -1
  379. package/repository/software/list/software-repository-list.module.d.ts +5 -11
  380. package/repository/software/list/software-repository-list.module.d.ts.map +1 -1
  381. package/services/services-device-tab/columns/last-updated-date.cell-renderer.component.d.ts +1 -1
  382. package/services/services-device-tab/columns/last-updated-date.cell-renderer.component.d.ts.map +1 -1
  383. package/services/services-device-tab/columns/name.cell-renderer.component.d.ts +1 -1
  384. package/services/services-device-tab/columns/name.cell-renderer.component.d.ts.map +1 -1
  385. package/services/services-device-tab/columns/status.cell-renderer.component.d.ts +1 -1
  386. package/services/services-device-tab/columns/status.cell-renderer.component.d.ts.map +1 -1
  387. package/services/services-device-tab/services-device-tab.component.d.ts +1 -1
  388. package/services/services-device-tab/services-device-tab.component.d.ts.map +1 -1
  389. package/services/services-device-tab/services-device-tab.module.d.ts +1 -4
  390. package/services/services-device-tab/services-device-tab.module.d.ts.map +1 -1
  391. package/time-context/index.d.ts +1 -0
  392. package/time-context/index.d.ts.map +1 -1
  393. package/time-context/time-context.component.d.ts +6 -3
  394. package/time-context/time-context.component.d.ts.map +1 -1
  395. package/time-context/time-context.model.d.ts +10 -0
  396. package/time-context/time-context.model.d.ts.map +1 -0
  397. package/time-context/time-context.service.d.ts +2 -6
  398. package/time-context/time-context.service.d.ts.map +1 -1
  399. package/trusted-certificates/crl/crl-settings.component.d.ts +5 -1
  400. package/trusted-certificates/crl/crl-settings.component.d.ts.map +1 -1
  401. package/trusted-certificates/factories/tabs.factory.d.ts +3 -2
  402. package/trusted-certificates/factories/tabs.factory.d.ts.map +1 -1
  403. package/trusted-certificates/factories/trusted-certificates-navigation.factory.d.ts +2 -0
  404. package/trusted-certificates/factories/trusted-certificates-navigation.factory.d.ts.map +1 -1
  405. package/trusted-certificates/list/trusted-certificate-list.component.d.ts +5 -1
  406. package/trusted-certificates/list/trusted-certificate-list.component.d.ts.map +1 -1
  407. package/trusted-certificates/trusted-certificates.guard.d.ts +11 -0
  408. package/trusted-certificates/trusted-certificates.guard.d.ts.map +1 -0
  409. package/upgrade/index.d.ts +0 -1
  410. package/upgrade/index.d.ts.map +1 -1
  411. package/upgrade/upgrade.module.d.ts.map +1 -1
  412. package/upgrade/upgraded-services/index.d.ts +1 -0
  413. package/upgrade/upgraded-services/index.d.ts.map +1 -1
  414. package/upgrade/upgraded-services/smart-rules.service.d.ts.map +1 -0
  415. package/upgrade/upgraded-services/upgraded-services.module.d.ts.map +1 -1
  416. package/user-roles/inventory-role-selector/inventory-role-selector.component.d.ts +2 -1
  417. package/user-roles/inventory-role-selector/inventory-role-selector.component.d.ts.map +1 -1
  418. package/user-roles/roles-asset-tree/roles-asset-tree.component.d.ts +2 -1
  419. package/user-roles/roles-asset-tree/roles-asset-tree.component.d.ts.map +1 -1
  420. package/device-parameters/c8y-ngx-components-device-parameters.d.ts.map +0 -1
  421. package/device-parameters/device-parameters-list.component.d.ts +0 -22
  422. package/device-parameters/device-parameters-list.component.d.ts.map +0 -1
  423. package/device-parameters/device-parameters-tab.guard.d.ts +0 -11
  424. package/device-parameters/device-parameters-tab.guard.d.ts.map +0 -1
  425. package/device-parameters/index.d.ts +0 -2
  426. package/device-parameters/index.d.ts.map +0 -1
  427. package/fesm2022/c8y-ngx-components-device-parameters.mjs +0 -118
  428. package/fesm2022/c8y-ngx-components-device-parameters.mjs.map +0 -1
  429. package/upgrade/smart-rules.service.d.ts.map +0 -1
  430. /package/upgrade/{smart-rules.service.d.ts → upgraded-services/smart-rules.service.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-operations-bulk-operation-list-item.mjs","sources":["../../operations/bulk-operation-list-item/bulk-operation-list-item.model.ts","../../operations/bulk-operation-list-item/bulk-operation-wrapper.model.ts","../../operations/bulk-operation-list-item/modal-body-host.directive.ts","../../operations/bulk-operation-list-item/bulk-operation-wrapper.component.ts","../../operations/bulk-operation-list-item/bulk-operation-wrapper.component.html","../../operations/bulk-operation-list-item/bulk-operation-list-item.service.ts","../../operations/bulk-operation-list-item/modals/bulk-operations-reschedule-modal.component.ts","../../operations/bulk-operation-list-item/modals/bulk-operations-reschedule-modal.component.html","../../operations/bulk-operation-list-item/bulk-operation-list-item.component.ts","../../operations/bulk-operation-list-item/bulk-operation-list-item.component.html","../../operations/bulk-operation-list-item/bulk-operation-list-item.module.ts","../../operations/bulk-operation-list-item/c8y-ngx-components-operations-bulk-operation-list-item.ts"],"sourcesContent":["import { OperationBulkGeneralStatus } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components';\nimport { OperationStatusOption } from '@c8y/ngx-components/operations/shared';\n\nexport type OperationStatusOptionsMap = {\n [key in keyof typeof BULK_OPERATION_STATUS_LABELS]?: OperationStatusOption;\n};\n\nexport const BULK_OPERATION_STATUS_LABELS = {\n SCHEDULED: gettext('Scheduled'),\n EXECUTING: gettext('Executing'),\n CANCELED: gettext('Canceled'),\n FAILED: gettext('Completed with failures'),\n SUCCESSFUL: gettext('Completed successfully'),\n DELETED: gettext('Deleted')\n};\n\nexport const BULK_OPERATION_STATUS_OPTIONS: OperationStatusOptionsMap = {\n SCHEDULED: {\n label: BULK_OPERATION_STATUS_LABELS.SCHEDULED,\n generalStatuses: [OperationBulkGeneralStatus.SCHEDULED],\n icon: 'calendar',\n styleClass: 'text-info'\n },\n EXECUTING: {\n label: BULK_OPERATION_STATUS_LABELS.EXECUTING,\n generalStatuses: [\n OperationBulkGeneralStatus.EXECUTING,\n OperationBulkGeneralStatus.EXECUTING_WITH_ERROR\n ],\n icon: 'refresh',\n styleClass: 'text-primary'\n },\n DELETED: {\n label: BULK_OPERATION_STATUS_LABELS.DELETED,\n generalStatuses: [OperationBulkGeneralStatus.DELETED],\n icon: 'delete-document',\n styleClass: 'text-muted'\n },\n CANCELED: {\n label: BULK_OPERATION_STATUS_LABELS.CANCELED,\n generalStatuses: [OperationBulkGeneralStatus.CANCELED],\n icon: 'ban',\n styleClass: 'text-primary'\n },\n FAILED: {\n label: BULK_OPERATION_STATUS_LABELS.FAILED,\n generalStatuses: [OperationBulkGeneralStatus.FAILED],\n icon: 'exclamation-circle',\n styleClass: 'text-danger'\n },\n SUCCESSFUL: {\n label: BULK_OPERATION_STATUS_LABELS.SUCCESSFUL,\n generalStatuses: [OperationBulkGeneralStatus.SUCCESSFUL],\n icon: 'check-circle',\n styleClass: 'text-success'\n }\n};\n","import { EventEmitter, InjectionToken, Type } from '@angular/core';\nimport { IOperationBulk } from '@c8y/client';\n\nexport const BULK_OPERATION_WRAPPER_MODAL_BODY_COMPONENT =\n new InjectionToken<BulkOperationDetailsModalBodyConfiguration>(\n 'BulkOperationWrapperModalBodyComponent'\n );\n\nexport interface BulkOperationDetailsModalBodyConfiguration {\n component: Type<BulkOperationDetailsModalBody>;\n config?: object;\n}\n\nexport interface BulkOperationDetailsModalBody {\n bulkOperation: Partial<IOperationBulk>;\n showFailedOperation: EventEmitter<any>;\n}\n","import { Directive, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[modalBodyHost]',\n standalone: false\n})\nexport class ModalBodyHostDirective {\n constructor(public viewContainerRef: ViewContainerRef) {}\n}\n","import { Component, Inject, Input, OnDestroy, OnInit, Optional, ViewChild } from '@angular/core';\nimport { IOperationBulk } from '@c8y/client';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { assign } from 'lodash-es';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport {\n BulkOperationDetailsModalBody,\n BulkOperationDetailsModalBodyConfiguration,\n BULK_OPERATION_WRAPPER_MODAL_BODY_COMPONENT\n} from './bulk-operation-wrapper.model';\nimport { ModalBodyHostDirective } from './modal-body-host.directive';\n@Component({\n selector: 'c8y-bulk-operations-wrapper',\n templateUrl: './bulk-operation-wrapper.component.html',\n standalone: false\n})\nexport class BulkOperationWrapperComponent implements OnInit, OnDestroy {\n @Input() bulkOperation: Partial<IOperationBulk>;\n\n @ViewChild(ModalBodyHostDirective, { static: true })\n modalBodyHost: ModalBodyHostDirective;\n\n private destroyed$: Subject<void> = new Subject();\n\n constructor(\n public bulkOperationsService: BulkOperationsService,\n public modalRef: BsModalRef,\n private modalService: BsModalService,\n @Optional()\n @Inject(BULK_OPERATION_WRAPPER_MODAL_BODY_COMPONENT)\n private modalBodyConfig: BulkOperationDetailsModalBodyConfiguration\n ) {}\n\n ngOnInit(): void {\n if (this.modalBodyConfig) {\n const componentRef =\n this.modalBodyHost.viewContainerRef.createComponent<BulkOperationDetailsModalBody>(\n this.modalBodyConfig.component\n );\n assign(componentRef.instance, this.modalBodyConfig.config);\n componentRef.instance.bulkOperation = this.bulkOperation;\n componentRef.instance.showFailedOperation\n .pipe(takeUntil(this.destroyed$))\n .subscribe(event => this.openDetails(event));\n }\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n\n // openDetails function needs to be defined in the both places (component and the service) to avoid circular dependency.\n async openDetails(bulkOperationId: string | number) {\n const bulkOperation: IOperationBulk = (\n await this.bulkOperationsService.getBulkOperationById(bulkOperationId)\n ).data;\n const initialState = { bulkOperation };\n this.modalService.show(BulkOperationWrapperComponent, {\n initialState,\n class: 'modal-lg',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title'\n });\n }\n}\n","<div class=\"viewport-modal\">\n <div class=\"modal-header\">\n <h3 id=\"modal-title\">{{ 'Bulk operation details' | translate }}</h3>\n </div>\n\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <ng-container modalBodyHost></ng-container>\n </div>\n\n <div class=\"modal-footer\">\n <button\n title=\"{{ 'Close' | translate }}\"\n type=\"button\"\n class=\"btn btn-default\"\n (click)=\"modalRef.hide()\"\n >\n {{ 'Close' | translate }}\n </button>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { IOperationBulk } from '@c8y/client';\nimport { BulkOperationModalDetailsService } from '@c8y/ngx-components/operations/bulk-operation-modal-details';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { BulkOperationWrapperComponent } from './bulk-operation-wrapper.component';\n\n@Injectable({ providedIn: 'root' })\nexport class BulkOperationListItemService implements BulkOperationModalDetailsService {\n constructor(\n private bulkOperationsService: BulkOperationsService,\n private modalService: BsModalService\n ) {}\n\n async openDetails(bulkOperationId: string | number) {\n const bulkOperation: IOperationBulk = (\n await this.bulkOperationsService.getBulkOperationById(bulkOperationId)\n ).data;\n const initialState = { bulkOperation };\n this.modalService.show(BulkOperationWrapperComponent, {\n initialState,\n class: 'modal-lg',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title'\n });\n }\n}\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { IOperationBulk } from '@c8y/client';\nimport { AlertService, GainsightService, gettext } from '@c8y/ngx-components';\nimport { OperationSchedule } from '@c8y/ngx-components/operations/bulk-operation-scheduler';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { BULK_OPERATION_EVENT } from '@c8y/ngx-components/operations/product-experience';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Subject } from 'rxjs';\n@Component({\n selector: 'c8y-bulk-operations-reschedule-modal',\n templateUrl: 'bulk-operations-reschedule-modal.component.html',\n standalone: false\n})\nexport class BulkOperationsRescheduleModalComponent implements OnInit {\n BULK_OPERATION_EVENT = BULK_OPERATION_EVENT;\n closeSubject: Subject<IOperationBulk> = new Subject();\n dateAndDelay: OperationSchedule;\n bulkOperation: Partial<IOperationBulk>;\n isRetryOperation: boolean;\n modalTitle: string;\n\n private readonly CARRIAGE_RETURN_CODE = 'Escape';\n\n constructor(\n public bsModalRef: BsModalRef,\n private bulkOperationsService: BulkOperationsService,\n private alert: AlertService,\n private gainsightService: GainsightService\n ) {}\n\n @HostListener('window:keyup', ['$event'])\n onKeyUp(event: KeyboardEvent) {\n if (event.code === this.CARRIAGE_RETURN_CODE) {\n this.gainsightService.triggerEvent('modalDialog', {\n title: this.modalTitle,\n result: 'Cancel'\n });\n }\n }\n\n ngOnInit() {\n this.modalTitle = this.getTitle();\n }\n\n onDateAndDelaySelect($event) {\n this.dateAndDelay = $event;\n }\n\n getTitle() {\n return this.isRetryOperation ? gettext('Retry operation') : gettext('Edit schedule');\n }\n\n onCancel() {\n this.bsModalRef.hide();\n }\n\n async onSave() {\n let newBulkOperation;\n this.bulkOperation.startDate = this.dateAndDelay.scheduledDate.toISOString();\n this.bulkOperation.creationRamp = this.dateAndDelay.delayInSeconds;\n\n if (this.isRetryOperation) {\n try {\n newBulkOperation = await this.bulkOperationsService.createBulkOperation(this.bulkOperation);\n this.alert.success(gettext('Successfully rescheduled for a retry.'));\n } catch (er) {\n this.alert.addServerFailure(er);\n }\n } else {\n try {\n newBulkOperation = await this.bulkOperationsService.updateBulkOperation(this.bulkOperation);\n this.alert.success(gettext('Successfully rescheduled.'));\n } catch (er) {\n this.alert.addServerFailure(er);\n }\n }\n\n // send back to component from which modal was called\n this.closeSubject.next(newBulkOperation.data);\n this.bsModalRef.hide();\n }\n}\n","<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i c8yIcon=\"c8y-energy\"></i>\n <h4 id=\"modal-title\">{{ modalTitle | translate }}</h4>\n </div>\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <div class=\"modal-body\">\n <div class=\"text-center\">\n <c8y-operation-summary\n [description]=\"bulkOperation.operationPrototype.description\"\n ></c8y-operation-summary>\n </div>\n <div class=\"p-t-16 center-block\" style=\"max-width: 300px\">\n <c8y-operation-scheduler\n [(ngModel)]=\"dateAndDelay\"\n #scheduler=\"ngModel\"\n ></c8y-operation-scheduler>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button\n (click)=\"onCancel()\"\n type=\"button\"\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n c8yProductExperience\n [actionName]=\"BULK_OPERATION_EVENT\"\n [actionData]=\"{ title: modalTitle, result: 'Cancel' }\"\n >\n <span translate>Cancel</span>\n </button>\n <button\n id=\"save-btn\"\n (click)=\"onSave()\"\n type=\"button\"\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n [disabled]=\"scheduler?.control?.errors\"\n c8yProductExperience\n [actionName]=\"BULK_OPERATION_EVENT\"\n [actionData]=\"{ title: modalTitle, result: 'Save' }\"\n >\n <span translate>Save</span>\n </button>\n </div>\n</div>\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { IOperationBulk, OperationBulkGeneralStatus } from '@c8y/client';\nimport {\n AlertService,\n gettext,\n ListItemComponent,\n ModalService,\n Status\n} from '@c8y/ngx-components';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { BULK_OPERATION_EVENT } from '@c8y/ngx-components/operations/product-experience';\nimport { assign, cloneDeep, find, values } from 'lodash-es';\nimport { BsModalRef, BsModalService, ModalOptions } from 'ngx-bootstrap/modal';\nimport {\n BULK_OPERATION_STATUS_OPTIONS,\n OperationStatusOptionsMap\n} from './bulk-operation-list-item.model';\nimport { BulkOperationListItemService } from './bulk-operation-list-item.service';\nimport { BulkOperationsRescheduleModalComponent } from './modals/bulk-operations-reschedule-modal.component';\n\n@Component({\n selector: 'c8y-bulk-operation-list-item',\n templateUrl: './bulk-operation-list-item.component.html',\n standalone: false\n})\nexport class BulkOperationListItemComponent implements OnInit, OnChanges {\n BULK_OPERATION_EVENT = BULK_OPERATION_EVENT;\n @Input()\n bulkOperation: Partial<IOperationBulk>;\n @Input()\n detailsCollapsed = true;\n @Input()\n readOnly = false;\n @Output() showFailedOperation = new EventEmitter();\n @Output() reload: EventEmitter<any> = new EventEmitter();\n @ViewChild('listItem', { static: true }) listItem: ListItemComponent;\n iconClass: string;\n finishDate: number;\n refreshLoading = false;\n bulkOperationGeneralStatus = OperationBulkGeneralStatus;\n BULK_OPERATION_STATUS_OPTIONS: OperationStatusOptionsMap = BULK_OPERATION_STATUS_OPTIONS;\n bsModalRef: BsModalRef;\n finishDatePopoverText: string = gettext(\n 'Approximate date, estimated based on the bulk operation settings.'\n );\n progressBarClass = 'progress';\n progressBarColor: string;\n progressBarStatus = 0;\n\n constructor(\n public bulkOperationListItemService: BulkOperationListItemService,\n private bulkOperationsService: BulkOperationsService,\n private modal: ModalService,\n private alert: AlertService,\n private bsModalService: BsModalService\n ) {}\n\n ngOnInit() {\n this.finishDate = this.calculateFinishDateMs();\n this.setProgressBar();\n }\n\n getOperationStatusOptions() {\n const statusOptions = values(BULK_OPERATION_STATUS_OPTIONS);\n return find(statusOptions, options =>\n options.generalStatuses.includes(this.bulkOperation.generalStatus)\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.bulkOperation && !changes.bulkOperation.firstChange) {\n this.setProgressBar();\n }\n }\n calculateFinishDateMs(): number {\n const startDateMs: number = new Date(this.bulkOperation.startDate).getTime();\n const creationRampMs: number = this.bulkOperation.creationRamp * 1000;\n\n return startDateMs + creationRampMs * this.bulkOperation.progress.all;\n }\n\n progressBarProgressFn() {\n return (\n ((this.bulkOperation.progress.successful + this.bulkOperation.progress.failed) /\n this.bulkOperation.progress.all) *\n 100\n );\n }\n\n setProgressBar() {\n const staticContentOfClass = 'progress-bar progress-striped active progress-bar';\n\n const progressBarState = {\n EXECUTING: {\n progressBarClass: 'progress progress-striped active',\n progressBarColor: `${staticContentOfClass}-primary`,\n progressBarStatus: this.progressBarProgressFn()\n },\n EXECUTING_WITH_ERROR: {\n progressBarClass: 'progress progress-striped active',\n progressBarColor: `${staticContentOfClass}-danger`,\n progressBarStatus: this.progressBarProgressFn()\n },\n FAILED: {\n progressBarClass: 'progress',\n progressBarColor: `${staticContentOfClass}-danger`,\n progressBarStatus: 100\n },\n SUCCESSFUL: {\n progressBarClass: 'progress',\n progressBarColor: `${staticContentOfClass}-success`,\n progressBarStatus: 100\n }\n };\n\n assign(this, progressBarState[this.bulkOperation.generalStatus]);\n }\n\n editSchedule() {\n const rescheduledOperation = cloneDeep(this.bulkOperation);\n const initialState = {\n bulkOperation: rescheduledOperation\n };\n const modalOptions = {\n initialState,\n class: 'modal-sm',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n backdrop: 'static'\n } as ModalOptions;\n this.bsModalRef = this.bsModalService.show(\n BulkOperationsRescheduleModalComponent,\n modalOptions\n );\n }\n\n async cancelBulkOperation() {\n try {\n await this.modal.confirm(\n gettext('Cancel bulk operation'),\n gettext('You are about to cancel the bulk operation. Do you want to proceed?'),\n Status.DANGER,\n {},\n {},\n { eventName: BULK_OPERATION_EVENT }\n );\n await this.bulkOperationsService.deleteBulkOperation(this.bulkOperation.id);\n this.reload.emit();\n this.alert.success(gettext('Operation canceled.'));\n } catch (er) {\n this.alert.addServerFailure(er);\n }\n }\n\n retryFailedOperation() {\n const clonedBulk = cloneDeep(this.bulkOperation);\n\n // change the id to failedparentId similar to the logic in deviceBulkControl.service.js\n delete clonedBulk.groupId;\n clonedBulk.failedParentId = this.bulkOperation.id;\n\n // show reschdedule modal:\n const initialState = {\n bulkOperation: clonedBulk,\n isRetryOperation: true\n };\n const modalOptions = { initialState, class: 'modal-sm', backdrop: 'static' } as ModalOptions;\n this.bsModalRef = this.bsModalService.show(\n BulkOperationsRescheduleModalComponent,\n modalOptions\n );\n this.bsModalRef.content.closeSubject.subscribe(() => {\n this.reload.emit();\n });\n }\n\n async setToSuccessful() {\n try {\n await this.modal.confirm(\n gettext('Set manually bulk operation to SUCCESSFUL'),\n gettext(\n 'You are about to change the bulk operation status to SUCCESSFUL. Do you want to proceed?'\n ),\n Status.DANGER,\n {},\n {},\n { eventName: BULK_OPERATION_EVENT }\n );\n\n await this.bulkOperationsService.updateBulkOperation({\n id: this.bulkOperation.id,\n generalStatus: OperationBulkGeneralStatus.SUCCESSFUL\n });\n this.reload.emit();\n this.alert.success(gettext('Operation status changed to SUCCESSFUL.'));\n } catch (er) {\n this.alert.addServerFailure(er);\n }\n }\n\n openFailedOperation(failedParentId) {\n this.showFailedOperation.emit(failedParentId);\n }\n\n isStatusScheduled() {\n return this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.SCHEDULED;\n }\n\n isStatusExecutingOrExecutingWithError() {\n return (\n this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.EXECUTING ||\n this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.EXECUTING_WITH_ERROR\n );\n }\n\n allOperationsCreated() {\n return (\n this.bulkOperation.progress.all ===\n this.bulkOperation.progress.executing +\n this.bulkOperation.progress.failed +\n this.bulkOperation.progress.pending +\n this.bulkOperation.progress.successful\n );\n }\n\n isStatusCanceled() {\n return this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.CANCELED;\n }\n\n isStatusFailed() {\n return this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.FAILED;\n }\n}\n","<c8y-li\n class=\"c8y-list__item--double-actions\"\n [ngClass]=\"{ 'c8y-list__item--no-expand': !detailsCollapsed }\"\n [collapsed]=\"detailsCollapsed\"\n #listItem\n id=\"{{ bulkOperation.id }}\"\n>\n <c8y-li-icon>\n <i\n [c8yIcon]=\"getOperationStatusOptions().icon\"\n [ngClass]=\"getOperationStatusOptions().styleClass\"\n [tooltip]=\"getOperationStatusOptions().label | translate\"\n ></i>\n </c8y-li-icon>\n <div [ngClass]=\"{ 'content-flex-58': !readOnly, 'content-flex-50': readOnly }\">\n <div class=\"col-5\">\n <button\n class=\"btn-clean\"\n type=\"button\"\n title=\"{{ bulkOperation.id }} - {{\n bulkOperation.operationPrototype.description | translate\n }}\"\n (click)=\"listItem.toggleCollapsed()\"\n >\n <span class=\"text-truncate\">\n <strong class=\"text-muted m-r-4\">{{ bulkOperation.id }}</strong>\n {{ bulkOperation.operationPrototype.description | translate }}\n </span>\n </button>\n </div>\n <div class=\"flex-grow\">\n <div class=\"m-t-8 visible-xs\"></div>\n <hr *ngIf=\"isStatusCanceled(); else statusNotCanceled\" class=\"m-t-16 m-b-0 visible-xs\" />\n <ng-template #statusNotCanceled>\n <div\n [class]=\"progressBarClass\"\n title=\"{{ progressBarStatus | c8yNumber: 'floor':'1.0-0' }}%\"\n >\n <div\n [class]=\"progressBarColor\"\n role=\"progressbar\"\n [attr.aria-label]=\"'Progress' | translate\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width.%]=\"progressBarStatus\"\n >\n <span *ngIf=\"progressBarStatus !== 0\">\n {{ progressBarStatus | c8yNumber: 'floor':'1.0-0' }}%\n </span>\n </div>\n </div>\n </ng-template>\n </div>\n <div class=\"col-4\">\n <div class=\"p-t-8 visible-xs\"></div>\n <small *ngIf=\"bulkOperation.progress.successful > 0\" class=\"m-r-8 icon-flex\">\n <i c8yIcon=\"check-circle\" class=\"text-success m-r-4\"></i>\n <span\n ngNonBindable\n translate\n [translateParams]=\"{ bulkOperationsCountSuccessful: bulkOperation.progress.successful }\"\n >\n {{ bulkOperationsCountSuccessful }} successful\n </span>\n </small>\n <small *ngIf=\"bulkOperation.progress.failed > 0\" class=\"m-r-8 icon-flex\">\n <i c8yIcon=\"warning\" class=\"text-danger m-r-4\"></i>\n <span\n ngNonBindable\n translate\n [translateParams]=\"{ bulkOperationsCountFailed: bulkOperation.progress.failed }\"\n >\n {{ bulkOperationsCountFailed }} failed\n </span>\n </small>\n <small *ngIf=\"bulkOperation.progress.executing > 0\" class=\"m-r-8 icon-flex\">\n <i c8yIcon=\"refresh\" class=\"text-primary m-r-4\"></i>\n <span\n ngNonBindable\n translate\n [translateParams]=\"{ bulkOperationsCountExecuting: bulkOperation.progress.executing }\"\n >\n {{ bulkOperationsCountExecuting }} executing\n </span>\n </small>\n <small *ngIf=\"bulkOperation.progress.pending > 0\" class=\"m-r-8 icon-flex\">\n <i c8yIcon=\"clock-o\" class=\"text-primary m-r-4\"></i>\n <span\n ngNonBindable\n translate\n [translateParams]=\"{ bulkOperationsCountPending: bulkOperation.progress.pending }\"\n >\n {{ bulkOperationsCountPending }} pending\n </span>\n </small>\n </div>\n </div>\n <div class=\"c8y-list__item__footer\">\n <div class=\"m-r-16\">\n <span class=\"text-label-small m-r-4\" translate>Start</span>\n <small class=\"icon-flex\">\n <i c8yIcon=\"calendar\" class=\"m-r-4\"></i>\n <span>\n {{ bulkOperation.startDate | c8yDate }}\n </span>\n </small>\n </div>\n <div class=\"m-r-16\" *ngIf=\"bulkOperationGeneralStatus.CANCELED !== bulkOperation.generalStatus\">\n <span class=\"text-label-small m-r-4\" translate>Finish</span>\n\n <small class=\"icon-flex\">\n <i c8yIcon=\"calendar\" class=\"m-r-4\"></i>\n <span>{{ finishDate | c8yDate }}</span>\n </small>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ finishDatePopoverText | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n *ngIf=\"isStatusScheduled() || isStatusExecutingOrExecutingWithError()\"\n ></button>\n </div>\n </div>\n <ng-container *ngIf=\"!readOnly\">\n <c8y-li-action\n *ngIf=\"isStatusScheduled()\"\n label=\"{{ 'Edit schedule' | translate }}\"\n (click)=\"editSchedule()\"\n icon=\"pencil\"\n c8yProductExperience\n [actionName]=\"BULK_OPERATION_EVENT\"\n ></c8y-li-action>\n <c8y-li-action\n *ngIf=\"\n isStatusScheduled() || (isStatusExecutingOrExecutingWithError() && !allOperationsCreated())\n \"\n label=\"{{ 'Cancel bulk operation' | translate }}\"\n (click)=\"cancelBulkOperation()\"\n icon=\"remove\"\n c8yProductExperience\n [actionName]=\"BULK_OPERATION_EVENT\"\n ></c8y-li-action>\n <c8y-li-action\n *ngIf=\"isStatusFailed()\"\n label=\"{{ 'Retry failed operations' | translate }}\"\n (click)=\"retryFailedOperation()\"\n icon=\"repeat\"\n c8yProductExperience\n [actionName]=\"BULK_OPERATION_EVENT\"\n ></c8y-li-action>\n <c8y-li-action\n *ngIf=\"isStatusFailed()\"\n label=\"{{ 'Set operation to SUCCESSFUL' | translate }}\"\n (click)=\"setToSuccessful()\"\n icon=\"check-circle\"\n c8yProductExperience\n [actionName]=\"BULK_OPERATION_EVENT\"\n ></c8y-li-action>\n </ng-container>\n <c8y-li-collapse class=\"m-b-16\">\n <c8y-operation-details-tabs\n *ngIf=\"!listItem.collapsed\"\n [operation]=\"bulkOperation\"\n [readOnly]=\"readOnly\"\n (onRetryFailedOperations)=\"retryFailedOperation()\"\n (showFailedOperation)=\"openFailedOperation($event)\"\n [bulkOperationModalDetailsService]=\"bulkOperationListItemService\"\n ></c8y-operation-details-tabs>\n </c8y-li-collapse>\n</c8y-li>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { BulkOperationSchedulerModule } from '@c8y/ngx-components/operations/bulk-operation-scheduler';\nimport { OperationSummaryModule } from '@c8y/ngx-components/operations/operation-summary';\nimport { OperationsListItemDetailsModule } from '@c8y/ngx-components/operations/operations-list-item-details';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { BulkOperationListItemComponent } from './bulk-operation-list-item.component';\nimport { BulkOperationListItemService } from './bulk-operation-list-item.service';\nimport { BulkOperationWrapperComponent } from './bulk-operation-wrapper.component';\nimport { BULK_OPERATION_WRAPPER_MODAL_BODY_COMPONENT } from './bulk-operation-wrapper.model';\nimport { ModalBodyHostDirective } from './modal-body-host.directive';\nimport { BulkOperationsRescheduleModalComponent } from './modals/bulk-operations-reschedule-modal.component';\n\n/**\n * This module allows for displaying the list item of a bulk operation with its details.\n */\n@NgModule({\n imports: [\n CoreModule,\n PopoverModule,\n TooltipModule,\n OperationSummaryModule,\n BulkOperationSchedulerModule,\n OperationsListItemDetailsModule\n ],\n providers: [\n BulkOperationListItemService,\n {\n provide: BULK_OPERATION_WRAPPER_MODAL_BODY_COMPONENT,\n useValue: {\n component: BulkOperationListItemComponent,\n config: { detailsCollapsed: false, readOnly: true }\n }\n }\n ],\n declarations: [\n BulkOperationListItemComponent,\n BulkOperationsRescheduleModalComponent,\n BulkOperationWrapperComponent,\n ModalBodyHostDirective\n ],\n exports: [\n BulkOperationListItemComponent,\n BulkOperationsRescheduleModalComponent,\n BulkOperationWrapperComponent\n ]\n})\nexport class BulkOperationListItemModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3.ModalBodyHostDirective","i4","i1","i2","i1.BulkOperationListItemService","i5","i6"],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-operations-bulk-operation-list-item.mjs","sources":["../../operations/bulk-operation-list-item/bulk-operation-list-item.model.ts","../../operations/bulk-operation-list-item/bulk-operation-wrapper.model.ts","../../operations/bulk-operation-list-item/modal-body-host.directive.ts","../../operations/bulk-operation-list-item/bulk-operation-wrapper.component.ts","../../operations/bulk-operation-list-item/bulk-operation-wrapper.component.html","../../operations/bulk-operation-list-item/bulk-operation-list-item.service.ts","../../operations/bulk-operation-list-item/modals/bulk-operations-reschedule-modal.component.ts","../../operations/bulk-operation-list-item/modals/bulk-operations-reschedule-modal.component.html","../../operations/bulk-operation-list-item/bulk-operation-list-item.component.ts","../../operations/bulk-operation-list-item/bulk-operation-list-item.component.html","../../operations/bulk-operation-list-item/bulk-operation-list-item.module.ts","../../operations/bulk-operation-list-item/c8y-ngx-components-operations-bulk-operation-list-item.ts"],"sourcesContent":["import { OperationBulkGeneralStatus } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components';\nimport { OperationStatusOption } from '@c8y/ngx-components/operations/shared';\n\nexport type OperationStatusOptionsMap = {\n [key in keyof typeof BULK_OPERATION_STATUS_LABELS]?: OperationStatusOption;\n};\n\nexport const BULK_OPERATION_STATUS_LABELS = {\n SCHEDULED: gettext('Scheduled'),\n EXECUTING: gettext('Executing'),\n CANCELED: gettext('Canceled'),\n FAILED: gettext('Completed with failures'),\n SUCCESSFUL: gettext('Completed successfully'),\n DELETED: gettext('Deleted')\n};\n\nexport const BULK_OPERATION_STATUS_OPTIONS: OperationStatusOptionsMap = {\n SCHEDULED: {\n label: BULK_OPERATION_STATUS_LABELS.SCHEDULED,\n generalStatuses: [OperationBulkGeneralStatus.SCHEDULED],\n icon: 'calendar',\n styleClass: 'text-info'\n },\n EXECUTING: {\n label: BULK_OPERATION_STATUS_LABELS.EXECUTING,\n generalStatuses: [\n OperationBulkGeneralStatus.EXECUTING,\n OperationBulkGeneralStatus.EXECUTING_WITH_ERROR\n ],\n icon: 'refresh',\n styleClass: 'text-primary'\n },\n DELETED: {\n label: BULK_OPERATION_STATUS_LABELS.DELETED,\n generalStatuses: [OperationBulkGeneralStatus.DELETED],\n icon: 'delete-document',\n styleClass: 'text-muted'\n },\n CANCELED: {\n label: BULK_OPERATION_STATUS_LABELS.CANCELED,\n generalStatuses: [OperationBulkGeneralStatus.CANCELED],\n icon: 'ban',\n styleClass: 'text-primary'\n },\n FAILED: {\n label: BULK_OPERATION_STATUS_LABELS.FAILED,\n generalStatuses: [OperationBulkGeneralStatus.FAILED],\n icon: 'exclamation-circle',\n styleClass: 'text-danger'\n },\n SUCCESSFUL: {\n label: BULK_OPERATION_STATUS_LABELS.SUCCESSFUL,\n generalStatuses: [OperationBulkGeneralStatus.SUCCESSFUL],\n icon: 'check-circle',\n styleClass: 'text-success'\n }\n};\n","import { EventEmitter, InjectionToken, Type } from '@angular/core';\nimport { IOperationBulk } from '@c8y/client';\n\nexport const BULK_OPERATION_WRAPPER_MODAL_BODY_COMPONENT =\n new InjectionToken<BulkOperationDetailsModalBodyConfiguration>(\n 'BulkOperationWrapperModalBodyComponent'\n );\n\nexport interface BulkOperationDetailsModalBodyConfiguration {\n component: Type<BulkOperationDetailsModalBody>;\n config?: object;\n}\n\nexport interface BulkOperationDetailsModalBody {\n bulkOperation: Partial<IOperationBulk>;\n showFailedOperation: EventEmitter<any>;\n}\n","import { Directive, ViewContainerRef } from '@angular/core';\n\n@Directive({ selector: '[modalBodyHost]' })\nexport class ModalBodyHostDirective {\n constructor(public viewContainerRef: ViewContainerRef) {}\n}\n","import { Component, Inject, Input, OnDestroy, OnInit, Optional, ViewChild } from '@angular/core';\nimport { IOperationBulk } from '@c8y/client';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { assign } from 'lodash-es';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport {\n BulkOperationDetailsModalBody,\n BulkOperationDetailsModalBodyConfiguration,\n BULK_OPERATION_WRAPPER_MODAL_BODY_COMPONENT\n} from './bulk-operation-wrapper.model';\nimport { ModalBodyHostDirective } from './modal-body-host.directive';\nimport { C8yTranslatePipe } from '@c8y/ngx-components';\n@Component({\n selector: 'c8y-bulk-operations-wrapper',\n templateUrl: './bulk-operation-wrapper.component.html',\n imports: [ModalBodyHostDirective, C8yTranslatePipe]\n})\nexport class BulkOperationWrapperComponent implements OnInit, OnDestroy {\n @Input() bulkOperation: Partial<IOperationBulk>;\n\n @ViewChild(ModalBodyHostDirective, { static: true })\n modalBodyHost: ModalBodyHostDirective;\n\n private destroyed$: Subject<void> = new Subject();\n\n constructor(\n public bulkOperationsService: BulkOperationsService,\n public modalRef: BsModalRef,\n private modalService: BsModalService,\n @Optional()\n @Inject(BULK_OPERATION_WRAPPER_MODAL_BODY_COMPONENT)\n private modalBodyConfig: BulkOperationDetailsModalBodyConfiguration\n ) {}\n\n ngOnInit(): void {\n if (this.modalBodyConfig) {\n const componentRef =\n this.modalBodyHost.viewContainerRef.createComponent<BulkOperationDetailsModalBody>(\n this.modalBodyConfig.component\n );\n assign(componentRef.instance, this.modalBodyConfig.config);\n componentRef.instance.bulkOperation = this.bulkOperation;\n componentRef.instance.showFailedOperation\n .pipe(takeUntil(this.destroyed$))\n .subscribe(event => this.openDetails(event));\n }\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n\n // openDetails function needs to be defined in the both places (component and the service) to avoid circular dependency.\n async openDetails(bulkOperationId: string | number) {\n const bulkOperation: IOperationBulk = (\n await this.bulkOperationsService.getBulkOperationById(bulkOperationId)\n ).data;\n const initialState = { bulkOperation };\n this.modalService.show(BulkOperationWrapperComponent, {\n initialState,\n class: 'modal-lg',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title'\n });\n }\n}\n","<div class=\"viewport-modal\">\n <div class=\"modal-header\">\n <h3 id=\"modal-title\">{{ 'Bulk operation details' | translate }}</h3>\n </div>\n\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <ng-container modalBodyHost></ng-container>\n </div>\n\n <div class=\"modal-footer\">\n <button\n title=\"{{ 'Close' | translate }}\"\n type=\"button\"\n class=\"btn btn-default\"\n (click)=\"modalRef.hide()\"\n >\n {{ 'Close' | translate }}\n </button>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { IOperationBulk } from '@c8y/client';\nimport { BulkOperationModalDetailsService } from '@c8y/ngx-components/operations/bulk-operation-modal-details';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { BulkOperationWrapperComponent } from './bulk-operation-wrapper.component';\n\n@Injectable({ providedIn: 'root' })\nexport class BulkOperationListItemService implements BulkOperationModalDetailsService {\n constructor(\n private bulkOperationsService: BulkOperationsService,\n private modalService: BsModalService\n ) {}\n\n async openDetails(bulkOperationId: string | number) {\n const bulkOperation: IOperationBulk = (\n await this.bulkOperationsService.getBulkOperationById(bulkOperationId)\n ).data;\n const initialState = { bulkOperation };\n this.modalService.show(BulkOperationWrapperComponent, {\n initialState,\n class: 'modal-lg',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title'\n });\n }\n}\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { IOperationBulk } from '@c8y/client';\nimport {\n AlertService,\n GainsightService,\n gettext,\n IconDirective,\n ProductExperienceDirective,\n C8yTranslateDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport {\n OperationSchedule,\n OperationSchedulerComponent\n} from '@c8y/ngx-components/operations/bulk-operation-scheduler';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { BULK_OPERATION_EVENT } from '@c8y/ngx-components/operations/product-experience';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Subject } from 'rxjs';\nimport { OperationSummaryComponent } from '@c8y/ngx-components/operations/operation-summary';\nimport { FormsModule } from '@angular/forms';\n@Component({\n selector: 'c8y-bulk-operations-reschedule-modal',\n templateUrl: 'bulk-operations-reschedule-modal.component.html',\n imports: [\n IconDirective,\n OperationSummaryComponent,\n OperationSchedulerComponent,\n FormsModule,\n ProductExperienceDirective,\n C8yTranslateDirective,\n C8yTranslatePipe\n ]\n})\nexport class BulkOperationsRescheduleModalComponent implements OnInit {\n BULK_OPERATION_EVENT = BULK_OPERATION_EVENT;\n closeSubject: Subject<IOperationBulk> = new Subject();\n dateAndDelay: OperationSchedule;\n bulkOperation: Partial<IOperationBulk>;\n isRetryOperation: boolean;\n modalTitle: string;\n\n private readonly CARRIAGE_RETURN_CODE = 'Escape';\n\n constructor(\n public bsModalRef: BsModalRef,\n private bulkOperationsService: BulkOperationsService,\n private alert: AlertService,\n private gainsightService: GainsightService\n ) {}\n\n @HostListener('window:keyup', ['$event'])\n onKeyUp(event: KeyboardEvent) {\n if (event.code === this.CARRIAGE_RETURN_CODE) {\n this.gainsightService.triggerEvent('modalDialog', {\n title: this.modalTitle,\n result: 'Cancel'\n });\n }\n }\n\n ngOnInit() {\n this.modalTitle = this.getTitle();\n }\n\n onDateAndDelaySelect($event) {\n this.dateAndDelay = $event;\n }\n\n getTitle() {\n return this.isRetryOperation ? gettext('Retry operation') : gettext('Edit schedule');\n }\n\n onCancel() {\n this.bsModalRef.hide();\n }\n\n async onSave() {\n let newBulkOperation;\n this.bulkOperation.startDate = this.dateAndDelay.scheduledDate.toISOString();\n this.bulkOperation.creationRamp = this.dateAndDelay.delayInSeconds;\n\n if (this.isRetryOperation) {\n try {\n newBulkOperation = await this.bulkOperationsService.createBulkOperation(this.bulkOperation);\n this.alert.success(gettext('Successfully rescheduled for a retry.'));\n } catch (er) {\n this.alert.addServerFailure(er);\n }\n } else {\n try {\n newBulkOperation = await this.bulkOperationsService.updateBulkOperation(this.bulkOperation);\n this.alert.success(gettext('Successfully rescheduled.'));\n } catch (er) {\n this.alert.addServerFailure(er);\n }\n }\n\n // send back to component from which modal was called\n this.closeSubject.next(newBulkOperation.data);\n this.bsModalRef.hide();\n }\n}\n","<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i c8yIcon=\"c8y-energy\"></i>\n <h4 id=\"modal-title\">{{ modalTitle | translate }}</h4>\n </div>\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <div class=\"modal-body\">\n <div class=\"text-center\">\n <c8y-operation-summary\n [description]=\"bulkOperation.operationPrototype.description\"\n ></c8y-operation-summary>\n </div>\n <div class=\"p-t-16 center-block\" style=\"max-width: 300px\">\n <c8y-operation-scheduler\n [(ngModel)]=\"dateAndDelay\"\n #scheduler=\"ngModel\"\n ></c8y-operation-scheduler>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button\n (click)=\"onCancel()\"\n type=\"button\"\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n c8yProductExperience\n [actionName]=\"BULK_OPERATION_EVENT\"\n [actionData]=\"{ title: modalTitle, result: 'Cancel' }\"\n >\n <span translate>Cancel</span>\n </button>\n <button\n id=\"save-btn\"\n (click)=\"onSave()\"\n type=\"button\"\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n [disabled]=\"scheduler?.control?.errors\"\n c8yProductExperience\n [actionName]=\"BULK_OPERATION_EVENT\"\n [actionData]=\"{ title: modalTitle, result: 'Save' }\"\n >\n <span translate>Save</span>\n </button>\n </div>\n</div>\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { IOperationBulk, OperationBulkGeneralStatus } from '@c8y/client';\nimport {\n AlertService,\n gettext,\n ListItemComponent,\n ModalService,\n Status,\n ListItemIconComponent,\n IconDirective,\n C8yTranslateDirective,\n ListItemActionComponent,\n ProductExperienceDirective,\n ListItemCollapseComponent,\n C8yTranslatePipe,\n DatePipe,\n NumberPipe\n} from '@c8y/ngx-components';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { BULK_OPERATION_EVENT } from '@c8y/ngx-components/operations/product-experience';\nimport { assign, cloneDeep, find, values } from 'lodash-es';\nimport { BsModalRef, BsModalService, ModalOptions } from 'ngx-bootstrap/modal';\nimport {\n BULK_OPERATION_STATUS_OPTIONS,\n OperationStatusOptionsMap\n} from './bulk-operation-list-item.model';\nimport { BulkOperationListItemService } from './bulk-operation-list-item.service';\nimport { BulkOperationsRescheduleModalComponent } from './modals/bulk-operations-reschedule-modal.component';\nimport { NgClass, NgIf } from '@angular/common';\nimport { TooltipDirective } from 'ngx-bootstrap/tooltip';\nimport { PopoverDirective } from 'ngx-bootstrap/popover';\nimport { OperationDetailsTabsComponent } from '@c8y/ngx-components/operations/operations-list-item-details';\n\n@Component({\n selector: 'c8y-bulk-operation-list-item',\n templateUrl: './bulk-operation-list-item.component.html',\n imports: [\n ListItemComponent,\n NgClass,\n ListItemIconComponent,\n IconDirective,\n TooltipDirective,\n NgIf,\n C8yTranslateDirective,\n PopoverDirective,\n ListItemActionComponent,\n ProductExperienceDirective,\n ListItemCollapseComponent,\n OperationDetailsTabsComponent,\n C8yTranslatePipe,\n DatePipe,\n NumberPipe\n ]\n})\nexport class BulkOperationListItemComponent implements OnInit, OnChanges {\n BULK_OPERATION_EVENT = BULK_OPERATION_EVENT;\n @Input()\n bulkOperation: Partial<IOperationBulk>;\n @Input()\n detailsCollapsed = true;\n @Input()\n readOnly = false;\n @Output() showFailedOperation = new EventEmitter();\n @Output() reload: EventEmitter<any> = new EventEmitter();\n @ViewChild('listItem', { static: true }) listItem: ListItemComponent;\n iconClass: string;\n finishDate: number;\n refreshLoading = false;\n bulkOperationGeneralStatus = OperationBulkGeneralStatus;\n BULK_OPERATION_STATUS_OPTIONS: OperationStatusOptionsMap = BULK_OPERATION_STATUS_OPTIONS;\n bsModalRef: BsModalRef;\n finishDatePopoverText: string = gettext(\n 'Approximate date, estimated based on the bulk operation settings.'\n );\n progressBarClass = 'progress';\n progressBarColor: string;\n progressBarStatus = 0;\n\n constructor(\n public bulkOperationListItemService: BulkOperationListItemService,\n private bulkOperationsService: BulkOperationsService,\n private modal: ModalService,\n private alert: AlertService,\n private bsModalService: BsModalService\n ) {}\n\n ngOnInit() {\n this.finishDate = this.calculateFinishDateMs();\n this.setProgressBar();\n }\n\n getOperationStatusOptions() {\n const statusOptions = values(BULK_OPERATION_STATUS_OPTIONS);\n return find(statusOptions, options =>\n options.generalStatuses.includes(this.bulkOperation.generalStatus)\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.bulkOperation && !changes.bulkOperation.firstChange) {\n this.setProgressBar();\n }\n }\n calculateFinishDateMs(): number {\n const startDateMs: number = new Date(this.bulkOperation.startDate).getTime();\n const creationRampMs: number = this.bulkOperation.creationRamp * 1000;\n\n return startDateMs + creationRampMs * this.bulkOperation.progress.all;\n }\n\n progressBarProgressFn() {\n return (\n ((this.bulkOperation.progress.successful + this.bulkOperation.progress.failed) /\n this.bulkOperation.progress.all) *\n 100\n );\n }\n\n setProgressBar() {\n const staticContentOfClass = 'progress-bar progress-striped active progress-bar';\n\n const progressBarState = {\n EXECUTING: {\n progressBarClass: 'progress progress-striped active',\n progressBarColor: `${staticContentOfClass}-primary`,\n progressBarStatus: this.progressBarProgressFn()\n },\n EXECUTING_WITH_ERROR: {\n progressBarClass: 'progress progress-striped active',\n progressBarColor: `${staticContentOfClass}-danger`,\n progressBarStatus: this.progressBarProgressFn()\n },\n FAILED: {\n progressBarClass: 'progress',\n progressBarColor: `${staticContentOfClass}-danger`,\n progressBarStatus: 100\n },\n SUCCESSFUL: {\n progressBarClass: 'progress',\n progressBarColor: `${staticContentOfClass}-success`,\n progressBarStatus: 100\n }\n };\n\n assign(this, progressBarState[this.bulkOperation.generalStatus]);\n }\n\n editSchedule() {\n const rescheduledOperation = cloneDeep(this.bulkOperation);\n const initialState = {\n bulkOperation: rescheduledOperation\n };\n const modalOptions = {\n initialState,\n class: 'modal-sm',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n backdrop: 'static'\n } as ModalOptions;\n this.bsModalRef = this.bsModalService.show(\n BulkOperationsRescheduleModalComponent,\n modalOptions\n );\n }\n\n async cancelBulkOperation() {\n try {\n await this.modal.confirm(\n gettext('Cancel bulk operation'),\n gettext('You are about to cancel the bulk operation. Do you want to proceed?'),\n Status.DANGER,\n {},\n {},\n { eventName: BULK_OPERATION_EVENT }\n );\n await this.bulkOperationsService.deleteBulkOperation(this.bulkOperation.id);\n this.reload.emit();\n this.alert.success(gettext('Operation canceled.'));\n } catch (er) {\n this.alert.addServerFailure(er);\n }\n }\n\n retryFailedOperation() {\n const clonedBulk = cloneDeep(this.bulkOperation);\n\n // change the id to failedparentId similar to the logic in deviceBulkControl.service.js\n delete clonedBulk.groupId;\n clonedBulk.failedParentId = this.bulkOperation.id;\n\n // show reschdedule modal:\n const initialState = {\n bulkOperation: clonedBulk,\n isRetryOperation: true\n };\n const modalOptions = { initialState, class: 'modal-sm', backdrop: 'static' } as ModalOptions;\n this.bsModalRef = this.bsModalService.show(\n BulkOperationsRescheduleModalComponent,\n modalOptions\n );\n this.bsModalRef.content.closeSubject.subscribe(() => {\n this.reload.emit();\n });\n }\n\n async setToSuccessful() {\n try {\n await this.modal.confirm(\n gettext('Set manually bulk operation to SUCCESSFUL'),\n gettext(\n 'You are about to change the bulk operation status to SUCCESSFUL. Do you want to proceed?'\n ),\n Status.DANGER,\n {},\n {},\n { eventName: BULK_OPERATION_EVENT }\n );\n\n await this.bulkOperationsService.updateBulkOperation({\n id: this.bulkOperation.id,\n generalStatus: OperationBulkGeneralStatus.SUCCESSFUL\n });\n this.reload.emit();\n this.alert.success(gettext('Operation status changed to SUCCESSFUL.'));\n } catch (er) {\n this.alert.addServerFailure(er);\n }\n }\n\n openFailedOperation(failedParentId) {\n this.showFailedOperation.emit(failedParentId);\n }\n\n isStatusScheduled() {\n return this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.SCHEDULED;\n }\n\n isStatusExecutingOrExecutingWithError() {\n return (\n this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.EXECUTING ||\n this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.EXECUTING_WITH_ERROR\n );\n }\n\n allOperationsCreated() {\n return (\n this.bulkOperation.progress.all ===\n this.bulkOperation.progress.executing +\n this.bulkOperation.progress.failed +\n this.bulkOperation.progress.pending +\n this.bulkOperation.progress.successful\n );\n }\n\n isStatusCanceled() {\n return this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.CANCELED;\n }\n\n isStatusFailed() {\n return this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.FAILED;\n }\n}\n","<c8y-li\n class=\"c8y-list__item--double-actions\"\n [ngClass]=\"{ 'c8y-list__item--no-expand': !detailsCollapsed }\"\n [collapsed]=\"detailsCollapsed\"\n #listItem\n id=\"{{ bulkOperation.id }}\"\n>\n <c8y-li-icon>\n <i\n [c8yIcon]=\"getOperationStatusOptions().icon\"\n [ngClass]=\"getOperationStatusOptions().styleClass\"\n [tooltip]=\"getOperationStatusOptions().label | translate\"\n ></i>\n </c8y-li-icon>\n <div [ngClass]=\"{ 'content-flex-58': !readOnly, 'content-flex-50': readOnly }\">\n <div class=\"col-5\">\n <button\n class=\"btn-clean\"\n type=\"button\"\n title=\"{{ bulkOperation.id }} - {{\n bulkOperation.operationPrototype.description | translate\n }}\"\n (click)=\"listItem.toggleCollapsed()\"\n >\n <span class=\"text-truncate\">\n <strong class=\"text-muted m-r-4\">{{ bulkOperation.id }}</strong>\n {{ bulkOperation.operationPrototype.description | translate }}\n </span>\n </button>\n </div>\n <div class=\"flex-grow\">\n <div class=\"m-t-8 visible-xs\"></div>\n <hr *ngIf=\"isStatusCanceled(); else statusNotCanceled\" class=\"m-t-16 m-b-0 visible-xs\" />\n <ng-template #statusNotCanceled>\n <div\n [class]=\"progressBarClass\"\n title=\"{{ progressBarStatus | c8yNumber: 'floor':'1.0-0' }}%\"\n >\n <div\n [class]=\"progressBarColor\"\n role=\"progressbar\"\n [attr.aria-label]=\"'Progress' | translate\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width.%]=\"progressBarStatus\"\n >\n <span *ngIf=\"progressBarStatus !== 0\">\n {{ progressBarStatus | c8yNumber: 'floor':'1.0-0' }}%\n </span>\n </div>\n </div>\n </ng-template>\n </div>\n <div class=\"col-4\">\n <div class=\"p-t-8 visible-xs\"></div>\n <small *ngIf=\"bulkOperation.progress.successful > 0\" class=\"m-r-8 icon-flex\">\n <i c8yIcon=\"check-circle\" class=\"text-success m-r-4\"></i>\n <span\n ngNonBindable\n translate\n [translateParams]=\"{ bulkOperationsCountSuccessful: bulkOperation.progress.successful }\"\n >\n {{ bulkOperationsCountSuccessful }} successful\n </span>\n </small>\n <small *ngIf=\"bulkOperation.progress.failed > 0\" class=\"m-r-8 icon-flex\">\n <i c8yIcon=\"warning\" class=\"text-danger m-r-4\"></i>\n <span\n ngNonBindable\n translate\n [translateParams]=\"{ bulkOperationsCountFailed: bulkOperation.progress.failed }\"\n >\n {{ bulkOperationsCountFailed }} failed\n </span>\n </small>\n <small *ngIf=\"bulkOperation.progress.executing > 0\" class=\"m-r-8 icon-flex\">\n <i c8yIcon=\"refresh\" class=\"text-primary m-r-4\"></i>\n <span\n ngNonBindable\n translate\n [translateParams]=\"{ bulkOperationsCountExecuting: bulkOperation.progress.executing }\"\n >\n {{ bulkOperationsCountExecuting }} executing\n </span>\n </small>\n <small *ngIf=\"bulkOperation.progress.pending > 0\" class=\"m-r-8 icon-flex\">\n <i c8yIcon=\"clock-o\" class=\"text-primary m-r-4\"></i>\n <span\n ngNonBindable\n translate\n [translateParams]=\"{ bulkOperationsCountPending: bulkOperation.progress.pending }\"\n >\n {{ bulkOperationsCountPending }} pending\n </span>\n </small>\n </div>\n </div>\n <div class=\"c8y-list__item__footer\">\n <div class=\"m-r-16\">\n <span class=\"text-label-small m-r-4\" translate>Start</span>\n <small class=\"icon-flex\">\n <i c8yIcon=\"calendar\" class=\"m-r-4\"></i>\n <span>\n {{ bulkOperation.startDate | c8yDate }}\n </span>\n </small>\n </div>\n <div class=\"m-r-16\" *ngIf=\"bulkOperationGeneralStatus.CANCELED !== bulkOperation.generalStatus\">\n <span class=\"text-label-small m-r-4\" translate>Finish</span>\n\n <small class=\"icon-flex\">\n <i c8yIcon=\"calendar\" class=\"m-r-4\"></i>\n <span>{{ finishDate | c8yDate }}</span>\n </small>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ finishDatePopoverText | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n *ngIf=\"isStatusScheduled() || isStatusExecutingOrExecutingWithError()\"\n ></button>\n </div>\n </div>\n <ng-container *ngIf=\"!readOnly\">\n <c8y-li-action\n *ngIf=\"isStatusScheduled()\"\n label=\"{{ 'Edit schedule' | translate }}\"\n (click)=\"editSchedule()\"\n icon=\"pencil\"\n c8yProductExperience\n [actionName]=\"BULK_OPERATION_EVENT\"\n ></c8y-li-action>\n <c8y-li-action\n *ngIf=\"\n isStatusScheduled() || (isStatusExecutingOrExecutingWithError() && !allOperationsCreated())\n \"\n label=\"{{ 'Cancel bulk operation' | translate }}\"\n (click)=\"cancelBulkOperation()\"\n icon=\"remove\"\n c8yProductExperience\n [actionName]=\"BULK_OPERATION_EVENT\"\n ></c8y-li-action>\n <c8y-li-action\n *ngIf=\"isStatusFailed()\"\n label=\"{{ 'Retry failed operations' | translate }}\"\n (click)=\"retryFailedOperation()\"\n icon=\"repeat\"\n c8yProductExperience\n [actionName]=\"BULK_OPERATION_EVENT\"\n ></c8y-li-action>\n <c8y-li-action\n *ngIf=\"isStatusFailed()\"\n label=\"{{ 'Set operation to SUCCESSFUL' | translate }}\"\n (click)=\"setToSuccessful()\"\n icon=\"check-circle\"\n c8yProductExperience\n [actionName]=\"BULK_OPERATION_EVENT\"\n ></c8y-li-action>\n </ng-container>\n <c8y-li-collapse class=\"m-b-16\">\n <c8y-operation-details-tabs\n *ngIf=\"!listItem.collapsed\"\n [operation]=\"bulkOperation\"\n [readOnly]=\"readOnly\"\n (onRetryFailedOperations)=\"retryFailedOperation()\"\n (showFailedOperation)=\"openFailedOperation($event)\"\n [bulkOperationModalDetailsService]=\"bulkOperationListItemService\"\n ></c8y-operation-details-tabs>\n </c8y-li-collapse>\n</c8y-li>\n","import { NgModule } from '@angular/core';\nimport { BulkOperationListItemComponent } from './bulk-operation-list-item.component';\nimport { BulkOperationListItemService } from './bulk-operation-list-item.service';\nimport { BulkOperationWrapperComponent } from './bulk-operation-wrapper.component';\nimport { BULK_OPERATION_WRAPPER_MODAL_BODY_COMPONENT } from './bulk-operation-wrapper.model';\nimport { ModalBodyHostDirective } from './modal-body-host.directive';\nimport { BulkOperationsRescheduleModalComponent } from './modals/bulk-operations-reschedule-modal.component';\n\n/**\n * This module allows for displaying the list item of a bulk operation with its details.\n */\n@NgModule({\n imports: [\n BulkOperationListItemComponent,\n BulkOperationsRescheduleModalComponent,\n BulkOperationWrapperComponent,\n ModalBodyHostDirective\n ],\n providers: [\n BulkOperationListItemService,\n {\n provide: BULK_OPERATION_WRAPPER_MODAL_BODY_COMPONENT,\n useValue: {\n component: BulkOperationListItemComponent,\n config: { detailsCollapsed: false, readOnly: true }\n }\n }\n ],\n exports: [\n BulkOperationListItemComponent,\n BulkOperationsRescheduleModalComponent,\n BulkOperationWrapperComponent\n ]\n})\nexport class BulkOperationListItemModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i1.BulkOperationListItemService","i4"],"mappings":"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"}
@@ -1,13 +1,13 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { forwardRef, Input, Component, NgModule } from '@angular/core';
3
3
  import * as i1 from '@angular/forms';
4
- import { Validators, NG_VALUE_ACCESSOR, NG_VALIDATORS, ReactiveFormsModule } from '@angular/forms';
4
+ import { Validators, FormsModule, ReactiveFormsModule, NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';
5
5
  import * as i2 from '@c8y/ngx-components';
6
- import { gettext, CoreModule } from '@c8y/ngx-components';
7
- import * as i3 from 'ngx-bootstrap/datepicker';
8
- import { BsDatepickerModule } from 'ngx-bootstrap/datepicker';
9
- import * as i4 from 'ngx-bootstrap/timepicker';
10
- import { TimepickerModule } from 'ngx-bootstrap/timepicker';
6
+ import { gettext, C8yTranslateDirective, FormGroupComponent, RequiredInputPlaceholderDirective, MessagesComponent, MessageDirective, C8yTranslatePipe, CoreModule } from '@c8y/ngx-components';
7
+ import * as i1$1 from 'ngx-bootstrap/datepicker';
8
+ import { BsDatepickerInputDirective, BsDatepickerDirective, BsDatepickerModule } from 'ngx-bootstrap/datepicker';
9
+ import * as i2$1 from 'ngx-bootstrap/timepicker';
10
+ import { TimepickerComponent, TimepickerModule } from 'ngx-bootstrap/timepicker';
11
11
  import { isEmpty } from 'lodash-es';
12
12
  import { throttleTime } from 'rxjs/operators';
13
13
 
@@ -208,7 +208,7 @@ class OperationSchedulerComponent {
208
208
  return { dateValidation: true };
209
209
  }
210
210
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: OperationSchedulerComponent, deps: [{ token: i1.FormBuilder }, { token: i2.OptionsService }, { token: i2.DateFormatService }], target: i0.ɵɵFactoryTarget.Component }); }
211
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: OperationSchedulerComponent, isStandalone: false, selector: "c8y-operation-scheduler", inputs: { _minutesAhead: ["minutesAhead", "_minutesAhead"] }, providers: [
211
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: OperationSchedulerComponent, isStandalone: true, selector: "c8y-operation-scheduler", inputs: { _minutesAhead: ["minutesAhead", "_minutesAhead"] }, providers: [
212
212
  {
213
213
  provide: NG_VALUE_ACCESSOR,
214
214
  multi: true,
@@ -219,7 +219,7 @@ class OperationSchedulerComponent {
219
219
  multi: true,
220
220
  useExisting: forwardRef(() => OperationSchedulerComponent)
221
221
  }
222
- ], ngImport: i0, template: "<div [formGroup]=\"fgOperationScheduler\">\n <div class=\"form-group\">\n <label translate>Start date</label>\n <div class=\"datetime-picker\">\n <c8y-form-group class=\"datepicker\">\n <input\n class=\"form-control\"\n placeholder=\"{{ placeholder | translate }}\"\n required\n formControlName=\"picker\"\n [bsConfig]=\"{ customTodayClass: 'today', dateInputFormat: dateInputFormat }\"\n [minDate]=\"minDate\"\n bsDatepicker\n (blur)=\"markAsTouched()\"\n />\n <c8y-messages>\n <c8y-message\n [name]=\"'dateValidation'\"\n [text]=\"'Select time in the future.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <timepicker\n class=\"form-group\"\n [showSpinners]=\"false\"\n [showMeridian]=\"false\"\n formControlName=\"time\"\n (blur)=\"markAsTouched()\"\n ></timepicker>\n </div>\n </div>\n <div class=\"form-group\">\n <c8y-form-group [hasError]=\"delayErrors\">\n <label translate>Delay</label>\n <div class=\"input-group\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} 15\"\n type=\"number\"\n required\n formControlName=\"delay\"\n (blur)=\"markAsTouched()\"\n />\n <div class=\"input-group-btn\">\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control m-r-sm-32 m-r-xs-56\"\n [attr.aria-label]=\"'Delay units' | translate\"\n formControlName=\"unit\"\n (blur)=\"markAsTouched()\"\n >\n <option\n value=\"seconds\"\n translate\n >\n Seconds\n </option>\n <option\n value=\"milliseconds\"\n translate\n >\n Milliseconds\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n </c8y-form-group>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i2.MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: i2.MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: i2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "ignoreMinMaxErrors", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i3.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "component", type: i4.TimepickerComponent, selector: "timepicker", inputs: ["hourStep", "minuteStep", "secondsStep", "readonlyInput", "disabled", "mousewheel", "arrowkeys", "showSpinners", "showMeridian", "showMinutes", "showSeconds", "meridians", "min", "max", "hoursPlaceholder", "minutesPlaceholder", "secondsPlaceholder"], outputs: ["isValid", "meridianChange"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] }); }
222
+ ], ngImport: i0, template: "<div [formGroup]=\"fgOperationScheduler\">\n <div class=\"form-group\">\n <label translate>Start date</label>\n <div class=\"datetime-picker\">\n <c8y-form-group class=\"datepicker\">\n <input\n class=\"form-control\"\n placeholder=\"{{ placeholder | translate }}\"\n required\n formControlName=\"picker\"\n [bsConfig]=\"{ customTodayClass: 'today', dateInputFormat: dateInputFormat }\"\n [minDate]=\"minDate\"\n bsDatepicker\n (blur)=\"markAsTouched()\"\n />\n <c8y-messages>\n <c8y-message\n [name]=\"'dateValidation'\"\n [text]=\"'Select time in the future.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <timepicker\n class=\"form-group\"\n [showSpinners]=\"false\"\n [showMeridian]=\"false\"\n formControlName=\"time\"\n (blur)=\"markAsTouched()\"\n ></timepicker>\n </div>\n </div>\n <div class=\"form-group\">\n <c8y-form-group [hasError]=\"delayErrors\">\n <label translate>Delay</label>\n <div class=\"input-group\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} 15\"\n type=\"number\"\n required\n formControlName=\"delay\"\n (blur)=\"markAsTouched()\"\n />\n <div class=\"input-group-btn\">\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control m-r-sm-32 m-r-xs-56\"\n [attr.aria-label]=\"'Delay units' | translate\"\n formControlName=\"unit\"\n (blur)=\"markAsTouched()\"\n >\n <option\n value=\"seconds\"\n translate\n >\n Seconds\n </option>\n <option\n value=\"milliseconds\"\n translate\n >\n Milliseconds\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n </c8y-form-group>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "directive", type: BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "ignoreMinMaxErrors", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: TimepickerComponent, selector: "timepicker", inputs: ["hourStep", "minuteStep", "secondsStep", "readonlyInput", "disabled", "mousewheel", "arrowkeys", "showSpinners", "showMeridian", "showMinutes", "showSeconds", "meridians", "min", "max", "hoursPlaceholder", "minutesPlaceholder", "secondsPlaceholder"], outputs: ["isValid", "meridianChange"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
223
223
  }
224
224
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: OperationSchedulerComponent, decorators: [{
225
225
  type: Component,
@@ -234,7 +234,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
234
234
  multi: true,
235
235
  useExisting: forwardRef(() => OperationSchedulerComponent)
236
236
  }
237
- ], standalone: false, template: "<div [formGroup]=\"fgOperationScheduler\">\n <div class=\"form-group\">\n <label translate>Start date</label>\n <div class=\"datetime-picker\">\n <c8y-form-group class=\"datepicker\">\n <input\n class=\"form-control\"\n placeholder=\"{{ placeholder | translate }}\"\n required\n formControlName=\"picker\"\n [bsConfig]=\"{ customTodayClass: 'today', dateInputFormat: dateInputFormat }\"\n [minDate]=\"minDate\"\n bsDatepicker\n (blur)=\"markAsTouched()\"\n />\n <c8y-messages>\n <c8y-message\n [name]=\"'dateValidation'\"\n [text]=\"'Select time in the future.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <timepicker\n class=\"form-group\"\n [showSpinners]=\"false\"\n [showMeridian]=\"false\"\n formControlName=\"time\"\n (blur)=\"markAsTouched()\"\n ></timepicker>\n </div>\n </div>\n <div class=\"form-group\">\n <c8y-form-group [hasError]=\"delayErrors\">\n <label translate>Delay</label>\n <div class=\"input-group\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} 15\"\n type=\"number\"\n required\n formControlName=\"delay\"\n (blur)=\"markAsTouched()\"\n />\n <div class=\"input-group-btn\">\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control m-r-sm-32 m-r-xs-56\"\n [attr.aria-label]=\"'Delay units' | translate\"\n formControlName=\"unit\"\n (blur)=\"markAsTouched()\"\n >\n <option\n value=\"seconds\"\n translate\n >\n Seconds\n </option>\n <option\n value=\"milliseconds\"\n translate\n >\n Milliseconds\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n </c8y-form-group>\n </div>\n</div>\n" }]
237
+ ], imports: [
238
+ FormsModule,
239
+ ReactiveFormsModule,
240
+ C8yTranslateDirective,
241
+ FormGroupComponent,
242
+ RequiredInputPlaceholderDirective,
243
+ BsDatepickerInputDirective,
244
+ BsDatepickerDirective,
245
+ MessagesComponent,
246
+ MessageDirective,
247
+ TimepickerComponent,
248
+ C8yTranslatePipe
249
+ ], template: "<div [formGroup]=\"fgOperationScheduler\">\n <div class=\"form-group\">\n <label translate>Start date</label>\n <div class=\"datetime-picker\">\n <c8y-form-group class=\"datepicker\">\n <input\n class=\"form-control\"\n placeholder=\"{{ placeholder | translate }}\"\n required\n formControlName=\"picker\"\n [bsConfig]=\"{ customTodayClass: 'today', dateInputFormat: dateInputFormat }\"\n [minDate]=\"minDate\"\n bsDatepicker\n (blur)=\"markAsTouched()\"\n />\n <c8y-messages>\n <c8y-message\n [name]=\"'dateValidation'\"\n [text]=\"'Select time in the future.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <timepicker\n class=\"form-group\"\n [showSpinners]=\"false\"\n [showMeridian]=\"false\"\n formControlName=\"time\"\n (blur)=\"markAsTouched()\"\n ></timepicker>\n </div>\n </div>\n <div class=\"form-group\">\n <c8y-form-group [hasError]=\"delayErrors\">\n <label translate>Delay</label>\n <div class=\"input-group\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} 15\"\n type=\"number\"\n required\n formControlName=\"delay\"\n (blur)=\"markAsTouched()\"\n />\n <div class=\"input-group-btn\">\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control m-r-sm-32 m-r-xs-56\"\n [attr.aria-label]=\"'Delay units' | translate\"\n formControlName=\"unit\"\n (blur)=\"markAsTouched()\"\n >\n <option\n value=\"seconds\"\n translate\n >\n Seconds\n </option>\n <option\n value=\"milliseconds\"\n translate\n >\n Milliseconds\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n </c8y-form-group>\n </div>\n</div>\n" }]
238
250
  }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.OptionsService }, { type: i2.DateFormatService }], propDecorators: { _minutesAhead: [{
239
251
  type: Input,
240
252
  args: ['minutesAhead']
@@ -245,12 +257,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
245
257
  */
246
258
  class BulkOperationSchedulerModule {
247
259
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BulkOperationSchedulerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
248
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: BulkOperationSchedulerModule, declarations: [OperationSchedulerComponent], imports: [CoreModule,
249
- ReactiveFormsModule, i3.BsDatepickerModule, i4.TimepickerModule], exports: [OperationSchedulerComponent] }); }
260
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: BulkOperationSchedulerModule, imports: [CoreModule,
261
+ ReactiveFormsModule, i1$1.BsDatepickerModule, i2$1.TimepickerModule, OperationSchedulerComponent], exports: [OperationSchedulerComponent] }); }
250
262
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BulkOperationSchedulerModule, imports: [CoreModule,
251
263
  ReactiveFormsModule,
252
264
  BsDatepickerModule.forRoot(),
253
- TimepickerModule.forRoot()] }); }
265
+ TimepickerModule.forRoot(),
266
+ OperationSchedulerComponent] }); }
254
267
  }
255
268
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BulkOperationSchedulerModule, decorators: [{
256
269
  type: NgModule,
@@ -259,10 +272,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
259
272
  CoreModule,
260
273
  ReactiveFormsModule,
261
274
  BsDatepickerModule.forRoot(),
262
- TimepickerModule.forRoot()
275
+ TimepickerModule.forRoot(),
276
+ OperationSchedulerComponent
263
277
  ],
264
278
  providers: [],
265
- declarations: [OperationSchedulerComponent],
266
279
  exports: [OperationSchedulerComponent]
267
280
  }]
268
281
  }] });
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-operations-bulk-operation-scheduler.mjs","sources":["../../operations/bulk-operation-scheduler/operation-scheduler.component.ts","../../operations/bulk-operation-scheduler/operation-scheduler.component.html","../../operations/bulk-operation-scheduler/bulk-operation-scheduler.module.ts","../../operations/bulk-operation-scheduler/c8y-ngx-components-operations-bulk-operation-scheduler.ts"],"sourcesContent":["import { Component, forwardRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport {\n ControlValueAccessor,\n FormBuilder,\n FormControl,\n FormGroup,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n Validators\n} from '@angular/forms';\nimport { DateFormatService, gettext, OptionsService } from '@c8y/ngx-components';\nimport { isEmpty } from 'lodash-es';\nimport { Subscription } from 'rxjs';\nimport { throttleTime } from 'rxjs/operators';\nimport { OperationSchedule } from './operation-schedule.interface';\n\n@Component({\n selector: 'c8y-operation-scheduler',\n templateUrl: 'operation-scheduler.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => OperationSchedulerComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => OperationSchedulerComponent)\n }\n ],\n standalone: false\n})\nexport class OperationSchedulerComponent\n implements ControlValueAccessor, Validator, OnInit, OnDestroy\n{\n @Input('minutesAhead') set _minutesAhead(minutes: number) {\n if (minutes && minutes > this.MINUTES_AHEAD_DEFAULT) {\n this.minutesAhead = minutes;\n }\n }\n\n placeholder: string = gettext('Start date');\n fgOperationScheduler: FormGroup;\n minDate: Date;\n minDelay: number;\n maxDelay: number;\n delayErrors: ValidationErrors = null;\n pickerErrors: ValidationErrors = null;\n dateInputFormat: string;\n\n private readonly DELAY_SECONDS_DEFAULT: number = 1;\n private readonly MIN_DELAY_SECONDS_DEFAULT: number = 0.001;\n private readonly MAX_DELAY_SECONDS_DEFAULT: number = 3600;\n private readonly MINUTES_AHEAD_DEFAULT: number = 5;\n private isDelayInSeconds = true;\n private minutesAhead: number = this.MINUTES_AHEAD_DEFAULT;\n private readonly DELAY_KEY_CATEGORY = 'device-control';\n private readonly MAX_DELAY_KEY_NAME = 'bulkoperation.maxcreationramp';\n private readonly MIN_DELAY_KEY_NAME = 'bulkoperation.creationramp';\n private currentUnit = 'seconds';\n private delayInSeconds: number;\n private initialDate: Date;\n private subscription: Subscription;\n\n private onChange: (name) => void;\n private onTouched: () => void;\n private onValidatorChanged: () => void;\n\n constructor(\n private formBuilder: FormBuilder,\n private options: OptionsService,\n private dateFormatService: DateFormatService\n ) {}\n\n ngOnInit() {\n this.minDate = new Date();\n this.initialDate = new Date(\n this.minDate.setMinutes(this.minDate.getMinutes() + this.minutesAhead)\n );\n\n this.fgOperationScheduler = this.formBuilder.group({\n picker: ['', [Validators.required, this.dateValidation]],\n time: ['', [Validators.required, this.timeValidation]],\n delay: ['', [Validators.required]],\n unit: ['seconds']\n });\n\n this.fgOperationScheduler.patchValue({\n picker: this.initialDate,\n time: this.initialDate,\n delay: this.DELAY_SECONDS_DEFAULT\n });\n\n // Due to the validation of picker and time it could be possible that value changes\n // are emitted more than once. Therefore we throttle the emits.\n const valueChanges$ = this.fgOperationScheduler.valueChanges.pipe(throttleTime(100));\n this.subscription = valueChanges$.subscribe(data => {\n this.delayErrors = this.fgOperationScheduler.controls.delay.errors;\n this.pickerErrors = this.fgOperationScheduler.controls.picker.errors;\n this.convertDelayHandler(data.unit);\n this.emitData(data);\n });\n\n this.updateDelayValidation();\n this.dateInputFormat = this.dateFormatService.getDateFormat();\n }\n\n ngOnDestroy() {\n if (this.subscription && !this.subscription.closed) {\n this.subscription.unsubscribe();\n }\n }\n\n writeValue(value: OperationSchedule): void {\n if (value) {\n this.fgOperationScheduler.patchValue({\n picker: value.scheduledDate,\n time: value.scheduledDate,\n delay: value.delayInSeconds > 1 ? value.delayInSeconds : value.delayInSeconds * 1000,\n unit: value.delayInSeconds > 1 ? 'seconds' : 'milliseconds'\n });\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n if (this.fgOperationScheduler?.disabled === isDisabled) {\n return;\n }\n isDisabled ? this.fgOperationScheduler.disable() : this.fgOperationScheduler.enable();\n }\n\n validate(): ValidationErrors {\n if (this.fgOperationScheduler.invalid) {\n return {\n ...this.fgOperationScheduler.controls.picker.errors,\n ...this.fgOperationScheduler.controls.time.errors,\n ...this.fgOperationScheduler.controls.delay.errors\n };\n }\n }\n\n registerOnValidatorChange(fn: any) {\n this.onValidatorChanged = fn;\n }\n\n markAsTouched(): void {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n convertDelayHandler(unit: string) {\n if (this.currentUnit === unit) {\n return;\n }\n\n this.currentUnit = unit;\n\n this.convertDelay(this.currentUnit);\n\n // update validator on delay control to make sure that\n // switching from minutes to seconds or vice versa does not harm validation.\n this.fgOperationScheduler.controls.delay.setValidators([\n Validators.required,\n Validators.min(this.minDelay),\n Validators.max(this.maxDelay)\n ]);\n this.fgOperationScheduler.controls.delay.updateValueAndValidity();\n }\n\n emitData(data: { delayInSeconds: number; picker: Date; time?: Date; delay?: number }) {\n if (this.onValidatorChanged) {\n this.onValidatorChanged();\n }\n\n if (data.picker && data.time) {\n data.picker = this.combineDateAndTime(data.picker, data.time);\n }\n\n this.convertDelay(this.currentUnit);\n data.delayInSeconds = this.delayInSeconds;\n\n if (this.onChange) {\n this.onChange({\n delayInSeconds: data.delayInSeconds,\n scheduledDate: data.picker\n });\n }\n }\n\n private async updateDelayValidation() {\n const minSystem = await this.options.getSystemOption(\n this.DELAY_KEY_CATEGORY,\n this.MIN_DELAY_KEY_NAME\n );\n const maxSystem = await this.options.getSystemOption(\n this.DELAY_KEY_CATEGORY,\n this.MAX_DELAY_KEY_NAME\n );\n\n this.maxDelay = maxSystem ? Number(maxSystem) : this.MAX_DELAY_SECONDS_DEFAULT;\n this.minDelay = minSystem ? Number(minSystem) : this.MIN_DELAY_SECONDS_DEFAULT;\n\n this.fgOperationScheduler\n .get('delay')\n .setValidators([\n Validators.required,\n Validators.min(this.minDelay),\n Validators.max(this.maxDelay)\n ]);\n this.fgOperationScheduler.updateValueAndValidity();\n }\n\n private convertDelay(unit: string) {\n this.delayInSeconds = this.fgOperationScheduler.controls.delay.value;\n\n if (unit === 'seconds' && !this.isDelayInSeconds) {\n this.maxDelay = this.maxDelay / 1000;\n this.minDelay = this.minDelay / 1000;\n this.isDelayInSeconds = true;\n }\n\n if (unit === 'milliseconds') {\n this.delayInSeconds = this.fgOperationScheduler.controls.delay.value / 1000;\n if (this.isDelayInSeconds) {\n this.maxDelay = this.maxDelay * 1000;\n this.minDelay = this.minDelay * 1000;\n this.isDelayInSeconds = false;\n }\n }\n }\n\n private combineDateAndTime(date: Date, time: Date) {\n return new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n time.getHours(),\n time.getMinutes()\n );\n }\n\n private dateValidation(fControl: FormControl) {\n if (fControl.value) {\n const date = fControl.value as Date;\n fControl.parent.get('time').setValue(date);\n return date >= new Date()\n ? null\n : {\n dateValidation: true\n };\n }\n return { dateValidation: true };\n }\n\n private timeValidation(fControl: FormControl) {\n if (fControl.value) {\n const date = fControl.value as Date;\n const result =\n date >= new Date()\n ? null\n : {\n dateValidation: true\n };\n\n const picker = fControl.parent.get('picker');\n\n if (result) {\n picker.setErrors(result);\n picker.markAsTouched();\n return result;\n }\n\n if (picker && picker.errors && picker.errors.dateValidation) {\n delete picker.errors.dateValidation;\n\n if (isEmpty(picker.errors)) {\n picker.setErrors(null);\n return result;\n }\n\n picker.setErrors(picker.errors);\n }\n return result;\n }\n return { dateValidation: true };\n }\n}\n","<div [formGroup]=\"fgOperationScheduler\">\n <div class=\"form-group\">\n <label translate>Start date</label>\n <div class=\"datetime-picker\">\n <c8y-form-group class=\"datepicker\">\n <input\n class=\"form-control\"\n placeholder=\"{{ placeholder | translate }}\"\n required\n formControlName=\"picker\"\n [bsConfig]=\"{ customTodayClass: 'today', dateInputFormat: dateInputFormat }\"\n [minDate]=\"minDate\"\n bsDatepicker\n (blur)=\"markAsTouched()\"\n />\n <c8y-messages>\n <c8y-message\n [name]=\"'dateValidation'\"\n [text]=\"'Select time in the future.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <timepicker\n class=\"form-group\"\n [showSpinners]=\"false\"\n [showMeridian]=\"false\"\n formControlName=\"time\"\n (blur)=\"markAsTouched()\"\n ></timepicker>\n </div>\n </div>\n <div class=\"form-group\">\n <c8y-form-group [hasError]=\"delayErrors\">\n <label translate>Delay</label>\n <div class=\"input-group\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} 15\"\n type=\"number\"\n required\n formControlName=\"delay\"\n (blur)=\"markAsTouched()\"\n />\n <div class=\"input-group-btn\">\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control m-r-sm-32 m-r-xs-56\"\n [attr.aria-label]=\"'Delay units' | translate\"\n formControlName=\"unit\"\n (blur)=\"markAsTouched()\"\n >\n <option\n value=\"seconds\"\n translate\n >\n Seconds\n </option>\n <option\n value=\"milliseconds\"\n translate\n >\n Milliseconds\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n </c8y-form-group>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\nimport { TimepickerModule } from 'ngx-bootstrap/timepicker';\nimport { OperationSchedulerComponent } from './operation-scheduler.component';\n\n/**\n * This module provides components for scheduling bulk operations.\n */\n@NgModule({\n imports: [\n CoreModule,\n ReactiveFormsModule,\n BsDatepickerModule.forRoot(),\n TimepickerModule.forRoot()\n ],\n providers: [],\n declarations: [OperationSchedulerComponent],\n exports: [OperationSchedulerComponent]\n})\nexport class BulkOperationSchedulerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-operations-bulk-operation-scheduler.mjs","sources":["../../operations/bulk-operation-scheduler/operation-scheduler.component.ts","../../operations/bulk-operation-scheduler/operation-scheduler.component.html","../../operations/bulk-operation-scheduler/bulk-operation-scheduler.module.ts","../../operations/bulk-operation-scheduler/c8y-ngx-components-operations-bulk-operation-scheduler.ts"],"sourcesContent":["import { Component, forwardRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport {\n ControlValueAccessor,\n FormBuilder,\n FormControl,\n FormGroup,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n Validators,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport {\n DateFormatService,\n gettext,\n OptionsService,\n C8yTranslateDirective,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n MessagesComponent,\n MessageDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { isEmpty } from 'lodash-es';\nimport { Subscription } from 'rxjs';\nimport { throttleTime } from 'rxjs/operators';\nimport { OperationSchedule } from './operation-schedule.interface';\nimport { BsDatepickerInputDirective, BsDatepickerDirective } from 'ngx-bootstrap/datepicker';\nimport { TimepickerComponent } from 'ngx-bootstrap/timepicker';\n\n@Component({\n selector: 'c8y-operation-scheduler',\n templateUrl: 'operation-scheduler.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => OperationSchedulerComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => OperationSchedulerComponent)\n }\n ],\n imports: [\n FormsModule,\n ReactiveFormsModule,\n C8yTranslateDirective,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n BsDatepickerInputDirective,\n BsDatepickerDirective,\n MessagesComponent,\n MessageDirective,\n TimepickerComponent,\n C8yTranslatePipe\n ]\n})\nexport class OperationSchedulerComponent\n implements ControlValueAccessor, Validator, OnInit, OnDestroy\n{\n @Input('minutesAhead') set _minutesAhead(minutes: number) {\n if (minutes && minutes > this.MINUTES_AHEAD_DEFAULT) {\n this.minutesAhead = minutes;\n }\n }\n\n placeholder: string = gettext('Start date');\n fgOperationScheduler: FormGroup;\n minDate: Date;\n minDelay: number;\n maxDelay: number;\n delayErrors: ValidationErrors = null;\n pickerErrors: ValidationErrors = null;\n dateInputFormat: string;\n\n private readonly DELAY_SECONDS_DEFAULT: number = 1;\n private readonly MIN_DELAY_SECONDS_DEFAULT: number = 0.001;\n private readonly MAX_DELAY_SECONDS_DEFAULT: number = 3600;\n private readonly MINUTES_AHEAD_DEFAULT: number = 5;\n private isDelayInSeconds = true;\n private minutesAhead: number = this.MINUTES_AHEAD_DEFAULT;\n private readonly DELAY_KEY_CATEGORY = 'device-control';\n private readonly MAX_DELAY_KEY_NAME = 'bulkoperation.maxcreationramp';\n private readonly MIN_DELAY_KEY_NAME = 'bulkoperation.creationramp';\n private currentUnit = 'seconds';\n private delayInSeconds: number;\n private initialDate: Date;\n private subscription: Subscription;\n\n private onChange: (name) => void;\n private onTouched: () => void;\n private onValidatorChanged: () => void;\n\n constructor(\n private formBuilder: FormBuilder,\n private options: OptionsService,\n private dateFormatService: DateFormatService\n ) {}\n\n ngOnInit() {\n this.minDate = new Date();\n this.initialDate = new Date(\n this.minDate.setMinutes(this.minDate.getMinutes() + this.minutesAhead)\n );\n\n this.fgOperationScheduler = this.formBuilder.group({\n picker: ['', [Validators.required, this.dateValidation]],\n time: ['', [Validators.required, this.timeValidation]],\n delay: ['', [Validators.required]],\n unit: ['seconds']\n });\n\n this.fgOperationScheduler.patchValue({\n picker: this.initialDate,\n time: this.initialDate,\n delay: this.DELAY_SECONDS_DEFAULT\n });\n\n // Due to the validation of picker and time it could be possible that value changes\n // are emitted more than once. Therefore we throttle the emits.\n const valueChanges$ = this.fgOperationScheduler.valueChanges.pipe(throttleTime(100));\n this.subscription = valueChanges$.subscribe(data => {\n this.delayErrors = this.fgOperationScheduler.controls.delay.errors;\n this.pickerErrors = this.fgOperationScheduler.controls.picker.errors;\n this.convertDelayHandler(data.unit);\n this.emitData(data);\n });\n\n this.updateDelayValidation();\n this.dateInputFormat = this.dateFormatService.getDateFormat();\n }\n\n ngOnDestroy() {\n if (this.subscription && !this.subscription.closed) {\n this.subscription.unsubscribe();\n }\n }\n\n writeValue(value: OperationSchedule): void {\n if (value) {\n this.fgOperationScheduler.patchValue({\n picker: value.scheduledDate,\n time: value.scheduledDate,\n delay: value.delayInSeconds > 1 ? value.delayInSeconds : value.delayInSeconds * 1000,\n unit: value.delayInSeconds > 1 ? 'seconds' : 'milliseconds'\n });\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n if (this.fgOperationScheduler?.disabled === isDisabled) {\n return;\n }\n isDisabled ? this.fgOperationScheduler.disable() : this.fgOperationScheduler.enable();\n }\n\n validate(): ValidationErrors {\n if (this.fgOperationScheduler.invalid) {\n return {\n ...this.fgOperationScheduler.controls.picker.errors,\n ...this.fgOperationScheduler.controls.time.errors,\n ...this.fgOperationScheduler.controls.delay.errors\n };\n }\n }\n\n registerOnValidatorChange(fn: any) {\n this.onValidatorChanged = fn;\n }\n\n markAsTouched(): void {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n convertDelayHandler(unit: string) {\n if (this.currentUnit === unit) {\n return;\n }\n\n this.currentUnit = unit;\n\n this.convertDelay(this.currentUnit);\n\n // update validator on delay control to make sure that\n // switching from minutes to seconds or vice versa does not harm validation.\n this.fgOperationScheduler.controls.delay.setValidators([\n Validators.required,\n Validators.min(this.minDelay),\n Validators.max(this.maxDelay)\n ]);\n this.fgOperationScheduler.controls.delay.updateValueAndValidity();\n }\n\n emitData(data: { delayInSeconds: number; picker: Date; time?: Date; delay?: number }) {\n if (this.onValidatorChanged) {\n this.onValidatorChanged();\n }\n\n if (data.picker && data.time) {\n data.picker = this.combineDateAndTime(data.picker, data.time);\n }\n\n this.convertDelay(this.currentUnit);\n data.delayInSeconds = this.delayInSeconds;\n\n if (this.onChange) {\n this.onChange({\n delayInSeconds: data.delayInSeconds,\n scheduledDate: data.picker\n });\n }\n }\n\n private async updateDelayValidation() {\n const minSystem = await this.options.getSystemOption(\n this.DELAY_KEY_CATEGORY,\n this.MIN_DELAY_KEY_NAME\n );\n const maxSystem = await this.options.getSystemOption(\n this.DELAY_KEY_CATEGORY,\n this.MAX_DELAY_KEY_NAME\n );\n\n this.maxDelay = maxSystem ? Number(maxSystem) : this.MAX_DELAY_SECONDS_DEFAULT;\n this.minDelay = minSystem ? Number(minSystem) : this.MIN_DELAY_SECONDS_DEFAULT;\n\n this.fgOperationScheduler\n .get('delay')\n .setValidators([\n Validators.required,\n Validators.min(this.minDelay),\n Validators.max(this.maxDelay)\n ]);\n this.fgOperationScheduler.updateValueAndValidity();\n }\n\n private convertDelay(unit: string) {\n this.delayInSeconds = this.fgOperationScheduler.controls.delay.value;\n\n if (unit === 'seconds' && !this.isDelayInSeconds) {\n this.maxDelay = this.maxDelay / 1000;\n this.minDelay = this.minDelay / 1000;\n this.isDelayInSeconds = true;\n }\n\n if (unit === 'milliseconds') {\n this.delayInSeconds = this.fgOperationScheduler.controls.delay.value / 1000;\n if (this.isDelayInSeconds) {\n this.maxDelay = this.maxDelay * 1000;\n this.minDelay = this.minDelay * 1000;\n this.isDelayInSeconds = false;\n }\n }\n }\n\n private combineDateAndTime(date: Date, time: Date) {\n return new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n time.getHours(),\n time.getMinutes()\n );\n }\n\n private dateValidation(fControl: FormControl) {\n if (fControl.value) {\n const date = fControl.value as Date;\n fControl.parent.get('time').setValue(date);\n return date >= new Date()\n ? null\n : {\n dateValidation: true\n };\n }\n return { dateValidation: true };\n }\n\n private timeValidation(fControl: FormControl) {\n if (fControl.value) {\n const date = fControl.value as Date;\n const result =\n date >= new Date()\n ? null\n : {\n dateValidation: true\n };\n\n const picker = fControl.parent.get('picker');\n\n if (result) {\n picker.setErrors(result);\n picker.markAsTouched();\n return result;\n }\n\n if (picker && picker.errors && picker.errors.dateValidation) {\n delete picker.errors.dateValidation;\n\n if (isEmpty(picker.errors)) {\n picker.setErrors(null);\n return result;\n }\n\n picker.setErrors(picker.errors);\n }\n return result;\n }\n return { dateValidation: true };\n }\n}\n","<div [formGroup]=\"fgOperationScheduler\">\n <div class=\"form-group\">\n <label translate>Start date</label>\n <div class=\"datetime-picker\">\n <c8y-form-group class=\"datepicker\">\n <input\n class=\"form-control\"\n placeholder=\"{{ placeholder | translate }}\"\n required\n formControlName=\"picker\"\n [bsConfig]=\"{ customTodayClass: 'today', dateInputFormat: dateInputFormat }\"\n [minDate]=\"minDate\"\n bsDatepicker\n (blur)=\"markAsTouched()\"\n />\n <c8y-messages>\n <c8y-message\n [name]=\"'dateValidation'\"\n [text]=\"'Select time in the future.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <timepicker\n class=\"form-group\"\n [showSpinners]=\"false\"\n [showMeridian]=\"false\"\n formControlName=\"time\"\n (blur)=\"markAsTouched()\"\n ></timepicker>\n </div>\n </div>\n <div class=\"form-group\">\n <c8y-form-group [hasError]=\"delayErrors\">\n <label translate>Delay</label>\n <div class=\"input-group\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} 15\"\n type=\"number\"\n required\n formControlName=\"delay\"\n (blur)=\"markAsTouched()\"\n />\n <div class=\"input-group-btn\">\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control m-r-sm-32 m-r-xs-56\"\n [attr.aria-label]=\"'Delay units' | translate\"\n formControlName=\"unit\"\n (blur)=\"markAsTouched()\"\n >\n <option\n value=\"seconds\"\n translate\n >\n Seconds\n </option>\n <option\n value=\"milliseconds\"\n translate\n >\n Milliseconds\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n </c8y-form-group>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\nimport { TimepickerModule } from 'ngx-bootstrap/timepicker';\nimport { OperationSchedulerComponent } from './operation-scheduler.component';\n\n/**\n * This module provides components for scheduling bulk operations.\n */\n@NgModule({\n imports: [\n CoreModule,\n ReactiveFormsModule,\n BsDatepickerModule.forRoot(),\n TimepickerModule.forRoot(),\n OperationSchedulerComponent\n ],\n providers: [],\n exports: [OperationSchedulerComponent]\n})\nexport class BulkOperationSchedulerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}