@c8y/ngx-components 1022.35.1 → 1022.44.7

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 (925) hide show
  1. package/actility-device-registration/actility-device-registration.component.d.ts.map +1 -1
  2. package/actility-device-registration/actility-device-registration.service.d.ts.map +1 -1
  3. package/alarms/alarm-details.component.d.ts.map +1 -1
  4. package/alarms/alarm-info.component.d.ts.map +1 -1
  5. package/alarms/alarm-severity-to-icon-class.pipe.d.ts +9 -0
  6. package/alarms/alarm-severity-to-icon-class.pipe.d.ts.map +1 -0
  7. package/alarms/alarms-icon.component.d.ts.map +1 -1
  8. package/alarms/alarms-interval-refresh.component.d.ts.map +1 -1
  9. package/alarms/alarms-list.component.d.ts.map +1 -1
  10. package/alarms/alarms-view.service.d.ts.map +1 -1
  11. package/alarms/alarms.component.d.ts.map +1 -1
  12. package/alarms/alarms.helper.d.ts.map +1 -1
  13. package/alarms/alarms.model.d.ts.map +1 -1
  14. package/alarms/cockpit/index.d.ts.map +1 -1
  15. package/alarms/devicemanagement/index.d.ts.map +1 -1
  16. package/alarms/index.d.ts +1 -0
  17. package/alarms/index.d.ts.map +1 -1
  18. package/asset-properties/asset-properties.model.d.ts +77 -1
  19. package/asset-properties/asset-properties.model.d.ts.map +1 -1
  20. package/asset-properties/asset-properties.service.d.ts +17 -0
  21. package/asset-properties/asset-properties.service.d.ts.map +1 -1
  22. package/asset-properties/asset-property-list/asset-property-collapse-button-title.pipe.d.ts +14 -0
  23. package/asset-properties/asset-property-list/asset-property-collapse-button-title.pipe.d.ts.map +1 -0
  24. package/asset-properties/asset-property-list/asset-property-icon.pipe.d.ts +2 -1
  25. package/asset-properties/asset-property-list/asset-property-icon.pipe.d.ts.map +1 -1
  26. package/asset-properties/asset-property-list/asset-property-list.component.d.ts +52 -13
  27. package/asset-properties/asset-property-list/asset-property-list.component.d.ts.map +1 -1
  28. package/asset-properties/asset-property-list/asset-property-value.pipe.d.ts +7 -3
  29. package/asset-properties/asset-property-list/asset-property-value.pipe.d.ts.map +1 -1
  30. package/asset-properties/asset-property-list/tree-data-source.d.ts +1 -0
  31. package/asset-properties/asset-property-list/tree-data-source.d.ts.map +1 -1
  32. package/asset-properties/asset-property-selector-drawer/asset-property-selector-drawer.component.d.ts.map +1 -1
  33. package/asset-properties/computed-properties-config/computed-properties-config.component.d.ts +39 -0
  34. package/asset-properties/computed-properties-config/computed-properties-config.component.d.ts.map +1 -0
  35. package/asset-properties/computed-properties.service.d.ts +27 -0
  36. package/asset-properties/computed-properties.service.d.ts.map +1 -0
  37. package/asset-properties/custom-properties-drawer/custom-properties-drawer.component.d.ts +11 -6
  38. package/asset-properties/custom-properties-drawer/custom-properties-drawer.component.d.ts.map +1 -1
  39. package/asset-properties/custom-properties-drawer.service.d.ts +2 -1
  40. package/asset-properties/custom-properties-drawer.service.d.ts.map +1 -1
  41. package/asset-properties/index.d.ts +1 -0
  42. package/asset-properties/index.d.ts.map +1 -1
  43. package/assets-navigator/asset-node.d.ts.map +1 -1
  44. package/assets-navigator/asset-node.service.d.ts.map +1 -1
  45. package/assets-navigator/asset-selector/asset-selector-node.component.d.ts.map +1 -1
  46. package/assets-navigator/asset-selector/asset-selector.model.d.ts +1 -2
  47. package/assets-navigator/asset-selector/asset-selector.model.d.ts.map +1 -1
  48. package/assets-navigator/asset-selector/miller-view.component.d.ts +17 -5
  49. package/assets-navigator/asset-selector/miller-view.component.d.ts.map +1 -1
  50. package/assets-navigator/asset-selector/unassigned-devices-node.d.ts.map +1 -1
  51. package/assets-navigator/load-more-node.d.ts.map +1 -1
  52. package/auth-configuration/basic-settings/login-settings.component.d.ts.map +1 -1
  53. package/auth-configuration/basic-settings/session-configuration.component.d.ts.map +1 -1
  54. package/auth-configuration/factories/navigation.factory.d.ts.map +1 -1
  55. package/auth-configuration/factories/tabs.factory.d.ts.map +1 -1
  56. package/auth-configuration/sso-configuration/sso-configuration.component.d.ts.map +1 -1
  57. package/auth-configuration/sso-configuration/template-parts/access-mapping/inventory-roles-modal.component.d.ts.map +1 -1
  58. package/auth-configuration/sso-configuration/template-parts/signature-configuration.component.d.ts.map +1 -1
  59. package/auth-configuration/sso-configuration/template-parts/user-data-mapping.component.d.ts.map +1 -1
  60. package/binary-file-download/binary-file-download.service.d.ts.map +1 -1
  61. package/bookmarks/bookmarks.component.d.ts.map +1 -1
  62. package/bookmarks/bookmarks.service.d.ts.map +1 -1
  63. package/bookmarks/edit-bookmarks/edit-bookmarks.component.d.ts.map +1 -1
  64. package/branding/dark-theme/dark-theme-tab.factory.d.ts.map +1 -1
  65. package/branding/extra-css-branding-editor/extra-css-branding-editor-tab.factory.d.ts.map +1 -1
  66. package/branding/plain-branding-editor/plain-branding-editor-tab.factory.d.ts.map +1 -1
  67. package/branding/shared/lazy/branding-form/branding-form.component.d.ts.map +1 -1
  68. package/branding/shared/lazy/branding-import-modal/branding-import-modal.component.d.ts.map +1 -1
  69. package/branding/shared/lazy/edit-branding-router-outlet/edit-branding-router-outlet.component.d.ts.map +1 -1
  70. package/cockpit-config/cockpit-config.guard.d.ts.map +1 -1
  71. package/cockpit-config/cockpit-configuration.component.d.ts.map +1 -1
  72. package/computed-asset-properties/alarm-count/alarm-count-3-months-computed-property.d.ts +8 -0
  73. package/computed-asset-properties/alarm-count/alarm-count-3-months-computed-property.d.ts.map +1 -0
  74. package/computed-asset-properties/alarm-count/alarm-count-config.component.d.ts +26 -0
  75. package/computed-asset-properties/alarm-count/alarm-count-config.component.d.ts.map +1 -0
  76. package/computed-asset-properties/alarm-count/alarm-count-today-computed-property.d.ts +8 -0
  77. package/computed-asset-properties/alarm-count/alarm-count-today-computed-property.d.ts.map +1 -0
  78. package/computed-asset-properties/alarm-count/alarm-count-value.d.ts +17 -0
  79. package/computed-asset-properties/alarm-count/alarm-count-value.d.ts.map +1 -0
  80. package/computed-asset-properties/alarm-count/alarm-count.model.d.ts +6 -0
  81. package/computed-asset-properties/alarm-count/alarm-count.model.d.ts.map +1 -0
  82. package/computed-asset-properties/c8y-ngx-components-computed-asset-properties.d.ts.map +1 -0
  83. package/computed-asset-properties/child-count/child-assets-count-computed-property.d.ts +14 -0
  84. package/computed-asset-properties/child-count/child-assets-count-computed-property.d.ts.map +1 -0
  85. package/computed-asset-properties/child-count/child-count-value.d.ts +14 -0
  86. package/computed-asset-properties/child-count/child-count-value.d.ts.map +1 -0
  87. package/computed-asset-properties/child-count/child-devices-count-computed-property.d.ts +14 -0
  88. package/computed-asset-properties/child-count/child-devices-count-computed-property.d.ts.map +1 -0
  89. package/computed-asset-properties/common/realtime-value-base.d.ts +32 -0
  90. package/computed-asset-properties/common/realtime-value-base.d.ts.map +1 -0
  91. package/computed-asset-properties/common/realtime-value-handler.d.ts +19 -0
  92. package/computed-asset-properties/common/realtime-value-handler.d.ts.map +1 -0
  93. package/computed-asset-properties/configuration-snapshot/configuration-snapshot-computed-property.d.ts +7 -0
  94. package/computed-asset-properties/configuration-snapshot/configuration-snapshot-computed-property.d.ts.map +1 -0
  95. package/computed-asset-properties/configuration-snapshot/configuration-snapshot-config.component.d.ts +21 -0
  96. package/computed-asset-properties/configuration-snapshot/configuration-snapshot-config.component.d.ts.map +1 -0
  97. package/computed-asset-properties/configuration-snapshot/configuration-snapshot.model.d.ts +8 -0
  98. package/computed-asset-properties/configuration-snapshot/configuration-snapshot.model.d.ts.map +1 -0
  99. package/computed-asset-properties/event-count/event-count-3-months.d.ts +8 -0
  100. package/computed-asset-properties/event-count/event-count-3-months.d.ts.map +1 -0
  101. package/computed-asset-properties/event-count/event-count-config.component.d.ts +18 -0
  102. package/computed-asset-properties/event-count/event-count-config.component.d.ts.map +1 -0
  103. package/computed-asset-properties/event-count/event-count-today.d.ts +8 -0
  104. package/computed-asset-properties/event-count/event-count-today.d.ts.map +1 -0
  105. package/computed-asset-properties/event-count/event-count-value.d.ts +17 -0
  106. package/computed-asset-properties/event-count/event-count-value.d.ts.map +1 -0
  107. package/computed-asset-properties/event-count/event-count.model.d.ts +4 -0
  108. package/computed-asset-properties/event-count/event-count.model.d.ts.map +1 -0
  109. package/computed-asset-properties/index.d.ts +3 -0
  110. package/computed-asset-properties/index.d.ts.map +1 -0
  111. package/computed-asset-properties/last-device-message/last-device-message-computed-property.d.ts +3 -0
  112. package/computed-asset-properties/last-device-message/last-device-message-computed-property.d.ts.map +1 -0
  113. package/computed-asset-properties/last-device-message/last-device-message-value.d.ts +13 -0
  114. package/computed-asset-properties/last-device-message/last-device-message-value.d.ts.map +1 -0
  115. package/computed-asset-properties/last-measurement/last-measurement-computed-property.d.ts +8 -0
  116. package/computed-asset-properties/last-measurement/last-measurement-computed-property.d.ts.map +1 -0
  117. package/computed-asset-properties/last-measurement/last-measurement-config.component.d.ts +48 -0
  118. package/computed-asset-properties/last-measurement/last-measurement-config.component.d.ts.map +1 -0
  119. package/computed-asset-properties/last-measurement/last-measurement-value.d.ts +13 -0
  120. package/computed-asset-properties/last-measurement/last-measurement-value.d.ts.map +1 -0
  121. package/computed-asset-properties/last-measurement/last-measurement.model.d.ts +28 -0
  122. package/computed-asset-properties/last-measurement/last-measurement.model.d.ts.map +1 -0
  123. package/computed-asset-properties/strategies/alarm-count-strategy.d.ts +17 -0
  124. package/computed-asset-properties/strategies/alarm-count-strategy.d.ts.map +1 -0
  125. package/computed-asset-properties/strategies/child-count-strategy.d.ts +14 -0
  126. package/computed-asset-properties/strategies/child-count-strategy.d.ts.map +1 -0
  127. package/computed-asset-properties/strategies/count-strategy-base.d.ts +12 -0
  128. package/computed-asset-properties/strategies/count-strategy-base.d.ts.map +1 -0
  129. package/computed-asset-properties/strategies/event-count-strategy.d.ts +16 -0
  130. package/computed-asset-properties/strategies/event-count-strategy.d.ts.map +1 -0
  131. package/computed-asset-properties/strategies/last-device-message-strategy.d.ts +20 -0
  132. package/computed-asset-properties/strategies/last-device-message-strategy.d.ts.map +1 -0
  133. package/computed-asset-properties/strategies/last-measurement-strategy.d.ts +16 -0
  134. package/computed-asset-properties/strategies/last-measurement-strategy.d.ts.map +1 -0
  135. package/connectivity/abstract-connectivity-node.factory.d.ts.map +1 -1
  136. package/connectivity/actility/actility-tab.factory.d.ts.map +1 -1
  137. package/connectivity/sigfox/sigfox-tab.factory.d.ts.map +1 -1
  138. package/connectivity/sim/sim.module.d.ts.map +1 -1
  139. package/context-dashboard/cockpit-home-dashboard/cockpit-dashboard.component.d.ts.map +1 -1
  140. package/context-dashboard/cockpit-home-dashboard/cockpit-dashboard.model.d.ts.map +1 -1
  141. package/context-dashboard/cockpit-home-dashboard/cockpit-dashboard.module.d.ts.map +1 -1
  142. package/context-dashboard/context-dashboard.component.d.ts.map +1 -1
  143. package/context-dashboard/context-dashboard.model.d.ts +16 -0
  144. package/context-dashboard/context-dashboard.model.d.ts.map +1 -1
  145. package/context-dashboard/context-dashboard.service.d.ts.map +1 -1
  146. package/context-dashboard/dashboard-detail.component.d.ts.map +1 -1
  147. package/context-dashboard/dashboard-detail.service.d.ts.map +1 -1
  148. package/context-dashboard/dashboard-details-tabs.factory.d.ts.map +1 -1
  149. package/context-dashboard/dashboard-settings/dashboard-general-settings.component.d.ts.map +1 -1
  150. package/context-dashboard/dashboard-settings/dashboard-version-history.component.d.ts.map +1 -1
  151. package/context-dashboard/dashboard-settings/typed-dashboard-settings.component.d.ts.map +1 -1
  152. package/context-dashboard/device-info-dashboard/device-info-dashboard.component.d.ts.map +1 -1
  153. package/context-dashboard/device-info-dashboard/device-info-dashboard.module.d.ts.map +1 -1
  154. package/context-dashboard/device-management-home-dashboard/device-management-home-dashboard.component.d.ts.map +1 -1
  155. package/context-dashboard/device-management-home-dashboard/device-management-home-dashboard.module.d.ts.map +1 -1
  156. package/context-dashboard/new-dashboard.guard.d.ts.map +1 -1
  157. package/context-dashboard/widget-config/appearance-settings.component.d.ts.map +1 -1
  158. package/context-dashboard/widget-config.service.d.ts +11 -1
  159. package/context-dashboard/widget-config.service.d.ts.map +1 -1
  160. package/core/action/action.service.d.ts +1 -1
  161. package/core/action-bar/action-bar.service.d.ts +1 -1
  162. package/core/authentication/simplified-auth.service.d.ts +1 -1
  163. package/core/authentication/simplified-auth.service.d.ts.map +1 -1
  164. package/core/bottom-drawer/bottom-drawer.component.d.ts +16 -2
  165. package/core/bottom-drawer/bottom-drawer.component.d.ts.map +1 -1
  166. package/core/bottom-drawer/bottom-drawer.service.d.ts +13 -5
  167. package/core/bottom-drawer/bottom-drawer.service.d.ts.map +1 -1
  168. package/core/breadcrumb/breadcrumb.service.d.ts +1 -1
  169. package/core/common/extension-hooks.d.ts.map +1 -1
  170. package/core/common/options.service.d.ts +1 -1
  171. package/core/common/service-registry.service.d.ts +1 -1
  172. package/core/common/ui-state.service.d.ts +7 -7
  173. package/core/common/ui-state.service.d.ts.map +1 -1
  174. package/core/common/user-preferences/user-preferences.service.d.ts +4 -4
  175. package/core/common/user-preferences/user-preferences.service.d.ts.map +1 -1
  176. package/core/dashboard/widgets-dashboard.component.d.ts +9 -1
  177. package/core/dashboard/widgets-dashboard.component.d.ts.map +1 -1
  178. package/core/data-grid/action-controls-extension.service.d.ts +1 -1
  179. package/core/data-grid/filter-chip/filter-mapper.factory.d.ts +1 -1
  180. package/core/date-picker/date-picker.component.d.ts.map +1 -1
  181. package/core/docs/docs.models.d.ts +1 -1
  182. package/core/docs/docs.module.d.ts +1 -1
  183. package/core/docs/help-and-support-outlet/help-and-support-outlet.module.d.ts +1 -1
  184. package/core/docs/legal-notices-outlet/legal-notices-outlet.module.d.ts +1 -1
  185. package/core/docs/support-outlet/support-outlet.component.d.ts +4 -3
  186. package/core/docs/support-outlet/support-outlet.component.d.ts.map +1 -1
  187. package/core/docs/support-outlet/support-outlet.module.d.ts +1 -1
  188. package/core/drawer/drawer.service.d.ts +1 -1
  189. package/core/dynamic-component/dynamic-component.model.d.ts +18 -4
  190. package/core/dynamic-component/dynamic-component.model.d.ts.map +1 -1
  191. package/core/dynamic-forms/i18n/translate.extension.d.ts.map +1 -1
  192. package/core/feedback-form/feedback-form.component.d.ts +27 -0
  193. package/core/feedback-form/feedback-form.component.d.ts.map +1 -0
  194. package/core/feedback-form/feedback-form.model.d.ts +6 -0
  195. package/core/feedback-form/feedback-form.model.d.ts.map +1 -0
  196. package/core/feedback-form/index.d.ts +2 -0
  197. package/core/feedback-form/index.d.ts.map +1 -0
  198. package/core/i18n/gettext.d.ts +4 -1
  199. package/core/i18n/gettext.d.ts.map +1 -1
  200. package/core/i18n/pattern-messages.data.d.ts +61 -0
  201. package/core/i18n/pattern-messages.data.d.ts.map +1 -1
  202. package/core/i18n/patterns-message.hook.d.ts +1 -1
  203. package/core/index.d.ts +1 -0
  204. package/core/index.d.ts.map +1 -1
  205. package/core/modal/modal.service.d.ts +0 -1
  206. package/core/modal/modal.service.d.ts.map +1 -1
  207. package/core/navigator/navigator-bottom/navigator-bottom.module.d.ts +1 -1
  208. package/core/navigator/navigator-top/navigator-top.module.d.ts +1 -1
  209. package/core/navigator/navigator.module.d.ts +1 -1
  210. package/core/navigator/navigator.service.d.ts +1 -1
  211. package/core/plugins/index.d.ts +1 -0
  212. package/core/plugins/index.d.ts.map +1 -1
  213. package/core/plugins/plugins-injection-token.d.ts +14 -0
  214. package/core/plugins/plugins-injection-token.d.ts.map +1 -0
  215. package/core/plugins/plugins-loader.service.d.ts +7 -21
  216. package/core/plugins/plugins-loader.service.d.ts.map +1 -1
  217. package/core/plugins/plugins-resolve.service.d.ts +1 -0
  218. package/core/plugins/plugins-resolve.service.d.ts.map +1 -1
  219. package/core/preview-feature/preview-feature.component.d.ts.map +1 -1
  220. package/core/preview-feature/preview-feature.service.d.ts +1 -1
  221. package/core/provider-configuration/provider-configuration-hook.d.ts +1 -1
  222. package/core/query-param-handler/index.d.ts +1 -1
  223. package/core/query-param-handler/query-param-bottom-drawer.service.d.ts +1 -1
  224. package/core/query-param-handler/query-param-handler.service.d.ts +1 -1
  225. package/core/query-param-handler/query-param-modal-handler.service.d.ts +1 -1
  226. package/core/router/router.service.d.ts +1 -1
  227. package/core/search/search.service.d.ts +1 -1
  228. package/core/stepper/stepper.service.d.ts +1 -1
  229. package/core/tabs/tab.component.d.ts +2 -2
  230. package/core/tabs/tab.component.d.ts.map +1 -1
  231. package/core/tabs/tab.model.d.ts +2 -2
  232. package/core/tabs/tab.model.d.ts.map +1 -1
  233. package/core/tabs/tabs.service.d.ts +1 -1
  234. package/core/tabs/tabs.service.d.ts.map +1 -1
  235. package/core/ui-settings/ui-settings.module.d.ts +1 -1
  236. package/core/user/change-current-user-password.service.d.ts +10 -0
  237. package/core/user/change-current-user-password.service.d.ts.map +1 -0
  238. package/core/user/index.d.ts +1 -0
  239. package/core/user/index.d.ts.map +1 -1
  240. package/core/user/user-details-drawer/user-details-drawer.module.d.ts +1 -1
  241. package/core/user/user-menu.service.d.ts +1 -1
  242. package/core/user/user.module.d.ts +1 -1
  243. package/core/version/version.model.d.ts +1 -1
  244. package/core/version/version.module.d.ts +1 -1
  245. package/core/wizard/wizard.model.d.ts +1 -1
  246. package/dashboard-details-advanced-tab/advanced-tab.factory.d.ts.map +1 -1
  247. package/dashboard-details-advanced-tab/assign-widget-assets/assign-widget-asset-modal.component.d.ts.map +1 -1
  248. package/dashboard-details-advanced-tab/dashboard-json-editor/dashboard-json-editor.component.d.ts.map +1 -1
  249. package/dashboard-details-advanced-tab/dashboard-json-editor/import-export-widgets.service.d.ts.map +1 -1
  250. package/dashboard-manager/dashboard-manager-tabs.factory.d.ts.map +1 -1
  251. package/dashboard-manager/dashboard-manager.service.d.ts.map +1 -1
  252. package/dashboard-manager/devicemanagement/index.d.ts +1 -1
  253. package/dashboard-manager/type-dashboard-target-assets-grid/type-dashboard-target-assets-grid.component.d.ts.map +1 -1
  254. package/dashboard-manager/type-dashboard-target-assets-modal/type-dashboard-target-assets-modal.component.d.ts.map +1 -1
  255. package/dashboard-manager/type-dashboards-list/device-type-value.grid-column.d.ts.map +1 -1
  256. package/dashboard-manager/type-dashboards-list/type-dashboards-list.component.d.ts.map +1 -1
  257. package/data-grid-columns/asset-type/asset-type-grid-column.d.ts.map +1 -1
  258. package/data-grid-columns/asset-type/asset-type.cell-renderer.component.d.ts.map +1 -1
  259. package/datapoint-explorer/datapoint-explorer-navigation-factory.d.ts.map +1 -1
  260. package/datapoint-explorer/devicemanagement/index.d.ts +3 -0
  261. package/datapoint-explorer/devicemanagement/index.d.ts.map +1 -1
  262. package/datapoint-explorer/view/configuration/workspace-configuration.component.d.ts +4 -2
  263. package/datapoint-explorer/view/configuration/workspace-configuration.component.d.ts.map +1 -1
  264. package/datapoint-explorer/view/create-new-report-modal/create-new-report-modal.component.d.ts.map +1 -1
  265. package/datapoint-explorer/view/datapoint-explorer.model.d.ts +1 -0
  266. package/datapoint-explorer/view/datapoint-explorer.model.d.ts.map +1 -1
  267. package/datapoint-explorer/view/index.d.ts +3 -0
  268. package/datapoint-explorer/view/index.d.ts.map +1 -1
  269. package/datapoint-explorer/view/send-as-widget-to-dashboard-modal/send-as-widget-to-dashboard-modal.component.d.ts.map +1 -1
  270. package/datapoint-explorer/view/send-as-widget-to-report-modal/send-as-widget-to-report-modal.component.d.ts.map +1 -1
  271. package/datapoint-library/datapoint-library.module.d.ts.map +1 -1
  272. package/datapoint-library/details/datapoint-library-details.component.d.ts +1 -2
  273. package/datapoint-library/details/datapoint-library-details.component.d.ts.map +1 -1
  274. package/datapoint-library/list/datapoint-library-list.component.d.ts.map +1 -1
  275. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.d.ts.map +1 -1
  276. package/datapoint-selector/datapoint-selector-modal/datapoint-selector-modal.component.d.ts.map +1 -1
  277. package/datapoint-selector/datapoint-template-popover/datapoint-template-popover.component.d.ts.map +1 -1
  278. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts.map +1 -1
  279. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts.map +1 -1
  280. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.d.ts.map +1 -1
  281. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.d.ts.map +1 -1
  282. package/datapoints-export-selector/datapoints-export-selector.model.d.ts.map +1 -1
  283. package/default-subscriptions/default-subscriptions-navigation.factory.d.ts.map +1 -1
  284. package/default-subscriptions/default-subscriptions.component.d.ts.map +1 -1
  285. package/device-grid/columns/alarms.cell-renderer.component.d.ts.map +1 -1
  286. package/device-grid/columns/alarms.device-grid-column.d.ts.map +1 -1
  287. package/device-grid/columns/group.device-grid-column.d.ts.map +1 -1
  288. package/device-grid/columns/imei.device-grid-column.d.ts.map +1 -1
  289. package/device-grid/columns/model.device-grid-column.d.ts.map +1 -1
  290. package/device-grid/columns/name.device-grid-column.d.ts.map +1 -1
  291. package/device-grid/columns/registration-date.device-grid-column.d.ts.map +1 -1
  292. package/device-grid/columns/serial-number.device-grid-column.d.ts.map +1 -1
  293. package/device-grid/columns/status.device-grid-column.d.ts.map +1 -1
  294. package/device-grid/columns/system-id.device-grid-column.d.ts.map +1 -1
  295. package/device-grid/columns/type.device-grid-column.d.ts.map +1 -1
  296. package/device-grid/device-grid.component.d.ts.map +1 -1
  297. package/device-grid/device-grid.service.d.ts.map +1 -1
  298. package/device-list/add-smart-group.component.d.ts.map +1 -1
  299. package/device-list/device-list-navigation.factory.d.ts.map +1 -1
  300. package/device-list/devices.breadcrumb-factory.d.ts.map +1 -1
  301. package/device-map/device-map-navigation.factory.d.ts.map +1 -1
  302. package/device-profile/add-device-profile.component.d.ts.map +1 -1
  303. package/device-profile/device-profile-list.component.d.ts.map +1 -1
  304. package/device-profile/device-profile-navigation.factory.d.ts.map +1 -1
  305. package/device-profile/device-profile.component.d.ts.map +1 -1
  306. package/device-profile/device-profile.service.d.ts.map +1 -1
  307. package/device-profile/device-tab-profile/device-tab-profile.component.d.ts.map +1 -1
  308. package/device-profile/select-configuration-modal.component.d.ts.map +1 -1
  309. package/device-protocols/device-protocols.guard.d.ts.map +1 -1
  310. package/device-provisioned-certificates/device-provisioned-certificates.module.d.ts.map +1 -1
  311. package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts.map +1 -1
  312. package/device-shell/device-shell.module.d.ts.map +1 -1
  313. package/device-shell/shared/device-shell.service.d.ts.map +1 -1
  314. package/device-shell/shell/shell.component.d.ts.map +1 -1
  315. package/diagnostics/diagnostics.module.d.ts.map +1 -1
  316. package/diagnostics/diagnostics.service.d.ts.map +1 -1
  317. package/echart/services/echarts-options.service.d.ts +2 -3
  318. package/echart/services/echarts-options.service.d.ts.map +1 -1
  319. package/ecosystem/application-plugins/application-plugins.component.d.ts.map +1 -1
  320. package/ecosystem/application-plugins/application-plugins.module.d.ts.map +1 -1
  321. package/ecosystem/application-plugins/apps-to-update-remotes-select.component.d.ts.map +1 -1
  322. package/ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.d.ts.map +1 -1
  323. package/ecosystem/application-plugins/orphaned-status-cell-renderer.component.d.ts.map +1 -1
  324. package/ecosystem/application-plugins/plugin-list.service.d.ts.map +1 -1
  325. package/ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.d.ts.map +1 -1
  326. package/ecosystem/application-properties/application-properties.component.d.ts.map +1 -1
  327. package/ecosystem/application-properties/subscription-modal/subscription-modal.component.d.ts.map +1 -1
  328. package/ecosystem/ecosystem-tabs.factory.d.ts.map +1 -1
  329. package/ecosystem/license-confirm/license-confirm-modal.component.d.ts.map +1 -1
  330. package/ecosystem/license-confirm/license-view.component.d.ts.map +1 -1
  331. package/ecosystem/microservices/add-microservice.component.d.ts.map +1 -1
  332. package/ecosystem/packages/add-package.component.d.ts.map +1 -1
  333. package/ecosystem/packages/deploy-application/deploy-application.component.d.ts.map +1 -1
  334. package/ecosystem/packages/package-list/packages-list.component.d.ts.map +1 -1
  335. package/ecosystem/packages/package-versions/package-versions-list/package-versions-list.component.d.ts.map +1 -1
  336. package/ecosystem/packages/package-versions/packages-versions.component.d.ts.map +1 -1
  337. package/ecosystem/plugin-setup-stepper/plugin-setup-stepper.module.d.ts.map +1 -1
  338. package/ecosystem/shared/add-application.component.d.ts.map +1 -1
  339. package/ecosystem/shared/application-card.component.d.ts.map +1 -1
  340. package/ecosystem/shared/archived-filter/archived-filter.component.d.ts.map +1 -1
  341. package/ecosystem/shared/ecosystem.constants.d.ts.map +1 -1
  342. package/ecosystem/shared/ecosystem.service.d.ts.map +1 -1
  343. package/ecosystem/shared/package-availability.service.d.ts.map +1 -1
  344. package/ecosystem/shared/package-version-select/package-version-select.component.d.ts.map +1 -1
  345. package/ecosystem/shared/upload-archive.component.d.ts.map +1 -1
  346. package/editor/editor.component.d.ts +16 -0
  347. package/editor/editor.component.d.ts.map +1 -1
  348. package/exports/index.d.ts +1 -1
  349. package/exports/index.d.ts.map +1 -1
  350. package/exports/list/exports-grid.service.d.ts.map +1 -1
  351. package/exports/list/exports-list/exports-list.component.d.ts.map +1 -1
  352. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs +2 -1
  353. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs.map +1 -1
  354. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +8 -7
  355. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
  356. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +2 -1
  357. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs.map +1 -1
  358. package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs +2 -1
  359. package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs.map +1 -1
  360. package/fesm2022/c8y-ngx-components-alarms.mjs +40 -2
  361. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  362. package/fesm2022/c8y-ngx-components-asset-properties.mjs +608 -97
  363. package/fesm2022/c8y-ngx-components-asset-properties.mjs.map +1 -1
  364. package/fesm2022/c8y-ngx-components-asset-property-grid.component-CRnyUbyz.mjs.map +1 -1
  365. package/fesm2022/c8y-ngx-components-assets-navigator.mjs +70 -23
  366. package/fesm2022/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  367. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +2 -1
  368. package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  369. package/fesm2022/c8y-ngx-components-binary-file-download.mjs +2 -1
  370. package/fesm2022/c8y-ngx-components-binary-file-download.mjs.map +1 -1
  371. package/fesm2022/c8y-ngx-components-bookmarks.mjs +2 -1
  372. package/fesm2022/c8y-ngx-components-bookmarks.mjs.map +1 -1
  373. package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs +2 -1
  374. package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs.map +1 -1
  375. package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs +3 -3
  376. package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs.map +1 -1
  377. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs +2 -1
  378. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs.map +1 -1
  379. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +22 -12
  380. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
  381. package/fesm2022/c8y-ngx-components-child-devices.mjs +2 -1
  382. package/fesm2022/c8y-ngx-components-child-devices.mjs.map +1 -1
  383. package/fesm2022/c8y-ngx-components-cockpit-config.mjs +2 -1
  384. package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
  385. package/fesm2022/c8y-ngx-components-computed-asset-properties-alarm-count-config.component-BOpIFCYh.mjs +68 -0
  386. package/fesm2022/c8y-ngx-components-computed-asset-properties-alarm-count-config.component-BOpIFCYh.mjs.map +1 -0
  387. package/fesm2022/c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-D8otkLI8.mjs +73 -0
  388. package/fesm2022/c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-D8otkLI8.mjs.map +1 -0
  389. package/fesm2022/c8y-ngx-components-computed-asset-properties-event-count-config.component-AVm6qa9k.mjs +44 -0
  390. package/fesm2022/c8y-ngx-components-computed-asset-properties-event-count-config.component-AVm6qa9k.mjs.map +1 -0
  391. package/fesm2022/c8y-ngx-components-computed-asset-properties-last-measurement-config.component-CtUoKGuU.mjs +91 -0
  392. package/fesm2022/c8y-ngx-components-computed-asset-properties-last-measurement-config.component-CtUoKGuU.mjs.map +1 -0
  393. package/fesm2022/c8y-ngx-components-computed-asset-properties.mjs +643 -0
  394. package/fesm2022/c8y-ngx-components-computed-asset-properties.mjs.map +1 -0
  395. package/fesm2022/c8y-ngx-components-connectivity.mjs +2 -1
  396. package/fesm2022/c8y-ngx-components-connectivity.mjs.map +1 -1
  397. package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs +2 -1
  398. package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs.map +1 -1
  399. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DjlpSztw.mjs → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-BkcNSexF.mjs} +3 -2
  400. package/fesm2022/c8y-ngx-components-context-dashboard-dashboard-general-settings.component-BkcNSexF.mjs.map +1 -0
  401. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-B2zLhv0X.mjs → c8y-ngx-components-context-dashboard-dashboard-version-history.component-D9W68e7h.mjs} +3 -2
  402. package/fesm2022/c8y-ngx-components-context-dashboard-dashboard-version-history.component-D9W68e7h.mjs.map +1 -0
  403. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +45 -12
  404. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  405. package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-CwfVxTSx.mjs → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-D0lATUjO.mjs} +12 -8
  406. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-D0lATUjO.mjs.map +1 -0
  407. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs +4 -3
  408. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs.map +1 -1
  409. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs +2 -1
  410. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs.map +1 -1
  411. package/fesm2022/c8y-ngx-components-data-broker.mjs +2 -1
  412. package/fesm2022/c8y-ngx-components-data-broker.mjs.map +1 -1
  413. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs +2 -1
  414. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs.map +1 -1
  415. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs +2 -1
  416. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs.map +1 -1
  417. package/fesm2022/c8y-ngx-components-datapoint-explorer-devicemanagement.mjs +38 -9
  418. package/fesm2022/c8y-ngx-components-datapoint-explorer-devicemanagement.mjs.map +1 -1
  419. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +58 -53
  420. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
  421. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +2 -1
  422. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs.map +1 -1
  423. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs +2 -1
  424. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs.map +1 -1
  425. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs +2 -1
  426. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs.map +1 -1
  427. package/fesm2022/c8y-ngx-components-datapoint-library.mjs +2 -1
  428. package/fesm2022/c8y-ngx-components-datapoint-library.mjs.map +1 -1
  429. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +2 -1
  430. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  431. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +2 -1
  432. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
  433. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs +2 -1
  434. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs.map +1 -1
  435. package/fesm2022/c8y-ngx-components-device-grid.mjs +3 -3
  436. package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
  437. package/fesm2022/c8y-ngx-components-device-list.mjs +2 -1
  438. package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
  439. package/fesm2022/c8y-ngx-components-device-map.mjs +2 -1
  440. package/fesm2022/c8y-ngx-components-device-map.mjs.map +1 -1
  441. package/fesm2022/c8y-ngx-components-device-profile.mjs +2 -1
  442. package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
  443. package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs +3 -2
  444. package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs.map +1 -1
  445. package/fesm2022/c8y-ngx-components-device-protocols.mjs +2 -1
  446. package/fesm2022/c8y-ngx-components-device-protocols.mjs.map +1 -1
  447. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +2 -1
  448. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -1
  449. package/fesm2022/c8y-ngx-components-device-shell.mjs +2 -1
  450. package/fesm2022/c8y-ngx-components-device-shell.mjs.map +1 -1
  451. package/fesm2022/c8y-ngx-components-diagnostics.mjs +2 -1
  452. package/fesm2022/c8y-ngx-components-diagnostics.mjs.map +1 -1
  453. package/fesm2022/c8y-ngx-components-echart.mjs +6 -8
  454. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
  455. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +2 -1
  456. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  457. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs +2 -1
  458. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs.map +1 -1
  459. package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs +2 -1
  460. package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs.map +1 -1
  461. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +2 -1
  462. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  463. package/fesm2022/c8y-ngx-components-ecosystem.mjs +2 -1
  464. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  465. package/fesm2022/c8y-ngx-components-editor.mjs +39 -1
  466. package/fesm2022/c8y-ngx-components-editor.mjs.map +1 -1
  467. package/fesm2022/c8y-ngx-components-events.mjs +1 -1
  468. package/fesm2022/c8y-ngx-components-events.mjs.map +1 -1
  469. package/fesm2022/c8y-ngx-components-exports-list.mjs +2 -1
  470. package/fesm2022/c8y-ngx-components-exports-list.mjs.map +1 -1
  471. package/fesm2022/c8y-ngx-components-exports.mjs +2 -1
  472. package/fesm2022/c8y-ngx-components-exports.mjs.map +1 -1
  473. package/fesm2022/c8y-ngx-components-file-preview.mjs +2 -1
  474. package/fesm2022/c8y-ngx-components-file-preview.mjs.map +1 -1
  475. package/fesm2022/c8y-ngx-components-files-repository.mjs +2 -1
  476. package/fesm2022/c8y-ngx-components-files-repository.mjs.map +1 -1
  477. package/fesm2022/c8y-ngx-components-icon-selector.mjs +2 -1
  478. package/fesm2022/c8y-ngx-components-icon-selector.mjs.map +1 -1
  479. package/fesm2022/c8y-ngx-components-location.mjs +2 -1
  480. package/fesm2022/c8y-ngx-components-location.mjs.map +1 -1
  481. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs +2 -1
  482. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs.map +1 -1
  483. package/fesm2022/c8y-ngx-components-map.mjs +2 -1
  484. package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
  485. package/fesm2022/c8y-ngx-components-messaging-management.mjs +2 -1
  486. package/fesm2022/c8y-ngx-components-messaging-management.mjs.map +1 -1
  487. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs +2 -1
  488. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs.map +1 -1
  489. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +2 -1
  490. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs.map +1 -1
  491. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs +2 -1
  492. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs.map +1 -1
  493. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs +2 -1
  494. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs.map +1 -1
  495. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs +2 -1
  496. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs.map +1 -1
  497. package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs +2 -1
  498. package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs.map +1 -1
  499. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs +2 -1
  500. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs.map +1 -1
  501. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +2 -1
  502. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
  503. package/fesm2022/c8y-ngx-components-operations-shared.mjs +2 -1
  504. package/fesm2022/c8y-ngx-components-operations-shared.mjs.map +1 -1
  505. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +4 -4
  506. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs.map +1 -1
  507. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +4 -4
  508. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs.map +1 -1
  509. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +4 -4
  510. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs.map +1 -1
  511. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +4 -4
  512. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs.map +1 -1
  513. package/fesm2022/c8y-ngx-components-operations.mjs +2 -1
  514. package/fesm2022/c8y-ngx-components-operations.mjs.map +1 -1
  515. package/fesm2022/c8y-ngx-components-pending-mo-request.mjs +2 -1
  516. package/fesm2022/c8y-ngx-components-pending-mo-request.mjs.map +1 -1
  517. package/fesm2022/c8y-ngx-components-platform-configuration.mjs +2 -1
  518. package/fesm2022/c8y-ngx-components-platform-configuration.mjs.map +1 -1
  519. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +2 -1
  520. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs.map +1 -1
  521. package/fesm2022/c8y-ngx-components-protocol-opcua-mappings.mjs +1 -1
  522. package/fesm2022/c8y-ngx-components-protocol-opcua-mappings.mjs.map +1 -1
  523. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +2 -1
  524. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
  525. package/fesm2022/c8y-ngx-components-register-device.mjs +2 -1
  526. package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
  527. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +3 -3
  528. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs.map +1 -1
  529. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs +2 -1
  530. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs.map +1 -1
  531. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +2 -1
  532. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs.map +1 -1
  533. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs +2 -1
  534. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs.map +1 -1
  535. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs +2 -1
  536. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs.map +1 -1
  537. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +3 -3
  538. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs.map +1 -1
  539. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs +2 -1
  540. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs.map +1 -1
  541. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs +2 -1
  542. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs.map +1 -1
  543. package/fesm2022/c8y-ngx-components-replace-device.mjs +2 -1
  544. package/fesm2022/c8y-ngx-components-replace-device.mjs.map +1 -1
  545. package/fesm2022/c8y-ngx-components-report-dashboard.mjs +2 -1
  546. package/fesm2022/c8y-ngx-components-report-dashboard.mjs.map +1 -1
  547. package/fesm2022/c8y-ngx-components-reports.mjs +2 -1
  548. package/fesm2022/c8y-ngx-components-reports.mjs.map +1 -1
  549. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +2 -1
  550. package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  551. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +2 -1
  552. package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
  553. package/fesm2022/c8y-ngx-components-repository-shared.mjs +3 -2
  554. package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
  555. package/fesm2022/c8y-ngx-components-repository-software.mjs +2 -1
  556. package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
  557. package/fesm2022/c8y-ngx-components-search.mjs +2 -1
  558. package/fesm2022/c8y-ngx-components-search.mjs.map +1 -1
  559. package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs +2 -1
  560. package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs.map +1 -1
  561. package/fesm2022/c8y-ngx-components-sensor-phone.mjs +3 -2
  562. package/fesm2022/c8y-ngx-components-sensor-phone.mjs.map +1 -1
  563. package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs +2 -1
  564. package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs.map +1 -1
  565. package/fesm2022/c8y-ngx-components-services-shared.mjs +1 -1
  566. package/fesm2022/c8y-ngx-components-services-shared.mjs.map +1 -1
  567. package/fesm2022/c8y-ngx-components-services.mjs +2 -1
  568. package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
  569. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs +2 -1
  570. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs.map +1 -1
  571. package/fesm2022/c8y-ngx-components-sms-gateway.mjs +3 -2
  572. package/fesm2022/c8y-ngx-components-sms-gateway.mjs.map +1 -1
  573. package/fesm2022/c8y-ngx-components-sub-assets.mjs +13 -9
  574. package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
  575. package/fesm2022/c8y-ngx-components-tenants.mjs +37 -37
  576. package/fesm2022/c8y-ngx-components-tenants.mjs.map +1 -1
  577. package/fesm2022/c8y-ngx-components-tracking.mjs +2 -1
  578. package/fesm2022/c8y-ngx-components-tracking.mjs.map +1 -1
  579. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +5 -5
  580. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -1
  581. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +2 -1
  582. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  583. package/fesm2022/c8y-ngx-components-upgrade.mjs +10 -3
  584. package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
  585. package/fesm2022/c8y-ngx-components-user-roles.mjs +2 -1
  586. package/fesm2022/c8y-ngx-components-user-roles.mjs.map +1 -1
  587. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs +2 -1
  588. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
  589. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs +2 -1
  590. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs.map +1 -1
  591. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs +2 -1
  592. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs.map +1 -1
  593. package/fesm2022/c8y-ngx-components-widgets-definitions-applications.mjs +2 -1
  594. package/fesm2022/c8y-ngx-components-widgets-definitions-applications.mjs.map +1 -1
  595. package/fesm2022/c8y-ngx-components-widgets-definitions-asset-notes.mjs +2 -1
  596. package/fesm2022/c8y-ngx-components-widgets-definitions-asset-notes.mjs.map +1 -1
  597. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-legacy-welcome.mjs +2 -1
  598. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-legacy-welcome.mjs.map +1 -1
  599. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-welcome.mjs +2 -1
  600. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-welcome.mjs.map +1 -1
  601. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +2 -1
  602. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs.map +1 -1
  603. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +2 -1
  604. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -1
  605. package/fesm2022/c8y-ngx-components-widgets-definitions-device-control-message.mjs +2 -1
  606. package/fesm2022/c8y-ngx-components-widgets-definitions-device-control-message.mjs.map +1 -1
  607. package/fesm2022/c8y-ngx-components-widgets-definitions-device-management-welcome.mjs +1 -1
  608. package/fesm2022/c8y-ngx-components-widgets-definitions-device-management-welcome.mjs.map +1 -1
  609. package/fesm2022/c8y-ngx-components-widgets-definitions-help-and-service.mjs +2 -1
  610. package/fesm2022/c8y-ngx-components-widgets-definitions-help-and-service.mjs.map +1 -1
  611. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs +3 -3
  612. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs.map +1 -1
  613. package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs +3 -6
  614. package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs.map +1 -1
  615. package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs +2 -1
  616. package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs.map +1 -1
  617. package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs +2 -1
  618. package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs.map +1 -1
  619. package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs +2 -1
  620. package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs.map +1 -1
  621. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs +2 -1
  622. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs.map +1 -1
  623. package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs +2 -2
  624. package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs.map +1 -1
  625. package/fesm2022/c8y-ngx-components-widgets-definitions-quick-links.mjs +2 -1
  626. package/fesm2022/c8y-ngx-components-widgets-definitions-quick-links.mjs.map +1 -1
  627. package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs +2 -1
  628. package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs.map +1 -1
  629. package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs +2 -1
  630. package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs.map +1 -1
  631. package/fesm2022/c8y-ngx-components-widgets-definitions-three-d-rotation.mjs +2 -1
  632. package/fesm2022/c8y-ngx-components-widgets-definitions-three-d-rotation.mjs.map +1 -1
  633. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +2 -1
  634. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  635. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs +2 -1
  636. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs.map +1 -1
  637. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs +9 -6
  638. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs.map +1 -1
  639. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +2 -1
  640. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
  641. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs +2 -1
  642. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs.map +1 -1
  643. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs +2 -1
  644. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs.map +1 -1
  645. package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs +2 -1
  646. package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs.map +1 -1
  647. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs +13 -8
  648. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs.map +1 -1
  649. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs +2 -1
  650. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs.map +1 -1
  651. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +2 -1
  652. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
  653. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs +2 -1
  654. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs.map +1 -1
  655. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +2 -1
  656. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  657. package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs +2 -1
  658. package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs.map +1 -1
  659. package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs +2 -1
  660. package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs.map +1 -1
  661. package/fesm2022/c8y-ngx-components-widgets-import-export-config.mjs +3 -10
  662. package/fesm2022/c8y-ngx-components-widgets-import-export-config.mjs.map +1 -1
  663. package/fesm2022/c8y-ngx-components.mjs +789 -531
  664. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  665. package/file-preview/file-preview.component.d.ts.map +1 -1
  666. package/files-repository/files-repository-navigation.factory.d.ts.map +1 -1
  667. package/files-repository/files-repository-upload.component.d.ts.map +1 -1
  668. package/files-repository/files-repository.component.d.ts.map +1 -1
  669. package/files-repository/files-repository.service.d.ts +1 -2
  670. package/files-repository/files-repository.service.d.ts.map +1 -1
  671. package/icon-selector/icon-selector-modal/icon-selector-modal.component.d.ts.map +1 -1
  672. package/icon-selector/icon-selector.component.d.ts.map +1 -1
  673. package/locales/de.po +105 -12
  674. package/locales/es.po +105 -12
  675. package/locales/fr.po +105 -12
  676. package/locales/ja_JP.po +99 -12
  677. package/locales/ko.po +104 -12
  678. package/locales/locales.pot +97 -12
  679. package/locales/nl.po +105 -12
  680. package/locales/pl.po +105 -12
  681. package/locales/pt_BR.po +105 -12
  682. package/locales/zh_CN.po +104 -12
  683. package/locales/zh_TW.po +104 -12
  684. package/location/location-tab.factory.d.ts.map +1 -1
  685. package/location/location.component.d.ts.map +1 -1
  686. package/loriot-device-registration/loriot-device-registration.component.d.ts.map +1 -1
  687. package/loriot-device-registration/loriot-provider.service.d.ts.map +1 -1
  688. package/map/map.component.d.ts.map +1 -1
  689. package/messaging-management/messaging/namespace-list/namespace-item/namespace-item-card/namespace-item-card.component.d.ts.map +1 -1
  690. package/messaging-management/messaging/shared/usage/usage.component.d.ts.map +1 -1
  691. package/messaging-management/messaging/topic/topic-list-view.component.d.ts.map +1 -1
  692. package/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-data-grid.service.d.ts.map +1 -1
  693. package/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-view.component.d.ts.map +1 -1
  694. package/messaging-management/messaging/topic/topics-data-grid.service.d.ts.map +1 -1
  695. package/messaging-management/navigator/messaging-navigator-factory.d.ts.map +1 -1
  696. package/messaging-management/navigator/topic-details-tab.factory.d.ts.map +1 -1
  697. package/operations/bulk-operation-list-item/bulk-operation-list-item.component.d.ts.map +1 -1
  698. package/operations/bulk-operation-list-item/modals/bulk-operations-reschedule-modal.component.d.ts.map +1 -1
  699. package/operations/bulk-operation-scheduler/operation-scheduler.component.d.ts.map +1 -1
  700. package/operations/bulk-operation-stepper/bulk-operation-stepper.component.d.ts.map +1 -1
  701. package/operations/bulk-single-operations-list/single-operation-item.component.d.ts.map +1 -1
  702. package/operations/bulk-single-operations-list/single-operations-list.component.d.ts.map +1 -1
  703. package/operations/factories/bulk-operations-tab.factory.d.ts.map +1 -1
  704. package/operations/grid-columns/creation-time.grid-column.d.ts.map +1 -1
  705. package/operations/grid-columns/device.grid-column.d.ts.map +1 -1
  706. package/operations/grid-columns/failure-reason.grid-column.d.ts.map +1 -1
  707. package/operations/grid-columns/status.grid-column.d.ts.map +1 -1
  708. package/operations/operations-list/device-control.feature.d.ts.map +1 -1
  709. package/operations/operations-list/operations-list-item.component.d.ts.map +1 -1
  710. package/operations/operations-list/operations-list.component.d.ts.map +1 -1
  711. package/operations/operations-list/single-operations-tab.factory.d.ts.map +1 -1
  712. package/operations/operations-list-item-details/operation-details-tabs.component.d.ts.map +1 -1
  713. package/operations/shared/nav.factory.d.ts.map +1 -1
  714. package/operations/shared/operations.service.d.ts.map +1 -1
  715. package/operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.component.d.ts.map +1 -1
  716. package/operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.component.d.ts.map +1 -1
  717. package/operations/stepper-bulk-type-firmware/stepper-bulk-type-firmware.component.d.ts.map +1 -1
  718. package/operations/stepper-bulk-type-software/select-software-step.component.d.ts.map +1 -1
  719. package/operations/stepper-bulk-type-software/stepper-bulk-type-software.component.d.ts.map +1 -1
  720. package/package.json +1 -1
  721. package/pending-mo-request/pending-mo-request-interceptor.d.ts.map +1 -1
  722. package/pending-mo-request/pending-mo-request.service.d.ts.map +1 -1
  723. package/platform-configuration/platform-configuration-form-provider.service.d.ts.map +1 -1
  724. package/protocol-lpwan/lpwan-protocol.module.d.ts.map +1 -1
  725. package/protocol-lpwan/lpwan-set-connections.component.d.ts.map +1 -1
  726. package/protocol-lpwan/lpwan-set-device-protocol.component.d.ts.map +1 -1
  727. package/protocol-lpwan/multiple-lns-connectors/actility-multiple-lns-connector.component.d.ts.map +1 -1
  728. package/protocol-lpwan/multiple-lns-connectors/connection-info-with-download-csv.component.d.ts.map +1 -1
  729. package/protocol-lpwan/multiple-lns-connectors/loriot/loriot-multiple-lns-connector.component.d.ts.map +1 -1
  730. package/protocol-lpwan/multiple-lns-connectors/no-connections-found.component.d.ts.map +1 -1
  731. package/protocol-lpwan/multiple-lns-connectors/sigfox-multiple-lns-connector.component.d.ts.map +1 -1
  732. package/protocol-opcua/opcua-address-space.component.d.ts.map +1 -1
  733. package/protocol-opcua/opcua-device-protocol-detail.component.d.ts.map +1 -1
  734. package/protocol-opcua/opcua-server-config.component.d.ts.map +1 -1
  735. package/protocol-opcua/opcua-servers.component.d.ts.map +1 -1
  736. package/register-device/bulk/bulk-device-registration-modal.component.d.ts.map +1 -1
  737. package/register-device/device-registration-view.component.d.ts.map +1 -1
  738. package/register-device/extensible/base-extensible-device-registration.service.d.ts.map +1 -1
  739. package/register-device/extensible/bulk/extensible-bulk-device-registration-modal.component.d.ts.map +1 -1
  740. package/register-device/extensible/bulk/extensible-bulk-device-registration.service.d.ts.map +1 -1
  741. package/register-device/extensible/single/extensible-device-registration-modal.component.d.ts.map +1 -1
  742. package/register-device/extensible/single/extensible-device-registration-stepper.component.d.ts.map +1 -1
  743. package/register-device/extensible/single/extensible-device-registration.service.d.ts.map +1 -1
  744. package/register-device/general/general-device-registration.component.d.ts.map +1 -1
  745. package/register-device/register-device-navigation.factory.d.ts.map +1 -1
  746. package/register-device/register-device.service.d.ts.map +1 -1
  747. package/remote-access/configurations/remote-access-configuration-list/remote-access-configuration-list.component.d.ts.map +1 -1
  748. package/remote-access/configurations/remote-access-pick-protocol-modal/remote-access-pick-protocol-modal.component.d.ts.map +1 -1
  749. package/remote-access/passthrough/index.d.ts +1 -1
  750. package/remote-access/passthrough/index.d.ts.map +1 -1
  751. package/remote-access/shared/remote-access-basic-endpoint-modal/remote-access-basic-endpoint-modal.component.d.ts.map +1 -1
  752. package/remote-access/ssh/index.d.ts.map +1 -1
  753. package/remote-access/telnet/index.d.ts.map +1 -1
  754. package/remote-access/vnc/index.d.ts.map +1 -1
  755. package/replace-device/replace-device-grid-action.factory.d.ts.map +1 -1
  756. package/replace-device/replace-device-wizard/replace-device-wizard.component.d.ts.map +1 -1
  757. package/replace-device/replace-device-wizard/replace-device-wizard.service.d.ts.map +1 -1
  758. package/replace-device/replace-device.service.d.ts.map +1 -1
  759. package/report-dashboard/report-dashboard-list.component.d.ts.map +1 -1
  760. package/report-dashboard/report-dashboard-navigation.factory.d.ts.map +1 -1
  761. package/reports/export-schedules.component.d.ts.map +1 -1
  762. package/repository/configuration/device-tab/configuration-repository-device-tab.module.d.ts.map +1 -1
  763. package/repository/configuration/device-tab/save-to-repository.component.d.ts.map +1 -1
  764. package/repository/configuration/device-tab/text-based-configuration.component.d.ts.map +1 -1
  765. package/repository/configuration/list/configuration-detail.component.d.ts.map +1 -1
  766. package/repository/configuration/list/configuration-list.component.d.ts.map +1 -1
  767. package/repository/configuration/list/configuration-repository-navigation-factory.d.ts.map +1 -1
  768. package/repository/firmware/device-tab/firmware-device-tab.component.d.ts.map +1 -1
  769. package/repository/firmware/device-tab/firmware-repository-device-tab.module.d.ts.map +1 -1
  770. package/repository/firmware/list/add-firmware-modal.component.d.ts.map +1 -1
  771. package/repository/firmware/list/add-firmware-patch-modal.component.d.ts.map +1 -1
  772. package/repository/firmware/list/firmware-details.component.d.ts.map +1 -1
  773. package/repository/firmware/list/firmware-list.component.d.ts.map +1 -1
  774. package/repository/firmware/list/firmware-repository-navigation-factory.d.ts.map +1 -1
  775. package/repository/shared/columns/description.grid-column.d.ts.map +1 -1
  776. package/repository/shared/columns/device-type.grid-column.d.ts.map +1 -1
  777. package/repository/shared/columns/file.grid-column.d.ts.map +1 -1
  778. package/repository/shared/columns/name.grid-column.d.ts.map +1 -1
  779. package/repository/shared/columns/type.filtering-form-renderer.component.d.ts.map +1 -1
  780. package/repository/shared/columns/type.grid-column.d.ts.map +1 -1
  781. package/repository/shared/columns/versions.grid-column.d.ts.map +1 -1
  782. package/repository/shared/repository.service.d.ts.map +1 -1
  783. package/repository/shared/select-modal/repository-select-modal.component.d.ts +1 -1
  784. package/repository/shared/select-modal/repository-select-modal.component.d.ts.map +1 -1
  785. package/repository/shared/software-type/software-type.component.d.ts.map +1 -1
  786. package/repository/software/device-tab/installed-software.component.d.ts.map +1 -1
  787. package/repository/software/device-tab/software-repository-device-tab.module.d.ts.map +1 -1
  788. package/repository/software/list/add-software-modal.component.d.ts.map +1 -1
  789. package/repository/software/list/software-details.component.d.ts.map +1 -1
  790. package/repository/software/list/software-list.component.d.ts.map +1 -1
  791. package/repository/software/list/software-repository-navigation-factory.d.ts.map +1 -1
  792. package/search/columns/asset-type-search-grid-column.d.ts.map +1 -1
  793. package/search/search-grid.component.d.ts.map +1 -1
  794. package/search/search-results.component.d.ts.map +1 -1
  795. package/sensor-phone/connect-smartphone.factory.d.ts.map +1 -1
  796. package/sensor-phone/sensor-phone-modal/sensor-phone-modal.component.d.ts.map +1 -1
  797. package/sensor-phone/sensor-phone-modal/sensor-phone.service.d.ts.map +1 -1
  798. package/services/service-command-tab/service-command.feature.d.ts.map +1 -1
  799. package/services/services-device-tab/columns/last-updated-date.device-grid-column.d.ts.map +1 -1
  800. package/services/services-device-tab/columns/name.grid-column.d.ts.map +1 -1
  801. package/services/services-device-tab/columns/service-type.grid-column.d.ts.map +1 -1
  802. package/services/services-device-tab/columns/status.grid-column.d.ts.map +1 -1
  803. package/services/services-device-tab/services-device-tab.component.d.ts.map +1 -1
  804. package/services/services-device-tab/services-device-tab.module.d.ts.map +1 -1
  805. package/services/services-device-tab/services.breadcrumb-factory.d.ts.map +1 -1
  806. package/services/shared/service-command.service.d.ts.map +1 -1
  807. package/services/status-options/status-options.model.d.ts.map +1 -1
  808. package/sigfox-device-registration/sigfox-device-registration.component.d.ts.map +1 -1
  809. package/sigfox-device-registration/sigfox-provider.service.d.ts.map +1 -1
  810. package/sms-gateway/sms-gateway.module.d.ts.map +1 -1
  811. package/sub-assets/add-group/add-group.component.d.ts.map +1 -1
  812. package/sub-assets/asset-properties-item.component.d.ts.map +1 -1
  813. package/sub-assets/asset-properties.component.d.ts.map +1 -1
  814. package/sub-assets/assign-devices/assign-child-devices.component.d.ts.map +1 -1
  815. package/sub-assets/assign-devices/assign-devices.component.d.ts.map +1 -1
  816. package/sub-assets/delete-assets-modal/delete-assets-modal.component.d.ts.map +1 -1
  817. package/sub-assets/group-info.component.d.ts.map +1 -1
  818. package/sub-assets/sub-assets-grid.component.d.ts.map +1 -1
  819. package/sub-assets/sub-assets.component.d.ts.map +1 -1
  820. package/sub-assets/sub-assets.module.d.ts.map +1 -1
  821. package/sub-assets/sub-assets.service.d.ts.map +1 -1
  822. package/sub-assets/unassign-assets-modal/unassign-modal.component.d.ts.map +1 -1
  823. package/tenants/custom-properties/custom-properties.component.d.ts.map +1 -1
  824. package/tenants/tenant-form/tenant-form.component.d.ts.map +1 -1
  825. package/tenants/tenant-limits/tenant-limits.component.d.ts.map +1 -1
  826. package/tenants/tenant-list/creation-time.filtering-form-renderer.component.d.ts.map +1 -1
  827. package/tenants/tenant-list/tenant-list.component.d.ts.map +1 -1
  828. package/tenants/tenants-navigation.factory.d.ts.map +1 -1
  829. package/tenants/tenants.module.d.ts.map +1 -1
  830. package/tracking/tracking.feature.d.ts.map +1 -1
  831. package/translation-editor/lazy/translation-editor/translation-editor.component.d.ts.map +1 -1
  832. package/trusted-certificates/crl/crl-check-settings.component.d.ts.map +1 -1
  833. package/trusted-certificates/crl/crl-settings.component.d.ts.map +1 -1
  834. package/trusted-certificates/factories/tabs.factory.d.ts.map +1 -1
  835. package/trusted-certificates/factories/trusted-certificates-navigation.factory.d.ts.map +1 -1
  836. package/trusted-certificates/list/add-trusted-certificate.component.d.ts.map +1 -1
  837. package/trusted-certificates/list/trusted-certificate-list.component.d.ts.map +1 -1
  838. package/upgrade/auth-bridge.service.d.ts.map +1 -1
  839. package/upgrade/bridge.service.d.ts.map +1 -1
  840. package/upgrade/ng1/downgraded.services.d.ts +1 -0
  841. package/upgrade/ng1/downgraded.services.d.ts.map +1 -1
  842. package/upgrade/ng1/index.d.ts.map +1 -1
  843. package/user-roles/roles-asset-tree/roles-asset-tree.component.d.ts.map +1 -1
  844. package/widgets/cockpit/index.d.ts +4 -4
  845. package/widgets/definitions/alarms/alarm-list/index.d.ts +1 -1
  846. package/widgets/definitions/alarms/alarm-list/index.d.ts.map +1 -1
  847. package/widgets/definitions/alarms/all-critical-alarms/index.d.ts +1 -1
  848. package/widgets/definitions/alarms/all-critical-alarms/index.d.ts.map +1 -1
  849. package/widgets/definitions/alarms/recent-alarms/index.d.ts +1 -1
  850. package/widgets/definitions/alarms/recent-alarms/index.d.ts.map +1 -1
  851. package/widgets/definitions/applications/index.d.ts +1 -1
  852. package/widgets/definitions/applications/index.d.ts.map +1 -1
  853. package/widgets/definitions/asset-notes/index.d.ts +1 -1
  854. package/widgets/definitions/asset-notes/index.d.ts.map +1 -1
  855. package/widgets/definitions/cockpit-legacy-welcome/index.d.ts +1 -1
  856. package/widgets/definitions/cockpit-legacy-welcome/index.d.ts.map +1 -1
  857. package/widgets/definitions/cockpit-welcome/index.d.ts +1 -1
  858. package/widgets/definitions/cockpit-welcome/index.d.ts.map +1 -1
  859. package/widgets/definitions/datapoints-graph/datapoint-graph-widget-factory.d.ts.map +1 -1
  860. package/widgets/definitions/datapoints-graph/index.d.ts +1 -1
  861. package/widgets/definitions/datapoints-table/index.d.ts +1 -1
  862. package/widgets/definitions/datapoints-table/index.d.ts.map +1 -1
  863. package/widgets/definitions/device-control-message/index.d.ts +1 -1
  864. package/widgets/definitions/device-control-message/index.d.ts.map +1 -1
  865. package/widgets/definitions/help-and-service/index.d.ts +1 -1
  866. package/widgets/definitions/help-and-service/index.d.ts.map +1 -1
  867. package/widgets/definitions/html-widget/html-widget.factory.d.ts.map +1 -1
  868. package/widgets/definitions/html-widget/index.d.ts +1 -1
  869. package/widgets/definitions/image/index.d.ts +5 -3
  870. package/widgets/definitions/image/index.d.ts.map +1 -1
  871. package/widgets/definitions/info-gauge/index.d.ts +2 -3
  872. package/widgets/definitions/info-gauge/index.d.ts.map +1 -1
  873. package/widgets/definitions/kpi/index.d.ts +1 -1
  874. package/widgets/definitions/kpi/index.d.ts.map +1 -1
  875. package/widgets/definitions/linear-gauge/index.d.ts +1 -1
  876. package/widgets/definitions/linear-gauge/index.d.ts.map +1 -1
  877. package/widgets/definitions/map/index.d.ts +1 -1
  878. package/widgets/definitions/map/index.d.ts.map +1 -1
  879. package/widgets/definitions/markdown/index.d.ts +5 -3
  880. package/widgets/definitions/markdown/index.d.ts.map +1 -1
  881. package/widgets/definitions/quick-links/index.d.ts +1 -1
  882. package/widgets/definitions/quick-links/index.d.ts.map +1 -1
  883. package/widgets/definitions/radial-gauge/index.d.ts +1 -1
  884. package/widgets/definitions/radial-gauge/index.d.ts.map +1 -1
  885. package/widgets/definitions/silo/index.d.ts +1 -1
  886. package/widgets/definitions/silo/index.d.ts.map +1 -1
  887. package/widgets/definitions/three-d-rotation/index.d.ts +1 -1
  888. package/widgets/definitions/three-d-rotation/index.d.ts.map +1 -1
  889. package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts.map +1 -1
  890. package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts.map +1 -1
  891. package/widgets/implementations/alarms/alarm-list-widget.model.d.ts.map +1 -1
  892. package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts.map +1 -1
  893. package/widgets/implementations/cockpit-welcome/welcome.component.d.ts +3 -2
  894. package/widgets/implementations/cockpit-welcome/welcome.component.d.ts.map +1 -1
  895. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts.map +1 -1
  896. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.d.ts.map +1 -1
  897. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts.map +1 -1
  898. package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts.map +1 -1
  899. package/widgets/implementations/datapoints-table/date-range-picker.component.d.ts.map +1 -1
  900. package/widgets/implementations/device-control-message/device-control-message-widget-view/device-control-message-widget-view.component.d.ts.map +1 -1
  901. package/widgets/implementations/device-management-welcome/welcome.component.d.ts.map +1 -1
  902. package/widgets/implementations/help-and-service-widget/help-and-service-view/help-and-service-view.component.d.ts.map +1 -1
  903. package/widgets/implementations/html-widget/advanced-settings/advanced-settings.component.d.ts.map +1 -1
  904. package/widgets/implementations/html-widget/html-widget-config.service.d.ts.map +1 -1
  905. package/widgets/implementations/html-widget/widget-code-editor-section/widget-code-editor.component.d.ts +5 -3
  906. package/widgets/implementations/html-widget/widget-code-editor-section/widget-code-editor.component.d.ts.map +1 -1
  907. package/widgets/implementations/image/image-widget-config/image-widget-config.component.d.ts.map +1 -1
  908. package/widgets/implementations/image/image-widget.service.d.ts +1 -2
  909. package/widgets/implementations/image/image-widget.service.d.ts.map +1 -1
  910. package/widgets/implementations/info-gauge/info-gauge-widget-config/info-gauge-widget-config.component.d.ts.map +1 -1
  911. package/widgets/implementations/linear-gauge/linear-gauge-widget-view/linear-gauge-widget-view.component.d.ts.map +1 -1
  912. package/widgets/implementations/map/map-widget-config.component.d.ts.map +1 -1
  913. package/widgets/implementations/map/map-widget.component.d.ts.map +1 -1
  914. package/widgets/implementations/markdown/markdown-widget-config/markdown-widget-config.component.d.ts.map +1 -1
  915. package/widgets/implementations/markdown/markdown-widget.service.d.ts.map +1 -1
  916. package/widgets/implementations/quick-links/quick-links-widget-config/quick-links-widget-config.component.d.ts.map +1 -1
  917. package/widgets/import-export-config/config-target-export.d.ts +3 -1
  918. package/widgets/import-export-config/config-target-export.d.ts.map +1 -1
  919. package/widgets/import-export-config/config-target-import.d.ts +3 -1
  920. package/widgets/import-export-config/config-target-import.d.ts.map +1 -1
  921. package/widgets/import-export-config/device-import-export.d.ts +3 -1
  922. package/widgets/import-export-config/device-import-export.d.ts.map +1 -1
  923. package/fesm2022/c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DjlpSztw.mjs.map +0 -1
  924. package/fesm2022/c8y-ngx-components-context-dashboard-dashboard-version-history.component-B2zLhv0X.mjs.map +0 -1
  925. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-CwfVxTSx.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-repository-configuration.mjs","sources":["../../repository/configuration/device-tab/device-configuration.service.ts","../../repository/configuration/device-tab/text-based-configuration.component.ts","../../repository/configuration/device-tab/text-based-configuration.component.html","../../repository/configuration/device-tab/device-configuration.guard.ts","../../repository/configuration/device-tab/configuration-filter.pipe.ts","../../repository/configuration/device-tab/save-to-repository.component.ts","../../repository/configuration/device-tab/save-to-repository.component.html","../../repository/configuration/device-tab/source-code-preview.component.ts","../../repository/configuration/device-tab/source-code-preview.component.html","../../repository/configuration/device-tab/configuration-preview.component.ts","../../repository/configuration/device-tab/configuration-preview.component.html","../../repository/configuration/device-tab/device-configuration-list.component.ts","../../repository/configuration/device-tab/device-configuration-list.component.html","../../repository/configuration/device-tab/device-configuration.component.ts","../../repository/configuration/device-tab/device-configuration.component.html","../../repository/configuration/device-tab/configuration-repository-device-tab.module.ts","../../repository/configuration/list/configuration-detail.component.ts","../../repository/configuration/list/configuration-detail.component.html","../../repository/configuration/list/configuration-list.component.ts","../../repository/configuration/list/configuration-list.component.html","../../repository/configuration/list/configuration-repository-navigation-factory.ts","../../repository/configuration/list/configuration-repository-list.module.ts","../../repository/configuration/configuration-repository.module.ts","../../repository/configuration/c8y-ngx-components-repository-configuration.ts"],"sourcesContent":["import { EventEmitter, Injectable } from '@angular/core';\nimport { DeviceConfigurationOperation } from '@c8y/ngx-components/repository/shared';\nimport { IManagedObject } from '@c8y/client';\n\n@Injectable()\nexport class DeviceConfigurationService {\n configurationsUpdated = new EventEmitter<any>();\n\n updateConfigurations(repositorySnapsOnly?: boolean) {\n this.configurationsUpdated.emit(repositorySnapsOnly);\n }\n\n hasAnySupportedOperation(\n mo: IManagedObject,\n operation: DeviceConfigurationOperation | DeviceConfigurationOperation[]\n ) {\n const supported = mo.c8y_SupportedOperations as [];\n if (!supported) {\n return false;\n }\n if (!Array.isArray(operation)) {\n operation = [operation];\n }\n return supported.some(supportedOperation => operation.includes(supportedOperation));\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { IManagedObject, IOperation, InventoryService, OperationStatus } from '@c8y/client';\nimport { AlertService, gettext, IconDirective, C8yTranslatePipe } from '@c8y/ngx-components';\nimport {\n DeviceConfigurationOperation,\n RepositoryService\n} from '@c8y/ngx-components/repository/shared';\nimport { DeviceConfigurationService } from './device-configuration.service';\nimport { NgIf, NgClass } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { OperationDetailsComponent } from '@c8y/ngx-components/operations/operation-details';\n\n@Component({\n selector: 'c8y-text-based-configuration',\n templateUrl: './text-based-configuration.component.html',\n imports: [NgIf, IconDirective, NgClass, FormsModule, OperationDetailsComponent, C8yTranslatePipe]\n})\nexport class TextBasedConfigurationComponent implements OnInit {\n device: IManagedObject;\n latestOperation: IOperation;\n showTextBasedConfigReload: boolean;\n showTextBasedConfigSave: boolean;\n reloadingConfig = false;\n config: string;\n\n constructor(\n private route: ActivatedRoute,\n private alertService: AlertService,\n private repositoryService: RepositoryService,\n private deviceConfigurationService: DeviceConfigurationService,\n private inventoryService: InventoryService\n ) {}\n\n async ngOnInit() {\n await this.load();\n }\n\n async load() {\n this.device = this.route.snapshot.parent.data.contextData;\n await this.loadDevice();\n await this.loadOperation();\n this.showTextBasedConfigReload = this.deviceConfigurationService.hasAnySupportedOperation(\n this.device,\n [DeviceConfigurationOperation.SEND_CONFIG]\n );\n this.showTextBasedConfigSave = this.deviceConfigurationService.hasAnySupportedOperation(\n this.device,\n [DeviceConfigurationOperation.CONFIG]\n );\n if (this.device.c8y_Configuration && this.device.c8y_Configuration.config) {\n this.config = this.device.c8y_Configuration.config;\n }\n }\n\n async loadOperation() {\n const operation = await this.repositoryService.getLastConfigUpdateOperation(this.device.id);\n if (operation !== null) {\n this.reloadingConfig =\n !!operation.c8y_SendConfiguration &&\n (operation.status === OperationStatus.PENDING ||\n operation.status === OperationStatus.EXECUTING);\n this.repositoryService.observeOperation(operation).subscribe(operationUpdate => {\n if (\n operationUpdate.status === OperationStatus.PENDING ||\n operationUpdate.status === OperationStatus.EXECUTING\n ) {\n this.latestOperation = operationUpdate;\n } else this.latestOperation = null;\n });\n }\n }\n\n get savingConfig() {\n return this.latestOperation\n ? !!this.latestOperation.c8y_Configuration &&\n (this.latestOperation.status === OperationStatus.PENDING ||\n this.latestOperation.status === OperationStatus.EXECUTING)\n : false;\n }\n\n async reloadConfiguration() {\n this.reloadingConfig = true;\n const operationCfg = await this.repositoryService.createTextBasedConfigurationReloadOperation(\n this.device\n );\n try {\n this.repositoryService.createObservedOperation(operationCfg).subscribe(\n operationUpdate => this.onOperationReloadSuccess(operationUpdate),\n operationUpdate => this.onOperationReloadError(operationUpdate),\n () => this.onOperationReloadComplete()\n );\n } catch (ex) {\n this.alertService.addServerFailure(ex);\n }\n }\n\n async updateConfiguration(config) {\n const operationCfg = await this.repositoryService.createTextBasedConfigurationUpdateOperation(\n this.device,\n config\n );\n try {\n this.repositoryService.createObservedOperation(operationCfg).subscribe(\n operationUpdate => this.onOperationUpdateSuccess(operationUpdate),\n operationUpdate => this.onOperationUpdateError(operationUpdate),\n () => this.onOperationUpdateComplete()\n );\n } catch (ex) {\n this.alertService.addServerFailure(ex);\n }\n }\n\n private onOperationReloadSuccess(operationUpdate) {\n this.latestOperation = operationUpdate;\n if (operationUpdate.status === OperationStatus.PENDING) {\n this.alertService.success(gettext('Configuration will be reloaded.'));\n }\n }\n\n private onOperationReloadError(operationUpdate) {\n this.latestOperation = operationUpdate;\n this.reloadingConfig = false;\n }\n\n private async onOperationReloadComplete() {\n await this.loadDevice();\n this.config = this.device.c8y_Configuration.config;\n this.reloadingConfig = false;\n }\n\n private onOperationUpdateSuccess(operationUpdate) {\n this.latestOperation = operationUpdate;\n if (operationUpdate.status === OperationStatus.PENDING) {\n this.alertService.success(gettext('Configuration will be updated.'));\n }\n }\n\n private onOperationUpdateError(operationUpdate) {\n this.latestOperation = operationUpdate;\n }\n\n private onOperationUpdateComplete() {\n this.device.c8y_Configuration.config = this.config;\n }\n\n private async loadDevice() {\n this.device = (\n await this.inventoryService.detail(this.device.id, {\n withChildren: false\n })\n ).data;\n }\n}\n","<div class=\"d-flex d-col fit-h\">\n <fieldset class=\"card-block bg-level-1 fit-w\">\n <div class=\"content-flex-50\">\n <div class=\"m-l-auto d-flex\">\n <button\n class=\"btn btn-default btn-sm a-s-center m-t-8 m-b-8\"\n title=\"{{ 'Get configuration from device' | translate }}\"\n type=\"button\"\n *ngIf=\"showTextBasedConfigReload\"\n (click)=\"reloadConfiguration()\"\n [disabled]=\"reloadingConfig || savingConfig\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"refresh\"\n *ngIf=\"reloadingConfig\"\n [ngClass]=\"{ 'icon-spin': reloadingConfig }\"\n ></i>\n <i\n class=\"m-r-4\"\n c8yIcon=\"download\"\n *ngIf=\"!reloadingConfig\"\n ></i>\n\n {{ 'Get configuration from device' | translate }}\n </button>\n </div>\n </div>\n </fieldset>\n <div class=\"flex-grow\">\n <textarea\n class=\"form-control fit-h p-r-16 p-l-16\"\n [attr.aria-label]=\"'Operations' | translate\"\n [(ngModel)]=\"config\"\n [disabled]=\"reloadingConfig || savingConfig\"\n c8y-spellcheck=\"false\"\n ></textarea>\n </div>\n <c8y-operation-details\n class=\"bg-level-2 p-0\"\n *ngIf=\"latestOperation !== undefined\"\n [operation]=\"latestOperation\"\n ></c8y-operation-details>\n <div\n class=\"card-footer fit-w separator\"\n *ngIf=\"showTextBasedConfigSave\"\n >\n <button\n class=\"btn btn-primary\"\n id=\"send-config-btn\"\n type=\"button\"\n (click)=\"updateConfiguration(config)\"\n [disabled]=\"reloadingConfig || savingConfig || !config\"\n [ngClass]=\"{ 'btn-pending': savingConfig }\"\n >\n <span\n title=\"{{ 'Send' | translate }}\"\n *ngIf=\"!savingConfig\"\n >\n {{ 'Send configuration to device' | translate }}\n </span>\n <span\n title=\"{{ 'Sending…' | translate }}\"\n *ngIf=\"savingConfig\"\n >\n {{ 'Sending…' | translate }}\n </span>\n </button>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\nimport { DeviceConfigurationOperation } from '@c8y/ngx-components/repository/shared';\nimport { has } from 'lodash-es';\nimport { DeviceConfigurationService } from './device-configuration.service';\n\n@Injectable()\nexport class DeviceConfigurationGuard {\n constructor(private deviceConfigurationService: DeviceConfigurationService) {}\n\n canActivate(route: ActivatedRouteSnapshot) {\n const contextData = route.data.contextData || route.parent.data.contextData;\n if (!contextData) {\n return false;\n }\n return (\n (contextData.c8y_SupportedConfigurations &&\n contextData.c8y_SupportedConfigurations.length > 0) ||\n this.deviceConfigurationService.hasAnySupportedOperation(contextData, [\n DeviceConfigurationOperation.DOWNLOAD_CONFIG,\n DeviceConfigurationOperation.UPLOAD_CONFIG,\n DeviceConfigurationOperation.CONFIG,\n DeviceConfigurationOperation.SEND_CONFIG\n ]) ||\n has(contextData, 'c8y_Configuration')\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { SupportedConfigurationItem } from '@c8y/ngx-components/repository/shared';\n\n@Pipe({ name: 'configurationFilterPipe' })\nexport class ConfigurationFilterPipe implements PipeTransform {\n transform(items: any[], filterTerm: string): any {\n return filterTerm.trim().length === 0\n ? items\n : items.filter(\n (item: SupportedConfigurationItem) =>\n this.filterContainString(item.name, filterTerm) ||\n this.filterContainString(item.deviceType, filterTerm)\n );\n }\n\n private filterContainString(name: string, filterTerm: string) {\n const term = filterTerm.toLowerCase().trim();\n return name && name.toLowerCase().indexOf(term) > -1;\n }\n}\n","import { Component } from '@angular/core';\nimport {\n AlertService,\n gettext,\n IconDirective,\n C8yTranslateDirective,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport {\n ConfigurationSnapshot,\n RepositoryService,\n RepositoryType\n} from '@c8y/ngx-components/repository/shared';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'c8y-save-config-to-configuration-repository',\n templateUrl: 'save-to-repository.component.html',\n imports: [\n IconDirective,\n C8yTranslateDirective,\n FormsModule,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n C8yTranslatePipe\n ]\n})\nexport class SaveToRepositoryComponent {\n configSnapshot: ConfigurationSnapshot;\n result: Promise<any> = new Promise((resolve, reject) => {\n this._save = resolve;\n this._cancel = reject;\n });\n private _save;\n private _cancel;\n\n constructor(\n private modal: BsModalRef,\n private alertService: AlertService,\n private repositoryService: RepositoryService\n ) {}\n\n async save() {\n {\n try {\n const configSnapshotData = {\n selected: {\n configurationType: this.configSnapshot.configurationType\n },\n version: this.configSnapshot.name,\n deviceType: this.configSnapshot.deviceType,\n description: this.configSnapshot.description,\n binary: {\n file: new File([this.configSnapshot.binary], this.configSnapshot.name)\n }\n };\n await this.repositoryService.create(configSnapshotData, RepositoryType.CONFIGURATION);\n this.alertService.success(gettext('Configuration saved.'));\n this._save();\n } catch (ex) {\n this.alertService.addServerFailure(ex);\n }\n }\n }\n\n close() {\n this._cancel();\n this.modal.hide();\n }\n}\n","<div class=\"modal-header dialog-header\">\n <i c8yIcon=\"gears\"></i>\n <h4 id=\"modal-title\" translate>\n Save configuration\n </h4>\n</div>\n<div class=\"modal-body\" id=\"modal-body\">\n <form #saveConfigurationSnapshot=\"ngForm\" class=\"p-t-24\">\n <c8y-form-group>\n <label translate for=\"name\">Name</label>\n <input\n id=\"name\"\n type=\"text\"\n class=\"form-control\"\n autocomplete=\"off\"\n name=\"name\"\n [(ngModel)]=\"configSnapshot.name\"\n required\n />\n </c8y-form-group>\n <c8y-form-group>\n <label translate for=\"deviceType\">Device type</label>\n <input\n id=\"deviceType\"\n class=\"form-control\"\n rows=\"6\"\n name=\"deviceType\"\n [(ngModel)]=\"configSnapshot.deviceType\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label translate for=\"description\">Description</label>\n <input\n type=\"text\"\n id=\"description\"\n class=\"form-control\"\n maxlength=\"254\"\n autocomplete=\"off\"\n name=\"description\"\n [(ngModel)]=\"configSnapshot.description\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label translate for=\"configurationType\">Configuration type</label>\n <input\n id=\"configurationType\"\n class=\"form-control\"\n rows=\"6\"\n name=\"configurationType\"\n [(ngModel)]=\"configSnapshot.configurationType\"\n />\n </c8y-form-group>\n </form>\n</div>\n<div class=\"modal-footer\">\n <button title=\"{{ 'Cancel' | translate }}\" class=\"btn btn-default\" (click)=\"close()\" translate>\n Cancel\n </button>\n\n <button\n title=\"{{ 'Save configuration to repository' | translate }}\"\n class=\"btn btn-primary\"\n (click)=\"save()\"\n [disabled]=\"saveConfigurationSnapshot.form.invalid\"\n translate\n >\n Save\n </button>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'c8y-source-code-preview',\n templateUrl: './source-code-preview.component.html'\n})\nexport class SourceCodePreviewComponent {\n @Input() isDisabled: boolean;\n @Input() text: string;\n}\n","<textarea\n [disabled]=\"isDisabled\"\n class=\"text-monospace form-control no-resize flex-grow\"\n rows=\"4\"\n >{{ text }}</textarea\n>\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport {\n IManagedObject,\n IOperation,\n OperationService,\n OperationStatus,\n UserService\n} from '@c8y/client';\nimport {\n AlertService,\n AppStateService,\n OperationRealtimeService,\n Permissions,\n C8yTranslateDirective,\n IconDirective,\n C8yTranslatePipe,\n DatePipe\n} from '@c8y/ngx-components';\nimport {\n ConfigurationSnapshot,\n DeviceConfigurationOperation,\n RepositoryService\n} from '@c8y/ngx-components/repository/shared';\nimport { saveAs } from 'file-saver';\nimport { cloneDeep } from 'lodash-es';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { DeviceConfigurationService } from './device-configuration.service';\nimport { SaveToRepositoryComponent } from './save-to-repository.component';\nimport { NgIf } from '@angular/common';\nimport { SourceCodePreviewComponent } from './source-code-preview.component';\nimport { OperationDetailsComponent } from '@c8y/ngx-components/operations/operation-details';\n\n@Component({\n selector: 'c8y-device-configuration-preview',\n templateUrl: './configuration-preview.component.html',\n imports: [\n C8yTranslateDirective,\n NgIf,\n IconDirective,\n SourceCodePreviewComponent,\n OperationDetailsComponent,\n C8yTranslatePipe,\n DatePipe\n ]\n})\nexport class ConfigurationPreviewComponent implements OnInit, OnDestroy {\n @Input() device: IManagedObject;\n\n @Input() set configurationType(type: string) {\n this._configurationType = type;\n this.setOperation(type);\n }\n\n get configurationType(): string {\n return this._configurationType;\n }\n\n @Input() configSnapshot: ConfigurationSnapshot;\n @Input() canSaveSnapshot: boolean;\n @Input() actionButtonText: string;\n @Input() actionButtonIcon: string;\n @Input() isLegacy = false;\n @Input() operationToTrigger:\n | DeviceConfigurationOperation.UPLOAD_CONFIG\n | DeviceConfigurationOperation.DOWNLOAD_CONFIG;\n\n operation: IOperation;\n canCallAction = true;\n deviceConfigurationOperation = DeviceConfigurationOperation;\n private _configurationType: string;\n private operationsSubscription: Subscription;\n\n constructor(\n private deviceConfigurationService: DeviceConfigurationService,\n private operationRealtime: OperationRealtimeService,\n private bsModal: BsModalService,\n private user: UserService,\n private appState: AppStateService,\n private repositoryService: RepositoryService,\n private operationService: OperationService,\n private alertService: AlertService\n ) {}\n\n async ngOnInit() {\n this.setCanCallAction();\n this.setOperation(this._configurationType);\n this.operationsSubscription = this.operationRealtime\n .onAll$(this.device.id)\n .pipe(map(({ data }) => data as IOperation))\n .subscribe(operation => {\n this.updatePreview(operation);\n });\n }\n\n async setOperation(configType): Promise<void> {\n const operationList = await this.repositoryService.getConfigFileOperationList(\n this.device.id,\n this.operationToTrigger\n );\n\n const operation = this.isLegacy\n ? operationList.find(op => op[this.operationToTrigger] && !op[this.operationToTrigger].type)\n : operationList.find(op => op[this.operationToTrigger].type === configType);\n\n this.operation =\n operation && operation.status !== OperationStatus.SUCCESSFUL ? operation : undefined;\n }\n\n setCanCallAction(): void {\n this.canCallAction = this.deviceConfigurationService.hasAnySupportedOperation(\n this.device,\n this.operationToTrigger\n );\n }\n\n async createDeviceOperation() {\n let operationCfg;\n if (this.operationToTrigger === DeviceConfigurationOperation.DOWNLOAD_CONFIG) {\n operationCfg = this.repositoryService.getDownloadConfigurationFileOperation(\n this.device,\n this._configurationType,\n this.configSnapshot,\n this.isLegacy\n );\n }\n if (this.operationToTrigger === DeviceConfigurationOperation.UPLOAD_CONFIG) {\n operationCfg = this.repositoryService.getUploadConfigurationFileOperation(\n this.device,\n this._configurationType,\n this.isLegacy\n );\n }\n try {\n this.operation = (await this.operationService.create(operationCfg)).data;\n } catch (ex) {\n this.alertService.addServerFailure(ex);\n }\n }\n\n showOperation(): boolean {\n if (this.operationToTrigger === DeviceConfigurationOperation.DOWNLOAD_CONFIG) {\n return !!this.operation;\n }\n return (\n this.operation &&\n [OperationStatus.PENDING, OperationStatus.EXECUTING].includes(this.operation.status)\n );\n }\n\n showBinary(): boolean {\n if (this.operationToTrigger === DeviceConfigurationOperation.DOWNLOAD_CONFIG) {\n return true;\n }\n return !this.showOperation();\n }\n\n isCreateOperationDisabled(): boolean {\n return (\n this.operation &&\n [OperationStatus.PENDING, OperationStatus.EXECUTING].includes(this.operation.status)\n );\n }\n\n updatePreview(operation: IOperation) {\n if (\n operation &&\n operation[this.operationToTrigger] &&\n (this.isLegacy ||\n (operation[this.operationToTrigger].type &&\n operation[this.operationToTrigger].type === this.configurationType))\n ) {\n this.operation = operation;\n this.updateSnapshotsOnConfigUpload(operation);\n }\n }\n\n download() {\n const blob = new Blob([this.configSnapshot.binary], { type: this.configSnapshot.binaryType });\n let fileName = this.configSnapshot.name;\n switch (this.configSnapshot.binaryType) {\n case 'text/csv':\n case 'application/csv':\n fileName = fileName.concat('.csv');\n break;\n case 'text/yaml':\n case 'application/x-yaml':\n fileName = fileName.concat('.yaml');\n break;\n case 'application/json':\n fileName = fileName.concat('.json');\n break;\n }\n saveAs(blob, fileName);\n }\n\n async saveToRepository() {\n const initialState = {\n configSnapshot: cloneDeep(this.configSnapshot)\n };\n const modal = this.bsModal.show(SaveToRepositoryComponent, {\n class: 'modal-sm',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n initialState,\n ignoreBackdropClick: true\n }).content as SaveToRepositoryComponent;\n try {\n await modal.result;\n this.deviceConfigurationService.updateConfigurations(true);\n modal.close();\n } catch (ex) {\n // do nothing\n }\n }\n\n hasPermission(): boolean {\n return (\n this.user.hasAnyRole(this.appState.currentUser.value, [\n Permissions.ROLE_INVENTORY_ADMIN,\n Permissions.ROLE_INVENTORY_CREATE\n ]) ||\n (this.user.hasAnyRole(this.appState.currentUser.value, [\n Permissions.ROLE_MANAGED_OBJECT_ADMIN,\n Permissions.ROLE_MANAGED_OBJECT_CREATE\n ]) &&\n this.user.hasAnyRole(this.appState.currentUser.value, [\n Permissions.ROLE_BINARY_ADMIN,\n Permissions.ROLE_BINARY_CREATE\n ]))\n );\n }\n\n ngOnDestroy() {\n if (this.operationsSubscription) {\n this.operationsSubscription.unsubscribe();\n }\n }\n\n private async updateSnapshotsOnConfigUpload(operation) {\n if (\n operation[DeviceConfigurationOperation.UPLOAD_CONFIG] &&\n operation.status === OperationStatus.SUCCESSFUL\n ) {\n this.deviceConfigurationService.updateConfigurations();\n }\n }\n}\n","<div class=\"content-flex-55 p-b-16\">\n <div class=\"col-7 p-t-4\">\n <p>\n <span class=\"text-label-small text-uppercase m-r-4\" translate>Configuration</span>\n <span *ngIf=\"configSnapshot?.name; else emptyText\">\n <strong>{{ configSnapshot.name }}</strong>\n </span>\n <ng-template #emptyText>---</ng-template>\n </p>\n <p>\n <span class=\"text-label-small text-uppercase m-r-4\" translate>Last updated</span>\n <small *ngIf=\"configSnapshot?.time; else emptyDate\">\n {{ configSnapshot.time | c8yDate }}\n </small>\n <ng-template #emptyDate>---</ng-template>\n </p>\n </div>\n <div class=\"col-5\">\n <button\n id=\"action-btn\"\n class=\"btn btn-default btn-sm pull-right\"\n type=\"button\"\n title=\"{{ actionButtonText | translate }}\"\n (click)=\"createDeviceOperation()\"\n [disabled]=\"isCreateOperationDisabled()\"\n *ngIf=\"canCallAction\"\n >\n <i [c8yIcon]=\"actionButtonIcon\"></i>\n {{ actionButtonText | translate }}\n </button>\n </div>\n</div>\n<div class=\"c8y-empty-state text-left\" *ngIf=\"!configSnapshot?.binary && showBinary()\">\n <h1 [c8yIcon]=\"'file-image-o'\"></h1>\n <p>\n <strong translate>No preview available.</strong>\n <br />\n <small *ngIf=\"configSnapshot?.binary !== ''; else emptyFile\" translate>\n The file is not available.\n </small>\n <ng-template #emptyFile>\n <small translate>The file is empty.</small>\n </ng-template>\n </p>\n</div>\n<div *ngIf=\"configSnapshot?.binary && showBinary()\" class=\"flex-grow d-flex d-col\">\n <c8y-source-code-preview\n [text]=\"configSnapshot.binary\"\n [isDisabled]=\"true\"\n class=\"d-contents\"\n ></c8y-source-code-preview>\n <div *ngIf=\"canSaveSnapshot\" class=\"p-t-16\">\n <button\n title=\"{{ 'Download' | translate }}\"\n type=\"button\"\n class=\"btn btn-primary btn-sm pull-right m-l-8\"\n (click)=\"download()\"\n >\n {{ 'Download' | translate }}\n </button>\n <button\n title=\"{{ 'Save to repository' | translate }}\"\n *ngIf=\"hasPermission()\"\n type=\"button\"\n class=\"btn btn-default btn-sm pull-right\"\n (click)=\"saveToRepository()\"\n >\n {{ 'Save to repository' | translate }}\n </button>\n </div>\n</div>\n<div *ngIf=\"showOperation()\">\n <c8y-operation-details [operation]=\"operation\"></c8y-operation-details>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport {\n DeviceConfigurationListEmptyState,\n SupportedConfigurationItem\n} from '@c8y/ngx-components/repository/shared';\nimport { NgIf, NgFor } from '@angular/common';\nimport { FilterInputComponent, IconDirective, C8yTranslatePipe } from '@c8y/ngx-components';\nimport { ConfigurationFilterPipe } from './configuration-filter.pipe';\n\n@Component({\n selector: 'c8y-device-configuration-list',\n templateUrl: './device-configuration-list.component.html',\n imports: [\n NgIf,\n FilterInputComponent,\n IconDirective,\n NgFor,\n C8yTranslatePipe,\n ConfigurationFilterPipe\n ]\n})\nexport class DeviceConfigurationListComponent {\n @Input() items: SupportedConfigurationItem[];\n @Input() itemIcon: string;\n @Input() emptyState: DeviceConfigurationListEmptyState;\n @Input() isFilterEnabled: boolean;\n @Output() configSelected = new EventEmitter<string>();\n selectedConfig;\n filterTerm = '';\n\n showConfigurationTypePreview(config): void {\n this.selectedConfig = config;\n this.configSelected.emit(config);\n }\n\n updatePipe(filterTerm: string) {\n this.filterTerm = filterTerm;\n }\n}\n","<div class=\"p-l-16 m-b-8\" *ngIf=\"isFilterEnabled\">\n <c8y-filter [icon]=\"'search'\" (onSearch)=\"updatePipe($event)\"></c8y-filter>\n</div>\n\n<!-- EMPTY STATE -->\n<div class=\"c8y-empty-state text-left\" *ngIf=\"items?.length === 0\">\n <h1 [c8yIcon]=\"emptyState.icon\"></h1>\n <p>\n <strong>{{ emptyState.title | translate }}</strong>\n <br />\n <small>{{ emptyState.text | translate }}</small>\n </p>\n</div>\n\n<!-- CONFIGURATIONS AVAILABLE -->\n<div class=\"c8y-nav-stacked\">\n <button\n type=\"button\"\n class=\"c8y-stacked-item d-flex\"\n [class.active]=\"config === selectedConfig\"\n *ngFor=\"let config of items | configurationFilterPipe: filterTerm\"\n (click)=\"showConfigurationTypePreview(config)\"\n >\n <div class=\"list-item-icon\">\n <i [c8yIcon]=\"itemIcon\"></i>\n </div>\n <div class=\"list-item-body text-truncate\">\n <div class=\"d-flex\">\n <span class=\"text-truncate\" title=\"{{ config.name }}\">{{ config.name }}</span>\n <span class=\"text-label-small m-l-auto m-t-auto m-b-auto\">{{ config.deviceType }}</span>\n </div>\n </div>\n </button>\n</div>\n\n<!-- for Carlos: config.configurationType to differentiate whether a config matches configuration type. -->\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { IManagedObject, Realtime } from '@c8y/client';\nimport {\n gettext,\n ActionBarItemComponent,\n IconDirective,\n TabsetAriaDirective,\n C8yTranslateDirective,\n EmptyStateComponent,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport {\n ConfigurationSnapshot,\n DeviceConfigurationListEmptyState,\n DeviceConfigurationOperation,\n RepositoryService,\n SupportedConfigurationItem\n} from '@c8y/ngx-components/repository/shared';\nimport { has } from 'lodash-es';\nimport { DeviceConfigurationService } from './device-configuration.service';\nimport { TextBasedConfigurationComponent } from './text-based-configuration.component';\nimport { NgClass, NgIf } from '@angular/common';\nimport { TabsetComponent, TabDirective } from 'ngx-bootstrap/tabs';\nimport { DeviceConfigurationListComponent } from './device-configuration-list.component';\nimport { ConfigurationPreviewComponent } from './configuration-preview.component';\n\n@Component({\n selector: 'c8y-device-configuration',\n templateUrl: './device-configuration.component.html',\n imports: [\n ActionBarItemComponent,\n IconDirective,\n NgClass,\n TabsetAriaDirective,\n TabsetComponent,\n NgIf,\n TabDirective,\n C8yTranslateDirective,\n DeviceConfigurationListComponent,\n EmptyStateComponent,\n ConfigurationPreviewComponent,\n TextBasedConfigurationComponent,\n C8yTranslatePipe\n ]\n})\nexport class DeviceConfigurationComponent implements OnInit {\n supportedConfigurations: SupportedConfigurationItem[] = [];\n showBinaryBasedConfig = false;\n configurationType: string;\n configSnapshot: Partial<ConfigurationSnapshot> = {};\n repositorySnapshots: IManagedObject[];\n repositorySnapshot: ConfigurationSnapshot;\n repositorySnapshotsEmptyState: DeviceConfigurationListEmptyState;\n device: IManagedObject;\n isLegacy: boolean;\n showTextBasedConfig: boolean;\n reloading = false;\n\n @ViewChild(TextBasedConfigurationComponent)\n textBasedConfigurationComponent: TextBasedConfigurationComponent;\n\n constructor(\n private route: ActivatedRoute,\n private deviceConfigurationService: DeviceConfigurationService,\n private realtime: Realtime,\n private repositoryService: RepositoryService\n ) {\n this.deviceConfigurationService.configurationsUpdated.subscribe(repositorySnapsOnly => {\n this.updateSnapshots(repositorySnapsOnly);\n });\n }\n\n ngOnInit() {\n this.device = this.route.snapshot.parent.data.contextData;\n if (this.device.c8y_SupportedConfigurations) {\n this.supportedConfigurations = this.device.c8y_SupportedConfigurations.map(item => ({\n name: item\n }));\n }\n\n if (\n this.deviceConfigurationService.hasAnySupportedOperation(this.device, [\n DeviceConfigurationOperation.DOWNLOAD_CONFIG,\n DeviceConfigurationOperation.UPLOAD_CONFIG\n ])\n ) {\n this.supportedConfigurations.push({\n name: gettext('Legacy configuration snapshot'),\n isLegacy: true\n });\n }\n if (this.supportedConfigurations.length > 0) {\n this.showBinaryBasedConfig = true;\n }\n\n this.repositorySnapshotsEmptyState = {\n icon: 'gears',\n title: gettext('No configurations available.'),\n text: gettext('Add configuration to configuration repository')\n };\n\n this.showTextBasedConfig =\n this.deviceConfigurationService.hasAnySupportedOperation(this.device, [\n DeviceConfigurationOperation.CONFIG,\n DeviceConfigurationOperation.SEND_CONFIG\n ]) || has(this.device, 'c8y_Configuration');\n }\n\n async onConfigTypeSelected(config) {\n this.configurationType = config.name;\n this.isLegacy = config.isLegacy;\n this.updateSnapshots();\n }\n\n async onRepositoryConfigSelected(config) {\n this.repositorySnapshot = {\n id: config.id,\n time: config.creationTime,\n name: config.name,\n binaryUrl: config.url,\n deviceType: config.deviceType,\n configurationType: config.configurationType\n };\n if (config.url) {\n try {\n const binary = await this.repositoryService.getBinaryFile(config.url, {\n allowExternal: false\n });\n if (binary) {\n this.repositorySnapshot.binary = await (binary as any).text();\n }\n } catch (ex) {\n // do nothing\n }\n }\n }\n\n async updateSnapshots(repositorySnapsOnly?: boolean) {\n this.reloading = true;\n this.repositorySnapshot = undefined;\n this.repositorySnapshots = await this.repositoryService.getSnapshotsFromRepository(\n this.device,\n this.configurationType\n );\n if (!repositorySnapsOnly) {\n this.configSnapshot = this.isLegacy\n ? await this.repositoryService.getLegacyConfigSnapshot(this.device)\n : await this.repositoryService.getConfigSnapshot(this.device, this.configurationType);\n }\n if (this.showTextBasedConfig) {\n await this.textBasedConfigurationComponent.load();\n }\n this.reloading = false;\n }\n}\n","<c8y-action-bar-item [placement]=\"'right'\">\n <button class=\"btn btn-link\" title=\"{{ 'Reload' | translate }}\" (click)=\"updateSnapshots()\">\n <i c8yIcon=\"refresh\" [ngClass]=\"{ 'icon-spin': reloading }\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage card-has-tabs\">\n <tabset>\n <div class=\"card-header separator\" *ngIf=\"showBinaryBasedConfig && !showTextBasedConfig\">\n <div class=\"card-title\">{{ 'Configurations' | translate }}</div>\n </div>\n <div class=\"card-header separator\" *ngIf=\"!showBinaryBasedConfig && showTextBasedConfig\">\n <div class=\"card-title\">{{ 'Text-based configuration' | translate }}</div>\n </div>\n <tab heading=\"{{ 'Configurations' | translate }}\" *ngIf=\"showBinaryBasedConfig\">\n <div class=\"card--grid card grid__col--4-8--md grid__row--6-6--md m-b-0\">\n <!-- DEVICE SUPPORTED CONFIGURATIONS -->\n <div class=\"card--grid__inner-scroll bg-level-1\">\n <div class=\"p-l-16 p-r-16\">\n <h5 class=\"legend form-block\">\n <span translate>Device-supported configurations</span>\n </h5>\n </div>\n <c8y-device-configuration-list\n [items]=\"supportedConfigurations\"\n [itemIcon]=\"'gears'\"\n (configSelected)=\"onConfigTypeSelected($event)\"\n ></c8y-device-configuration-list>\n </div>\n\n <!-- CONFIGURATION PREVIEW -->\n <div class=\"card--grid__inner-scroll d-flex d-col flex-grow\">\n <div class=\"card-block d-flex d-col flex-grow\">\n <h5 class=\"legend form-block\"><span translate>Preview</span></h5>\n\n <!-- EMPTY STATE -->\n\n <c8y-ui-empty-state\n *ngIf=\"!configurationType\"\n [icon]=\"'file-text'\"\n [title]=\"'No configuration selected.' | translate\"\n [subtitle]=\"'Select a configuration to preview.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <!-- PREVIEW AVAILABLE STATE -->\n <c8y-device-configuration-preview\n *ngIf=\"configurationType\"\n [device]=\"device\"\n [configurationType]=\"configurationType\"\n [configSnapshot]=\"configSnapshot\"\n [canSaveSnapshot]=\"true\"\n [operationToTrigger]=\"'c8y_UploadConfigFile'\"\n [actionButtonText]=\"'Get snapshot from device' | translate\"\n [actionButtonIcon]=\"'download'\"\n [isLegacy]=\"isLegacy\"\n class=\"d-flex d-col flex-grow\"\n ></c8y-device-configuration-preview>\n </div>\n </div>\n\n <!-- AVAILABLE SUPPORTED CONFIGURATIONS -->\n <div class=\"card--grid__inner-scroll bg-level-1\">\n <div class=\"p-l-16 p-r-16\">\n <h5 class=\"legend form-block\" translate>Available supported configurations</h5>\n </div>\n\n <!-- EMPTY STATE -->\n\n <c8y-ui-empty-state\n *ngIf=\"!configurationType\"\n [icon]=\"'gears'\"\n [title]=\"'No selection.' | translate\"\n [subtitle]=\"\n 'Select a configuration from the device-supported configuration list.' | translate\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <div class=\"p-r-16\" *ngIf=\"configurationType\">\n <c8y-device-configuration-list\n [items]=\"repositorySnapshots\"\n [itemIcon]=\"'file-text'\"\n [emptyState]=\"repositorySnapshotsEmptyState\"\n [isFilterEnabled]=\"true\"\n (configSelected)=\"onRepositoryConfigSelected($event)\"\n ></c8y-device-configuration-list>\n </div>\n </div>\n\n <!-- CONFIGURATION PREVIEW -->\n <div class=\"card--grid__inner-scroll d-flex d-col flex-grow\">\n <div class=\"card-block flex-grow d-flex d-col\">\n <h5 class=\"legend form-block\" translate>Preview</h5>\n\n <!-- EMPTY STATE -->\n <c8y-ui-empty-state\n *ngIf=\"!repositorySnapshot\"\n [icon]=\"'file-text'\"\n [title]=\"'No configuration selected.' | translate\"\n [subtitle]=\"'Select a configuration to preview.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <!-- CONFIGURATION SELECTED STATE -->\n <c8y-device-configuration-preview\n *ngIf=\"repositorySnapshot\"\n [device]=\"device\"\n [configurationType]=\"configurationType\"\n [configSnapshot]=\"repositorySnapshot\"\n [operationToTrigger]=\"'c8y_DownloadConfigFile'\"\n [actionButtonText]=\"'Send configuration to device' | translate\"\n [actionButtonIcon]=\"'upload'\"\n [isLegacy]=\"isLegacy\"\n class=\"d-flex d-col flex-grow\"\n ></c8y-device-configuration-preview>\n </div>\n </div>\n </div>\n </tab>\n <tab heading=\"{{ 'Text-based configuration' | translate }}\" *ngIf=\"showTextBasedConfig\">\n <c8y-text-based-configuration></c8y-text-based-configuration>\n </tab>\n </tabset>\n</div>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { ViewContext, gettext, hookRoute } from '@c8y/ngx-components';\nimport { DeviceConfigurationGuard } from './device-configuration.guard';\nimport { DeviceConfigurationComponent } from './device-configuration.component';\nimport { ConfigurationPreviewComponent } from './configuration-preview.component';\nimport { ConfigurationFilterPipe } from './configuration-filter.pipe';\nimport { DeviceConfigurationService } from './device-configuration.service';\nimport { DeviceConfigurationListComponent } from './device-configuration-list.component';\nimport { TextBasedConfigurationComponent } from './text-based-configuration.component';\nimport { SaveToRepositoryComponent } from './save-to-repository.component';\nimport { SourceCodePreviewComponent } from './source-code-preview.component';\nimport { TabsModule } from 'ngx-bootstrap/tabs';\nimport { OperationDetailsModule } from '@c8y/ngx-components/operations/operation-details';\nimport { SharedRepositoryModule } from '@c8y/ngx-components/repository/shared';\n\n@NgModule({\n imports: [\n SharedRepositoryModule,\n OperationDetailsModule,\n TabsModule.forRoot(),\n DeviceConfigurationComponent,\n DeviceConfigurationListComponent,\n ConfigurationPreviewComponent,\n ConfigurationFilterPipe,\n SaveToRepositoryComponent,\n SourceCodePreviewComponent,\n TextBasedConfigurationComponent\n ],\n providers: [DeviceConfigurationService]\n})\nexport class ConfigurationRepositoryDeviceTabModule {\n static forRoot(): ModuleWithProviders<ConfigurationRepositoryDeviceTabModule> {\n return {\n ngModule: ConfigurationRepositoryDeviceTabModule,\n providers: [\n DeviceConfigurationGuard,\n hookRoute({\n context: ViewContext.Device,\n path: 'device-configuration',\n component: DeviceConfigurationComponent,\n label: gettext('Configuration'),\n icon: 'gears',\n priority: 600,\n canActivate: [DeviceConfigurationGuard]\n })\n ]\n };\n }\n}\n","import { Component, ViewChild } from '@angular/core';\nimport { NgForm, FormsModule } from '@angular/forms';\nimport { IManagedObject } from '@c8y/client';\nimport {\n AlertService,\n ForOfFilterPipe,\n gettext,\n PickedFiles,\n ValidationPattern,\n IconDirective,\n C8yTranslateDirective,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n TypeaheadComponent,\n ForOfDirective,\n ListItemComponent,\n HighlightComponent,\n FilePickerComponent,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport {\n ModalModel,\n RepositoryService,\n RepositoryType\n} from '@c8y/ngx-components/repository/shared';\nimport { isUndefined, uniqBy } from 'lodash-es';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { pipe } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { NgIf, NgClass } from '@angular/common';\n\n@Component({\n selector: 'c8y-configuration-detail',\n templateUrl: './configuration-detail.component.html',\n imports: [\n IconDirective,\n NgIf,\n C8yTranslateDirective,\n FormsModule,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n TypeaheadComponent,\n ForOfDirective,\n ListItemComponent,\n HighlightComponent,\n FilePickerComponent,\n NgClass,\n C8yTranslatePipe\n ]\n})\nexport class ConfigurationDetailComponent implements ModalModel {\n @ViewChild('configurationForm', { static: true }) configurationForm: NgForm;\n version: string;\n description: string;\n binary: { file?: File; url?: string } = {\n file: undefined,\n url: undefined\n };\n deviceType: string;\n configurationTypeMO: Partial<IManagedObject>;\n\n pattern = '';\n filterPipe: ForOfFilterPipe;\n configs;\n mo: Partial<IManagedObject> = {};\n saving = false;\n uploadChoice: 'uploadBinary' | 'uploadUrl' = 'uploadBinary';\n existingBinary: File;\n submitButtonTitle: string;\n textForConfigurationUrlPopover: string =\n gettext(`Path for binaries can vary depending on device agent implementation, for example:\n /configuration/binaries/configuration1.bin\n https://configuration/binary/123\n ftp://configuration/binary/123.tar.gz\n Configurations with external URLs only work with the configuration typed devices (file-based configuration), not with devices with a legacy configuration.\n `);\n\n result: Promise<void> = new Promise((resolve, reject) => {\n this._save = resolve;\n this._cancel = reject;\n });\n ValidationPattern = ValidationPattern;\n\n private _save;\n private _cancel;\n\n constructor(\n private repositoryService: RepositoryService,\n private bsModalRef: BsModalRef,\n private alert: AlertService\n ) {}\n\n async ngOnInit() {\n this.configs = await this.repositoryService.listRepositoryEntries(RepositoryType.CONFIGURATION);\n if (this.mo) {\n this.uploadChoice = this.binary.file ? 'uploadBinary' : 'uploadUrl';\n this.existingBinary = this.binary.file;\n this.configurationTypeMO = this.mo;\n }\n this.setPipe('');\n this.submitButtonTitle = this.mo.id\n ? gettext('Update configuration')\n : gettext('Add configuration');\n }\n\n cancel() {\n this.bsModalRef.hide();\n this._cancel();\n }\n\n setPipe(filterStr: string) {\n this.pattern = filterStr;\n this.filterPipe = pipe(\n map(data => uniqBy(data, 'configurationType')),\n map(data => {\n return data.filter(\n mo =>\n mo.configurationType &&\n mo.configurationType.toLowerCase().indexOf(filterStr.toLowerCase()) > -1\n );\n })\n );\n }\n\n onFile(dropped: PickedFiles) {\n this.configurationForm.form.markAsDirty();\n if (!isUndefined(dropped.url)) {\n this.binary = {\n url: dropped.url\n };\n return;\n } else if (dropped.droppedFiles) {\n this.binary = {\n file: dropped.droppedFiles[0].file\n };\n return;\n } else {\n this.binary = {\n file: undefined,\n url: undefined\n };\n }\n }\n\n async save() {\n try {\n this.saving = true;\n const { version, description, binary, deviceType } = this;\n if (this.existingBinary === this.binary.file) {\n binary.file = undefined;\n }\n await this.repositoryService.create(\n {\n version,\n description,\n binary,\n deviceType,\n configurationType: this.configurationTypeMO?.configurationType\n },\n RepositoryType.CONFIGURATION,\n this.mo\n );\n this.alert.success(\n this.mo.id ? gettext('Configuration updated.') : gettext('Configuration created.')\n );\n this.bsModalRef.hide();\n this._save();\n } catch (ex) {\n this.alert.addServerFailure(ex);\n this._cancel();\n } finally {\n this.saving = false;\n }\n }\n}\n","<div class=\"viewport-modal\">\n <div\n class=\"modal-header dialog-header\"\n id=\"configurationModalTitle\"\n >\n <i [c8yIcon]=\"'cogs'\"></i>\n <h4\n id=\"modal-title\"\n translate\n *ngIf=\"mo.id\"\n >\n Update configuration\n </h4>\n <h4\n id=\"modal-title\"\n translate\n *ngIf=\"!mo.id\"\n >\n Add configuration\n </h4>\n </div>\n\n <form\n class=\"d-contents\"\n #configurationForm=\"ngForm\"\n (ngSubmit)=\"configurationForm.form.valid && save()\"\n >\n <div\n class=\"modal-inner-scroll\"\n id=\"modal-body\"\n >\n <div\n class=\"modal-body\"\n id=\"configurationModalDescription\"\n >\n <c8y-form-group>\n <label translate>Name</label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} hosts\"\n name=\"version\"\n type=\"text\"\n autocomplete=\"off\"\n required\n maxlength=\"254\"\n [(ngModel)]=\"version\"\n [pattern]=\"ValidationPattern.rules.noWhiteSpaceOnly.pattern\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Device type</label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} c8y_Linux\"\n name=\"deviceType\"\n type=\"text\"\n autocomplete=\"off\"\n maxlength=\"254\"\n [(ngModel)]=\"deviceType\"\n [pattern]=\"ValidationPattern.rules.noWhiteSpaceOnly.pattern\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Description</label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g. Host configuration' | translate }} c8y_Linux\"\n name=\"description\"\n type=\"text\"\n autocomplete=\"off\"\n maxlength=\"254\"\n [(ngModel)]=\"description\"\n [pattern]=\"ValidationPattern.rules.noWhiteSpaceOnly.pattern\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Configuration type</label>\n <c8y-typeahead\n placeholder=\"{{ 'e.g.' | translate }} ssh\"\n name=\"confType\"\n [(ngModel)]=\"configurationTypeMO\"\n maxlength=\"254\"\n (onSearch)=\"setPipe($event)\"\n displayProperty=\"configurationType\"\n >\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n *c8yFor=\"let config of configs; pipe: filterPipe; notFound: notFoundTemplate\"\n (click)=\"configurationTypeMO = config; setPipe('')\"\n [active]=\"configurationTypeMO === config\"\n >\n <c8y-highlight\n [text]=\"config.configurationType || '--'\"\n [pattern]=\"pattern\"\n ></c8y-highlight>\n </c8y-li>\n <ng-template #notFoundTemplate>\n <c8y-li\n class=\"bg-level-2 p-8\"\n *ngIf=\"pattern.length > 0\"\n >\n <span translate>No match found.</span>\n <button\n class=\"btn btn-primary btn-xs m-l-8\"\n title=\"{{ 'Add new`configuration type`' | translate }}\"\n type=\"button\"\n translate\n >\n Add new`configuration type`\n </button>\n </c8y-li>\n </ng-template>\n </c8y-typeahead>\n </c8y-form-group>\n\n <c8y-form-group>\n <div\n class=\"legend form-block m-t-40\"\n translate\n >\n Configuration file\n </div>\n <c8y-file-picker\n [maxAllowedFiles]=\"1\"\n (onFilesPicked)=\"onFile($event)\"\n [uploadChoice]=\"uploadChoice\"\n [fileUrl]=\"binary.url\"\n [fileBinary]=\"binary.file\"\n [fileUrlPopover]=\"textForConfigurationUrlPopover\"\n ></c8y-file-picker>\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"cancel()\"\n [disabled]=\"saving\"\n >\n <span translate>Cancel</span>\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ submitButtonTitle | translate }}\"\n type=\"submit\"\n [ngClass]=\"{ 'btn-pending': saving }\"\n [disabled]=\"\n !configurationForm.valid ||\n configurationForm.pristine ||\n (!binary?.url?.trim() && !binary?.file) ||\n saving\n \"\n >\n {{ submitButtonTitle | translate }}\n </button>\n </div>\n </form>\n</div>\n","import { Component, EventEmitter, OnInit, ViewChild } from '@angular/core';\nimport { IManagedObject, InventoryBinaryService, IResultList } from '@c8y/client';\nimport {\n ActionControl,\n AlertService,\n BuiltInActionType,\n Column,\n DataGridService,\n DataSourceModifier,\n FilterInputComponent,\n gettext,\n ModalService,\n ServerSideDataCallback,\n ServerSideDataResult,\n Status,\n TitleComponent,\n C8yTranslateDirective,\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n ActionBarItemComponent,\n IconDirective,\n HelpComponent,\n DataGridComponent,\n EmptyStateContextDirective,\n EmptyStateComponent,\n GuideDocsComponent,\n GuideHrefDirective,\n ColumnDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport {\n DescriptionGridColumn,\n DeviceTypeGridColumn,\n FileGridColumn,\n RepositoryItemNameGridColumn,\n RepositoryService,\n RepositoryType,\n TypeGridColumn\n} from '@c8y/ngx-components/repository/shared';\nimport { TranslateService } from '@ngx-translate/core';\nimport { saveAs } from 'file-saver';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { ConfigurationDetailComponent } from './configuration-detail.component';\nimport { NgIf, NgFor, AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'c8y-configuration-list',\n templateUrl: './configuration-list.component.html',\n imports: [\n TitleComponent,\n C8yTranslateDirective,\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n ActionBarItemComponent,\n IconDirective,\n HelpComponent,\n DataGridComponent,\n EmptyStateContextDirective,\n EmptyStateComponent,\n NgIf,\n GuideDocsComponent,\n GuideHrefDirective,\n NgFor,\n ColumnDirective,\n AsyncPipe,\n C8yTranslatePipe\n ]\n})\nexport class ConfigurationListComponent implements OnInit {\n @ViewChild(FilterInputComponent, { static: false }) filter: FilterInputComponent;\n refresh$: EventEmitter<void> = new EventEmitter();\n pagination = {\n pageSize: 50,\n currentPage: 1\n };\n noResultsMessage = gettext('No results to display.');\n noDataMessage = gettext('There are no configuration snapshots defined.');\n noResultsSubtitle = gettext('Refine your search terms or check your spelling.');\n noDataSubtitle = gettext('Add a configuration snapshot first.');\n actionControls: ActionControl[] = [];\n columns: Column[] = [\n new RepositoryItemNameGridColumn({\n filterLabel: gettext('Filter configurations by name'),\n placeholder: gettext('SSH'),\n callback: this.edit.bind(this)\n }),\n new DescriptionGridColumn({\n filterLabel: gettext('Filter configurations by description'),\n placeholder: gettext('SSH configuration')\n }),\n new FileGridColumn(),\n new DeviceTypeGridColumn({\n path: 'deviceType',\n filterLabel: gettext('Filter configurations by device type')\n }),\n new TypeGridColumn({\n header: gettext('Configuration type'),\n filterLabel: gettext('Filter by configuration type'),\n example: 'ssh',\n path: 'configurationType',\n repositoryType: RepositoryType.CONFIGURATION\n })\n ];\n size$: Promise<number>;\n sizeRequestDone = false;\n serverSideDataCallback: ServerSideDataCallback;\n\n private readonly DELETED_SUCCESS_MSG = gettext('Configuration deleted.');\n\n constructor(\n private alert: AlertService,\n private gridService: DataGridService,\n private repositoryService: RepositoryService,\n private bsModalService: BsModalService,\n private modalService: ModalService,\n private translateService: TranslateService,\n private inventoryBinaryService: InventoryBinaryService\n ) {\n this.serverSideDataCallback = this.onDataSourceModifier.bind(this);\n }\n\n ngOnInit() {\n this.actionControls.push({\n type: BuiltInActionType.Edit,\n callback: this.edit.bind(this)\n });\n this.actionControls.push({\n type: BuiltInActionType.Delete,\n callback: this.delete.bind(this)\n });\n this.actionControls.push({\n type: 'download',\n icon: 'download',\n text: gettext('Download'),\n showIf: row => this.isBinaryFile(row as unknown as IManagedObject),\n callback: this.download.bind(this)\n });\n }\n\n async onDataSourceModifier(\n dataSourceModifier: DataSourceModifier\n ): Promise<ServerSideDataResult> {\n const dataRequest: Promise<IResultList<IManagedObject>> =\n this.repositoryService.listRepositoryEntries(RepositoryType.CONFIGURATION, {\n query: this.gridService.getQueryObj(dataSourceModifier.columns),\n skipDefaultOrder: true,\n params: {\n pageSize: dataSourceModifier.pagination.pageSize,\n currentPage: dataSourceModifier.pagination.currentPage,\n withTotalPages: true\n }\n });\n\n const filtererdSizeRequest: Promise<number> = this.repositoryService\n .listRepositoryEntries(RepositoryType.CONFIGURATION, {\n query: this.gridService.getQueryObj(dataSourceModifier.columns),\n skipDefaultOrder: true,\n params: { pageSize: 1 }\n })\n .then(response => response?.paging?.totalPages);\n\n this.size$ = this.repositoryService\n .listRepositoryEntries(RepositoryType.CONFIGURATION, {\n skipDefaultOrder: true,\n params: { pageSize: 1 }\n })\n .then(response => {\n this.sizeRequestDone = true;\n return response?.paging?.totalPages;\n });\n\n const [dataResponse, size, filteredSize] = await Promise.all([\n dataRequest,\n this.size$,\n filtererdSizeRequest\n ]);\n\n const { res, data, paging } = dataResponse;\n\n const serverSideDataResult: ServerSideDataResult = {\n res,\n data,\n paging,\n filteredSize,\n size\n };\n\n return serverSideDataResult;\n }\n\n async add() {\n try {\n await (\n this.bsModalService.show(ConfigurationDetailComponent, {\n class: 'modal-sm',\n ariaDescribedby: 'configurationModalDescription',\n ariaLabelledBy: 'configurationModalTitle',\n ignoreBackdropClick: true,\n keyboard: false\n }).content as ConfigurationDetailComponent\n ).result;\n this.refresh$.next();\n } catch (ex) {\n // intended empty\n }\n }\n\n async edit(configuration: IManagedObject) {\n const fileBinary: File = await this.repositoryService.getBinaryFile(configuration.url, {\n allowExternal: false\n });\n try {\n const modal = this.bsModalService.show(ConfigurationDetailComponent, {\n class: 'modal-sm',\n ariaDescribedby: 'configurationModalDescription',\n ariaLabelledBy: 'configurationModalTitle',\n ignoreBackdropClick: true,\n keyboard: false,\n\n initialState: {\n version: configuration.name,\n deviceType: configuration.deviceType,\n description: configuration.description,\n binary: { file: fileBinary, url: configuration.url }\n }\n }).content as ConfigurationDetailComponent;\n modal.mo = configuration;\n await modal.result;\n this.refresh$.next();\n } catch (ex) {\n // intended empty\n }\n }\n\n isBinaryFile(configuration: IManagedObject) {\n return configuration.url\n ? !!this.inventoryBinaryService.getIdFromUrl(configuration.url)\n : false;\n }\n\n async download(configuration: IManagedObject) {\n const fileBinary: File = await this.repositoryService.getBinaryFile(configuration.url, {\n allowExternal: false\n });\n saveAs(fileBinary);\n }\n\n async delete(configuration: IManagedObject) {\n try {\n const title = gettext('Delete configuration snapshot');\n const confirmationText = gettext(\n 'You are about to delete the configuration snapshot {{ name }}.'\n );\n const hint = gettext('This operation is irreversible.');\n const proceed = gettext('Do you want to proceed?');\n const body = [\n this.translateService.instant(confirmationText, {\n name: configuration.name\n }),\n this.translateService.instant(hint),\n this.translateService.instant(proceed)\n ].join(' ');\n const labels = {\n ok: gettext('Delete')\n };\n await this.modalService.confirm(title, body, Status.DANGER, labels);\n await this.repositoryService.delete(configuration);\n this.alert.success(this.DELETED_SUCCESS_MSG);\n this.refresh$.next();\n } catch (ex) {\n if (ex) {\n this.alert.addServerFailure(ex);\n }\n }\n }\n\n trackByName(_index, column: Column): string {\n return column.name;\n }\n}\n","<c8y-title>\n <span\n class=\"m-r-4\"\n translate\n >\n Configuration repository\n </span>\n <small>\n {{ size$ | async }}\n <span translate>snapshots</span>\n </small>\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n icon=\"c8y-management\"\n label=\"{{ 'Management' | translate }}\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n icon=\"gears\"\n label=\"{{ 'Configuration repository' | translate }}\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add configuration snapshot' | translate }}\"\n type=\"button\"\n (click)=\"add()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add configuration snapshot' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/device-management-application/managing-device-data/#managing-configurations\"\n></c8y-help>\n\n<div class=\"content-fullpage border-top border-bottom\">\n <c8y-data-grid\n [title]=\"'Configurations' | translate\"\n [refresh]=\"refresh$\"\n [pagination]=\"pagination\"\n [columns]=\"columns\"\n [actionControls]=\"actionControls\"\n [infiniteScroll]=\"'auto'\"\n [serverSideDataCallback]=\"serverSideDataCallback\"\n >\n <c8y-ui-empty-state\n [icon]=\"stats?.size > 0 ? 'search' : 'gears'\"\n [title]=\"stats?.size > 0 ? (noResultsMessage | translate) : (noDataMessage | translate)\"\n [subtitle]=\"stats?.size > 0 ? (noResultsSubtitle | translate) : (noDataSubtitle | translate)\"\n *emptyStateContext=\"let stats\"\n [horizontal]=\"stats?.size > 0\"\n >\n <ng-container *ngIf=\"stats?.size === 0\">\n <p>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add configuration snapshot' | translate }}\"\n type=\"button\"\n (click)=\"add()\"\n >\n {{ 'Add configuration snapshot' | translate }}\n </button>\n </p>\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a\n c8y-guide-href=\"/docs/device-management-application/managing-device-data/#managing-configurations\"\n >\n user documentation\n </a>\n .\n </small>\n </p>\n </ng-container>\n </c8y-ui-empty-state>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByName\">\n <c8y-column [name]=\"column.name\"></c8y-column>\n </ng-container>\n </c8y-data-grid>\n</div>\n","import { Injectable } from '@angular/core';\nimport { gettext, NavigatorNode, NavigatorNodeFactory } from '@c8y/ngx-components';\n\n@Injectable()\nexport class ConfigurationRepositoryNavigationFactory implements NavigatorNodeFactory {\n node: NavigatorNode;\n\n constructor() {\n this.node = new NavigatorNode({\n label: gettext('Configuration repository'),\n path: 'configuration',\n icon: 'gears',\n parent: gettext('Management'),\n priority: 800\n });\n }\n\n get(): NavigatorNode {\n return this.node;\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { ConfigurationListComponent } from './configuration-list.component';\nimport { ConfigurationDetailComponent } from './configuration-detail.component';\nimport { hookNavigator, hookRoute } from '@c8y/ngx-components';\nimport { ConfigurationRepositoryNavigationFactory } from './configuration-repository-navigation-factory';\nimport { SharedRepositoryModule } from '@c8y/ngx-components/repository/shared';\n\n@NgModule({\n imports: [SharedRepositoryModule, ConfigurationListComponent, ConfigurationDetailComponent]\n})\nexport class ConfigurationRepositoryListModule {\n static forRoot(): ModuleWithProviders<ConfigurationRepositoryListModule> {\n return {\n ngModule: ConfigurationRepositoryListModule,\n providers: [\n hookNavigator(ConfigurationRepositoryNavigationFactory),\n hookRoute({\n path: 'configuration',\n component: ConfigurationListComponent\n })\n ]\n };\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CoreModule, FormsModule } from '@c8y/ngx-components';\nimport { ConfigurationRepositoryDeviceTabModule } from './device-tab/configuration-repository-device-tab.module';\nimport { ConfigurationRepositoryListModule } from './list/configuration-repository-list.module';\n\n@NgModule({\n imports: [\n CoreModule,\n FormsModule,\n ConfigurationRepositoryListModule.forRoot(),\n ConfigurationRepositoryDeviceTabModule.forRoot()\n ]\n})\nexport class ConfigurationRepositoryModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i4.DeviceConfigurationService","i5","i6","i1.DeviceConfigurationService","i1","i4","i3","i2.DeviceConfigurationService","i2","FormsModule","i1.ConfigurationRepositoryListModule","i2.ConfigurationRepositoryDeviceTabModule"],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-repository-configuration.mjs","sources":["../../repository/configuration/device-tab/device-configuration.service.ts","../../repository/configuration/device-tab/text-based-configuration.component.ts","../../repository/configuration/device-tab/text-based-configuration.component.html","../../repository/configuration/device-tab/device-configuration.guard.ts","../../repository/configuration/device-tab/configuration-filter.pipe.ts","../../repository/configuration/device-tab/save-to-repository.component.ts","../../repository/configuration/device-tab/save-to-repository.component.html","../../repository/configuration/device-tab/source-code-preview.component.ts","../../repository/configuration/device-tab/source-code-preview.component.html","../../repository/configuration/device-tab/configuration-preview.component.ts","../../repository/configuration/device-tab/configuration-preview.component.html","../../repository/configuration/device-tab/device-configuration-list.component.ts","../../repository/configuration/device-tab/device-configuration-list.component.html","../../repository/configuration/device-tab/device-configuration.component.ts","../../repository/configuration/device-tab/device-configuration.component.html","../../repository/configuration/device-tab/configuration-repository-device-tab.module.ts","../../repository/configuration/list/configuration-detail.component.ts","../../repository/configuration/list/configuration-detail.component.html","../../repository/configuration/list/configuration-list.component.ts","../../repository/configuration/list/configuration-list.component.html","../../repository/configuration/list/configuration-repository-navigation-factory.ts","../../repository/configuration/list/configuration-repository-list.module.ts","../../repository/configuration/configuration-repository.module.ts","../../repository/configuration/c8y-ngx-components-repository-configuration.ts"],"sourcesContent":["import { EventEmitter, Injectable } from '@angular/core';\nimport { DeviceConfigurationOperation } from '@c8y/ngx-components/repository/shared';\nimport { IManagedObject } from '@c8y/client';\n\n@Injectable()\nexport class DeviceConfigurationService {\n configurationsUpdated = new EventEmitter<any>();\n\n updateConfigurations(repositorySnapsOnly?: boolean) {\n this.configurationsUpdated.emit(repositorySnapsOnly);\n }\n\n hasAnySupportedOperation(\n mo: IManagedObject,\n operation: DeviceConfigurationOperation | DeviceConfigurationOperation[]\n ) {\n const supported = mo.c8y_SupportedOperations as [];\n if (!supported) {\n return false;\n }\n if (!Array.isArray(operation)) {\n operation = [operation];\n }\n return supported.some(supportedOperation => operation.includes(supportedOperation));\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { IManagedObject, IOperation, InventoryService, OperationStatus } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { AlertService, IconDirective, C8yTranslatePipe } from '@c8y/ngx-components';\nimport {\n DeviceConfigurationOperation,\n RepositoryService\n} from '@c8y/ngx-components/repository/shared';\nimport { DeviceConfigurationService } from './device-configuration.service';\nimport { NgIf, NgClass } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { OperationDetailsComponent } from '@c8y/ngx-components/operations/operation-details';\n\n@Component({\n selector: 'c8y-text-based-configuration',\n templateUrl: './text-based-configuration.component.html',\n imports: [NgIf, IconDirective, NgClass, FormsModule, OperationDetailsComponent, C8yTranslatePipe]\n})\nexport class TextBasedConfigurationComponent implements OnInit {\n device: IManagedObject;\n latestOperation: IOperation;\n showTextBasedConfigReload: boolean;\n showTextBasedConfigSave: boolean;\n reloadingConfig = false;\n config: string;\n\n constructor(\n private route: ActivatedRoute,\n private alertService: AlertService,\n private repositoryService: RepositoryService,\n private deviceConfigurationService: DeviceConfigurationService,\n private inventoryService: InventoryService\n ) {}\n\n async ngOnInit() {\n await this.load();\n }\n\n async load() {\n this.device = this.route.snapshot.parent.data.contextData;\n await this.loadDevice();\n await this.loadOperation();\n this.showTextBasedConfigReload = this.deviceConfigurationService.hasAnySupportedOperation(\n this.device,\n [DeviceConfigurationOperation.SEND_CONFIG]\n );\n this.showTextBasedConfigSave = this.deviceConfigurationService.hasAnySupportedOperation(\n this.device,\n [DeviceConfigurationOperation.CONFIG]\n );\n if (this.device.c8y_Configuration && this.device.c8y_Configuration.config) {\n this.config = this.device.c8y_Configuration.config;\n }\n }\n\n async loadOperation() {\n const operation = await this.repositoryService.getLastConfigUpdateOperation(this.device.id);\n if (operation !== null) {\n this.reloadingConfig =\n !!operation.c8y_SendConfiguration &&\n (operation.status === OperationStatus.PENDING ||\n operation.status === OperationStatus.EXECUTING);\n this.repositoryService.observeOperation(operation).subscribe(operationUpdate => {\n if (\n operationUpdate.status === OperationStatus.PENDING ||\n operationUpdate.status === OperationStatus.EXECUTING\n ) {\n this.latestOperation = operationUpdate;\n } else this.latestOperation = null;\n });\n }\n }\n\n get savingConfig() {\n return this.latestOperation\n ? !!this.latestOperation.c8y_Configuration &&\n (this.latestOperation.status === OperationStatus.PENDING ||\n this.latestOperation.status === OperationStatus.EXECUTING)\n : false;\n }\n\n async reloadConfiguration() {\n this.reloadingConfig = true;\n const operationCfg = await this.repositoryService.createTextBasedConfigurationReloadOperation(\n this.device\n );\n try {\n this.repositoryService.createObservedOperation(operationCfg).subscribe(\n operationUpdate => this.onOperationReloadSuccess(operationUpdate),\n operationUpdate => this.onOperationReloadError(operationUpdate),\n () => this.onOperationReloadComplete()\n );\n } catch (ex) {\n this.alertService.addServerFailure(ex);\n }\n }\n\n async updateConfiguration(config) {\n const operationCfg = await this.repositoryService.createTextBasedConfigurationUpdateOperation(\n this.device,\n config\n );\n try {\n this.repositoryService.createObservedOperation(operationCfg).subscribe(\n operationUpdate => this.onOperationUpdateSuccess(operationUpdate),\n operationUpdate => this.onOperationUpdateError(operationUpdate),\n () => this.onOperationUpdateComplete()\n );\n } catch (ex) {\n this.alertService.addServerFailure(ex);\n }\n }\n\n private onOperationReloadSuccess(operationUpdate) {\n this.latestOperation = operationUpdate;\n if (operationUpdate.status === OperationStatus.PENDING) {\n this.alertService.success(gettext('Configuration will be reloaded.'));\n }\n }\n\n private onOperationReloadError(operationUpdate) {\n this.latestOperation = operationUpdate;\n this.reloadingConfig = false;\n }\n\n private async onOperationReloadComplete() {\n await this.loadDevice();\n this.config = this.device.c8y_Configuration.config;\n this.reloadingConfig = false;\n }\n\n private onOperationUpdateSuccess(operationUpdate) {\n this.latestOperation = operationUpdate;\n if (operationUpdate.status === OperationStatus.PENDING) {\n this.alertService.success(gettext('Configuration will be updated.'));\n }\n }\n\n private onOperationUpdateError(operationUpdate) {\n this.latestOperation = operationUpdate;\n }\n\n private onOperationUpdateComplete() {\n this.device.c8y_Configuration.config = this.config;\n }\n\n private async loadDevice() {\n this.device = (\n await this.inventoryService.detail(this.device.id, {\n withChildren: false\n })\n ).data;\n }\n}\n","<div class=\"d-flex d-col fit-h\">\n <fieldset class=\"card-block bg-level-1 fit-w\">\n <div class=\"content-flex-50\">\n <div class=\"m-l-auto d-flex\">\n <button\n class=\"btn btn-default btn-sm a-s-center m-t-8 m-b-8\"\n title=\"{{ 'Get configuration from device' | translate }}\"\n type=\"button\"\n *ngIf=\"showTextBasedConfigReload\"\n (click)=\"reloadConfiguration()\"\n [disabled]=\"reloadingConfig || savingConfig\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"refresh\"\n *ngIf=\"reloadingConfig\"\n [ngClass]=\"{ 'icon-spin': reloadingConfig }\"\n ></i>\n <i\n class=\"m-r-4\"\n c8yIcon=\"download\"\n *ngIf=\"!reloadingConfig\"\n ></i>\n\n {{ 'Get configuration from device' | translate }}\n </button>\n </div>\n </div>\n </fieldset>\n <div class=\"flex-grow\">\n <textarea\n class=\"form-control fit-h p-r-16 p-l-16\"\n [attr.aria-label]=\"'Operations' | translate\"\n [(ngModel)]=\"config\"\n [disabled]=\"reloadingConfig || savingConfig\"\n c8y-spellcheck=\"false\"\n ></textarea>\n </div>\n <c8y-operation-details\n class=\"bg-level-2 p-0\"\n *ngIf=\"latestOperation !== undefined\"\n [operation]=\"latestOperation\"\n ></c8y-operation-details>\n <div\n class=\"card-footer fit-w separator\"\n *ngIf=\"showTextBasedConfigSave\"\n >\n <button\n class=\"btn btn-primary\"\n id=\"send-config-btn\"\n type=\"button\"\n (click)=\"updateConfiguration(config)\"\n [disabled]=\"reloadingConfig || savingConfig || !config\"\n [ngClass]=\"{ 'btn-pending': savingConfig }\"\n >\n <span\n title=\"{{ 'Send' | translate }}\"\n *ngIf=\"!savingConfig\"\n >\n {{ 'Send configuration to device' | translate }}\n </span>\n <span\n title=\"{{ 'Sending…' | translate }}\"\n *ngIf=\"savingConfig\"\n >\n {{ 'Sending…' | translate }}\n </span>\n </button>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\nimport { DeviceConfigurationOperation } from '@c8y/ngx-components/repository/shared';\nimport { has } from 'lodash-es';\nimport { DeviceConfigurationService } from './device-configuration.service';\n\n@Injectable()\nexport class DeviceConfigurationGuard {\n constructor(private deviceConfigurationService: DeviceConfigurationService) {}\n\n canActivate(route: ActivatedRouteSnapshot) {\n const contextData = route.data.contextData || route.parent.data.contextData;\n if (!contextData) {\n return false;\n }\n return (\n (contextData.c8y_SupportedConfigurations &&\n contextData.c8y_SupportedConfigurations.length > 0) ||\n this.deviceConfigurationService.hasAnySupportedOperation(contextData, [\n DeviceConfigurationOperation.DOWNLOAD_CONFIG,\n DeviceConfigurationOperation.UPLOAD_CONFIG,\n DeviceConfigurationOperation.CONFIG,\n DeviceConfigurationOperation.SEND_CONFIG\n ]) ||\n has(contextData, 'c8y_Configuration')\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { SupportedConfigurationItem } from '@c8y/ngx-components/repository/shared';\n\n@Pipe({ name: 'configurationFilterPipe' })\nexport class ConfigurationFilterPipe implements PipeTransform {\n transform(items: any[], filterTerm: string): any {\n return filterTerm.trim().length === 0\n ? items\n : items.filter(\n (item: SupportedConfigurationItem) =>\n this.filterContainString(item.name, filterTerm) ||\n this.filterContainString(item.deviceType, filterTerm)\n );\n }\n\n private filterContainString(name: string, filterTerm: string) {\n const term = filterTerm.toLowerCase().trim();\n return name && name.toLowerCase().indexOf(term) > -1;\n }\n}\n","import { Component } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n AlertService,\n IconDirective,\n C8yTranslateDirective,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport {\n ConfigurationSnapshot,\n RepositoryService,\n RepositoryType\n} from '@c8y/ngx-components/repository/shared';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'c8y-save-config-to-configuration-repository',\n templateUrl: 'save-to-repository.component.html',\n imports: [\n IconDirective,\n C8yTranslateDirective,\n FormsModule,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n C8yTranslatePipe\n ]\n})\nexport class SaveToRepositoryComponent {\n configSnapshot: ConfigurationSnapshot;\n result: Promise<any> = new Promise((resolve, reject) => {\n this._save = resolve;\n this._cancel = reject;\n });\n private _save;\n private _cancel;\n\n constructor(\n private modal: BsModalRef,\n private alertService: AlertService,\n private repositoryService: RepositoryService\n ) {}\n\n async save() {\n {\n try {\n const configSnapshotData = {\n selected: {\n configurationType: this.configSnapshot.configurationType\n },\n version: this.configSnapshot.name,\n deviceType: this.configSnapshot.deviceType,\n description: this.configSnapshot.description,\n binary: {\n file: new File([this.configSnapshot.binary], this.configSnapshot.name)\n }\n };\n await this.repositoryService.create(configSnapshotData, RepositoryType.CONFIGURATION);\n this.alertService.success(gettext('Configuration saved.'));\n this._save();\n } catch (ex) {\n this.alertService.addServerFailure(ex);\n }\n }\n }\n\n close() {\n this._cancel();\n this.modal.hide();\n }\n}\n","<div class=\"modal-header dialog-header\">\n <i c8yIcon=\"gears\"></i>\n <h4 id=\"modal-title\" translate>\n Save configuration\n </h4>\n</div>\n<div class=\"modal-body\" id=\"modal-body\">\n <form #saveConfigurationSnapshot=\"ngForm\" class=\"p-t-24\">\n <c8y-form-group>\n <label translate for=\"name\">Name</label>\n <input\n id=\"name\"\n type=\"text\"\n class=\"form-control\"\n autocomplete=\"off\"\n name=\"name\"\n [(ngModel)]=\"configSnapshot.name\"\n required\n />\n </c8y-form-group>\n <c8y-form-group>\n <label translate for=\"deviceType\">Device type</label>\n <input\n id=\"deviceType\"\n class=\"form-control\"\n rows=\"6\"\n name=\"deviceType\"\n [(ngModel)]=\"configSnapshot.deviceType\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label translate for=\"description\">Description</label>\n <input\n type=\"text\"\n id=\"description\"\n class=\"form-control\"\n maxlength=\"254\"\n autocomplete=\"off\"\n name=\"description\"\n [(ngModel)]=\"configSnapshot.description\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label translate for=\"configurationType\">Configuration type</label>\n <input\n id=\"configurationType\"\n class=\"form-control\"\n rows=\"6\"\n name=\"configurationType\"\n [(ngModel)]=\"configSnapshot.configurationType\"\n />\n </c8y-form-group>\n </form>\n</div>\n<div class=\"modal-footer\">\n <button title=\"{{ 'Cancel' | translate }}\" class=\"btn btn-default\" (click)=\"close()\" translate>\n Cancel\n </button>\n\n <button\n title=\"{{ 'Save configuration to repository' | translate }}\"\n class=\"btn btn-primary\"\n (click)=\"save()\"\n [disabled]=\"saveConfigurationSnapshot.form.invalid\"\n translate\n >\n Save\n </button>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'c8y-source-code-preview',\n templateUrl: './source-code-preview.component.html'\n})\nexport class SourceCodePreviewComponent {\n @Input() isDisabled: boolean;\n @Input() text: string;\n}\n","<textarea\n [disabled]=\"isDisabled\"\n class=\"text-monospace form-control no-resize flex-grow\"\n rows=\"4\"\n >{{ text }}</textarea\n>\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport {\n IManagedObject,\n IOperation,\n OperationService,\n OperationStatus,\n UserService\n} from '@c8y/client';\nimport {\n AlertService,\n AppStateService,\n OperationRealtimeService,\n Permissions,\n C8yTranslateDirective,\n IconDirective,\n C8yTranslatePipe,\n DatePipe\n} from '@c8y/ngx-components';\nimport {\n ConfigurationSnapshot,\n DeviceConfigurationOperation,\n RepositoryService\n} from '@c8y/ngx-components/repository/shared';\nimport { saveAs } from 'file-saver';\nimport { cloneDeep } from 'lodash-es';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { DeviceConfigurationService } from './device-configuration.service';\nimport { SaveToRepositoryComponent } from './save-to-repository.component';\nimport { NgIf } from '@angular/common';\nimport { SourceCodePreviewComponent } from './source-code-preview.component';\nimport { OperationDetailsComponent } from '@c8y/ngx-components/operations/operation-details';\n\n@Component({\n selector: 'c8y-device-configuration-preview',\n templateUrl: './configuration-preview.component.html',\n imports: [\n C8yTranslateDirective,\n NgIf,\n IconDirective,\n SourceCodePreviewComponent,\n OperationDetailsComponent,\n C8yTranslatePipe,\n DatePipe\n ]\n})\nexport class ConfigurationPreviewComponent implements OnInit, OnDestroy {\n @Input() device: IManagedObject;\n\n @Input() set configurationType(type: string) {\n this._configurationType = type;\n this.setOperation(type);\n }\n\n get configurationType(): string {\n return this._configurationType;\n }\n\n @Input() configSnapshot: ConfigurationSnapshot;\n @Input() canSaveSnapshot: boolean;\n @Input() actionButtonText: string;\n @Input() actionButtonIcon: string;\n @Input() isLegacy = false;\n @Input() operationToTrigger:\n | DeviceConfigurationOperation.UPLOAD_CONFIG\n | DeviceConfigurationOperation.DOWNLOAD_CONFIG;\n\n operation: IOperation;\n canCallAction = true;\n deviceConfigurationOperation = DeviceConfigurationOperation;\n private _configurationType: string;\n private operationsSubscription: Subscription;\n\n constructor(\n private deviceConfigurationService: DeviceConfigurationService,\n private operationRealtime: OperationRealtimeService,\n private bsModal: BsModalService,\n private user: UserService,\n private appState: AppStateService,\n private repositoryService: RepositoryService,\n private operationService: OperationService,\n private alertService: AlertService\n ) {}\n\n async ngOnInit() {\n this.setCanCallAction();\n this.setOperation(this._configurationType);\n this.operationsSubscription = this.operationRealtime\n .onAll$(this.device.id)\n .pipe(map(({ data }) => data as IOperation))\n .subscribe(operation => {\n this.updatePreview(operation);\n });\n }\n\n async setOperation(configType): Promise<void> {\n const operationList = await this.repositoryService.getConfigFileOperationList(\n this.device.id,\n this.operationToTrigger\n );\n\n const operation = this.isLegacy\n ? operationList.find(op => op[this.operationToTrigger] && !op[this.operationToTrigger].type)\n : operationList.find(op => op[this.operationToTrigger].type === configType);\n\n this.operation =\n operation && operation.status !== OperationStatus.SUCCESSFUL ? operation : undefined;\n }\n\n setCanCallAction(): void {\n this.canCallAction = this.deviceConfigurationService.hasAnySupportedOperation(\n this.device,\n this.operationToTrigger\n );\n }\n\n async createDeviceOperation() {\n let operationCfg;\n if (this.operationToTrigger === DeviceConfigurationOperation.DOWNLOAD_CONFIG) {\n operationCfg = this.repositoryService.getDownloadConfigurationFileOperation(\n this.device,\n this._configurationType,\n this.configSnapshot,\n this.isLegacy\n );\n }\n if (this.operationToTrigger === DeviceConfigurationOperation.UPLOAD_CONFIG) {\n operationCfg = this.repositoryService.getUploadConfigurationFileOperation(\n this.device,\n this._configurationType,\n this.isLegacy\n );\n }\n try {\n this.operation = (await this.operationService.create(operationCfg)).data;\n } catch (ex) {\n this.alertService.addServerFailure(ex);\n }\n }\n\n showOperation(): boolean {\n if (this.operationToTrigger === DeviceConfigurationOperation.DOWNLOAD_CONFIG) {\n return !!this.operation;\n }\n return (\n this.operation &&\n [OperationStatus.PENDING, OperationStatus.EXECUTING].includes(this.operation.status)\n );\n }\n\n showBinary(): boolean {\n if (this.operationToTrigger === DeviceConfigurationOperation.DOWNLOAD_CONFIG) {\n return true;\n }\n return !this.showOperation();\n }\n\n isCreateOperationDisabled(): boolean {\n return (\n this.operation &&\n [OperationStatus.PENDING, OperationStatus.EXECUTING].includes(this.operation.status)\n );\n }\n\n updatePreview(operation: IOperation) {\n if (\n operation &&\n operation[this.operationToTrigger] &&\n (this.isLegacy ||\n (operation[this.operationToTrigger].type &&\n operation[this.operationToTrigger].type === this.configurationType))\n ) {\n this.operation = operation;\n this.updateSnapshotsOnConfigUpload(operation);\n }\n }\n\n download() {\n const blob = new Blob([this.configSnapshot.binary], { type: this.configSnapshot.binaryType });\n let fileName = this.configSnapshot.name;\n switch (this.configSnapshot.binaryType) {\n case 'text/csv':\n case 'application/csv':\n fileName = fileName.concat('.csv');\n break;\n case 'text/yaml':\n case 'application/x-yaml':\n fileName = fileName.concat('.yaml');\n break;\n case 'application/json':\n fileName = fileName.concat('.json');\n break;\n }\n saveAs(blob, fileName);\n }\n\n async saveToRepository() {\n const initialState = {\n configSnapshot: cloneDeep(this.configSnapshot)\n };\n const modal = this.bsModal.show(SaveToRepositoryComponent, {\n class: 'modal-sm',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n initialState,\n ignoreBackdropClick: true\n }).content as SaveToRepositoryComponent;\n try {\n await modal.result;\n this.deviceConfigurationService.updateConfigurations(true);\n modal.close();\n } catch (ex) {\n // do nothing\n }\n }\n\n hasPermission(): boolean {\n return (\n this.user.hasAnyRole(this.appState.currentUser.value, [\n Permissions.ROLE_INVENTORY_ADMIN,\n Permissions.ROLE_INVENTORY_CREATE\n ]) ||\n (this.user.hasAnyRole(this.appState.currentUser.value, [\n Permissions.ROLE_MANAGED_OBJECT_ADMIN,\n Permissions.ROLE_MANAGED_OBJECT_CREATE\n ]) &&\n this.user.hasAnyRole(this.appState.currentUser.value, [\n Permissions.ROLE_BINARY_ADMIN,\n Permissions.ROLE_BINARY_CREATE\n ]))\n );\n }\n\n ngOnDestroy() {\n if (this.operationsSubscription) {\n this.operationsSubscription.unsubscribe();\n }\n }\n\n private async updateSnapshotsOnConfigUpload(operation) {\n if (\n operation[DeviceConfigurationOperation.UPLOAD_CONFIG] &&\n operation.status === OperationStatus.SUCCESSFUL\n ) {\n this.deviceConfigurationService.updateConfigurations();\n }\n }\n}\n","<div class=\"content-flex-55 p-b-16\">\n <div class=\"col-7 p-t-4\">\n <p>\n <span class=\"text-label-small text-uppercase m-r-4\" translate>Configuration</span>\n <span *ngIf=\"configSnapshot?.name; else emptyText\">\n <strong>{{ configSnapshot.name }}</strong>\n </span>\n <ng-template #emptyText>---</ng-template>\n </p>\n <p>\n <span class=\"text-label-small text-uppercase m-r-4\" translate>Last updated</span>\n <small *ngIf=\"configSnapshot?.time; else emptyDate\">\n {{ configSnapshot.time | c8yDate }}\n </small>\n <ng-template #emptyDate>---</ng-template>\n </p>\n </div>\n <div class=\"col-5\">\n <button\n id=\"action-btn\"\n class=\"btn btn-default btn-sm pull-right\"\n type=\"button\"\n title=\"{{ actionButtonText | translate }}\"\n (click)=\"createDeviceOperation()\"\n [disabled]=\"isCreateOperationDisabled()\"\n *ngIf=\"canCallAction\"\n >\n <i [c8yIcon]=\"actionButtonIcon\"></i>\n {{ actionButtonText | translate }}\n </button>\n </div>\n</div>\n<div class=\"c8y-empty-state text-left\" *ngIf=\"!configSnapshot?.binary && showBinary()\">\n <h1 [c8yIcon]=\"'file-image-o'\"></h1>\n <p>\n <strong translate>No preview available.</strong>\n <br />\n <small *ngIf=\"configSnapshot?.binary !== ''; else emptyFile\" translate>\n The file is not available.\n </small>\n <ng-template #emptyFile>\n <small translate>The file is empty.</small>\n </ng-template>\n </p>\n</div>\n<div *ngIf=\"configSnapshot?.binary && showBinary()\" class=\"flex-grow d-flex d-col\">\n <c8y-source-code-preview\n [text]=\"configSnapshot.binary\"\n [isDisabled]=\"true\"\n class=\"d-contents\"\n ></c8y-source-code-preview>\n <div *ngIf=\"canSaveSnapshot\" class=\"p-t-16\">\n <button\n title=\"{{ 'Download' | translate }}\"\n type=\"button\"\n class=\"btn btn-primary btn-sm pull-right m-l-8\"\n (click)=\"download()\"\n >\n {{ 'Download' | translate }}\n </button>\n <button\n title=\"{{ 'Save to repository' | translate }}\"\n *ngIf=\"hasPermission()\"\n type=\"button\"\n class=\"btn btn-default btn-sm pull-right\"\n (click)=\"saveToRepository()\"\n >\n {{ 'Save to repository' | translate }}\n </button>\n </div>\n</div>\n<div *ngIf=\"showOperation()\">\n <c8y-operation-details [operation]=\"operation\"></c8y-operation-details>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport {\n DeviceConfigurationListEmptyState,\n SupportedConfigurationItem\n} from '@c8y/ngx-components/repository/shared';\nimport { NgIf, NgFor } from '@angular/common';\nimport { FilterInputComponent, IconDirective, C8yTranslatePipe } from '@c8y/ngx-components';\nimport { ConfigurationFilterPipe } from './configuration-filter.pipe';\n\n@Component({\n selector: 'c8y-device-configuration-list',\n templateUrl: './device-configuration-list.component.html',\n imports: [\n NgIf,\n FilterInputComponent,\n IconDirective,\n NgFor,\n C8yTranslatePipe,\n ConfigurationFilterPipe\n ]\n})\nexport class DeviceConfigurationListComponent {\n @Input() items: SupportedConfigurationItem[];\n @Input() itemIcon: string;\n @Input() emptyState: DeviceConfigurationListEmptyState;\n @Input() isFilterEnabled: boolean;\n @Output() configSelected = new EventEmitter<string>();\n selectedConfig;\n filterTerm = '';\n\n showConfigurationTypePreview(config): void {\n this.selectedConfig = config;\n this.configSelected.emit(config);\n }\n\n updatePipe(filterTerm: string) {\n this.filterTerm = filterTerm;\n }\n}\n","<div class=\"p-l-16 m-b-8\" *ngIf=\"isFilterEnabled\">\n <c8y-filter [icon]=\"'search'\" (onSearch)=\"updatePipe($event)\"></c8y-filter>\n</div>\n\n<!-- EMPTY STATE -->\n<div class=\"c8y-empty-state text-left\" *ngIf=\"items?.length === 0\">\n <h1 [c8yIcon]=\"emptyState.icon\"></h1>\n <p>\n <strong>{{ emptyState.title | translate }}</strong>\n <br />\n <small>{{ emptyState.text | translate }}</small>\n </p>\n</div>\n\n<!-- CONFIGURATIONS AVAILABLE -->\n<div class=\"c8y-nav-stacked\">\n <button\n type=\"button\"\n class=\"c8y-stacked-item d-flex\"\n [class.active]=\"config === selectedConfig\"\n *ngFor=\"let config of items | configurationFilterPipe: filterTerm\"\n (click)=\"showConfigurationTypePreview(config)\"\n >\n <div class=\"list-item-icon\">\n <i [c8yIcon]=\"itemIcon\"></i>\n </div>\n <div class=\"list-item-body text-truncate\">\n <div class=\"d-flex\">\n <span class=\"text-truncate\" title=\"{{ config.name }}\">{{ config.name }}</span>\n <span class=\"text-label-small m-l-auto m-t-auto m-b-auto\">{{ config.deviceType }}</span>\n </div>\n </div>\n </button>\n</div>\n\n<!-- for Carlos: config.configurationType to differentiate whether a config matches configuration type. -->\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { IManagedObject, Realtime } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n ActionBarItemComponent,\n IconDirective,\n TabsetAriaDirective,\n C8yTranslateDirective,\n EmptyStateComponent,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport {\n ConfigurationSnapshot,\n DeviceConfigurationListEmptyState,\n DeviceConfigurationOperation,\n RepositoryService,\n SupportedConfigurationItem\n} from '@c8y/ngx-components/repository/shared';\nimport { has } from 'lodash-es';\nimport { DeviceConfigurationService } from './device-configuration.service';\nimport { TextBasedConfigurationComponent } from './text-based-configuration.component';\nimport { NgClass, NgIf } from '@angular/common';\nimport { TabsetComponent, TabDirective } from 'ngx-bootstrap/tabs';\nimport { DeviceConfigurationListComponent } from './device-configuration-list.component';\nimport { ConfigurationPreviewComponent } from './configuration-preview.component';\n\n@Component({\n selector: 'c8y-device-configuration',\n templateUrl: './device-configuration.component.html',\n imports: [\n ActionBarItemComponent,\n IconDirective,\n NgClass,\n TabsetAriaDirective,\n TabsetComponent,\n NgIf,\n TabDirective,\n C8yTranslateDirective,\n DeviceConfigurationListComponent,\n EmptyStateComponent,\n ConfigurationPreviewComponent,\n TextBasedConfigurationComponent,\n C8yTranslatePipe\n ]\n})\nexport class DeviceConfigurationComponent implements OnInit {\n supportedConfigurations: SupportedConfigurationItem[] = [];\n showBinaryBasedConfig = false;\n configurationType: string;\n configSnapshot: Partial<ConfigurationSnapshot> = {};\n repositorySnapshots: IManagedObject[];\n repositorySnapshot: ConfigurationSnapshot;\n repositorySnapshotsEmptyState: DeviceConfigurationListEmptyState;\n device: IManagedObject;\n isLegacy: boolean;\n showTextBasedConfig: boolean;\n reloading = false;\n\n @ViewChild(TextBasedConfigurationComponent)\n textBasedConfigurationComponent: TextBasedConfigurationComponent;\n\n constructor(\n private route: ActivatedRoute,\n private deviceConfigurationService: DeviceConfigurationService,\n private realtime: Realtime,\n private repositoryService: RepositoryService\n ) {\n this.deviceConfigurationService.configurationsUpdated.subscribe(repositorySnapsOnly => {\n this.updateSnapshots(repositorySnapsOnly);\n });\n }\n\n ngOnInit() {\n this.device = this.route.snapshot.parent.data.contextData;\n if (this.device.c8y_SupportedConfigurations) {\n this.supportedConfigurations = this.device.c8y_SupportedConfigurations.map(item => ({\n name: item\n }));\n }\n\n if (\n this.deviceConfigurationService.hasAnySupportedOperation(this.device, [\n DeviceConfigurationOperation.DOWNLOAD_CONFIG,\n DeviceConfigurationOperation.UPLOAD_CONFIG\n ])\n ) {\n this.supportedConfigurations.push({\n name: gettext('Legacy configuration snapshot'),\n isLegacy: true\n });\n }\n if (this.supportedConfigurations.length > 0) {\n this.showBinaryBasedConfig = true;\n }\n\n this.repositorySnapshotsEmptyState = {\n icon: 'gears',\n title: gettext('No configurations available.'),\n text: gettext('Add configuration to configuration repository')\n };\n\n this.showTextBasedConfig =\n this.deviceConfigurationService.hasAnySupportedOperation(this.device, [\n DeviceConfigurationOperation.CONFIG,\n DeviceConfigurationOperation.SEND_CONFIG\n ]) || has(this.device, 'c8y_Configuration');\n }\n\n async onConfigTypeSelected(config) {\n this.configurationType = config.name;\n this.isLegacy = config.isLegacy;\n this.updateSnapshots();\n }\n\n async onRepositoryConfigSelected(config) {\n this.repositorySnapshot = {\n id: config.id,\n time: config.creationTime,\n name: config.name,\n binaryUrl: config.url,\n deviceType: config.deviceType,\n configurationType: config.configurationType\n };\n if (config.url) {\n try {\n const binary = await this.repositoryService.getBinaryFile(config.url, {\n allowExternal: false\n });\n if (binary) {\n this.repositorySnapshot.binary = await (binary as any).text();\n }\n } catch (ex) {\n // do nothing\n }\n }\n }\n\n async updateSnapshots(repositorySnapsOnly?: boolean) {\n this.reloading = true;\n this.repositorySnapshot = undefined;\n this.repositorySnapshots = await this.repositoryService.getSnapshotsFromRepository(\n this.device,\n this.configurationType\n );\n if (!repositorySnapsOnly) {\n this.configSnapshot = this.isLegacy\n ? await this.repositoryService.getLegacyConfigSnapshot(this.device)\n : await this.repositoryService.getConfigSnapshot(this.device, this.configurationType);\n }\n if (this.showTextBasedConfig) {\n await this.textBasedConfigurationComponent.load();\n }\n this.reloading = false;\n }\n}\n","<c8y-action-bar-item [placement]=\"'right'\">\n <button class=\"btn btn-link\" title=\"{{ 'Reload' | translate }}\" (click)=\"updateSnapshots()\">\n <i c8yIcon=\"refresh\" [ngClass]=\"{ 'icon-spin': reloading }\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage card-has-tabs\">\n <tabset>\n <div class=\"card-header separator\" *ngIf=\"showBinaryBasedConfig && !showTextBasedConfig\">\n <div class=\"card-title\">{{ 'Configurations' | translate }}</div>\n </div>\n <div class=\"card-header separator\" *ngIf=\"!showBinaryBasedConfig && showTextBasedConfig\">\n <div class=\"card-title\">{{ 'Text-based configuration' | translate }}</div>\n </div>\n <tab heading=\"{{ 'Configurations' | translate }}\" *ngIf=\"showBinaryBasedConfig\">\n <div class=\"card--grid card grid__col--4-8--md grid__row--6-6--md m-b-0\">\n <!-- DEVICE SUPPORTED CONFIGURATIONS -->\n <div class=\"card--grid__inner-scroll bg-level-1\">\n <div class=\"p-l-16 p-r-16\">\n <h5 class=\"legend form-block\">\n <span translate>Device-supported configurations</span>\n </h5>\n </div>\n <c8y-device-configuration-list\n [items]=\"supportedConfigurations\"\n [itemIcon]=\"'gears'\"\n (configSelected)=\"onConfigTypeSelected($event)\"\n ></c8y-device-configuration-list>\n </div>\n\n <!-- CONFIGURATION PREVIEW -->\n <div class=\"card--grid__inner-scroll d-flex d-col flex-grow\">\n <div class=\"card-block d-flex d-col flex-grow\">\n <h5 class=\"legend form-block\"><span translate>Preview</span></h5>\n\n <!-- EMPTY STATE -->\n\n <c8y-ui-empty-state\n *ngIf=\"!configurationType\"\n [icon]=\"'file-text'\"\n [title]=\"'No configuration selected.' | translate\"\n [subtitle]=\"'Select a configuration to preview.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <!-- PREVIEW AVAILABLE STATE -->\n <c8y-device-configuration-preview\n *ngIf=\"configurationType\"\n [device]=\"device\"\n [configurationType]=\"configurationType\"\n [configSnapshot]=\"configSnapshot\"\n [canSaveSnapshot]=\"true\"\n [operationToTrigger]=\"'c8y_UploadConfigFile'\"\n [actionButtonText]=\"'Get snapshot from device' | translate\"\n [actionButtonIcon]=\"'download'\"\n [isLegacy]=\"isLegacy\"\n class=\"d-flex d-col flex-grow\"\n ></c8y-device-configuration-preview>\n </div>\n </div>\n\n <!-- AVAILABLE SUPPORTED CONFIGURATIONS -->\n <div class=\"card--grid__inner-scroll bg-level-1\">\n <div class=\"p-l-16 p-r-16\">\n <h5 class=\"legend form-block\" translate>Available supported configurations</h5>\n </div>\n\n <!-- EMPTY STATE -->\n\n <c8y-ui-empty-state\n *ngIf=\"!configurationType\"\n [icon]=\"'gears'\"\n [title]=\"'No selection.' | translate\"\n [subtitle]=\"\n 'Select a configuration from the device-supported configuration list.' | translate\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <div class=\"p-r-16\" *ngIf=\"configurationType\">\n <c8y-device-configuration-list\n [items]=\"repositorySnapshots\"\n [itemIcon]=\"'file-text'\"\n [emptyState]=\"repositorySnapshotsEmptyState\"\n [isFilterEnabled]=\"true\"\n (configSelected)=\"onRepositoryConfigSelected($event)\"\n ></c8y-device-configuration-list>\n </div>\n </div>\n\n <!-- CONFIGURATION PREVIEW -->\n <div class=\"card--grid__inner-scroll d-flex d-col flex-grow\">\n <div class=\"card-block flex-grow d-flex d-col\">\n <h5 class=\"legend form-block\" translate>Preview</h5>\n\n <!-- EMPTY STATE -->\n <c8y-ui-empty-state\n *ngIf=\"!repositorySnapshot\"\n [icon]=\"'file-text'\"\n [title]=\"'No configuration selected.' | translate\"\n [subtitle]=\"'Select a configuration to preview.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <!-- CONFIGURATION SELECTED STATE -->\n <c8y-device-configuration-preview\n *ngIf=\"repositorySnapshot\"\n [device]=\"device\"\n [configurationType]=\"configurationType\"\n [configSnapshot]=\"repositorySnapshot\"\n [operationToTrigger]=\"'c8y_DownloadConfigFile'\"\n [actionButtonText]=\"'Send configuration to device' | translate\"\n [actionButtonIcon]=\"'upload'\"\n [isLegacy]=\"isLegacy\"\n class=\"d-flex d-col flex-grow\"\n ></c8y-device-configuration-preview>\n </div>\n </div>\n </div>\n </tab>\n <tab heading=\"{{ 'Text-based configuration' | translate }}\" *ngIf=\"showTextBasedConfig\">\n <c8y-text-based-configuration></c8y-text-based-configuration>\n </tab>\n </tabset>\n</div>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { ViewContext, hookRoute } from '@c8y/ngx-components';\nimport { DeviceConfigurationGuard } from './device-configuration.guard';\nimport { DeviceConfigurationComponent } from './device-configuration.component';\nimport { ConfigurationPreviewComponent } from './configuration-preview.component';\nimport { ConfigurationFilterPipe } from './configuration-filter.pipe';\nimport { DeviceConfigurationService } from './device-configuration.service';\nimport { DeviceConfigurationListComponent } from './device-configuration-list.component';\nimport { TextBasedConfigurationComponent } from './text-based-configuration.component';\nimport { SaveToRepositoryComponent } from './save-to-repository.component';\nimport { SourceCodePreviewComponent } from './source-code-preview.component';\nimport { TabsModule } from 'ngx-bootstrap/tabs';\nimport { OperationDetailsModule } from '@c8y/ngx-components/operations/operation-details';\nimport { SharedRepositoryModule } from '@c8y/ngx-components/repository/shared';\n\n@NgModule({\n imports: [\n SharedRepositoryModule,\n OperationDetailsModule,\n TabsModule.forRoot(),\n DeviceConfigurationComponent,\n DeviceConfigurationListComponent,\n ConfigurationPreviewComponent,\n ConfigurationFilterPipe,\n SaveToRepositoryComponent,\n SourceCodePreviewComponent,\n TextBasedConfigurationComponent\n ],\n providers: [DeviceConfigurationService]\n})\nexport class ConfigurationRepositoryDeviceTabModule {\n static forRoot(): ModuleWithProviders<ConfigurationRepositoryDeviceTabModule> {\n return {\n ngModule: ConfigurationRepositoryDeviceTabModule,\n providers: [\n DeviceConfigurationGuard,\n hookRoute({\n context: ViewContext.Device,\n path: 'device-configuration',\n component: DeviceConfigurationComponent,\n label: gettext('Configuration'),\n icon: 'gears',\n priority: 600,\n canActivate: [DeviceConfigurationGuard]\n })\n ]\n };\n }\n}\n","import { Component, ViewChild } from '@angular/core';\nimport { NgForm, FormsModule } from '@angular/forms';\nimport { IManagedObject } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n AlertService,\n ForOfFilterPipe,\n PickedFiles,\n ValidationPattern,\n IconDirective,\n C8yTranslateDirective,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n TypeaheadComponent,\n ForOfDirective,\n ListItemComponent,\n HighlightComponent,\n FilePickerComponent,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport {\n ModalModel,\n RepositoryService,\n RepositoryType\n} from '@c8y/ngx-components/repository/shared';\nimport { isUndefined, uniqBy } from 'lodash-es';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { pipe } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { NgIf, NgClass } from '@angular/common';\n\n@Component({\n selector: 'c8y-configuration-detail',\n templateUrl: './configuration-detail.component.html',\n imports: [\n IconDirective,\n NgIf,\n C8yTranslateDirective,\n FormsModule,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n TypeaheadComponent,\n ForOfDirective,\n ListItemComponent,\n HighlightComponent,\n FilePickerComponent,\n NgClass,\n C8yTranslatePipe\n ]\n})\nexport class ConfigurationDetailComponent implements ModalModel {\n @ViewChild('configurationForm', { static: true }) configurationForm: NgForm;\n version: string;\n description: string;\n binary: { file?: File; url?: string } = {\n file: undefined,\n url: undefined\n };\n deviceType: string;\n configurationTypeMO: Partial<IManagedObject>;\n\n pattern = '';\n filterPipe: ForOfFilterPipe;\n configs;\n mo: Partial<IManagedObject> = {};\n saving = false;\n uploadChoice: 'uploadBinary' | 'uploadUrl' = 'uploadBinary';\n existingBinary: File;\n submitButtonTitle: string;\n textForConfigurationUrlPopover: string =\n gettext(`Path for binaries can vary depending on device agent implementation, for example:\n /configuration/binaries/configuration1.bin\n https://configuration/binary/123\n ftp://configuration/binary/123.tar.gz\n Configurations with external URLs only work with the configuration typed devices (file-based configuration), not with devices with a legacy configuration.\n `);\n\n result: Promise<void> = new Promise((resolve, reject) => {\n this._save = resolve;\n this._cancel = reject;\n });\n ValidationPattern = ValidationPattern;\n\n private _save;\n private _cancel;\n\n constructor(\n private repositoryService: RepositoryService,\n private bsModalRef: BsModalRef,\n private alert: AlertService\n ) {}\n\n async ngOnInit() {\n this.configs = await this.repositoryService.listRepositoryEntries(RepositoryType.CONFIGURATION);\n if (this.mo) {\n this.uploadChoice = this.binary.file ? 'uploadBinary' : 'uploadUrl';\n this.existingBinary = this.binary.file;\n this.configurationTypeMO = this.mo;\n }\n this.setPipe('');\n this.submitButtonTitle = this.mo.id\n ? gettext('Update configuration')\n : gettext('Add configuration');\n }\n\n cancel() {\n this.bsModalRef.hide();\n this._cancel();\n }\n\n setPipe(filterStr: string) {\n this.pattern = filterStr;\n this.filterPipe = pipe(\n map(data => uniqBy(data, 'configurationType')),\n map(data => {\n return data.filter(\n mo =>\n mo.configurationType &&\n mo.configurationType.toLowerCase().indexOf(filterStr.toLowerCase()) > -1\n );\n })\n );\n }\n\n onFile(dropped: PickedFiles) {\n this.configurationForm.form.markAsDirty();\n if (!isUndefined(dropped.url)) {\n this.binary = {\n url: dropped.url\n };\n return;\n } else if (dropped.droppedFiles) {\n this.binary = {\n file: dropped.droppedFiles[0].file\n };\n return;\n } else {\n this.binary = {\n file: undefined,\n url: undefined\n };\n }\n }\n\n async save() {\n try {\n this.saving = true;\n const { version, description, binary, deviceType } = this;\n if (this.existingBinary === this.binary.file) {\n binary.file = undefined;\n }\n await this.repositoryService.create(\n {\n version,\n description,\n binary,\n deviceType,\n configurationType: this.configurationTypeMO?.configurationType\n },\n RepositoryType.CONFIGURATION,\n this.mo\n );\n this.alert.success(\n this.mo.id ? gettext('Configuration updated.') : gettext('Configuration created.')\n );\n this.bsModalRef.hide();\n this._save();\n } catch (ex) {\n this.alert.addServerFailure(ex);\n this._cancel();\n } finally {\n this.saving = false;\n }\n }\n}\n","<div class=\"viewport-modal\">\n <div\n class=\"modal-header dialog-header\"\n id=\"configurationModalTitle\"\n >\n <i [c8yIcon]=\"'cogs'\"></i>\n <h4\n id=\"modal-title\"\n translate\n *ngIf=\"mo.id\"\n >\n Update configuration\n </h4>\n <h4\n id=\"modal-title\"\n translate\n *ngIf=\"!mo.id\"\n >\n Add configuration\n </h4>\n </div>\n\n <form\n class=\"d-contents\"\n #configurationForm=\"ngForm\"\n (ngSubmit)=\"configurationForm.form.valid && save()\"\n >\n <div\n class=\"modal-inner-scroll\"\n id=\"modal-body\"\n >\n <div\n class=\"modal-body\"\n id=\"configurationModalDescription\"\n >\n <c8y-form-group>\n <label translate>Name</label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} hosts\"\n name=\"version\"\n type=\"text\"\n autocomplete=\"off\"\n required\n maxlength=\"254\"\n [(ngModel)]=\"version\"\n [pattern]=\"ValidationPattern.rules.noWhiteSpaceOnly.pattern\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Device type</label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} c8y_Linux\"\n name=\"deviceType\"\n type=\"text\"\n autocomplete=\"off\"\n maxlength=\"254\"\n [(ngModel)]=\"deviceType\"\n [pattern]=\"ValidationPattern.rules.noWhiteSpaceOnly.pattern\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Description</label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g. Host configuration' | translate }} c8y_Linux\"\n name=\"description\"\n type=\"text\"\n autocomplete=\"off\"\n maxlength=\"254\"\n [(ngModel)]=\"description\"\n [pattern]=\"ValidationPattern.rules.noWhiteSpaceOnly.pattern\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Configuration type</label>\n <c8y-typeahead\n placeholder=\"{{ 'e.g.' | translate }} ssh\"\n name=\"confType\"\n [(ngModel)]=\"configurationTypeMO\"\n maxlength=\"254\"\n (onSearch)=\"setPipe($event)\"\n displayProperty=\"configurationType\"\n >\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n *c8yFor=\"let config of configs; pipe: filterPipe; notFound: notFoundTemplate\"\n (click)=\"configurationTypeMO = config; setPipe('')\"\n [active]=\"configurationTypeMO === config\"\n >\n <c8y-highlight\n [text]=\"config.configurationType || '--'\"\n [pattern]=\"pattern\"\n ></c8y-highlight>\n </c8y-li>\n <ng-template #notFoundTemplate>\n <c8y-li\n class=\"bg-level-2 p-8\"\n *ngIf=\"pattern.length > 0\"\n >\n <span translate>No match found.</span>\n <button\n class=\"btn btn-primary btn-xs m-l-8\"\n title=\"{{ 'Add new`configuration type`' | translate }}\"\n type=\"button\"\n translate\n >\n Add new`configuration type`\n </button>\n </c8y-li>\n </ng-template>\n </c8y-typeahead>\n </c8y-form-group>\n\n <c8y-form-group>\n <div\n class=\"legend form-block m-t-40\"\n translate\n >\n Configuration file\n </div>\n <c8y-file-picker\n [maxAllowedFiles]=\"1\"\n (onFilesPicked)=\"onFile($event)\"\n [uploadChoice]=\"uploadChoice\"\n [fileUrl]=\"binary.url\"\n [fileBinary]=\"binary.file\"\n [fileUrlPopover]=\"textForConfigurationUrlPopover\"\n ></c8y-file-picker>\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"cancel()\"\n [disabled]=\"saving\"\n >\n <span translate>Cancel</span>\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ submitButtonTitle | translate }}\"\n type=\"submit\"\n [ngClass]=\"{ 'btn-pending': saving }\"\n [disabled]=\"\n !configurationForm.valid ||\n configurationForm.pristine ||\n (!binary?.url?.trim() && !binary?.file) ||\n saving\n \"\n >\n {{ submitButtonTitle | translate }}\n </button>\n </div>\n </form>\n</div>\n","import { Component, EventEmitter, OnInit, ViewChild } from '@angular/core';\nimport { IManagedObject, InventoryBinaryService, IResultList } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n ActionControl,\n AlertService,\n BuiltInActionType,\n Column,\n DataGridService,\n DataSourceModifier,\n FilterInputComponent,\n ModalService,\n ServerSideDataCallback,\n ServerSideDataResult,\n Status,\n TitleComponent,\n C8yTranslateDirective,\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n ActionBarItemComponent,\n IconDirective,\n HelpComponent,\n DataGridComponent,\n EmptyStateContextDirective,\n EmptyStateComponent,\n GuideDocsComponent,\n GuideHrefDirective,\n ColumnDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport {\n DescriptionGridColumn,\n DeviceTypeGridColumn,\n FileGridColumn,\n RepositoryItemNameGridColumn,\n RepositoryService,\n RepositoryType,\n TypeGridColumn\n} from '@c8y/ngx-components/repository/shared';\nimport { TranslateService } from '@ngx-translate/core';\nimport { saveAs } from 'file-saver';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { ConfigurationDetailComponent } from './configuration-detail.component';\nimport { NgIf, NgFor, AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'c8y-configuration-list',\n templateUrl: './configuration-list.component.html',\n imports: [\n TitleComponent,\n C8yTranslateDirective,\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n ActionBarItemComponent,\n IconDirective,\n HelpComponent,\n DataGridComponent,\n EmptyStateContextDirective,\n EmptyStateComponent,\n NgIf,\n GuideDocsComponent,\n GuideHrefDirective,\n NgFor,\n ColumnDirective,\n AsyncPipe,\n C8yTranslatePipe\n ]\n})\nexport class ConfigurationListComponent implements OnInit {\n @ViewChild(FilterInputComponent, { static: false }) filter: FilterInputComponent;\n refresh$: EventEmitter<void> = new EventEmitter();\n pagination = {\n pageSize: 50,\n currentPage: 1\n };\n noResultsMessage = gettext('No results to display.');\n noDataMessage = gettext('There are no configuration snapshots defined.');\n noResultsSubtitle = gettext('Refine your search terms or check your spelling.');\n noDataSubtitle = gettext('Add a configuration snapshot first.');\n actionControls: ActionControl[] = [];\n columns: Column[] = [\n new RepositoryItemNameGridColumn({\n filterLabel: gettext('Filter configurations by name'),\n placeholder: gettext('SSH'),\n callback: this.edit.bind(this)\n }),\n new DescriptionGridColumn({\n filterLabel: gettext('Filter configurations by description'),\n placeholder: gettext('SSH configuration')\n }),\n new FileGridColumn(),\n new DeviceTypeGridColumn({\n path: 'deviceType',\n filterLabel: gettext('Filter configurations by device type')\n }),\n new TypeGridColumn({\n header: gettext('Configuration type'),\n filterLabel: gettext('Filter by configuration type'),\n example: 'ssh',\n path: 'configurationType',\n repositoryType: RepositoryType.CONFIGURATION\n })\n ];\n size$: Promise<number>;\n sizeRequestDone = false;\n serverSideDataCallback: ServerSideDataCallback;\n\n private readonly DELETED_SUCCESS_MSG = gettext('Configuration deleted.');\n\n constructor(\n private alert: AlertService,\n private gridService: DataGridService,\n private repositoryService: RepositoryService,\n private bsModalService: BsModalService,\n private modalService: ModalService,\n private translateService: TranslateService,\n private inventoryBinaryService: InventoryBinaryService\n ) {\n this.serverSideDataCallback = this.onDataSourceModifier.bind(this);\n }\n\n ngOnInit() {\n this.actionControls.push({\n type: BuiltInActionType.Edit,\n callback: this.edit.bind(this)\n });\n this.actionControls.push({\n type: BuiltInActionType.Delete,\n callback: this.delete.bind(this)\n });\n this.actionControls.push({\n type: 'download',\n icon: 'download',\n text: gettext('Download'),\n showIf: row => this.isBinaryFile(row as unknown as IManagedObject),\n callback: this.download.bind(this)\n });\n }\n\n async onDataSourceModifier(\n dataSourceModifier: DataSourceModifier\n ): Promise<ServerSideDataResult> {\n const dataRequest: Promise<IResultList<IManagedObject>> =\n this.repositoryService.listRepositoryEntries(RepositoryType.CONFIGURATION, {\n query: this.gridService.getQueryObj(dataSourceModifier.columns),\n skipDefaultOrder: true,\n params: {\n pageSize: dataSourceModifier.pagination.pageSize,\n currentPage: dataSourceModifier.pagination.currentPage,\n withTotalPages: true\n }\n });\n\n const filtererdSizeRequest: Promise<number> = this.repositoryService\n .listRepositoryEntries(RepositoryType.CONFIGURATION, {\n query: this.gridService.getQueryObj(dataSourceModifier.columns),\n skipDefaultOrder: true,\n params: { pageSize: 1 }\n })\n .then(response => response?.paging?.totalPages);\n\n this.size$ = this.repositoryService\n .listRepositoryEntries(RepositoryType.CONFIGURATION, {\n skipDefaultOrder: true,\n params: { pageSize: 1 }\n })\n .then(response => {\n this.sizeRequestDone = true;\n return response?.paging?.totalPages;\n });\n\n const [dataResponse, size, filteredSize] = await Promise.all([\n dataRequest,\n this.size$,\n filtererdSizeRequest\n ]);\n\n const { res, data, paging } = dataResponse;\n\n const serverSideDataResult: ServerSideDataResult = {\n res,\n data,\n paging,\n filteredSize,\n size\n };\n\n return serverSideDataResult;\n }\n\n async add() {\n try {\n await (\n this.bsModalService.show(ConfigurationDetailComponent, {\n class: 'modal-sm',\n ariaDescribedby: 'configurationModalDescription',\n ariaLabelledBy: 'configurationModalTitle',\n ignoreBackdropClick: true,\n keyboard: false\n }).content as ConfigurationDetailComponent\n ).result;\n this.refresh$.next();\n } catch (ex) {\n // intended empty\n }\n }\n\n async edit(configuration: IManagedObject) {\n const fileBinary: File = await this.repositoryService.getBinaryFile(configuration.url, {\n allowExternal: false\n });\n try {\n const modal = this.bsModalService.show(ConfigurationDetailComponent, {\n class: 'modal-sm',\n ariaDescribedby: 'configurationModalDescription',\n ariaLabelledBy: 'configurationModalTitle',\n ignoreBackdropClick: true,\n keyboard: false,\n\n initialState: {\n version: configuration.name,\n deviceType: configuration.deviceType,\n description: configuration.description,\n binary: { file: fileBinary, url: configuration.url }\n }\n }).content as ConfigurationDetailComponent;\n modal.mo = configuration;\n await modal.result;\n this.refresh$.next();\n } catch (ex) {\n // intended empty\n }\n }\n\n isBinaryFile(configuration: IManagedObject) {\n return configuration.url\n ? !!this.inventoryBinaryService.getIdFromUrl(configuration.url)\n : false;\n }\n\n async download(configuration: IManagedObject) {\n const fileBinary: File = await this.repositoryService.getBinaryFile(configuration.url, {\n allowExternal: false\n });\n saveAs(fileBinary);\n }\n\n async delete(configuration: IManagedObject) {\n try {\n const title = gettext('Delete configuration snapshot');\n const confirmationText = gettext(\n 'You are about to delete the configuration snapshot {{ name }}.'\n );\n const hint = gettext('This operation is irreversible.');\n const proceed = gettext('Do you want to proceed?');\n const body = [\n this.translateService.instant(confirmationText, {\n name: configuration.name\n }),\n this.translateService.instant(hint),\n this.translateService.instant(proceed)\n ].join(' ');\n const labels = {\n ok: gettext('Delete')\n };\n await this.modalService.confirm(title, body, Status.DANGER, labels);\n await this.repositoryService.delete(configuration);\n this.alert.success(this.DELETED_SUCCESS_MSG);\n this.refresh$.next();\n } catch (ex) {\n if (ex) {\n this.alert.addServerFailure(ex);\n }\n }\n }\n\n trackByName(_index, column: Column): string {\n return column.name;\n }\n}\n","<c8y-title>\n <span\n class=\"m-r-4\"\n translate\n >\n Configuration repository\n </span>\n <small>\n {{ size$ | async }}\n <span translate>snapshots</span>\n </small>\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n icon=\"c8y-management\"\n label=\"{{ 'Management' | translate }}\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n icon=\"gears\"\n label=\"{{ 'Configuration repository' | translate }}\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add configuration snapshot' | translate }}\"\n type=\"button\"\n (click)=\"add()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add configuration snapshot' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/device-management-application/managing-device-data/#managing-configurations\"\n></c8y-help>\n\n<div class=\"content-fullpage border-top border-bottom\">\n <c8y-data-grid\n [title]=\"'Configurations' | translate\"\n [refresh]=\"refresh$\"\n [pagination]=\"pagination\"\n [columns]=\"columns\"\n [actionControls]=\"actionControls\"\n [infiniteScroll]=\"'auto'\"\n [serverSideDataCallback]=\"serverSideDataCallback\"\n >\n <c8y-ui-empty-state\n [icon]=\"stats?.size > 0 ? 'search' : 'gears'\"\n [title]=\"stats?.size > 0 ? (noResultsMessage | translate) : (noDataMessage | translate)\"\n [subtitle]=\"stats?.size > 0 ? (noResultsSubtitle | translate) : (noDataSubtitle | translate)\"\n *emptyStateContext=\"let stats\"\n [horizontal]=\"stats?.size > 0\"\n >\n <ng-container *ngIf=\"stats?.size === 0\">\n <p>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add configuration snapshot' | translate }}\"\n type=\"button\"\n (click)=\"add()\"\n >\n {{ 'Add configuration snapshot' | translate }}\n </button>\n </p>\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a\n c8y-guide-href=\"/docs/device-management-application/managing-device-data/#managing-configurations\"\n >\n user documentation\n </a>\n .\n </small>\n </p>\n </ng-container>\n </c8y-ui-empty-state>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByName\">\n <c8y-column [name]=\"column.name\"></c8y-column>\n </ng-container>\n </c8y-data-grid>\n</div>\n","import { Injectable } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { NavigatorNode, NavigatorNodeFactory } from '@c8y/ngx-components';\n\n@Injectable()\nexport class ConfigurationRepositoryNavigationFactory implements NavigatorNodeFactory {\n node: NavigatorNode;\n\n constructor() {\n this.node = new NavigatorNode({\n label: gettext('Configuration repository'),\n path: 'configuration',\n icon: 'gears',\n parent: gettext('Management'),\n priority: 800\n });\n }\n\n get(): NavigatorNode {\n return this.node;\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { ConfigurationListComponent } from './configuration-list.component';\nimport { ConfigurationDetailComponent } from './configuration-detail.component';\nimport { hookNavigator, hookRoute } from '@c8y/ngx-components';\nimport { ConfigurationRepositoryNavigationFactory } from './configuration-repository-navigation-factory';\nimport { SharedRepositoryModule } from '@c8y/ngx-components/repository/shared';\n\n@NgModule({\n imports: [SharedRepositoryModule, ConfigurationListComponent, ConfigurationDetailComponent]\n})\nexport class ConfigurationRepositoryListModule {\n static forRoot(): ModuleWithProviders<ConfigurationRepositoryListModule> {\n return {\n ngModule: ConfigurationRepositoryListModule,\n providers: [\n hookNavigator(ConfigurationRepositoryNavigationFactory),\n hookRoute({\n path: 'configuration',\n component: ConfigurationListComponent\n })\n ]\n };\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CoreModule, FormsModule } from '@c8y/ngx-components';\nimport { ConfigurationRepositoryDeviceTabModule } from './device-tab/configuration-repository-device-tab.module';\nimport { ConfigurationRepositoryListModule } from './list/configuration-repository-list.module';\n\n@NgModule({\n imports: [\n CoreModule,\n FormsModule,\n ConfigurationRepositoryListModule.forRoot(),\n ConfigurationRepositoryDeviceTabModule.forRoot()\n ]\n})\nexport class ConfigurationRepositoryModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i4.DeviceConfigurationService","i5","i6","i1.DeviceConfigurationService","i1","i4","i3","i2.DeviceConfigurationService","i2","FormsModule","i1.ConfigurationRepositoryListModule","i2.ConfigurationRepositoryDeviceTabModule"],"mappings":"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"}
@@ -3,8 +3,9 @@ import { Component, Injectable, NgModule, EventEmitter, ViewChild, Output } from
3
3
  import * as i1 from '@angular/router';
4
4
  import * as i3 from '@c8y/client';
5
5
  import { OperationStatus } from '@c8y/client';
6
+ import { gettext } from '@c8y/ngx-components/gettext';
6
7
  import * as i4 from '@c8y/ngx-components';
7
- import { gettext, ModalSelectionMode, C8yTranslateDirective, IconDirective, ListGroupComponent, ListItemComponent, ListItemIconComponent, ListItemBodyComponent, ProductExperienceDirective, C8yTranslatePipe, hookRoute, ViewContext, FormGroupComponent, TypeaheadComponent, ForOfDirective, HighlightComponent, MessagesComponent, MessageDirective, RequiredInputPlaceholderDirective, FilePickerComponent, ValidationPattern, Status, TitleComponent, BreadcrumbComponent, BreadcrumbItemComponent, ActionBarItemComponent, EmptyStateComponent, ListItemCollapseComponent, memoize, BuiltInActionType, HelpComponent, DataGridComponent, EmptyStateContextDirective, ColumnDirective, NavigatorNode, hookNavigator } from '@c8y/ngx-components';
8
+ import { ModalSelectionMode, C8yTranslateDirective, IconDirective, ListGroupComponent, ListItemComponent, ListItemIconComponent, ListItemBodyComponent, ProductExperienceDirective, C8yTranslatePipe, hookRoute, ViewContext, FormGroupComponent, TypeaheadComponent, ForOfDirective, HighlightComponent, MessagesComponent, MessageDirective, RequiredInputPlaceholderDirective, FilePickerComponent, ValidationPattern, Status, TitleComponent, BreadcrumbComponent, BreadcrumbItemComponent, ActionBarItemComponent, EmptyStateComponent, ListItemCollapseComponent, memoize, BuiltInActionType, HelpComponent, DataGridComponent, EmptyStateContextDirective, ColumnDirective, NavigatorNode, hookNavigator } from '@c8y/ngx-components';
8
9
  import * as i2 from '@c8y/ngx-components/repository/shared';
9
10
  import { PRODUCT_EXPERIENCE_REPOSITORY_SHARED, RepositoryType, RepositorySelectModalComponent, SharedRepositoryModule, FileDownloadComponent, RepositoryItemNameGridColumn, DescriptionGridColumn, DeviceTypeGridColumn, VersionsGridColumn } from '@c8y/ngx-components/repository/shared';
10
11
  import { isEmpty, get, assign, has, indexOf, isUndefined, property } from 'lodash-es';