@c8y/ngx-components 1022.30.0 → 1022.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. package/asset-properties/asset-properties.model.d.ts +12 -3
  2. package/asset-properties/asset-properties.model.d.ts.map +1 -1
  3. package/asset-properties/asset-properties.service.d.ts +20 -2
  4. package/asset-properties/asset-properties.service.d.ts.map +1 -1
  5. package/asset-properties/asset-property-list/asset-property-icon-tooltip.pipe.d.ts +14 -0
  6. package/asset-properties/asset-property-list/asset-property-icon-tooltip.pipe.d.ts.map +1 -0
  7. package/asset-properties/asset-property-list/asset-property-icon.pipe.d.ts.map +1 -1
  8. package/asset-properties/asset-property-list/asset-property-list.component.d.ts +28 -18
  9. package/asset-properties/asset-property-list/asset-property-list.component.d.ts.map +1 -1
  10. package/asset-properties/asset-property-selector-drawer/asset-property-selector-drawer.component.d.ts +2 -2
  11. package/asset-properties/asset-property-selector-drawer/asset-property-selector-drawer.component.d.ts.map +1 -1
  12. package/asset-properties/custom-properties-drawer/custom-properties-drawer.component.d.ts +97 -0
  13. package/asset-properties/custom-properties-drawer/custom-properties-drawer.component.d.ts.map +1 -0
  14. package/asset-properties/custom-properties-drawer.service.d.ts +12 -0
  15. package/asset-properties/custom-properties-drawer.service.d.ts.map +1 -0
  16. package/asset-properties/index.d.ts +1 -0
  17. package/asset-properties/index.d.ts.map +1 -1
  18. package/context-dashboard/dashboard-detail.service.d.ts +2 -2
  19. package/context-dashboard/widget-config-hook/widget-config-hook.model.d.ts +2 -1
  20. package/context-dashboard/widget-config-hook/widget-config-hook.model.d.ts.map +1 -1
  21. package/context-dashboard/widget-config.service.d.ts.map +1 -1
  22. package/core/i18n/pattern-messages.data.d.ts +7 -0
  23. package/core/i18n/pattern-messages.data.d.ts.map +1 -1
  24. package/core/query-param-handler/query-param-handler.service.d.ts +1 -1
  25. package/core/query-param-handler/query-param-handler.service.d.ts.map +1 -1
  26. package/core/query-param-handler/query-param-modal-handler.service.d.ts +16 -5
  27. package/core/query-param-handler/query-param-modal-handler.service.d.ts.map +1 -1
  28. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts.map +1 -1
  29. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs +16 -16
  30. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs.map +1 -1
  31. package/fesm2022/c8y-ngx-components-advanced-software-management.mjs +7 -7
  32. package/fesm2022/c8y-ngx-components-advanced-software-management.mjs.map +1 -1
  33. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +34 -34
  34. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
  35. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +4 -4
  36. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs.map +1 -1
  37. package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs.map +1 -1
  38. package/fesm2022/c8y-ngx-components-alarms.mjs +73 -73
  39. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  40. package/fesm2022/c8y-ngx-components-api.mjs +7 -7
  41. package/fesm2022/c8y-ngx-components-api.mjs.map +1 -1
  42. package/fesm2022/c8y-ngx-components-app-logs.mjs +10 -10
  43. package/fesm2022/c8y-ngx-components-app-logs.mjs.map +1 -1
  44. package/fesm2022/c8y-ngx-components-asset-properties.mjs +427 -66
  45. package/fesm2022/c8y-ngx-components-asset-properties.mjs.map +1 -1
  46. package/fesm2022/{c8y-ngx-components-asset-property-grid.component-WUN1r4fC.mjs → c8y-ngx-components-asset-property-grid.component-CRnyUbyz.mjs} +13 -13
  47. package/fesm2022/{c8y-ngx-components-asset-property-grid.component-WUN1r4fC.mjs.map → c8y-ngx-components-asset-property-grid.component-CRnyUbyz.mjs.map} +1 -1
  48. package/fesm2022/c8y-ngx-components-assets-navigator.mjs +32 -32
  49. package/fesm2022/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  50. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +114 -114
  51. package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  52. package/fesm2022/c8y-ngx-components-binary-file-download.mjs +7 -7
  53. package/fesm2022/c8y-ngx-components-binary-file-download.mjs.map +1 -1
  54. package/fesm2022/c8y-ngx-components-bookmarks.mjs +13 -13
  55. package/fesm2022/c8y-ngx-components-bookmarks.mjs.map +1 -1
  56. package/fesm2022/c8y-ngx-components-branding-base-branding.mjs +4 -4
  57. package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs +7 -7
  58. package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs.map +1 -1
  59. package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs +7 -7
  60. package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs.map +1 -1
  61. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor-lazy.mjs +3 -3
  62. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor-lazy.mjs.map +1 -1
  63. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs +7 -7
  64. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs.map +1 -1
  65. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +15 -15
  66. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs.map +1 -1
  67. package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs +6 -6
  68. package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs.map +1 -1
  69. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +33 -33
  70. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
  71. package/fesm2022/c8y-ngx-components-branding-shared.mjs +10 -10
  72. package/fesm2022/c8y-ngx-components-branding-shared.mjs.map +1 -1
  73. package/fesm2022/c8y-ngx-components-child-devices.mjs +13 -13
  74. package/fesm2022/c8y-ngx-components-child-devices.mjs.map +1 -1
  75. package/fesm2022/c8y-ngx-components-cockpit-config.mjs +40 -40
  76. package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
  77. package/fesm2022/c8y-ngx-components-connectivity.mjs +53 -53
  78. package/fesm2022/c8y-ngx-components-connectivity.mjs.map +1 -1
  79. package/fesm2022/c8y-ngx-components-context-dashboard-asset-add.mjs +10 -10
  80. package/fesm2022/c8y-ngx-components-context-dashboard-asset-add.mjs.map +1 -1
  81. package/fesm2022/c8y-ngx-components-context-dashboard-asset-view.mjs +7 -7
  82. package/fesm2022/c8y-ngx-components-context-dashboard-asset-view.mjs.map +1 -1
  83. package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs +11 -11
  84. package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs.map +1 -1
  85. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-C-JLbcn5.mjs → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-BWyhab0H.mjs} +4 -4
  86. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-C-JLbcn5.mjs.map → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-BWyhab0H.mjs.map} +1 -1
  87. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-RXvOcs04.mjs → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DjlpSztw.mjs} +10 -10
  88. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-RXvOcs04.mjs.map → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DjlpSztw.mjs.map} +1 -1
  89. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-DmPIJGXO.mjs → c8y-ngx-components-context-dashboard-dashboard-version-history.component-B2zLhv0X.mjs} +4 -4
  90. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-DmPIJGXO.mjs.map → c8y-ngx-components-context-dashboard-dashboard-version-history.component-B2zLhv0X.mjs.map} +1 -1
  91. package/fesm2022/c8y-ngx-components-context-dashboard-device-add.mjs +10 -10
  92. package/fesm2022/c8y-ngx-components-context-dashboard-device-add.mjs.map +1 -1
  93. package/fesm2022/c8y-ngx-components-context-dashboard-device-view.mjs +7 -7
  94. package/fesm2022/c8y-ngx-components-context-dashboard-device-view.mjs.map +1 -1
  95. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +107 -102
  96. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  97. package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-DtLAOoFx.mjs → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-CwfVxTSx.mjs} +16 -16
  98. package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-DtLAOoFx.mjs.map → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-CwfVxTSx.mjs.map} +1 -1
  99. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs +12 -12
  100. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs.map +1 -1
  101. package/fesm2022/c8y-ngx-components-dashboard-manager-devicemanagement.mjs.map +1 -1
  102. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs +22 -22
  103. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs.map +1 -1
  104. package/fesm2022/c8y-ngx-components-data-broker.mjs +7 -7
  105. package/fesm2022/c8y-ngx-components-data-broker.mjs.map +1 -1
  106. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs +3 -3
  107. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs.map +1 -1
  108. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs +3 -3
  109. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs.map +1 -1
  110. package/fesm2022/c8y-ngx-components-datapoint-explorer-devicemanagement.mjs.map +1 -1
  111. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +24 -24
  112. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
  113. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +7 -7
  114. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs.map +1 -1
  115. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs +3 -3
  116. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs.map +1 -1
  117. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs +3 -3
  118. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs.map +1 -1
  119. package/fesm2022/c8y-ngx-components-datapoint-library-services.mjs +3 -3
  120. package/fesm2022/c8y-ngx-components-datapoint-library-services.mjs.map +1 -1
  121. package/fesm2022/c8y-ngx-components-datapoint-library.mjs +4 -4
  122. package/fesm2022/c8y-ngx-components-datapoint-library.mjs.map +1 -1
  123. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +40 -40
  124. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  125. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +41 -40
  126. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
  127. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs +16 -16
  128. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs.map +1 -1
  129. package/fesm2022/c8y-ngx-components-device-grid.mjs +43 -43
  130. package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
  131. package/fesm2022/c8y-ngx-components-device-list.mjs +22 -22
  132. package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
  133. package/fesm2022/c8y-ngx-components-device-map.mjs +12 -12
  134. package/fesm2022/c8y-ngx-components-device-map.mjs.map +1 -1
  135. package/fesm2022/c8y-ngx-components-device-profile.mjs +34 -34
  136. package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
  137. package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs +3 -3
  138. package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs.map +1 -1
  139. package/fesm2022/c8y-ngx-components-device-protocols.mjs +16 -16
  140. package/fesm2022/c8y-ngx-components-device-protocols.mjs.map +1 -1
  141. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +13 -13
  142. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -1
  143. package/fesm2022/c8y-ngx-components-device-shell.mjs +31 -31
  144. package/fesm2022/c8y-ngx-components-device-shell.mjs.map +1 -1
  145. package/fesm2022/c8y-ngx-components-diagnostics.mjs +13 -13
  146. package/fesm2022/c8y-ngx-components-diagnostics.mjs.map +1 -1
  147. package/fesm2022/c8y-ngx-components-echart-models.mjs.map +1 -1
  148. package/fesm2022/c8y-ngx-components-echart.mjs +27 -27
  149. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
  150. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +43 -43
  151. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  152. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs +7 -7
  153. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs.map +1 -1
  154. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs +10 -10
  155. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs.map +1 -1
  156. package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs +7 -7
  157. package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs.map +1 -1
  158. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +46 -46
  159. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  160. package/fesm2022/c8y-ngx-components-ecosystem.mjs +82 -82
  161. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  162. package/fesm2022/c8y-ngx-components-editor.mjs +6 -6
  163. package/fesm2022/c8y-ngx-components-editor.mjs.map +1 -1
  164. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs +3 -3
  165. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs.map +1 -1
  166. package/fesm2022/c8y-ngx-components-events.mjs +3 -3
  167. package/fesm2022/c8y-ngx-components-events.mjs.map +1 -1
  168. package/fesm2022/c8y-ngx-components-exports-list.mjs +6 -6
  169. package/fesm2022/c8y-ngx-components-exports-list.mjs.map +1 -1
  170. package/fesm2022/c8y-ngx-components-exports.mjs.map +1 -1
  171. package/fesm2022/c8y-ngx-components-file-preview.mjs +7 -7
  172. package/fesm2022/c8y-ngx-components-file-preview.mjs.map +1 -1
  173. package/fesm2022/c8y-ngx-components-files-repository.mjs +19 -19
  174. package/fesm2022/c8y-ngx-components-files-repository.mjs.map +1 -1
  175. package/fesm2022/c8y-ngx-components-icon-selector-icons-arrows.mjs.map +1 -1
  176. package/fesm2022/c8y-ngx-components-icon-selector-icons-city.mjs.map +1 -1
  177. package/fesm2022/c8y-ngx-components-icon-selector-icons-data.mjs.map +1 -1
  178. package/fesm2022/c8y-ngx-components-icon-selector-icons-dateAndTime.mjs.map +1 -1
  179. package/fesm2022/c8y-ngx-components-icon-selector-icons-devicesAndSensors.mjs.map +1 -1
  180. package/fesm2022/c8y-ngx-components-icon-selector-icons-ecommerce.mjs.map +1 -1
  181. package/fesm2022/c8y-ngx-components-icon-selector-icons-editing.mjs.map +1 -1
  182. package/fesm2022/c8y-ngx-components-icon-selector-icons-filesAndFolders.mjs.map +1 -1
  183. package/fesm2022/c8y-ngx-components-icon-selector-icons-finance.mjs.map +1 -1
  184. package/fesm2022/c8y-ngx-components-icon-selector-icons-hands.mjs.map +1 -1
  185. package/fesm2022/c8y-ngx-components-icon-selector-icons-location.mjs.map +1 -1
  186. package/fesm2022/c8y-ngx-components-icon-selector-icons-messaging.mjs.map +1 -1
  187. package/fesm2022/c8y-ngx-components-icon-selector-icons-multimedia.mjs.map +1 -1
  188. package/fesm2022/c8y-ngx-components-icon-selector-icons-network.mjs.map +1 -1
  189. package/fesm2022/c8y-ngx-components-icon-selector-icons-office.mjs.map +1 -1
  190. package/fesm2022/c8y-ngx-components-icon-selector-icons-people.mjs.map +1 -1
  191. package/fesm2022/c8y-ngx-components-icon-selector-icons-platform.mjs +1 -0
  192. package/fesm2022/c8y-ngx-components-icon-selector-icons-platform.mjs.map +1 -1
  193. package/fesm2022/c8y-ngx-components-icon-selector-icons-programming.mjs.map +1 -1
  194. package/fesm2022/c8y-ngx-components-icon-selector-icons-security.mjs.map +1 -1
  195. package/fesm2022/c8y-ngx-components-icon-selector-icons-transport.mjs.map +1 -1
  196. package/fesm2022/c8y-ngx-components-icon-selector-icons-userInterface.mjs.map +1 -1
  197. package/fesm2022/c8y-ngx-components-icon-selector-icons-weather.mjs.map +1 -1
  198. package/fesm2022/c8y-ngx-components-icon-selector-icons.mjs.map +1 -1
  199. package/fesm2022/c8y-ngx-components-icon-selector-model.mjs.map +1 -1
  200. package/fesm2022/c8y-ngx-components-icon-selector.mjs +19 -19
  201. package/fesm2022/c8y-ngx-components-icon-selector.mjs.map +1 -1
  202. package/fesm2022/c8y-ngx-components-interval-picker.mjs +3 -3
  203. package/fesm2022/c8y-ngx-components-interval-picker.mjs.map +1 -1
  204. package/fesm2022/c8y-ngx-components-location.mjs +28 -28
  205. package/fesm2022/c8y-ngx-components-location.mjs.map +1 -1
  206. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs +16 -16
  207. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs.map +1 -1
  208. package/fesm2022/c8y-ngx-components-map.mjs +19 -19
  209. package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
  210. package/fesm2022/c8y-ngx-components-messaging-management.mjs +55 -55
  211. package/fesm2022/c8y-ngx-components-messaging-management.mjs.map +1 -1
  212. package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs +7 -7
  213. package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs.map +1 -1
  214. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs +19 -19
  215. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs.map +1 -1
  216. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +7 -7
  217. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs.map +1 -1
  218. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs +13 -13
  219. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs.map +1 -1
  220. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs +13 -13
  221. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
  222. package/fesm2022/c8y-ngx-components-operations-bulk-operations-service.mjs +7 -7
  223. package/fesm2022/c8y-ngx-components-operations-bulk-operations-service.mjs.map +1 -1
  224. package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs +7 -7
  225. package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs.map +1 -1
  226. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs +10 -10
  227. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs.map +1 -1
  228. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs +7 -7
  229. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs.map +1 -1
  230. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs +7 -7
  231. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs.map +1 -1
  232. package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs +12 -12
  233. package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs.map +1 -1
  234. package/fesm2022/c8y-ngx-components-operations-operation-details.mjs +13 -13
  235. package/fesm2022/c8y-ngx-components-operations-operation-details.mjs.map +1 -1
  236. package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs +7 -7
  237. package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs.map +1 -1
  238. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs +10 -10
  239. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs.map +1 -1
  240. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +12 -12
  241. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
  242. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs +7 -7
  243. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs.map +1 -1
  244. package/fesm2022/c8y-ngx-components-operations-product-experience.mjs.map +1 -1
  245. package/fesm2022/c8y-ngx-components-operations-shared.mjs +10 -10
  246. package/fesm2022/c8y-ngx-components-operations-shared.mjs.map +1 -1
  247. package/fesm2022/c8y-ngx-components-operations-status-filter.mjs +7 -7
  248. package/fesm2022/c8y-ngx-components-operations-status-filter.mjs.map +1 -1
  249. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +7 -7
  250. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs.map +1 -1
  251. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +13 -13
  252. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs.map +1 -1
  253. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +13 -13
  254. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs.map +1 -1
  255. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +13 -13
  256. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs.map +1 -1
  257. package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs +13 -13
  258. package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs.map +1 -1
  259. package/fesm2022/c8y-ngx-components-operations.mjs +7 -7
  260. package/fesm2022/c8y-ngx-components-operations.mjs.map +1 -1
  261. package/fesm2022/c8y-ngx-components-pending-mo-request.mjs +7 -7
  262. package/fesm2022/c8y-ngx-components-pending-mo-request.mjs.map +1 -1
  263. package/fesm2022/c8y-ngx-components-platform-configuration.mjs +10 -10
  264. package/fesm2022/c8y-ngx-components-platform-configuration.mjs.map +1 -1
  265. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +38 -38
  266. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs.map +1 -1
  267. package/fesm2022/c8y-ngx-components-protocol-opcua-mappings.mjs.map +1 -1
  268. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +58 -58
  269. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
  270. package/fesm2022/c8y-ngx-components-register-device.mjs +58 -58
  271. package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
  272. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +9 -9
  273. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs.map +1 -1
  274. package/fesm2022/c8y-ngx-components-remote-access-data.mjs +3 -3
  275. package/fesm2022/c8y-ngx-components-remote-access-data.mjs.map +1 -1
  276. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs +3 -3
  277. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs.map +1 -1
  278. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +6 -6
  279. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs.map +1 -1
  280. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +3 -3
  281. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs.map +1 -1
  282. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs +3 -3
  283. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs.map +1 -1
  284. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs +3 -3
  285. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs.map +1 -1
  286. package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs +3 -3
  287. package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs.map +1 -1
  288. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +3 -3
  289. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs.map +1 -1
  290. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +6 -6
  291. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs.map +1 -1
  292. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs +3 -3
  293. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs.map +1 -1
  294. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs +6 -6
  295. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs.map +1 -1
  296. package/fesm2022/c8y-ngx-components-replace-device.mjs +13 -29
  297. package/fesm2022/c8y-ngx-components-replace-device.mjs.map +1 -1
  298. package/fesm2022/c8y-ngx-components-report-dashboard.mjs +16 -16
  299. package/fesm2022/c8y-ngx-components-report-dashboard.mjs.map +1 -1
  300. package/fesm2022/c8y-ngx-components-reports.mjs +19 -19
  301. package/fesm2022/c8y-ngx-components-reports.mjs.map +1 -1
  302. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +48 -48
  303. package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  304. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +33 -33
  305. package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
  306. package/fesm2022/c8y-ngx-components-repository-shared.mjs +34 -34
  307. package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
  308. package/fesm2022/c8y-ngx-components-repository-software.mjs +42 -42
  309. package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
  310. package/fesm2022/c8y-ngx-components-repository.mjs +4 -4
  311. package/fesm2022/c8y-ngx-components-repository.mjs.map +1 -1
  312. package/fesm2022/c8y-ngx-components-search.mjs +19 -19
  313. package/fesm2022/c8y-ngx-components-search.mjs.map +1 -1
  314. package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs +33 -27
  315. package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs.map +1 -1
  316. package/fesm2022/c8y-ngx-components-sensor-phone.mjs +17 -320
  317. package/fesm2022/c8y-ngx-components-sensor-phone.mjs.map +1 -1
  318. package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs +3 -3
  319. package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs.map +1 -1
  320. package/fesm2022/c8y-ngx-components-services-shared.mjs +3 -3
  321. package/fesm2022/c8y-ngx-components-services-shared.mjs.map +1 -1
  322. package/fesm2022/c8y-ngx-components-services.mjs +29 -29
  323. package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
  324. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs +16 -16
  325. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs.map +1 -1
  326. package/fesm2022/c8y-ngx-components-sms-gateway.mjs +7 -7
  327. package/fesm2022/c8y-ngx-components-sms-gateway.mjs.map +1 -1
  328. package/fesm2022/c8y-ngx-components-static-assets-data.mjs +3 -3
  329. package/fesm2022/c8y-ngx-components-static-assets-data.mjs.map +1 -1
  330. package/fesm2022/c8y-ngx-components-static-assets-modal.mjs +3 -3
  331. package/fesm2022/c8y-ngx-components-static-assets-modal.mjs.map +1 -1
  332. package/fesm2022/c8y-ngx-components-static-assets.mjs +6 -6
  333. package/fesm2022/c8y-ngx-components-static-assets.mjs.map +1 -1
  334. package/fesm2022/c8y-ngx-components-sub-assets.mjs +60 -60
  335. package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
  336. package/fesm2022/c8y-ngx-components-tenants.mjs +40 -40
  337. package/fesm2022/c8y-ngx-components-tenants.mjs.map +1 -1
  338. package/fesm2022/c8y-ngx-components-time-context.mjs +6 -6
  339. package/fesm2022/c8y-ngx-components-time-context.mjs.map +1 -1
  340. package/fesm2022/c8y-ngx-components-tracking.mjs +12 -12
  341. package/fesm2022/c8y-ngx-components-tracking.mjs.map +1 -1
  342. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +3 -3
  343. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs.map +1 -1
  344. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +12 -12
  345. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -1
  346. package/fesm2022/c8y-ngx-components-translation-editor.mjs +6 -6
  347. package/fesm2022/c8y-ngx-components-translation-editor.mjs.map +1 -1
  348. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +33 -33
  349. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  350. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs +4 -4
  351. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs.map +1 -1
  352. package/fesm2022/c8y-ngx-components-upgrade.mjs +41 -41
  353. package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
  354. package/fesm2022/c8y-ngx-components-user-roles.mjs +10 -10
  355. package/fesm2022/c8y-ngx-components-user-roles.mjs.map +1 -1
  356. package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs.map +1 -1
  357. package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs +4 -4
  358. package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs.map +1 -1
  359. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
  360. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs.map +1 -1
  361. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs.map +1 -1
  362. package/fesm2022/c8y-ngx-components-widgets-definitions-applications.mjs.map +1 -1
  363. package/fesm2022/c8y-ngx-components-widgets-definitions-asset-notes.mjs.map +1 -1
  364. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-legacy-welcome.mjs.map +1 -1
  365. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-welcome.mjs.map +1 -1
  366. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +3 -3
  367. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs.map +1 -1
  368. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -1
  369. package/fesm2022/c8y-ngx-components-widgets-definitions-device-control-message.mjs.map +1 -1
  370. package/fesm2022/c8y-ngx-components-widgets-definitions-device-management-welcome.mjs.map +1 -1
  371. package/fesm2022/c8y-ngx-components-widgets-definitions-help-and-service.mjs.map +1 -1
  372. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs +18 -14
  373. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs.map +1 -1
  374. package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs +4 -2
  375. package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs.map +1 -1
  376. package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs.map +1 -1
  377. package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs.map +1 -1
  378. package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs.map +1 -1
  379. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs.map +1 -1
  380. package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs +4 -2
  381. package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs.map +1 -1
  382. package/fesm2022/c8y-ngx-components-widgets-definitions-quick-links.mjs.map +1 -1
  383. package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs.map +1 -1
  384. package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs.map +1 -1
  385. package/fesm2022/c8y-ngx-components-widgets-definitions-three-d-rotation.mjs.map +1 -1
  386. package/fesm2022/c8y-ngx-components-widgets-definitions.mjs.map +1 -1
  387. package/fesm2022/c8y-ngx-components-widgets-device-management.mjs.map +1 -1
  388. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +22 -22
  389. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  390. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs +3 -3
  391. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs.map +1 -1
  392. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-legacy-welcome.mjs +3 -3
  393. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-legacy-welcome.mjs.map +1 -1
  394. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs +3 -3
  395. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs.map +1 -1
  396. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +6 -6
  397. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  398. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +50 -36
  399. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
  400. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs +3 -3
  401. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs.map +1 -1
  402. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs +7 -7
  403. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs.map +1 -1
  404. package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs +3 -3
  405. package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs.map +1 -1
  406. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs +22 -22
  407. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs.map +1 -1
  408. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs +9 -9
  409. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs.map +1 -1
  410. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +18 -18
  411. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
  412. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs +6 -6
  413. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs.map +1 -1
  414. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs +6 -6
  415. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs.map +1 -1
  416. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +9 -9
  417. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  418. package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs +9 -9
  419. package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs.map +1 -1
  420. package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs +18 -18
  421. package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs.map +1 -1
  422. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs +9 -9
  423. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs.map +1 -1
  424. package/fesm2022/c8y-ngx-components-widgets-import-export-config.mjs.map +1 -1
  425. package/fesm2022/c8y-ngx-components-widgets.mjs +4 -4
  426. package/fesm2022/c8y-ngx-components-widgets.mjs.map +1 -1
  427. package/fesm2022/c8y-ngx-components.mjs +1329 -1317
  428. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  429. package/icon-selector/icons/index.d.ts +1 -1
  430. package/icon-selector/icons/platform/index.d.ts +2 -2
  431. package/icon-selector/icons/platform/index.d.ts.map +1 -1
  432. package/locales/de.po +26 -3
  433. package/locales/es.po +26 -3
  434. package/locales/fr.po +26 -3
  435. package/locales/ja_JP.po +25 -3
  436. package/locales/ko.po +26 -3
  437. package/locales/locales.pot +22 -2
  438. package/locales/nl.po +26 -3
  439. package/locales/pl.po +26 -3
  440. package/locales/pt_BR.po +26 -3
  441. package/locales/zh_CN.po +26 -3
  442. package/locales/zh_TW.po +26 -3
  443. package/package.json +1 -1
  444. package/replace-device/replace-device.module.d.ts.map +1 -1
  445. package/sensor-phone/sensor-phone-modal/sensor-phone-modal.component.d.ts +6 -6
  446. package/sensor-phone/sensor-phone-modal/sensor-phone-modal.component.d.ts.map +1 -1
  447. package/sensor-phone/sensor-phone-modal/sensor-phone.model.d.ts +0 -1
  448. package/sensor-phone/sensor-phone-modal/sensor-phone.model.d.ts.map +1 -1
  449. package/sensor-phone/sensor-phone.module.d.ts +2 -3
  450. package/sensor-phone/sensor-phone.module.d.ts.map +1 -1
  451. package/widgets/definitions/datapoints-table/index.d.ts +1 -2
  452. package/widgets/definitions/datapoints-table/index.d.ts.map +1 -1
  453. package/widgets/definitions/html-widget/html-widget-config.factory.d.ts +1 -1
  454. package/widgets/definitions/html-widget/html-widget-config.factory.d.ts.map +1 -1
  455. package/widgets/definitions/image/index.d.ts +1 -1
  456. package/widgets/definitions/image/index.d.ts.map +1 -1
  457. package/widgets/definitions/markdown/index.d.ts +1 -1
  458. package/widgets/definitions/markdown/index.d.ts.map +1 -1
  459. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts.map +1 -1
  460. package/widgets/implementations/three-d-rotation/three-d-rotation-widget-view/three-d-rotation-widget-view.component.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-operations-operations-timeline.mjs","sources":["../../operations/operations-timeline/operations-timeline.component.ts","../../operations/operations-timeline/operations-timeline.component.html","../../operations/operations-timeline/operations-timeline.module.ts","../../operations/operations-timeline/c8y-ngx-components-operations-operations-timeline.ts"],"sourcesContent":["import { Component, Input, TemplateRef } from '@angular/core';\nimport { IOperation, IResultList } from '@c8y/client';\nimport {\n ForOfFilterPipe,\n OperationRealtimeService,\n EmptyStateComponent,\n ListGroupComponent,\n ForOfDirective,\n ListItemTimelineComponent,\n ListItemComponent,\n ListItemIconComponent,\n IconDirective,\n ListItemBodyComponent,\n ListItemCollapseComponent,\n C8yTranslateDirective,\n C8yTranslatePipe,\n DatePipe,\n HumanizePipe\n} from '@c8y/ngx-components';\nimport {\n OPERATION_STATUS_OPTIONS_MAP,\n OperationsService,\n OperationStatusOptionsMapShared\n} from '@c8y/ngx-components/operations/shared';\nimport { pipe } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { TooltipDirective } from 'ngx-bootstrap/tooltip';\nimport { NgClass, NgIf, NgTemplateOutlet, NgFor, JsonPipe, KeyValuePipe } from '@angular/common';\n\n@Component({\n selector: 'c8y-operations-timeline',\n templateUrl: 'operations-timeline.component.html',\n imports: [\n EmptyStateComponent,\n ListGroupComponent,\n ForOfDirective,\n ListItemTimelineComponent,\n ListItemComponent,\n ListItemIconComponent,\n IconDirective,\n TooltipDirective,\n NgClass,\n ListItemBodyComponent,\n NgIf,\n NgTemplateOutlet,\n ListItemCollapseComponent,\n C8yTranslateDirective,\n NgFor,\n JsonPipe,\n DatePipe,\n KeyValuePipe,\n C8yTranslatePipe,\n HumanizePipe\n ]\n})\nexport class OperationsTimelineComponent<B, F> {\n @Input()\n operations: IResultList<IOperation>;\n\n @Input()\n sourceId: string;\n\n @Input()\n filterPipe: ForOfFilterPipe<IOperation> = pipe(tap());\n\n @Input()\n bodyTemplate: TemplateRef<B>;\n\n @Input()\n footerTemplates: Array<TemplateRef<F>> = [];\n\n @Input()\n propertiesToHide: string[] = [];\n\n OPERATION_STATUS_OPTIONS_MAP: OperationStatusOptionsMapShared = OPERATION_STATUS_OPTIONS_MAP;\n\n constructor(\n public realtime: OperationRealtimeService,\n public operationsService: OperationsService\n ) {}\n}\n","<c8y-ui-empty-state\n [icon]=\"'c8y-energy'\"\n [title]=\"'No recent operations found.' | translate\"\n *ngIf=\"!operations?.data || !operations?.data?.length\"\n [horizontal]=\"true\"\n></c8y-ui-empty-state>\n<c8y-list-group>\n <c8y-li-timeline\n *c8yFor=\"\n let op of operations;\n pipe: filterPipe;\n realtime: realtime;\n realtimeOptions: { entityOrId: sourceId }\n \"\n >\n {{ op.creationTime | c8yDate: 'medium' }}\n <c8y-li\n #li\n (click)=\"li.toggleCollapsed()\"\n >\n <c8y-li-icon>\n <i\n [c8yIcon]=\"OPERATION_STATUS_OPTIONS_MAP[op.status].icon\"\n [tooltip]=\"op.status | translate\"\n container=\"body\"\n [ngClass]=\"OPERATION_STATUS_OPTIONS_MAP[op.status].styleClass\"\n [delay]=\"500\"\n ></i>\n </c8y-li-icon>\n <c8y-li-body>\n <div class=\"d-flex text-break-word\">\n <div>\n {{ op.status | translate }}\n <br class=\"visible-xs visible-sm\" />\n <ng-container\n *ngIf=\"bodyTemplate; else defaultBody\"\n [ngTemplateOutlet]=\"bodyTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: op }\"\n ></ng-container>\n <ng-template #defaultBody>\n <small>{{ op.description }}</small>\n </ng-template>\n </div>\n <div\n class=\"m-l-auto showOnHover\"\n *ngIf=\"op.status === 'PENDING'\"\n >\n <button\n class=\"btn btn-dot btn-dot--danger\"\n [attr.aria-label]=\"'Cancel operation' | translate\"\n tooltip=\"{{ 'Cancel operation' | translate }}\"\n placement=\"left\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"$event.stopPropagation(); operationsService.cancel(op)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </div>\n </c8y-li-body>\n\n <c8y-li-collapse>\n <div\n class=\"legend form-block\"\n translate\n >\n Details\n </div>\n <ul class=\"list-unstyled small\">\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngFor=\"let prop of operationsService.getStandardKeys(op) | keyvalue\"\n >\n <label class=\"small m-b-0 m-r-8 a-s-start\">\n {{ prop.value | translate }}\n </label>\n <span class=\"m-l-auto text-break-word\">\n {{ op[prop.key] | translate }}\n </span>\n </li>\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngFor=\"let key of operationsService.getNonStandardKeys(op, propertiesToHide)\"\n >\n <label class=\"small m-b-0 m-r-8 a-s-start\">\n {{ key | humanize | translate }}\n </label>\n <span class=\"m-l-auto text-code\">\n {{ op[key] | json }}\n </span>\n </li>\n </ul>\n <ng-container\n *ngFor=\"let footer of footerTemplates\"\n [ngTemplateOutlet]=\"footer\"\n [ngTemplateOutletContext]=\"{ $implicit: op }\"\n ></ng-container>\n </c8y-li-collapse>\n </c8y-li>\n </c8y-li-timeline>\n</c8y-list-group>\n","import { NgModule } from '@angular/core';\nimport { OperationsTimelineComponent } from './operations-timeline.component';\n\n/**\n * @deprecated Use `OperationsTimelineComponent` as a standalone component instead.\n */\n@NgModule({\n imports: [OperationsTimelineComponent],\n exports: [OperationsTimelineComponent]\n})\nexport class OperationsTimelineModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;MAuDa,2BAA2B,CAAA;IAqBtC,WACS,CAAA,QAAkC,EAClC,iBAAoC,EAAA;QADpC,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;AAf1B,QAAA,IAAA,CAAA,UAAU,GAAgC,IAAI,CAAC,GAAG,EAAE,CAAC;QAMrD,IAAe,CAAA,eAAA,GAA0B,EAAE;QAG3C,IAAgB,CAAA,gBAAA,GAAa,EAAE;QAE/B,IAA4B,CAAA,4BAAA,GAAoC,4BAA4B;;+GAnBjF,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,iRCvDxC,s0GAsGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDrEI,mBAAmB,EACnB,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,2DAClB,cAAc,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,gCAAA,EAAA,6BAAA,EAAA,oCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,yBAAyB,EAAA,QAAA,EAAA,yCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,iBAAiB,EACjB,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,wGACrB,aAAa,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,gBAAgB,EAChB,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,OAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,SAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,EACP,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,8FACrB,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,gBAAgB,EAChB,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,yBAAyB,6GACzB,qBAAqB,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,KAAK,EACL,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,QAAQ,wCACR,QAAQ,EAAA,IAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACR,YAAY,EACZ,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,gBAAgB,6CAChB,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAGH,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBA1BvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAE1B,OAAA,EAAA;wBACP,mBAAmB;wBACnB,kBAAkB;wBAClB,cAAc;wBACd,yBAAyB;wBACzB,iBAAiB;wBACjB,qBAAqB;wBACrB,aAAa;wBACb,gBAAgB;wBAChB,OAAO;wBACP,qBAAqB;wBACrB,IAAI;wBACJ,gBAAgB;wBAChB,yBAAyB;wBACzB,qBAAqB;wBACrB,KAAK;wBACL,QAAQ;wBACR,QAAQ;wBACR,YAAY;wBACZ,gBAAgB;wBAChB;AACD,qBAAA,EAAA,QAAA,EAAA,s0GAAA,EAAA;6HAID,UAAU,EAAA,CAAA;sBADT;gBAID,QAAQ,EAAA,CAAA;sBADP;gBAID,UAAU,EAAA,CAAA;sBADT;gBAID,YAAY,EAAA,CAAA;sBADX;gBAID,eAAe,EAAA,CAAA;sBADd;gBAID,gBAAgB,EAAA,CAAA;sBADf;;;AEpEH;;AAEG;MAKU,wBAAwB,CAAA;+GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAxB,wBAAwB,EAAA,OAAA,EAAA,CAHzB,2BAA2B,CAAA,EAAA,OAAA,EAAA,CAC3B,2BAA2B,CAAA,EAAA,CAAA,CAAA;AAE1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YAHzB,2BAA2B,CAAA,EAAA,CAAA,CAAA;;4FAG1B,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,2BAA2B,CAAC;oBACtC,OAAO,EAAE,CAAC,2BAA2B;AACtC,iBAAA;;;ACTD;;AAEG;;;;"}
