@c8y/ngx-components 1021.49.12 → 1021.51.1

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 (183) hide show
  1. package/core/aggregation/aggregation.model.d.ts.map +1 -0
  2. package/core/aggregation/aggregation.service.d.ts +44 -0
  3. package/core/aggregation/aggregation.service.d.ts.map +1 -0
  4. package/core/aggregation/index.d.ts +3 -0
  5. package/core/aggregation/index.d.ts.map +1 -0
  6. package/core/common/index.d.ts +0 -2
  7. package/core/common/index.d.ts.map +1 -1
  8. package/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.d.ts +2 -2
  9. package/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.d.ts.map +1 -1
  10. package/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.d.ts +1 -1
  11. package/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.d.ts.map +1 -1
  12. package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts +1 -1
  13. package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts.map +1 -1
  14. package/core/i18n/pattern-messages.data.d.ts +18 -0
  15. package/core/i18n/pattern-messages.data.d.ts.map +1 -1
  16. package/core/index.d.ts +1 -0
  17. package/core/index.d.ts.map +1 -1
  18. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts +54 -42
  19. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts.map +1 -1
  20. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.d.ts +28 -8
  21. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.d.ts.map +1 -1
  22. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts +3 -52
  23. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts.map +1 -1
  24. package/datapoints-export-selector/datapoints-export-selector.model.d.ts +5 -14
  25. package/datapoints-export-selector/datapoints-export-selector.model.d.ts.map +1 -1
  26. package/device-grid/device-grid.component.d.ts.map +1 -1
  27. package/device-grid/device-grid.service.d.ts +2 -0
  28. package/device-grid/device-grid.service.d.ts.map +1 -1
  29. package/esm2022/alarms/alarms-type-filter.component.mjs +3 -3
  30. package/esm2022/core/aggregation/aggregation.model.mjs +46 -0
  31. package/esm2022/core/aggregation/aggregation.service.mjs +76 -0
  32. package/esm2022/core/aggregation/index.mjs +3 -0
  33. package/esm2022/core/common/index.mjs +1 -3
  34. package/esm2022/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.mjs +2 -2
  35. package/esm2022/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.mjs +2 -2
  36. package/esm2022/core/dashboard/wiget-time-context/widget-time-context.component.mjs +4 -4
  37. package/esm2022/core/i18n/pattern-messages.data.mjs +19 -1
  38. package/esm2022/core/index.mjs +2 -1
  39. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.mjs +166 -164
  40. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.mjs +82 -48
  41. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.mjs +5 -95
  42. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-data-scope/datapoints-exports-selector-data-scope.component.mjs +3 -3
  43. package/esm2022/datapoints-export-selector/datapoints-export-selector.component.mjs +3 -3
  44. package/esm2022/datapoints-export-selector/datapoints-export-selector.model.mjs +1 -9
  45. package/esm2022/device-grid/device-grid.component.mjs +3 -3
  46. package/esm2022/device-grid/device-grid.service.mjs +16 -1
  47. package/esm2022/device-list/add-smart-group.component.mjs +3 -3
  48. package/esm2022/interval-picker/interval-picker.model.mjs +5 -1
  49. package/esm2022/operations/bulk-operation-list-item/bulk-operation-list-item.service.mjs +5 -4
  50. package/esm2022/operations/operation-details/operation-details.module.mjs +7 -7
  51. package/esm2022/operations/operations-list/device-control.feature.mjs +20 -0
  52. package/esm2022/operations/operations-list/index.mjs +4 -3
  53. package/esm2022/operations/operations-list/operations-list-item.component.mjs +11 -9
  54. package/esm2022/operations/operations-list/operations-list.component.mjs +15 -10
  55. package/esm2022/operations/operations-list/operations-list.module.mjs +16 -41
  56. package/esm2022/operations/operations-list/operations-list.service.mjs +4 -3
  57. package/esm2022/operations/operations.module.mjs +21 -14
  58. package/esm2022/operations/shared/operations.service.mjs +4 -3
  59. package/esm2022/services/index.mjs +14 -3
  60. package/esm2022/services/service-command-tab/c8y-ngx-components-services-service-command-tab.mjs +5 -0
  61. package/esm2022/services/service-command-tab/index.mjs +3 -0
  62. package/esm2022/services/service-command-tab/service-command-tab.component.mjs +33 -0
  63. package/esm2022/services/service-command-tab/service-command.feature.mjs +14 -0
  64. package/esm2022/services/services-device-tab/index.mjs +9 -3
  65. package/esm2022/services/services-device-tab/services-device-tab.component.mjs +3 -4
  66. package/esm2022/services/services-device-tab/services-device-tab.guard.mjs +2 -2
  67. package/esm2022/services/services-device-tab/services.breadcrumb-factory.mjs +13 -1
  68. package/esm2022/services/services.module.mjs +4 -2
  69. package/esm2022/services/shared/c8y-ngx-components-services-shared.mjs +5 -0
  70. package/esm2022/services/shared/index.mjs +3 -0
  71. package/esm2022/services/shared/service-command.service.mjs +118 -0
  72. package/esm2022/services/shared/services.model.mjs +23 -0
  73. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.mjs +25 -41
  74. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.mjs +3 -3
  75. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.mjs +55 -49
  76. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.mjs +25 -73
  77. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-widget.model.mjs +20 -20
  78. package/esm2022/widgets/implementations/datapoints-table/datapoints-table.service.mjs +19 -19
  79. package/fesm2022/c8y-ngx-components-alarms.mjs +2 -2
  80. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  81. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +248 -308
  82. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
  83. package/fesm2022/c8y-ngx-components-device-grid.mjs +17 -2
  84. package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
  85. package/fesm2022/c8y-ngx-components-device-list.mjs +2 -2
  86. package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
  87. package/fesm2022/c8y-ngx-components-interval-picker.mjs +5 -1
  88. package/fesm2022/c8y-ngx-components-interval-picker.mjs.map +1 -1
  89. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs +3 -2
  90. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs.map +1 -1
  91. package/fesm2022/c8y-ngx-components-operations-operation-details.mjs +5 -5
  92. package/fesm2022/c8y-ngx-components-operations-operation-details.mjs.map +1 -1
  93. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +57 -52
  94. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
  95. package/fesm2022/c8y-ngx-components-operations-shared.mjs +3 -2
  96. package/fesm2022/c8y-ngx-components-operations-shared.mjs.map +1 -1
  97. package/fesm2022/c8y-ngx-components-operations.mjs +42 -35
  98. package/fesm2022/c8y-ngx-components-operations.mjs.map +1 -1
  99. package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs +49 -0
  100. package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs.map +1 -0
  101. package/fesm2022/c8y-ngx-components-services-shared.mjs +145 -0
  102. package/fesm2022/c8y-ngx-components-services-shared.mjs.map +1 -0
  103. package/fesm2022/c8y-ngx-components-services.mjs +20 -113
  104. package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
  105. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +1075 -1253
  106. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
  107. package/fesm2022/c8y-ngx-components.mjs +136 -76
  108. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  109. package/interval-picker/interval-picker.model.d.ts +6 -0
  110. package/interval-picker/interval-picker.model.d.ts.map +1 -1
  111. package/locales/de.po +52 -41
  112. package/locales/es.po +52 -41
  113. package/locales/fr.po +51 -40
  114. package/locales/ja_JP.po +53 -43
  115. package/locales/ko.po +51 -34
  116. package/locales/locales.pot +42 -31
  117. package/locales/nl.po +52 -41
  118. package/locales/pl.po +52 -40
  119. package/locales/pt_BR.po +51 -40
  120. package/locales/zh_CN.po +50 -33
  121. package/locales/zh_TW.po +50 -33
  122. package/operations/bulk-operation-list-item/bulk-operation-list-item.service.d.ts +2 -2
  123. package/operations/bulk-operation-list-item/bulk-operation-list-item.service.d.ts.map +1 -1
  124. package/operations/operation-details/operation-details.module.d.ts +1 -1
  125. package/operations/operations-list/device-control.feature.d.ts +4 -0
  126. package/operations/operations-list/device-control.feature.d.ts.map +1 -0
  127. package/operations/operations-list/index.d.ts +3 -2
  128. package/operations/operations-list/index.d.ts.map +1 -1
  129. package/operations/operations-list/operations-list-item.component.d.ts +1 -1
  130. package/operations/operations-list/operations-list-item.component.d.ts.map +1 -1
  131. package/operations/operations-list/operations-list.component.d.ts +3 -1
  132. package/operations/operations-list/operations-list.component.d.ts.map +1 -1
  133. package/operations/operations-list/operations-list.module.d.ts +3 -9
  134. package/operations/operations-list/operations-list.module.d.ts.map +1 -1
  135. package/operations/operations.module.d.ts +1 -2
  136. package/operations/operations.module.d.ts.map +1 -1
  137. package/package.json +1 -1
  138. package/services/index.d.ts +13 -2
  139. package/services/index.d.ts.map +1 -1
  140. package/services/service-command-tab/c8y-ngx-components-services-service-command-tab.d.ts.map +1 -0
  141. package/services/service-command-tab/index.d.ts +3 -0
  142. package/services/service-command-tab/index.d.ts.map +1 -0
  143. package/services/service-command-tab/service-command-tab.component.d.ts +12 -0
  144. package/services/service-command-tab/service-command-tab.component.d.ts.map +1 -0
  145. package/services/service-command-tab/service-command.feature.d.ts +3 -0
  146. package/services/service-command-tab/service-command.feature.d.ts.map +1 -0
  147. package/services/services-device-tab/index.d.ts +8 -2
  148. package/services/services-device-tab/index.d.ts.map +1 -1
  149. package/services/services-device-tab/services-device-tab.component.d.ts +2 -2
  150. package/services/services-device-tab/services-device-tab.component.d.ts.map +1 -1
  151. package/services/services-device-tab/services.breadcrumb-factory.d.ts.map +1 -1
  152. package/services/services.module.d.ts.map +1 -1
  153. package/services/shared/c8y-ngx-components-services-shared.d.ts.map +1 -0
  154. package/services/shared/index.d.ts +3 -0
  155. package/services/shared/index.d.ts.map +1 -0
  156. package/services/{services-device-tab → shared}/service-command.service.d.ts +10 -7
  157. package/services/shared/service-command.service.d.ts.map +1 -0
  158. package/services/shared/services.model.d.ts +31 -0
  159. package/services/shared/services.model.d.ts.map +1 -0
  160. package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts +3 -5
  161. package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts.map +1 -1
  162. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts +7 -2
  163. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts.map +1 -1
  164. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.d.ts +7 -27
  165. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.d.ts.map +1 -1
  166. package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts +4 -3
  167. package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts.map +1 -1
  168. package/widgets/implementations/datapoints-table/datapoints-table.service.d.ts +5 -5
  169. package/widgets/implementations/datapoints-table/datapoints-table.service.d.ts.map +1 -1
  170. package/core/common/aggregation/aggregation.model.d.ts.map +0 -1
  171. package/core/common/aggregation/aggregation.service.d.ts +0 -17
  172. package/core/common/aggregation/aggregation.service.d.ts.map +0 -1
  173. package/esm2022/core/common/aggregation/aggregation.model.mjs +0 -46
  174. package/esm2022/core/common/aggregation/aggregation.service.mjs +0 -34
  175. package/esm2022/services/services-device-tab/service-command.service.mjs +0 -113
  176. package/esm2022/services/services-device-tab/service-device-tab.model.mjs +0 -2
  177. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.mjs +0 -124
  178. package/services/services-device-tab/service-command.service.d.ts.map +0 -1
  179. package/services/services-device-tab/service-device-tab.model.d.ts +0 -11
  180. package/services/services-device-tab/service-device-tab.model.d.ts.map +0 -1
  181. package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.d.ts +0 -56
  182. package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.d.ts.map +0 -1
  183. /package/core/{common/aggregation → aggregation}/aggregation.model.d.ts +0 -0
@@ -55,11 +55,11 @@ class AddSmartGroupComponent {
55
55
  this.modal.hide();
56
56
  }
