@c8y/ngx-components 1021.67.0 → 1021.71.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. package/branding/shared/lazy/branding-import-modal/branding-import-modal.component.d.ts.map +1 -1
  2. package/core/beta-feature/beta-feature-show-notification.service.d.ts +10 -0
  3. package/core/beta-feature/beta-feature-show-notification.service.d.ts.map +1 -0
  4. package/core/beta-feature/beta-feature.providers.d.ts +3 -0
  5. package/core/beta-feature/beta-feature.providers.d.ts.map +1 -0
  6. package/core/beta-feature/beta-preview-button.component.d.ts +17 -0
  7. package/core/beta-feature/beta-preview-button.component.d.ts.map +1 -0
  8. package/core/beta-feature/beta-preview-drawer.factory.d.ts +19 -0
  9. package/core/beta-feature/beta-preview-drawer.factory.d.ts.map +1 -0
  10. package/core/beta-feature/beta-preview.component.d.ts +25 -0
  11. package/core/beta-feature/beta-preview.component.d.ts.map +1 -0
  12. package/core/beta-feature/beta-preview.model.d.ts +24 -0
  13. package/core/beta-feature/beta-preview.model.d.ts.map +1 -0
  14. package/core/beta-feature/beta-preview.service.d.ts +47 -0
  15. package/core/beta-feature/beta-preview.service.d.ts.map +1 -0
  16. package/core/beta-feature/feature-cache.service.d.ts +26 -0
  17. package/core/beta-feature/feature-cache.service.d.ts.map +1 -0
  18. package/core/beta-feature/feature-state.pipe.d.ts +12 -0
  19. package/core/beta-feature/feature-state.pipe.d.ts.map +1 -0
  20. package/core/beta-feature/index.d.ts +7 -0
  21. package/core/beta-feature/index.d.ts.map +1 -0
  22. package/core/bottom-drawer/bottom-drawer-ref.d.ts.map +1 -1
  23. package/core/bottom-drawer/bottom-drawer.component.d.ts +1 -0
  24. package/core/bottom-drawer/bottom-drawer.component.d.ts.map +1 -1
  25. package/core/bottom-drawer/bottom-drawer.model.d.ts +4 -0
  26. package/core/bottom-drawer/bottom-drawer.model.d.ts.map +1 -1
  27. package/core/common/ApplicationOptions.d.ts +8 -0
  28. package/core/common/ApplicationOptions.d.ts.map +1 -1
  29. package/core/common/bytes.pipe.d.ts +26 -10
  30. package/core/common/bytes.pipe.d.ts.map +1 -1
  31. package/core/common/index.d.ts +1 -0
  32. package/core/common/index.d.ts.map +1 -1
  33. package/core/common/notification-display.service.d.ts +19 -0
  34. package/core/common/notification-display.service.d.ts.map +1 -0
  35. package/core/core.module.d.ts.map +1 -1
  36. package/core/header/header-bar/header-bar.component.d.ts +1 -0
  37. package/core/header/header-bar/header-bar.component.d.ts.map +1 -1
  38. package/core/header/header.service.d.ts +4 -1
  39. package/core/header/header.service.d.ts.map +1 -1
  40. package/core/index.d.ts +1 -0
  41. package/core/index.d.ts.map +1 -1
  42. package/datapoint-explorer/datapoint-explorer-navigation-factory.d.ts +10 -0
  43. package/datapoint-explorer/datapoint-explorer-navigation-factory.d.ts.map +1 -0
  44. package/datapoint-explorer/datapoint-explorer-route-factory.d.ts +10 -0
  45. package/datapoint-explorer/datapoint-explorer-route-factory.d.ts.map +1 -0
  46. package/datapoint-explorer/datapoint-explorer.module.d.ts.map +1 -1
  47. package/echart/charts.component.d.ts +14 -3
  48. package/echart/charts.component.d.ts.map +1 -1
  49. package/esm2022/branding/shared/lazy/branding-import-modal/branding-import-modal.component.mjs +4 -7
  50. package/esm2022/core/beta-feature/beta-feature-show-notification.service.mjs +17 -0
  51. package/esm2022/core/beta-feature/beta-feature.providers.mjs +9 -0
  52. package/esm2022/core/beta-feature/beta-preview-button.component.mjs +53 -0
  53. package/esm2022/core/beta-feature/beta-preview-drawer.factory.mjs +52 -0
  54. package/esm2022/core/beta-feature/beta-preview.component.mjs +64 -0
  55. package/esm2022/core/beta-feature/beta-preview.model.mjs +2 -0
  56. package/esm2022/core/beta-feature/beta-preview.service.mjs +114 -0
  57. package/esm2022/core/beta-feature/feature-cache.service.mjs +48 -0
  58. package/esm2022/core/beta-feature/feature-state.pipe.mjs +22 -0
  59. package/esm2022/core/beta-feature/index.mjs +7 -0
  60. package/esm2022/core/bottom-drawer/bottom-drawer-ref.mjs +4 -1
  61. package/esm2022/core/bottom-drawer/bottom-drawer.component.mjs +4 -3
  62. package/esm2022/core/bottom-drawer/bottom-drawer.model.mjs +1 -1
  63. package/esm2022/core/common/ApplicationOptions.mjs +1 -1
  64. package/esm2022/core/common/bytes.pipe.mjs +47 -18
  65. package/esm2022/core/common/index.mjs +2 -1
  66. package/esm2022/core/common/notification-display.service.mjs +2 -0
  67. package/esm2022/core/core.module.mjs +4 -2
  68. package/esm2022/core/data-grid/data-grid.component.mjs +3 -3
  69. package/esm2022/core/docs/legal-notices-outlet/legal-notices-outlet.component.mjs +3 -3
  70. package/esm2022/core/header/header-bar/header-bar.component.mjs +4 -3
  71. package/esm2022/core/header/header.service.mjs +12 -6
  72. package/esm2022/core/index.mjs +2 -1
  73. package/esm2022/core/user/user-details-drawer/user-details-drawer.component.mjs +3 -3
  74. package/esm2022/core/version/version-list/version-list.component.mjs +3 -3
  75. package/esm2022/datapoint-explorer/datapoint-explorer-navigation-factory.mjs +31 -0
  76. package/esm2022/datapoint-explorer/datapoint-explorer-route-factory.mjs +37 -0
  77. package/esm2022/datapoint-explorer/datapoint-explorer.module.mjs +22 -48
  78. package/esm2022/echart/charts.component.mjs +50 -3
  79. package/esm2022/messaging-management/api/model/backlogQuota.mjs +2 -0
  80. package/esm2022/messaging-management/api/model/namespace.mjs +2 -0
  81. package/esm2022/messaging-management/api/model/namespaceDetails.mjs +2 -0
  82. package/esm2022/messaging-management/api/model/namespaceList.mjs +2 -0
  83. package/esm2022/messaging-management/api/model/namespacePolicies.mjs +2 -0
  84. package/esm2022/messaging-management/api/model/namespacePublishers.mjs +2 -0
  85. package/esm2022/messaging-management/api/model/namespaceSubscribers.mjs +2 -0
  86. package/esm2022/messaging-management/api/model/namespaceTopics.mjs +2 -0
  87. package/esm2022/messaging-management/api/model/pageStatistics.mjs +2 -0
  88. package/esm2022/messaging-management/api/model/pageable.mjs +2 -0
  89. package/esm2022/messaging-management/api/model/sortable.mjs +2 -0
  90. package/esm2022/messaging-management/api/model/subscriber.mjs +2 -0
  91. package/esm2022/messaging-management/api/model/subscriberFilters.mjs +2 -0
  92. package/esm2022/messaging-management/api/model/subscriberList.mjs +2 -0
  93. package/esm2022/messaging-management/api/model/subscriberToDelete.mjs +2 -0
  94. package/esm2022/messaging-management/api/model/topic.mjs +2 -0
  95. package/esm2022/messaging-management/api/model/topicDetailFilters.mjs +2 -0
  96. package/esm2022/messaging-management/api/model/topicList.mjs +2 -0
  97. package/esm2022/messaging-management/api/model/topicListFilters.mjs +2 -0
  98. package/esm2022/messaging-management/api/model/topicType.mjs +9 -0
  99. package/esm2022/messaging-management/api/services/messaging-namespaces.service.mjs +83 -0
  100. package/esm2022/messaging-management/api/services/messaging-subscribers.service.mjs +55 -0
  101. package/esm2022/messaging-management/api/services/messaging-topics.service.mjs +48 -0
  102. package/esm2022/messaging-management/c8y-ngx-components-messaging-management.mjs +5 -0
  103. package/esm2022/messaging-management/constants.mjs +4 -0
  104. package/esm2022/messaging-management/index.mjs +2 -0
  105. package/esm2022/messaging-management/messaging/namespace-list/namespace-item/namespace-item-card/namespace-item-card.component.mjs +43 -0
  106. package/esm2022/messaging-management/messaging/namespace-list/namespace-item/namespace-item.component.mjs +36 -0
  107. package/esm2022/messaging-management/messaging/namespace-list/namespace-list.component.mjs +51 -0
  108. package/esm2022/messaging-management/messaging/shared/usage/usage.component.mjs +68 -0
  109. package/esm2022/messaging-management/messaging/topic/topic-list-view.component.mjs +81 -0
  110. package/esm2022/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-data-grid.service.mjs +220 -0
  111. package/esm2022/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-view.component.mjs +137 -0
  112. package/esm2022/messaging-management/messaging/topic/topics-data-grid.service.mjs +113 -0
  113. package/esm2022/messaging-management/messaging-management.guard.mjs +40 -0
  114. package/esm2022/messaging-management/messaging-management.module.mjs +72 -0
  115. package/esm2022/messaging-management/navigator/messaging-navigator-factory.mjs +55 -0
  116. package/esm2022/messaging-management/navigator/topic-details-tab.factory.mjs +33 -0
  117. package/esm2022/messaging-management/utils/backlog-quota-limit.pipe.mjs +32 -0
  118. package/esm2022/messaging-management/utils/namespace-props.mjs +23 -0
  119. package/esm2022/messaging-management/utils/time-to-live.pipe.mjs +122 -0
  120. package/esm2022/operations/device-selector/device-selector.component.mjs +5 -1
  121. package/esm2022/register-device/bulk/bulk-device-registration-modal.component.mjs +8 -10
  122. package/esm2022/register-device/general/general-device-registration.component.mjs +8 -10
  123. package/esm2022/trusted-certificates/list/trusted-certificate-list.component.mjs +10 -12
  124. package/esm2022/upgrade/ng1/downgraded.services.mjs +3 -2
  125. package/esm2022/upgrade/ng1/index.mjs +3 -2
  126. package/esm2022/widgets/cockpit-exports/index.mjs +2 -2
  127. package/esm2022/widgets/definitions/datapoints-graph/datapoint-graph-widget-factory.mjs +56 -0
  128. package/esm2022/widgets/definitions/datapoints-graph/index.mjs +12 -29
  129. package/esm2022/widgets/definitions/index.mjs +3 -2
  130. package/esm2022/widgets/implementations/datapoints-graph/datapoints-graph-view/datapoints-graph-widget-view.component.mjs +18 -3
  131. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +3 -6
  132. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
  133. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +81 -48
  134. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs.map +1 -1
  135. package/fesm2022/c8y-ngx-components-echart.mjs +49 -2
  136. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
  137. package/fesm2022/c8y-ngx-components-messaging-management.mjs +1225 -0
  138. package/fesm2022/c8y-ngx-components-messaging-management.mjs.map +1 -0
  139. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs +4 -0
  140. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs.map +1 -1
  141. package/fesm2022/c8y-ngx-components-register-device.mjs +10 -14
  142. package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
  143. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +18 -20
  144. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  145. package/fesm2022/c8y-ngx-components-upgrade.mjs +3 -1
  146. package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
  147. package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs +1 -1
  148. package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs.map +1 -1
  149. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +65 -28
  150. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs.map +1 -1
  151. package/fesm2022/c8y-ngx-components-widgets-definitions.mjs +2 -1
  152. package/fesm2022/c8y-ngx-components-widgets-definitions.mjs.map +1 -1
  153. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +17 -2
  154. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  155. package/fesm2022/c8y-ngx-components.mjs +396 -39
  156. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  157. package/locales/de.po +272 -5
  158. package/locales/es.po +271 -4
  159. package/locales/fr.po +272 -5
  160. package/locales/ja_JP.po +272 -5
  161. package/locales/ko.po +271 -4
  162. package/locales/locales.pot +271 -8
  163. package/locales/nl.po +271 -4
  164. package/locales/pl.po +271 -4
  165. package/locales/pt_BR.po +272 -5
  166. package/locales/zh_CN.po +271 -4
  167. package/locales/zh_TW.po +272 -5
  168. package/messaging-management/api/model/backlogQuota.d.ts +14 -0
  169. package/messaging-management/api/model/backlogQuota.d.ts.map +1 -0
  170. package/messaging-management/api/model/namespace.d.ts +13 -0
  171. package/messaging-management/api/model/namespace.d.ts.map +1 -0
  172. package/messaging-management/api/model/namespaceDetails.d.ts +8 -0
  173. package/messaging-management/api/model/namespaceDetails.d.ts.map +1 -0
  174. package/messaging-management/api/model/namespaceList.d.ts +5 -0
  175. package/messaging-management/api/model/namespaceList.d.ts.map +1 -0
  176. package/messaging-management/api/model/namespacePolicies.d.ts +10 -0
  177. package/messaging-management/api/model/namespacePolicies.d.ts.map +1 -0
  178. package/messaging-management/api/model/namespacePublishers.d.ts +4 -0
  179. package/messaging-management/api/model/namespacePublishers.d.ts.map +1 -0
  180. package/messaging-management/api/model/namespaceSubscribers.d.ts +4 -0
  181. package/messaging-management/api/model/namespaceSubscribers.d.ts.map +1 -0
  182. package/messaging-management/api/model/namespaceTopics.d.ts +5 -0
  183. package/messaging-management/api/model/namespaceTopics.d.ts.map +1 -0
  184. package/messaging-management/api/model/pageStatistics.d.ts +12 -0
  185. package/messaging-management/api/model/pageStatistics.d.ts.map +1 -0
  186. package/messaging-management/api/model/pageable.d.ts +8 -0
  187. package/messaging-management/api/model/pageable.d.ts.map +1 -0
  188. package/messaging-management/api/model/sortable.d.ts +6 -0
  189. package/messaging-management/api/model/sortable.d.ts.map +1 -0
  190. package/messaging-management/api/model/subscriber.d.ts +28 -0
  191. package/messaging-management/api/model/subscriber.d.ts.map +1 -0
  192. package/messaging-management/api/model/subscriberFilters.d.ts +13 -0
  193. package/messaging-management/api/model/subscriberFilters.d.ts.map +1 -0
  194. package/messaging-management/api/model/subscriberList.d.ts +7 -0
  195. package/messaging-management/api/model/subscriberList.d.ts.map +1 -0
  196. package/messaging-management/api/model/subscriberToDelete.d.ts +12 -0
  197. package/messaging-management/api/model/subscriberToDelete.d.ts.map +1 -0
  198. package/messaging-management/api/model/topic.d.ts +52 -0
  199. package/messaging-management/api/model/topic.d.ts.map +1 -0
  200. package/messaging-management/api/model/topicDetailFilters.d.ts +9 -0
  201. package/messaging-management/api/model/topicDetailFilters.d.ts.map +1 -0
  202. package/messaging-management/api/model/topicList.d.ts +7 -0
  203. package/messaging-management/api/model/topicList.d.ts.map +1 -0
  204. package/messaging-management/api/model/topicListFilters.d.ts +12 -0
  205. package/messaging-management/api/model/topicListFilters.d.ts.map +1 -0
  206. package/messaging-management/api/model/topicType.d.ts +8 -0
  207. package/messaging-management/api/model/topicType.d.ts.map +1 -0
  208. package/messaging-management/api/services/messaging-namespaces.service.d.ts +52 -0
  209. package/messaging-management/api/services/messaging-namespaces.service.d.ts.map +1 -0
  210. package/messaging-management/api/services/messaging-subscribers.service.d.ts +30 -0
  211. package/messaging-management/api/services/messaging-subscribers.service.d.ts.map +1 -0
  212. package/messaging-management/api/services/messaging-topics.service.d.ts +21 -0
  213. package/messaging-management/api/services/messaging-topics.service.d.ts.map +1 -0
  214. package/messaging-management/c8y-ngx-components-messaging-management.d.ts.map +1 -0
  215. package/messaging-management/constants.d.ts +4 -0
  216. package/messaging-management/constants.d.ts.map +1 -0
  217. package/messaging-management/index.d.ts +2 -0
  218. package/messaging-management/index.d.ts.map +1 -0
  219. package/messaging-management/messaging/namespace-list/namespace-item/namespace-item-card/namespace-item-card.component.d.ts +29 -0
  220. package/messaging-management/messaging/namespace-list/namespace-item/namespace-item-card/namespace-item-card.component.d.ts.map +1 -0
  221. package/messaging-management/messaging/namespace-list/namespace-item/namespace-item.component.d.ts +15 -0
  222. package/messaging-management/messaging/namespace-list/namespace-item/namespace-item.component.d.ts.map +1 -0
  223. package/messaging-management/messaging/namespace-list/namespace-list.component.d.ts +17 -0
  224. package/messaging-management/messaging/namespace-list/namespace-list.component.d.ts.map +1 -0
  225. package/messaging-management/messaging/shared/usage/usage.component.d.ts +40 -0
  226. package/messaging-management/messaging/shared/usage/usage.component.d.ts.map +1 -0
  227. package/messaging-management/messaging/topic/topic-list-view.component.d.ts +38 -0
  228. package/messaging-management/messaging/topic/topic-list-view.component.d.ts.map +1 -0
  229. package/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-data-grid.service.d.ts +21 -0
  230. package/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-data-grid.service.d.ts.map +1 -0
  231. package/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-view.component.d.ts +52 -0
  232. package/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-view.component.d.ts.map +1 -0
  233. package/messaging-management/messaging/topic/topics-data-grid.service.d.ts +13 -0
  234. package/messaging-management/messaging/topic/topics-data-grid.service.d.ts.map +1 -0
  235. package/messaging-management/messaging-management.guard.d.ts +12 -0
  236. package/messaging-management/messaging-management.guard.d.ts.map +1 -0
  237. package/messaging-management/messaging-management.module.d.ts +7 -0
  238. package/messaging-management/messaging-management.module.d.ts.map +1 -0
  239. package/messaging-management/navigator/messaging-navigator-factory.d.ts +18 -0
  240. package/messaging-management/navigator/messaging-navigator-factory.d.ts.map +1 -0
  241. package/messaging-management/navigator/topic-details-tab.factory.d.ts +15 -0
  242. package/messaging-management/navigator/topic-details-tab.factory.d.ts.map +1 -0
  243. package/messaging-management/utils/backlog-quota-limit.pipe.d.ts +13 -0
  244. package/messaging-management/utils/backlog-quota-limit.pipe.d.ts.map +1 -0
  245. package/messaging-management/utils/namespace-props.d.ts +10 -0
  246. package/messaging-management/utils/namespace-props.d.ts.map +1 -0
  247. package/messaging-management/utils/time-to-live.pipe.d.ts +16 -0
  248. package/messaging-management/utils/time-to-live.pipe.d.ts.map +1 -0
  249. package/operations/device-selector/device-selector.component.d.ts.map +1 -1
  250. package/package.json +1 -1
  251. package/register-device/bulk/bulk-device-registration-modal.component.d.ts +5 -5
  252. package/register-device/bulk/bulk-device-registration-modal.component.d.ts.map +1 -1
  253. package/register-device/general/general-device-registration.component.d.ts +5 -5
  254. package/register-device/general/general-device-registration.component.d.ts.map +1 -1
  255. package/trusted-certificates/list/trusted-certificate-list.component.d.ts +4 -4
  256. package/trusted-certificates/list/trusted-certificate-list.component.d.ts.map +1 -1
  257. package/upgrade/ng1/downgraded.services.d.ts +1 -0
  258. package/upgrade/ng1/downgraded.services.d.ts.map +1 -1
  259. package/upgrade/ng1/index.d.ts.map +1 -1
  260. package/widgets/cockpit-exports/index.d.ts +1 -1
  261. package/widgets/definitions/datapoints-graph/datapoint-graph-widget-factory.d.ts +11 -0
  262. package/widgets/definitions/datapoints-graph/datapoint-graph-widget-factory.d.ts.map +1 -0
  263. package/widgets/definitions/datapoints-graph/index.d.ts +0 -28
  264. package/widgets/definitions/datapoints-graph/index.d.ts.map +1 -1
  265. package/widgets/definitions/index.d.ts +2 -1
  266. package/widgets/definitions/index.d.ts.map +1 -1
  267. package/widgets/implementations/datapoints-graph/datapoints-graph-view/datapoints-graph-widget-view.component.d.ts +2 -0
  268. package/widgets/implementations/datapoints-graph/datapoints-graph-view/datapoints-graph-widget-view.component.d.ts.map +1 -1