1
+ {"version":3,"file":"c8y-ngx-components-operations-operations-timeline.mjs","sources":["../../operations/operations-timeline/operations-timeline.component.ts","../../operations/operations-timeline/operations-timeline.component.html","../../operations/operations-timeline/operations-timeline.module.ts","../../operations/operations-timeline/c8y-ngx-components-operations-operations-timeline.ts"],"sourcesContent":["import { Component, Input, TemplateRef } from '@angular/core';\nimport { IOperation, IResultList } from '@c8y/client';\nimport {\n ForOfFilterPipe,\n OperationRealtimeService,\n EmptyStateComponent,\n ListGroupComponent,\n ForOfDirective,\n ListItemTimelineComponent,\n ListItemComponent,\n ListItemIconComponent,\n IconDirective,\n ListItemBodyComponent,\n ListItemCollapseComponent,\n C8yTranslateDirective,\n C8yTranslatePipe,\n DatePipe,\n HumanizePipe\n} from '@c8y/ngx-components';\nimport {\n OPERATION_STATUS_OPTIONS_MAP,\n OperationsService,\n OperationStatusOptionsMapShared\n} from '@c8y/ngx-components/operations/shared';\nimport { pipe } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { TooltipDirective } from 'ngx-bootstrap/tooltip';\nimport { NgClass, NgIf, NgTemplateOutlet, NgFor, JsonPipe, KeyValuePipe } from '@angular/common';\n\n@Component({\n selector: 'c8y-operations-timeline',\n templateUrl: 'operations-timeline.component.html',\n imports: [\n EmptyStateComponent,\n ListGroupComponent,\n ForOfDirective,\n ListItemTimelineComponent,\n ListItemComponent,\n ListItemIconComponent,\n IconDirective,\n TooltipDirective,\n NgClass,\n ListItemBodyComponent,\n NgIf,\n NgTemplateOutlet,\n ListItemCollapseComponent,\n C8yTranslateDirective,\n NgFor,\n JsonPipe,\n DatePipe,\n KeyValuePipe,\n C8yTranslatePipe,\n HumanizePipe\n ]\n})\nexport class OperationsTimelineComponent<B, F> {\n @Input()\n operations: IResultList<IOperation>;\n\n @Input()\n sourceId: string;\n\n @Input()\n filterPipe: ForOfFilterPipe<IOperation> = pipe(tap());\n\n @Input()\n bodyTemplate: TemplateRef<B>;\n\n @Input()\n footerTemplates: Array<TemplateRef<F>> = [];\n\n @Input()\n propertiesToHide: string[] = [];\n\n OPERATION_STATUS_OPTIONS_MAP: OperationStatusOptionsMapShared = OPERATION_STATUS_OPTIONS_MAP;\n\n constructor(\n public realtime: OperationRealtimeService,\n public operationsService: OperationsService\n ) {}\n}\n","<c8y-ui-empty-state\n [icon]=\"'c8y-energy'\"\n [title]=\"'No recent operations found.' | translate\"\n *ngIf=\"!operations?.data || !operations?.data?.length\"\n [horizontal]=\"true\"\n></c8y-ui-empty-state>\n<c8y-list-group>\n <c8y-li-timeline\n *c8yFor=\"\n let op of operations;\n pipe: filterPipe;\n realtime: realtime;\n realtimeOptions: { entityOrId: sourceId }\n \"\n >\n {{ op.creationTime | c8yDate: 'medium' }}\n <c8y-li\n #li\n (click)=\"li.toggleCollapsed()\"\n >\n <c8y-li-icon>\n <i\n [c8yIcon]=\"OPERATION_STATUS_OPTIONS_MAP[op.status].icon\"\n [tooltip]=\"op.status | translate\"\n container=\"body\"\n [ngClass]=\"OPERATION_STATUS_OPTIONS_MAP[op.status].styleClass\"\n [delay]=\"500\"\n ></i>\n </c8y-li-icon>\n <c8y-li-body>\n <div class=\"d-flex text-break-word\">\n <div>\n {{ op.status | translate }}\n <br class=\"visible-xs visible-sm\" />\n <ng-container\n *ngIf=\"bodyTemplate; else defaultBody\"\n [ngTemplateOutlet]=\"bodyTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: op }\"\n ></ng-container>\n <ng-template #defaultBody>\n <small>{{ op.description }}</small>\n </ng-template>\n </div>\n <div\n class=\"m-l-auto showOnHover\"\n *ngIf=\"op.status === 'PENDING'\"\n >\n <button\n class=\"btn btn-dot btn-dot--danger\"\n [attr.aria-label]=\"'Cancel operation' | translate\"\n tooltip=\"{{ 'Cancel operation' | translate }}\"\n placement=\"left\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"$event.stopPropagation(); operationsService.cancel(op)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </div>\n </c8y-li-body>\n\n <c8y-li-collapse>\n <div\n class=\"legend form-block\"\n translate\n >\n Details\n </div>\n <ul class=\"list-unstyled small\">\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngFor=\"let prop of operationsService.getStandardKeys(op) | keyvalue\"\n >\n <label class=\"small m-b-0 m-r-8 a-s-start\">\n {{ prop.value | translate }}\n </label>\n <span class=\"m-l-auto text-break-word\">\n {{ op[prop.key] | translate }}\n </span>\n </li>\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngFor=\"let key of operationsService.getNonStandardKeys(op, propertiesToHide)\"\n >\n <label class=\"small m-b-0 m-r-8 a-s-start\">\n {{ key | humanize | translate }}\n </label>\n <span class=\"m-l-auto text-code\">\n {{ op[key] | json }}\n </span>\n </li>\n </ul>\n <ng-container\n *ngFor=\"let footer of footerTemplates\"\n [ngTemplateOutlet]=\"footer\"\n [ngTemplateOutletContext]=\"{ $implicit: op }\"\n ></ng-container>\n </c8y-li-collapse>\n </c8y-li>\n </c8y-li-timeline>\n</c8y-list-group>\n","import { NgModule } from '@angular/core';\nimport { OperationsTimelineComponent } from './operations-timeline.component';\n\n/**\n * @deprecated Use `OperationsTimelineComponent` as a standalone component instead.\n */\n@NgModule({\n imports: [OperationsTimelineComponent],\n exports: [OperationsTimelineComponent]\n})\nexport class OperationsTimelineModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-operations-product-experience.mjs","sources":["../../operations/product-experience/operations-product-experience.constants.ts","../../operations/product-experience/c8y-ngx-components-operations-product-experience.ts"],"sourcesContent":["const DEVICE_CONTROL_EVENT_PREFIX = 'deviceControl';\nconst DEVICE_CONTROL_EVENT_SINGLE_PREFIX = `${DEVICE_CONTROL_EVENT_PREFIX}:single`;\n\n/* Event names */\nexport const SINGLE_OPERATION_EVENT_OVERVIEW = `${DEVICE_CONTROL_EVENT_SINGLE_PREFIX}:overview`;\nexport const SINGLE_OPERATION_EVENT_DEVICE_TAB = `${DEVICE_CONTROL_EVENT_SINGLE_PREFIX}:deviceTab`;\nexport const BULK_OPERATION_EVENT = `${DEVICE_CONTROL_EVENT_PREFIX}:bulk`;\n\n/* Actions */\nexport const ACTIONS_OPERATIONS = {\n FILTER: 'filter',\n OPEN_OPERATION_DETAILS: 'openOperationDetails',\n RETRY: 'retry'\n} as const;\n\nexport const ACTIONS_OPERATIONS__SINGLE = {\n SCHEDULE_AS_BULK_OPERATION: 'scheduleAsBulkOperation'\n} as const;\n\nexport const ACTIONS_OPERATIONS_BULK = {\n OPEN_ADD_BULK_OPERATION_DIALOG: 'openAddBulkOperationDialog',\n CANCEL_ADD_BULK_OPERATION_DIALOG: 'cancelAddBulkOperationDialog',\n SELECT_BULK_OPERTION_TYPE: 'selectBulkOperationType'\n} as const;\n\n/* Components */\nexport const COMPONENTS = {\n OPERATION_DETAILS: 'operation-details',\n SINGLE_OPERATION_ITEM: 'single-operation-item'\n} as const;\n\n/* Add bulk operation dialog steps */\nexport const BULK_OPERATION_DIALOG_STEPS = {\n SELECT_OPERATION_TYPE: 'selectOperationType'\n} as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA,MAAM,2BAA2B,GAAG,eAAe;AACnD,MAAM,kCAAkC,GAAG,CAAG,EAAA,2BAA2B,SAAS;AAElF;AACa,MAAA,+BAA+B,GAAG,CAAG,EAAA,kCAAkC;AACvE,MAAA,iCAAiC,GAAG,CAAG,EAAA,kCAAkC;AACzE,MAAA,oBAAoB,GAAG,CAAG,EAAA,2BAA2B;AAElE;AACa,MAAA,kBAAkB,GAAG;AAChC,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,sBAAsB,EAAE,sBAAsB;AAC9C,IAAA,KAAK,EAAE;;AAGI,MAAA,0BAA0B,GAAG;AACxC,IAAA,0BAA0B,EAAE;;AAGjB,MAAA,uBAAuB,GAAG;AACrC,IAAA,8BAA8B,EAAE,4BAA4B;AAC5D,IAAA,gCAAgC,EAAE,8BAA8B;AAChE,IAAA,yBAAyB,EAAE;;AAG7B;AACa,MAAA,UAAU,GAAG;AACxB,IAAA,iBAAiB,EAAE,mBAAmB;AACtC,IAAA,qBAAqB,EAAE;;AAGzB;AACa,MAAA,2BAA2B,GAAG;AACzC,IAAA,qBAAqB,EAAE;;;ACjCzB;;AAEG;;;;"}
1
+ {"version":3,"file":"c8y-ngx-components-operations-product-experience.mjs","sources":["../../operations/product-experience/operations-product-experience.constants.ts","../../operations/product-experience/c8y-ngx-components-operations-product-experience.ts"],"sourcesContent":["const DEVICE_CONTROL_EVENT_PREFIX = 'deviceControl';\nconst DEVICE_CONTROL_EVENT_SINGLE_PREFIX = `${DEVICE_CONTROL_EVENT_PREFIX}:single`;\n\n/* Event names */\nexport const SINGLE_OPERATION_EVENT_OVERVIEW = `${DEVICE_CONTROL_EVENT_SINGLE_PREFIX}:overview`;\nexport const SINGLE_OPERATION_EVENT_DEVICE_TAB = `${DEVICE_CONTROL_EVENT_SINGLE_PREFIX}:deviceTab`;\nexport const BULK_OPERATION_EVENT = `${DEVICE_CONTROL_EVENT_PREFIX}:bulk`;\n\n/* Actions */\nexport const ACTIONS_OPERATIONS = {\n FILTER: 'filter',\n OPEN_OPERATION_DETAILS: 'openOperationDetails',\n RETRY: 'retry'\n} as const;\n\nexport const ACTIONS_OPERATIONS__SINGLE = {\n SCHEDULE_AS_BULK_OPERATION: 'scheduleAsBulkOperation'\n} as const;\n\nexport const ACTIONS_OPERATIONS_BULK = {\n OPEN_ADD_BULK_OPERATION_DIALOG: 'openAddBulkOperationDialog',\n CANCEL_ADD_BULK_OPERATION_DIALOG: 'cancelAddBulkOperationDialog',\n SELECT_BULK_OPERTION_TYPE: 'selectBulkOperationType'\n} as const;\n\n/* Components */\nexport const COMPONENTS = {\n OPERATION_DETAILS: 'operation-details',\n SINGLE_OPERATION_ITEM: 'single-operation-item'\n} as const;\n\n/* Add bulk operation dialog steps */\nexport const BULK_OPERATION_DIALOG_STEPS = {\n SELECT_OPERATION_TYPE: 'selectOperationType'\n} as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA,MAAM,2BAA2B,GAAG,eAAe;AACnD,MAAM,kCAAkC,GAAG,CAAA,EAAG,2BAA2B,SAAS;AAElF;AACO,MAAM,+BAA+B,GAAG,CAAA,EAAG,kCAAkC;AAC7E,MAAM,iCAAiC,GAAG,CAAA,EAAG,kCAAkC;AAC/E,MAAM,oBAAoB,GAAG,CAAA,EAAG,2BAA2B;AAElE;AACO,MAAM,kBAAkB,GAAG;AAChC,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,sBAAsB,EAAE,sBAAsB;AAC9C,IAAA,KAAK,EAAE;;AAGF,MAAM,0BAA0B,GAAG;AACxC,IAAA,0BAA0B,EAAE;;AAGvB,MAAM,uBAAuB,GAAG;AACrC,IAAA,8BAA8B,EAAE,4BAA4B;AAC5D,IAAA,gCAAgC,EAAE,8BAA8B;AAChE,IAAA,yBAAyB,EAAE;;AAG7B;AACO,MAAM,UAAU,GAAG;AACxB,IAAA,iBAAiB,EAAE,mBAAmB;AACtC,IAAA,qBAAqB,EAAE;;AAGzB;AACO,MAAM,2BAA2B,GAAG;AACzC,IAAA,qBAAqB,EAAE;;;ACjCzB;;AAEG;;;;"}
@@ -27,10 +27,10 @@ class OperationsNavigationFactory {
27
27
  }
28
28
  return this.navs;
29
29
  }
30
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: OperationsNavigationFactory, deps: [{ token: DEVICE_CONTROL_NAVIGATOR_NODE_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
31
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: OperationsNavigationFactory }); }
30
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: OperationsNavigationFactory, deps: [{ token: DEVICE_CONTROL_NAVIGATOR_NODE_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
31
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: OperationsNavigationFactory }); }
32
32
  }
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: OperationsNavigationFactory, decorators: [{
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: OperationsNavigationFactory, decorators: [{
34
34
  type: Injectable
35
35
  }], ctorParameters: () => [{ type: i2.NavigatorNode, decorators: [{
36
36
  type: Optional
@@ -112,20 +112,20 @@ class OperationsService {
112
112
  getKeys(managedObject) {
113
113
  return Object.keys({ ...managedObject }).filter(key => !includes(RESERVED_KEYS, key));
114
114
  }
115
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: OperationsService, deps: [{ token: i1.OperationService }, { token: i2.ModalService }, { token: i2.AlertService }], target: i0.ɵɵFactoryTarget.Injectable }); }
116
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: OperationsService, providedIn: 'root' }); }
115
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: OperationsService, deps: [{ token: i1.OperationService }, { token: i2.ModalService }, { token: i2.AlertService }], target: i0.ɵɵFactoryTarget.Injectable }); }
116
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: OperationsService, providedIn: 'root' }); }
117
117
  }