57
57
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AddSmartGroupComponent, deps: [{ token: i1.BsModalRef }, { token: i2.SmartGroupsService }, { token: i1$1.DeviceGridService }, { token: i4.AlertService }, { token: i5.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
58
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: AddSmartGroupComponent, selector: "c8y-add-smart-group", ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"'c8y-group-smart'\"></i>\n <h4\n id=\"modal-title\"\n translate\n >\n Add smart group\n </h4>\n </div>\n\n <form\n #createSmartGroup=\"ngForm\"\n (ngSubmit)=\"createSmartGroup.form.valid && create()\"\n >\n <div class=\"modal-inner-scroll\">\n <div\n class=\"modal-body\"\n id=\"modal-body\"\n >\n <c8y-form-group>\n <label\n class=\"d-inline-block\"\n for=\"name\"\n translate\n >\n Group name\n </label>\n <button\n class=\"btn-help btn-help--sm a-s-center\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"customPopoverTemplate\"\n placement=\"right\"\n type=\"button\"\n [outsideClick]=\"true\"\n data-cy=\"add-smart-group-component--Help-button\"\n ></button>\n <input\n class=\"form-control\"\n id=\"name\"\n placeholder=\"{{ 'e.g. My smart group' | translate }}\"\n name=\"name\"\n type=\"text\"\n autocomplete=\"off\"\n required\n [(ngModel)]=\"smartGroup.name\"\n />\n </c8y-form-group>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n (click)=\"close()\"\n translate\n >\n Cancel\n </button>\n\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add' | translate }}\"\n type=\"submit\"\n [disabled]=\"createSmartGroup.form.invalid\"\n translate\n >\n Add\n </button>\n </div>\n </form>\n</div>\n\n<ng-template #customPopoverTemplate>\n <div\n class=\"m-b-16\"\n style=\"pointer-events: auto\"\n tabindex=\"0\"\n data-cy=\"add-smart-group-component--popover-Template\"\n translate\n >\n Th\u0435 smart group will be created based on the filters currently applied in the device list.\n <br />\n </div>\n <p\n c8y-guide-docs\n translate\n ngNonBindable\n >\n <small>\n Find out more in the\n <a c8y-guide-href=\"docs/device-management-application/grouping-devices/#using-smart-groups\">\n user documentation\n </a>\n .\n </small>\n </p>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i4.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i4.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i4.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i4.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "directive", type: i7.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: i4.C8yTranslatePipe, name: "translate" }] }); }
58
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: AddSmartGroupComponent, selector: "c8y-add-smart-group", ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"'c8y-group-smart'\"></i>\n <h4\n id=\"modal-title\"\n translate\n >\n Add smart group\n </h4>\n </div>\n\n <form\n #createSmartGroup=\"ngForm\"\n (ngSubmit)=\"createSmartGroup.form.valid && create()\"\n >\n <div class=\"modal-inner-scroll\">\n <div\n class=\"modal-body\"\n id=\"modal-body\"\n >\n <c8y-form-group>\n <label\n class=\"d-inline-block\"\n for=\"name\"\n translate\n >\n Group name\n </label>\n <button\n class=\"btn-help btn-help--sm a-s-center\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"customPopoverTemplate\"\n placement=\"right\"\n type=\"button\"\n [outsideClick]=\"true\"\n data-cy=\"add-smart-group-component--Help-button\"\n ></button>\n <input\n class=\"form-control\"\n id=\"name\"\n placeholder=\"{{ 'e.g. My smart group' | translate }}\"\n name=\"name\"\n type=\"text\"\n autocomplete=\"off\"\n required\n [(ngModel)]=\"smartGroup.name\"\n />\n </c8y-form-group>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n (click)=\"close()\"\n translate\n >\n Cancel\n </button>\n\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add' | translate }}\"\n type=\"submit\"\n [disabled]=\"createSmartGroup.form.invalid\"\n translate\n >\n Add\n </button>\n </div>\n </form>\n</div>\n\n<ng-template #customPopoverTemplate>\n <div\n class=\"m-b-16\"\n style=\"pointer-events: auto\"\n tabindex=\"0\"\n data-cy=\"add-smart-group-component--popover-Template\"\n translate\n >\n Th\u0435 smart group will be created based on the filters currently applied in the device list.\n </div>\n <br />\n <p\n c8y-guide-docs\n translate\n ngNonBindable\n >\n <small>\n Find out more in the\n <a c8y-guide-href=\"docs/device-management-application/grouping-devices/#using-smart-groups\">\n user documentation\n </a>\n .\n </small>\n </p>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i4.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i4.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i4.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i4.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "directive", type: i7.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: i4.C8yTranslatePipe, name: "translate" }] }); }
59
59
  }
60
60
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AddSmartGroupComponent, decorators: [{
61
61
  type: Component,
62
- args: [{ selector: 'c8y-add-smart-group', template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"'c8y-group-smart'\"></i>\n <h4\n id=\"modal-title\"\n translate\n >\n Add smart group\n </h4>\n </div>\n\n <form\n #createSmartGroup=\"ngForm\"\n (ngSubmit)=\"createSmartGroup.form.valid && create()\"\n >\n <div class=\"modal-inner-scroll\">\n <div\n class=\"modal-body\"\n id=\"modal-body\"\n >\n <c8y-form-group>\n <label\n class=\"d-inline-block\"\n for=\"name\"\n translate\n >\n Group name\n </label>\n <button\n class=\"btn-help btn-help--sm a-s-center\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"customPopoverTemplate\"\n placement=\"right\"\n type=\"button\"\n [outsideClick]=\"true\"\n data-cy=\"add-smart-group-component--Help-button\"\n ></button>\n <input\n class=\"form-control\"\n id=\"name\"\n placeholder=\"{{ 'e.g. My smart group' | translate }}\"\n name=\"name\"\n type=\"text\"\n autocomplete=\"off\"\n required\n [(ngModel)]=\"smartGroup.name\"\n />\n </c8y-form-group>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n (click)=\"close()\"\n translate\n >\n Cancel\n </button>\n\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add' | translate }}\"\n type=\"submit\"\n [disabled]=\"createSmartGroup.form.invalid\"\n translate\n >\n Add\n </button>\n </div>\n </form>\n</div>\n\n<ng-template #customPopoverTemplate>\n <div\n class=\"m-b-16\"\n style=\"pointer-events: auto\"\n tabindex=\"0\"\n data-cy=\"add-smart-group-component--popover-Template\"\n translate\n >\n Th\u0435 smart group will be created based on the filters currently applied in the device list.\n <br />\n </div>\n <p\n c8y-guide-docs\n translate\n ngNonBindable\n >\n <small>\n Find out more in the\n <a c8y-guide-href=\"docs/device-management-application/grouping-devices/#using-smart-groups\">\n user documentation\n </a>\n .\n </small>\n </p>\n</ng-template>\n" }]
62
+ args: [{ selector: 'c8y-add-smart-group', template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"'c8y-group-smart'\"></i>\n <h4\n id=\"modal-title\"\n translate\n >\n Add smart group\n </h4>\n </div>\n\n <form\n #createSmartGroup=\"ngForm\"\n (ngSubmit)=\"createSmartGroup.form.valid && create()\"\n >\n <div class=\"modal-inner-scroll\">\n <div\n class=\"modal-body\"\n id=\"modal-body\"\n >\n <c8y-form-group>\n <label\n class=\"d-inline-block\"\n for=\"name\"\n translate\n >\n Group name\n </label>\n <button\n class=\"btn-help btn-help--sm a-s-center\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"customPopoverTemplate\"\n placement=\"right\"\n type=\"button\"\n [outsideClick]=\"true\"\n data-cy=\"add-smart-group-component--Help-button\"\n ></button>\n <input\n class=\"form-control\"\n id=\"name\"\n placeholder=\"{{ 'e.g. My smart group' | translate }}\"\n name=\"name\"\n type=\"text\"\n autocomplete=\"off\"\n required\n [(ngModel)]=\"smartGroup.name\"\n />\n </c8y-form-group>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n (click)=\"close()\"\n translate\n >\n Cancel\n </button>\n\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add' | translate }}\"\n type=\"submit\"\n [disabled]=\"createSmartGroup.form.invalid\"\n translate\n >\n Add\n </button>\n </div>\n </form>\n</div>\n\n<ng-template #customPopoverTemplate>\n <div\n class=\"m-b-16\"\n style=\"pointer-events: auto\"\n tabindex=\"0\"\n data-cy=\"add-smart-group-component--popover-Template\"\n translate\n >\n Th\u0435 smart group will be created based on the filters currently applied in the device list.\n </div>\n <br />\n <p\n c8y-guide-docs\n translate\n ngNonBindable\n >\n <small>\n Find out more in the\n <a c8y-guide-href=\"docs/device-management-application/grouping-devices/#using-smart-groups\">\n user documentation\n </a>\n .\n </small>\n </p>\n</ng-template>\n" }]
63
63
  }], ctorParameters: () => [{ type: i1.BsModalRef }, { type: i2.SmartGroupsService }, { type: i1$1.DeviceGridService }, { type: i4.AlertService }, { type: i5.TranslateService }] });
64
64
 