@@ -0,0 +1,83 @@
1
+ import { inject, Injectable } from '@angular/core';
2
+ import { FetchClient, Service } from '@c8y/client';
3
+ import { AlertService } from '@c8y/ngx-components';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@c8y/client";
6
+ export class MessagingNamespacesService extends Service {
7
+ constructor(client) {
8
+ super(client);
9
+ this.baseUrl = '/service/messaging-management';
10
+ this.listUrl = 'tenants';
11
+ this.alertService = inject(AlertService);
12
+ }
13
+ /**
14
+ * Get namespace list for a tenant
15
+ *
16
+ * @param tenant Tenant id
17
+ * @return Namespaces list
18
+ */
19
+ async getNamespaces(tenant) {
20
+ const namespacesUrl = `/${this.listUrl}/${tenant}/namespaces`;
21
+ return this.fetch(namespacesUrl).then(res => res.json());
22
+ }
23
+ /**
24
+ * Get namespace.
25
+ *
26
+ * @param tenant Tenant ID.
27
+ * @param namespace Name of namespace.
28
+ * @return Namespace.
29
+ */
30
+ async getNamespace(tenant, namespace) {
31
+ const namespaceUrl = `/${this.listUrl}/${tenant}/namespaces/${namespace}`;
32
+ return this.fetch(namespaceUrl).then(res => res.json());
33
+ }
34
+ /**
35
+ * Get namespace policies
36
+ *
37
+ * @param tenant Tenant id
38
+ * @param namespace Name of namespace
39
+ * @return Namespaces policies
40
+ */
41
+ async getNamespacePolicies(tenant, namespace) {
42
+ const policiesUrl = `/${this.listUrl}/${tenant}/namespaces/${namespace}/policies`;
43
+ return this.fetch(policiesUrl).then(res => res.json());
44
+ }
45
+ /**
46
+ * Get single namespace details
47
+ * @param tenant Tenant ID
48
+ * @param namespaceName Namespace name
49
+ * @return Namespace with details
50
+ */
51
+ async getNamespaceDetails(tenant, namespaceName) {
52
+ const namespace = await this.getNamespace(tenant, namespaceName);
53
+ const policies = await this.getNamespacePolicies(tenant, namespaceName);
54
+ return {
55
+ id: namespaceName,
56
+ namespace,
57
+ policies
58
+ };
59
+ }
60
+ /**
61
+ * Get namespaces with details
62
+ *
63
+ * @param tenant Tenant ID
64
+ * @return Namespaces with details
65
+ */
66
+ async getNamespacesDetails(tenant) {
67
+ try {
68
+ const { namespaces } = await this.getNamespaces(tenant);
69
+ return Promise.all(namespaces.map(async (namespace) => this.getNamespaceDetails(tenant, namespace.name)));
70
+ }
71
+ catch (error) {
72
+ this.alertService.addServerFailure(error);
73
+ return [];
74
+ }
75
+ }
76
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessagingNamespacesService, deps: [{ token: i1.FetchClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
77
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessagingNamespacesService, providedIn: 'root' }); }
78
+ }
79
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessagingNamespacesService, decorators: [{
80
+ type: Injectable,
81
+ args: [{ providedIn: 'root' }]
82
+ }], ctorParameters: () => [{ type: i1.FetchClient }] });
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnaW5nLW5hbWVzcGFjZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21lc3NhZ2luZy1tYW5hZ2VtZW50L2FwaS9zZXJ2aWNlcy9tZXNzYWdpbmctbmFtZXNwYWNlcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSW5ELE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBR25ELE1BQU0sT0FBTywwQkFBMkIsU0FBUSxPQUFZO0lBTTFELFlBQVksTUFBbUI7UUFDN0IsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBTk4sWUFBTyxHQUFHLCtCQUErQixDQUFDO1FBQzFDLFlBQU8sR0FBRyxTQUFTLENBQUM7UUFFdEIsaUJBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFJNUMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFjO1FBQ2hDLE1BQU0sYUFBYSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQztRQUM5RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBYyxFQUFFLFNBQWlCO1FBQ2xELE1BQU0sWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxNQUFNLGVBQWUsU0FBUyxFQUFFLENBQUM7UUFDMUUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsb0JBQW9CLENBQ3hCLE1BQWMsRUFDZCxTQUFpQjtRQUVqQixNQUFNLFdBQVcsR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksTUFBTSxlQUFlLFNBQVMsV0FBVyxDQUFDO1FBQ2xGLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsbUJBQW1CLENBQ3ZCLE1BQWMsRUFDZCxhQUFxQjtRQUVyQixNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztRQUN4RSxPQUFPO1lBQ0wsRUFBRSxFQUFFLGFBQWE7WUFDakIsU0FBUztZQUNULFFBQVE7U0FDVCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLG9CQUFvQixDQUFDLE1BQWM7UUFDdkMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4RCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQ2hCLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFDLFNBQVMsRUFBQyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDcEYsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDOytHQW5GVSwwQkFBMEI7bUhBQTFCLDBCQUEwQixjQURiLE1BQU07OzRGQUNuQiwwQkFBMEI7a0JBRHRDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNZXNzYWdpbmdOYW1lc3BhY2VMaXN0IH0gZnJvbSAnLi4vbW9kZWwvbmFtZXNwYWNlTGlzdCc7XG5pbXBvcnQgeyBNZXNzYWdpbmdOYW1lc3BhY2VQb2xpY2llcyB9IGZyb20gJy4uL21vZGVsL25hbWVzcGFjZVBvbGljaWVzJztcbmltcG9ydCB7IE1lc3NhZ2luZ05hbWVzcGFjZSB9IGZyb20gJy4uL21vZGVsL25hbWVzcGFjZSc7XG5pbXBvcnQgeyBGZXRjaENsaWVudCwgU2VydmljZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IE1lc3NhZ2luZ05hbWVzcGFjZURldGFpbHMgfSBmcm9tICcuLi9tb2RlbC9uYW1lc3BhY2VEZXRhaWxzJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2luZ05hbWVzcGFjZXNTZXJ2aWNlIGV4dGVuZHMgU2VydmljZTxhbnk+IHtcbiAgcHJvdGVjdGVkIGJhc2VVcmwgPSAnL3NlcnZpY2UvbWVzc2FnaW5nLW1hbmFnZW1lbnQnO1xuICBwcm90ZWN0ZWQgbGlzdFVybCA9ICd0ZW5hbnRzJztcblxuICBwcml2YXRlIGFsZXJ0U2VydmljZSA9IGluamVjdChBbGVydFNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKGNsaWVudDogRmV0Y2hDbGllbnQpIHtcbiAgICBzdXBlcihjbGllbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBuYW1lc3BhY2UgbGlzdCBmb3IgYSB0ZW5hbnRcbiAgICpcbiAgICogQHBhcmFtIHRlbmFudCBUZW5hbnQgaWRcbiAgICogQHJldHVybiBOYW1lc3BhY2VzIGxpc3RcbiAgICovXG4gIGFzeW5jIGdldE5hbWVzcGFjZXModGVuYW50OiBzdHJpbmcpOiBQcm9taXNlPE1lc3NhZ2luZ05hbWVzcGFjZUxpc3Q+IHtcbiAgICBjb25zdCBuYW1lc3BhY2VzVXJsID0gYC8ke3RoaXMubGlzdFVybH0vJHt0ZW5hbnR9L25hbWVzcGFjZXNgO1xuICAgIHJldHVybiB0aGlzLmZldGNoKG5hbWVzcGFjZXNVcmwpLnRoZW4ocmVzID0+IHJlcy5qc29uKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBuYW1lc3BhY2UuXG4gICAqXG4gICAqIEBwYXJhbSB0ZW5hbnQgVGVuYW50IElELlxuICAgKiBAcGFyYW0gbmFtZXNwYWNlIE5hbWUgb2YgbmFtZXNwYWNlLlxuICAgKiBAcmV0dXJuIE5hbWVzcGFjZS5cbiAgICovXG4gIGFzeW5jIGdldE5hbWVzcGFjZSh0ZW5hbnQ6IHN0cmluZywgbmFtZXNwYWNlOiBzdHJpbmcpOiBQcm9taXNlPE1lc3NhZ2luZ05hbWVzcGFjZT4ge1xuICAgIGNvbnN0IG5hbWVzcGFjZVVybCA9IGAvJHt0aGlzLmxpc3RVcmx9LyR7dGVuYW50fS9uYW1lc3BhY2VzLyR7bmFtZXNwYWNlfWA7XG4gICAgcmV0dXJuIHRoaXMuZmV0Y2gobmFtZXNwYWNlVXJsKS50aGVuKHJlcyA9PiByZXMuanNvbigpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbmFtZXNwYWNlIHBvbGljaWVzXG4gICAqXG4gICAqIEBwYXJhbSB0ZW5hbnQgVGVuYW50IGlkXG4gICAqIEBwYXJhbSBuYW1lc3BhY2UgTmFtZSBvZiBuYW1lc3BhY2VcbiAgICogQHJldHVybiBOYW1lc3BhY2VzIHBvbGljaWVzXG4gICAqL1xuICBhc3luYyBnZXROYW1lc3BhY2VQb2xpY2llcyhcbiAgICB0ZW5hbnQ6IHN0cmluZyxcbiAgICBuYW1lc3BhY2U6IHN0cmluZ1xuICApOiBQcm9taXNlPE1lc3NhZ2luZ05hbWVzcGFjZVBvbGljaWVzPiB7XG4gICAgY29uc3QgcG9saWNpZXNVcmwgPSBgLyR7dGhpcy5saXN0VXJsfS8ke3RlbmFudH0vbmFtZXNwYWNlcy8ke25hbWVzcGFjZX0vcG9saWNpZXNgO1xuICAgIHJldHVybiB0aGlzLmZldGNoKHBvbGljaWVzVXJsKS50aGVuKHJlcyA9PiByZXMuanNvbigpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgc2luZ2xlIG5hbWVzcGFjZSBkZXRhaWxzXG4gICAqIEBwYXJhbSB0ZW5hbnQgVGVuYW50IElEXG4gICAqIEBwYXJhbSBuYW1lc3BhY2VOYW1lIE5hbWVzcGFjZSBuYW1lXG4gICAqIEByZXR1cm4gTmFtZXNwYWNlIHdpdGggZGV0YWlsc1xuICAgKi9cbiAgYXN5bmMgZ2V0TmFtZXNwYWNlRGV0YWlscyhcbiAgICB0ZW5hbnQ6IHN0cmluZyxcbiAgICBuYW1lc3BhY2VOYW1lOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxNZXNzYWdpbmdOYW1lc3BhY2VEZXRhaWxzPiB7XG4gICAgY29uc3QgbmFtZXNwYWNlID0gYXdhaXQgdGhpcy5nZXROYW1lc3BhY2UodGVuYW50LCBuYW1lc3BhY2VOYW1lKTtcbiAgICBjb25zdCBwb2xpY2llcyA9IGF3YWl0IHRoaXMuZ2V0TmFtZXNwYWNlUG9saWNpZXModGVuYW50LCBuYW1lc3BhY2VOYW1lKTtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IG5hbWVzcGFjZU5hbWUsXG4gICAgICBuYW1lc3BhY2UsXG4gICAgICBwb2xpY2llc1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2V0IG5hbWVzcGFjZXMgd2l0aCBkZXRhaWxzXG4gICAqXG4gICAqIEBwYXJhbSB0ZW5hbnQgVGVuYW50IElEXG4gICAqIEByZXR1cm4gTmFtZXNwYWNlcyB3aXRoIGRldGFpbHNcbiAgICovXG4gIGFzeW5jIGdldE5hbWVzcGFjZXNEZXRhaWxzKHRlbmFudDogc3RyaW5nKTogUHJvbWlzZTxNZXNzYWdpbmdOYW1lc3BhY2VEZXRhaWxzW10+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBuYW1lc3BhY2VzIH0gPSBhd2FpdCB0aGlzLmdldE5hbWVzcGFjZXModGVuYW50KTtcbiAgICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgICAgbmFtZXNwYWNlcy5tYXAoYXN5bmMgbmFtZXNwYWNlID0+IHRoaXMuZ2V0TmFtZXNwYWNlRGV0YWlscyh0ZW5hbnQsIG5hbWVzcGFjZS5uYW1lKSlcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXJyb3IpO1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,55 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { FetchClient, Paging, Service } from '@c8y/client';
3
+ import { omit } from 'lodash-es';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@c8y/client";
6
+ export class MessagingSubscribersService extends Service {
7
+ constructor(client) {
8
+ super(client);
9
+ this.baseUrl = '/service/messaging-management';
10
+ this.listUrl = 'tenants';
11
+ }
12
+ /**
13
+ * Get the list of subscribers for a topic.
14
+ *
15
+ * @param filter Subscriber filters.
16
+ */
17
+ async list(filter) {
18
+ const headers = { accept: 'application/json' };
19
+ const params = omit(filter, ['tenant', 'namespace', 'topic', 'type']);
20
+ const url = this.getBaseUrl(filter);
21
+ const res = await this.fetch(url, this.changeFetchOptions({ headers, params }, url));
22
+ const subscriberList = (await res.json());
23
+ const data = subscriberList.subscribers;
24
+ const paging = this.getPaging(subscriberList, filter);
25
+ return { res, data, paging };
26
+ }
27
+ async delete(subscriberToDelete) {
28
+ const method = 'DELETE';
29
+ const url = this.getBaseUrl(subscriberToDelete) + `/${subscriberToDelete.name}`;
30
+ const res = await this.fetch(url, this.changeFetchOptions({ method }, url));
31
+ return { res, data: null };
32
+ }
33
+ getPaging(json, filter) {
34
+ if (json.pageStatistics) {
35
+ const { currentPage, totalPages } = json.pageStatistics;
36
+ const statistics = {
37
+ ...json.pageStatistics,
38
+ nextPage: currentPage < totalPages ? currentPage + 1 : null,
39
+ prevPage: currentPage > 1 ? currentPage - 1 : null
40
+ };
41
+ return new Paging(this, statistics, filter);
42
+ }
43
+ return null;
44
+ }
45
+ getBaseUrl({ tenant, namespace, topic, type }) {
46
+ return `/${this.listUrl}/${tenant}/namespaces/${namespace}/topics/${topic}/types/${type}/subscribers`;
47
+ }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessagingSubscribersService, deps: [{ token: i1.FetchClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
49
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessagingSubscribersService, providedIn: 'root' }); }
50
+ }
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessagingSubscribersService, decorators: [{
52
+ type: Injectable,
53
+ args: [{ providedIn: 'root' }]
54
+ }], ctorParameters: () => [{ type: i1.FetchClient }] });
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnaW5nLXN1YnNjcmliZXJzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9tZXNzYWdpbmctbWFuYWdlbWVudC9hcGkvc2VydmljZXMvbWVzc2FnaW5nLXN1YnNjcmliZXJzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFPM0QsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQzs7O0FBR2pDLE1BQU0sT0FBTywyQkFBNEIsU0FBUSxPQUE0QjtJQUkzRSxZQUFZLE1BQW1CO1FBQzdCLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUpOLFlBQU8sR0FBRywrQkFBK0IsQ0FBQztRQUMxQyxZQUFPLEdBQUcsU0FBUyxDQUFDO0lBSTlCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFrQztRQUMzQyxNQUFNLE9BQU8sR0FBRyxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxDQUFDO1FBQy9DLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNyRixNQUFNLGNBQWMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxDQUE0QixDQUFDO1FBQ3JFLE1BQU0sSUFBSSxHQUFHLGNBQWMsQ0FBQyxXQUFXLENBQUM7UUFDeEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQUMsa0JBQStDO1FBQzFELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQztRQUN4QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoRixNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDNUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVTLFNBQVMsQ0FBQyxJQUE2QixFQUFFLE1BQWM7UUFDL0QsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsTUFBTSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQ3hELE1BQU0sVUFBVSxHQUFHO2dCQUNqQixHQUFHLElBQUksQ0FBQyxjQUFjO2dCQUN0QixRQUFRLEVBQUUsV0FBVyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtnQkFDM0QsUUFBUSxFQUFFLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7YUFDbkQsQ0FBQztZQUNGLE9BQU8sSUFBSSxNQUFNLENBQWlCLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLFVBQVUsQ0FBQyxFQUNqQixNQUFNLEVBQ04sU0FBUyxFQUNULEtBQUssRUFDTCxJQUFJLEVBTUw7UUFDQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxNQUFNLGVBQWUsU0FBUyxXQUFXLEtBQUssVUFBVSxJQUFJLGNBQWMsQ0FBQztJQUN4RyxDQUFDOytHQXhEVSwyQkFBMkI7bUhBQTNCLDJCQUEyQixjQURkLE1BQU07OzRGQUNuQiwyQkFBMkI7a0JBRHZDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmV0Y2hDbGllbnQsIFBhZ2luZywgU2VydmljZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IE1lc3NhZ2luZ1N1YnNjcmliZXJMaXN0IH0gZnJvbSAnLi4vbW9kZWwvc3Vic2NyaWJlckxpc3QnO1xuaW1wb3J0IHsgTWVzc2FnaW5nU3Vic2NyaWJlciB9IGZyb20gJy4uL21vZGVsL3N1YnNjcmliZXInO1xuaW1wb3J0IHsgTWVzc2FnaW5nVG9waWMgfSBmcm9tICcuLi9tb2RlbC90b3BpYyc7XG5pbXBvcnQgeyBNZXNzYWdpbmdTdWJzY3JpYmVyRmlsdGVycyB9IGZyb20gJy4uL21vZGVsL3N1YnNjcmliZXJGaWx0ZXJzJztcbmltcG9ydCB7IE1lc3NhZ2luZ1N1YnNjcmliZXJUb0RlbGV0ZSB9IGZyb20gJy4uL21vZGVsL3N1YnNjcmliZXJUb0RlbGV0ZSc7XG5pbXBvcnQgeyBNZXNzYWdpbmdUb3BpY1R5cGUgfSBmcm9tICcuLi9tb2RlbC90b3BpY1R5cGUnO1xuaW1wb3J0IHsgb21pdCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTWVzc2FnaW5nU3Vic2NyaWJlcnNTZXJ2aWNlIGV4dGVuZHMgU2VydmljZTxNZXNzYWdpbmdTdWJzY3JpYmVyPiB7XG4gIHByb3RlY3RlZCBiYXNlVXJsID0gJy9zZXJ2aWNlL21lc3NhZ2luZy1tYW5hZ2VtZW50JztcbiAgcHJvdGVjdGVkIGxpc3RVcmwgPSAndGVuYW50cyc7XG5cbiAgY29uc3RydWN0b3IoY2xpZW50OiBGZXRjaENsaWVudCkge1xuICAgIHN1cGVyKGNsaWVudCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBsaXN0IG9mIHN1YnNjcmliZXJzIGZvciBhIHRvcGljLlxuICAgKlxuICAgKiBAcGFyYW0gZmlsdGVyIFN1YnNjcmliZXIgZmlsdGVycy5cbiAgICovXG4gIGFzeW5jIGxpc3QoZmlsdGVyOiBNZXNzYWdpbmdTdWJzY3JpYmVyRmlsdGVycykge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB7IGFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nIH07XG4gICAgY29uc3QgcGFyYW1zID0gb21pdChmaWx0ZXIsIFsndGVuYW50JywgJ25hbWVzcGFjZScsICd0b3BpYycsICd0eXBlJ10pO1xuICAgIGNvbnN0IHVybCA9IHRoaXMuZ2V0QmFzZVVybChmaWx0ZXIpO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZmV0Y2godXJsLCB0aGlzLmNoYW5nZUZldGNoT3B0aW9ucyh7IGhlYWRlcnMsIHBhcmFtcyB9LCB1cmwpKTtcbiAgICBjb25zdCBzdWJzY3JpYmVyTGlzdCA9IChhd2FpdCByZXMuanNvbigpKSBhcyBNZXNzYWdpbmdTdWJzY3JpYmVyTGlzdDtcbiAgICBjb25zdCBkYXRhID0gc3Vic2NyaWJlckxpc3Quc3Vic2NyaWJlcnM7XG4gICAgY29uc3QgcGFnaW5nID0gdGhpcy5nZXRQYWdpbmcoc3Vic2NyaWJlckxpc3QsIGZpbHRlcik7XG4gICAgcmV0dXJuIHsgcmVzLCBkYXRhLCBwYWdpbmcgfTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZShzdWJzY3JpYmVyVG9EZWxldGU6IE1lc3NhZ2luZ1N1YnNjcmliZXJUb0RlbGV0ZSkge1xuICAgIGNvbnN0IG1ldGhvZCA9ICdERUxFVEUnO1xuICAgIGNvbnN0IHVybCA9IHRoaXMuZ2V0QmFzZVVybChzdWJzY3JpYmVyVG9EZWxldGUpICsgYC8ke3N1YnNjcmliZXJUb0RlbGV0ZS5uYW1lfWA7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5mZXRjaCh1cmwsIHRoaXMuY2hhbmdlRmV0Y2hPcHRpb25zKHsgbWV0aG9kIH0sIHVybCkpO1xuICAgIHJldHVybiB7IHJlcywgZGF0YTogbnVsbCB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFBhZ2luZyhqc29uOiBNZXNzYWdpbmdTdWJzY3JpYmVyTGlzdCwgZmlsdGVyOiBvYmplY3QpOiBQYWdpbmc8TWVzc2FnaW5nU3Vic2NyaWJlcj4ge1xuICAgIGlmIChqc29uLnBhZ2VTdGF0aXN0aWNzKSB7XG4gICAgICBjb25zdCB7IGN1cnJlbnRQYWdlLCB0b3RhbFBhZ2VzIH0gPSBqc29uLnBhZ2VTdGF0aXN0aWNzO1xuICAgICAgY29uc3Qgc3RhdGlzdGljcyA9IHtcbiAgICAgICAgLi4uanNvbi5wYWdlU3RhdGlzdGljcyxcbiAgICAgICAgbmV4dFBhZ2U6IGN1cnJlbnRQYWdlIDwgdG90YWxQYWdlcyA/IGN1cnJlbnRQYWdlICsgMSA6IG51bGwsXG4gICAgICAgIHByZXZQYWdlOiBjdXJyZW50UGFnZSA+IDEgPyBjdXJyZW50UGFnZSAtIDEgOiBudWxsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIG5ldyBQYWdpbmc8TWVzc2FnaW5nVG9waWM+KHRoaXMsIHN0YXRpc3RpY3MsIGZpbHRlcik7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCYXNlVXJsKHtcbiAgICB0ZW5hbnQsXG4gICAgbmFtZXNwYWNlLFxuICAgIHRvcGljLFxuICAgIHR5cGVcbiAgfToge1xuICAgIHRlbmFudDogc3RyaW5nO1xuICAgIG5hbWVzcGFjZTogc3RyaW5nO1xuICAgIHRvcGljOiBzdHJpbmc7XG4gICAgdHlwZTogTWVzc2FnaW5nVG9waWNUeXBlO1xuICB9KSB7XG4gICAgcmV0dXJuIGAvJHt0aGlzLmxpc3RVcmx9LyR7dGVuYW50fS9uYW1lc3BhY2VzLyR7bmFtZXNwYWNlfS90b3BpY3MvJHt0b3BpY30vdHlwZXMvJHt0eXBlfS9zdWJzY3JpYmVyc2A7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,48 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { FetchClient, Paging, Service } from '@c8y/client';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@c8y/client";
5
+ export class MessagingTopicsService extends Service {
6
+ constructor(client) {
7
+ super(client);
8
+ this.baseUrl = '/service/messaging-management';
9
+ this.listUrl = 'tenants';
10
+ }
11
+ async list(filter) {
12
+ const headers = { accept: 'application/json' };
13
+ const { tenant, namespace, ...params } = filter;
14
+ const url = `/${this.listUrl}/${tenant}/namespaces/${namespace}/topics`;
15
+ const res = await this.fetch(url, this.changeFetchOptions({ headers, params }, url));
16
+ const topicList = (await res.json());
17
+ const data = topicList.topics;
18
+ const paging = this.getPaging(topicList, filter);
19
+ return { res, data, paging };
20
+ }
21
+ async detail(filter) {
22
+ const headers = { accept: 'application/json' };
23
+ const { tenant, namespace, topic, type } = filter;
24
+ const url = `/${this.listUrl}/${tenant}/namespaces/${namespace}/topics/${topic}/types/${type}`;
25
+ const res = await this.fetch(url, this.changeFetchOptions({ headers }, url));
26
+ const data = await res.json();
27
+ return { res, data };
28
+ }
29
+ getPaging(topicList, filter) {
30
+ if (topicList.pageStatistics) {
31
+ const { currentPage, totalPages } = topicList.pageStatistics;
32
+ const statistics = {
33
+ ...topicList.pageStatistics,
34
+ nextPage: currentPage < totalPages ? currentPage + 1 : null,
35
+ prevPage: currentPage > 1 ? currentPage - 1 : null
36
+ };
37
+ return new Paging(this, statistics, filter);
38
+ }
39
+ return null;
40
+ }
41
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessagingTopicsService, deps: [{ token: i1.FetchClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
42
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessagingTopicsService, providedIn: 'root' }); }
43
+ }
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessagingTopicsService, decorators: [{
45
+ type: Injectable,
46
+ args: [{ providedIn: 'root' }]
47
+ }], ctorParameters: () => [{ type: i1.FetchClient }] });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnaW5nLXRvcGljcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbWVzc2FnaW5nLW1hbmFnZW1lbnQvYXBpL3NlcnZpY2VzL21lc3NhZ2luZy10b3BpY3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQVcsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQzs7O0FBT3BFLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxPQUF1QjtJQUlqRSxZQUFZLE1BQW1CO1FBQzdCLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUpOLFlBQU8sR0FBRywrQkFBK0IsQ0FBQztRQUMxQyxZQUFPLEdBQUcsU0FBUyxDQUFDO0lBSTlCLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQWlDO1FBQzFDLE1BQU0sT0FBTyxHQUFHLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLENBQUM7UUFDL0MsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUM7UUFDaEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLE1BQU0sZUFBZSxTQUFTLFNBQVMsQ0FBQztRQUN4RSxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JGLE1BQU0sU0FBUyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQXVCLENBQUM7UUFDM0QsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUM5QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNqRCxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFtQztRQUM5QyxNQUFNLE9BQU8sR0FBRyxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxDQUFDO1FBQy9DLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUM7UUFDbEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLE1BQU0sZUFBZSxTQUFTLFdBQVcsS0FBSyxVQUFVLElBQUksRUFBRSxDQUFDO1FBQy9GLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM3RSxNQUFNLElBQUksR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5QixPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFUyxTQUFTLENBQ2pCLFNBQTZCLEVBQzdCLE1BQWlDO1FBRWpDLElBQUksU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzdCLE1BQU0sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLEdBQUcsU0FBUyxDQUFDLGNBQWMsQ0FBQztZQUM3RCxNQUFNLFVBQVUsR0FBRztnQkFDakIsR0FBRyxTQUFTLENBQUMsY0FBYztnQkFDM0IsUUFBUSxFQUFFLFdBQVcsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBQzNELFFBQVEsRUFBRSxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO2FBQ25ELENBQUM7WUFDRixPQUFPLElBQUksTUFBTSxDQUFpQixJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7K0dBMUNVLHNCQUFzQjttSEFBdEIsc0JBQXNCLGNBRFQsTUFBTTs7NEZBQ25CLHNCQUFzQjtrQkFEbEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGZXRjaENsaWVudCwgSVJlc3VsdCwgUGFnaW5nLCBTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgTWVzc2FnaW5nVG9waWNMaXN0IH0gZnJvbSAnLi4vbW9kZWwvdG9waWNMaXN0JztcbmltcG9ydCB7IE1lc3NhZ2luZ1RvcGljTGlzdEZpbHRlcnMgfSBmcm9tICcuLi9tb2RlbC90b3BpY0xpc3RGaWx0ZXJzJztcbmltcG9ydCB7IE1lc3NhZ2luZ1RvcGljIH0gZnJvbSAnLi4vbW9kZWwvdG9waWMnO1xuaW1wb3J0IHsgTWVzc2FnaW5nVG9waWNEZXRhaWxGaWx0ZXJzIH0gZnJvbSAnLi4vbW9kZWwvdG9waWNEZXRhaWxGaWx0ZXJzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdpbmdUb3BpY3NTZXJ2aWNlIGV4dGVuZHMgU2VydmljZTxNZXNzYWdpbmdUb3BpYz4ge1xuICBwcm90ZWN0ZWQgYmFzZVVybCA9ICcvc2VydmljZS9tZXNzYWdpbmctbWFuYWdlbWVudCc7XG4gIHByb3RlY3RlZCBsaXN0VXJsID0gJ3RlbmFudHMnO1xuXG4gIGNvbnN0cnVjdG9yKGNsaWVudDogRmV0Y2hDbGllbnQpIHtcbiAgICBzdXBlcihjbGllbnQpO1xuICB9XG5cbiAgYXN5bmMgbGlzdChmaWx0ZXI6IE1lc3NhZ2luZ1RvcGljTGlzdEZpbHRlcnMpIHtcbiAgICBjb25zdCBoZWFkZXJzID0geyBhY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJyB9O1xuICAgIGNvbnN0IHsgdGVuYW50LCBuYW1lc3BhY2UsIC4uLnBhcmFtcyB9ID0gZmlsdGVyO1xuICAgIGNvbnN0IHVybCA9IGAvJHt0aGlzLmxpc3RVcmx9LyR7dGVuYW50fS9uYW1lc3BhY2VzLyR7bmFtZXNwYWNlfS90b3BpY3NgO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZmV0Y2godXJsLCB0aGlzLmNoYW5nZUZldGNoT3B0aW9ucyh7IGhlYWRlcnMsIHBhcmFtcyB9LCB1cmwpKTtcbiAgICBjb25zdCB0b3BpY0xpc3QgPSAoYXdhaXQgcmVzLmpzb24oKSkgYXMgTWVzc2FnaW5nVG9waWNMaXN0O1xuICAgIGNvbnN0IGRhdGEgPSB0b3BpY0xpc3QudG9waWNzO1xuICAgIGNvbnN0IHBhZ2luZyA9IHRoaXMuZ2V0UGFnaW5nKHRvcGljTGlzdCwgZmlsdGVyKTtcbiAgICByZXR1cm4geyByZXMsIGRhdGEsIHBhZ2luZyB9O1xuICB9XG5cbiAgYXN5bmMgZGV0YWlsKGZpbHRlcjogTWVzc2FnaW5nVG9waWNEZXRhaWxGaWx0ZXJzKTogUHJvbWlzZTxJUmVzdWx0PE1lc3NhZ2luZ1RvcGljPj4ge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB7IGFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nIH07XG4gICAgY29uc3QgeyB0ZW5hbnQsIG5hbWVzcGFjZSwgdG9waWMsIHR5cGUgfSA9IGZpbHRlcjtcbiAgICBjb25zdCB1cmwgPSBgLyR7dGhpcy5saXN0VXJsfS8ke3RlbmFudH0vbmFtZXNwYWNlcy8ke25hbWVzcGFjZX0vdG9waWNzLyR7dG9waWN9L3R5cGVzLyR7dHlwZX1gO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZmV0Y2godXJsLCB0aGlzLmNoYW5nZUZldGNoT3B0aW9ucyh7IGhlYWRlcnMgfSwgdXJsKSk7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlcy5qc29uKCk7XG4gICAgcmV0dXJuIHsgcmVzLCBkYXRhIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0UGFnaW5nKFxuICAgIHRvcGljTGlzdDogTWVzc2FnaW5nVG9waWNMaXN0LFxuICAgIGZpbHRlcjogTWVzc2FnaW5nVG9waWNMaXN0RmlsdGVyc1xuICApOiBQYWdpbmc8TWVzc2FnaW5nVG9waWM+IHtcbiAgICBpZiAodG9waWNMaXN0LnBhZ2VTdGF0aXN0aWNzKSB7XG4gICAgICBjb25zdCB7IGN1cnJlbnRQYWdlLCB0b3RhbFBhZ2VzIH0gPSB0b3BpY0xpc3QucGFnZVN0YXRpc3RpY3M7XG4gICAgICBjb25zdCBzdGF0aXN0aWNzID0ge1xuICAgICAgICAuLi50b3BpY0xpc3QucGFnZVN0YXRpc3RpY3MsXG4gICAgICAgIG5leHRQYWdlOiBjdXJyZW50UGFnZSA8IHRvdGFsUGFnZXMgPyBjdXJyZW50UGFnZSArIDEgOiBudWxsLFxuICAgICAgICBwcmV2UGFnZTogY3VycmVudFBhZ2UgPiAxID8gY3VycmVudFBhZ2UgLSAxIDogbnVsbFxuICAgICAgfTtcbiAgICAgIHJldHVybiBuZXcgUGFnaW5nPE1lc3NhZ2luZ1RvcGljPih0aGlzLCBzdGF0aXN0aWNzLCBmaWx0ZXIpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYzh5LW5neC1jb21wb25lbnRzLW1lc3NhZ2luZy1tYW5hZ2VtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbWVzc2FnaW5nLW1hbmFnZW1lbnQvYzh5LW5neC1jb21wb25lbnRzLW1lc3NhZ2luZy1tYW5hZ2VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,4 @@
1
+ export const basePath = 'monitoring/messaging-service';
2
+ export const MESSAGING_MANAGEMENT_FEATURE_KEY = 'messaging-management.api';
3
+ export const MESSAGING_MANAGEMENT_MICROSERVICE_NAME = 'messaging-management';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbWVzc2FnaW5nLW1hbmFnZW1lbnQvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyw4QkFBOEIsQ0FBQztBQUN2RCxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRywwQkFBMEIsQ0FBQztBQUMzRSxNQUFNLENBQUMsTUFBTSxzQ0FBc0MsR0FBRyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBiYXNlUGF0aCA9ICdtb25pdG9yaW5nL21lc3NhZ2luZy1zZXJ2aWNlJztcbmV4cG9ydCBjb25zdCBNRVNTQUdJTkdfTUFOQUdFTUVOVF9GRUFUVVJFX0tFWSA9ICdtZXNzYWdpbmctbWFuYWdlbWVudC5hcGknO1xuZXhwb3J0IGNvbnN0IE1FU1NBR0lOR19NQU5BR0VNRU5UX01JQ1JPU0VSVklDRV9OQU1FID0gJ21lc3NhZ2luZy1tYW5hZ2VtZW50JztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './messaging-management.module';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9tZXNzYWdpbmctbWFuYWdlbWVudC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tZXNzYWdpbmctbWFuYWdlbWVudC5tb2R1bGUnO1xuIl19
@@ -0,0 +1,43 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { C8yTranslateModule, gettext, IconDirective } from '@c8y/ngx-components';
3
+ import { CommonModule } from '@angular/common';
4
+ import { BacklogQuotaLimitPipe } from '../../../../utils/backlog-quota-limit.pipe';
5
+ import { UsageComponent } from '../../../shared/usage/usage.component';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@c8y/ngx-components";
8
+ import * as i2 from "@angular/common";
9
+ const DataType = {
10
+ publishers: 'publishers',
11
+ subscribers: 'subscribers',
12
+ topics: 'topics'
13
+ };
14
+ export class NamespaceItemCardComponent {
15
+ constructor() {
16
+ this.DATA_TYPE = DataType;
17
+ this.ITEM_DETAILS = {
18
+ publishers: { icon: 'output', title: gettext('Publishers') },
19
+ subscribers: { icon: 'input', title: gettext('Subscribers') },
20
+ topics: { icon: 'day-view', title: gettext('Topics') }
21
+ };
22
+ this.topicsLimitLabel = gettext('Limit: {{ backlogQuotaLimit }}');
23
+ /**
24
+ * The label of the service (already translated).
25
+ */
26
+ this.serviceLabel = '';
27
+ }
28
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NamespaceItemCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
29
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NamespaceItemCardComponent, isStandalone: true, selector: "app-namespace-item-card", inputs: { serviceLabel: "serviceLabel", limit: "limit", dataType: "dataType", value: "value" }, host: { classAttribute: "card m-b-0 fit-w" }, ngImport: i0, template: "<div class=\"card-block text-default visible-xs text-center p-b-0\">\n <span class=\"text-12 text-uppercase text-muted\">\n {{ serviceLabel | translate }}\n </span>\n</div>\n<div\n class=\"card-block text-default p-t-sm-48\"\n [ngClass]=\"{\n 'p-b-sm-48': limit === 0\n }\"\n>\n <div class=\"d-flex fit-w a-i-center gap-8 j-c-center\">\n <i\n class=\"icon-32 c8y-icon-duocolor\"\n [c8yIcon]=\"ITEM_DETAILS[dataType].icon\"\n ></i>\n <span class=\"h1\">\n {{ value | number }}\n </span>\n <span\n class=\"a-s-baseline text-14 text-medium text-truncate\"\n title=\"{{ ITEM_DETAILS[dataType].title | translate }}\"\n >\n {{ ITEM_DETAILS[dataType].title | translate }}\n </span>\n </div>\n</div>\n<div\n class=\"card-footer d-flex gap-16 j-c-center a-i-center\"\n *ngIf=\"dataType === DATA_TYPE.topics && limit !== 0\"\n>\n <span\n class=\"tag tag--default no-pointer\"\n data-cy=\"card-limit\"\n >\n {{ topicsLimitLabel | translate: { backlogQuotaLimit: limit | backlogQuotaLimit } }}\n </span>\n <app-usage\n [count]=\"value\"\n [limit]=\"limit\"\n ></app-usage>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "ngmodule", type: C8yTranslateModule }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.DecimalPipe, name: "number" }, { kind: "pipe", type: BacklogQuotaLimitPipe, name: "backlogQuotaLimit" }, { kind: "component", type: UsageComponent, selector: "app-usage", inputs: ["count", "limit", "percentage"] }] }); }
30
+ }
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NamespaceItemCardComponent, decorators: [{
32
+ type: Component,
33
+ args: [{ selector: 'app-namespace-item-card', standalone: true, imports: [IconDirective, C8yTranslateModule, CommonModule, BacklogQuotaLimitPipe, UsageComponent], host: { class: 'card m-b-0 fit-w' }, template: "<div class=\"card-block text-default visible-xs text-center p-b-0\">\n <span class=\"text-12 text-uppercase text-muted\">\n {{ serviceLabel | translate }}\n </span>\n</div>\n<div\n class=\"card-block text-default p-t-sm-48\"\n [ngClass]=\"{\n 'p-b-sm-48': limit === 0\n }\"\n>\n <div class=\"d-flex fit-w a-i-center gap-8 j-c-center\">\n <i\n class=\"icon-32 c8y-icon-duocolor\"\n [c8yIcon]=\"ITEM_DETAILS[dataType].icon\"\n ></i>\n <span class=\"h1\">\n {{ value | number }}\n </span>\n <span\n class=\"a-s-baseline text-14 text-medium text-truncate\"\n title=\"{{ ITEM_DETAILS[dataType].title | translate }}\"\n >\n {{ ITEM_DETAILS[dataType].title | translate }}\n </span>\n </div>\n</div>\n<div\n class=\"card-footer d-flex gap-16 j-c-center a-i-center\"\n *ngIf=\"dataType === DATA_TYPE.topics && limit !== 0\"\n>\n <span\n class=\"tag tag--default no-pointer\"\n data-cy=\"card-limit\"\n >\n {{ topicsLimitLabel | translate: { backlogQuotaLimit: limit | backlogQuotaLimit } }}\n </span>\n <app-usage\n [count]=\"value\"\n [limit]=\"limit\"\n ></app-usage>\n</div>\n" }]
34
+ }], propDecorators: { serviceLabel: [{
35
+ type: Input
36
+ }], limit: [{
37
+ type: Input
38
+ }], dataType: [{
39
+ type: Input
40
+ }], value: [{
41
+ type: Input
42
+ }] } });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXNwYWNlLWl0ZW0tY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9tZXNzYWdpbmctbWFuYWdlbWVudC9tZXNzYWdpbmcvbmFtZXNwYWNlLWxpc3QvbmFtZXNwYWNlLWl0ZW0vbmFtZXNwYWNlLWl0ZW0tY2FyZC9uYW1lc3BhY2UtaXRlbS1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL21lc3NhZ2luZy1tYW5hZ2VtZW50L21lc3NhZ2luZy9uYW1lc3BhY2UtbGlzdC9uYW1lc3BhY2UtaXRlbS9uYW1lc3BhY2UtaXRlbS1jYXJkL25hbWVzcGFjZS1pdGVtLWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7O0FBRXZFLE1BQU0sUUFBUSxHQUFHO0lBQ2YsVUFBVSxFQUFFLFlBQVk7SUFDeEIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsTUFBTSxFQUFFLFFBQVE7Q0FDUixDQUFDO0FBU1gsTUFBTSxPQUFPLDBCQUEwQjtJQVB2QztRQVFXLGNBQVMsR0FBRyxRQUFRLENBQUM7UUFDckIsaUJBQVksR0FBbUU7WUFDdEYsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQzVELFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUM3RCxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7U0FDOUMsQ0FBQztRQUNYLHFCQUFnQixHQUFHLE9BQU8sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBRTdEOztXQUVHO1FBQ00saUJBQVksR0FBRyxFQUFFLENBQUM7S0FJNUI7K0dBaEJZLDBCQUEwQjttR0FBMUIsMEJBQTBCLGlPQ25CdkMsc29DQTBDQSw0Q0QzQlksYUFBYSwwRUFBRSxrQkFBa0IsOEZBQUUsWUFBWSxvUkFBRSxxQkFBcUIsMERBQUUsY0FBYzs7NEZBSXJGLDBCQUEwQjtrQkFQdEMsU0FBUzsrQkFDRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQLENBQUMsYUFBYSxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxxQkFBcUIsRUFBRSxjQUFjLENBQUMsUUFFM0YsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUU7OEJBYzFCLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQzh5VHJhbnNsYXRlTW9kdWxlLCBnZXR0ZXh0LCBJY29uRGlyZWN0aXZlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQmFja2xvZ1F1b3RhTGltaXRQaXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvYmFja2xvZy1xdW90YS1saW1pdC5waXBlJztcbmltcG9ydCB7IFVzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3VzYWdlL3VzYWdlLmNvbXBvbmVudCc7XG5cbmNvbnN0IERhdGFUeXBlID0ge1xuICBwdWJsaXNoZXJzOiAncHVibGlzaGVycycsXG4gIHN1YnNjcmliZXJzOiAnc3Vic2NyaWJlcnMnLFxuICB0b3BpY3M6ICd0b3BpY3MnXG59IGFzIGNvbnN0O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbmFtZXNwYWNlLWl0ZW0tY2FyZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtJY29uRGlyZWN0aXZlLCBDOHlUcmFuc2xhdGVNb2R1bGUsIENvbW1vbk1vZHVsZSwgQmFja2xvZ1F1b3RhTGltaXRQaXBlLCBVc2FnZUNvbXBvbmVudF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9uYW1lc3BhY2UtaXRlbS1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDogeyBjbGFzczogJ2NhcmQgbS1iLTAgZml0LXcnIH1cbn0pXG5leHBvcnQgY2xhc3MgTmFtZXNwYWNlSXRlbUNhcmRDb21wb25lbnQge1xuICByZWFkb25seSBEQVRBX1RZUEUgPSBEYXRhVHlwZTtcbiAgcmVhZG9ubHkgSVRFTV9ERVRBSUxTOiBSZWNvcmQ8a2V5b2YgdHlwZW9mIERhdGFUeXBlLCB7IGljb246IHN0cmluZzsgdGl0bGU6IHN0cmluZyB9PiA9IHtcbiAgICBwdWJsaXNoZXJzOiB7IGljb246ICdvdXRwdXQnLCB0aXRsZTogZ2V0dGV4dCgnUHVibGlzaGVycycpIH0sXG4gICAgc3Vic2NyaWJlcnM6IHsgaWNvbjogJ2lucHV0JywgdGl0bGU6IGdldHRleHQoJ1N1YnNjcmliZXJzJykgfSxcbiAgICB0b3BpY3M6IHsgaWNvbjogJ2RheS12aWV3JywgdGl0bGU6IGdldHRleHQoJ1RvcGljcycpIH1cbiAgfSBhcyBjb25zdDtcbiAgdG9waWNzTGltaXRMYWJlbCA9IGdldHRleHQoJ0xpbWl0OiB7eyBiYWNrbG9nUXVvdGFMaW1pdCB9fScpO1xuXG4gIC8qKlxuICAgKiBUaGUgbGFiZWwgb2YgdGhlIHNlcnZpY2UgKGFscmVhZHkgdHJhbnNsYXRlZCkuXG4gICAqL1xuICBASW5wdXQoKSBzZXJ2aWNlTGFiZWwgPSAnJztcbiAgQElucHV0KCkgbGltaXQ/OiBudW1iZXI7XG4gIEBJbnB1dCgpIGRhdGFUeXBlOiBrZXlvZiB0eXBlb2YgRGF0YVR5cGU7XG4gIEBJbnB1dCgpIHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG4iLCI8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayB0ZXh0LWRlZmF1bHQgdmlzaWJsZS14cyB0ZXh0LWNlbnRlciBwLWItMFwiPlxuICA8c3BhbiBjbGFzcz1cInRleHQtMTIgdGV4dC11cHBlcmNhc2UgdGV4dC1tdXRlZFwiPlxuICAgIHt7IHNlcnZpY2VMYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICA8L3NwYW4+XG48L2Rpdj5cbjxkaXZcbiAgY2xhc3M9XCJjYXJkLWJsb2NrIHRleHQtZGVmYXVsdCBwLXQtc20tNDhcIlxuICBbbmdDbGFzc109XCJ7XG4gICAgJ3AtYi1zbS00OCc6IGxpbWl0ID09PSAwXG4gIH1cIlxuPlxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZpdC13IGEtaS1jZW50ZXIgZ2FwLTggai1jLWNlbnRlclwiPlxuICAgIDxpXG4gICAgICBjbGFzcz1cImljb24tMzIgYzh5LWljb24tZHVvY29sb3JcIlxuICAgICAgW2M4eUljb25dPVwiSVRFTV9ERVRBSUxTW2RhdGFUeXBlXS5pY29uXCJcbiAgICA+PC9pPlxuICAgIDxzcGFuIGNsYXNzPVwiaDFcIj5cbiAgICAgIHt7IHZhbHVlIHwgbnVtYmVyIH19XG4gICAgPC9zcGFuPlxuICAgIDxzcGFuXG4gICAgICBjbGFzcz1cImEtcy1iYXNlbGluZSB0ZXh0LTE0IHRleHQtbWVkaXVtIHRleHQtdHJ1bmNhdGVcIlxuICAgICAgdGl0bGU9XCJ7eyBJVEVNX0RFVEFJTFNbZGF0YVR5cGVdLnRpdGxlIHwgdHJhbnNsYXRlIH19XCJcbiAgICA+XG4gICAgICB7eyBJVEVNX0RFVEFJTFNbZGF0YVR5cGVdLnRpdGxlIHwgdHJhbnNsYXRlIH19XG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdlxuICBjbGFzcz1cImNhcmQtZm9vdGVyIGQtZmxleCBnYXAtMTYgai1jLWNlbnRlciBhLWktY2VudGVyXCJcbiAgKm5nSWY9XCJkYXRhVHlwZSA9PT0gREFUQV9UWVBFLnRvcGljcyAmJiBsaW1pdCAhPT0gMFwiXG4+XG4gIDxzcGFuXG4gICAgY2xhc3M9XCJ0YWcgdGFnLS1kZWZhdWx0IG5vLXBvaW50ZXJcIlxuICAgIGRhdGEtY3k9XCJjYXJkLWxpbWl0XCJcbiAgPlxuICAgIHt7IHRvcGljc0xpbWl0TGFiZWwgfCB0cmFuc2xhdGU6IHsgYmFja2xvZ1F1b3RhTGltaXQ6IGxpbWl0IHwgYmFja2xvZ1F1b3RhTGltaXQgfSB9fVxuICA8L3NwYW4+XG4gIDxhcHAtdXNhZ2VcbiAgICBbY291bnRdPVwidmFsdWVcIlxuICAgIFtsaW1pdF09XCJsaW1pdFwiXG4gID48L2FwcC11c2FnZT5cbjwvZGl2PlxuIl19
@@ -0,0 +1,36 @@
1
+ import { Component, inject, Input } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { C8yTranslatePipe, IconDirective } from '@c8y/ngx-components';
4
+ import { NamespaceItemCardComponent } from './namespace-item-card/namespace-item-card.component';
5
+ import { NAMESPACE_PROPS } from '../../../utils/namespace-props';
6
+ import { TranslateService } from '@ngx-translate/core';
7
+ import * as i0 from "@angular/core";
8
+ export class NamespaceItemComponent {
9
+ constructor() {
10
+ this.translateService = inject(TranslateService);
11
+ this.namespaceName = '';
12
+ this.namespaceLabel = '';
13
+ this.icon = '';
14
+ this.namespace = {};
15
+ this.policies = {};
16
+ }
17
+ set _namespaceName(name) {
18
+ this.namespaceName = name;
19
+ this.icon = NAMESPACE_PROPS[name]?.icon;
20
+ this.namespaceLabel = this.translateService.instant(NAMESPACE_PROPS[name]?.label) || name;
21
+ }
22
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NamespaceItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
23
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NamespaceItemComponent, isStandalone: true, selector: "app-namespace-item", inputs: { _namespaceName: ["namespaceName", "_namespaceName"], namespace: "namespace", policies: "policies" }, ngImport: i0, template: "<div class=\"d-flex-sm d-col-xs p-t-24 p-l-16 p-r-16 m-0 bg-level-1\">\n <div\n class=\"col-sm-3 m-b-24 col-xs-12 d-flex gap-16 text-default a-i-center j-c-center a-s-stretch\"\n >\n <div class=\"text-center d-col\">\n <i\n class=\"m-b-8 icon-40 c8y-icon-duocolor\"\n [c8yIcon]=\"icon\"\n ></i>\n <span class=\"tag tag--info\">{{ 'Service' | translate }}</span>\n </div>\n <span class=\"h4\">{{ namespaceLabel }}</span>\n </div>\n <div class=\"col-sm-3 m-b-24 col-xs-12 a-i-stretch d-flex\">\n <app-namespace-item-card\n [serviceLabel]=\"namespaceLabel\"\n [dataType]=\"'topics'\"\n [limit]=\"namespace?.topics?.limit\"\n [value]=\"namespace?.topics?.count\"\n ></app-namespace-item-card>\n </div>\n <div class=\"col-sm-3 m-b-24 col-xs-12 a-i-stretch d-flex\">\n <app-namespace-item-card\n [serviceLabel]=\"namespaceLabel\"\n [dataType]=\"'publishers'\"\n [value]=\"namespace?.publishers?.count\"\n ></app-namespace-item-card>\n </div>\n <div class=\"col-sm-3 m-b-24 col-xs-12 a-i-stretch d-flex\">\n <app-namespace-item-card\n [serviceLabel]=\"namespaceLabel\"\n [dataType]=\"'subscribers'\"\n [value]=\"namespace?.subscribers?.count\"\n ></app-namespace-item-card>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: NamespaceItemCardComponent, selector: "app-namespace-item-card", inputs: ["serviceLabel", "limit", "dataType", "value"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NamespaceItemComponent, decorators: [{
26
+ type: Component,
27
+ args: [{ selector: 'app-namespace-item', standalone: true, imports: [CommonModule, IconDirective, NamespaceItemCardComponent, C8yTranslatePipe], template: "<div class=\"d-flex-sm d-col-xs p-t-24 p-l-16 p-r-16 m-0 bg-level-1\">\n <div\n class=\"col-sm-3 m-b-24 col-xs-12 d-flex gap-16 text-default a-i-center j-c-center a-s-stretch\"\n >\n <div class=\"text-center d-col\">\n <i\n class=\"m-b-8 icon-40 c8y-icon-duocolor\"\n [c8yIcon]=\"icon\"\n ></i>\n <span class=\"tag tag--info\">{{ 'Service' | translate }}</span>\n </div>\n <span class=\"h4\">{{ namespaceLabel }}</span>\n </div>\n <div class=\"col-sm-3 m-b-24 col-xs-12 a-i-stretch d-flex\">\n <app-namespace-item-card\n [serviceLabel]=\"namespaceLabel\"\n [dataType]=\"'topics'\"\n [limit]=\"namespace?.topics?.limit\"\n [value]=\"namespace?.topics?.count\"\n ></app-namespace-item-card>\n </div>\n <div class=\"col-sm-3 m-b-24 col-xs-12 a-i-stretch d-flex\">\n <app-namespace-item-card\n [serviceLabel]=\"namespaceLabel\"\n [dataType]=\"'publishers'\"\n [value]=\"namespace?.publishers?.count\"\n ></app-namespace-item-card>\n </div>\n <div class=\"col-sm-3 m-b-24 col-xs-12 a-i-stretch d-flex\">\n <app-namespace-item-card\n [serviceLabel]=\"namespaceLabel\"\n [dataType]=\"'subscribers'\"\n [value]=\"namespace?.subscribers?.count\"\n ></app-namespace-item-card>\n </div>\n</div>\n" }]
28
+ }], propDecorators: { _namespaceName: [{
29
+ type: Input,
30
+ args: ['namespaceName']
31
+ }], namespace: [{
32
+ type: Input
33
+ }], policies: [{
34
+ type: Input
35
+ }] } });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXNwYWNlLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbWVzc2FnaW5nLW1hbmFnZW1lbnQvbWVzc2FnaW5nL25hbWVzcGFjZS1saXN0L25hbWVzcGFjZS1pdGVtL25hbWVzcGFjZS1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL21lc3NhZ2luZy1tYW5hZ2VtZW50L21lc3NhZ2luZy9uYW1lc3BhY2UtbGlzdC9uYW1lc3BhY2UtaXRlbS9uYW1lc3BhY2UtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBUXZELE1BQU0sT0FBTyxzQkFBc0I7SUFObkM7UUFPVSxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQVFwRCxrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQixtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBRUQsY0FBUyxHQUF1QixFQUFFLENBQUM7UUFDbkMsYUFBUSxHQUErQixFQUFFLENBQUM7S0FDcEQ7SUFaQyxJQUNJLGNBQWMsQ0FBQyxJQUFZO1FBQzdCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQztRQUN4QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQztJQUM1RixDQUFDOytHQVJVLHNCQUFzQjttR0FBdEIsc0JBQXNCLDZMQ2ZuQyx5eENBb0NBLDJDRHhCWSxZQUFZLCtCQUFFLGFBQWEsMkVBQUUsMEJBQTBCLHVIQUFFLGdCQUFnQjs7NEZBR3hFLHNCQUFzQjtrQkFObEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSwwQkFBMEIsRUFBRSxnQkFBZ0IsQ0FBQzs4QkFPaEYsY0FBYztzQkFEakIsS0FBSzt1QkFBQyxlQUFlO2dCQVViLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEM4eVRyYW5zbGF0ZVBpcGUsIEljb25EaXJlY3RpdmUgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IE5hbWVzcGFjZUl0ZW1DYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9uYW1lc3BhY2UtaXRlbS1jYXJkL25hbWVzcGFjZS1pdGVtLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IE5BTUVTUEFDRV9QUk9QUyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL25hbWVzcGFjZS1wcm9wcyc7XG5pbXBvcnQgeyBNZXNzYWdpbmdOYW1lc3BhY2UgfSBmcm9tICcuLi8uLi8uLi9hcGkvbW9kZWwvbmFtZXNwYWNlJztcbmltcG9ydCB7IE1lc3NhZ2luZ05hbWVzcGFjZVBvbGljaWVzIH0gZnJvbSAnLi4vLi4vLi4vYXBpL21vZGVsL25hbWVzcGFjZVBvbGljaWVzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLW5hbWVzcGFjZS1pdGVtJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSWNvbkRpcmVjdGl2ZSwgTmFtZXNwYWNlSXRlbUNhcmRDb21wb25lbnQsIEM4eVRyYW5zbGF0ZVBpcGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vbmFtZXNwYWNlLWl0ZW0uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIE5hbWVzcGFjZUl0ZW1Db21wb25lbnQge1xuICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG5cbiAgQElucHV0KCduYW1lc3BhY2VOYW1lJylcbiAgc2V0IF9uYW1lc3BhY2VOYW1lKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMubmFtZXNwYWNlTmFtZSA9IG5hbWU7XG4gICAgdGhpcy5pY29uID0gTkFNRVNQQUNFX1BST1BTW25hbWVdPy5pY29uO1xuICAgIHRoaXMubmFtZXNwYWNlTGFiZWwgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChOQU1FU1BBQ0VfUFJPUFNbbmFtZV0/LmxhYmVsKSB8fCBuYW1lO1xuICB9XG4gIG5hbWVzcGFjZU5hbWUgPSAnJztcbiAgbmFtZXNwYWNlTGFiZWwgPSAnJztcbiAgaWNvbiA9ICcnO1xuXG4gIEBJbnB1dCgpIG5hbWVzcGFjZTogTWVzc2FnaW5nTmFtZXNwYWNlID0ge307XG4gIEBJbnB1dCgpIHBvbGljaWVzOiBNZXNzYWdpbmdOYW1lc3BhY2VQb2xpY2llcyA9IHt9O1xufVxuIiwiPGRpdiBjbGFzcz1cImQtZmxleC1zbSBkLWNvbC14cyBwLXQtMjQgcC1sLTE2IHAtci0xNiBtLTAgYmctbGV2ZWwtMVwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJjb2wtc20tMyBtLWItMjQgY29sLXhzLTEyIGQtZmxleCBnYXAtMTYgdGV4dC1kZWZhdWx0IGEtaS1jZW50ZXIgai1jLWNlbnRlciBhLXMtc3RyZXRjaFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgZC1jb2xcIj5cbiAgICAgIDxpXG4gICAgICAgIGNsYXNzPVwibS1iLTggaWNvbi00MCBjOHktaWNvbi1kdW9jb2xvclwiXG4gICAgICAgIFtjOHlJY29uXT1cImljb25cIlxuICAgICAgPjwvaT5cbiAgICAgIDxzcGFuIGNsYXNzPVwidGFnIHRhZy0taW5mb1wiPnt7ICdTZXJ2aWNlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8c3BhbiBjbGFzcz1cImg0XCI+e3sgbmFtZXNwYWNlTGFiZWwgfX08L3NwYW4+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY29sLXNtLTMgbS1iLTI0IGNvbC14cy0xMiBhLWktc3RyZXRjaCBkLWZsZXhcIj5cbiAgICA8YXBwLW5hbWVzcGFjZS1pdGVtLWNhcmRcbiAgICAgIFtzZXJ2aWNlTGFiZWxdPVwibmFtZXNwYWNlTGFiZWxcIlxuICAgICAgW2RhdGFUeXBlXT1cIid0b3BpY3MnXCJcbiAgICAgIFtsaW1pdF09XCJuYW1lc3BhY2U/LnRvcGljcz8ubGltaXRcIlxuICAgICAgW3ZhbHVlXT1cIm5hbWVzcGFjZT8udG9waWNzPy5jb3VudFwiXG4gICAgPjwvYXBwLW5hbWVzcGFjZS1pdGVtLWNhcmQ+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY29sLXNtLTMgbS1iLTI0IGNvbC14cy0xMiBhLWktc3RyZXRjaCBkLWZsZXhcIj5cbiAgICA8YXBwLW5hbWVzcGFjZS1pdGVtLWNhcmRcbiAgICAgIFtzZXJ2aWNlTGFiZWxdPVwibmFtZXNwYWNlTGFiZWxcIlxuICAgICAgW2RhdGFUeXBlXT1cIidwdWJsaXNoZXJzJ1wiXG4gICAgICBbdmFsdWVdPVwibmFtZXNwYWNlPy5wdWJsaXNoZXJzPy5jb3VudFwiXG4gICAgPjwvYXBwLW5hbWVzcGFjZS1pdGVtLWNhcmQ+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY29sLXNtLTMgbS1iLTI0IGNvbC14cy0xMiBhLWktc3RyZXRjaCBkLWZsZXhcIj5cbiAgICA8YXBwLW5hbWVzcGFjZS1pdGVtLWNhcmRcbiAgICAgIFtzZXJ2aWNlTGFiZWxdPVwibmFtZXNwYWNlTGFiZWxcIlxuICAgICAgW2RhdGFUeXBlXT1cIidzdWJzY3JpYmVycydcIlxuICAgICAgW3ZhbHVlXT1cIm5hbWVzcGFjZT8uc3Vic2NyaWJlcnM/LmNvdW50XCJcbiAgICA+PC9hcHAtbmFtZXNwYWNlLWl0ZW0tY2FyZD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,51 @@
1
+ import { Component, inject } from '@angular/core';
2
+ import { ActionBarItemComponent, AlertService, AppStateService, BreadcrumbModule, C8yTranslateModule, HeaderModule, HelpModule, IconDirective, LoadingComponent } from '@c8y/ngx-components';
3
+ import { CommonModule } from '@angular/common';
4
+ import { RouterLink } from '@angular/router';
5
+ import { NamespaceItemComponent } from './namespace-item/namespace-item.component';
6
+ import { MessagingNamespacesService } from '../../api/services/messaging-namespaces.service';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/common";
9
+ import * as i2 from "@c8y/ngx-components";
10
+ export class NamespaceListComponent {
11
+ constructor() {
12
+ this.alertService = inject(AlertService);
13
+ this.appState = inject(AppStateService);
14
+ this.namespacesService = inject(MessagingNamespacesService);
15
+ this.loading = true;
16
+ }
17
+ async ngOnInit() {
18
+ await this.reload();
19
+ }
20
+ async reload() {
21
+ this.loading = true;
22
+ try {
23
+ const currentTenantId = this.appState.currentTenant.value.name;
24
+ this.namespacesDetails = await this.namespacesService.getNamespacesDetails(currentTenantId);
25
+ }
26
+ catch (e) {
27
+ this.alertService.addServerFailure(e);
28
+ }
29
+ finally {
30
+ this.loading = false;
31
+ }
32
+ }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NamespaceListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
34
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NamespaceListComponent, isStandalone: true, selector: "app-namespace-list", ngImport: i0, template: "<c8y-title>{{ 'Messaging service' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'monitoring'\"\n [label]=\"'Monitoring' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Messaging service' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <li>\n <a\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n (click)=\"reload()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': loading }\"\n ></i>\n {{ 'Reload' | translate }}\n </a>\n </li>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/docs/standard-tenant/monitoring/#messaging-service\"></c8y-help>\n\n<div\n class=\"interact-grid\"\n *ngIf=\"!loading; else loadingTemplate\"\n>\n <a\n class=\"card\"\n *ngFor=\"let namespace of namespacesDetails\"\n [routerLink]=\"['namespace', namespace.id]\"\n >\n <app-namespace-item\n [namespaceName]=\"namespace.id\"\n [namespace]=\"namespace.namespace\"\n ></app-namespace-item>\n </a>\n</div>\n\n<ng-template #loadingTemplate>\n <c8y-loading></c8y-loading>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: HeaderModule }, { kind: "component", type: i2.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "ngmodule", type: HelpModule }, { kind: "component", type: i2.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "ngmodule", type: C8yTranslateModule }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "component", type: NamespaceItemComponent, selector: "app-namespace-item", inputs: ["namespaceName", "namespace", "policies"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: BreadcrumbModule }, { kind: "component", type: i2.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i2.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }] }); }
35
+ }
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NamespaceListComponent, decorators: [{
37
+ type: Component,
38
+ args: [{ selector: 'app-namespace-list', imports: [
39
+ CommonModule,
40
+ HeaderModule,
41
+ HelpModule,
42
+ C8yTranslateModule,
43
+ NamespaceItemComponent,
44
+ RouterLink,
45
+ BreadcrumbModule,
46
+ ActionBarItemComponent,
47
+ IconDirective,
48
+ LoadingComponent
49
+ ], standalone: true, template: "<c8y-title>{{ 'Messaging service' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'monitoring'\"\n [label]=\"'Monitoring' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Messaging service' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <li>\n <a\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n (click)=\"reload()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': loading }\"\n ></i>\n {{ 'Reload' | translate }}\n </a>\n </li>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/docs/standard-tenant/monitoring/#messaging-service\"></c8y-help>\n\n<div\n class=\"interact-grid\"\n *ngIf=\"!loading; else loadingTemplate\"\n>\n <a\n class=\"card\"\n *ngFor=\"let namespace of namespacesDetails\"\n [routerLink]=\"['namespace', namespace.id]\"\n >\n <app-namespace-item\n [namespaceName]=\"namespace.id\"\n [namespace]=\"namespace.namespace\"\n ></app-namespace-item>\n </a>\n</div>\n\n<ng-template #loadingTemplate>\n <c8y-loading></c8y-loading>\n</ng-template>\n" }]
50
+ }] });
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXNwYWNlLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbWVzc2FnaW5nLW1hbmFnZW1lbnQvbWVzc2FnaW5nL25hbWVzcGFjZS1saXN0L25hbWVzcGFjZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL21lc3NhZ2luZy1tYW5hZ2VtZW50L21lc3NhZ2luZy9uYW1lc3BhY2UtbGlzdC9uYW1lc3BhY2UtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLFlBQVksRUFDWixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osVUFBVSxFQUNWLGFBQWEsRUFDYixnQkFBZ0IsRUFDakIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDOzs7O0FBb0I3RixNQUFNLE9BQU8sc0JBQXNCO0lBakJuQztRQWtCRSxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwQyxhQUFRLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ25DLHNCQUFpQixHQUFHLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBR3ZELFlBQU8sR0FBRyxJQUFJLENBQUM7S0FpQmhCO0lBZkMsS0FBSyxDQUFDLFFBQVE7UUFDWixNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU07UUFDVixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUM7WUFDSCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQy9ELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM5RixDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEMsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7K0dBdEJVLHNCQUFzQjttR0FBdEIsc0JBQXNCLDhFQ25DbkMsK3FDQStDQSwyQ0R6QkksWUFBWSw2VkFDWixZQUFZLGtJQUNaLFVBQVUsdUpBQ1Ysa0JBQWtCLCtGQUNsQixzQkFBc0IsbUhBQ3RCLFVBQVUsbU9BQ1YsZ0JBQWdCLHNRQUNoQixzQkFBc0IsMEpBQ3RCLGFBQWEsMkVBQ2IsZ0JBQWdCOzs0RkFJUCxzQkFBc0I7a0JBakJsQyxTQUFTOytCQUNFLG9CQUFvQixXQUVyQjt3QkFDUCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osVUFBVTt3QkFDVixrQkFBa0I7d0JBQ2xCLHNCQUFzQjt3QkFDdEIsVUFBVTt3QkFDVixnQkFBZ0I7d0JBQ2hCLHNCQUFzQjt3QkFDdEIsYUFBYTt3QkFDYixnQkFBZ0I7cUJBQ2pCLGNBQ1csSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGlvbkJhckl0ZW1Db21wb25lbnQsXG4gIEFsZXJ0U2VydmljZSxcbiAgQXBwU3RhdGVTZXJ2aWNlLFxuICBCcmVhZGNydW1iTW9kdWxlLFxuICBDOHlUcmFuc2xhdGVNb2R1bGUsXG4gIEhlYWRlck1vZHVsZSxcbiAgSGVscE1vZHVsZSxcbiAgSWNvbkRpcmVjdGl2ZSxcbiAgTG9hZGluZ0NvbXBvbmVudFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE5hbWVzcGFjZUl0ZW1Db21wb25lbnQgfSBmcm9tICcuL25hbWVzcGFjZS1pdGVtL25hbWVzcGFjZS1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNZXNzYWdpbmdOYW1lc3BhY2VzU2VydmljZSB9IGZyb20gJy4uLy4uL2FwaS9zZXJ2aWNlcy9tZXNzYWdpbmctbmFtZXNwYWNlcy5zZXJ2aWNlJztcbmltcG9ydCB7IE1lc3NhZ2luZ05hbWVzcGFjZURldGFpbHMgfSBmcm9tICcuLi8uLi9hcGkvbW9kZWwvbmFtZXNwYWNlRGV0YWlscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1uYW1lc3BhY2UtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9uYW1lc3BhY2UtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSGVhZGVyTW9kdWxlLFxuICAgIEhlbHBNb2R1bGUsXG4gICAgQzh5VHJhbnNsYXRlTW9kdWxlLFxuICAgIE5hbWVzcGFjZUl0ZW1Db21wb25lbnQsXG4gICAgUm91dGVyTGluayxcbiAgICBCcmVhZGNydW1iTW9kdWxlLFxuICAgIEFjdGlvbkJhckl0ZW1Db21wb25lbnQsXG4gICAgSWNvbkRpcmVjdGl2ZSxcbiAgICBMb2FkaW5nQ29tcG9uZW50XG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTmFtZXNwYWNlTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGFsZXJ0U2VydmljZSA9IGluamVjdChBbGVydFNlcnZpY2UpO1xuICBhcHBTdGF0ZSA9IGluamVjdChBcHBTdGF0ZVNlcnZpY2UpO1xuICBuYW1lc3BhY2VzU2VydmljZSA9IGluamVjdChNZXNzYWdpbmdOYW1lc3BhY2VzU2VydmljZSk7XG5cbiAgbmFtZXNwYWNlc0RldGFpbHM6IE1lc3NhZ2luZ05hbWVzcGFjZURldGFpbHNbXTtcbiAgbG9hZGluZyA9IHRydWU7XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgYXdhaXQgdGhpcy5yZWxvYWQoKTtcbiAgfVxuXG4gIGFzeW5jIHJlbG9hZCgpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjdXJyZW50VGVuYW50SWQgPSB0aGlzLmFwcFN0YXRlLmN1cnJlbnRUZW5hbnQudmFsdWUubmFtZTtcbiAgICAgIHRoaXMubmFtZXNwYWNlc0RldGFpbHMgPSBhd2FpdCB0aGlzLm5hbWVzcGFjZXNTZXJ2aWNlLmdldE5hbWVzcGFjZXNEZXRhaWxzKGN1cnJlbnRUZW5hbnRJZCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iLCI8Yzh5LXRpdGxlPnt7ICdNZXNzYWdpbmcgc2VydmljZScgfCB0cmFuc2xhdGUgfX08L2M4eS10aXRsZT5cblxuPGM4eS1icmVhZGNydW1iPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIFtpY29uXT1cIidtb25pdG9yaW5nJ1wiXG4gICAgW2xhYmVsXT1cIidNb25pdG9yaW5nJyB8IHRyYW5zbGF0ZVwiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtIFtsYWJlbF09XCInTWVzc2FnaW5nIHNlcnZpY2UnIHwgdHJhbnNsYXRlXCI+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuPC9jOHktYnJlYWRjcnVtYj5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW0gW3BsYWNlbWVudF09XCIncmlnaHQnXCI+XG4gIDxsaT5cbiAgICA8YVxuICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmtcIlxuICAgICAgdGl0bGU9XCJ7eyAnUmVsb2FkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAoY2xpY2spPVwicmVsb2FkKClcIlxuICAgID5cbiAgICAgIDxpXG4gICAgICAgIGM4eUljb249XCJyZWZyZXNoXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnaWNvbi1zcGluJzogbG9hZGluZyB9XCJcbiAgICAgID48L2k+XG4gICAgICB7eyAnUmVsb2FkJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYT5cbiAgPC9saT5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1oZWxwIHNyYz1cIi9kb2NzL3N0YW5kYXJkLXRlbmFudC9tb25pdG9yaW5nLyNtZXNzYWdpbmctc2VydmljZVwiPjwvYzh5LWhlbHA+XG5cbjxkaXZcbiAgY2xhc3M9XCJpbnRlcmFjdC1ncmlkXCJcbiAgKm5nSWY9XCIhbG9hZGluZzsgZWxzZSBsb2FkaW5nVGVtcGxhdGVcIlxuPlxuICA8YVxuICAgIGNsYXNzPVwiY2FyZFwiXG4gICAgKm5nRm9yPVwibGV0IG5hbWVzcGFjZSBvZiBuYW1lc3BhY2VzRGV0YWlsc1wiXG4gICAgW3JvdXRlckxpbmtdPVwiWyduYW1lc3BhY2UnLCBuYW1lc3BhY2UuaWRdXCJcbiAgPlxuICAgIDxhcHAtbmFtZXNwYWNlLWl0ZW1cbiAgICAgIFtuYW1lc3BhY2VOYW1lXT1cIm5hbWVzcGFjZS5pZFwiXG4gICAgICBbbmFtZXNwYWNlXT1cIm5hbWVzcGFjZS5uYW1lc3BhY2VcIlxuICAgID48L2FwcC1uYW1lc3BhY2UtaXRlbT5cbiAgPC9hPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZ1RlbXBsYXRlPlxuICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -0,0 +1,68 @@
1
+ import { Component, computed, input } from '@angular/core';
2
+ import { C8yTranslatePipe, gettext, IconDirective } from '@c8y/ngx-components';
3
+ import { NgClass, NgIf, PercentPipe } from '@angular/common';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Usage component displays usage information in a form of e.g. "51% used".
7
+ * It can be used in two ways:
8
+ * 1. By providing `count` and `limit` inputs, it will calculate the usage percentage.
9
+ * 2. By providing `percentage` input, it will use the provided percentage value.
10
+ * Note: `percentage` input takes precedence over `count` and `limit` inputs.
11
+ */
12
+ export class UsageComponent {
13
+ constructor() {
14
+ this.count = input(null);
15
+ this.limit = input(null);
16
+ /**
17
+ * Percentage of usage. Value range is from 0 to 100 (or more).
18
+ * For example, if 10% is used, this value should be provided as 10 (not 0.1).
19
+ */
20
+ this.percentage = input(null);
21
+ /**
22
+ * Usage as a fraction (e.g. if 50% is used, usage value will be 0.5)
23
+ */
24
+ this.usage = computed(() => this.percentage() != null ? this.percentage() / 100 : this.getUsage(this.count(), this.limit()));
25
+ this.status = computed(() => this.getStatus(this.usage()));
26
+ this.usageToDisplay = gettext('{{ percentageOfQuota }} used');
27
+ this.statusMap = {
28
+ danger: ['tag--danger'],
29
+ warning: ['tag--warning'],
30
+ success: ['tag--success']
31
+ };
32
+ }
33
+ /**
34
+ * Get usage as fraction of count and limit.
35
+ * E.g. if count is 5 and limit is 10, returned usage will be 0.5
36
+ * @param count Usage count
37
+ * @param limit Usage limit
38
+ * @returns Count divided by limit or null if count or limit is null or limit is -1 (indicates no limit)
39
+ */
40
+ getUsage(count, limit) {
41
+ if (count == null || limit == null || limit === -1) {
42
+ return null;
43
+ }
44
+ return count / limit;
45
+ }
46
+ getStatus(usage) {
47
+ if (usage == null) {
48
+ return null;
49
+ }
50
+ const percentage = usage * 100;
51
+ if (percentage >= 80) {
52
+ return 'danger';
53
+ }
54
+ else if (percentage >= 50) {
55
+ return 'warning';
56
+ }
57
+ else {
58
+ return 'success';
59
+ }
60
+ }
61
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UsageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
62
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: UsageComponent, isStandalone: true, selector: "app-usage", inputs: { count: { classPropertyName: "count", publicName: "count", isSignal: true, isRequired: false, transformFunction: null }, limit: { classPropertyName: "limit", publicName: "limit", isSignal: true, isRequired: false, transformFunction: null }, percentage: { classPropertyName: "percentage", publicName: "percentage", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "d-contents" }, ngImport: i0, template: "<div\n class=\"tag no-pointer\"\n [ngClass]=\"statusMap[status()]\"\n *ngIf=\"usage() !== null\"\n>\n <i\n class=\"text-danger m-r-4 text-12\"\n c8yIcon=\"exclamation-circle\"\n *ngIf=\"status() === 'danger'\"\n ></i>\n <span>\n {{ usageToDisplay | translate: { percentageOfQuota: (usage() | percent: '1.0-2') } }}\n </span>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: PercentPipe, name: "percent" }] }); }
63
+ }
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UsageComponent, decorators: [{
65
+ type: Component,
66
+ args: [{ selector: 'app-usage', standalone: true, imports: [IconDirective, NgIf, NgClass, IconDirective, C8yTranslatePipe, PercentPipe], host: { class: 'd-contents' }, template: "<div\n class=\"tag no-pointer\"\n [ngClass]=\"statusMap[status()]\"\n *ngIf=\"usage() !== null\"\n>\n <i\n class=\"text-danger m-r-4 text-12\"\n c8yIcon=\"exclamation-circle\"\n *ngIf=\"status() === 'danger'\"\n ></i>\n <span>\n {{ usageToDisplay | translate: { percentageOfQuota: (usage() | percent: '1.0-2') } }}\n </span>\n</div>\n" }]
67
+ }] });
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbWVzc2FnaW5nLW1hbmFnZW1lbnQvbWVzc2FnaW5nL3NoYXJlZC91c2FnZS91c2FnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9tZXNzYWdpbmctbWFuYWdlbWVudC9tZXNzYWdpbmcvc2hhcmVkL3VzYWdlL3VzYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUU3RDs7Ozs7O0dBTUc7QUFRSCxNQUFNLE9BQU8sY0FBYztJQVAzQjtRQVFFLFVBQUssR0FBRyxLQUFLLENBQWdCLElBQUksQ0FBQyxDQUFDO1FBQ25DLFVBQUssR0FBRyxLQUFLLENBQWdCLElBQUksQ0FBQyxDQUFDO1FBQ25DOzs7V0FHRztRQUNILGVBQVUsR0FBRyxLQUFLLENBQWdCLElBQUksQ0FBQyxDQUFDO1FBRXhDOztXQUVHO1FBQ0gsVUFBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FDcEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQ2hHLENBQUM7UUFDRixXQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0RCxtQkFBYyxHQUFHLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBRXpELGNBQVMsR0FBRztZQUNWLE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQztZQUN2QixPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7WUFDekIsT0FBTyxFQUFFLENBQUMsY0FBYyxDQUFDO1NBQzFCLENBQUM7S0E4Qkg7SUE1QkM7Ozs7OztPQU1HO0lBQ0ssUUFBUSxDQUFDLEtBQWEsRUFBRSxLQUFhO1FBQzNDLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ25ELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRU8sU0FBUyxDQUFDLEtBQW9CO1FBQ3BDLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2xCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE1BQU0sVUFBVSxHQUFHLEtBQUssR0FBRyxHQUFHLENBQUM7UUFFL0IsSUFBSSxVQUFVLElBQUksRUFBRSxFQUFFLENBQUM7WUFDckIsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQzthQUFNLElBQUksVUFBVSxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQzVCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7K0dBbkRVLGNBQWM7bUdBQWQsY0FBYyxnZkNsQjNCLG1XQWNBLDRDREFZLGFBQWEsMkVBQUUsSUFBSSw2RkFBRSxPQUFPLCtFQUFpQixnQkFBZ0IsNkNBQUUsV0FBVzs7NEZBSXpFLGNBQWM7a0JBUDFCLFNBQVM7K0JBQ0UsV0FBVyxjQUNULElBQUksV0FDUCxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLENBQUMsUUFFL0UsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEM4eVRyYW5zbGF0ZVBpcGUsIGdldHRleHQsIEljb25EaXJlY3RpdmUgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nSWYsIFBlcmNlbnRQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLyoqXG4gKiBVc2FnZSBjb21wb25lbnQgZGlzcGxheXMgdXNhZ2UgaW5mb3JtYXRpb24gaW4gYSBmb3JtIG9mIGUuZy4gXCI1MSUgdXNlZFwiLlxuICogSXQgY2FuIGJlIHVzZWQgaW4gdHdvIHdheXM6XG4gKiAxLiBCeSBwcm92aWRpbmcgYGNvdW50YCBhbmQgYGxpbWl0YCBpbnB1dHMsIGl0IHdpbGwgY2FsY3VsYXRlIHRoZSB1c2FnZSBwZXJjZW50YWdlLlxuICogMi4gQnkgcHJvdmlkaW5nIGBwZXJjZW50YWdlYCBpbnB1dCwgaXQgd2lsbCB1c2UgdGhlIHByb3ZpZGVkIHBlcmNlbnRhZ2UgdmFsdWUuXG4gKiBOb3RlOiBgcGVyY2VudGFnZWAgaW5wdXQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGBjb3VudGAgYW5kIGBsaW1pdGAgaW5wdXRzLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdXNhZ2UnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbSWNvbkRpcmVjdGl2ZSwgTmdJZiwgTmdDbGFzcywgSWNvbkRpcmVjdGl2ZSwgQzh5VHJhbnNsYXRlUGlwZSwgUGVyY2VudFBpcGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vdXNhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7IGNsYXNzOiAnZC1jb250ZW50cycgfVxufSlcbmV4cG9ydCBjbGFzcyBVc2FnZUNvbXBvbmVudCB7XG4gIGNvdW50ID0gaW5wdXQ8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG4gIGxpbWl0ID0gaW5wdXQ8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG4gIC8qKlxuICAgKiBQZXJjZW50YWdlIG9mIHVzYWdlLiBWYWx1ZSByYW5nZSBpcyBmcm9tIDAgdG8gMTAwIChvciBtb3JlKS5cbiAgICogRm9yIGV4YW1wbGUsIGlmIDEwJSBpcyB1c2VkLCB0aGlzIHZhbHVlIHNob3VsZCBiZSBwcm92aWRlZCBhcyAxMCAobm90IDAuMSkuXG4gICAqL1xuICBwZXJjZW50YWdlID0gaW5wdXQ8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqXG4gICAqIFVzYWdlIGFzIGEgZnJhY3Rpb24gKGUuZy4gaWYgNTAlIGlzIHVzZWQsIHVzYWdlIHZhbHVlIHdpbGwgYmUgMC41KVxuICAgKi9cbiAgdXNhZ2UgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMucGVyY2VudGFnZSgpICE9IG51bGwgPyB0aGlzLnBlcmNlbnRhZ2UoKSAvIDEwMCA6IHRoaXMuZ2V0VXNhZ2UodGhpcy5jb3VudCgpLCB0aGlzLmxpbWl0KCkpXG4gICk7XG4gIHN0YXR1cyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZ2V0U3RhdHVzKHRoaXMudXNhZ2UoKSkpO1xuICB1c2FnZVRvRGlzcGxheSA9IGdldHRleHQoJ3t7IHBlcmNlbnRhZ2VPZlF1b3RhIH19IHVzZWQnKTtcblxuICBzdGF0dXNNYXAgPSB7XG4gICAgZGFuZ2VyOiBbJ3RhZy0tZGFuZ2VyJ10sXG4gICAgd2FybmluZzogWyd0YWctLXdhcm5pbmcnXSxcbiAgICBzdWNjZXNzOiBbJ3RhZy0tc3VjY2VzcyddXG4gIH07XG5cbiAgLyoqXG4gICAqIEdldCB1c2FnZSBhcyBmcmFjdGlvbiBvZiBjb3VudCBhbmQgbGltaXQuXG4gICAqIEUuZy4gaWYgY291bnQgaXMgNSBhbmQgbGltaXQgaXMgMTAsIHJldHVybmVkIHVzYWdlIHdpbGwgYmUgMC41XG4gICAqIEBwYXJhbSBjb3VudCBVc2FnZSBjb3VudFxuICAgKiBAcGFyYW0gbGltaXQgVXNhZ2UgbGltaXRcbiAgICogQHJldHVybnMgQ291bnQgZGl2aWRlZCBieSBsaW1pdCBvciBudWxsIGlmIGNvdW50IG9yIGxpbWl0IGlzIG51bGwgb3IgbGltaXQgaXMgLTEgKGluZGljYXRlcyBubyBsaW1pdClcbiAgICovXG4gIHByaXZhdGUgZ2V0VXNhZ2UoY291bnQ6IG51bWJlciwgbGltaXQ6IG51bWJlcik6IG51bWJlciB8IG51bGwge1xuICAgIGlmIChjb3VudCA9PSBudWxsIHx8IGxpbWl0ID09IG51bGwgfHwgbGltaXQgPT09IC0xKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNvdW50IC8gbGltaXQ7XG4gIH1cblxuICBwcml2YXRlIGdldFN0YXR1cyh1c2FnZTogbnVtYmVyIHwgbnVsbCkge1xuICAgIGlmICh1c2FnZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgcGVyY2VudGFnZSA9IHVzYWdlICogMTAwO1xuXG4gICAgaWYgKHBlcmNlbnRhZ2UgPj0gODApIHtcbiAgICAgIHJldHVybiAnZGFuZ2VyJztcbiAgICB9IGVsc2UgaWYgKHBlcmNlbnRhZ2UgPj0gNTApIHtcbiAgICAgIHJldHVybiAnd2FybmluZyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnc3VjY2Vzcyc7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwidGFnIG5vLXBvaW50ZXJcIlxuICBbbmdDbGFzc109XCJzdGF0dXNNYXBbc3RhdHVzKCldXCJcbiAgKm5nSWY9XCJ1c2FnZSgpICE9PSBudWxsXCJcbj5cbiAgPGlcbiAgICBjbGFzcz1cInRleHQtZGFuZ2VyIG0tci00IHRleHQtMTJcIlxuICAgIGM4eUljb249XCJleGNsYW1hdGlvbi1jaXJjbGVcIlxuICAgICpuZ0lmPVwic3RhdHVzKCkgPT09ICdkYW5nZXInXCJcbiAgPjwvaT5cbiAgPHNwYW4+XG4gICAge3sgdXNhZ2VUb0Rpc3BsYXkgfCB0cmFuc2xhdGU6IHsgcGVyY2VudGFnZU9mUXVvdGE6ICh1c2FnZSgpIHwgcGVyY2VudDogJzEuMC0yJykgfSB9fVxuICA8L3NwYW4+XG48L2Rpdj5cbiJdfQ==