118
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: OperationsService, decorators: [{
118
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: OperationsService, decorators: [{
119
119
  type: Injectable,
120
120
  args: [{ providedIn: 'root' }]
121
121
  }], ctorParameters: () => [{ type: i1.OperationService }, { type: i2.ModalService }, { type: i2.AlertService }] });
122
122
 
123
123
  class OperationsSharedModule {
124
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: OperationsSharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
125
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: OperationsSharedModule }); }
126
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: OperationsSharedModule, providers: [OperationsService] }); }
124
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: OperationsSharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
125
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: OperationsSharedModule }); }
126
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: OperationsSharedModule, providers: [OperationsService] }); }
127
127
  }
128
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: OperationsSharedModule, decorators: [{
128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: OperationsSharedModule, decorators: [{
129
129
  type: NgModule,
130
130
  args: [{
131
131
  providers: [OperationsService]
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-operations-shared.mjs","sources":["../../operations/shared/nav.factory.ts","../../operations/shared/operations.model.ts","../../operations/shared/operations.service.ts","../../operations/shared/operations-shared.module.ts","../../operations/shared/c8y-ngx-components-operations-shared.ts"],"sourcesContent":["import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';\nimport { gettext, NavigatorNode, NavigatorNodeFactory } from '@c8y/ngx-components';\nimport { isNil, omitBy } from 'lodash-es';\n\nexport const DEVICE_CONTROL_NAVIGATOR_NODE_CONFIG = new InjectionToken<Partial<NavigatorNode>>(\n 'DEVICE_CONTROL_NAVIGATOR_NODE_CONFIG'\n);\n\n@Injectable()\nexport class OperationsNavigationFactory implements NavigatorNodeFactory {\n navs: NavigatorNode[] = [];\n\n constructor(\n @Optional() @Inject(DEVICE_CONTROL_NAVIGATOR_NODE_CONFIG) private config: NavigatorNode\n ) {}\n\n async get() {\n if (this.navs.length === 0) {\n this.navs.push(\n new NavigatorNode({\n ...{\n label: gettext('Device control'),\n path: 'devicecontrol/single',\n icon: 'c8y-icon c8y-icon-device-control',\n parent: gettext('Overviews'),\n priority: 1360\n },\n ...omitBy(this.config, isNil)\n })\n );\n }\n return this.navs;\n }\n}\n","import { OperationStatus } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components';\nimport { OperationStatusOption } from './status-option.model';\n\nexport const OPERATION_STATUS_LABELS = {\n PENDING: gettext('Pending'),\n EXECUTING: gettext('Executing'),\n FAILED: gettext('Failed'),\n SUCCESSFUL: gettext('Successful')\n};\n\nexport type OperationStatusOptionsMapShared = {\n [key in keyof typeof OperationStatus]?: OperationStatusOption;\n};\n\nexport const OPERATION_STATUS_OPTIONS_MAP: OperationStatusOptionsMapShared = {\n PENDING: {\n label: OPERATION_STATUS_LABELS.PENDING,\n status: OperationStatus.PENDING,\n icon: 'clock-o',\n styleClass: ''\n } as unknown as OperationStatusOption,\n EXECUTING: {\n label: OPERATION_STATUS_LABELS.EXECUTING,\n status: OperationStatus.EXECUTING,\n icon: 'refresh',\n styleClass: 'text-info'\n } as unknown as OperationStatusOption,\n SUCCESSFUL: {\n label: OPERATION_STATUS_LABELS.SUCCESSFUL,\n status: OperationStatus.SUCCESSFUL,\n icon: 'check-circle',\n styleClass: 'text-success'\n } as unknown as OperationStatusOption,\n FAILED: {\n label: OPERATION_STATUS_LABELS.FAILED,\n status: OperationStatus.FAILED,\n icon: 'exclamation-circle',\n styleClass: 'text-danger'\n } as unknown as OperationStatusOption\n};\n\nexport const CLEAN_KEYS = ['creationTime', 'deviceExternalIDs', 'id', 'self'];\n\nexport const CLEAN_KEYS_UPDATE = ['deviceId', 'deviceName', 'bulkOperationId'];\n\nexport const RESERVED_KEYS = CLEAN_KEYS.concat(['deviceId', 'deviceName', 'bulkOperationId']);\n\nexport const STANDARD_KEYS = {\n failureReason: gettext('Failure reason'),\n description: gettext('Description'),\n status: gettext('Status')\n};\n","import { Injectable } from '@angular/core';\nimport { IOperation, OperationService, OperationStatus } from '@c8y/client';\nimport { AlertService, gettext, ModalService, Status } from '@c8y/ngx-components';\nimport { assign, difference, has, includes, keys, pickBy, without } from 'lodash-es';\nimport { RESERVED_KEYS, STANDARD_KEYS } from './operations.model';\n\n@Injectable({ providedIn: 'root' })\nexport class OperationsService {\n constructor(\n private operationService: OperationService,\n private modal: ModalService,\n private alertService: AlertService\n ) {}\n\n getStandardKeys(operation: IOperation) {\n return pickBy(STANDARD_KEYS, (_, key) => has(operation, key));\n }\n\n getNonStandardKeys(operation: IOperation, excluding: string[] = []) {\n return without(\n difference(this.getKeys(operation), keys(this.getStandardKeys(operation))),\n ...excluding\n );\n }\n\n async cancel(operation: Partial<IOperation>) {\n try {\n await this.modal.confirm(\n gettext('Cancel operation'),\n gettext('You are about to cancel the operation. Do you want to proceed?'),\n Status.DANGER\n );\n\n const operationAfterUpdate = (\n await this.operationService.update({\n id: operation.id,\n status: OperationStatus.FAILED,\n failureReason: gettext('Operation cancelled by user.')\n })\n ).data;\n assign(operation, operationAfterUpdate);\n this.alertService.success(gettext('Operation cancelled.'));\n } catch (er) {\n if (er) {\n this.alertService.addServerFailure(er);\n }\n }\n }\n\n private getKeys(managedObject) {\n return Object.keys({ ...managedObject }).filter(key => !includes(RESERVED_KEYS, key));\n }\n}\n","import { NgModule } from '@angular/core';\nimport { OperationsService } from './operations.service';\n\n@NgModule({\n providers: [OperationsService]\n})\nexport class OperationsSharedModule {}\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-shared.mjs","sources":["../../operations/shared/nav.factory.ts","../../operations/shared/operations.model.ts","../../operations/shared/operations.service.ts","../../operations/shared/operations-shared.module.ts","../../operations/shared/c8y-ngx-components-operations-shared.ts"],"sourcesContent":["import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';\nimport { gettext, NavigatorNode, NavigatorNodeFactory } from '@c8y/ngx-components';\nimport { isNil, omitBy } from 'lodash-es';\n\nexport const DEVICE_CONTROL_NAVIGATOR_NODE_CONFIG = new InjectionToken<Partial<NavigatorNode>>(\n 'DEVICE_CONTROL_NAVIGATOR_NODE_CONFIG'\n);\n\n@Injectable()\nexport class OperationsNavigationFactory implements NavigatorNodeFactory {\n navs: NavigatorNode[] = [];\n\n constructor(\n @Optional() @Inject(DEVICE_CONTROL_NAVIGATOR_NODE_CONFIG) private config: NavigatorNode\n ) {}\n\n async get() {\n if (this.navs.length === 0) {\n this.navs.push(\n new NavigatorNode({\n ...{\n label: gettext('Device control'),\n path: 'devicecontrol/single',\n icon: 'c8y-icon c8y-icon-device-control',\n parent: gettext('Overviews'),\n priority: 1360\n },\n ...omitBy(this.config, isNil)\n })\n );\n }\n return this.navs;\n }\n}\n","import { OperationStatus } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components';\nimport { OperationStatusOption } from './status-option.model';\n\nexport const OPERATION_STATUS_LABELS = {\n PENDING: gettext('Pending'),\n EXECUTING: gettext('Executing'),\n FAILED: gettext('Failed'),\n SUCCESSFUL: gettext('Successful')\n};\n\nexport type OperationStatusOptionsMapShared = {\n [key in keyof typeof OperationStatus]?: OperationStatusOption;\n};\n\nexport const OPERATION_STATUS_OPTIONS_MAP: OperationStatusOptionsMapShared = {\n PENDING: {\n label: OPERATION_STATUS_LABELS.PENDING,\n status: OperationStatus.PENDING,\n icon: 'clock-o',\n styleClass: ''\n } as unknown as OperationStatusOption,\n EXECUTING: {\n label: OPERATION_STATUS_LABELS.EXECUTING,\n status: OperationStatus.EXECUTING,\n icon: 'refresh',\n styleClass: 'text-info'\n } as unknown as OperationStatusOption,\n SUCCESSFUL: {\n label: OPERATION_STATUS_LABELS.SUCCESSFUL,\n status: OperationStatus.SUCCESSFUL,\n icon: 'check-circle',\n styleClass: 'text-success'\n } as unknown as OperationStatusOption,\n FAILED: {\n label: OPERATION_STATUS_LABELS.FAILED,\n status: OperationStatus.FAILED,\n icon: 'exclamation-circle',\n styleClass: 'text-danger'\n } as unknown as OperationStatusOption\n};\n\nexport const CLEAN_KEYS = ['creationTime', 'deviceExternalIDs', 'id', 'self'];\n\nexport const CLEAN_KEYS_UPDATE = ['deviceId', 'deviceName', 'bulkOperationId'];\n\nexport const RESERVED_KEYS = CLEAN_KEYS.concat(['deviceId', 'deviceName', 'bulkOperationId']);\n\nexport const STANDARD_KEYS = {\n failureReason: gettext('Failure reason'),\n description: gettext('Description'),\n status: gettext('Status')\n};\n","import { Injectable } from '@angular/core';\nimport { IOperation, OperationService, OperationStatus } from '@c8y/client';\nimport { AlertService, gettext, ModalService, Status } from '@c8y/ngx-components';\nimport { assign, difference, has, includes, keys, pickBy, without } from 'lodash-es';\nimport { RESERVED_KEYS, STANDARD_KEYS } from './operations.model';\n\n@Injectable({ providedIn: 'root' })\nexport class OperationsService {\n constructor(\n private operationService: OperationService,\n private modal: ModalService,\n private alertService: AlertService\n ) {}\n\n getStandardKeys(operation: IOperation) {\n return pickBy(STANDARD_KEYS, (_, key) => has(operation, key));\n }\n\n getNonStandardKeys(operation: IOperation, excluding: string[] = []) {\n return without(\n difference(this.getKeys(operation), keys(this.getStandardKeys(operation))),\n ...excluding\n );\n }\n\n async cancel(operation: Partial<IOperation>) {\n try {\n await this.modal.confirm(\n gettext('Cancel operation'),\n gettext('You are about to cancel the operation. Do you want to proceed?'),\n Status.DANGER\n );\n\n const operationAfterUpdate = (\n await this.operationService.update({\n id: operation.id,\n status: OperationStatus.FAILED,\n failureReason: gettext('Operation cancelled by user.')\n })\n ).data;\n assign(operation, operationAfterUpdate);\n this.alertService.success(gettext('Operation cancelled.'));\n } catch (er) {\n if (er) {\n this.alertService.addServerFailure(er);\n }\n }\n }\n\n private getKeys(managedObject) {\n return Object.keys({ ...managedObject }).filter(key => !includes(RESERVED_KEYS, key));\n }\n}\n","import { NgModule } from '@angular/core';\nimport { OperationsService } from './operations.service';\n\n@NgModule({\n providers: [OperationsService]\n})\nexport class OperationsSharedModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -91,15 +91,15 @@ class StatusFilterComponent {
91
91
  emitSelectedOptions() {
92
92
  this.onFilterChanged.emit(this.statusOptions.filter(option => option.selected).map(option => option.option));
93
93
  }
94
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StatusFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
95
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: StatusFilterComponent, isStandalone: true, selector: "c8y-status-filter", inputs: { options: "options", _multiple: ["multiple", "_multiple"], _small: ["small", "_small"] }, outputs: { onFilterChanged: "onFilterChanged" }, host: { properties: { "class.btn-group-sm": "this.displaySmall" } }, providers: [
94
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StatusFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
95
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: StatusFilterComponent, isStandalone: true, selector: "c8y-status-filter", inputs: { options: "options", _multiple: ["multiple", "_multiple"], _small: ["small", "_small"] }, outputs: { onFilterChanged: "onFilterChanged" }, host: { properties: { "class.btn-group-sm": "this.displaySmall" } }, providers: [
96
96
  {
97
97
  provide: PRODUCT_EXPERIENCE_EVENT_SOURCE,
98
98
  useExisting: forwardRef(() => StatusFilterComponent)
99
99
  }
100
100
  ], ngImport: i0, template: "<div dropdown placement=\"bottom left\" class=\"dropdown c8y-child-assets-selector\">\n <button\n class=\"btn dropdown-toggle d-flex a-i-center c8y-dropdown\"\n type=\"button\"\n title=\"{{ 'Status filter' | translate }}\"\n dropdownToggle\n >\n <span *ngFor=\"let option of statusOptions\" class=\"d-contents\">\n <span class=\"text-truncate\" *ngIf=\"option.selected\">\n <i [c8yIcon]=\"option.option.icon\" [ngClass]=\"option.option.styleClass\"></i>\n <span class=\"m-l-4\">{{ option.option.label | translate }}</span>\n </span>\n </span>\n <span class=\"text-truncate\" *ngIf=\"isAllButtonSelected\">\n <i c8yIcon=\"c8y-energy\" class=\"m-r-4 text-info\"></i>\n {{ 'All statuses' | translate }}\n </span>\n </button>\n <ul\n id=\"dropdown-status-filter\"\n *dropdownMenu\n class=\"dropdown-menu\"\n role=\"menu\"\n aria-labelledby=\"status-filter\"\n >\n <li *ngFor=\"let option of statusOptions\" [ngClass]=\"{ active: option.selected }\">\n <button\n type=\"button\"\n [title]=\"option.option.label | translate\"\n (click)=\"changeFilter(option)\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: ACTIONS.FILTER,\n filterBy: 'status',\n filterValue: option.option.label\n }\"\n >\n <i [c8yIcon]=\"option.option.icon\" [ngClass]=\"option.option.styleClass\"></i>\n <span class=\"m-l-4\">{{ option.option.label | translate }}</span>\n </button>\n </li>\n <li [ngClass]=\"{ active: isAllButtonSelected }\">\n <button\n type=\"button\"\n title=\"{{ 'All statuses' | translate }}\"\n (click)=\"removeFilter()\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: ACTIONS.FILTER,\n filterBy: 'status'\n }\"\n >\n <i c8yIcon=\"c8y-energy\" class=\"m-r-4 text-info\"></i>\n {{ 'All statuses' | translate }}\n </button>\n </li>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
101
101
  }
102
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StatusFilterComponent, decorators: [{
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StatusFilterComponent, decorators: [{
103
103
  type: Component,
104
104
  args: [{ selector: 'c8y-status-filter', providers: [
105
105
  {
@@ -136,11 +136,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
136
136
  * This module provides a component for selecting status filter.
137
137
  */
138
138
  class StatusFilterModule {
139
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StatusFilterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
140
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: StatusFilterModule, imports: [StatusFilterComponent], exports: [StatusFilterComponent] }); }
141
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StatusFilterModule }); }
139
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StatusFilterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
140
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: StatusFilterModule, imports: [StatusFilterComponent], exports: [StatusFilterComponent] }); }
141
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StatusFilterModule }); }
142
142
  }
143
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StatusFilterModule, decorators: [{
143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StatusFilterModule, decorators: [{
144
144
  type: NgModule,
145
145
  args: [{
146
146
  imports: [StatusFilterComponent],
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-operations-status-filter.mjs","sources":["../../operations/status-filter/status-filter.component.ts","../../operations/status-filter/status-filter.component.html","../../operations/status-filter/status-filter.module.ts","../../operations/status-filter/c8y-ngx-components-operations-status-filter.ts"],"sourcesContent":["import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Component, EventEmitter, forwardRef, HostBinding, Input, Output } from '@angular/core';\nimport {\n ProductExperienceEvent,\n ProductExperienceEventSource,\n PRODUCT_EXPERIENCE_EVENT_SOURCE,\n IconDirective,\n ProductExperienceDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { ACTIONS_OPERATIONS } from '@c8y/ngx-components/operations/product-experience';\nimport {\n OperationStatusOptionsMapShared,\n OperationStatusOption\n} from '@c8y/ngx-components/operations/shared';\nimport {\n BsDropdownDirective,\n BsDropdownToggleDirective,\n BsDropdownMenuDirective\n} from 'ngx-bootstrap/dropdown';\nimport { NgFor, NgIf, NgClass } from '@angular/common';\n\n@Component({\n selector: 'c8y-status-filter',\n templateUrl: './status-filter.component.html',\n providers: [\n {\n provide: PRODUCT_EXPERIENCE_EVENT_SOURCE,\n useExisting: forwardRef(() => StatusFilterComponent)\n }\n ],\n imports: [\n BsDropdownDirective,\n BsDropdownToggleDirective,\n NgFor,\n NgIf,\n IconDirective,\n NgClass,\n BsDropdownMenuDirective,\n ProductExperienceDirective,\n C8yTranslatePipe\n ]\n})\nexport class StatusFilterComponent implements ProductExperienceEventSource {\n ACTIONS = ACTIONS_OPERATIONS;\n productExperienceEvent: ProductExperienceEvent;\n statusOptions: Array<{ selected: boolean; option: OperationStatusOption }> = [];\n\n /** List of filter options to be displayed */\n @Input() set options(options: OperationStatusOptionsMapShared) {\n this.statusOptions = (Object.values(options) || []).map(option => ({\n selected: false,\n option\n }));\n }\n\n /**\n * Allows multiple options to be active simultaneosly.\n */\n @Input('multiple') set _multiple(multiple: boolean) {\n this.multiple = coerceBooleanProperty(multiple);\n }\n\n /** Display the filter as a small button group */\n @Input('small') set _small(small: boolean) {\n this.small = coerceBooleanProperty(small);\n }\n\n @HostBinding('class.btn-group-sm') get displaySmall() {\n return this.small;\n }\n\n @Output() onFilterChanged: EventEmitter<OperationStatusOption[]> = new EventEmitter();\n\n isAllButtonSelected = true;\n\n private multiple: boolean;\n private small: boolean;\n\n changeFilter(option: { selected: boolean; option: OperationStatusOption }) {\n this.isAllButtonSelected = false;\n let emitNeeded = false;\n\n if (this.multiple) {\n option.selected = !option.selected;\n emitNeeded = true;\n } else if (!option.selected) {\n option.selected = true;\n this.statusOptions.filter(op => op !== option).forEach(op => (op.selected = false));\n emitNeeded = true;\n }\n\n if (emitNeeded) {\n this.emitSelectedOptions();\n }\n }\n\n removeFilter() {\n this.isAllButtonSelected = true;\n this.statusOptions.forEach(op => (op.selected = false));\n\n this.emitSelectedOptions();\n }\n\n /**\n * Allows the filter to be initalliy displayed with some preset filters.\n *\n * @param filters An `StatusOption` array defining filter options to be preset.\n * @param emit (optional) If `true` component will emit `onFilterChanged` event.\n */\n preset(filters: OperationStatusOption[], emit = true) {\n let firstSelected = false;\n\n this.statusOptions.forEach(option => (option.selected = false));\n\n this.statusOptions\n .filter(option => (filters || []).map(o => o.label).includes(option.option.label))\n .filter(() => {\n // only first option passed will be set in single selection mode\n const include: boolean = this.multiple || !firstSelected;\n if (include) {\n firstSelected = true;\n }\n\n return include;\n })\n .forEach(option => (option.selected = true));\n\n this.isAllButtonSelected = !(filters && filters.length);\n\n if (emit) {\n this.emitSelectedOptions();\n }\n }\n\n reset() {\n this.removeFilter();\n }\n\n activeFilters(): OperationStatusOption[] {\n return this.statusOptions.filter(option => option.selected).map(option => option.option);\n }\n\n isFilterApplied(): boolean {\n return this.statusOptions.some(option => option.selected);\n }\n\n private emitSelectedOptions() {\n this.onFilterChanged.emit(\n this.statusOptions.filter(option => option.selected).map(option => option.option)\n );\n }\n}\n","<div dropdown placement=\"bottom left\" class=\"dropdown c8y-child-assets-selector\">\n <button\n class=\"btn dropdown-toggle d-flex a-i-center c8y-dropdown\"\n type=\"button\"\n title=\"{{ 'Status filter' | translate }}\"\n dropdownToggle\n >\n <span *ngFor=\"let option of statusOptions\" class=\"d-contents\">\n <span class=\"text-truncate\" *ngIf=\"option.selected\">\n <i [c8yIcon]=\"option.option.icon\" [ngClass]=\"option.option.styleClass\"></i>\n <span class=\"m-l-4\">{{ option.option.label | translate }}</span>\n </span>\n </span>\n <span class=\"text-truncate\" *ngIf=\"isAllButtonSelected\">\n <i c8yIcon=\"c8y-energy\" class=\"m-r-4 text-info\"></i>\n {{ 'All statuses' | translate }}\n </span>\n </button>\n <ul\n id=\"dropdown-status-filter\"\n *dropdownMenu\n class=\"dropdown-menu\"\n role=\"menu\"\n aria-labelledby=\"status-filter\"\n >\n <li *ngFor=\"let option of statusOptions\" [ngClass]=\"{ active: option.selected }\">\n <button\n type=\"button\"\n [title]=\"option.option.label | translate\"\n (click)=\"changeFilter(option)\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: ACTIONS.FILTER,\n filterBy: 'status',\n filterValue: option.option.label\n }\"\n >\n <i [c8yIcon]=\"option.option.icon\" [ngClass]=\"option.option.styleClass\"></i>\n <span class=\"m-l-4\">{{ option.option.label | translate }}</span>\n </button>\n </li>\n <li [ngClass]=\"{ active: isAllButtonSelected }\">\n <button\n type=\"button\"\n title=\"{{ 'All statuses' | translate }}\"\n (click)=\"removeFilter()\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: ACTIONS.FILTER,\n filterBy: 'status'\n }\"\n >\n <i c8yIcon=\"c8y-energy\" class=\"m-r-4 text-info\"></i>\n {{ 'All statuses' | translate }}\n </button>\n </li>\n </ul>\n</div>\n","import { NgModule } from '@angular/core';\nimport { StatusFilterComponent } from './status-filter.component';\n\n/**\n * This module provides a component for selecting status filter.\n */\n@NgModule({\n imports: [StatusFilterComponent],\n exports: [StatusFilterComponent]\n})\nexport class StatusFilterModule {}\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-status-filter.mjs","sources":["../../operations/status-filter/status-filter.component.ts","../../operations/status-filter/status-filter.component.html","../../operations/status-filter/status-filter.module.ts","../../operations/status-filter/c8y-ngx-components-operations-status-filter.ts"],"sourcesContent":["import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Component, EventEmitter, forwardRef, HostBinding, Input, Output } from '@angular/core';\nimport {\n ProductExperienceEvent,\n ProductExperienceEventSource,\n PRODUCT_EXPERIENCE_EVENT_SOURCE,\n IconDirective,\n ProductExperienceDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { ACTIONS_OPERATIONS } from '@c8y/ngx-components/operations/product-experience';\nimport {\n OperationStatusOptionsMapShared,\n OperationStatusOption\n} from '@c8y/ngx-components/operations/shared';\nimport {\n BsDropdownDirective,\n BsDropdownToggleDirective,\n BsDropdownMenuDirective\n} from 'ngx-bootstrap/dropdown';\nimport { NgFor, NgIf, NgClass } from '@angular/common';\n\n@Component({\n selector: 'c8y-status-filter',\n templateUrl: './status-filter.component.html',\n providers: [\n {\n provide: PRODUCT_EXPERIENCE_EVENT_SOURCE,\n useExisting: forwardRef(() => StatusFilterComponent)\n }\n ],\n imports: [\n BsDropdownDirective,\n BsDropdownToggleDirective,\n NgFor,\n NgIf,\n IconDirective,\n NgClass,\n BsDropdownMenuDirective,\n ProductExperienceDirective,\n C8yTranslatePipe\n ]\n})\nexport class StatusFilterComponent implements ProductExperienceEventSource {\n ACTIONS = ACTIONS_OPERATIONS;\n productExperienceEvent: ProductExperienceEvent;\n statusOptions: Array<{ selected: boolean; option: OperationStatusOption }> = [];\n\n /** List of filter options to be displayed */\n @Input() set options(options: OperationStatusOptionsMapShared) {\n this.statusOptions = (Object.values(options) || []).map(option => ({\n selected: false,\n option\n }));\n }\n\n /**\n * Allows multiple options to be active simultaneosly.\n */\n @Input('multiple') set _multiple(multiple: boolean) {\n this.multiple = coerceBooleanProperty(multiple);\n }\n\n /** Display the filter as a small button group */\n @Input('small') set _small(small: boolean) {\n this.small = coerceBooleanProperty(small);\n }\n\n @HostBinding('class.btn-group-sm') get displaySmall() {\n return this.small;\n }\n\n @Output() onFilterChanged: EventEmitter<OperationStatusOption[]> = new EventEmitter();\n\n isAllButtonSelected = true;\n\n private multiple: boolean;\n private small: boolean;\n\n changeFilter(option: { selected: boolean; option: OperationStatusOption }) {\n this.isAllButtonSelected = false;\n let emitNeeded = false;\n\n if (this.multiple) {\n option.selected = !option.selected;\n emitNeeded = true;\n } else if (!option.selected) {\n option.selected = true;\n this.statusOptions.filter(op => op !== option).forEach(op => (op.selected = false));\n emitNeeded = true;\n }\n\n if (emitNeeded) {\n this.emitSelectedOptions();\n }\n }\n\n removeFilter() {\n this.isAllButtonSelected = true;\n this.statusOptions.forEach(op => (op.selected = false));\n\n this.emitSelectedOptions();\n }\n\n /**\n * Allows the filter to be initalliy displayed with some preset filters.\n *\n * @param filters An `StatusOption` array defining filter options to be preset.\n * @param emit (optional) If `true` component will emit `onFilterChanged` event.\n */\n preset(filters: OperationStatusOption[], emit = true) {\n let firstSelected = false;\n\n this.statusOptions.forEach(option => (option.selected = false));\n\n this.statusOptions\n .filter(option => (filters || []).map(o => o.label).includes(option.option.label))\n .filter(() => {\n // only first option passed will be set in single selection mode\n const include: boolean = this.multiple || !firstSelected;\n if (include) {\n firstSelected = true;\n }\n\n return include;\n })\n .forEach(option => (option.selected = true));\n\n this.isAllButtonSelected = !(filters && filters.length);\n\n if (emit) {\n this.emitSelectedOptions();\n }\n }\n\n reset() {\n this.removeFilter();\n }\n\n activeFilters(): OperationStatusOption[] {\n return this.statusOptions.filter(option => option.selected).map(option => option.option);\n }\n\n isFilterApplied(): boolean {\n return this.statusOptions.some(option => option.selected);\n }\n\n private emitSelectedOptions() {\n this.onFilterChanged.emit(\n this.statusOptions.filter(option => option.selected).map(option => option.option)\n );\n }\n}\n","<div dropdown placement=\"bottom left\" class=\"dropdown c8y-child-assets-selector\">\n <button\n class=\"btn dropdown-toggle d-flex a-i-center c8y-dropdown\"\n type=\"button\"\n title=\"{{ 'Status filter' | translate }}\"\n dropdownToggle\n >\n <span *ngFor=\"let option of statusOptions\" class=\"d-contents\">\n <span class=\"text-truncate\" *ngIf=\"option.selected\">\n <i [c8yIcon]=\"option.option.icon\" [ngClass]=\"option.option.styleClass\"></i>\n <span class=\"m-l-4\">{{ option.option.label | translate }}</span>\n </span>\n </span>\n <span class=\"text-truncate\" *ngIf=\"isAllButtonSelected\">\n <i c8yIcon=\"c8y-energy\" class=\"m-r-4 text-info\"></i>\n {{ 'All statuses' | translate }}\n </span>\n </button>\n <ul\n id=\"dropdown-status-filter\"\n *dropdownMenu\n class=\"dropdown-menu\"\n role=\"menu\"\n aria-labelledby=\"status-filter\"\n >\n <li *ngFor=\"let option of statusOptions\" [ngClass]=\"{ active: option.selected }\">\n <button\n type=\"button\"\n [title]=\"option.option.label | translate\"\n (click)=\"changeFilter(option)\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: ACTIONS.FILTER,\n filterBy: 'status',\n filterValue: option.option.label\n }\"\n >\n <i [c8yIcon]=\"option.option.icon\" [ngClass]=\"option.option.styleClass\"></i>\n <span class=\"m-l-4\">{{ option.option.label | translate }}</span>\n </button>\n </li>\n <li [ngClass]=\"{ active: isAllButtonSelected }\">\n <button\n type=\"button\"\n title=\"{{ 'All statuses' | translate }}\"\n (click)=\"removeFilter()\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: ACTIONS.FILTER,\n filterBy: 'status'\n }\"\n >\n <i c8yIcon=\"c8y-energy\" class=\"m-r-4 text-info\"></i>\n {{ 'All statuses' | translate }}\n </button>\n </li>\n </ul>\n</div>\n","import { NgModule } from '@angular/core';\nimport { StatusFilterComponent } from './status-filter.component';\n\n/**\n * This module provides a component for selecting status filter.\n */\n@NgModule({\n imports: [StatusFilterComponent],\n exports: [StatusFilterComponent]\n})\nexport class StatusFilterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -84,10 +84,10 @@ class StepperBulkTypeConfigurationComponent extends BaseStepperComponent {
84
84
  }
85
85
  return this.repositoryService.listRepositoryEntries(RepositoryType.CONFIGURATION, { query });
86
86
  }
87
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StepperBulkTypeConfigurationComponent, deps: [{ token: i1.BulkOperationsService }, { token: i2.RepositoryService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
88
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: StepperBulkTypeConfigurationComponent, isStandalone: true, selector: "c8y-stepper-bulk-type-configuration", usesInheritance: true, ngImport: i0, template: "<c8y-bulk-operation-stepper [type]=\"type\">\n <ng-container\n *customStep=\"\n 'Select configuration' | translate;\n completed: !!selectedConfiguration;\n buttonsDisabled: !selectedConfiguration;\n onNext: goToSecondStep.bind(this)\n \"\n >\n <c8y-select-step-frame\n [header]=\"'Select configuration' | translate\"\n [noResults]=\"\n ((textFilter$ | async)?.length || (configType$ | async)?.length) &&\n (configurations$ | async)?.data.length === 0\n \"\n >\n <div\n class=\"row\"\n filters\n >\n <div class=\"col-md-6\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n title=\"{{ 'Filter\u2026' | translate }}\"\n placeholder=\"{{ 'Filter\u2026' | translate }}\"\n type=\"search\"\n [ngModel]=\"textFilter$ | async\"\n (ngModelChange)=\"textFilter$.next($event)\"\n />\n <span class=\"input-group-addon\">\n <i\n c8yIcon=\"search\"\n *ngIf=\"(textFilter$ | async).length === 0\"\n ></i>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n *ngIf=\"(textFilter$ | async).length > 0\"\n (click)=\"textFilter$.next('')\"\n ></i>\n </span>\n </div>\n </div>\n <div class=\"col-xs-12 p-b-8 visible-xs visible-sm\"></div>\n <div class=\"col-md-6\">\n <c8y-form-group class=\"m-0\">\n <c8y-typeahead\n placeholder=\"{{ 'Type to filter configuration types\u2026' | translate }}\"\n name=\"configType\"\n [(ngModel)]=\"selectedConfigType\"\n (onSearch)=\"configType$.next($event)\"\n >\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"selectedConfigType = { name: '' }; configType$.next('')\"\n >\n <span>{{ 'All configuration types' | translate }}</span>\n </c8y-li>\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n *ngFor=\"let configType of configTypes\"\n (click)=\"selectedConfigType = configType; configType$.next(configType.name)\"\n [active]=\"selectedConfigType === configType\"\n >\n <c8y-highlight\n [text]=\"configType.name\"\n [pattern]=\"configType$ | async\"\n ></c8y-highlight>\n </c8y-li>\n </c8y-typeahead>\n </c8y-form-group>\n </div>\n </div>\n <c8y-li\n class=\"hidden-sm hidden-xs m-r-8 m-l-8\"\n header\n >\n <c8y-li-icon><i class=\"p-l-32 p-r-40\"></i></c8y-li-icon>\n <c8y-li-body class=\"content-flex-40\">\n <div class=\"col-5\">\n <span\n class=\"text-truncate\"\n title=\" {{ 'Name' | translate }} \"\n >\n {{ 'Name' | translate }}\n </span>\n </div>\n <div class=\"col-4\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}\"\n >\n {{ 'Device type' | translate }}\n </span>\n </div>\n <div class=\"col-3\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Configuration type' | translate }}\"\n >\n {{ 'Configuration type' | translate }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n <c8y-list-group list>\n <c8y-li\n #listItem\n *c8yFor=\"let configuration of configurations$ | async\"\n >\n <c8y-li-radio (onSelect)=\"selectConfiguration(configuration)\"></c8y-li-radio>\n <c8y-li-icon icon=\"gears\"></c8y-li-icon>\n <c8y-li-body class=\"content-flex-40\">\n <div class=\"col-5 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ configuration.name || '-' }}\"\n >\n <c8y-highlight\n [text]=\"configuration.name || '-'\"\n [pattern]=\"textFilter$ | async\"\n ></c8y-highlight>\n </div>\n </div>\n <div class=\"col-4 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}: {{ getDeviceTypeTitle(configuration) }}\"\n >\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n Device type\n </span>\n {{ configuration.deviceType }}\n <em\n class=\"text-muted\"\n *ngIf=\"!configuration.deviceType\"\n >\n {{ 'Undefined`device type`' | translate }}\n </em>\n </div>\n </div>\n <div class=\"col-3 m-b-xs-8\">\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n Configuration type\n </span>\n <span\n class=\"label label-info\"\n title=\"{{ 'Configuration type' | translate }}: {{\n configuration.configurationType\n }}\"\n *ngIf=\"configuration.configurationType\"\n >\n <c8y-highlight\n [text]=\"configuration.configurationType\"\n elementClass=\"text-gray-lighter\"\n [pattern]=\"configType$ | async\"\n ></c8y-highlight>\n </span>\n <span\n class=\"label label-default\"\n title=\"{{ 'Configuration type' | translate }}: {{ 'Undefined' | translate }}\"\n *ngIf=\"!configuration.configurationType\"\n >\n {{ 'Undefined' | translate }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </c8y-select-step-frame>\n </ng-container>\n <ng-container *customStep=\"'Preview configuration' | translate\">\n <c8y-preview-selection-frame\n [header]=\"'Preview configuration' | translate\"\n [name]=\"selectedConfiguration?.name\"\n [type]=\"selectedConfiguration?.configurationType\"\n >\n <ng-container *previewBlock=\"'Device type' | translate\">\n <ng-container *ngIf=\"selectedConfiguration?.deviceType; else noType\">\n <span>{{ selectedConfiguration?.deviceType }}</span>\n </ng-container>\n <ng-template #noType>\n <em\n class=\"text-muted\"\n translate\n >\n Undefined`device type`\n </em>\n </ng-template>\n </ng-container>\n <ng-container *previewBlock=\"'Updated' | translate\">\n <span>{{ selectedConfiguration?.lastUpdated | c8yDate }}</span>\n </ng-container>\n <ng-container *previewBlock=\"'Preview' | translate\">\n <c8y-ui-empty-state\n [icon]=\"'file-code-o'\"\n [title]=\"'No preview available.' | translate\"\n [subtitle]=\"'Could not fetch the file.' | translate\"\n *ngIf=\"!this.selectedConfiguration?.binary; else binaryPreview\"\n ></c8y-ui-empty-state>\n <ng-template #binaryPreview>\n <pre style=\"min-height: 98px\"><code>{{ this.selectedConfiguration?.binary }}</code></pre>\n </ng-template>\n </ng-container>\n </c8y-preview-selection-frame>\n </ng-container>\n</c8y-bulk-operation-stepper>\n", dependencies: [{ kind: "component", type: BulkOperationStepper, selector: "c8y-bulk-operation-stepper", inputs: ["type"], outputs: ["selectionChange"] }, { kind: "directive", type: CustomStep, selector: "[customStep]", inputs: ["customStep", "customStepCompleted", "customStepButtonsDisabled", "customStepOnNext"] }, { kind: "component", type: SelectStepFrameComponent, selector: "c8y-select-step-frame", inputs: ["header", "noResults"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected", "title", "highlightFirstItem"], outputs: ["onSearch", "onIconClick"] }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "component", type: ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: ListGroupComponent, selector: "c8y-list-group" }, { kind: "directive", type: ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: ListItemRadioComponent, selector: "c8y-list-item-radio, c8y-li-radio", inputs: ["selected", "name", "disabled", "value"], outputs: ["onSelect"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: PreviewSelectionFrameComponent, selector: "c8y-preview-selection-frame", inputs: ["header", "name", "description", "type"] }, { kind: "directive", type: PreviewBlockDirective, selector: "[previewBlock]", inputs: ["previewBlock", "previewBlockIf"] }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: DatePipe, name: "c8yDate" }] }); }
87
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StepperBulkTypeConfigurationComponent, deps: [{ token: i1.BulkOperationsService }, { token: i2.RepositoryService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
88
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: StepperBulkTypeConfigurationComponent, isStandalone: true, selector: "c8y-stepper-bulk-type-configuration", usesInheritance: true, ngImport: i0, template: "<c8y-bulk-operation-stepper [type]=\"type\">\n <ng-container\n *customStep=\"\n 'Select configuration' | translate;\n completed: !!selectedConfiguration;\n buttonsDisabled: !selectedConfiguration;\n onNext: goToSecondStep.bind(this)\n \"\n >\n <c8y-select-step-frame\n [header]=\"'Select configuration' | translate\"\n [noResults]=\"\n ((textFilter$ | async)?.length || (configType$ | async)?.length) &&\n (configurations$ | async)?.data.length === 0\n \"\n >\n <div\n class=\"row\"\n filters\n >\n <div class=\"col-md-6\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n title=\"{{ 'Filter\u2026' | translate }}\"\n placeholder=\"{{ 'Filter\u2026' | translate }}\"\n type=\"search\"\n [ngModel]=\"textFilter$ | async\"\n (ngModelChange)=\"textFilter$.next($event)\"\n />\n <span class=\"input-group-addon\">\n <i\n c8yIcon=\"search\"\n *ngIf=\"(textFilter$ | async).length === 0\"\n ></i>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n *ngIf=\"(textFilter$ | async).length > 0\"\n (click)=\"textFilter$.next('')\"\n ></i>\n </span>\n </div>\n </div>\n <div class=\"col-xs-12 p-b-8 visible-xs visible-sm\"></div>\n <div class=\"col-md-6\">\n <c8y-form-group class=\"m-0\">\n <c8y-typeahead\n placeholder=\"{{ 'Type to filter configuration types\u2026' | translate }}\"\n name=\"configType\"\n [(ngModel)]=\"selectedConfigType\"\n (onSearch)=\"configType$.next($event)\"\n >\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"selectedConfigType = { name: '' }; configType$.next('')\"\n >\n <span>{{ 'All configuration types' | translate }}</span>\n </c8y-li>\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n *ngFor=\"let configType of configTypes\"\n (click)=\"selectedConfigType = configType; configType$.next(configType.name)\"\n [active]=\"selectedConfigType === configType\"\n >\n <c8y-highlight\n [text]=\"configType.name\"\n [pattern]=\"configType$ | async\"\n ></c8y-highlight>\n </c8y-li>\n </c8y-typeahead>\n </c8y-form-group>\n </div>\n </div>\n <c8y-li\n class=\"hidden-sm hidden-xs m-r-8 m-l-8\"\n header\n >\n <c8y-li-icon><i class=\"p-l-32 p-r-40\"></i></c8y-li-icon>\n <c8y-li-body class=\"content-flex-40\">\n <div class=\"col-5\">\n <span\n class=\"text-truncate\"\n title=\" {{ 'Name' | translate }} \"\n >\n {{ 'Name' | translate }}\n </span>\n </div>\n <div class=\"col-4\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}\"\n >\n {{ 'Device type' | translate }}\n </span>\n </div>\n <div class=\"col-3\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Configuration type' | translate }}\"\n >\n {{ 'Configuration type' | translate }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n <c8y-list-group list>\n <c8y-li\n #listItem\n *c8yFor=\"let configuration of configurations$ | async\"\n >\n <c8y-li-radio (onSelect)=\"selectConfiguration(configuration)\"></c8y-li-radio>\n <c8y-li-icon icon=\"gears\"></c8y-li-icon>\n <c8y-li-body class=\"content-flex-40\">\n <div class=\"col-5 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ configuration.name || '-' }}\"\n >\n <c8y-highlight\n [text]=\"configuration.name || '-'\"\n [pattern]=\"textFilter$ | async\"\n ></c8y-highlight>\n </div>\n </div>\n <div class=\"col-4 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}: {{ getDeviceTypeTitle(configuration) }}\"\n >\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n Device type\n </span>\n {{ configuration.deviceType }}\n <em\n class=\"text-muted\"\n *ngIf=\"!configuration.deviceType\"\n >\n {{ 'Undefined`device type`' | translate }}\n </em>\n </div>\n </div>\n <div class=\"col-3 m-b-xs-8\">\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n Configuration type\n </span>\n <span\n class=\"label label-info\"\n title=\"{{ 'Configuration type' | translate }}: {{\n configuration.configurationType\n }}\"\n *ngIf=\"configuration.configurationType\"\n >\n <c8y-highlight\n [text]=\"configuration.configurationType\"\n elementClass=\"text-gray-lighter\"\n [pattern]=\"configType$ | async\"\n ></c8y-highlight>\n </span>\n <span\n class=\"label label-default\"\n title=\"{{ 'Configuration type' | translate }}: {{ 'Undefined' | translate }}\"\n *ngIf=\"!configuration.configurationType\"\n >\n {{ 'Undefined' | translate }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </c8y-select-step-frame>\n </ng-container>\n <ng-container *customStep=\"'Preview configuration' | translate\">\n <c8y-preview-selection-frame\n [header]=\"'Preview configuration' | translate\"\n [name]=\"selectedConfiguration?.name\"\n [type]=\"selectedConfiguration?.configurationType\"\n >\n <ng-container *previewBlock=\"'Device type' | translate\">\n <ng-container *ngIf=\"selectedConfiguration?.deviceType; else noType\">\n <span>{{ selectedConfiguration?.deviceType }}</span>\n </ng-container>\n <ng-template #noType>\n <em\n class=\"text-muted\"\n translate\n >\n Undefined`device type`\n </em>\n </ng-template>\n </ng-container>\n <ng-container *previewBlock=\"'Updated' | translate\">\n <span>{{ selectedConfiguration?.lastUpdated | c8yDate }}</span>\n </ng-container>\n <ng-container *previewBlock=\"'Preview' | translate\">\n <c8y-ui-empty-state\n [icon]=\"'file-code-o'\"\n [title]=\"'No preview available.' | translate\"\n [subtitle]=\"'Could not fetch the file.' | translate\"\n *ngIf=\"!this.selectedConfiguration?.binary; else binaryPreview\"\n ></c8y-ui-empty-state>\n <ng-template #binaryPreview>\n <pre style=\"min-height: 98px\"><code>{{ this.selectedConfiguration?.binary }}</code></pre>\n </ng-template>\n </ng-container>\n </c8y-preview-selection-frame>\n </ng-container>\n</c8y-bulk-operation-stepper>\n", dependencies: [{ kind: "component", type: BulkOperationStepper, selector: "c8y-bulk-operation-stepper", inputs: ["type"], outputs: ["selectionChange"] }, { kind: "directive", type: CustomStep, selector: "[customStep]", inputs: ["customStep", "customStepCompleted", "customStepButtonsDisabled", "customStepOnNext"] }, { kind: "component", type: SelectStepFrameComponent, selector: "c8y-select-step-frame", inputs: ["header", "noResults"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected", "title", "highlightFirstItem"], outputs: ["onSearch", "onIconClick"] }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "component", type: ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: ListGroupComponent, selector: "c8y-list-group" }, { kind: "directive", type: ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: ListItemRadioComponent, selector: "c8y-list-item-radio, c8y-li-radio", inputs: ["selected", "name", "disabled", "value"], outputs: ["onSelect"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: PreviewSelectionFrameComponent, selector: "c8y-preview-selection-frame", inputs: ["header", "name", "description", "type"] }, { kind: "directive", type: PreviewBlockDirective, selector: "[previewBlock]", inputs: ["previewBlock", "previewBlockIf"] }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: DatePipe, name: "c8yDate" }] }); }
89
89
  }
90
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StepperBulkTypeConfigurationComponent, decorators: [{
90
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StepperBulkTypeConfigurationComponent, decorators: [{
91
91
  type: Component,
92
92
  args: [{ selector: 'c8y-stepper-bulk-type-configuration', imports: [
93
93
  BulkOperationStepper,
@@ -118,9 +118,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
118
118
 
119
119
  /** Module for the 'Configuration update' operation type stepper */
120
120
  class StepperBulkTypeConfigurationModule {
121
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StepperBulkTypeConfigurationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
122
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: StepperBulkTypeConfigurationModule, imports: [StepperBulkTypeConfigurationComponent], exports: [StepperBulkTypeConfigurationComponent] }); }
123
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StepperBulkTypeConfigurationModule, providers: [
121
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StepperBulkTypeConfigurationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
122
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: StepperBulkTypeConfigurationModule, imports: [StepperBulkTypeConfigurationComponent], exports: [StepperBulkTypeConfigurationComponent] }); }
123
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StepperBulkTypeConfigurationModule, providers: [
124
124
  hookListBulkType({
125
125
  type: BulkOperationType.CONFIGURATION,
126
126
  c8yIcon: 'cogs',
@@ -132,7 +132,7 @@ class StepperBulkTypeConfigurationModule {
132
132
  })
133
133
  ], imports: [StepperBulkTypeConfigurationComponent] }); }
134
134
  }
135
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StepperBulkTypeConfigurationModule, decorators: [{
135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StepperBulkTypeConfigurationModule, decorators: [{
136
136
  type: NgModule,
137
137
  args: [{
138
138
  imports: [StepperBulkTypeConfigurationComponent],
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs","sources":["../../operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.component.ts","../../operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.component.html","../../operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.module.ts","../../operations/stepper-bulk-type-configuration/c8y-ngx-components-operations-stepper-bulk-type-configuration.ts"],"sourcesContent":["import { CdkStep } from '@angular/cdk/stepper';\nimport { Component } from '@angular/core';\nimport { IManagedObject, IOperation, IResultList } from '@c8y/client';\nimport {\n C8yStepper,\n gettext,\n IconDirective,\n FormGroupComponent,\n TypeaheadComponent,\n ListItemComponent,\n HighlightComponent,\n ListItemIconComponent,\n ListItemBodyComponent,\n ListGroupComponent,\n ForOfDirective,\n ListItemRadioComponent,\n C8yTranslateDirective,\n EmptyStateComponent,\n C8yTranslatePipe,\n DatePipe\n} from '@c8y/ngx-components';\nimport {\n BaseStepperComponent,\n BulkOperationStepper,\n CustomStep\n} from '@c8y/ngx-components/operations/bulk-operation-stepper';\nimport {\n BulkOperationsService,\n BulkOperationType,\n OperationDetails\n} from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { RepositoryService, RepositoryType } from '@c8y/ngx-components/repository/shared';\nimport { TranslateService } from '@ngx-translate/core';\nimport { get, isEqual, uniqWith } from 'lodash-es';\nimport { BehaviorSubject, combineLatest, from, Observable, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, shareReplay, switchMap } from 'rxjs/operators';\nimport {\n SelectStepFrameComponent,\n PreviewSelectionFrameComponent,\n PreviewBlockDirective\n} from '@c8y/ngx-components/operations/stepper-frames';\nimport { FormsModule } from '@angular/forms';\nimport { NgIf, NgFor, AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'c8y-stepper-bulk-type-configuration',\n templateUrl: 'stepper-bulk-type-configuration.component.html',\n imports: [\n BulkOperationStepper,\n CustomStep,\n SelectStepFrameComponent,\n FormsModule,\n NgIf,\n IconDirective,\n FormGroupComponent,\n TypeaheadComponent,\n ListItemComponent,\n NgFor,\n HighlightComponent,\n ListItemIconComponent,\n ListItemBodyComponent,\n ListGroupComponent,\n ForOfDirective,\n ListItemRadioComponent,\n C8yTranslateDirective,\n PreviewSelectionFrameComponent,\n PreviewBlockDirective,\n EmptyStateComponent,\n C8yTranslatePipe,\n AsyncPipe,\n DatePipe\n ]\n})\nexport class StepperBulkTypeConfigurationComponent extends BaseStepperComponent {\n readonly type: BulkOperationType = BulkOperationType.CONFIGURATION;\n readonly NO_DEVICE_TYPE_AVAILABLE = gettext('Undefined`device type`');\n selectedConfiguration: IManagedObject;\n DD_LOW_COUNT = 10;\n textFilter$: BehaviorSubject<string> = new BehaviorSubject('');\n configType$: BehaviorSubject<string> = new BehaviorSubject('');\n configTypes = [];\n selectedConfigType = { name: '' };\n configurations$: Observable<IResultList<IManagedObject>> = combineLatest(\n this.textFilter$,\n this.configType$\n ).pipe(\n switchMap(([name, configType]) => this.getConfiguration(name, configType)),\n shareReplay(1)\n );\n private configTypeSubscription: Subscription;\n\n constructor(\n private bulkOperationService: BulkOperationsService,\n private repositoryService: RepositoryService,\n private translate: TranslateService\n ) {\n super();\n this.DD_LOW_COUNT = this.bulkOperationService.DD_LOW_COUNT;\n this.loadConfigurationTypes();\n }\n\n loadConfigurationTypes() {\n this.configTypeSubscription = this.configType$\n .pipe(\n debounceTime(300),\n distinctUntilChanged(),\n switchMap(searchStr => {\n const query = { configurationType: `*${searchStr}*` };\n return from(\n this.repositoryService.listRepositoryEntries(RepositoryType.CONFIGURATION, { query })\n );\n })\n )\n .subscribe(result => {\n const { data } = result;\n this.configTypes = uniqWith(\n data.map(val => ({ name: val.configurationType })),\n isEqual\n );\n });\n }\n ngOnDestroy(): void {\n this.configTypeSubscription.unsubscribe();\n }\n\n selectConfiguration(configuration: IManagedObject) {\n this.selectedConfiguration = configuration;\n }\n\n goToSecondStep($event: { stepper: C8yStepper; step: CdkStep }) {\n $event.stepper.next();\n this.getConfigBinary();\n this.deviceTypes = this.selectedConfiguration.deviceType;\n }\n\n async getConfigBinary() {\n if (this.selectedConfiguration.url) {\n this.selectedConfiguration.binary = await this.repositoryService.getBinaryText(\n this.selectedConfiguration.url,\n { allowExternal: true, noAlerts: true }\n );\n }\n }\n\n getDeviceTypeTitle(configuration: IManagedObject): string {\n return get(configuration, 'deviceType', this.translate.instant(this.NO_DEVICE_TYPE_AVAILABLE));\n }\n\n protected retrieveOperationPrototype(): OperationDetails {\n const configuration = {\n type: this.selectedConfiguration.configurationType,\n url: this.selectedConfiguration.url\n };\n\n return {\n name: gettext('Configuration update'),\n description: get(this.selectedConfiguration, 'name'),\n prototype: {\n description: `Update configuration to: ${this.selectedConfiguration.name}.`,\n c8y_DownloadConfigFile: configuration\n } as unknown as IOperation\n };\n }\n\n private getConfiguration(name?: string, configurationType?: string) {\n const query: any = name ? { name: `*${name}*` } : {};\n if (configurationType) {\n query.__or = [{ configurationType }, { __not: { __has: `configurationType` } }];\n }\n return this.repositoryService.listRepositoryEntries(RepositoryType.CONFIGURATION, { query });\n }\n}\n","<c8y-bulk-operation-stepper [type]=\"type\">\n <ng-container\n *customStep=\"\n 'Select configuration' | translate;\n completed: !!selectedConfiguration;\n buttonsDisabled: !selectedConfiguration;\n onNext: goToSecondStep.bind(this)\n \"\n >\n <c8y-select-step-frame\n [header]=\"'Select configuration' | translate\"\n [noResults]=\"\n ((textFilter$ | async)?.length || (configType$ | async)?.length) &&\n (configurations$ | async)?.data.length === 0\n \"\n >\n <div\n class=\"row\"\n filters\n >\n <div class=\"col-md-6\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n title=\"{{ 'Filter…' | translate }}\"\n placeholder=\"{{ 'Filter…' | translate }}\"\n type=\"search\"\n [ngModel]=\"textFilter$ | async\"\n (ngModelChange)=\"textFilter$.next($event)\"\n />\n <span class=\"input-group-addon\">\n <i\n c8yIcon=\"search\"\n *ngIf=\"(textFilter$ | async).length === 0\"\n ></i>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n *ngIf=\"(textFilter$ | async).length > 0\"\n (click)=\"textFilter$.next('')\"\n ></i>\n </span>\n </div>\n </div>\n <div class=\"col-xs-12 p-b-8 visible-xs visible-sm\"></div>\n <div class=\"col-md-6\">\n <c8y-form-group class=\"m-0\">\n <c8y-typeahead\n placeholder=\"{{ 'Type to filter configuration types…' | translate }}\"\n name=\"configType\"\n [(ngModel)]=\"selectedConfigType\"\n (onSearch)=\"configType$.next($event)\"\n >\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"selectedConfigType = { name: '' }; configType$.next('')\"\n >\n <span>{{ 'All configuration types' | translate }}</span>\n </c8y-li>\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n *ngFor=\"let configType of configTypes\"\n (click)=\"selectedConfigType = configType; configType$.next(configType.name)\"\n [active]=\"selectedConfigType === configType\"\n >\n <c8y-highlight\n [text]=\"configType.name\"\n [pattern]=\"configType$ | async\"\n ></c8y-highlight>\n </c8y-li>\n </c8y-typeahead>\n </c8y-form-group>\n </div>\n </div>\n <c8y-li\n class=\"hidden-sm hidden-xs m-r-8 m-l-8\"\n header\n >\n <c8y-li-icon><i class=\"p-l-32 p-r-40\"></i></c8y-li-icon>\n <c8y-li-body class=\"content-flex-40\">\n <div class=\"col-5\">\n <span\n class=\"text-truncate\"\n title=\" {{ 'Name' | translate }} \"\n >\n {{ 'Name' | translate }}\n </span>\n </div>\n <div class=\"col-4\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}\"\n >\n {{ 'Device type' | translate }}\n </span>\n </div>\n <div class=\"col-3\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Configuration type' | translate }}\"\n >\n {{ 'Configuration type' | translate }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n <c8y-list-group list>\n <c8y-li\n #listItem\n *c8yFor=\"let configuration of configurations$ | async\"\n >\n <c8y-li-radio (onSelect)=\"selectConfiguration(configuration)\"></c8y-li-radio>\n <c8y-li-icon icon=\"gears\"></c8y-li-icon>\n <c8y-li-body class=\"content-flex-40\">\n <div class=\"col-5 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ configuration.name || '-' }}\"\n >\n <c8y-highlight\n [text]=\"configuration.name || '-'\"\n [pattern]=\"textFilter$ | async\"\n ></c8y-highlight>\n </div>\n </div>\n <div class=\"col-4 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}: {{ getDeviceTypeTitle(configuration) }}\"\n >\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n Device type\n </span>\n {{ configuration.deviceType }}\n <em\n class=\"text-muted\"\n *ngIf=\"!configuration.deviceType\"\n >\n {{ 'Undefined`device type`' | translate }}\n </em>\n </div>\n </div>\n <div class=\"col-3 m-b-xs-8\">\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n Configuration type\n </span>\n <span\n class=\"label label-info\"\n title=\"{{ 'Configuration type' | translate }}: {{\n configuration.configurationType\n }}\"\n *ngIf=\"configuration.configurationType\"\n >\n <c8y-highlight\n [text]=\"configuration.configurationType\"\n elementClass=\"text-gray-lighter\"\n [pattern]=\"configType$ | async\"\n ></c8y-highlight>\n </span>\n <span\n class=\"label label-default\"\n title=\"{{ 'Configuration type' | translate }}: {{ 'Undefined' | translate }}\"\n *ngIf=\"!configuration.configurationType\"\n >\n {{ 'Undefined' | translate }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </c8y-select-step-frame>\n </ng-container>\n <ng-container *customStep=\"'Preview configuration' | translate\">\n <c8y-preview-selection-frame\n [header]=\"'Preview configuration' | translate\"\n [name]=\"selectedConfiguration?.name\"\n [type]=\"selectedConfiguration?.configurationType\"\n >\n <ng-container *previewBlock=\"'Device type' | translate\">\n <ng-container *ngIf=\"selectedConfiguration?.deviceType; else noType\">\n <span>{{ selectedConfiguration?.deviceType }}</span>\n </ng-container>\n <ng-template #noType>\n <em\n class=\"text-muted\"\n translate\n >\n Undefined`device type`\n </em>\n </ng-template>\n </ng-container>\n <ng-container *previewBlock=\"'Updated' | translate\">\n <span>{{ selectedConfiguration?.lastUpdated | c8yDate }}</span>\n </ng-container>\n <ng-container *previewBlock=\"'Preview' | translate\">\n <c8y-ui-empty-state\n [icon]=\"'file-code-o'\"\n [title]=\"'No preview available.' | translate\"\n [subtitle]=\"'Could not fetch the file.' | translate\"\n *ngIf=\"!this.selectedConfiguration?.binary; else binaryPreview\"\n ></c8y-ui-empty-state>\n <ng-template #binaryPreview>\n <pre style=\"min-height: 98px\"><code>{{ this.selectedConfiguration?.binary }}</code></pre>\n </ng-template>\n </ng-container>\n </c8y-preview-selection-frame>\n </ng-container>\n</c8y-bulk-operation-stepper>\n","import { NgModule } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n baseUrl,\n BulkOperationType,\n hookListBulkType\n} from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { StepperBulkTypeConfigurationComponent } from './stepper-bulk-type-configuration.component';\n\n/** Module for the 'Configuration update' operation type stepper */\n@NgModule({\n imports: [StepperBulkTypeConfigurationComponent],\n providers: [\n hookListBulkType({\n type: BulkOperationType.CONFIGURATION,\n c8yIcon: 'cogs',\n name: gettext('Configuration update'),\n path: `${baseUrl}configuration`,\n component: StepperBulkTypeConfigurationComponent,\n fragments: ['c8y_DownloadConfigFile', 'c8y_Configuration'],\n selected: false\n })\n ],\n exports: [StepperBulkTypeConfigurationComponent]\n})\nexport class StepperBulkTypeConfigurationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["gettext"],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs","sources":["../../operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.component.ts","../../operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.component.html","../../operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.module.ts","../../operations/stepper-bulk-type-configuration/c8y-ngx-components-operations-stepper-bulk-type-configuration.ts"],"sourcesContent":["import { CdkStep } from '@angular/cdk/stepper';\nimport { Component } from '@angular/core';\nimport { IManagedObject, IOperation, IResultList } from '@c8y/client';\nimport {\n C8yStepper,\n gettext,\n IconDirective,\n FormGroupComponent,\n TypeaheadComponent,\n ListItemComponent,\n HighlightComponent,\n ListItemIconComponent,\n ListItemBodyComponent,\n ListGroupComponent,\n ForOfDirective,\n ListItemRadioComponent,\n C8yTranslateDirective,\n EmptyStateComponent,\n C8yTranslatePipe,\n DatePipe\n} from '@c8y/ngx-components';\nimport {\n BaseStepperComponent,\n BulkOperationStepper,\n CustomStep\n} from '@c8y/ngx-components/operations/bulk-operation-stepper';\nimport {\n BulkOperationsService,\n BulkOperationType,\n OperationDetails\n} from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { RepositoryService, RepositoryType } from '@c8y/ngx-components/repository/shared';\nimport { TranslateService } from '@ngx-translate/core';\nimport { get, isEqual, uniqWith } from 'lodash-es';\nimport { BehaviorSubject, combineLatest, from, Observable, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, shareReplay, switchMap } from 'rxjs/operators';\nimport {\n SelectStepFrameComponent,\n PreviewSelectionFrameComponent,\n PreviewBlockDirective\n} from '@c8y/ngx-components/operations/stepper-frames';\nimport { FormsModule } from '@angular/forms';\nimport { NgIf, NgFor, AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'c8y-stepper-bulk-type-configuration',\n templateUrl: 'stepper-bulk-type-configuration.component.html',\n imports: [\n BulkOperationStepper,\n CustomStep,\n SelectStepFrameComponent,\n FormsModule,\n NgIf,\n IconDirective,\n FormGroupComponent,\n TypeaheadComponent,\n ListItemComponent,\n NgFor,\n HighlightComponent,\n ListItemIconComponent,\n ListItemBodyComponent,\n ListGroupComponent,\n ForOfDirective,\n ListItemRadioComponent,\n C8yTranslateDirective,\n PreviewSelectionFrameComponent,\n PreviewBlockDirective,\n EmptyStateComponent,\n C8yTranslatePipe,\n AsyncPipe,\n DatePipe\n ]\n})\nexport class StepperBulkTypeConfigurationComponent extends BaseStepperComponent {\n readonly type: BulkOperationType = BulkOperationType.CONFIGURATION;\n readonly NO_DEVICE_TYPE_AVAILABLE = gettext('Undefined`device type`');\n selectedConfiguration: IManagedObject;\n DD_LOW_COUNT = 10;\n textFilter$: BehaviorSubject<string> = new BehaviorSubject('');\n configType$: BehaviorSubject<string> = new BehaviorSubject('');\n configTypes = [];\n selectedConfigType = { name: '' };\n configurations$: Observable<IResultList<IManagedObject>> = combineLatest(\n this.textFilter$,\n this.configType$\n ).pipe(\n switchMap(([name, configType]) => this.getConfiguration(name, configType)),\n shareReplay(1)\n );\n private configTypeSubscription: Subscription;\n\n constructor(\n private bulkOperationService: BulkOperationsService,\n private repositoryService: RepositoryService,\n private translate: TranslateService\n ) {\n super();\n this.DD_LOW_COUNT = this.bulkOperationService.DD_LOW_COUNT;\n this.loadConfigurationTypes();\n }\n\n loadConfigurationTypes() {\n this.configTypeSubscription = this.configType$\n .pipe(\n debounceTime(300),\n distinctUntilChanged(),\n switchMap(searchStr => {\n const query = { configurationType: `*${searchStr}*` };\n return from(\n this.repositoryService.listRepositoryEntries(RepositoryType.CONFIGURATION, { query })\n );\n })\n )\n .subscribe(result => {\n const { data } = result;\n this.configTypes = uniqWith(\n data.map(val => ({ name: val.configurationType })),\n isEqual\n );\n });\n }\n ngOnDestroy(): void {\n this.configTypeSubscription.unsubscribe();\n }\n\n selectConfiguration(configuration: IManagedObject) {\n this.selectedConfiguration = configuration;\n }\n\n goToSecondStep($event: { stepper: C8yStepper; step: CdkStep }) {\n $event.stepper.next();\n this.getConfigBinary();\n this.deviceTypes = this.selectedConfiguration.deviceType;\n }\n\n async getConfigBinary() {\n if (this.selectedConfiguration.url) {\n this.selectedConfiguration.binary = await this.repositoryService.getBinaryText(\n this.selectedConfiguration.url,\n { allowExternal: true, noAlerts: true }\n );\n }\n }\n\n getDeviceTypeTitle(configuration: IManagedObject): string {\n return get(configuration, 'deviceType', this.translate.instant(this.NO_DEVICE_TYPE_AVAILABLE));\n }\n\n protected retrieveOperationPrototype(): OperationDetails {\n const configuration = {\n type: this.selectedConfiguration.configurationType,\n url: this.selectedConfiguration.url\n };\n\n return {\n name: gettext('Configuration update'),\n description: get(this.selectedConfiguration, 'name'),\n prototype: {\n description: `Update configuration to: ${this.selectedConfiguration.name}.`,\n c8y_DownloadConfigFile: configuration\n } as unknown as IOperation\n };\n }\n\n private getConfiguration(name?: string, configurationType?: string) {\n const query: any = name ? { name: `*${name}*` } : {};\n if (configurationType) {\n query.__or = [{ configurationType }, { __not: { __has: `configurationType` } }];\n }\n return this.repositoryService.listRepositoryEntries(RepositoryType.CONFIGURATION, { query });\n }\n}\n","<c8y-bulk-operation-stepper [type]=\"type\">\n <ng-container\n *customStep=\"\n 'Select configuration' | translate;\n completed: !!selectedConfiguration;\n buttonsDisabled: !selectedConfiguration;\n onNext: goToSecondStep.bind(this)\n \"\n >\n <c8y-select-step-frame\n [header]=\"'Select configuration' | translate\"\n [noResults]=\"\n ((textFilter$ | async)?.length || (configType$ | async)?.length) &&\n (configurations$ | async)?.data.length === 0\n \"\n >\n <div\n class=\"row\"\n filters\n >\n <div class=\"col-md-6\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n title=\"{{ 'Filter…' | translate }}\"\n placeholder=\"{{ 'Filter…' | translate }}\"\n type=\"search\"\n [ngModel]=\"textFilter$ | async\"\n (ngModelChange)=\"textFilter$.next($event)\"\n />\n <span class=\"input-group-addon\">\n <i\n c8yIcon=\"search\"\n *ngIf=\"(textFilter$ | async).length === 0\"\n ></i>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n *ngIf=\"(textFilter$ | async).length > 0\"\n (click)=\"textFilter$.next('')\"\n ></i>\n </span>\n </div>\n </div>\n <div class=\"col-xs-12 p-b-8 visible-xs visible-sm\"></div>\n <div class=\"col-md-6\">\n <c8y-form-group class=\"m-0\">\n <c8y-typeahead\n placeholder=\"{{ 'Type to filter configuration types…' | translate }}\"\n name=\"configType\"\n [(ngModel)]=\"selectedConfigType\"\n (onSearch)=\"configType$.next($event)\"\n >\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"selectedConfigType = { name: '' }; configType$.next('')\"\n >\n <span>{{ 'All configuration types' | translate }}</span>\n </c8y-li>\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n *ngFor=\"let configType of configTypes\"\n (click)=\"selectedConfigType = configType; configType$.next(configType.name)\"\n [active]=\"selectedConfigType === configType\"\n >\n <c8y-highlight\n [text]=\"configType.name\"\n [pattern]=\"configType$ | async\"\n ></c8y-highlight>\n </c8y-li>\n </c8y-typeahead>\n </c8y-form-group>\n </div>\n </div>\n <c8y-li\n class=\"hidden-sm hidden-xs m-r-8 m-l-8\"\n header\n >\n <c8y-li-icon><i class=\"p-l-32 p-r-40\"></i></c8y-li-icon>\n <c8y-li-body class=\"content-flex-40\">\n <div class=\"col-5\">\n <span\n class=\"text-truncate\"\n title=\" {{ 'Name' | translate }} \"\n >\n {{ 'Name' | translate }}\n </span>\n </div>\n <div class=\"col-4\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}\"\n >\n {{ 'Device type' | translate }}\n </span>\n </div>\n <div class=\"col-3\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Configuration type' | translate }}\"\n >\n {{ 'Configuration type' | translate }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n <c8y-list-group list>\n <c8y-li\n #listItem\n *c8yFor=\"let configuration of configurations$ | async\"\n >\n <c8y-li-radio (onSelect)=\"selectConfiguration(configuration)\"></c8y-li-radio>\n <c8y-li-icon icon=\"gears\"></c8y-li-icon>\n <c8y-li-body class=\"content-flex-40\">\n <div class=\"col-5 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ configuration.name || '-' }}\"\n >\n <c8y-highlight\n [text]=\"configuration.name || '-'\"\n [pattern]=\"textFilter$ | async\"\n ></c8y-highlight>\n </div>\n </div>\n <div class=\"col-4 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}: {{ getDeviceTypeTitle(configuration) }}\"\n >\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n Device type\n </span>\n {{ configuration.deviceType }}\n <em\n class=\"text-muted\"\n *ngIf=\"!configuration.deviceType\"\n >\n {{ 'Undefined`device type`' | translate }}\n </em>\n </div>\n </div>\n <div class=\"col-3 m-b-xs-8\">\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n Configuration type\n </span>\n <span\n class=\"label label-info\"\n title=\"{{ 'Configuration type' | translate }}: {{\n configuration.configurationType\n }}\"\n *ngIf=\"configuration.configurationType\"\n >\n <c8y-highlight\n [text]=\"configuration.configurationType\"\n elementClass=\"text-gray-lighter\"\n [pattern]=\"configType$ | async\"\n ></c8y-highlight>\n </span>\n <span\n class=\"label label-default\"\n title=\"{{ 'Configuration type' | translate }}: {{ 'Undefined' | translate }}\"\n *ngIf=\"!configuration.configurationType\"\n >\n {{ 'Undefined' | translate }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </c8y-select-step-frame>\n </ng-container>\n <ng-container *customStep=\"'Preview configuration' | translate\">\n <c8y-preview-selection-frame\n [header]=\"'Preview configuration' | translate\"\n [name]=\"selectedConfiguration?.name\"\n [type]=\"selectedConfiguration?.configurationType\"\n >\n <ng-container *previewBlock=\"'Device type' | translate\">\n <ng-container *ngIf=\"selectedConfiguration?.deviceType; else noType\">\n <span>{{ selectedConfiguration?.deviceType }}</span>\n </ng-container>\n <ng-template #noType>\n <em\n class=\"text-muted\"\n translate\n >\n Undefined`device type`\n </em>\n </ng-template>\n </ng-container>\n <ng-container *previewBlock=\"'Updated' | translate\">\n <span>{{ selectedConfiguration?.lastUpdated | c8yDate }}</span>\n </ng-container>\n <ng-container *previewBlock=\"'Preview' | translate\">\n <c8y-ui-empty-state\n [icon]=\"'file-code-o'\"\n [title]=\"'No preview available.' | translate\"\n [subtitle]=\"'Could not fetch the file.' | translate\"\n *ngIf=\"!this.selectedConfiguration?.binary; else binaryPreview\"\n ></c8y-ui-empty-state>\n <ng-template #binaryPreview>\n <pre style=\"min-height: 98px\"><code>{{ this.selectedConfiguration?.binary }}</code></pre>\n </ng-template>\n </ng-container>\n </c8y-preview-selection-frame>\n </ng-container>\n</c8y-bulk-operation-stepper>\n","import { NgModule } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n baseUrl,\n BulkOperationType,\n hookListBulkType\n} from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { StepperBulkTypeConfigurationComponent } from './stepper-bulk-type-configuration.component';\n\n/** Module for the 'Configuration update' operation type stepper */\n@NgModule({\n imports: [StepperBulkTypeConfigurationComponent],\n providers: [\n hookListBulkType({\n type: BulkOperationType.CONFIGURATION,\n c8yIcon: 'cogs',\n name: gettext('Configuration update'),\n path: `${baseUrl}configuration`,\n component: StepperBulkTypeConfigurationComponent,\n fragments: ['c8y_DownloadConfigFile', 'c8y_Configuration'],\n selected: false\n })\n ],\n exports: [StepperBulkTypeConfigurationComponent]\n})\nexport class StepperBulkTypeConfigurationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["gettext"],"mappings":"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"}