65
65
  const HOOK_DEVICE_LIST_COLUMNS = new InjectionToken('HOOK_ALL_DEVICES_LIST_COLUMNS');
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-device-list.mjs","sources":["../../device-list/add-smart-group.component.ts","../../device-list/add-smart-group.component.html","../../device-list/device-list-extension.service.ts","../../device-list/device-list-navigation.factory.ts","../../device-list/device-list.component.ts","../../device-list/device-list.component.html","../../device-list/action-controls.factory.ts","../../device-list/devices.breadcrumb-factory.ts","../../device-list/device-list.module.ts","../../device-list/c8y-ngx-components-device-list.ts"],"sourcesContent":["import { Component } from '@angular/core';\nimport { SmartGroupsService } from '@c8y/client';\nimport { AlertService, gettext } from '@c8y/ngx-components';\nimport { DeviceGridService } from '@c8y/ngx-components/device-grid';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { of } from 'rxjs';\nimport { catchError, switchMap, take, tap } from 'rxjs/operators';\n\n@Component({\n selector: 'c8y-add-smart-group',\n templateUrl: './add-smart-group.component.html'\n})\nexport class AddSmartGroupComponent {\n smartGroup = {\n name: '',\n type: 'c8y_DynamicGroup',\n c8y_IsDynamicGroup: {}\n };\n\n configKey: string;\n deviceQuery: string;\n\n constructor(\n private modal: BsModalRef,\n private smartGroupsService: SmartGroupsService,\n private deviceGridService: DeviceGridService,\n private alert: AlertService,\n private translateService: TranslateService\n ) {}\n\n create() {\n return this.deviceGridService\n .getConfig$(this.configKey)\n .pipe(\n switchMap(config => {\n return this.smartGroupsService.create({\n smartGroup: this.smartGroup,\n deviceQueryString: this.deviceQuery,\n configurableColumns: config\n });\n }),\n tap(() => {\n this.alert.success(\n this.translateService.instant(gettext('Smart group \"{{ name }}\" added.'), {\n name: this.smartGroup.name\n })\n );\n this.modal.hide();\n }),\n catchError(ex => {\n this.alert.addServerFailure(ex);\n return of([]);\n }),\n take(1)\n )\n .subscribe();\n }\n\n close() {\n this.modal.hide();\n }\n}\n","<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"'c8y-group-smart'\"></i>\n <h4\n id=\"modal-title\"\n translate\n >\n Add smart group\n </h4>\n </div>\n\n <form\n #createSmartGroup=\"ngForm\"\n (ngSubmit)=\"createSmartGroup.form.valid && create()\"\n >\n <div class=\"modal-inner-scroll\">\n <div\n class=\"modal-body\"\n id=\"modal-body\"\n >\n <c8y-form-group>\n <label\n class=\"d-inline-block\"\n for=\"name\"\n translate\n >\n Group name\n </label>\n <button\n class=\"btn-help btn-help--sm a-s-center\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"customPopoverTemplate\"\n placement=\"right\"\n type=\"button\"\n [outsideClick]=\"true\"\n data-cy=\"add-smart-group-component--Help-button\"\n ></button>\n <input\n class=\"form-control\"\n id=\"name\"\n placeholder=\"{{ 'e.g. My smart group' | translate }}\"\n name=\"name\"\n type=\"text\"\n autocomplete=\"off\"\n required\n [(ngModel)]=\"smartGroup.name\"\n />\n </c8y-form-group>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n (click)=\"close()\"\n translate\n >\n Cancel\n </button>\n\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add' | translate }}\"\n type=\"submit\"\n [disabled]=\"createSmartGroup.form.invalid\"\n translate\n >\n Add\n </button>\n </div>\n </form>\n</div>\n\n<ng-template #customPopoverTemplate>\n <div\n class=\"m-b-16\"\n style=\"pointer-events: auto\"\n tabindex=\"0\"\n data-cy=\"add-smart-group-component--popover-Template\"\n translate\n >\n Thе smart group will be created based on the filters currently applied in the device list.\n <br />\n </div>\n <p\n c8y-guide-docs\n translate\n ngNonBindable\n >\n <small>\n Find out more in the\n <a c8y-guide-href=\"docs/device-management-application/grouping-devices/#using-smart-groups\">\n user documentation\n </a>\n .\n </small>\n </p>\n</ng-template>\n","import { Injectable, InjectionToken, Injector } from '@angular/core';\nimport { Router } from '@angular/router';\nimport {\n Column,\n ExtensionFactory,\n ExtensionPointWithoutStateForPlugins,\n fromTriggerOnce,\n GenericHookOptions,\n GenericHookType,\n hookGeneric,\n PluginsResolveService\n} from '@c8y/ngx-components';\nimport { DeviceGridService } from '@c8y/ngx-components/device-grid';\nimport { flatten, isEmpty } from 'lodash-es';\nimport { Observable } from 'rxjs';\nimport { map, shareReplay, startWith } from 'rxjs/operators';\n\nconst HOOK_DEVICE_LIST_COLUMNS = new InjectionToken<GenericHookType<Column>>(\n 'HOOK_ALL_DEVICES_LIST_COLUMNS'\n);\n\nexport type DeviceListColumnsFactory = ExtensionFactory<Column>;\n\n/**\n * A hook to override the default device grid columns configuration in `c8y-device-list` component.\n */\nexport function hookDeviceListColumns(\n columns: GenericHookType<Column>,\n options?: Partial<GenericHookOptions>\n) {\n return hookGeneric<Column>(columns, HOOK_DEVICE_LIST_COLUMNS, options);\n}\n\n/**\n * A service defining device list column extension options.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DeviceListExtensionService extends ExtensionPointWithoutStateForPlugins<Column> {\n constructor(\n rootInjector: Injector,\n private router: Router,\n plugins: PluginsResolveService,\n private deviceGridService: DeviceGridService\n ) {\n super(rootInjector, plugins);\n this.items$ = this.setupItemsObservable();\n }\n\n protected setupItemsObservable(): Observable<Column[]> {\n return fromTriggerOnce<Column>(this.router, this.refresh$, [\n () =>\n flatten(\n this.injectors.map(injector =>\n injector.get(HOOK_DEVICE_LIST_COLUMNS, [], {\n self: true\n })\n )\n ),\n () => this.factories\n ]).pipe(\n map((columns: Column[]) =>\n isEmpty(columns) ? this.deviceGridService.getDefaultColumns() : columns\n ),\n startWith(this.deviceGridService.getDefaultColumns()),\n shareReplay(1)\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { gettext, NavigatorNode, NavigatorNodeFactory } from '@c8y/ngx-components';\n\n@Injectable()\nexport class DeviceListNavigationFactory implements NavigatorNodeFactory {\n nav = new NavigatorNode({\n label: gettext('All devices'),\n path: 'device',\n icon: 'c8y-device-management',\n parent: {\n label: gettext('Devices'),\n icon: 'exchange'\n },\n priority: 2000\n });\n\n async get() {\n return this.nav;\n }\n}\n","import { Component } from '@angular/core';\nimport {\n Column,\n DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER,\n DATA_GRID_CONFIGURATION_STRATEGY,\n GridConfigContextProvider,\n UserPreferencesConfigurationStrategy,\n UserPreferencesGridConfigContext\n} from '@c8y/ngx-components';\nimport { DeviceGridService } from '@c8y/ngx-components/device-grid';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { Observable } from 'rxjs';\nimport { AddSmartGroupComponent } from './add-smart-group.component';\nimport { DeviceListExtensionService } from './device-list-extension.service';\n\n@Component({\n selector: 'c8y-device-list',\n templateUrl: './device-list.component.html',\n providers: [\n {\n provide: DATA_GRID_CONFIGURATION_STRATEGY,\n useClass: UserPreferencesConfigurationStrategy\n },\n {\n provide: DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER,\n useExisting: DeviceListComponent\n }\n ]\n})\nexport class DeviceListComponent implements GridConfigContextProvider {\n readonly GRID_CONFIG_KEY = 'device-grid-all';\n\n count$ = this.deviceGridService.getTotal({});\n\n columns$: Observable<Column[]>;\n deviceQueryStringOutput: string;\n\n constructor(\n protected deviceGridService: DeviceGridService,\n private bsModalService: BsModalService,\n deviceListExtensionService: DeviceListExtensionService\n ) {\n this.columns$ = deviceListExtensionService.items$;\n }\n\n getGridConfigContext(): UserPreferencesGridConfigContext {\n return {\n key: this.GRID_CONFIG_KEY,\n defaultColumns: this.deviceGridService.getDefaultColumns(),\n legacyConfigKey: 'all-devices-columns-meta_',\n legacyFilterKey: 'all-devices-columns-config'\n };\n }\n\n async createSmartGroup() {\n const initialState = {\n configKey: this.GRID_CONFIG_KEY,\n deviceQuery: this.deviceQueryStringOutput\n };\n\n this.bsModalService.show(AddSmartGroupComponent, {\n class: 'modal-sm',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n ignoreBackdropClick: true,\n keyboard: false,\n initialState\n });\n }\n}\n","<c8y-title>\n {{ 'All devices' | translate }}\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'exchange'\"\n [label]=\"'Devices' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-management'\"\n [label]=\"'All devices' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add smart group' | translate }}\"\n (click)=\"createSmartGroup()\"\n >\n <i c8yIcon=\"c8y-group-smart\"></i>\n {{ 'Add smart group' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/device-management-application/viewing-all-devices/#viewing-all-devices\"\n></c8y-help>\n\n<div class=\"content-fullpage border-top border-bottom\">\n <c8y-device-grid\n [columns]=\"columns$ | async\"\n [infiniteScroll]=\"(count$ | async) === undefined ? 'auto' : undefined\"\n (onDeviceQueryStringChange)=\"deviceQueryStringOutput = $event\"\n c8yProductExperience\n [actionName]=\"'allDevices'\"\n ></c8y-device-grid>\n</div>\n","import { Injectable } from '@angular/core';\nimport { IManagedObject } from '@c8y/client';\nimport {\n ActionControlFactory,\n ActionControlHook,\n BuiltInActionType,\n Row\n} from '@c8y/ngx-components';\nimport { DeviceGridService } from '@c8y/ngx-components/device-grid';\n\n@Injectable({ providedIn: 'root' })\nexport class ActionControlsFactory implements ActionControlFactory {\n constructor(private deviceGridService: DeviceGridService) {}\n\n get(): ActionControlHook {\n return {\n actionControls: [\n {\n type: BuiltInActionType.Delete,\n priority: -Infinity,\n callback: async (item: Row, reload: (boolean?) => void) => {\n await this.deviceGridService.delete(item as IManagedObject);\n reload(false);\n }\n }\n ],\n matchesGrid(_, context) {\n return context?.key === 'device-grid-all';\n }\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n Breadcrumb,\n BreadcrumbFactory,\n BreadcrumbItem,\n gettext,\n ViewContext\n} from '@c8y/ngx-components';\n\n@Injectable()\nexport class DevicesBreadcrumbFactory implements BreadcrumbFactory {\n async get(route: ActivatedRoute) {\n const { context, contextData } = route.snapshot?.parent?.data || {};\n const { routeConfig } = route.snapshot;\n\n if (\n context === ViewContext.Device ||\n (routeConfig as { context: ViewContext })?.context === ViewContext.Device\n ) {\n const breadcrumb: Breadcrumb = { items: [] };\n const breadcrumbItems: BreadcrumbItem[] = [];\n\n breadcrumbItems.push({\n label: gettext('Devices'),\n icon: 'exchange'\n } as BreadcrumbItem);\n\n breadcrumbItems.push({\n label: gettext('All devices'),\n path: '/device'\n });\n\n const name = contextData?.name;\n\n if (!!name) {\n breadcrumbItems.push({ label: name } as BreadcrumbItem);\n }\n\n const label = (routeConfig as { label: string })?.label;\n\n if (!!label) {\n breadcrumbItems.push({ label } as BreadcrumbItem);\n }\n\n breadcrumb.items = breadcrumbItems;\n return breadcrumb;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { Route, RouterModule } from '@angular/router';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport {\n CommonModule,\n CoreModule,\n hookBreadcrumb,\n hookDataGridActionControls,\n hookNavigator\n} from '@c8y/ngx-components';\nimport { DeviceGridModule } from '@c8y/ngx-components/device-grid';\nimport { ActionControlsFactory } from './action-controls.factory';\n\nimport { AddSmartGroupComponent } from './add-smart-group.component';\nimport { DeviceListNavigationFactory } from './device-list-navigation.factory';\nimport { DeviceListComponent } from './device-list.component';\nimport { DevicesBreadcrumbFactory } from './devices.breadcrumb-factory';\n\nconst deviceListRoutes: Route[] = [\n {\n path: 'device',\n component: DeviceListComponent\n }\n];\n\n@NgModule({\n imports: [\n CoreModule,\n CommonModule,\n DeviceGridModule,\n PopoverModule,\n TooltipModule,\n RouterModule.forChild(deviceListRoutes)\n ],\n declarations: [DeviceListComponent, AddSmartGroupComponent],\n exports: [],\n providers: [\n hookNavigator(DeviceListNavigationFactory),\n hookBreadcrumb(DevicesBreadcrumbFactory),\n hookDataGridActionControls(ActionControlsFactory)\n ]\n})\nexport class DeviceListModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i1","i2","i3.DeviceListExtensionService","i5"],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-device-list.mjs","sources":["../../device-list/add-smart-group.component.ts","../../device-list/add-smart-group.component.html","../../device-list/device-list-extension.service.ts","../../device-list/device-list-navigation.factory.ts","../../device-list/device-list.component.ts","../../device-list/device-list.component.html","../../device-list/action-controls.factory.ts","../../device-list/devices.breadcrumb-factory.ts","../../device-list/device-list.module.ts","../../device-list/c8y-ngx-components-device-list.ts"],"sourcesContent":["import { Component } from '@angular/core';\nimport { SmartGroupsService } from '@c8y/client';\nimport { AlertService, gettext } from '@c8y/ngx-components';\nimport { DeviceGridService } from '@c8y/ngx-components/device-grid';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { of } from 'rxjs';\nimport { catchError, switchMap, take, tap } from 'rxjs/operators';\n\n@Component({\n selector: 'c8y-add-smart-group',\n templateUrl: './add-smart-group.component.html'\n})\nexport class AddSmartGroupComponent {\n smartGroup = {\n name: '',\n type: 'c8y_DynamicGroup',\n c8y_IsDynamicGroup: {}\n };\n\n configKey: string;\n deviceQuery: string;\n\n constructor(\n private modal: BsModalRef,\n private smartGroupsService: SmartGroupsService,\n private deviceGridService: DeviceGridService,\n private alert: AlertService,\n private translateService: TranslateService\n ) {}\n\n create() {\n return this.deviceGridService\n .getConfig$(this.configKey)\n .pipe(\n switchMap(config => {\n return this.smartGroupsService.create({\n smartGroup: this.smartGroup,\n deviceQueryString: this.deviceQuery,\n configurableColumns: config\n });\n }),\n tap(() => {\n this.alert.success(\n this.translateService.instant(gettext('Smart group \"{{ name }}\" added.'), {\n name: this.smartGroup.name\n })\n );\n this.modal.hide();\n }),\n catchError(ex => {\n this.alert.addServerFailure(ex);\n return of([]);\n }),\n take(1)\n )\n .subscribe();\n }\n\n close() {\n this.modal.hide();\n }\n}\n","<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"'c8y-group-smart'\"></i>\n <h4\n id=\"modal-title\"\n translate\n >\n Add smart group\n </h4>\n </div>\n\n <form\n #createSmartGroup=\"ngForm\"\n (ngSubmit)=\"createSmartGroup.form.valid && create()\"\n >\n <div class=\"modal-inner-scroll\">\n <div\n class=\"modal-body\"\n id=\"modal-body\"\n >\n <c8y-form-group>\n <label\n class=\"d-inline-block\"\n for=\"name\"\n translate\n >\n Group name\n </label>\n <button\n class=\"btn-help btn-help--sm a-s-center\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"customPopoverTemplate\"\n placement=\"right\"\n type=\"button\"\n [outsideClick]=\"true\"\n data-cy=\"add-smart-group-component--Help-button\"\n ></button>\n <input\n class=\"form-control\"\n id=\"name\"\n placeholder=\"{{ 'e.g. My smart group' | translate }}\"\n name=\"name\"\n type=\"text\"\n autocomplete=\"off\"\n required\n [(ngModel)]=\"smartGroup.name\"\n />\n </c8y-form-group>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n (click)=\"close()\"\n translate\n >\n Cancel\n </button>\n\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add' | translate }}\"\n type=\"submit\"\n [disabled]=\"createSmartGroup.form.invalid\"\n translate\n >\n Add\n </button>\n </div>\n </form>\n</div>\n\n<ng-template #customPopoverTemplate>\n <div\n class=\"m-b-16\"\n style=\"pointer-events: auto\"\n tabindex=\"0\"\n data-cy=\"add-smart-group-component--popover-Template\"\n translate\n >\n Thе smart group will be created based on the filters currently applied in the device list.\n </div>\n <br />\n <p\n c8y-guide-docs\n translate\n ngNonBindable\n >\n <small>\n Find out more in the\n <a c8y-guide-href=\"docs/device-management-application/grouping-devices/#using-smart-groups\">\n user documentation\n </a>\n .\n </small>\n </p>\n</ng-template>\n","import { Injectable, InjectionToken, Injector } from '@angular/core';\nimport { Router } from '@angular/router';\nimport {\n Column,\n ExtensionFactory,\n ExtensionPointWithoutStateForPlugins,\n fromTriggerOnce,\n GenericHookOptions,\n GenericHookType,\n hookGeneric,\n PluginsResolveService\n} from '@c8y/ngx-components';\nimport { DeviceGridService } from '@c8y/ngx-components/device-grid';\nimport { flatten, isEmpty } from 'lodash-es';\nimport { Observable } from 'rxjs';\nimport { map, shareReplay, startWith } from 'rxjs/operators';\n\nconst HOOK_DEVICE_LIST_COLUMNS = new InjectionToken<GenericHookType<Column>>(\n 'HOOK_ALL_DEVICES_LIST_COLUMNS'\n);\n\nexport type DeviceListColumnsFactory = ExtensionFactory<Column>;\n\n/**\n * A hook to override the default device grid columns configuration in `c8y-device-list` component.\n */\nexport function hookDeviceListColumns(\n columns: GenericHookType<Column>,\n options?: Partial<GenericHookOptions>\n) {\n return hookGeneric<Column>(columns, HOOK_DEVICE_LIST_COLUMNS, options);\n}\n\n/**\n * A service defining device list column extension options.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DeviceListExtensionService extends ExtensionPointWithoutStateForPlugins<Column> {\n constructor(\n rootInjector: Injector,\n private router: Router,\n plugins: PluginsResolveService,\n private deviceGridService: DeviceGridService\n ) {\n super(rootInjector, plugins);\n this.items$ = this.setupItemsObservable();\n }\n\n protected setupItemsObservable(): Observable<Column[]> {\n return fromTriggerOnce<Column>(this.router, this.refresh$, [\n () =>\n flatten(\n this.injectors.map(injector =>\n injector.get(HOOK_DEVICE_LIST_COLUMNS, [], {\n self: true\n })\n )\n ),\n () => this.factories\n ]).pipe(\n map((columns: Column[]) =>\n isEmpty(columns) ? this.deviceGridService.getDefaultColumns() : columns\n ),\n startWith(this.deviceGridService.getDefaultColumns()),\n shareReplay(1)\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { gettext, NavigatorNode, NavigatorNodeFactory } from '@c8y/ngx-components';\n\n@Injectable()\nexport class DeviceListNavigationFactory implements NavigatorNodeFactory {\n nav = new NavigatorNode({\n label: gettext('All devices'),\n path: 'device',\n icon: 'c8y-device-management',\n parent: {\n label: gettext('Devices'),\n icon: 'exchange'\n },\n priority: 2000\n });\n\n async get() {\n return this.nav;\n }\n}\n","import { Component } from '@angular/core';\nimport {\n Column,\n DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER,\n DATA_GRID_CONFIGURATION_STRATEGY,\n GridConfigContextProvider,\n UserPreferencesConfigurationStrategy,\n UserPreferencesGridConfigContext\n} from '@c8y/ngx-components';\nimport { DeviceGridService } from '@c8y/ngx-components/device-grid';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { Observable } from 'rxjs';\nimport { AddSmartGroupComponent } from './add-smart-group.component';\nimport { DeviceListExtensionService } from './device-list-extension.service';\n\n@Component({\n selector: 'c8y-device-list',\n templateUrl: './device-list.component.html',\n providers: [\n {\n provide: DATA_GRID_CONFIGURATION_STRATEGY,\n useClass: UserPreferencesConfigurationStrategy\n },\n {\n provide: DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER,\n useExisting: DeviceListComponent\n }\n ]\n})\nexport class DeviceListComponent implements GridConfigContextProvider {\n readonly GRID_CONFIG_KEY = 'device-grid-all';\n\n count$ = this.deviceGridService.getTotal({});\n\n columns$: Observable<Column[]>;\n deviceQueryStringOutput: string;\n\n constructor(\n protected deviceGridService: DeviceGridService,\n private bsModalService: BsModalService,\n deviceListExtensionService: DeviceListExtensionService\n ) {\n this.columns$ = deviceListExtensionService.items$;\n }\n\n getGridConfigContext(): UserPreferencesGridConfigContext {\n return {\n key: this.GRID_CONFIG_KEY,\n defaultColumns: this.deviceGridService.getDefaultColumns(),\n legacyConfigKey: 'all-devices-columns-meta_',\n legacyFilterKey: 'all-devices-columns-config'\n };\n }\n\n async createSmartGroup() {\n const initialState = {\n configKey: this.GRID_CONFIG_KEY,\n deviceQuery: this.deviceQueryStringOutput\n };\n\n this.bsModalService.show(AddSmartGroupComponent, {\n class: 'modal-sm',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n ignoreBackdropClick: true,\n keyboard: false,\n initialState\n });\n }\n}\n","<c8y-title>\n {{ 'All devices' | translate }}\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'exchange'\"\n [label]=\"'Devices' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-management'\"\n [label]=\"'All devices' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add smart group' | translate }}\"\n (click)=\"createSmartGroup()\"\n >\n <i c8yIcon=\"c8y-group-smart\"></i>\n {{ 'Add smart group' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/device-management-application/viewing-all-devices/#viewing-all-devices\"\n></c8y-help>\n\n<div class=\"content-fullpage border-top border-bottom\">\n <c8y-device-grid\n [columns]=\"columns$ | async\"\n [infiniteScroll]=\"(count$ | async) === undefined ? 'auto' : undefined\"\n (onDeviceQueryStringChange)=\"deviceQueryStringOutput = $event\"\n c8yProductExperience\n [actionName]=\"'allDevices'\"\n ></c8y-device-grid>\n</div>\n","import { Injectable } from '@angular/core';\nimport { IManagedObject } from '@c8y/client';\nimport {\n ActionControlFactory,\n ActionControlHook,\n BuiltInActionType,\n Row\n} from '@c8y/ngx-components';\nimport { DeviceGridService } from '@c8y/ngx-components/device-grid';\n\n@Injectable({ providedIn: 'root' })\nexport class ActionControlsFactory implements ActionControlFactory {\n constructor(private deviceGridService: DeviceGridService) {}\n\n get(): ActionControlHook {\n return {\n actionControls: [\n {\n type: BuiltInActionType.Delete,\n priority: -Infinity,\n callback: async (item: Row, reload: (boolean?) => void) => {\n await this.deviceGridService.delete(item as IManagedObject);\n reload(false);\n }\n }\n ],\n matchesGrid(_, context) {\n return context?.key === 'device-grid-all';\n }\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n Breadcrumb,\n BreadcrumbFactory,\n BreadcrumbItem,\n gettext,\n ViewContext\n} from '@c8y/ngx-components';\n\n@Injectable()\nexport class DevicesBreadcrumbFactory implements BreadcrumbFactory {\n async get(route: ActivatedRoute) {\n const { context, contextData } = route.snapshot?.parent?.data || {};\n const { routeConfig } = route.snapshot;\n\n if (\n context === ViewContext.Device ||\n (routeConfig as { context: ViewContext })?.context === ViewContext.Device\n ) {\n const breadcrumb: Breadcrumb = { items: [] };\n const breadcrumbItems: BreadcrumbItem[] = [];\n\n breadcrumbItems.push({\n label: gettext('Devices'),\n icon: 'exchange'\n } as BreadcrumbItem);\n\n breadcrumbItems.push({\n label: gettext('All devices'),\n path: '/device'\n });\n\n const name = contextData?.name;\n\n if (!!name) {\n breadcrumbItems.push({ label: name } as BreadcrumbItem);\n }\n\n const label = (routeConfig as { label: string })?.label;\n\n if (!!label) {\n breadcrumbItems.push({ label } as BreadcrumbItem);\n }\n\n breadcrumb.items = breadcrumbItems;\n return breadcrumb;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { Route, RouterModule } from '@angular/router';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport {\n CommonModule,\n CoreModule,\n hookBreadcrumb,\n hookDataGridActionControls,\n hookNavigator\n} from '@c8y/ngx-components';\nimport { DeviceGridModule } from '@c8y/ngx-components/device-grid';\nimport { ActionControlsFactory } from './action-controls.factory';\n\nimport { AddSmartGroupComponent } from './add-smart-group.component';\nimport { DeviceListNavigationFactory } from './device-list-navigation.factory';\nimport { DeviceListComponent } from './device-list.component';\nimport { DevicesBreadcrumbFactory } from './devices.breadcrumb-factory';\n\nconst deviceListRoutes: Route[] = [\n {\n path: 'device',\n component: DeviceListComponent\n }\n];\n\n@NgModule({\n imports: [\n CoreModule,\n CommonModule,\n DeviceGridModule,\n PopoverModule,\n TooltipModule,\n RouterModule.forChild(deviceListRoutes)\n ],\n declarations: [DeviceListComponent, AddSmartGroupComponent],\n exports: [],\n providers: [\n hookNavigator(DeviceListNavigationFactory),\n hookBreadcrumb(DevicesBreadcrumbFactory),\n hookDataGridActionControls(ActionControlsFactory)\n ]\n})\nexport class DeviceListModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i1","i2","i3.DeviceListExtensionService","i5"],"mappings":"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"}
@@ -53,6 +53,10 @@ const INTERVAL_TITLES = {
53
53
  months: gettext('Last month'),
54
54
  custom: gettext('Custom')
55
55
  };
56
+ const INTERVAL_VALUES = Object.keys(INTERVAL_TITLES).reduce((acc, key) => ({
57
+ ...acc,
58
+ [key]: key
59
+ }), {});
56
60
 
57
61
  class IntervalPickerComponent {
58
62
  constructor(translate) {
@@ -116,5 +120,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
116
120
  * Generated bundle index. Do not edit.
117
121
  */
118
122
 
119
- export { INTERVALS, INTERVAL_TITLES, IntervalPickerComponent, TimeSpanInMs };
123
+ export { INTERVALS, INTERVAL_TITLES, INTERVAL_VALUES, IntervalPickerComponent, TimeSpanInMs };
120
124
  //# sourceMappingURL=c8y-ngx-components-interval-picker.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-interval-picker.mjs","sources":["../../interval-picker/interval-picker.model.ts","../../interval-picker/interval-picker.component.ts","../../interval-picker/interval-picker.component.html","../../interval-picker/c8y-ngx-components-interval-picker.ts"],"sourcesContent":["import { gettext } from '@c8y/ngx-components/gettext';\n\nconst todayDate = new Date();\nexport enum TimeSpanInMs {\n 'MINUTE' = 1000 * 60,\n 'HOUR' = 1000 * 60 * 60,\n 'DAY' = 1000 * 60 * 60 * 24,\n 'WEEK' = 1000 * 60 * 60 * 24 * 7,\n 'MONTH' = todayDate.valueOf() - new Date(todayDate.setMonth(todayDate.getMonth() - 1)).valueOf()\n}\n\nexport type Interval = {\n id: 'minutes' | 'hours' | 'days' | 'weeks' | 'months' | 'custom';\n title: string;\n timespanInMs?: number;\n};\n\nexport type AlarmFilterInterval =\n | Interval\n | {\n id: 'none';\n title: string;\n timespanInMs?: number;\n };\n\nexport const INTERVALS: Interval[] = [\n {\n id: 'minutes',\n title: gettext('Last minute'),\n timespanInMs: TimeSpanInMs.MINUTE\n },\n {\n id: 'hours',\n title: gettext('Last hour'),\n timespanInMs: TimeSpanInMs.HOUR\n },\n {\n id: 'days',\n title: gettext('Last day'),\n timespanInMs: TimeSpanInMs.DAY\n },\n {\n id: 'weeks',\n title: gettext('Last week'),\n timespanInMs: TimeSpanInMs.WEEK\n },\n {\n id: 'months',\n title: gettext('Last month'),\n timespanInMs: TimeSpanInMs.MONTH\n },\n { id: 'custom', title: gettext('Custom') }\n];\n\nexport const INTERVAL_TITLES: Record<Interval['id'], string> = {\n minutes: gettext('Last minute'),\n hours: gettext('Last hour'),\n days: gettext('Last day'),\n weeks: gettext('Last week'),\n months: gettext('Last month'),\n custom: gettext('Custom')\n};\n","import { Component, forwardRef, Input } from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { AlarmFilterInterval, Interval, INTERVALS } from './interval-picker.model';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'c8y-interval-picker',\n templateUrl: './interval-picker.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => IntervalPickerComponent),\n multi: true\n }\n ],\n standalone: true,\n imports: [CommonModule, FormsModule, A11yModule, ReactiveFormsModule, BsDropdownModule]\n})\nexport class IntervalPickerComponent implements ControlValueAccessor {\n @Input() INTERVALS: Interval[] | AlarmFilterInterval[] = INTERVALS;\n\n value: Interval['id'];\n touched = false;\n disabled = false;\n translatedIntervals: { id: string; title: string }[] = [];\n\n constructor(private translate: TranslateService) {}\n\n ngOnInit() {\n this.translatedIntervals = this.INTERVALS.map(interval => ({\n ...interval,\n title: this.translate.instant(interval.title)\n }));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onChange = _ => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onTouched = () => {};\n\n writeValue(value: Interval['id']) {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(onTouched: any) {\n this.onTouched = onTouched;\n }\n\n markAsTouched() {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n\n setDisabledState(disabled: boolean) {\n this.disabled = disabled;\n }\n}\n","<li\n *ngFor=\"let interval of translatedIntervals\"\n [ngClass]=\"{\n active: interval.id === value\n }\"\n>\n <button\n type=\"button\"\n (click)=\"onChange(interval.id)\"\n >\n <span\n [ngClass]=\"{\n 'text-primary': interval.id === value\n }\"\n >\n <span\n c8yIcon=\"check\"\n [ngStyle]=\"{ visibility: interval.id === value ? 'visible' : 'hidden' }\"\n ></span>\n {{ interval.title }}\n </span>\n </button>\n</li>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-interval-picker.mjs","sources":["../../interval-picker/interval-picker.model.ts","../../interval-picker/interval-picker.component.ts","../../interval-picker/interval-picker.component.html","../../interval-picker/c8y-ngx-components-interval-picker.ts"],"sourcesContent":["import { gettext } from '@c8y/ngx-components/gettext';\n\nconst todayDate = new Date();\nexport enum TimeSpanInMs {\n 'MINUTE' = 1000 * 60,\n 'HOUR' = 1000 * 60 * 60,\n 'DAY' = 1000 * 60 * 60 * 24,\n 'WEEK' = 1000 * 60 * 60 * 24 * 7,\n 'MONTH' = todayDate.valueOf() - new Date(todayDate.setMonth(todayDate.getMonth() - 1)).valueOf()\n}\n\nexport type Interval = {\n id: 'minutes' | 'hours' | 'days' | 'weeks' | 'months' | 'custom';\n title: string;\n timespanInMs?: number;\n};\n\nexport type AlarmFilterInterval =\n | Interval\n | {\n id: 'none';\n title: string;\n timespanInMs?: number;\n };\n\nexport const INTERVALS: Interval[] = [\n {\n id: 'minutes',\n title: gettext('Last minute'),\n timespanInMs: TimeSpanInMs.MINUTE\n },\n {\n id: 'hours',\n title: gettext('Last hour'),\n timespanInMs: TimeSpanInMs.HOUR\n },\n {\n id: 'days',\n title: gettext('Last day'),\n timespanInMs: TimeSpanInMs.DAY\n },\n {\n id: 'weeks',\n title: gettext('Last week'),\n timespanInMs: TimeSpanInMs.WEEK\n },\n {\n id: 'months',\n title: gettext('Last month'),\n timespanInMs: TimeSpanInMs.MONTH\n },\n { id: 'custom', title: gettext('Custom') }\n];\n\nexport const INTERVAL_TITLES: Record<Interval['id'], string> = {\n minutes: gettext('Last minute'),\n hours: gettext('Last hour'),\n days: gettext('Last day'),\n weeks: gettext('Last week'),\n months: gettext('Last month'),\n custom: gettext('Custom')\n};\n\ntype IntervalKey = Interval['id'];\ntype IntervalMap = { [K in IntervalKey]: K };\n\nexport const INTERVAL_VALUES = Object.keys(INTERVAL_TITLES).reduce(\n (acc, key) => ({\n ...acc,\n [key]: key\n }),\n {} as IntervalMap\n);\n","import { Component, forwardRef, Input } from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { AlarmFilterInterval, Interval, INTERVALS } from './interval-picker.model';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'c8y-interval-picker',\n templateUrl: './interval-picker.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => IntervalPickerComponent),\n multi: true\n }\n ],\n standalone: true,\n imports: [CommonModule, FormsModule, A11yModule, ReactiveFormsModule, BsDropdownModule]\n})\nexport class IntervalPickerComponent implements ControlValueAccessor {\n @Input() INTERVALS: Interval[] | AlarmFilterInterval[] = INTERVALS;\n\n value: Interval['id'];\n touched = false;\n disabled = false;\n translatedIntervals: { id: string; title: string }[] = [];\n\n constructor(private translate: TranslateService) {}\n\n ngOnInit() {\n this.translatedIntervals = this.INTERVALS.map(interval => ({\n ...interval,\n title: this.translate.instant(interval.title)\n }));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onChange = _ => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onTouched = () => {};\n\n writeValue(value: Interval['id']) {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(onTouched: any) {\n this.onTouched = onTouched;\n }\n\n markAsTouched() {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n\n setDisabledState(disabled: boolean) {\n this.disabled = disabled;\n }\n}\n","<li\n *ngFor=\"let interval of translatedIntervals\"\n [ngClass]=\"{\n active: interval.id === value\n }\"\n>\n <button\n type=\"button\"\n (click)=\"onChange(interval.id)\"\n >\n <span\n [ngClass]=\"{\n 'text-primary': interval.id === value\n }\"\n >\n <span\n c8yIcon=\"check\"\n [ngStyle]=\"{ visibility: interval.id === value ? 'visible' : 'hidden' }\"\n ></span>\n {{ interval.title }}\n </span>\n </button>\n</li>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -155,10 +155,11 @@ class BulkOperationListItemService {
155
155
  });
156
156
  }
157
157
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BulkOperationListItemService, deps: [{ token: i1.BulkOperationsService }, { token: i2.BsModalService }], target: i0.ɵɵFactoryTarget.Injectable }); }
158
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BulkOperationListItemService }); }
158
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BulkOperationListItemService, providedIn: 'root' }); }
159
159
  }
160
160
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BulkOperationListItemService, decorators: [{
161
- type: Injectable
161
+ type: Injectable,
162
+ args: [{ providedIn: 'root' }]
162
163
  }], ctorParameters: () => [{ type: i1.BulkOperationsService }, { type: i2.BsModalService }] });
163
164
 
164
165
  class BulkOperationsRescheduleModalComponent {
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-operations-bulk-operation-list-item.mjs","sources":["../../operations/bulk-operation-list-item/bulk-operation-list-item.model.ts","../../operations/bulk-operation-list-item/bulk-operation-wrapper.model.ts","../../operations/bulk-operation-list-item/modal-body-host.directive.ts","../../operations/bulk-operation-list-item/bulk-operation-wrapper.component.ts","../../operations/bulk-operation-list-item/bulk-operation-wrapper.component.html","../../operations/bulk-operation-list-item/bulk-operation-list-item.service.ts","../../operations/bulk-operation-list-item/modals/bulk-operations-reschedule-modal.component.ts","../../operations/bulk-operation-list-item/modals/bulk-operations-reschedule-modal.component.html","../../operations/bulk-operation-list-item/bulk-operation-list-item.component.ts","../../operations/bulk-operation-list-item/bulk-operation-list-item.component.html","../../operations/bulk-operation-list-item/bulk-operation-list-item.module.ts","../../operations/bulk-operation-list-item/c8y-ngx-components-operations-bulk-operation-list-item.ts"],"sourcesContent":["import { OperationBulkGeneralStatus } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components';\nimport { OperationStatusOption } from '@c8y/ngx-components/operations/shared';\n\nexport type OperationStatusOptionsMap = {\n [key in keyof typeof BULK_OPERATION_STATUS_LABELS]?: OperationStatusOption;\n};\n\nexport const BULK_OPERATION_STATUS_LABELS = {\n SCHEDULED: gettext('Scheduled'),\n EXECUTING: gettext('Executing'),\n CANCELED: gettext('Canceled'),\n FAILED: gettext('Completed with failures'),\n SUCCESSFUL: gettext('Completed successfully'),\n DELETED: gettext('Deleted')\n};\n\nexport const BULK_OPERATION_STATUS_OPTIONS: OperationStatusOptionsMap = {\n SCHEDULED: {\n label: BULK_OPERATION_STATUS_LABELS.SCHEDULED,\n generalStatuses: [OperationBulkGeneralStatus.SCHEDULED],\n icon: 'calendar',\n styleClass: 'text-info'\n },\n EXECUTING: {\n label: BULK_OPERATION_STATUS_LABELS.EXECUTING,\n generalStatuses: [\n OperationBulkGeneralStatus.EXECUTING,\n OperationBulkGeneralStatus.EXECUTING_WITH_ERROR\n ],\n icon: 'refresh',\n styleClass: 'text-primary'\n },\n DELETED: {\n label: BULK_OPERATION_STATUS_LABELS.DELETED,\n generalStatuses: [OperationBulkGeneralStatus.DELETED],\n icon: 'delete-document',\n styleClass: 'text-muted'\n },\n CANCELED: {\n label: BULK_OPERATION_STATUS_LABELS.CANCELED,\n generalStatuses: [OperationBulkGeneralStatus.CANCELED],\n icon: 'ban',\n styleClass: 'text-primary'\n },\n FAILED: {\n label: BULK_OPERATION_STATUS_LABELS.FAILED,\n generalStatuses: [OperationBulkGeneralStatus.FAILED],\n icon: 'exclamation-circle',\n styleClass: 'text-danger'\n },\n SUCCESSFUL: {\n label: BULK_OPERATION_STATUS_LABELS.SUCCESSFUL,\n generalStatuses: [OperationBulkGeneralStatus.SUCCESSFUL],\n icon: 'check-circle',\n styleClass: 'text-success'\n }\n};\n","import { EventEmitter, InjectionToken, Type } from '@angular/core';\nimport { IOperationBulk } from '@c8y/client';\n\nexport const BULK_OPERATION_WRAPPER_MODAL_BODY_COMPONENT =\n new InjectionToken<BulkOperationDetailsModalBodyConfiguration>(\n 'BulkOperationWrapperModalBodyComponent'\n );\n\nexport interface BulkOperationDetailsModalBodyConfiguration {\n component: Type<BulkOperationDetailsModalBody>;\n config?: object;\n}\n\nexport interface BulkOperationDetailsModalBody {\n bulkOperation: Partial<IOperationBulk>;\n showFailedOperation: EventEmitter<any>;\n}\n","import { Directive, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[modalBodyHost]'\n})\nexport class ModalBodyHostDirective {\n constructor(public viewContainerRef: ViewContainerRef) {}\n}\n","import { Component, Inject, Input, OnDestroy, OnInit, Optional, ViewChild } from '@angular/core';\nimport { IOperationBulk } from '@c8y/client';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { assign } from 'lodash-es';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport {\n BulkOperationDetailsModalBody,\n BulkOperationDetailsModalBodyConfiguration,\n BULK_OPERATION_WRAPPER_MODAL_BODY_COMPONENT\n} from './bulk-operation-wrapper.model';\nimport { ModalBodyHostDirective } from './modal-body-host.directive';\n@Component({\n selector: 'c8y-bulk-operations-wrapper',\n templateUrl: './bulk-operation-wrapper.component.html'\n})\nexport class BulkOperationWrapperComponent implements OnInit, OnDestroy {\n @Input() bulkOperation: Partial<IOperationBulk>;\n\n @ViewChild(ModalBodyHostDirective, { static: true })\n modalBodyHost: ModalBodyHostDirective;\n\n private destroyed$: Subject<void> = new Subject();\n\n constructor(\n public bulkOperationsService: BulkOperationsService,\n public modalRef: BsModalRef,\n private modalService: BsModalService,\n @Optional()\n @Inject(BULK_OPERATION_WRAPPER_MODAL_BODY_COMPONENT)\n private modalBodyConfig: BulkOperationDetailsModalBodyConfiguration\n ) {}\n\n ngOnInit(): void {\n if (this.modalBodyConfig) {\n const componentRef =\n this.modalBodyHost.viewContainerRef.createComponent<BulkOperationDetailsModalBody>(\n this.modalBodyConfig.component\n );\n assign(componentRef.instance, this.modalBodyConfig.config);\n componentRef.instance.bulkOperation = this.bulkOperation;\n componentRef.instance.showFailedOperation\n .pipe(takeUntil(this.destroyed$))\n .subscribe(event => this.openDetails(event));\n }\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n\n // openDetails function needs to be defined in the both places (component and the service) to avoid circular dependency.\n async openDetails(bulkOperationId: string | number) {\n const bulkOperation: IOperationBulk = (\n await this.bulkOperationsService.getBulkOperationById(bulkOperationId)\n ).data;\n const initialState = { bulkOperation };\n this.modalService.show(BulkOperationWrapperComponent, {\n initialState,\n class: 'modal-lg',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title'\n });\n }\n}\n","<div class=\"viewport-modal\">\n <div class=\"modal-header\">\n <h3 id=\"modal-title\">{{ 'Bulk operation details' | translate }}</h3>\n </div>\n\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <ng-container modalBodyHost></ng-container>\n </div>\n\n <div class=\"modal-footer\">\n <button\n title=\"{{ 'Close' | translate }}\"\n type=\"button\"\n class=\"btn btn-default\"\n (click)=\"modalRef.hide()\"\n >\n {{ 'Close' | translate }}\n </button>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { IOperationBulk } from '@c8y/client';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { BulkOperationModalDetailsService } from '@c8y/ngx-components/operations/bulk-operation-modal-details';\nimport { BulkOperationWrapperComponent } from './bulk-operation-wrapper.component';\n\n@Injectable()\nexport class BulkOperationListItemService implements BulkOperationModalDetailsService {\n constructor(\n private bulkOperationsService: BulkOperationsService,\n private modalService: BsModalService\n ) {}\n\n async openDetails(bulkOperationId: string | number) {\n const bulkOperation: IOperationBulk = (\n await this.bulkOperationsService.getBulkOperationById(bulkOperationId)\n ).data;\n const initialState = { bulkOperation };\n this.modalService.show(BulkOperationWrapperComponent, {\n initialState,\n class: 'modal-lg',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title'\n });\n }\n}\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { IOperationBulk } from '@c8y/client';\nimport { AlertService, GainsightService, gettext } from '@c8y/ngx-components';\nimport { OperationSchedule } from '@c8y/ngx-components/operations/bulk-operation-scheduler';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { BULK_OPERATION_EVENT } from '@c8y/ngx-components/operations/product-experience';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Subject } from 'rxjs';\n@Component({\n selector: 'c8y-bulk-operations-reschedule-modal',\n templateUrl: 'bulk-operations-reschedule-modal.component.html'\n})\nexport class BulkOperationsRescheduleModalComponent implements OnInit {\n BULK_OPERATION_EVENT = BULK_OPERATION_EVENT;\n closeSubject: Subject<IOperationBulk> = new Subject();\n dateAndDelay: OperationSchedule;\n bulkOperation: Partial<IOperationBulk>;\n isRetryOperation: boolean;\n modalTitle: string;\n\n private readonly CARRIAGE_RETURN_CODE = 'Escape';\n\n constructor(\n public bsModalRef: BsModalRef,\n private bulkOperationsService: BulkOperationsService,\n private alert: AlertService,\n private gainsightService: GainsightService\n ) {}\n\n @HostListener('window:keyup', ['$event'])\n onKeyUp(event: KeyboardEvent) {\n if (event.code === this.CARRIAGE_RETURN_CODE) {\n this.gainsightService.triggerEvent('modalDialog', {\n title: this.modalTitle,\n result: 'Cancel'\n });\n }\n }\n\n ngOnInit() {\n this.modalTitle = this.getTitle();\n }\n\n onDateAndDelaySelect($event) {\n this.dateAndDelay = $event;\n }\n\n getTitle() {\n return this.isRetryOperation ? gettext('Retry operation') : gettext('Edit schedule');\n }\n\n onCancel() {\n this.bsModalRef.hide();\n }\n\n async onSave() {\n let newBulkOperation;\n this.bulkOperation.startDate = this.dateAndDelay.scheduledDate.toISOString();\n this.bulkOperation.creationRamp = this.dateAndDelay.delayInSeconds;\n\n if (this.isRetryOperation) {\n try {\n newBulkOperation = await this.bulkOperationsService.createBulkOperation(this.bulkOperation);\n this.alert.success(gettext('Successfully rescheduled for a retry.'));\n } catch (er) {\n this.alert.addServerFailure(er);\n }\n } else {\n try {\n newBulkOperation = await this.bulkOperationsService.updateBulkOperation(this.bulkOperation);\n this.alert.success(gettext('Successfully rescheduled.'));\n } catch (er) {\n this.alert.addServerFailure(er);\n }\n }\n\n // send back to component from which modal was called\n this.closeSubject.next(newBulkOperation.data);\n this.bsModalRef.hide();\n }\n}\n","<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i c8yIcon=\"c8y-energy\"></i>\n <h4 id=\"modal-title\">{{ modalTitle | translate }}</h4>\n </div>\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <div class=\"modal-body\">\n <div class=\"text-center\">\n <c8y-operation-summary\n [description]=\"bulkOperation.operationPrototype.description\"\n ></c8y-operation-summary>\n </div>\n <div class=\"p-t-16 center-block\" style=\"max-width: 300px\">\n <c8y-operation-scheduler\n [(ngModel)]=\"dateAndDelay\"\n #scheduler=\"ngModel\"\n ></c8y-operation-scheduler>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button\n (click)=\"onCancel()\"\n type=\"button\"\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n c8yProductExperience\n [actionName]=\"BULK_OPERATION_EVENT\"\n [actionData]=\"{ title: modalTitle, result: 'Cancel' }\"\n >\n <span translate>Cancel</span>\n </button>\n <button\n id=\"save-btn\"\n (click)=\"onSave()\"\n type=\"button\"\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n [disabled]=\"scheduler?.control?.errors\"\n c8yProductExperience\n [actionName]=\"BULK_OPERATION_EVENT\"\n [actionData]=\"{ title: modalTitle, result: 'Save' }\"\n >\n <span translate>Save</span>\n </button>\n </div>\n</div>\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { IOperationBulk, OperationBulkGeneralStatus } from '@c8y/client';\nimport {\n AlertService,\n gettext,\n ListItemComponent,\n ModalService,\n Status\n} from '@c8y/ngx-components';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { BULK_OPERATION_EVENT } from '@c8y/ngx-components/operations/product-experience';\nimport { assign, cloneDeep, find, values } from 'lodash-es';\nimport { BsModalRef, BsModalService, ModalOptions } from 'ngx-bootstrap/modal';\nimport {\n BULK_OPERATION_STATUS_OPTIONS,\n OperationStatusOptionsMap\n} from './bulk-operation-list-item.model';\nimport { BulkOperationListItemService } from './bulk-operation-list-item.service';\nimport { BulkOperationsRescheduleModalComponent } from './modals/bulk-operations-reschedule-modal.component';\n\n@Component({\n selector: 'c8y-bulk-operation-list-item',\n templateUrl: './bulk-operation-list-item.component.html'\n})\nexport class BulkOperationListItemComponent implements OnInit, OnChanges {\n BULK_OPERATION_EVENT = BULK_OPERATION_EVENT;\n @Input()\n bulkOperation: Partial<IOperationBulk>;\n @Input()\n detailsCollapsed = true;\n @Input()\n readOnly = false;\n @Output() showFailedOperation = new EventEmitter();\n @Output() reload: EventEmitter<any> = new EventEmitter();\n @ViewChild('listItem', { static: true }) listItem: ListItemComponent;\n iconClass: string;\n finishDate: number;\n refreshLoading = false;\n bulkOperationGeneralStatus = OperationBulkGeneralStatus;\n BULK_OPERATION_STATUS_OPTIONS: OperationStatusOptionsMap = BULK_OPERATION_STATUS_OPTIONS;\n bsModalRef: BsModalRef;\n finishDatePopoverText: string = gettext(\n 'Approximate date, estimated based on the bulk operation settings.'\n );\n progressBarClass = 'progress';\n progressBarColor: string;\n progressBarStatus = 0;\n\n constructor(\n public bulkOperationListItemService: BulkOperationListItemService,\n private bulkOperationsService: BulkOperationsService,\n private modal: ModalService,\n private alert: AlertService,\n private bsModalService: BsModalService\n ) {}\n\n ngOnInit() {\n this.finishDate = this.calculateFinishDateMs();\n this.setProgressBar();\n }\n\n getOperationStatusOptions() {\n const statusOptions = values(BULK_OPERATION_STATUS_OPTIONS);\n return find(statusOptions, options =>\n options.generalStatuses.includes(this.bulkOperation.generalStatus)\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.bulkOperation && !changes.bulkOperation.firstChange) {\n this.setProgressBar();\n }\n }\n calculateFinishDateMs(): number {\n const startDateMs: number = new Date(this.bulkOperation.startDate).getTime();\n const creationRampMs: number = this.bulkOperation.creationRamp * 1000;\n\n return startDateMs + creationRampMs * this.bulkOperation.progress.all;\n }\n\n progressBarProgressFn() {\n return (\n ((this.bulkOperation.progress.successful + this.bulkOperation.progress.failed) /\n this.bulkOperation.progress.all) *\n 100\n );\n }\n\n setProgressBar() {\n const staticContentOfClass = 'progress-bar progress-striped active progress-bar';\n\n const progressBarState = {\n EXECUTING: {\n progressBarClass: 'progress progress-striped active',\n progressBarColor: `${staticContentOfClass}-primary`,\n progressBarStatus: this.progressBarProgressFn()\n },\n EXECUTING_WITH_ERROR: {\n progressBarClass: 'progress progress-striped active',\n progressBarColor: `${staticContentOfClass}-danger`,\n progressBarStatus: this.progressBarProgressFn()\n },\n FAILED: {\n progressBarClass: 'progress',\n progressBarColor: `${staticContentOfClass}-danger`,\n progressBarStatus: 100\n },\n SUCCESSFUL: {\n progressBarClass: 'progress',\n progressBarColor: `${staticContentOfClass}-success`,\n progressBarStatus: 100\n }\n };\n\n assign(this, progressBarState[this.bulkOperation.generalStatus]);\n }\n\n editSchedule() {\n const rescheduledOperation = cloneDeep(this.bulkOperation);\n const initialState = {\n bulkOperation: rescheduledOperation\n };\n const modalOptions = {\n initialState,\n class: 'modal-sm',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n backdrop: 'static'\n } as ModalOptions;\n this.bsModalRef = this.bsModalService.show(\n BulkOperationsRescheduleModalComponent,\n modalOptions\n );\n }\n\n async cancelBulkOperation() {\n try {\n await this.modal.confirm(\n gettext('Cancel bulk operation'),\n gettext('You are about to cancel the bulk operation. Do you want to proceed?'),\n Status.DANGER,\n {},\n {},\n { eventName: BULK_OPERATION_EVENT }\n );\n await this.bulkOperationsService.deleteBulkOperation(this.bulkOperation.id);\n this.reload.emit();\n this.alert.success(gettext('Operation canceled.'));\n } catch (er) {\n this.alert.addServerFailure(er);\n }\n }\n\n retryFailedOperation() {\n const clonedBulk = cloneDeep(this.bulkOperation);\n\n // change the id to failedparentId similar to the logic in deviceBulkControl.service.js\n delete clonedBulk.groupId;\n clonedBulk.failedParentId = this.bulkOperation.id;\n\n // show reschdedule modal:\n const initialState = {\n bulkOperation: clonedBulk,\n isRetryOperation: true\n };\n const modalOptions = { initialState, class: 'modal-sm', backdrop: 'static' } as ModalOptions;\n this.bsModalRef = this.bsModalService.show(\n BulkOperationsRescheduleModalComponent,\n modalOptions\n );\n this.bsModalRef.content.closeSubject.subscribe(() => {\n this.reload.emit();\n });\n }\n\n async setToSuccessful() {\n try {\n await this.modal.confirm(\n gettext('Set manually bulk operation to SUCCESSFUL'),\n gettext(\n 'You are about to change the bulk operation status to SUCCESSFUL. Do you want to proceed?'\n ),\n Status.DANGER,\n {},\n {},\n { eventName: BULK_OPERATION_EVENT }\n );\n\n await this.bulkOperationsService.updateBulkOperation({\n id: this.bulkOperation.id,\n generalStatus: OperationBulkGeneralStatus.SUCCESSFUL\n });\n this.reload.emit();\n this.alert.success(gettext('Operation status changed to SUCCESSFUL.'));\n } catch (er) {\n this.alert.addServerFailure(er);\n }\n }\n\n openFailedOperation(failedParentId) {\n this.showFailedOperation.emit(failedParentId);\n }\n\n isStatusScheduled() {\n return this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.SCHEDULED;\n }\n\n isStatusExecutingOrExecutingWithError() {\n return (\n this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.EXECUTING ||\n this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.EXECUTING_WITH_ERROR\n );\n }\n\n allOperationsCreated() {\n return (\n this.bulkOperation.progress.all ===\n this.bulkOperation.progress.executing +\n this.bulkOperation.progress.failed +\n this.bulkOperation.progress.pending +\n this.bulkOperation.progress.successful\n );\n }\n\n isStatusCanceled() {\n return this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.CANCELED;\n }\n\n isStatusFailed() {\n return this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.FAILED;\n }\n}\n","<c8y-li\n class=\"c8y-list__item--double-actions\"\n [ngClass]=\"{ 'c8y-list__item--no-expand': !detailsCollapsed }\"\n [collapsed]=\"detailsCollapsed\"\n #listItem\n id=\"{{ bulkOperation.id }}\"\n>\n <c8y-li-icon>\n <i\n [c8yIcon]=\"getOperationStatusOptions().icon\"\n [ngClass]=\"getOperationStatusOptions().styleClass\"\n [tooltip]=\"getOperationStatusOptions().label | translate\"\n ></i>\n </c8y-li-icon>\n <div [ngClass]=\"{ 'content-flex-58': !readOnly, 'content-flex-50': readOnly }\">\n <div class=\"col-5\">\n <button\n class=\"btn-clean\"\n type=\"button\"\n title=\"{{ bulkOperation.id }} - {{\n bulkOperation.operationPrototype.description | translate\n }}\"\n (click)=\"listItem.toggleCollapsed()\"\n >\n <span class=\"text-truncate\">\n <strong class=\"text-muted m-r-4\">{{ bulkOperation.id }}</strong>\n {{ bulkOperation.operationPrototype.description | translate }}\n </span>\n </button>\n </div>\n <div class=\"flex-grow\">\n <div class=\"m-t-8 visible-xs\"></div>\n <hr *ngIf=\"isStatusCanceled(); else statusNotCanceled\" class=\"m-t-16 m-b-0 visible-xs\" />\n <ng-template #statusNotCanceled>\n <div\n [class]=\"progressBarClass\"\n title=\"{{ progressBarStatus | c8yNumber: 'floor':'1.0-0' }}%\"\n >\n <div\n [class]=\"progressBarColor\"\n role=\"progressbar\"\n [attr.aria-label]=\"'Progress' | translate\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width.%]=\"progressBarStatus\"\n >\n <span *ngIf=\"progressBarStatus !== 0\">\n {{ progressBarStatus | c8yNumber: 'floor':'1.0-0' }}%\n </span>\n </div>\n </div>\n </ng-template>\n </div>\n <div class=\"col-4\">\n <div class=\"p-t-8 visible-xs\"></div>\n <small *ngIf=\"bulkOperation.progress.successful > 0\" class=\"m-r-8 icon-flex\">\n <i c8yIcon=\"check-circle\" class=\"text-success m-r-4\"></i>\n <span\n ngNonBindable\n translate\n [translateParams]=\"{ bulkOperationsCountSuccessful: bulkOperation.progress.successful }\"\n >\n {{ bulkOperationsCountSuccessful }} successful\n </span>\n </small>\n <small *ngIf=\"bulkOperation.progress.failed > 0\" class=\"m-r-8 icon-flex\">\n <i c8yIcon=\"warning\" class=\"text-danger m-r-4\"></i>\n <span\n ngNonBindable\n translate\n [translateParams]=\"{ bulkOperationsCountFailed: bulkOperation.progress.failed }\"\n >\n {{ bulkOperationsCountFailed }} failed\n </span>\n </small>\n <small *ngIf=\"bulkOperation.progress.executing > 0\" class=\"m-r-8 icon-flex\">\n <i c8yIcon=\"refresh\" class=\"text-primary m-r-4\"></i>\n <span\n ngNonBindable\n translate\n [translateParams]=\"{ bulkOperationsCountExecuting: bulkOperation.progress.executing }\"\n >\n {{ bulkOperationsCountExecuting }} executing\n </span>\n </small>\n <small *ngIf=\"bulkOperation.progress.pending > 0\" class=\"m-r-8 icon-flex\">\n <i c8yIcon=\"clock-o\" class=\"text-primary m-r-4\"></i>\n <span\n ngNonBindable\n translate\n [translateParams]=\"{ bulkOperationsCountPending: bulkOperation.progress.pending }\"\n >\n {{ bulkOperationsCountPending }} pending\n </span>\n </small>\n </div>\n </div>\n <div class=\"c8y-list__item__footer\">\n <div class=\"m-r-16\">\n <span class=\"text-label-small m-r-4\" translate>Start</span>\n <small class=\"icon-flex\">\n <i c8yIcon=\"calendar\" class=\"m-r-4\"></i>\n <span>\n {{ bulkOperation.startDate | c8yDate }}\n </span>\n </small>\n </div>\n <div class=\"m-r-16\" *ngIf=\"bulkOperationGeneralStatus.CANCELED !== bulkOperation.generalStatus\">\n <span class=\"text-label-small m-r-4\" translate>Finish</span>\n\n <small class=\"icon-flex\">\n <i c8yIcon=\"calendar\" class=\"m-r-4\"></i>\n <span>{{ finishDate | c8yDate }}</span>\n </small>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ finishDatePopoverText | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n *ngIf=\"isStatusScheduled() || isStatusExecutingOrExecutingWithError()\"\n ></button>\n </div>\n </div>\n <ng-container *ngIf=\"!readOnly\">\n <c8y-li-action\n *ngIf=\"isStatusScheduled()\"\n label=\"{{ 'Edit schedule' | translate }}\"\n (click)=\"editSchedule()\"\n icon=\"pencil\"\n c8yProductExperience\n [actionName]=\"BULK_OPERATION_EVENT\"\n ></c8y-li-action>\n <c8y-li-action\n *ngIf=\"\n isStatusScheduled() || (isStatusExecutingOrExecutingWithError() && !allOperationsCreated())\n \"\n label=\"{{ 'Cancel bulk operation' | translate }}\"\n (click)=\"cancelBulkOperation()\"\n icon=\"remove\"\n c8yProductExperience\n [actionName]=\"BULK_OPERATION_EVENT\"\n ></c8y-li-action>\n <c8y-li-action\n *ngIf=\"isStatusFailed()\"\n label=\"{{ 'Retry failed operations' | translate }}\"\n (click)=\"retryFailedOperation()\"\n icon=\"repeat\"\n c8yProductExperience\n [actionName]=\"BULK_OPERATION_EVENT\"\n ></c8y-li-action>\n <c8y-li-action\n *ngIf=\"isStatusFailed()\"\n label=\"{{ 'Set operation to SUCCESSFUL' | translate }}\"\n (click)=\"setToSuccessful()\"\n icon=\"check-circle\"\n c8yProductExperience\n [actionName]=\"BULK_OPERATION_EVENT\"\n ></c8y-li-action>\n </ng-container>\n <c8y-li-collapse class=\"m-b-16\">\n <c8y-operation-details-tabs\n *ngIf=\"!listItem.collapsed\"\n [operation]=\"bulkOperation\"\n [readOnly]=\"readOnly\"\n (onRetryFailedOperations)=\"retryFailedOperation()\"\n (showFailedOperation)=\"openFailedOperation($event)\"\n [bulkOperationModalDetailsService]=\"bulkOperationListItemService\"\n ></c8y-operation-details-tabs>\n </c8y-li-collapse>\n</c8y-li>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { BulkOperationSchedulerModule } from '@c8y/ngx-components/operations/bulk-operation-scheduler';\nimport { OperationSummaryModule } from '@c8y/ngx-components/operations/operation-summary';\nimport { OperationsListItemDetailsModule } from '@c8y/ngx-components/operations/operations-list-item-details';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { BulkOperationListItemComponent } from './bulk-operation-list-item.component';\nimport { BulkOperationListItemService } from './bulk-operation-list-item.service';\nimport { BulkOperationWrapperComponent } from './bulk-operation-wrapper.component';\nimport { BULK_OPERATION_WRAPPER_MODAL_BODY_COMPONENT } from './bulk-operation-wrapper.model';\nimport { ModalBodyHostDirective } from './modal-body-host.directive';\nimport { BulkOperationsRescheduleModalComponent } from './modals/bulk-operations-reschedule-modal.component';\n\n/**\n * This module allows for displaying the list item of a bulk operation with its details.\n */\n@NgModule({\n imports: [\n CoreModule,\n PopoverModule,\n TooltipModule,\n OperationSummaryModule,\n BulkOperationSchedulerModule,\n OperationsListItemDetailsModule\n ],\n providers: [\n BulkOperationListItemService,\n {\n provide: BULK_OPERATION_WRAPPER_MODAL_BODY_COMPONENT,\n useValue: {\n component: BulkOperationListItemComponent,\n config: { detailsCollapsed: false, readOnly: true }\n }\n }\n ],\n declarations: [\n BulkOperationListItemComponent,\n BulkOperationsRescheduleModalComponent,\n BulkOperationWrapperComponent,\n ModalBodyHostDirective\n ],\n exports: [\n BulkOperationListItemComponent,\n BulkOperationsRescheduleModalComponent,\n BulkOperationWrapperComponent\n ]\n})\nexport class BulkOperationListItemModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3.ModalBodyHostDirective","i4","i1","i2","i1.BulkOperationListItemService","i5","i6"],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-operations-bulk-operation-list-item.mjs","sources":["../../operations/bulk-operation-list-item/bulk-operation-list-item.model.ts","../../operations/bulk-operation-list-item/bulk-operation-wrapper.model.ts","../../operations/bulk-operation-list-item/modal-body-host.directive.ts","../../operations/bulk-operation-list-item/bulk-operation-wrapper.component.ts","../../operations/bulk-operation-list-item/bulk-operation-wrapper.component.html","../../operations/bulk-operation-list-item/bulk-operation-list-item.service.ts","../../operations/bulk-operation-list-item/modals/bulk-operations-reschedule-modal.component.ts","../../operations/bulk-operation-list-item/modals/bulk-operations-reschedule-modal.component.html","../../operations/bulk-operation-list-item/bulk-operation-list-item.component.ts","../../operations/bulk-operation-list-item/bulk-operation-list-item.component.html","../../operations/bulk-operation-list-item/bulk-operation-list-item.module.ts","../../operations/bulk-operation-list-item/c8y-ngx-components-operations-bulk-operation-list-item.ts"],"sourcesContent":["import { OperationBulkGeneralStatus } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components';\nimport { OperationStatusOption } from '@c8y/ngx-components/operations/shared';\n\nexport type OperationStatusOptionsMap = {\n [key in keyof typeof BULK_OPERATION_STATUS_LABELS]?: OperationStatusOption;\n};\n\nexport const BULK_OPERATION_STATUS_LABELS = {\n SCHEDULED: gettext('Scheduled'),\n EXECUTING: gettext('Executing'),\n CANCELED: gettext('Canceled'),\n FAILED: gettext('Completed with failures'),\n SUCCESSFUL: gettext('Completed successfully'),\n DELETED: gettext('Deleted')\n};\n\nexport const BULK_OPERATION_STATUS_OPTIONS: OperationStatusOptionsMap = {\n SCHEDULED: {\n label: BULK_OPERATION_STATUS_LABELS.SCHEDULED,\n generalStatuses: [OperationBulkGeneralStatus.SCHEDULED],\n icon: 'calendar',\n styleClass: 'text-info'\n },\n EXECUTING: {\n label: BULK_OPERATION_STATUS_LABELS.EXECUTING,\n generalStatuses: [\n OperationBulkGeneralStatus.EXECUTING,\n OperationBulkGeneralStatus.EXECUTING_WITH_ERROR\n ],\n icon: 'refresh',\n styleClass: 'text-primary'\n },\n DELETED: {\n label: BULK_OPERATION_STATUS_LABELS.DELETED,\n generalStatuses: [OperationBulkGeneralStatus.DELETED],\n icon: 'delete-document',\n styleClass: 'text-muted'\n },\n CANCELED: {\n label: BULK_OPERATION_STATUS_LABELS.CANCELED,\n generalStatuses: [OperationBulkGeneralStatus.CANCELED],\n icon: 'ban',\n styleClass: 'text-primary'\n },\n FAILED: {\n label: BULK_OPERATION_STATUS_LABELS.FAILED,\n generalStatuses: [OperationBulkGeneralStatus.FAILED],\n icon: 'exclamation-circle',\n styleClass: 'text-danger'\n },\n SUCCESSFUL: {\n label: BULK_OPERATION_STATUS_LABELS.SUCCESSFUL,\n generalStatuses: [OperationBulkGeneralStatus.SUCCESSFUL],\n icon: 'check-circle',\n styleClass: 'text-success'\n }\n};\n","import { EventEmitter, InjectionToken, Type } from '@angular/core';\nimport { IOperationBulk } from '@c8y/client';\n\nexport const BULK_OPERATION_WRAPPER_MODAL_BODY_COMPONENT =\n new InjectionToken<BulkOperationDetailsModalBodyConfiguration>(\n 'BulkOperationWrapperModalBodyComponent'\n );\n\nexport interface BulkOperationDetailsModalBodyConfiguration {\n component: Type<BulkOperationDetailsModalBody>;\n config?: object;\n}\n\nexport interface BulkOperationDetailsModalBody {\n bulkOperation: Partial<IOperationBulk>;\n showFailedOperation: EventEmitter<any>;\n}\n","import { Directive, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[modalBodyHost]'\n})\nexport class ModalBodyHostDirective {\n constructor(public viewContainerRef: ViewContainerRef) {}\n}\n","import { Component, Inject, Input, OnDestroy, OnInit, Optional, ViewChild } from '@angular/core';\nimport { IOperationBulk } from '@c8y/client';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { assign } from 'lodash-es';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport {\n BulkOperationDetailsModalBody,\n BulkOperationDetailsModalBodyConfiguration,\n BULK_OPERATION_WRAPPER_MODAL_BODY_COMPONENT\n} from './bulk-operation-wrapper.model';\nimport { ModalBodyHostDirective } from './modal-body-host.directive';\n@Component({\n selector: 'c8y-bulk-operations-wrapper',\n templateUrl: './bulk-operation-wrapper.component.html'\n})\nexport class BulkOperationWrapperComponent implements OnInit, OnDestroy {\n @Input() bulkOperation: Partial<IOperationBulk>;\n\n @ViewChild(ModalBodyHostDirective, { static: true })\n modalBodyHost: ModalBodyHostDirective;\n\n private destroyed$: Subject<void> = new Subject();\n\n constructor(\n public bulkOperationsService: BulkOperationsService,\n public modalRef: BsModalRef,\n private modalService: BsModalService,\n @Optional()\n @Inject(BULK_OPERATION_WRAPPER_MODAL_BODY_COMPONENT)\n private modalBodyConfig: BulkOperationDetailsModalBodyConfiguration\n ) {}\n\n ngOnInit(): void {\n if (this.modalBodyConfig) {\n const componentRef =\n this.modalBodyHost.viewContainerRef.createComponent<BulkOperationDetailsModalBody>(\n this.modalBodyConfig.component\n );\n assign(componentRef.instance, this.modalBodyConfig.config);\n componentRef.instance.bulkOperation = this.bulkOperation;\n componentRef.instance.showFailedOperation\n .pipe(takeUntil(this.destroyed$))\n .subscribe(event => this.openDetails(event));\n }\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n\n // openDetails function needs to be defined in the both places (component and the service) to avoid circular dependency.\n async openDetails(bulkOperationId: string | number) {\n const bulkOperation: IOperationBulk = (\n await this.bulkOperationsService.getBulkOperationById(bulkOperationId)\n ).data;\n const initialState = { bulkOperation };\n this.modalService.show(BulkOperationWrapperComponent, {\n initialState,\n class: 'modal-lg',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title'\n });\n }\n}\n","<div class=\"viewport-modal\">\n <div class=\"modal-header\">\n <h3 id=\"modal-title\">{{ 'Bulk operation details' | translate }}</h3>\n </div>\n\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <ng-container modalBodyHost></ng-container>\n </div>\n\n <div class=\"modal-footer\">\n <button\n title=\"{{ 'Close' | translate }}\"\n type=\"button\"\n class=\"btn btn-default\"\n (click)=\"modalRef.hide()\"\n >\n {{ 'Close' | translate }}\n </button>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { IOperationBulk } from '@c8y/client';\nimport { BulkOperationModalDetailsService } from '@c8y/ngx-components/operations/bulk-operation-modal-details';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { BulkOperationWrapperComponent } from './bulk-operation-wrapper.component';\n\n@Injectable({ providedIn: 'root' })\nexport class BulkOperationListItemService implements BulkOperationModalDetailsService {\n constructor(\n private bulkOperationsService: BulkOperationsService,\n private modalService: BsModalService\n ) {}\n\n async openDetails(bulkOperationId: string | number) {\n const bulkOperation: IOperationBulk = (\n await this.bulkOperationsService.getBulkOperationById(bulkOperationId)\n ).data;\n const initialState = { bulkOperation };\n this.modalService.show(BulkOperationWrapperComponent, {\n initialState,\n class: 'modal-lg',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title'\n });\n }\n}\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { IOperationBulk } from '@c8y/client';\nimport { AlertService, GainsightService, gettext } from '@c8y/ngx-components';\nimport { OperationSchedule } from '@c8y/ngx-components/operations/bulk-operation-scheduler';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { BULK_OPERATION_EVENT } from '@c8y/ngx-components/operations/product-experience';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Subject } from 'rxjs';\n@Component({\n selector: 'c8y-bulk-operations-reschedule-modal',\n templateUrl: 'bulk-operations-reschedule-modal.component.html'\n})\nexport class BulkOperationsRescheduleModalComponent implements OnInit {\n BULK_OPERATION_EVENT = BULK_OPERATION_EVENT;\n closeSubject: Subject<IOperationBulk> = new Subject();\n dateAndDelay: OperationSchedule;\n bulkOperation: Partial<IOperationBulk>;\n isRetryOperation: boolean;\n modalTitle: string;\n\n private readonly CARRIAGE_RETURN_CODE = 'Escape';\n\n constructor(\n public bsModalRef: BsModalRef,\n private bulkOperationsService: BulkOperationsService,\n private alert: AlertService,\n private gainsightService: GainsightService\n ) {}\n\n @HostListener('window:keyup', ['$event'])\n onKeyUp(event: KeyboardEvent) {\n if (event.code === this.CARRIAGE_RETURN_CODE) {\n this.gainsightService.triggerEvent('modalDialog', {\n title: this.modalTitle,\n result: 'Cancel'\n });\n }\n }\n\n ngOnInit() {\n this.modalTitle = this.getTitle();\n }\n\n onDateAndDelaySelect($event) {\n this.dateAndDelay = $event;\n }\n\n getTitle() {\n return this.isRetryOperation ? gettext('Retry operation') : gettext('Edit schedule');\n }\n\n onCancel() {\n this.bsModalRef.hide();\n }\n\n async onSave() {\n let newBulkOperation;\n this.bulkOperation.startDate = this.dateAndDelay.scheduledDate.toISOString();\n this.bulkOperation.creationRamp = this.dateAndDelay.delayInSeconds;\n\n if (this.isRetryOperation) {\n try {\n newBulkOperation = await this.bulkOperationsService.createBulkOperation(this.bulkOperation);\n this.alert.success(gettext('Successfully rescheduled for a retry.'));\n } catch (er) {\n this.alert.addServerFailure(er);\n }\n } else {\n try {\n newBulkOperation = await this.bulkOperationsService.updateBulkOperation(this.bulkOperation);\n this.alert.success(gettext('Successfully rescheduled.'));\n } catch (er) {\n this.alert.addServerFailure(er);\n }\n }\n\n // send back to component from which modal was called\n this.closeSubject.next(newBulkOperation.data);\n this.bsModalRef.hide();\n }\n}\n","<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i c8yIcon=\"c8y-energy\"></i>\n <h4 id=\"modal-title\">{{ modalTitle | translate }}</h4>\n </div>\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <div class=\"modal-body\">\n <div class=\"text-center\">\n <c8y-operation-summary\n [description]=\"bulkOperation.operationPrototype.description\"\n ></c8y-operation-summary>\n </div>\n <div class=\"p-t-16 center-block\" style=\"max-width: 300px\">\n <c8y-operation-scheduler\n [(ngModel)]=\"dateAndDelay\"\n #scheduler=\"ngModel\"\n ></c8y-operation-scheduler>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button\n (click)=\"onCancel()\"\n type=\"button\"\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n c8yProductExperience\n [actionName]=\"BULK_OPERATION_EVENT\"\n [actionData]=\"{ title: modalTitle, result: 'Cancel' }\"\n >\n <span translate>Cancel</span>\n </button>\n <button\n id=\"save-btn\"\n (click)=\"onSave()\"\n type=\"button\"\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n [disabled]=\"scheduler?.control?.errors\"\n c8yProductExperience\n [actionName]=\"BULK_OPERATION_EVENT\"\n [actionData]=\"{ title: modalTitle, result: 'Save' }\"\n >\n <span translate>Save</span>\n </button>\n </div>\n</div>\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { IOperationBulk, OperationBulkGeneralStatus } from '@c8y/client';\nimport {\n AlertService,\n gettext,\n ListItemComponent,\n ModalService,\n Status\n} from '@c8y/ngx-components';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { BULK_OPERATION_EVENT } from '@c8y/ngx-components/operations/product-experience';\nimport { assign, cloneDeep, find, values } from 'lodash-es';\nimport { BsModalRef, BsModalService, ModalOptions } from 'ngx-bootstrap/modal';\nimport {\n BULK_OPERATION_STATUS_OPTIONS,\n OperationStatusOptionsMap\n} from './bulk-operation-list-item.model';\nimport { BulkOperationListItemService } from './bulk-operation-list-item.service';\nimport { BulkOperationsRescheduleModalComponent } from './modals/bulk-operations-reschedule-modal.component';\n\n@Component({\n selector: 'c8y-bulk-operation-list-item',\n templateUrl: './bulk-operation-list-item.component.html'\n})\nexport class BulkOperationListItemComponent implements OnInit, OnChanges {\n BULK_OPERATION_EVENT = BULK_OPERATION_EVENT;\n @Input()\n bulkOperation: Partial<IOperationBulk>;\n @Input()\n detailsCollapsed = true;\n @Input()\n readOnly = false;\n @Output() showFailedOperation = new EventEmitter();\n @Output() reload: EventEmitter<any> = new EventEmitter();\n @ViewChild('listItem', { static: true }) listItem: ListItemComponent;\n iconClass: string;\n finishDate: number;\n refreshLoading = false;\n bulkOperationGeneralStatus = OperationBulkGeneralStatus;\n BULK_OPERATION_STATUS_OPTIONS: OperationStatusOptionsMap = BULK_OPERATION_STATUS_OPTIONS;\n bsModalRef: BsModalRef;\n finishDatePopoverText: string = gettext(\n 'Approximate date, estimated based on the bulk operation settings.'\n );\n progressBarClass = 'progress';\n progressBarColor: string;\n progressBarStatus = 0;\n\n constructor(\n public bulkOperationListItemService: BulkOperationListItemService,\n private bulkOperationsService: BulkOperationsService,\n private modal: ModalService,\n private alert: AlertService,\n private bsModalService: BsModalService\n ) {}\n\n ngOnInit() {\n this.finishDate = this.calculateFinishDateMs();\n this.setProgressBar();\n }\n\n getOperationStatusOptions() {\n const statusOptions = values(BULK_OPERATION_STATUS_OPTIONS);\n return find(statusOptions, options =>\n options.generalStatuses.includes(this.bulkOperation.generalStatus)\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.bulkOperation && !changes.bulkOperation.firstChange) {\n this.setProgressBar();\n }\n }\n calculateFinishDateMs(): number {\n const startDateMs: number = new Date(this.bulkOperation.startDate).getTime();\n const creationRampMs: number = this.bulkOperation.creationRamp * 1000;\n\n return startDateMs + creationRampMs * this.bulkOperation.progress.all;\n }\n\n progressBarProgressFn() {\n return (\n ((this.bulkOperation.progress.successful + this.bulkOperation.progress.failed) /\n this.bulkOperation.progress.all) *\n 100\n );\n }\n\n setProgressBar() {\n const staticContentOfClass = 'progress-bar progress-striped active progress-bar';\n\n const progressBarState = {\n EXECUTING: {\n progressBarClass: 'progress progress-striped active',\n progressBarColor: `${staticContentOfClass}-primary`,\n progressBarStatus: this.progressBarProgressFn()\n },\n EXECUTING_WITH_ERROR: {\n progressBarClass: 'progress progress-striped active',\n progressBarColor: `${staticContentOfClass}-danger`,\n progressBarStatus: this.progressBarProgressFn()\n },\n FAILED: {\n progressBarClass: 'progress',\n progressBarColor: `${staticContentOfClass}-danger`,\n progressBarStatus: 100\n },\n SUCCESSFUL: {\n progressBarClass: 'progress',\n progressBarColor: `${staticContentOfClass}-success`,\n progressBarStatus: 100\n }\n };\n\n assign(this, progressBarState[this.bulkOperation.generalStatus]);\n }\n\n editSchedule() {\n const rescheduledOperation = cloneDeep(this.bulkOperation);\n const initialState = {\n bulkOperation: rescheduledOperation\n };\n const modalOptions = {\n initialState,\n class: 'modal-sm',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n backdrop: 'static'\n } as ModalOptions;\n this.bsModalRef = this.bsModalService.show(\n BulkOperationsRescheduleModalComponent,\n modalOptions\n );\n }\n\n async cancelBulkOperation() {\n try {\n await this.modal.confirm(\n gettext('Cancel bulk operation'),\n gettext('You are about to cancel the bulk operation. Do you want to proceed?'),\n Status.DANGER,\n {},\n {},\n { eventName: BULK_OPERATION_EVENT }\n );\n await this.bulkOperationsService.deleteBulkOperation(this.bulkOperation.id);\n this.reload.emit();\n this.alert.success(gettext('Operation canceled.'));\n } catch (er) {\n this.alert.addServerFailure(er);\n }\n }\n\n retryFailedOperation() {\n const clonedBulk = cloneDeep(this.bulkOperation);\n\n // change the id to failedparentId similar to the logic in deviceBulkControl.service.js\n delete clonedBulk.groupId;\n clonedBulk.failedParentId = this.bulkOperation.id;\n\n // show reschdedule modal:\n const initialState = {\n bulkOperation: clonedBulk,\n isRetryOperation: true\n };\n const modalOptions = { initialState, class: 'modal-sm', backdrop: 'static' } as ModalOptions;\n this.bsModalRef = this.bsModalService.show(\n BulkOperationsRescheduleModalComponent,\n modalOptions\n );\n this.bsModalRef.content.closeSubject.subscribe(() => {\n this.reload.emit();\n });\n }\n\n async setToSuccessful() {\n try {\n await this.modal.confirm(\n gettext('Set manually bulk operation to SUCCESSFUL'),\n gettext(\n 'You are about to change the bulk operation status to SUCCESSFUL. Do you want to proceed?'\n ),\n Status.DANGER,\n {},\n {},\n { eventName: BULK_OPERATION_EVENT }\n );\n\n await this.bulkOperationsService.updateBulkOperation({\n id: this.bulkOperation.id,\n generalStatus: OperationBulkGeneralStatus.SUCCESSFUL\n });\n this.reload.emit();\n this.alert.success(gettext('Operation status changed to SUCCESSFUL.'));\n } catch (er) {\n this.alert.addServerFailure(er);\n }\n }\n\n openFailedOperation(failedParentId) {\n this.showFailedOperation.emit(failedParentId);\n }\n\n isStatusScheduled() {\n return this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.SCHEDULED;\n }\n\n isStatusExecutingOrExecutingWithError() {\n return (\n this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.EXECUTING ||\n this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.EXECUTING_WITH_ERROR\n );\n }\n\n allOperationsCreated() {\n return (\n this.bulkOperation.progress.all ===\n this.bulkOperation.progress.executing +\n this.bulkOperation.progress.failed +\n this.bulkOperation.progress.pending +\n this.bulkOperation.progress.successful\n );\n }\n\n isStatusCanceled() {\n return this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.CANCELED;\n }\n\n isStatusFailed() {\n return this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.FAILED;\n }\n}\n","<c8y-li\n class=\"c8y-list__item--double-actions\"\n [ngClass]=\"{ 'c8y-list__item--no-expand': !detailsCollapsed }\"\n [collapsed]=\"detailsCollapsed\"\n #listItem\n id=\"{{ bulkOperation.id }}\"\n>\n <c8y-li-icon>\n <i\n [c8yIcon]=\"getOperationStatusOptions().icon\"\n [ngClass]=\"getOperationStatusOptions().styleClass\"\n [tooltip]=\"getOperationStatusOptions().label | translate\"\n ></i>\n </c8y-li-icon>\n <div [ngClass]=\"{ 'content-flex-58': !readOnly, 'content-flex-50': readOnly }\">\n <div class=\"col-5\">\n <button\n class=\"btn-clean\"\n type=\"button\"\n title=\"{{ bulkOperation.id }} - {{\n bulkOperation.operationPrototype.description | translate\n }}\"\n (click)=\"listItem.toggleCollapsed()\"\n >\n <span class=\"text-truncate\">\n <strong class=\"text-muted m-r-4\">{{ bulkOperation.id }}</strong>\n {{ bulkOperation.operationPrototype.description | translate }}\n </span>\n </button>\n </div>\n <div class=\"flex-grow\">\n <div class=\"m-t-8 visible-xs\"></div>\n <hr *ngIf=\"isStatusCanceled(); else statusNotCanceled\" class=\"m-t-16 m-b-0 visible-xs\" />\n <ng-template #statusNotCanceled>\n <div\n [class]=\"progressBarClass\"\n title=\"{{ progressBarStatus | c8yNumber: 'floor':'1.0-0' }}%\"\n >\n <div\n [class]=\"progressBarColor\"\n role=\"progressbar\"\n [attr.aria-label]=\"'Progress' | translate\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width.%]=\"progressBarStatus\"\n >\n <span *ngIf=\"progressBarStatus !== 0\">\n {{ progressBarStatus | c8yNumber: 'floor':'1.0-0' }}%\n </span>\n </div>\n </div>\n </ng-template>\n </div>\n <div class=\"col-4\">\n <div class=\"p-t-8 visible-xs\"></div>\n <small *ngIf=\"bulkOperation.progress.successful > 0\" class=\"m-r-8 icon-flex\">\n <i c8yIcon=\"check-circle\" class=\"text-success m-r-4\"></i>\n <span\n ngNonBindable\n translate\n [translateParams]=\"{ bulkOperationsCountSuccessful: bulkOperation.progress.successful }\"\n >\n {{ bulkOperationsCountSuccessful }} successful\n </span>\n </small>\n <small *ngIf=\"bulkOperation.progress.failed > 0\" class=\"m-r-8 icon-flex\">\n <i c8yIcon=\"warning\" class=\"text-danger m-r-4\"></i>\n <span\n ngNonBindable\n translate\n [translateParams]=\"{ bulkOperationsCountFailed: bulkOperation.progress.failed }\"\n >\n {{ bulkOperationsCountFailed }} failed\n </span>\n </small>\n <small *ngIf=\"bulkOperation.progress.executing > 0\" class=\"m-r-8 icon-flex\">\n <i c8yIcon=\"refresh\" class=\"text-primary m-r-4\"></i>\n <span\n ngNonBindable\n translate\n [translateParams]=\"{ bulkOperationsCountExecuting: bulkOperation.progress.executing }\"\n >\n {{ bulkOperationsCountExecuting }} executing\n </span>\n </small>\n <small *ngIf=\"bulkOperation.progress.pending > 0\" class=\"m-r-8 icon-flex\">\n <i c8yIcon=\"clock-o\" class=\"text-primary m-r-4\"></i>\n <span\n ngNonBindable\n translate\n [translateParams]=\"{ bulkOperationsCountPending: bulkOperation.progress.pending }\"\n >\n {{ bulkOperationsCountPending }} pending\n </span>\n </small>\n </div>\n </div>\n <div class=\"c8y-list__item__footer\">\n <div class=\"m-r-16\">\n <span class=\"text-label-small m-r-4\" translate>Start</span>\n <small class=\"icon-flex\">\n <i c8yIcon=\"calendar\" class=\"m-r-4\"></i>\n <span>\n {{ bulkOperation.startDate | c8yDate }}\n </span>\n </small>\n </div>\n <div class=\"m-r-16\" *ngIf=\"bulkOperationGeneralStatus.CANCELED !== bulkOperation.generalStatus\">\n <span class=\"text-label-small m-r-4\" translate>Finish</span>\n\n <small class=\"icon-flex\">\n <i c8yIcon=\"calendar\" class=\"m-r-4\"></i>\n <span>{{ finishDate | c8yDate }}</span>\n </small>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ finishDatePopoverText | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n *ngIf=\"isStatusScheduled() || isStatusExecutingOrExecutingWithError()\"\n ></button>\n </div>\n </div>\n <ng-container *ngIf=\"!readOnly\">\n <c8y-li-action\n *ngIf=\"isStatusScheduled()\"\n label=\"{{ 'Edit schedule' | translate }}\"\n (click)=\"editSchedule()\"\n icon=\"pencil\"\n c8yProductExperience\n [actionName]=\"BULK_OPERATION_EVENT\"\n ></c8y-li-action>\n <c8y-li-action\n *ngIf=\"\n isStatusScheduled() || (isStatusExecutingOrExecutingWithError() && !allOperationsCreated())\n \"\n label=\"{{ 'Cancel bulk operation' | translate }}\"\n (click)=\"cancelBulkOperation()\"\n icon=\"remove\"\n c8yProductExperience\n [actionName]=\"BULK_OPERATION_EVENT\"\n ></c8y-li-action>\n <c8y-li-action\n *ngIf=\"isStatusFailed()\"\n label=\"{{ 'Retry failed operations' | translate }}\"\n (click)=\"retryFailedOperation()\"\n icon=\"repeat\"\n c8yProductExperience\n [actionName]=\"BULK_OPERATION_EVENT\"\n ></c8y-li-action>\n <c8y-li-action\n *ngIf=\"isStatusFailed()\"\n label=\"{{ 'Set operation to SUCCESSFUL' | translate }}\"\n (click)=\"setToSuccessful()\"\n icon=\"check-circle\"\n c8yProductExperience\n [actionName]=\"BULK_OPERATION_EVENT\"\n ></c8y-li-action>\n </ng-container>\n <c8y-li-collapse class=\"m-b-16\">\n <c8y-operation-details-tabs\n *ngIf=\"!listItem.collapsed\"\n [operation]=\"bulkOperation\"\n [readOnly]=\"readOnly\"\n (onRetryFailedOperations)=\"retryFailedOperation()\"\n (showFailedOperation)=\"openFailedOperation($event)\"\n [bulkOperationModalDetailsService]=\"bulkOperationListItemService\"\n ></c8y-operation-details-tabs>\n </c8y-li-collapse>\n</c8y-li>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { BulkOperationSchedulerModule } from '@c8y/ngx-components/operations/bulk-operation-scheduler';\nimport { OperationSummaryModule } from '@c8y/ngx-components/operations/operation-summary';\nimport { OperationsListItemDetailsModule } from '@c8y/ngx-components/operations/operations-list-item-details';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { BulkOperationListItemComponent } from './bulk-operation-list-item.component';\nimport { BulkOperationListItemService } from './bulk-operation-list-item.service';\nimport { BulkOperationWrapperComponent } from './bulk-operation-wrapper.component';\nimport { BULK_OPERATION_WRAPPER_MODAL_BODY_COMPONENT } from './bulk-operation-wrapper.model';\nimport { ModalBodyHostDirective } from './modal-body-host.directive';\nimport { BulkOperationsRescheduleModalComponent } from './modals/bulk-operations-reschedule-modal.component';\n\n/**\n * This module allows for displaying the list item of a bulk operation with its details.\n */\n@NgModule({\n imports: [\n CoreModule,\n PopoverModule,\n TooltipModule,\n OperationSummaryModule,\n BulkOperationSchedulerModule,\n OperationsListItemDetailsModule\n ],\n providers: [\n BulkOperationListItemService,\n {\n provide: BULK_OPERATION_WRAPPER_MODAL_BODY_COMPONENT,\n useValue: {\n component: BulkOperationListItemComponent,\n config: { detailsCollapsed: false, readOnly: true }\n }\n }\n ],\n declarations: [\n BulkOperationListItemComponent,\n BulkOperationsRescheduleModalComponent,\n BulkOperationWrapperComponent,\n ModalBodyHostDirective\n ],\n exports: [\n BulkOperationListItemComponent,\n BulkOperationsRescheduleModalComponent,\n BulkOperationWrapperComponent\n ]\n})\nexport class BulkOperationListItemModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3.ModalBodyHostDirective","i4","i1","i2","i1.BulkOperationListItemService","i5","i6"],"mappings":"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"}
@@ -8,10 +8,10 @@ import * as i2$1 from '@c8y/ngx-components';
8
8
  import { operationStatusIcons, operationStatusClasses, PRODUCT_EXPERIENCE_EVENT_SOURCE, CoreModule } from '@c8y/ngx-components';
9
9
  import { BulkOperationListItemService } from '@c8y/ngx-components/operations/bulk-operation-list-item';
10
10
  import * as i2 from '@c8y/ngx-components/operations/operations-list';
11
- import { OperationsListModule } from '@c8y/ngx-components/operations/operations-list';
11
+ import { OperationsListItemComponent } from '@c8y/ngx-components/operations/operations-list';
12
12
  import * as i1 from 'ngx-bootstrap/modal';
13
- import * as i1$1 from '@c8y/client';
14
13
  import { ACTIONS_OPERATIONS, COMPONENTS } from '@c8y/ngx-components/operations/product-experience';
14
+ import * as i1$1 from '@c8y/client';
15
15
  import * as i3 from '@angular/common';
16
16
 
17
17
  class OperationDetailsModalComponent {
@@ -121,13 +121,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
121
121
  */
122
122
  class OperationDetailsModule {
123
123
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: OperationDetailsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
124
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: OperationDetailsModule, declarations: [OperationDetailsComponent, OperationDetailsModalComponent], imports: [CoreModule, PopoverModule, TooltipModule, CollapseModule, OperationsListModule], exports: [OperationDetailsComponent] }); }
125
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: OperationDetailsModule, providers: [OperationDetailsService, BulkOperationListItemService], imports: [CoreModule, PopoverModule, TooltipModule, CollapseModule, OperationsListModule] }); }
124
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: OperationDetailsModule, declarations: [OperationDetailsComponent, OperationDetailsModalComponent], imports: [CoreModule, PopoverModule, TooltipModule, CollapseModule, OperationsListItemComponent], exports: [OperationDetailsComponent] }); }
125
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: OperationDetailsModule, providers: [OperationDetailsService, BulkOperationListItemService], imports: [CoreModule, PopoverModule, TooltipModule, CollapseModule, OperationsListItemComponent] }); }
126
126
  }
127
127
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: OperationDetailsModule, decorators: [{
128
128
  type: NgModule,
129
129
  args: [{
130
- imports: [CoreModule, PopoverModule, TooltipModule, CollapseModule, OperationsListModule],
130
+ imports: [CoreModule, PopoverModule, TooltipModule, CollapseModule, OperationsListItemComponent],
131
131
  providers: [OperationDetailsService, BulkOperationListItemService],
132
132
  declarations: [OperationDetailsComponent, OperationDetailsModalComponent],
133
133
  exports: [OperationDetailsComponent]