@c8y/ngx-components 1021.52.0 → 1021.54.4
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.
- package/alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.component.d.ts +10 -2
- package/alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.component.d.ts.map +1 -1
- package/alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.model.d.ts +11 -0
- package/alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.model.d.ts.map +1 -0
- package/alarm-event-selector/alarm-event-selection-list/alarm-event-selection-list.component.d.ts +10 -4
- package/alarm-event-selector/alarm-event-selection-list/alarm-event-selection-list.component.d.ts.map +1 -1
- package/alarm-event-selector/alarm-event-selector-list-item/alarm-event-selector-list-item.component.d.ts +3 -1
- package/alarm-event-selector/alarm-event-selector-list-item/alarm-event-selector-list-item.component.d.ts.map +1 -1
- package/alarm-event-selector/alarm-event-selector.model.d.ts +7 -0
- package/alarm-event-selector/alarm-event-selector.model.d.ts.map +1 -1
- package/core/application/app-icon.component.d.ts.map +1 -1
- package/core/dashboard/dashboard-child-action.component.d.ts +1 -1
- package/core/dashboard/dashboard-child-action.component.d.ts.map +1 -1
- package/core/dashboard/dashboard.module.d.ts +29 -29
- package/core/dashboard/index.d.ts +3 -0
- package/core/dashboard/index.d.ts.map +1 -1
- package/core/dashboard/widgets-dashboard.component.d.ts +1 -1
- package/core/dashboard/widgets-dashboard.component.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.d.ts +1 -1
- package/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/realtime-control/realtime-control.component.d.ts +1 -1
- package/core/dashboard/wiget-time-context/realtime-control/realtime-control.component.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context-date-range.service.d.ts +10 -0
- package/core/dashboard/wiget-time-context/widget-time-context-date-range.service.d.ts.map +1 -0
- package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts +7 -4
- package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context.model.d.ts +0 -1
- package/core/dashboard/wiget-time-context/widget-time-context.model.d.ts.map +1 -1
- package/core/date-picker/date-picker.component.d.ts +1 -1
- package/core/date-picker/date-picker.component.d.ts.map +1 -1
- package/core/date-picker/date-picker.module.d.ts +9 -9
- package/core/date-time-picker/close-date-picker.directive.d.ts +1 -1
- package/core/date-time-picker/close-date-picker.directive.d.ts.map +1 -1
- package/core/date-time-picker/date-time-picker.component.d.ts +6 -3
- package/core/date-time-picker/date-time-picker.component.d.ts.map +1 -1
- package/core/date-time-picker/date-time-picker.module.d.ts +11 -11
- package/core/date-time-picker/date-time-picker.module.d.ts.map +1 -1
- package/core/forms/forms.module.d.ts +18 -18
- package/core/forms/required-input-placeholder.directive.d.ts +1 -1
- package/core/forms/required-input-placeholder.directive.d.ts.map +1 -1
- package/core/router/router.service.d.ts.map +1 -1
- package/core/user/user-menu.service.d.ts +36 -11
- package/core/user/user-menu.service.d.ts.map +1 -1
- package/datapoint-explorer/c8y-ngx-components-datapoint-explorer.d.ts.map +1 -0
- package/datapoint-explorer/datapoint-explorer.module.d.ts +7 -0
- package/datapoint-explorer/datapoint-explorer.module.d.ts.map +1 -0
- package/datapoint-explorer/index.d.ts +2 -0
- package/datapoint-explorer/index.d.ts.map +1 -0
- package/datapoint-explorer/view/c8y-ngx-components-datapoint-explorer-view.d.ts.map +1 -0
- package/datapoint-explorer/view/configuration/naming-dictionary.d.ts +3 -0
- package/datapoint-explorer/view/configuration/naming-dictionary.d.ts.map +1 -0
- package/datapoint-explorer/view/configuration/workspace-configuration.component.d.ts +38 -0
- package/datapoint-explorer/view/configuration/workspace-configuration.component.d.ts.map +1 -0
- package/datapoint-explorer/view/configuration/workspace-configuration.model.d.ts +7 -0
- package/datapoint-explorer/view/configuration/workspace-configuration.model.d.ts.map +1 -0
- package/datapoint-explorer/view/configuration/workspace-configuration.service.d.ts +15 -0
- package/datapoint-explorer/view/configuration/workspace-configuration.service.d.ts.map +1 -0
- package/datapoint-explorer/view/create-new-report-modal/create-new-report-modal.component.d.ts +25 -0
- package/datapoint-explorer/view/create-new-report-modal/create-new-report-modal.component.d.ts.map +1 -0
- package/datapoint-explorer/view/datapoint-explorer.component.d.ts +67 -0
- package/datapoint-explorer/view/datapoint-explorer.component.d.ts.map +1 -0
- package/datapoint-explorer/view/datapoint-explorer.service.d.ts +9 -0
- package/datapoint-explorer/view/datapoint-explorer.service.d.ts.map +1 -0
- package/datapoint-explorer/view/index.d.ts +2 -0
- package/datapoint-explorer/view/index.d.ts.map +1 -0
- package/datapoint-explorer/view/send-as-widget-to-report-modal/send-as-widget-to-report-modal.component.d.ts +23 -0
- package/datapoint-explorer/view/send-as-widget-to-report-modal/send-as-widget-to-report-modal.component.d.ts.map +1 -0
- package/echart/c8y-ngx-components-echart.d.ts.map +1 -0
- package/echart/chart-alerts/chart-alerts.component.d.ts +8 -0
- package/echart/chart-alerts/chart-alerts.component.d.ts.map +1 -0
- package/echart/charts.component.d.ts +63 -0
- package/echart/charts.component.d.ts.map +1 -0
- package/echart/index.d.ts +5 -0
- package/echart/index.d.ts.map +1 -0
- package/echart/models/c8y-ngx-components-echart-models.d.ts.map +1 -0
- package/echart/models/chart.model.d.ts +37 -0
- package/echart/models/chart.model.d.ts.map +1 -0
- package/echart/models/datapoints-graph-widget.model.d.ts +126 -0
- package/echart/models/datapoints-graph-widget.model.d.ts.map +1 -0
- package/echart/models/index.d.ts +4 -0
- package/echart/models/index.d.ts.map +1 -0
- package/echart/models/svg-icons.model.d.ts +22 -0
- package/echart/models/svg-icons.model.d.ts.map +1 -0
- package/echart/services/chart-alarms.service.d.ts +17 -0
- package/echart/services/chart-alarms.service.d.ts.map +1 -0
- package/echart/services/chart-events.service.d.ts +17 -0
- package/echart/services/chart-events.service.d.ts.map +1 -0
- package/echart/services/chart-realtime.service.d.ts +35 -0
- package/echart/services/chart-realtime.service.d.ts.map +1 -0
- package/echart/services/chart-types.service.d.ts +15 -0
- package/echart/services/chart-types.service.d.ts.map +1 -0
- package/echart/services/custom-measurements.service.d.ts +12 -0
- package/echart/services/custom-measurements.service.d.ts.map +1 -0
- package/echart/services/echarts-options.service.d.ts +143 -0
- package/echart/services/echarts-options.service.d.ts.map +1 -0
- package/echart/services/y-axis.service.d.ts +17 -0
- package/echart/services/y-axis.service.d.ts.map +1 -0
- package/esm2022/alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.component.mjs +37 -12
- package/esm2022/alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.model.mjs +2 -0
- package/esm2022/alarm-event-selector/alarm-event-selection-list/alarm-event-selection-list.component.mjs +39 -12
- package/esm2022/alarm-event-selector/alarm-event-selector-list-item/alarm-event-selector-list-item.component.mjs +6 -4
- package/esm2022/alarm-event-selector/alarm-event-selector.component.mjs +1 -1
- package/esm2022/alarm-event-selector/alarm-event-selector.model.mjs +1 -1
- package/esm2022/alarm-event-selector/custom-alarm-event-form/custom-alarm-event-form.component.mjs +1 -1
- package/esm2022/alarms/alarms-filter.component.mjs +3 -3
- package/esm2022/core/application/app-icon.component.mjs +4 -4
- package/esm2022/core/dashboard/dashboard-child-action.component.mjs +3 -3
- package/esm2022/core/dashboard/dashboard.module.mjs +17 -14
- package/esm2022/core/dashboard/index.mjs +4 -1
- package/esm2022/core/dashboard/widgets-dashboard.component.mjs +9 -9
- package/esm2022/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.mjs +11 -9
- package/esm2022/core/dashboard/wiget-time-context/realtime-control/realtime-control.component.mjs +8 -7
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context-date-range.service.mjs +23 -0
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context.component.mjs +70 -26
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context.model.mjs +1 -1
- package/esm2022/core/date-picker/date-picker.component.mjs +29 -14
- package/esm2022/core/date-picker/date-picker.module.mjs +9 -7
- package/esm2022/core/date-time-picker/close-date-picker.directive.mjs +4 -3
- package/esm2022/core/date-time-picker/date-time-picker.component.mjs +57 -29
- package/esm2022/core/date-time-picker/date-time-picker.module.mjs +11 -7
- package/esm2022/core/forms/forms.module.mjs +3 -3
- package/esm2022/core/forms/ip-range-input-list.component.mjs +5 -5
- package/esm2022/core/forms/required-input-placeholder.directive.mjs +4 -3
- package/esm2022/core/router/router.service.mjs +1 -1
- package/esm2022/core/time-interval/time-interval.component.mjs +3 -3
- package/esm2022/core/user/user-menu.service.mjs +57 -17
- package/esm2022/datapoint-explorer/c8y-ngx-components-datapoint-explorer.mjs +5 -0
- package/esm2022/datapoint-explorer/datapoint-explorer.module.mjs +65 -0
- package/esm2022/datapoint-explorer/index.mjs +2 -0
- package/esm2022/datapoint-explorer/view/c8y-ngx-components-datapoint-explorer-view.mjs +5 -0
- package/esm2022/datapoint-explorer/view/configuration/naming-dictionary.mjs +65 -0
- package/esm2022/datapoint-explorer/view/configuration/workspace-configuration.component.mjs +169 -0
- package/esm2022/datapoint-explorer/view/configuration/workspace-configuration.model.mjs +2 -0
- package/esm2022/datapoint-explorer/view/configuration/workspace-configuration.service.mjs +40 -0
- package/esm2022/datapoint-explorer/view/create-new-report-modal/create-new-report-modal.component.mjs +64 -0
- package/esm2022/datapoint-explorer/view/datapoint-explorer.component.mjs +279 -0
- package/esm2022/datapoint-explorer/view/datapoint-explorer.service.mjs +23 -0
- package/esm2022/datapoint-explorer/view/index.mjs +2 -0
- package/esm2022/datapoint-explorer/view/send-as-widget-to-report-modal/send-as-widget-to-report-modal.component.mjs +48 -0
- package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.mjs +3 -3
- package/esm2022/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.mjs +3 -3
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-file-types/datapoints-exports-selector-file-types.component.mjs +3 -3
- package/esm2022/datapoints-export-selector/datapoints-export-selector.component.mjs +3 -3
- package/esm2022/device-list/add-smart-group.component.mjs +3 -3
- package/esm2022/echart/c8y-ngx-components-echart.mjs +5 -0
- package/esm2022/echart/chart-alerts/chart-alerts.component.mjs +16 -0
- package/esm2022/echart/charts.component.mjs +560 -0
- package/esm2022/echart/index.mjs +5 -0
- package/esm2022/echart/models/c8y-ngx-components-echart-models.mjs +5 -0
- package/esm2022/echart/models/chart.model.mjs +2 -0
- package/esm2022/echart/models/datapoints-graph-widget.model.mjs +17 -0
- package/esm2022/echart/models/index.mjs +4 -0
- package/esm2022/echart/models/svg-icons.model.mjs +22 -0
- package/esm2022/echart/services/chart-alarms.service.mjs +58 -0
- package/esm2022/echart/services/chart-events.service.mjs +44 -0
- package/esm2022/echart/services/chart-realtime.service.mjs +193 -0
- package/esm2022/echart/services/chart-types.service.mjs +102 -0
- package/esm2022/echart/services/custom-measurements.service.mjs +52 -0
- package/esm2022/echart/services/echarts-options.service.mjs +857 -0
- package/esm2022/echart/services/y-axis.service.mjs +150 -0
- package/esm2022/interval-picker/interval-picker.component.mjs +3 -3
- package/esm2022/interval-picker/interval-picker.model.mjs +1 -1
- package/esm2022/map/map.component.mjs +4 -1
- package/esm2022/report-dashboard/index.mjs +2 -1
- package/esm2022/time-context/c8y-ngx-components-time-context.mjs +5 -0
- package/esm2022/time-context/index.mjs +2 -0
- package/esm2022/time-context/time-context.component.mjs +217 -0
- package/esm2022/time-context/time-context.service.mjs +83 -0
- package/esm2022/tracking/tracking.component.mjs +5 -6
- package/esm2022/tracking/tracking.service.mjs +7 -3
- package/esm2022/translation-editor/lazy/translation-editor/translation-editor.component.mjs +6 -5
- package/esm2022/widgets/cockpit-exports/index.mjs +8 -1
- package/esm2022/widgets/definitions/datapoints-graph/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +5 -0
- package/esm2022/widgets/definitions/datapoints-graph/index.mjs +31 -0
- package/esm2022/widgets/definitions/index.mjs +3 -2
- package/esm2022/widgets/implementations/datapoints-graph/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +5 -0
- package/esm2022/widgets/implementations/datapoints-graph/datapoints-graph-config/datapoints-graph-widget-config.component.mjs +239 -0
- package/esm2022/widgets/implementations/datapoints-graph/datapoints-graph-view/datapoints-graph-widget-view.component.mjs +241 -0
- package/esm2022/widgets/implementations/datapoints-graph/index.mjs +3 -0
- package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +80 -28
- package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarms.mjs +2 -2
- package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +658 -0
- package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +72 -0
- package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +4 -4
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +4 -4
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-list.mjs +2 -2
- package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-echart-models.mjs +46 -0
- package/fesm2022/c8y-ngx-components-echart-models.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-echart.mjs +2023 -0
- package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-interval-picker.mjs +2 -2
- package/fesm2022/c8y-ngx-components-interval-picker.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-map.mjs +3 -0
- package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-report-dashboard.mjs +1 -1
- package/fesm2022/c8y-ngx-components-time-context.mjs +300 -0
- package/fesm2022/c8y-ngx-components-time-context.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-tracking.mjs +10 -7
- package/fesm2022/c8y-ngx-components-tracking.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +5 -4
- package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs +7 -0
- package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +38 -0
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-widgets-definitions.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +467 -0
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components.mjs +433 -281
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/interval-picker/interval-picker.component.d.ts.map +1 -1
- package/interval-picker/interval-picker.model.d.ts.map +1 -1
- package/locales/de.po +206 -279
- package/locales/es.po +206 -279
- package/locales/fr.po +206 -279
- package/locales/ja_JP.po +196 -279
- package/locales/ko.po +455 -444
- package/locales/locales.pot +200 -0
- package/locales/nl.po +206 -279
- package/locales/pl.po +206 -279
- package/locales/pt_BR.po +206 -279
- package/locales/zh_CN.po +450 -443
- package/locales/zh_TW.po +452 -445
- package/map/map.component.d.ts.map +1 -1
- package/package.json +1 -1
- package/report-dashboard/index.d.ts +1 -0
- package/report-dashboard/index.d.ts.map +1 -1
- package/time-context/c8y-ngx-components-time-context.d.ts.map +1 -0
- package/time-context/index.d.ts +2 -0
- package/time-context/index.d.ts.map +1 -0
- package/time-context/time-context.component.d.ts +61 -0
- package/time-context/time-context.component.d.ts.map +1 -0
- package/time-context/time-context.service.d.ts +25 -0
- package/time-context/time-context.service.d.ts.map +1 -0
- package/tracking/tracking.component.d.ts.map +1 -1
- package/tracking/tracking.service.d.ts.map +1 -1
- package/translation-editor/lazy/translation-editor/translation-editor.component.d.ts.map +1 -1
- package/widgets/cockpit-exports/index.d.ts +6 -0
- package/widgets/cockpit-exports/index.d.ts.map +1 -1
- package/widgets/definitions/datapoints-graph/c8y-ngx-components-widgets-definitions-datapoints-graph.d.ts.map +1 -0
- package/widgets/definitions/datapoints-graph/index.d.ts +16 -0
- package/widgets/definitions/datapoints-graph/index.d.ts.map +1 -0
- package/widgets/definitions/index.d.ts +1 -0
- package/widgets/definitions/index.d.ts.map +1 -1
- package/widgets/implementations/datapoints-graph/c8y-ngx-components-widgets-implementations-datapoints-graph.d.ts.map +1 -0
- package/widgets/implementations/datapoints-graph/datapoints-graph-config/datapoints-graph-widget-config.component.d.ts +43 -0
- package/widgets/implementations/datapoints-graph/datapoints-graph-config/datapoints-graph-widget-config.component.d.ts.map +1 -0
- package/widgets/implementations/datapoints-graph/datapoints-graph-view/datapoints-graph-widget-view.component.d.ts +54 -0
- package/widgets/implementations/datapoints-graph/datapoints-graph-view/datapoints-graph-widget-view.component.d.ts.map +1 -0
- package/widgets/implementations/datapoints-graph/index.d.ts +3 -0
- package/widgets/implementations/datapoints-graph/index.d.ts.map +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c8y-ngx-components-alarm-event-selector.mjs","sources":["../../alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.service.ts","../../alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.component.ts","../../alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.component.html","../../alarm-event-selector/alarm-event-selector.model.ts","../../alarm-event-selector/alarm-event-selector.service.ts","../../alarm-event-selector/alarm-event-selector-list-item/alarm-event-selector-list-item.component.ts","../../alarm-event-selector/alarm-event-selector-list-item/alarm-event-selector-list-item.component.html","../../alarm-event-selector/custom-alarm-event-form/custom-alarm-event-form.component.ts","../../alarm-event-selector/custom-alarm-event-form/custom-alarm-event-form.component.html","../../alarm-event-selector/pipes/includes-alarm.pipe.ts","../../alarm-event-selector/alarm-event-selector.component.ts","../../alarm-event-selector/alarm-event-selector.component.html","../../alarm-event-selector/alarm-event-selector-modal/alarm-event-selector-modal.component.ts","../../alarm-event-selector/alarm-event-selector-modal/alarm-event-selector-modal.component.html","../../alarm-event-selector/alarm-event-selector-modal/alarm-event-selector-modal.service.ts","../../alarm-event-selector/alarm-event-selection-list/alarm-event-selection-list.component.ts","../../alarm-event-selector/alarm-event-selection-list/alarm-event-selection-list.component.html","../../alarm-event-selector/alarm-event-selector.module.ts","../../alarm-event-selector/c8y-ngx-components-alarm-event-selector.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\nimport { AlarmOrEvent } from '../alarm-event-selector.model';\n\n@Injectable({ providedIn: 'root' })\nexport class AlarmEventAttributesFormService {\n duplicateTypeValidator(selectedItems: AlarmOrEvent[]) {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!control.value || !selectedItems?.length) {\n return null;\n }\n const isDuplicate = selectedItems.some(\n item => item.filters?.type?.toLowerCase() === control.value.toLowerCase()\n );\n return isDuplicate ? { duplicateType: true } : null;\n };\n }\n}\n","import { Component, forwardRef, Input, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormBuilder,\n FormControl,\n FormGroup,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n Validators\n} from '@angular/forms';\nimport { take } from 'rxjs/operators';\nimport { AlarmEventAttributesFormService } from './alarm-event-attributes-form.service';\nimport { AlarmOrEvent, OmitSelectorProperties, TimelineType } from '../alarm-event-selector.model';\n\n@Component({\n selector: 'c8y-alarm-event-attributes-form',\n templateUrl: './alarm-event-attributes-form.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AlarmEventAttributesFormComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => AlarmEventAttributesFormComponent),\n multi: true\n }\n ]\n})\nexport class AlarmEventAttributesFormComponent implements ControlValueAccessor, Validator, OnInit {\n @Input() timelineType: TimelineType;\n @Input() omitProperties: OmitSelectorProperties = {};\n @Input() selectedItems: AlarmOrEvent[] = [];\n formGroup: FormGroup;\n\n constructor(\n private formBuilder: FormBuilder,\n private alarmEventAttributesFormService: AlarmEventAttributesFormService\n ) {}\n\n ngOnInit() {\n this.formGroup = this.formBuilder.group({\n filters: this.formBuilder.group({\n type: [\n '',\n [\n Validators.required,\n this.alarmEventAttributesFormService.duplicateTypeValidator(this.selectedItems)\n ]\n ]\n }),\n timelineType: ''\n });\n\n if (!this.omitProperties.label) {\n this.formGroup.addControl('label', new FormControl('', Validators.required));\n }\n }\n\n validate(_control: AbstractControl): ValidationErrors {\n return this.formGroup?.valid ? null : { formInvalid: {} };\n }\n\n writeValue(obj: any): void {\n this.formGroup.patchValue(obj);\n }\n\n registerOnChange(fn: any): void {\n this.formGroup.valueChanges.subscribe(fn);\n }\n\n registerOnTouched(fn: any): void {\n this.formGroup.valueChanges.pipe(take(1)).subscribe(fn);\n }\n\n setDisabledState(isDisabled: boolean): void {\n isDisabled ? this.formGroup.disable() : this.formGroup.enable();\n }\n}\n","<div [formGroup]=\"formGroup\">\n <c8y-form-group *ngIf=\"formGroup.controls.label\">\n <label class=\"m-0\">{{ 'Label' | translate }}</label>\n <input\n class=\"form-control flex-grow\"\n name=\"label\"\n formControlName=\"label\"\n [placeholder]=\"\n 'e.g. {{ example }}'\n | translate\n : {\n example: timelineType === 'ALARM' ? 'Alarm unavailable' : 'Location update'\n }\n \"\n />\n </c8y-form-group>\n\n <div formGroupName=\"filters\">\n <c8y-form-group>\n <label class=\"m-0\">{{ 'Type' | translate }}</label>\n <input\n class=\"form-control flex-grow\"\n name=\"type\"\n formControlName=\"type\"\n [placeholder]=\"\n 'e.g. {{ example }}'\n | translate\n : {\n example:\n timelineType === 'ALARM' ? 'c8y_UnavailabilityAlarm' : 'c8y_LocationUpdate'\n }\n \"\n />\n <c8y-messages>\n <c8y-message\n name=\"duplicateType\"\n [text]=\"'Type already used.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n</div>\n","import { IIdentified } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components';\n\nexport type TimelineType = 'ALARM' | 'EVENT';\n\ntype AlarmOrEventBase = {\n timelineType: TimelineType;\n color: string;\n __active?: boolean;\n label: string;\n filters: {\n type: string;\n };\n __target: IIdentified;\n};\n\nexport type AlarmDetails = AlarmOrEventBase & {\n timelineType: 'ALARM';\n filters: {\n type: string;\n };\n};\n\nexport type EventDetails = AlarmOrEventBase & {\n timelineType: 'EVENT';\n filters: {\n type: string;\n };\n};\n\nexport type AlarmOrEvent = AlarmDetails | EventDetails;\n\nexport type TimelineTypeTexts = {\n listTitle: string;\n emptyStateIcon: string;\n emptyStateTitle: string;\n emptyStateSubtitle: string;\n addButtonLabel: string;\n addCustomItemButtonLabel: string;\n selectorTitle: string;\n availableItemsTitle: string;\n assetWithNoItemsEmptyStateSubtitle: string;\n largeNumberOfItemsInfo: string;\n selectedItemsTitle: string;\n noSelectedItemsTitle: string;\n recentItemsWarningTitle: string;\n recentItemsWarningText: string;\n addCustomText: string;\n};\n\nexport const EVENT_TEXTS: TimelineTypeTexts = {\n listTitle: gettext('Events'),\n emptyStateIcon: 'c8y-events',\n emptyStateTitle: gettext('No events to display.'),\n emptyStateSubtitle: gettext('Add your first event.'),\n addButtonLabel: gettext('Add event'),\n addCustomItemButtonLabel: gettext('Add custom event'),\n selectorTitle: gettext('Events selector'),\n availableItemsTitle: gettext('Available events'),\n assetWithNoItemsEmptyStateSubtitle: gettext('Select an asset with events from the list.'),\n largeNumberOfItemsInfo: gettext(\n 'Due to the large number, only a subset of events are displayed. Use search to narrow down the number of results.'\n ),\n selectedItemsTitle: gettext('Selected events'),\n noSelectedItemsTitle: gettext('No events selected.'),\n recentItemsWarningTitle: gettext('The list below may not be complete.'),\n recentItemsWarningText: gettext(\n 'Recent events are displayed below. Past events might not be shown.'\n ),\n addCustomText: gettext('Optionally you can add a custom event.')\n};\n\nexport const ALARM_TEXTS: TimelineTypeTexts = {\n listTitle: gettext('Alarms'),\n emptyStateIcon: 'c8y-alarm',\n emptyStateTitle: gettext('No alarms to display.'),\n emptyStateSubtitle: gettext('Add your first alarm.'),\n addButtonLabel: gettext('Add alarm'),\n addCustomItemButtonLabel: gettext('Add custom alarm'),\n selectorTitle: gettext('Alarms selector'),\n availableItemsTitle: gettext('Available alarms'),\n assetWithNoItemsEmptyStateSubtitle: gettext('Select an asset with alarms from the list.'),\n largeNumberOfItemsInfo: gettext(\n 'Due to the large number, only a subset of alarms are displayed. Use search to narrow down the number of results.'\n ),\n selectedItemsTitle: gettext('Selected alarms'),\n noSelectedItemsTitle: gettext('No alarms selected.'),\n recentItemsWarningTitle: gettext('The list below may not be complete.'),\n recentItemsWarningText: gettext(\n 'Recent alarms are displayed below. Past alarms might not be shown.'\n ),\n addCustomText: gettext('Optionally you can add a custom alarm.')\n};\n\n/**\n * The configuration for the alarms-events selector modal if some properties should be omitted.\n */\nexport type OmitSelectorProperties = {\n color?: boolean;\n label?: boolean;\n};\n","import { Injectable } from '@angular/core';\nimport { AlarmService, EventService, IAlarm, IEvent, IIdentified } from '@c8y/client';\nimport { ColorService } from '@c8y/ngx-components';\nimport { uniqBy } from 'lodash-es';\nimport {\n ALARM_TEXTS,\n AlarmDetails,\n AlarmOrEvent,\n EVENT_TEXTS,\n EventDetails,\n TimelineType,\n TimelineTypeTexts\n} from './alarm-event-selector.model';\n\n@Injectable({ providedIn: 'root' })\nexport class AlarmEventSelectorService {\n private timelineTypeTextsMap: Map<TimelineType, TimelineTypeTexts> = new Map([\n ['ALARM', ALARM_TEXTS],\n ['EVENT', EVENT_TEXTS]\n ]);\n\n constructor(\n private alarmService: AlarmService,\n private eventsService: EventService,\n private color: ColorService\n ) {}\n\n /**\n * This method returns the texts for the timeline type.\n * @param timelineType The timeline type.\n * @returns The texts for the timeline type.\n */\n timelineTypeTexts(timelineType: TimelineType): TimelineTypeTexts {\n return this.timelineTypeTextsMap.get(timelineType)!;\n }\n\n /**\n * This method returns all alarms or events of the platform based on the timeline type\n * @param timelineType The timeline type.\n * @returns The alarms or events of the asset.\n */\n async getItems(timelineType: TimelineType): Promise<AlarmOrEvent[]> {\n const filters = {\n pageSize: 1000\n };\n\n return timelineType === 'ALARM'\n ? await this.getAlarmsOfAsset(filters)\n : await this.getEventsOfAsset(filters);\n }\n\n /**\n * This method returns the items of the asset based on the timeline type.\n * @param parentReference The parent reference.\n * @param timelineType The timeline type.\n * @returns The alarms or events of the asset.\n */\n async getAlarmsOrEvents(\n parentReference: IIdentified,\n timelineType: TimelineType\n ): Promise<AlarmOrEvent[]> {\n const filters = { source: parentReference.id, pageSize: 1000 };\n\n return timelineType === 'ALARM'\n ? await this.getAlarmsOfAsset(filters)\n : await this.getEventsOfAsset(filters);\n }\n\n async getUniqueAlarmsOnly(data: IAlarm[]): Promise<AlarmDetails[]> {\n return Promise.all(\n uniqBy(data, 'type').map(async (alarm: IAlarm) => this.createItem('ALARM', alarm))\n );\n }\n\n async getUniqueEventsOnly(data: IEvent[]): Promise<EventDetails[]> {\n return Promise.all(\n uniqBy(data, 'type').map(async (event: IEvent) => this.createItem('EVENT', event))\n );\n }\n\n async createItem(timelineType: 'ALARM' & TimelineType, item: IAlarm): Promise<AlarmDetails>;\n async createItem(timelineType: 'EVENT' & TimelineType, item: IEvent): Promise<EventDetails>;\n async createItem(timelineType: TimelineType, item: IAlarm | IEvent): Promise<any> {\n const color = await this.color.generateColor(item.type);\n if (item.source && !item.source.name) {\n item.source.name = `Device ${item.source.id}`;\n }\n return {\n timelineType,\n color,\n label: item.type,\n filters: {\n type: item.type\n },\n __target: item.source\n };\n }\n\n private async getAlarmsOfAsset(filters: {\n pageSize: number;\n dateTo?: string;\n dateFrom?: string;\n source?: string | number;\n }): Promise<AlarmDetails[]> {\n const res = await this.alarmService.list({\n ...filters,\n withSourceAssets: !!filters.source,\n withSourceDevices: !!filters.source,\n pageSize: 1000\n });\n const alarms = await this.getUniqueAlarmsOnly(res.data);\n return alarms;\n }\n\n private async getEventsOfAsset(filters: {\n pageSize: number;\n dateTo?: string;\n dateFrom?: string;\n source?: string | number;\n }): Promise<EventDetails[]> {\n const res = await this.eventsService.list(filters);\n const events = this.getUniqueEventsOnly(res.data);\n return events;\n }\n}\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n OnInit,\n Output\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormBuilder,\n FormGroup,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport { AlarmOrEvent, OmitSelectorProperties, TimelineType } from '../alarm-event-selector.model';\nimport { map, take, takeUntil } from 'rxjs/operators';\nimport { Observable, Subject } from 'rxjs';\nimport { gettext } from '@c8y/ngx-components';\n\n@Component({\n selector: 'c8y-alarm-event-selector-list-item',\n templateUrl: './alarm-event-selector-list-item.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AlarmEventSelectorListItemComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => AlarmEventSelectorListItemComponent),\n multi: true\n }\n ]\n})\nexport class AlarmEventSelectorListItemComponent\n implements OnInit, ControlValueAccessor, Validator, OnDestroy\n{\n @Input() timelineType: TimelineType;\n @Input() highlightText: string;\n @Input() showAddRemoveButton = true;\n @Input() isSelected = false;\n @Input() optionToRemove = false;\n @Input() showActiveToggle = false;\n @Input() allowItemEdit = false;\n @Input() hideSource = false;\n @Input() displayAsSwitch = false;\n @Input() omitProperties: OmitSelectorProperties = {};\n\n colorPickerTitle: string;\n @Output() added = new EventEmitter<AlarmOrEvent>();\n @Output() removed = new EventEmitter<AlarmOrEvent>();\n\n formGroup: FormGroup;\n valid$: Observable<boolean>;\n private destroy$ = new Subject<void>();\n\n constructor(private formBuilder: FormBuilder) {\n this.formGroup = this.formBuilder.group({\n details: [],\n color: [],\n __active: [],\n __target: []\n });\n this.valid$ = this.formGroup.statusChanges.pipe(\n takeUntil(this.destroy$),\n map(val => val === 'VALID')\n );\n }\n\n ngOnInit() {\n this.colorPickerTitle = this.allowItemEdit ? gettext('Change color') : '';\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n toggleActive() {\n this.formGroup.controls.__active.setValue(!this.formGroup.value.__active);\n }\n\n validate(_control: AbstractControl): ValidationErrors {\n return this.formGroup?.valid ? null : { formInvalid: {} };\n }\n\n writeValue(obj: any): void {\n this.formGroup.patchValue({ ...obj, details: obj });\n }\n\n registerOnChange(fn: any): void {\n this.formGroup.valueChanges\n .pipe(\n map(tmp => this.transformFormValue(tmp)),\n takeUntil(this.destroy$)\n )\n .subscribe(fn);\n }\n\n registerOnTouched(fn: any): void {\n this.formGroup.valueChanges.pipe(take(1)).subscribe(fn);\n }\n\n setDisabledState(isDisabled: boolean): void {\n isDisabled ? this.formGroup.disable() : this.formGroup.enable();\n }\n\n addOrRemoveItem() {\n const value = this.transformFormValue(this.formGroup.value);\n if (this.isSelected) {\n this.removed.emit(value);\n } else {\n this.added.emit(value);\n }\n }\n\n remove() {\n this.removed.emit(this.transformFormValue(this.formGroup.value));\n }\n\n private transformFormValue(formValue: any) {\n const obj = Object.assign({}, formValue.details || {}, formValue);\n delete obj.details;\n return obj;\n }\n}\n","<c8y-li\n class=\"c8y-list__item__collapse--container-small\"\n [formGroup]=\"formGroup\"\n #li\n>\n <c8y-li-drag-handle><ng-content select=\"c8y-li-drag-handle\"></ng-content></c8y-li-drag-handle>\n <c8y-li-icon\n class=\"a-s-center p-r-4\"\n *ngIf=\"showAddRemoveButton\"\n >\n <button\n class=\"btn btn-clean text-primary\"\n [title]=\"'Remove' | translate\"\n *ngIf=\"isSelected\"\n (click)=\"addOrRemoveItem()\"\n >\n <i\n class=\"text-danger\"\n c8yIcon=\"minus-circle\"\n ></i>\n </button>\n <button\n class=\"btn btn-clean text-primary\"\n [title]=\"'Select' | translate\"\n *ngIf=\"!isSelected\"\n (click)=\"addOrRemoveItem()\"\n [disabled]=\"(valid$ | async) === false\"\n >\n <i\n class=\"text-primary\"\n c8yIcon=\"plus-circle\"\n ></i>\n </button>\n </c8y-li-icon>\n\n <c8y-li-checkbox\n class=\"a-s-center m-t-4 p-r-0\"\n *ngIf=\"showActiveToggle\"\n [displayAsSwitch]=\"displayAsSwitch\"\n formControlName=\"__active\"\n (click)=\"$event.stopPropagation()\"\n ></c8y-li-checkbox>\n\n <div class=\"d-flex a-i-center p-l-4\">\n <div\n class=\"c8y-list__item__colorpicker p-t-0 p-b-0 p-l-0\"\n [title]=\"colorPickerTitle | translate\"\n >\n <div\n class=\"c8y-colorpicker\"\n [ngClass]=\"{\n 'c8y-colorpicker--alarm': timelineType === 'ALARM',\n 'c8y-colorpicker--event': timelineType === 'EVENT'\n }\"\n >\n <input\n [ngStyle]=\"{ 'pointer-events': allowItemEdit && !omitProperties.color ? 'auto' : 'none' }\"\n type=\"color\"\n formControlName=\"color\"\n (click)=\"$event.stopPropagation()\"\n />\n <span\n class=\"circle-icon-wrapper\"\n [ngStyle]=\"{ 'background-color': formGroup.value.color }\"\n >\n <i\n class=\"stroked-icon\"\n [c8yIcon]=\"timelineType === 'EVENT' ? 'c8y-events' : 'bell'\"\n ></i>\n </span>\n </div>\n </div>\n <button\n class=\"btn-clean text-truncate\"\n [title]=\"formGroup.value.details?.label\"\n (click)=\"\n allowItemEdit\n ? (li.collapsed = !li.collapsed)\n : showActiveToggle\n ? toggleActive()\n : addOrRemoveItem()\n \"\n >\n <span class=\"text-truncate text-12\">\n <c8y-highlight\n [text]=\"\n omitProperties.label\n ? formGroup.value.details?.filters?.type\n : formGroup.value.details?.label\n \"\n [pattern]=\"highlightText\"\n [shouldTrimPattern]=\"true\"\n ></c8y-highlight>\n </span>\n <small\n class=\"text-truncate text-muted icon-flex\"\n *ngIf=\"formGroup.value.__target && !hideSource\"\n >\n <i c8yIcon=\"exchange\"></i>\n <span class=\"text-truncate\">{{ formGroup.value.__target.name }}</span>\n </small>\n </button>\n\n <button\n class=\"btn-dot btn-dot--danger m-l-auto\"\n title=\"{{ 'Invalid entries' | translate }}\"\n [popover]=\"'Some entries are invalid. Check the required input fields.' | translate\"\n container=\"body\"\n *ngIf=\"(valid$ | async) === false && li.collapsed\"\n [outsideClick]=\"true\"\n >\n <i c8yIcon=\"exclamation-circle\"></i>\n </button>\n </div>\n\n <c8y-li-action\n [icon]=\"'minus-circle'\"\n *ngIf=\"optionToRemove\"\n [label]=\"'Remove from list' | translate\"\n (click)=\"remove()\"\n ></c8y-li-action>\n <c8y-li-collapse *ngIf=\"allowItemEdit\">\n <div class=\"data-point-details\">\n <c8y-alarm-event-attributes-form\n formControlName=\"details\"\n [timelineType]=\"timelineType\"\n [omitProperties]=\"omitProperties\"\n ></c8y-alarm-event-attributes-form>\n </div>\n </c8y-li-collapse>\n</c8y-li>\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { AlarmOrEvent, OmitSelectorProperties, TimelineType } from '../alarm-event-selector.model';\nimport { map, startWith, takeUntil } from 'rxjs/operators';\nimport { Observable, Subject } from 'rxjs';\nimport { IIdentified } from '@c8y/client';\n\n@Component({\n selector: 'c8y-custom-alarm-event-form',\n templateUrl: './custom-alarm-event-form.component.html'\n})\nexport class CustomAlarmEventFormComponent implements OnInit, OnDestroy {\n @Input() timelineType: TimelineType;\n @Input() target: IIdentified;\n @Input() omitProperties: OmitSelectorProperties = {};\n @Input() selectedItems: AlarmOrEvent[] = [];\n @Input() defaultColor: string;\n @Output() added = new EventEmitter<AlarmOrEvent>();\n @Output() cancel = new EventEmitter<void>();\n\n formGroup: FormGroup;\n valid$: Observable<boolean>;\n private destroy$ = new Subject<void>();\n\n constructor(private formBuilder: FormBuilder) {\n this.formGroup = this.formBuilder.group({\n details: [],\n color: [],\n __active: [],\n __target: []\n });\n\n this.valid$ = this.formGroup.statusChanges.pipe(\n takeUntil(this.destroy$),\n map(val => val === 'VALID'),\n startWith(false)\n );\n }\n\n ngOnInit() {\n this.formGroup.patchValue({\n color: this.defaultColor,\n __target: this.target,\n details: { timelineType: this.timelineType }\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n add() {\n if (this.formGroup.valid) {\n const formValue = this.transformFormValue(this.formGroup.value);\n this.added.emit(formValue);\n }\n }\n\n private transformFormValue(formValue: any) {\n const obj = Object.assign({}, formValue.details || {}, formValue);\n delete obj.details;\n return obj;\n }\n}\n","<form [formGroup]=\"formGroup\" class=\"p-16\">\n <div\n *ngIf=\"!omitProperties.color\"\n class=\"form-group d-flex a-i-center gap-8\"\n [title]=\"'Change color' | translate\"\n >\n <label class=\"m-0\">{{ 'Color' | translate }}</label>\n <div class=\"c8y-colorpicker\"\n [ngClass]=\"{\n 'c8y-colorpicker--event': timelineType === 'EVENT',\n 'c8y-colorpicker--alarm': timelineType !== 'EVENT'\n }\"\n >\n <input\n type=\"color\"\n formControlName=\"color\"\n (click)=\"$event.stopPropagation()\"\n />\n <span [style.background-color]=\"formGroup.value.color\">\n <i [c8yIcon]=\"timelineType === 'EVENT' ? 'c8y-events' : 'bell'\"></i>\n </span>\n </div>\n </div>\n\n <c8y-alarm-event-attributes-form\n formControlName=\"details\"\n [timelineType]=\"timelineType\"\n [omitProperties]=\"omitProperties\"\n [selectedItems]=\"selectedItems\"\n ></c8y-alarm-event-attributes-form>\n\n <div class=\"d-flex p-t-16\">\n <button class=\"btn btn-default btn-sm\" (click)=\"cancel.emit()\">\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary btn-sm\"\n [disabled]=\"(valid$ | async) === false\"\n (click)=\"add()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Select' | translate }}\n </button>\n </div>\n</form>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { AlarmDetails, EventDetails } from '../alarm-event-selector.model';\n\n@Pipe({\n name: 'includesAlarmOrEvent'\n})\nexport class IncludesAlarmOrEventPipe implements PipeTransform {\n transform<T extends AlarmDetails | EventDetails>(itemList: T[], item?: T): boolean {\n if (!Array.isArray(itemList) || !item) {\n return false;\n }\n return itemList.some(\n tmp =>\n tmp.label === item.label &&\n tmp.filters.type === item.filters.type &&\n tmp.__target?.id === item.__target?.id\n );\n }\n}\n","import { Component, EventEmitter, forwardRef, Input, OnInit, Output } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IIdentified } from '@c8y/client';\nimport { AssetSelectionChangeEvent } from '@c8y/ngx-components/assets-navigator';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n map,\n shareReplay,\n switchMap,\n tap\n} from 'rxjs/operators';\nimport {\n AlarmOrEvent,\n OmitSelectorProperties,\n TimelineType,\n TimelineTypeTexts\n} from './alarm-event-selector.model';\nimport { AlarmEventSelectorService } from './alarm-event-selector.service';\n\n@Component({\n selector: 'c8y-alarm-event-selector',\n templateUrl: './alarm-event-selector.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => AlarmEventSelectorComponent)\n }\n ]\n})\nexport class AlarmEventSelectorComponent implements OnInit {\n @Input() timelineType: TimelineType = 'ALARM';\n @Input() contextAsset: IIdentified;\n @Input() allowChangingContext = true;\n @Input() selectedItems = new Array<AlarmOrEvent>();\n @Input() allowSearch = true;\n @Input() groupsSelectable = true;\n @Input() hideSource = false;\n @Input() omitProperties: OmitSelectorProperties = {};\n\n @Output() selectionChange = new EventEmitter<AlarmOrEvent[]>();\n filterString = '';\n maxNumberOfItems = 50;\n\n loadingItems$ = new BehaviorSubject(false);\n assetSelection = new BehaviorSubject<IIdentified>({});\n items$: Observable<AlarmOrEvent[]>;\n filteredItems$: Observable<AlarmOrEvent[]>;\n filterStringChanges$: Observable<string>;\n timelineTypeTexts: TimelineTypeTexts;\n isExpanded = false;\n defaultColor =\n getComputedStyle(document.documentElement).getPropertyValue('--brand-primary') ||\n getComputedStyle(document.documentElement).getPropertyValue('--c8y-brand-primary') ||\n '#1776BF';\n private filterString$ = new BehaviorSubject('');\n\n constructor(private alarmEventSelectorService: AlarmEventSelectorService) {}\n\n ngOnInit(): void {\n this.timelineTypeTexts = this.alarmEventSelectorService.timelineTypeTexts(this.timelineType);\n this.setupObservables();\n if (this.contextAsset) {\n this.selectAsset(this.contextAsset);\n }\n }\n\n itemAdded(item: AlarmOrEvent): void {\n item.__active = true;\n this.selectedItems = [...this.selectedItems, item];\n this.emitCurrentSelection();\n }\n\n itemRemoved(alarm: AlarmOrEvent): void {\n this.selectedItems = this.selectedItems.filter(\n tmp =>\n tmp.label !== alarm.label ||\n tmp.filters.type !== alarm.filters.type ||\n tmp.__target?.id !== alarm.__target?.id\n );\n this.emitCurrentSelection();\n }\n\n assetSelectionChanged(evt: AssetSelectionChangeEvent): void {\n if (evt.items) {\n return this.selectAsset(evt.items.length ? evt.items[0] : evt.items);\n }\n // reset selection\n this.assetSelection.next(null);\n }\n\n trackByFn(_index: number, item: AlarmOrEvent): string {\n return `${item.filters.type}-${item.__target?.id}`;\n }\n\n filterStringChanged(newValue = ''): void {\n this.filterString$.next(newValue);\n this.filterString = newValue;\n }\n\n private setLoadingState(state: boolean) {\n queueMicrotask(() => this.loadingItems$.next(state));\n }\n\n private setupObservables(): void {\n this.items$ = this.assetSelection.pipe(\n tap(() => this.setLoadingState(true)),\n switchMap((asset: IIdentified) =>\n asset?.id\n ? this.alarmEventSelectorService.getAlarmsOrEvents(asset, this.timelineType)\n : this.alarmEventSelectorService.getItems(this.timelineType)\n ),\n tap(() => this.setLoadingState(false)),\n map(items => {\n if (this.omitProperties.color) {\n items.forEach(i => (i.color = this.defaultColor));\n }\n return items;\n }),\n shareReplay(1)\n );\n\n this.filterStringChanges$ = this.filterString$.pipe(\n distinctUntilChanged(),\n debounceTime(500),\n shareReplay(1)\n );\n\n this.filteredItems$ = combineLatest([this.filterStringChanges$, this.items$]).pipe(\n map(([filterString, items]) => {\n if (!filterString) {\n return items;\n }\n const lowerCaseFilterString = filterString.toLowerCase();\n return items.filter(item => this.includesFilterString(item, lowerCaseFilterString));\n }),\n map(filtered => filtered.slice(0, this.maxNumberOfItems))\n );\n }\n\n private selectAsset(asset: IIdentified) {\n this.assetSelection.next(asset);\n this.filterStringChanged();\n }\n\n private emitCurrentSelection() {\n this.selectionChange.emit(this.selectedItems);\n }\n\n private includesFilterString(alarm: AlarmOrEvent, lowerCaseFilterString: string): boolean {\n const label = alarm.label?.toLowerCase();\n if (label && label.includes(lowerCaseFilterString)) {\n return true;\n }\n\n const type = alarm.filters.type?.toLowerCase();\n if (type && type.includes(lowerCaseFilterString)) {\n return true;\n }\n\n return false;\n }\n}\n","<div\n class=\"d-grid grid__row--1 fit-h\"\n [ngClass]=\"{\n 'grid__col--3-6-3--md': allowChangingContext,\n 'grid__col--8-4--md': !allowChangingContext\n }\"\n>\n <div\n class=\"d-flex d-col p-relative bg-level-1\"\n *ngIf=\"allowChangingContext\"\n >\n <c8y-asset-selector-miller\n class=\"d-contents\"\n [(ngModel)]=\"contextAsset\"\n [asset]=\"contextAsset\"\n (onSelected)=\"assetSelectionChanged($event)\"\n [container]=\"''\"\n [config]=\"{\n view: 'miller',\n groupsSelectable: groupsSelectable,\n columnHeaders: true,\n showChildDevices: true,\n showUnassignedDevices: true,\n singleColumn: true,\n search: allowSearch,\n showFilter: true\n }\"\n ></c8y-asset-selector-miller>\n </div>\n <!-- center column -->\n <div class=\"inner-scroll bg-component\" data-cy=\"c8y-alarm-event-selector--inner-column\">\n <ng-template #noDeviceEmptyState>\n <div class=\"p-16\">\n <c8y-ui-empty-state\n [icon]=\"timelineTypeTexts.emptyStateIcon\"\n [title]=\"timelineTypeTexts.emptyStateTitle | translate\"\n [subtitle]=\"timelineTypeTexts.assetWithNoItemsEmptyStateSubtitle | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </ng-template>\n\n <ng-template #loadingData>\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-template>\n\n <div\n class=\"bg-inherit\"\n *ngIf=\"assetSelection | async as asset; else noDeviceEmptyState\"\n >\n <div class=\"p-l-16 p-r-16 p-t-8 p-b-8 sticky-top bg-inherit separator-bottom\">\n <p\n class=\"text-medium text-truncate\"\n [title]=\"timelineTypeTexts.availableItemsTitle | translate\"\n >\n {{ timelineTypeTexts.availableItemsTitle | translate }}\n </p>\n <div class=\"d-flex\">\n <div\n class=\"input-group input-group-search m-t-4\"\n id=\"search\"\n *ngIf=\"!(loadingItems$ | async)\"\n >\n <input\n class=\"form-control\"\n placeholder=\"Filter…\"\n type=\"search\"\n [ngModel]=\"filterString\"\n (ngModelChange)=\"filterStringChanged($event)\"\n />\n <span class=\"input-group-addon\">\n <i\n c8yIcon=\"search\"\n *ngIf=\"!filterString; else clearFilterString\"\n ></i>\n <ng-template #clearFilterString>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n *ngIf=\"filterString\"\n (click)=\"filterStringChanged()\"\n ></i>\n </ng-template>\n </span>\n </div>\n </div>\n </div>\n\n <ng-container *ngIf=\"filteredItems$ | async as filteredItems; else loadingData\">\n <ng-container *ngIf=\"!(loadingItems$ | async); else loadingData\">\n <ng-container *ngIf=\"items$ | async as items\">\n <div class=\"p-16 bg-level-2 separator-bottom\">\n <div>\n <p>\n <i\n class=\"text-info m-r-4\"\n c8yIcon=\"info-circle\"\n ></i>\n <strong>{{ timelineTypeTexts.recentItemsWarningTitle | translate }}</strong>\n </p>\n <p>\n {{ timelineTypeTexts.recentItemsWarningText | translate }}\n {{ timelineTypeTexts.addCustomText | translate }}\n </p>\n </div>\n <div class=\"p-t-16\">\n <button\n class=\"btn btn-default btn-sm\"\n aria-controls=\"collapseCustomItemForm\"\n [attr.aria-expanded]=\"isExpanded\"\n (click)=\"isExpanded = !isExpanded\"\n >\n {{ timelineTypeTexts.addCustomItemButtonLabel | translate }}\n </button>\n <div\n class=\"collapse\"\n id=\"collapseCustomItemForm\"\n [collapse]=\"!isExpanded\"\n [isAnimated]=\"true\"\n >\n <div [style.min-height]=\"'230px'\">\n <c8y-custom-alarm-event-form\n class=\"d-block\"\n *ngIf=\"isExpanded\"\n [timelineType]=\"timelineType\"\n [target]=\"assetSelection | async\"\n [omitProperties]=\"omitProperties\"\n [defaultColor]=\"defaultColor\"\n (added)=\"itemAdded($event); isExpanded = false\"\n (cancel)=\"isExpanded = false\"\n [selectedItems]=\"selectedItems\"\n ></c8y-custom-alarm-event-form>\n </div>\n </div>\n </div>\n </div>\n\n <div\n class=\"p-16\"\n *ngIf=\"!filteredItems.length\"\n >\n <c8y-ui-empty-state\n [icon]=\"timelineTypeTexts.emptyStateIcon\"\n [title]=\"timelineTypeTexts.emptyStateTitle | translate\"\n [subtitle]=\"\n items.length\n ? ('Try another filter term.' | translate)\n : (timelineTypeTexts.assetWithNoItemsEmptyStateSubtitle | translate)\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n\n <c8y-list-group>\n <c8y-list-item\n class=\"sticky-top\"\n style=\"top: 72px\"\n *ngIf=\"items.length > maxNumberOfItems && filteredItems.length >= maxNumberOfItems\"\n >\n <div class=\"alert alert-warning m-b-0\">\n {{ timelineTypeTexts.largeNumberOfItemsInfo | translate }}\n </div>\n </c8y-list-item>\n <c8y-alarm-event-selector-list-item\n class=\"d-contents\"\n [ngModel]=\"item\"\n [isSelected]=\"selectedItems | includesAlarmOrEvent: item\"\n (added)=\"itemAdded($event)\"\n (removed)=\"itemRemoved($event)\"\n [highlightText]=\"filterStringChanges$ | async\"\n [timelineType]=\"timelineType\"\n [hideSource]=\"hideSource\"\n *ngFor=\"let item of filteredItems; trackBy: trackByFn\"\n ></c8y-alarm-event-selector-list-item>\n </c8y-list-group>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n\n <!-- last column -->\n <div class=\"inner-scroll bg-level-1\">\n <p\n class=\"text-medium m-b-4 p-l-16 p-r-16 p-t-8 p-b-8 separator-bottom sticky-top text-truncate\"\n [title]=\"timelineTypeTexts.selectedItemsTitle | translate\"\n >\n {{ timelineTypeTexts.selectedItemsTitle | translate }}\n </p>\n <div class=\"d-flex flex-wrap gap-8 p-l-16 p-r-16 p-b-16\">\n <c8y-ui-empty-state\n [icon]=\"timelineTypeTexts.emptyStateIcon\"\n [title]=\"timelineTypeTexts.noSelectedItemsTitle | translate\"\n *ngIf=\"!selectedItems || !selectedItems.length\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <div\n [ngClass]=\"{\n 'c8y-alarm-pill': timelineType === 'ALARM',\n 'c8y-event-pill': timelineType === 'EVENT'\n }\"\n *ngFor=\"let selectedItem of selectedItems\"\n >\n <button\n [title]=\"'Remove' | translate\"\n type=\"button\"\n [ngClass]=\"{\n 'c8y-alarm-pill__btn': timelineType === 'ALARM',\n 'c8y-event-pill__btn': timelineType === 'EVENT'\n }\"\n (click)=\"itemRemoved(selectedItem)\"\n >\n <i\n class=\"icon-14\"\n c8yIcon=\"remove\"\n ></i>\n </button>\n <div\n class=\"c8y-datapoint-pill__label\"\n [title]=\"selectedItem.label || selectedItem.filters.type\"\n >\n <span\n class=\"circle-icon-wrapper circle-icon-wrapper--small m-r-4\"\n [style.background-color]=\"selectedItem.color || defaultColor\"\n >\n <i\n class=\"stroked-icon\"\n [c8yIcon]=\"timelineType === 'ALARM' ? 'bell' : 'c8y-events'\"\n ></i>\n </span>\n <span class=\"text-truncate\">\n <span class=\"text-truncate\">{{ selectedItem.label || selectedItem.filters.type }}</span>\n <small\n class=\"text-muted text-10\"\n *ngIf=\"!hideSource && selectedItem?.__target?.name\"\n >\n {{ selectedItem?.__target?.name }}\n </small>\n </span>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { IIdentified } from '@c8y/client';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { AlarmOrEvent, OmitSelectorProperties, TimelineType } from '../alarm-event-selector.model';\n\n@Component({\n selector: 'c8y-alarm-event-selector-modal',\n templateUrl: './alarm-event-selector-modal.component.html'\n})\nexport class AlarmEventSelectorModalComponent {\n selectType: TimelineType = 'ALARM';\n contextAsset: IIdentified;\n allowChangingContext = true;\n allowSearch = true;\n selectedItems = new Array<AlarmOrEvent>();\n title: string;\n groupsSelectable = true;\n hideSource = false;\n saveButtonLabel: string;\n omitProperties: OmitSelectorProperties = {};\n readonly result: Promise<AlarmOrEvent[]> = new Promise((resolve, reject) => {\n this.save = resolve;\n this.cancel = reject;\n });\n\n private save: (value: AlarmOrEvent[]) => void;\n private cancel: (reason?: any) => void;\n\n constructor(private bsModal: BsModalRef) {}\n\n saveChanges(): void {\n this.bsModal.hide();\n this.save(this.selectedItems);\n }\n\n close() {\n this.bsModal.hide();\n this.cancel();\n }\n\n selectionChange(selection: Array<AlarmOrEvent>) {\n this.selectedItems = selection;\n }\n}\n","<div class=\"modal-header separator\">\n <h4 class=\"text-medium\">{{ title | translate }}</h4>\n</div>\n<div class=\"modal-inner-scroll modal-inner-scroll--fixed\">\n <c8y-alarm-event-selector\n [selectedItems]=\"selectedItems\"\n [contextAsset]=\"contextAsset\"\n [timelineType]=\"selectType\"\n [groupsSelectable]=\"groupsSelectable\"\n [hideSource]=\"hideSource\"\n [allowChangingContext]=\"allowChangingContext\"\n [omitProperties]=\"omitProperties\"\n (selectionChange)=\"selectionChange($event)\"\n ></c8y-alarm-event-selector>\n</div>\n<div class=\"modal-footer\">\n <button\n type=\"button\"\n [title]=\"'Cancel' | translate\"\n class=\"btn btn-default\"\n (click)=\"close()\"\n translate\n >\n Cancel\n </button>\n <button\n [title]=\"saveButtonLabel | translate\"\n class=\"btn btn-primary\"\n [disabled]=\"!this.selectedItems?.length\"\n (click)=\"saveChanges()\"\n >\n {{ saveButtonLabel | translate }}\n </button>\n</div>\n","import { Injectable } from '@angular/core';\nimport { AlarmOrEvent } from '../alarm-event-selector.model';\nimport { AlarmEventSelectorModalComponent } from './alarm-event-selector-modal.component';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { AlarmEventSelectorModalOptions } from './alarm-event-selector-modal.model';\n\n/**\n * Service to open the alarm event selector modal.\n */\n@Injectable({ providedIn: 'root' })\nexport class AlarmEventSelectorModalService {\n constructor(private modal: BsModalService) {}\n /**\n * Opents the alarm or event selector modal.\n * @param initialState Initial state of the modal.\n * @returns Promise that resolves with the selected alarms or events.\n */\n selectItems(initialState: Partial<AlarmEventSelectorModalOptions> = {}): Promise<AlarmOrEvent[]> {\n const modal = this.modal.show(AlarmEventSelectorModalComponent, {\n ignoreBackdropClick: true,\n keyboard: false,\n initialState,\n class: 'modal-lg'\n });\n const content = modal.content as AlarmEventSelectorModalComponent;\n return content.result;\n }\n}\n","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport {\n Component,\n ContentChild,\n forwardRef,\n Input,\n OnDestroy,\n OnInit,\n Optional\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormArray,\n FormBuilder,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport { EmptyStateComponent } from '@c8y/ngx-components';\nimport { WidgetConfigComponent } from '@c8y/ngx-components/context-dashboard';\nimport { debounceTime, map, take, takeUntil } from 'rxjs/operators';\nimport { AlarmEventSelectorModalOptions } from '../alarm-event-selector-modal/alarm-event-selector-modal.model';\nimport { AlarmEventSelectorModalService } from '../alarm-event-selector-modal/alarm-event-selector-modal.service';\nimport {\n AlarmOrEvent,\n OmitSelectorProperties,\n TimelineType,\n TimelineTypeTexts\n} from '../alarm-event-selector.model';\nimport { AlarmEventSelectorService } from '../alarm-event-selector.service';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'c8y-alarm-event-selection-list',\n templateUrl: './alarm-event-selection-list.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => AlarmEventSelectionListComponent)\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => AlarmEventSelectionListComponent),\n multi: true\n }\n ]\n})\nexport class AlarmEventSelectionListComponent\n implements ControlValueAccessor, Validator, OnInit, OnDestroy\n{\n @Input() timelineType: TimelineType = 'ALARM';\n @Input() canRemove = true;\n @Input() canEdit = true;\n @Input() canDragAndDrop = true;\n @Input() title: string;\n @Input() addButtonLabel: string;\n @Input() hideSource = false;\n @Input() inline = false; // TODO: @janhommes we should rename this to `isDropdownContained` or similar to make it more clear\n @Input() activeToggleAsSwitch = true;\n @Input() omitProperties: OmitSelectorProperties = { color: false, label: false };\n @ContentChild(EmptyStateComponent) emptyState: EmptyStateComponent;\n\n /**\n * The configuration for the alarms-events selector modal.\n */\n @Input() config: Partial<AlarmEventSelectorModalOptions> = {};\n\n formArray: FormArray;\n timelineTypeTexts: TimelineTypeTexts;\n\n private destroy$ = new Subject<void>();\n\n constructor(\n private alarmEventModalService: AlarmEventSelectorModalService,\n private alarmEventSelectService: AlarmEventSelectorService,\n private formBuilder: FormBuilder,\n @Optional() private widgetComponent: WidgetConfigComponent\n ) {\n this.formArray = this.formBuilder.array([]);\n }\n\n ngOnInit(): void {\n this.timelineTypeTexts = this.alarmEventSelectService.timelineTypeTexts(this.timelineType);\n this.title ??= this.timelineTypeTexts.listTitle;\n this.addButtonLabel ??= this.timelineTypeTexts.addButtonLabel;\n const context = this.widgetComponent?.context;\n if (context?.id) {\n const { name, id, c8y_IsDevice } = context;\n this.config.contextAsset = { name, id, c8y_IsDevice };\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n registerOnTouched(fn: any): void {\n this.formArray.valueChanges.pipe(take(1)).subscribe(fn);\n }\n\n validate(_control: AbstractControl): ValidationErrors {\n return this.formArray.valid ? null : { formInvalid: {} };\n }\n\n writeValue(val: AlarmOrEvent[]): void {\n this.formArray.clear();\n if (val?.length) {\n val.forEach(val => {\n const formgroup = this.formBuilder.group({ details: [] });\n formgroup.patchValue({ details: val });\n this.formArray.push(formgroup);\n });\n }\n }\n\n registerOnChange(fn: any): void {\n this.formArray.valueChanges\n .pipe(\n debounceTime(100), // debounce to avoid emitting of this.formArray.clear()\n map(res => this.transformValue(res)),\n takeUntil(this.destroy$)\n )\n .subscribe(fn);\n }\n\n add() {\n const allowChangingContext =\n !this.widgetComponent?.isDeviceTypeDashboard && this.config?.allowChangingContext !== false;\n this.alarmEventModalService\n .selectItems({\n allowChangingContext,\n selectType: this.timelineType,\n selectedItems: this.transformValue(this.formArray.value),\n allowSearch: !this.config?.contextAsset,\n title: this.timelineTypeTexts.selectorTitle,\n saveButtonLabel: this.timelineTypeTexts.addButtonLabel,\n omitProperties: this.omitProperties,\n ...(this.config || {})\n })\n .then(\n result => {\n this.writeValue(result);\n },\n () => {\n // nothing to do, modal was closed\n }\n );\n }\n\n onItemRemoved(index: number) {\n this.formArray.removeAt(index);\n }\n\n drop(event: CdkDragDrop<AlarmOrEvent[]>) {\n const currentSorting = this.formArray.value;\n moveItemInArray(currentSorting, event.previousIndex, event.currentIndex);\n this.formArray.setValue(currentSorting);\n }\n\n private transformValue(formArrayValue: any[]) {\n if (!formArrayValue) {\n return [];\n }\n return formArrayValue.map(tmp => Object.assign({}, ...Object.values(tmp)));\n }\n}\n","<div\n class=\"card-header separator sticky-top bg-component\"\n *ngIf=\"!inline\"\n>\n <span class=\"card-title h4\">{{ title | translate }}</span>\n</div>\n\n<c8y-list-group\n class=\"flex-grow ff-scroll-fix cdk-droplist\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListDisabled]=\"formArray.controls?.length < 2\"\n>\n <div\n class=\"p-t-8\"\n *ngIf=\"!formArray.controls?.length\"\n >\n <ng-content select=\"c8y-ui-empty-state\"></ng-content>\n <c8y-ui-empty-state\n class=\"p-t-8\"\n [icon]=\"timelineTypeTexts.emptyStateIcon\"\n [title]=\"timelineTypeTexts.emptyStateTitle | translate\"\n [subtitle]=\"timelineTypeTexts.emptyStateSubtitle | translate\"\n *ngIf=\"!emptyState\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <div\n *ngFor=\"let itemForm of formArray.controls; let index = index\"\n [formGroup]=\"itemForm\"\n >\n <c8y-alarm-event-selector-list-item\n class=\"d-block\"\n cdkDrag\n [cdkDragDisabled]=\"!canDragAndDrop\"\n formControlName=\"details\"\n [showAddRemoveButton]=\"false\"\n [optionToRemove]=\"canRemove\"\n [showActiveToggle]=\"true\"\n [timelineType]=\"timelineType\"\n [allowItemEdit]=\"canEdit\"\n [hideSource]=\"hideSource\"\n [displayAsSwitch]=\"activeToggleAsSwitch\"\n [omitProperties]=\"omitProperties\"\n (removed)=\"onItemRemoved(index)\"\n >\n <c8y-li-drag-handle\n title=\"{{ 'Click and drag to reorder' | translate }}\"\n cdkDragHandle\n *ngIf=\"canDragAndDrop\"\n >\n <i c8yIcon=\"drag-reorder\"></i>\n </c8y-li-drag-handle>\n </c8y-alarm-event-selector-list-item>\n </div>\n</c8y-list-group>\n\n<div class=\"card-footer sticky-bottom bg-component\">\n <button\n class=\"btn btn-default btn-sm\"\n [title]=\"addButtonLabel | translate\"\n type=\"button\"\n [ngClass]=\"{ 'btn-block': inline }\"\n (click)=\"add()\"\n >\n <i\n c8yIcon=\"plus-circle\"\n *ngIf=\"canDragAndDrop\"\n ></i>\n {{ addButtonLabel | translate }}\n </button>\n</div>\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { AlarmEventSelectionListComponent } from './alarm-event-selection-list/alarm-event-selection-list.component';\nimport { AlarmEventSelectorListItemComponent } from './alarm-event-selector-list-item/alarm-event-selector-list-item.component';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\nimport { AlarmEventAttributesFormComponent } from './alarm-event-attributes-form/alarm-event-attributes-form.component';\nimport { AlarmEventSelectorModalComponent } from './alarm-event-selector-modal/alarm-event-selector-modal.component';\nimport { AlarmEventSelectorComponent } from './alarm-event-selector.component';\nimport { IncludesAlarmOrEventPipe } from './pipes/includes-alarm.pipe';\nimport { CustomAlarmEventFormComponent } from './custom-alarm-event-form/custom-alarm-event-form.component';\nimport { AssetSelectorModule } from '@c8y/ngx-components/assets-navigator';\nimport { CommonModule, CoreModule } from '@c8y/ngx-components';\n\n@NgModule({\n imports: [\n CommonModule,\n CoreModule,\n DragDropModule,\n PopoverModule,\n TooltipModule,\n AssetSelectorModule,\n CollapseModule,\n RouterModule.forChild([])\n ],\n declarations: [\n AlarmEventSelectionListComponent,\n AlarmEventSelectorListItemComponent,\n AlarmEventAttributesFormComponent,\n AlarmEventSelectorModalComponent,\n AlarmEventSelectorComponent,\n IncludesAlarmOrEventPipe,\n CustomAlarmEventFormComponent\n ],\n exports: [AlarmEventSelectionListComponent, AlarmEventSelectorComponent]\n})\nexport class AlarmEventSelectorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.AlarmEventAttributesFormService","i4","i1","i5.AlarmEventAttributesFormComponent","i4.AlarmEventAttributesFormComponent","i1.AlarmEventSelectorService","i7.AlarmEventSelectorListItemComponent","i8.CustomAlarmEventFormComponent","i9.IncludesAlarmOrEventPipe","i3.AlarmEventSelectorComponent","i1.AlarmEventSelectorModalService","i2.AlarmEventSelectorService","i3","i5","i6","i8.AlarmEventSelectorListItemComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"c8y-ngx-components-alarm-event-selector.mjs","sources":["../../alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.service.ts","../../alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.component.ts","../../alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.component.html","../../alarm-event-selector/alarm-event-selector.model.ts","../../alarm-event-selector/alarm-event-selector.service.ts","../../alarm-event-selector/alarm-event-selector-list-item/alarm-event-selector-list-item.component.ts","../../alarm-event-selector/alarm-event-selector-list-item/alarm-event-selector-list-item.component.html","../../alarm-event-selector/custom-alarm-event-form/custom-alarm-event-form.component.ts","../../alarm-event-selector/custom-alarm-event-form/custom-alarm-event-form.component.html","../../alarm-event-selector/pipes/includes-alarm.pipe.ts","../../alarm-event-selector/alarm-event-selector.component.ts","../../alarm-event-selector/alarm-event-selector.component.html","../../alarm-event-selector/alarm-event-selector-modal/alarm-event-selector-modal.component.ts","../../alarm-event-selector/alarm-event-selector-modal/alarm-event-selector-modal.component.html","../../alarm-event-selector/alarm-event-selector-modal/alarm-event-selector-modal.service.ts","../../alarm-event-selector/alarm-event-selection-list/alarm-event-selection-list.component.ts","../../alarm-event-selector/alarm-event-selection-list/alarm-event-selection-list.component.html","../../alarm-event-selector/alarm-event-selector.module.ts","../../alarm-event-selector/c8y-ngx-components-alarm-event-selector.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\nimport { AlarmOrEvent } from '../alarm-event-selector.model';\n\n@Injectable({ providedIn: 'root' })\nexport class AlarmEventAttributesFormService {\n duplicateTypeValidator(selectedItems: AlarmOrEvent[]) {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!control.value || !selectedItems?.length) {\n return null;\n }\n const isDuplicate = selectedItems.some(\n item => item.filters?.type?.toLowerCase() === control.value.toLowerCase()\n );\n return isDuplicate ? { duplicateType: true } : null;\n };\n }\n}\n","import { Component, forwardRef, Input, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormBuilder,\n FormControl,\n FormGroup,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n Validators\n} from '@angular/forms';\nimport { take } from 'rxjs/operators';\nimport { AlarmEventAttributesFormService } from './alarm-event-attributes-form.service';\nimport {\n AlarmOrEvent,\n OmitSelectorProperties,\n SelectedDatapoint,\n TimelineType\n} from '../alarm-event-selector.model';\nimport { IIdentified } from '@c8y/client';\nimport { KPIDetails } from '@c8y/ngx-components/datapoint-selector';\nimport { AlarmEventAttributeForm } from './alarm-event-attributes-form.model';\n\n@Component({\n selector: 'c8y-alarm-event-attributes-form',\n templateUrl: './alarm-event-attributes-form.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AlarmEventAttributesFormComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => AlarmEventAttributesFormComponent),\n multi: true\n }\n ]\n})\nexport class AlarmEventAttributesFormComponent implements ControlValueAccessor, Validator, OnInit {\n @Input() timelineType: TimelineType;\n @Input() omitProperties: OmitSelectorProperties = {};\n @Input() selectedItems: AlarmOrEvent[] = [];\n @Input() target: IIdentified;\n @Input() datapoints: KPIDetails[] = [];\n formGroup: FormGroup<AlarmEventAttributeForm>;\n\n constructor(\n private formBuilder: FormBuilder,\n private alarmEventAttributesFormService: AlarmEventAttributesFormService\n ) {}\n\n ngOnInit() {\n this.formGroup = this.formBuilder.group({\n filters: this.formBuilder.group({\n type: new FormControl<string>('', [\n Validators.required,\n this.alarmEventAttributesFormService.duplicateTypeValidator(this.selectedItems)\n ])\n }),\n timelineType: new FormControl<TimelineType>('' as TimelineType),\n selectedDatapoint: new FormControl<null | SelectedDatapoint>(null)\n });\n\n if (!this.omitProperties.label) {\n this.formGroup.addControl('label', new FormControl('', Validators.required));\n }\n if (this.datapoints?.length > 0) {\n this.filterKpis();\n }\n }\n\n validate(_control: AbstractControl): ValidationErrors {\n return this.formGroup?.valid ? null : { formInvalid: {} };\n }\n\n writeValue(obj: any): void {\n this.formGroup.patchValue(obj);\n }\n\n registerOnChange(fn: any): void {\n this.formGroup.valueChanges.subscribe(fn);\n }\n\n registerOnTouched(fn: any): void {\n this.formGroup.valueChanges.pipe(take(1)).subscribe(fn);\n }\n\n setDisabledState(isDisabled: boolean): void {\n isDisabled ? this.formGroup.disable() : this.formGroup.enable();\n }\n\n changeDatapointSelection(event: Event) {\n const selectElement = event.target as HTMLSelectElement;\n const selectedIndex = selectElement.selectedIndex;\n const selectedDatapoint = this.datapoints[selectedIndex];\n const trimmedDatapoint = {\n target: selectedDatapoint.__target.id as string,\n fragment: selectedDatapoint.fragment,\n series: selectedDatapoint.series\n };\n\n this.formGroup.patchValue({ selectedDatapoint: trimmedDatapoint });\n }\n\n trackByFn(_index: number, item: KPIDetails) {\n return `${item.fragment}-${item.series}-${item.__target?.id}`;\n }\n\n private filterKpis() {\n if (this.target && this.target.id) {\n this.datapoints = this.datapoints.filter(dp => dp.__target?.id === this.target.id);\n }\n }\n}\n","<div [formGroup]=\"formGroup\">\n <c8y-form-group\n class=\"form-group-sm\"\n *ngIf=\"formGroup.controls.label\"\n >\n <label class=\"m-0\">{{ 'Label' | translate }}</label>\n <input\n class=\"form-control flex-grow\"\n name=\"label\"\n formControlName=\"label\"\n [placeholder]=\"\n 'e.g. {{ example }}'\n | translate\n : {\n example: timelineType === 'ALARM' ? 'Alarm unavailable' : 'Location update'\n }\n \"\n />\n </c8y-form-group>\n\n <div formGroupName=\"filters\">\n <c8y-form-group class=\"form-group-sm\">\n <label class=\"m-0\">{{ 'Type' | translate }}</label>\n <input\n class=\"form-control flex-grow\"\n name=\"type\"\n formControlName=\"type\"\n [placeholder]=\"\n 'e.g. {{ example }}'\n | translate\n : {\n example:\n timelineType === 'ALARM' ? 'c8y_UnavailabilityAlarm' : 'c8y_LocationUpdate'\n }\n \"\n />\n <c8y-messages>\n <c8y-message\n name=\"duplicateType\"\n [text]=\"'Type already used.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n\n <c8y-form-group\n class=\"form-group-sm\"\n *ngIf=\"datapoints?.length > 0\"\n >\n <label>{{ 'Select data point' | translate }}</label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control input-sm\"\n (change)=\"changeDatapointSelection($event)\"\n >\n <option\n title=\"{{ 'Widget configuration' | translate }}\"\n *ngFor=\"let datapoint of datapoints; trackBy: trackByFn\"\n [ngValue]=\"{\n target: datapoint.__target.id,\n fragment: datapoint.fragment,\n series: datapoint.series\n }\"\n [selected]=\"\n datapoint.__target.id === formGroup.value.selectedDatapoint?.target &&\n datapoint.fragment === formGroup.value.selectedDatapoint?.fragment &&\n datapoint.series === formGroup.value.selectedDatapoint?.series\n \"\n >\n {{ datapoint?.label }}\n </option>\n </select>\n </div>\n </c8y-form-group>\n</div>\n","import { IIdentified } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components';\n\nexport type TimelineType = 'ALARM' | 'EVENT';\n\ntype AlarmOrEventBase = {\n timelineType: TimelineType;\n color: string;\n __active?: boolean;\n label: string;\n filters: {\n type: string;\n };\n __target: IIdentified;\n};\n\nexport type AlarmDetails = AlarmOrEventBase & {\n timelineType: 'ALARM';\n filters: {\n type: string;\n };\n selectedDatapoint?: SelectedDatapoint;\n};\n\nexport type EventDetails = AlarmOrEventBase & {\n timelineType: 'EVENT';\n filters: {\n type: string;\n };\n selectedDatapoint?: SelectedDatapoint;\n};\n\nexport type SelectedDatapoint = {\n target?: string;\n series?: string;\n fragment?: string;\n};\n\nexport type AlarmOrEvent = AlarmDetails | EventDetails;\n\nexport type TimelineTypeTexts = {\n listTitle: string;\n emptyStateIcon: string;\n emptyStateTitle: string;\n emptyStateSubtitle: string;\n addButtonLabel: string;\n addCustomItemButtonLabel: string;\n selectorTitle: string;\n availableItemsTitle: string;\n assetWithNoItemsEmptyStateSubtitle: string;\n largeNumberOfItemsInfo: string;\n selectedItemsTitle: string;\n noSelectedItemsTitle: string;\n recentItemsWarningTitle: string;\n recentItemsWarningText: string;\n addCustomText: string;\n};\n\nexport const EVENT_TEXTS: TimelineTypeTexts = {\n listTitle: gettext('Events'),\n emptyStateIcon: 'c8y-events',\n emptyStateTitle: gettext('No events to display.'),\n emptyStateSubtitle: gettext('Add your first event.'),\n addButtonLabel: gettext('Add event'),\n addCustomItemButtonLabel: gettext('Add custom event'),\n selectorTitle: gettext('Events selector'),\n availableItemsTitle: gettext('Available events'),\n assetWithNoItemsEmptyStateSubtitle: gettext('Select an asset with events from the list.'),\n largeNumberOfItemsInfo: gettext(\n 'Due to the large number, only a subset of events are displayed. Use search to narrow down the number of results.'\n ),\n selectedItemsTitle: gettext('Selected events'),\n noSelectedItemsTitle: gettext('No events selected.'),\n recentItemsWarningTitle: gettext('The list below may not be complete.'),\n recentItemsWarningText: gettext(\n 'Recent events are displayed below. Past events might not be shown.'\n ),\n addCustomText: gettext('Optionally you can add a custom event.')\n};\n\nexport const ALARM_TEXTS: TimelineTypeTexts = {\n listTitle: gettext('Alarms'),\n emptyStateIcon: 'c8y-alarm',\n emptyStateTitle: gettext('No alarms to display.'),\n emptyStateSubtitle: gettext('Add your first alarm.'),\n addButtonLabel: gettext('Add alarm'),\n addCustomItemButtonLabel: gettext('Add custom alarm'),\n selectorTitle: gettext('Alarms selector'),\n availableItemsTitle: gettext('Available alarms'),\n assetWithNoItemsEmptyStateSubtitle: gettext('Select an asset with alarms from the list.'),\n largeNumberOfItemsInfo: gettext(\n 'Due to the large number, only a subset of alarms are displayed. Use search to narrow down the number of results.'\n ),\n selectedItemsTitle: gettext('Selected alarms'),\n noSelectedItemsTitle: gettext('No alarms selected.'),\n recentItemsWarningTitle: gettext('The list below may not be complete.'),\n recentItemsWarningText: gettext(\n 'Recent alarms are displayed below. Past alarms might not be shown.'\n ),\n addCustomText: gettext('Optionally you can add a custom alarm.')\n};\n\n/**\n * The configuration for the alarms-events selector modal if some properties should be omitted.\n */\nexport type OmitSelectorProperties = {\n color?: boolean;\n label?: boolean;\n};\n","import { Injectable } from '@angular/core';\nimport { AlarmService, EventService, IAlarm, IEvent, IIdentified } from '@c8y/client';\nimport { ColorService } from '@c8y/ngx-components';\nimport { uniqBy } from 'lodash-es';\nimport {\n ALARM_TEXTS,\n AlarmDetails,\n AlarmOrEvent,\n EVENT_TEXTS,\n EventDetails,\n TimelineType,\n TimelineTypeTexts\n} from './alarm-event-selector.model';\n\n@Injectable({ providedIn: 'root' })\nexport class AlarmEventSelectorService {\n private timelineTypeTextsMap: Map<TimelineType, TimelineTypeTexts> = new Map([\n ['ALARM', ALARM_TEXTS],\n ['EVENT', EVENT_TEXTS]\n ]);\n\n constructor(\n private alarmService: AlarmService,\n private eventsService: EventService,\n private color: ColorService\n ) {}\n\n /**\n * This method returns the texts for the timeline type.\n * @param timelineType The timeline type.\n * @returns The texts for the timeline type.\n */\n timelineTypeTexts(timelineType: TimelineType): TimelineTypeTexts {\n return this.timelineTypeTextsMap.get(timelineType)!;\n }\n\n /**\n * This method returns all alarms or events of the platform based on the timeline type\n * @param timelineType The timeline type.\n * @returns The alarms or events of the asset.\n */\n async getItems(timelineType: TimelineType): Promise<AlarmOrEvent[]> {\n const filters = {\n pageSize: 1000\n };\n\n return timelineType === 'ALARM'\n ? await this.getAlarmsOfAsset(filters)\n : await this.getEventsOfAsset(filters);\n }\n\n /**\n * This method returns the items of the asset based on the timeline type.\n * @param parentReference The parent reference.\n * @param timelineType The timeline type.\n * @returns The alarms or events of the asset.\n */\n async getAlarmsOrEvents(\n parentReference: IIdentified,\n timelineType: TimelineType\n ): Promise<AlarmOrEvent[]> {\n const filters = { source: parentReference.id, pageSize: 1000 };\n\n return timelineType === 'ALARM'\n ? await this.getAlarmsOfAsset(filters)\n : await this.getEventsOfAsset(filters);\n }\n\n async getUniqueAlarmsOnly(data: IAlarm[]): Promise<AlarmDetails[]> {\n return Promise.all(\n uniqBy(data, 'type').map(async (alarm: IAlarm) => this.createItem('ALARM', alarm))\n );\n }\n\n async getUniqueEventsOnly(data: IEvent[]): Promise<EventDetails[]> {\n return Promise.all(\n uniqBy(data, 'type').map(async (event: IEvent) => this.createItem('EVENT', event))\n );\n }\n\n async createItem(timelineType: 'ALARM' & TimelineType, item: IAlarm): Promise<AlarmDetails>;\n async createItem(timelineType: 'EVENT' & TimelineType, item: IEvent): Promise<EventDetails>;\n async createItem(timelineType: TimelineType, item: IAlarm | IEvent): Promise<any> {\n const color = await this.color.generateColor(item.type);\n if (item.source && !item.source.name) {\n item.source.name = `Device ${item.source.id}`;\n }\n return {\n timelineType,\n color,\n label: item.type,\n filters: {\n type: item.type\n },\n __target: item.source\n };\n }\n\n private async getAlarmsOfAsset(filters: {\n pageSize: number;\n dateTo?: string;\n dateFrom?: string;\n source?: string | number;\n }): Promise<AlarmDetails[]> {\n const res = await this.alarmService.list({\n ...filters,\n withSourceAssets: !!filters.source,\n withSourceDevices: !!filters.source,\n pageSize: 1000\n });\n const alarms = await this.getUniqueAlarmsOnly(res.data);\n return alarms;\n }\n\n private async getEventsOfAsset(filters: {\n pageSize: number;\n dateTo?: string;\n dateFrom?: string;\n source?: string | number;\n }): Promise<EventDetails[]> {\n const res = await this.eventsService.list(filters);\n const events = this.getUniqueEventsOnly(res.data);\n return events;\n }\n}\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n OnInit,\n Output\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormBuilder,\n FormGroup,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport { AlarmOrEvent, OmitSelectorProperties, TimelineType } from '../alarm-event-selector.model';\nimport { map, take, takeUntil } from 'rxjs/operators';\nimport { Observable, Subject } from 'rxjs';\nimport { gettext } from '@c8y/ngx-components';\nimport { KPIDetails } from '@c8y/ngx-components/datapoint-selector';\n@Component({\n selector: 'c8y-alarm-event-selector-list-item',\n templateUrl: './alarm-event-selector-list-item.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AlarmEventSelectorListItemComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => AlarmEventSelectorListItemComponent),\n multi: true\n }\n ]\n})\nexport class AlarmEventSelectorListItemComponent\n implements OnInit, ControlValueAccessor, Validator, OnDestroy\n{\n @Input() timelineType: TimelineType;\n @Input() datapoints: KPIDetails[] | undefined;\n @Input() highlightText: string;\n @Input() showAddRemoveButton = true;\n @Input() isSelected = false;\n @Input() optionToRemove = false;\n @Input() showActiveToggle = false;\n @Input() allowItemEdit = false;\n @Input() hideSource = false;\n @Input() displayAsSwitch = false;\n @Input() omitProperties: OmitSelectorProperties = {};\n\n colorPickerTitle: string;\n @Output() added = new EventEmitter<AlarmOrEvent>();\n @Output() removed = new EventEmitter<AlarmOrEvent>();\n\n formGroup: FormGroup;\n valid$: Observable<boolean>;\n private destroy$ = new Subject<void>();\n\n constructor(private formBuilder: FormBuilder) {\n this.formGroup = this.formBuilder.group({\n details: [],\n color: [],\n __active: [],\n __target: []\n });\n this.valid$ = this.formGroup.statusChanges.pipe(\n takeUntil(this.destroy$),\n map(val => val === 'VALID')\n );\n }\n\n ngOnInit() {\n this.colorPickerTitle = this.allowItemEdit ? gettext('Change color') : '';\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n toggleActive() {\n this.formGroup.controls.__active.setValue(!this.formGroup.value.__active);\n }\n\n validate(_control: AbstractControl): ValidationErrors {\n return this.formGroup?.valid ? null : { formInvalid: {} };\n }\n\n writeValue(obj: any): void {\n this.formGroup.patchValue({ ...obj, details: obj });\n }\n\n registerOnChange(fn: any): void {\n this.formGroup.valueChanges\n .pipe(\n map(tmp => this.transformFormValue(tmp)),\n takeUntil(this.destroy$)\n )\n .subscribe(fn);\n }\n\n registerOnTouched(fn: any): void {\n this.formGroup.valueChanges.pipe(take(1)).subscribe(fn);\n }\n\n setDisabledState(isDisabled: boolean): void {\n isDisabled ? this.formGroup.disable() : this.formGroup.enable();\n }\n\n addOrRemoveItem() {\n const value = this.transformFormValue(this.formGroup.value);\n if (this.isSelected) {\n this.removed.emit(value);\n } else {\n this.added.emit(value);\n }\n }\n\n remove() {\n this.removed.emit(this.transformFormValue(this.formGroup.value));\n }\n\n private transformFormValue(formValue: any) {\n const obj = Object.assign({}, formValue.details || {}, formValue);\n delete obj.details;\n return obj;\n }\n}\n","<c8y-li\n class=\"c8y-list__item__collapse--container-small\"\n [formGroup]=\"formGroup\"\n #li\n>\n <c8y-li-drag-handle><ng-content select=\"c8y-li-drag-handle\"></ng-content></c8y-li-drag-handle>\n <c8y-li-icon\n class=\"a-s-center p-r-4\"\n *ngIf=\"showAddRemoveButton\"\n >\n <button\n class=\"btn btn-clean text-primary\"\n [title]=\"'Remove' | translate\"\n *ngIf=\"isSelected\"\n (click)=\"addOrRemoveItem()\"\n >\n <i\n class=\"text-danger\"\n c8yIcon=\"minus-circle\"\n ></i>\n </button>\n <button\n class=\"btn btn-clean text-primary\"\n [title]=\"'Select' | translate\"\n *ngIf=\"!isSelected\"\n (click)=\"addOrRemoveItem()\"\n [disabled]=\"(valid$ | async) === false\"\n >\n <i\n class=\"text-primary\"\n c8yIcon=\"plus-circle\"\n ></i>\n </button>\n </c8y-li-icon>\n\n <c8y-li-checkbox\n class=\"a-s-center m-t-4 p-r-0\"\n *ngIf=\"showActiveToggle\"\n [displayAsSwitch]=\"displayAsSwitch\"\n formControlName=\"__active\"\n (click)=\"$event.stopPropagation()\"\n ></c8y-li-checkbox>\n\n <div class=\"d-flex a-i-center p-l-0\">\n <div\n class=\"c8y-list__item__colorpicker p-t-0 p-b-0 p-l-4\"\n [title]=\"colorPickerTitle | translate\"\n >\n <div\n class=\"c8y-colorpicker\"\n [ngClass]=\"{\n 'c8y-colorpicker--alarm': timelineType === 'ALARM',\n 'c8y-colorpicker--event': timelineType === 'EVENT'\n }\"\n >\n <input\n [ngStyle]=\"{ 'pointer-events': allowItemEdit && !omitProperties.color ? 'auto' : 'none' }\"\n type=\"color\"\n formControlName=\"color\"\n (click)=\"$event.stopPropagation()\"\n />\n <span\n class=\"circle-icon-wrapper circle-icon-wrapper--medium\"\n [ngStyle]=\"{ 'background-color': formGroup.value.color }\"\n >\n <i\n class=\"stroked-icon\"\n [c8yIcon]=\"timelineType === 'EVENT' ? 'c8y-events' : 'bell'\"\n ></i>\n </span>\n </div>\n </div>\n <button\n class=\"btn-clean text-truncate\"\n [title]=\"formGroup.value.details?.label\"\n (click)=\"\n allowItemEdit\n ? (li.collapsed = !li.collapsed)\n : showActiveToggle\n ? toggleActive()\n : addOrRemoveItem()\n \"\n >\n <span class=\"text-truncate\">\n <c8y-highlight\n [text]=\"\n omitProperties.label\n ? formGroup.value.details?.filters?.type\n : formGroup.value.details?.label\n \"\n [pattern]=\"highlightText\"\n [shouldTrimPattern]=\"true\"\n ></c8y-highlight>\n </span>\n <small\n class=\"text-truncate text-muted icon-flex\"\n *ngIf=\"formGroup.value.__target && !hideSource\"\n >\n <i c8yIcon=\"exchange\"></i>\n <span class=\"text-truncate\">{{ formGroup.value.__target.name }}</span>\n </small>\n </button>\n\n <button\n class=\"btn-dot btn-dot--danger m-l-auto\"\n title=\"{{ 'Invalid entries' | translate }}\"\n [popover]=\"'Some entries are invalid. Check the required input fields.' | translate\"\n container=\"body\"\n *ngIf=\"(valid$ | async) === false && li.collapsed\"\n [outsideClick]=\"true\"\n >\n <i c8yIcon=\"exclamation-circle\"></i>\n </button>\n </div>\n\n <c8y-li-action\n [icon]=\"'minus-circle'\"\n *ngIf=\"optionToRemove\"\n [label]=\"'Remove from list' | translate\"\n (click)=\"remove()\"\n ></c8y-li-action>\n <c8y-li-collapse *ngIf=\"allowItemEdit\">\n <div class=\"data-point-details\">\n <c8y-alarm-event-attributes-form\n formControlName=\"details\"\n [timelineType]=\"timelineType\"\n [omitProperties]=\"omitProperties\"\n [datapoints]=\"datapoints\"\n [target]=\"formGroup.value.__target\"\n ></c8y-alarm-event-attributes-form>\n </div>\n </c8y-li-collapse>\n</c8y-li>\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { AlarmOrEvent, OmitSelectorProperties, TimelineType } from '../alarm-event-selector.model';\nimport { map, startWith, takeUntil } from 'rxjs/operators';\nimport { Observable, Subject } from 'rxjs';\nimport { IIdentified } from '@c8y/client';\n\n@Component({\n selector: 'c8y-custom-alarm-event-form',\n templateUrl: './custom-alarm-event-form.component.html'\n})\nexport class CustomAlarmEventFormComponent implements OnInit, OnDestroy {\n @Input() timelineType: TimelineType;\n @Input() target: IIdentified;\n @Input() omitProperties: OmitSelectorProperties = {};\n @Input() selectedItems: AlarmOrEvent[] = [];\n @Input() defaultColor: string;\n @Output() added = new EventEmitter<AlarmOrEvent>();\n @Output() cancel = new EventEmitter<void>();\n\n formGroup: FormGroup;\n valid$: Observable<boolean>;\n private destroy$ = new Subject<void>();\n\n constructor(private formBuilder: FormBuilder) {\n this.formGroup = this.formBuilder.group({\n details: [],\n color: [],\n __active: [],\n __target: []\n });\n\n this.valid$ = this.formGroup.statusChanges.pipe(\n takeUntil(this.destroy$),\n map(val => val === 'VALID'),\n startWith(false)\n );\n }\n\n ngOnInit() {\n this.formGroup.patchValue({\n color: this.defaultColor,\n __target: this.target,\n details: { timelineType: this.timelineType }\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n add() {\n if (this.formGroup.valid) {\n const formValue = this.transformFormValue(this.formGroup.value);\n this.added.emit(formValue);\n }\n }\n\n private transformFormValue(formValue: any) {\n const obj = Object.assign({}, formValue.details || {}, formValue);\n delete obj.details;\n return obj;\n }\n}\n","<form [formGroup]=\"formGroup\" class=\"p-16\">\n <div\n *ngIf=\"!omitProperties.color\"\n class=\"form-group d-flex a-i-center gap-8\"\n [title]=\"'Change color' | translate\"\n >\n <label class=\"m-0\">{{ 'Color' | translate }}</label>\n <div class=\"c8y-colorpicker\"\n [ngClass]=\"{\n 'c8y-colorpicker--event': timelineType === 'EVENT',\n 'c8y-colorpicker--alarm': timelineType !== 'EVENT'\n }\"\n >\n <input\n type=\"color\"\n formControlName=\"color\"\n (click)=\"$event.stopPropagation()\"\n />\n <span [style.background-color]=\"formGroup.value.color\">\n <i [c8yIcon]=\"timelineType === 'EVENT' ? 'c8y-events' : 'bell'\"></i>\n </span>\n </div>\n </div>\n\n <c8y-alarm-event-attributes-form\n formControlName=\"details\"\n [timelineType]=\"timelineType\"\n [omitProperties]=\"omitProperties\"\n [selectedItems]=\"selectedItems\"\n ></c8y-alarm-event-attributes-form>\n\n <div class=\"d-flex p-t-16\">\n <button class=\"btn btn-default btn-sm\" (click)=\"cancel.emit()\">\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary btn-sm\"\n [disabled]=\"(valid$ | async) === false\"\n (click)=\"add()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Select' | translate }}\n </button>\n </div>\n</form>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { AlarmDetails, EventDetails } from '../alarm-event-selector.model';\n\n@Pipe({\n name: 'includesAlarmOrEvent'\n})\nexport class IncludesAlarmOrEventPipe implements PipeTransform {\n transform<T extends AlarmDetails | EventDetails>(itemList: T[], item?: T): boolean {\n if (!Array.isArray(itemList) || !item) {\n return false;\n }\n return itemList.some(\n tmp =>\n tmp.label === item.label &&\n tmp.filters.type === item.filters.type &&\n tmp.__target?.id === item.__target?.id\n );\n }\n}\n","import { Component, EventEmitter, forwardRef, Input, OnInit, Output } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IIdentified } from '@c8y/client';\nimport { AssetSelectionChangeEvent } from '@c8y/ngx-components/assets-navigator';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n map,\n shareReplay,\n switchMap,\n tap\n} from 'rxjs/operators';\nimport {\n AlarmOrEvent,\n OmitSelectorProperties,\n TimelineType,\n TimelineTypeTexts\n} from './alarm-event-selector.model';\nimport { AlarmEventSelectorService } from './alarm-event-selector.service';\n\n@Component({\n selector: 'c8y-alarm-event-selector',\n templateUrl: './alarm-event-selector.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => AlarmEventSelectorComponent)\n }\n ]\n})\nexport class AlarmEventSelectorComponent implements OnInit {\n @Input() timelineType: TimelineType = 'ALARM';\n @Input() contextAsset: IIdentified;\n @Input() allowChangingContext = true;\n @Input() selectedItems = new Array<AlarmOrEvent>();\n @Input() allowSearch = true;\n @Input() groupsSelectable = true;\n @Input() hideSource = false;\n @Input() omitProperties: OmitSelectorProperties = {};\n\n @Output() selectionChange = new EventEmitter<AlarmOrEvent[]>();\n filterString = '';\n maxNumberOfItems = 50;\n\n loadingItems$ = new BehaviorSubject(false);\n assetSelection = new BehaviorSubject<IIdentified>({});\n items$: Observable<AlarmOrEvent[]>;\n filteredItems$: Observable<AlarmOrEvent[]>;\n filterStringChanges$: Observable<string>;\n timelineTypeTexts: TimelineTypeTexts;\n isExpanded = false;\n defaultColor =\n getComputedStyle(document.documentElement).getPropertyValue('--brand-primary') ||\n getComputedStyle(document.documentElement).getPropertyValue('--c8y-brand-primary') ||\n '#1776BF';\n private filterString$ = new BehaviorSubject('');\n\n constructor(private alarmEventSelectorService: AlarmEventSelectorService) {}\n\n ngOnInit(): void {\n this.timelineTypeTexts = this.alarmEventSelectorService.timelineTypeTexts(this.timelineType);\n this.setupObservables();\n if (this.contextAsset) {\n this.selectAsset(this.contextAsset);\n }\n }\n\n itemAdded(item: AlarmOrEvent): void {\n item.__active = true;\n this.selectedItems = [...this.selectedItems, item];\n this.emitCurrentSelection();\n }\n\n itemRemoved(alarm: AlarmOrEvent): void {\n this.selectedItems = this.selectedItems.filter(\n tmp =>\n tmp.label !== alarm.label ||\n tmp.filters.type !== alarm.filters.type ||\n tmp.__target?.id !== alarm.__target?.id\n );\n this.emitCurrentSelection();\n }\n\n assetSelectionChanged(evt: AssetSelectionChangeEvent): void {\n if (evt.items) {\n return this.selectAsset(evt.items.length ? evt.items[0] : evt.items);\n }\n // reset selection\n this.assetSelection.next(null);\n }\n\n trackByFn(_index: number, item: AlarmOrEvent): string {\n return `${item.filters.type}-${item.__target?.id}`;\n }\n\n filterStringChanged(newValue = ''): void {\n this.filterString$.next(newValue);\n this.filterString = newValue;\n }\n\n private setLoadingState(state: boolean) {\n queueMicrotask(() => this.loadingItems$.next(state));\n }\n\n private setupObservables(): void {\n this.items$ = this.assetSelection.pipe(\n tap(() => this.setLoadingState(true)),\n switchMap((asset: IIdentified) =>\n asset?.id\n ? this.alarmEventSelectorService.getAlarmsOrEvents(asset, this.timelineType)\n : this.alarmEventSelectorService.getItems(this.timelineType)\n ),\n tap(() => this.setLoadingState(false)),\n map(items => {\n if (this.omitProperties.color) {\n items.forEach(i => (i.color = this.defaultColor));\n }\n return items;\n }),\n shareReplay(1)\n );\n\n this.filterStringChanges$ = this.filterString$.pipe(\n distinctUntilChanged(),\n debounceTime(500),\n shareReplay(1)\n );\n\n this.filteredItems$ = combineLatest([this.filterStringChanges$, this.items$]).pipe(\n map(([filterString, items]) => {\n if (!filterString) {\n return items;\n }\n const lowerCaseFilterString = filterString.toLowerCase();\n return items.filter(item => this.includesFilterString(item, lowerCaseFilterString));\n }),\n map(filtered => filtered.slice(0, this.maxNumberOfItems))\n );\n }\n\n private selectAsset(asset: IIdentified) {\n this.assetSelection.next(asset);\n this.filterStringChanged();\n }\n\n private emitCurrentSelection() {\n this.selectionChange.emit(this.selectedItems);\n }\n\n private includesFilterString(alarm: AlarmOrEvent, lowerCaseFilterString: string): boolean {\n const label = alarm.label?.toLowerCase();\n if (label && label.includes(lowerCaseFilterString)) {\n return true;\n }\n\n const type = alarm.filters.type?.toLowerCase();\n if (type && type.includes(lowerCaseFilterString)) {\n return true;\n }\n\n return false;\n }\n}\n","<div\n class=\"d-grid grid__row--1 fit-h\"\n [ngClass]=\"{\n 'grid__col--3-6-3--md': allowChangingContext,\n 'grid__col--8-4--md': !allowChangingContext\n }\"\n>\n <div\n class=\"d-flex d-col p-relative bg-level-1\"\n *ngIf=\"allowChangingContext\"\n >\n <c8y-asset-selector-miller\n class=\"d-contents\"\n [(ngModel)]=\"contextAsset\"\n [asset]=\"contextAsset\"\n (onSelected)=\"assetSelectionChanged($event)\"\n [container]=\"''\"\n [config]=\"{\n view: 'miller',\n groupsSelectable: groupsSelectable,\n columnHeaders: true,\n showChildDevices: true,\n showUnassignedDevices: true,\n singleColumn: true,\n search: allowSearch,\n showFilter: true\n }\"\n ></c8y-asset-selector-miller>\n </div>\n <!-- center column -->\n <div class=\"inner-scroll bg-component\" data-cy=\"c8y-alarm-event-selector--inner-column\">\n <ng-template #noDeviceEmptyState>\n <div class=\"p-16\">\n <c8y-ui-empty-state\n [icon]=\"timelineTypeTexts.emptyStateIcon\"\n [title]=\"timelineTypeTexts.emptyStateTitle | translate\"\n [subtitle]=\"timelineTypeTexts.assetWithNoItemsEmptyStateSubtitle | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </ng-template>\n\n <ng-template #loadingData>\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-template>\n\n <div\n class=\"bg-inherit\"\n *ngIf=\"assetSelection | async as asset; else noDeviceEmptyState\"\n >\n <div class=\"p-l-16 p-r-16 p-t-8 p-b-8 sticky-top bg-inherit separator-bottom\">\n <p\n class=\"text-medium text-truncate\"\n [title]=\"timelineTypeTexts.availableItemsTitle | translate\"\n >\n {{ timelineTypeTexts.availableItemsTitle | translate }}\n </p>\n <div class=\"d-flex\">\n <div\n class=\"input-group input-group-search m-t-4\"\n id=\"search\"\n *ngIf=\"!(loadingItems$ | async)\"\n >\n <input\n class=\"form-control\"\n placeholder=\"Filter…\"\n type=\"search\"\n [ngModel]=\"filterString\"\n (ngModelChange)=\"filterStringChanged($event)\"\n />\n <span class=\"input-group-addon\">\n <i\n c8yIcon=\"search\"\n *ngIf=\"!filterString; else clearFilterString\"\n ></i>\n <ng-template #clearFilterString>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n *ngIf=\"filterString\"\n (click)=\"filterStringChanged()\"\n ></i>\n </ng-template>\n </span>\n </div>\n </div>\n </div>\n\n <ng-container *ngIf=\"filteredItems$ | async as filteredItems; else loadingData\">\n <ng-container *ngIf=\"!(loadingItems$ | async); else loadingData\">\n <ng-container *ngIf=\"items$ | async as items\">\n <div class=\"p-16 bg-level-2 separator-bottom\">\n <div>\n <p>\n <i\n class=\"text-info m-r-4\"\n c8yIcon=\"info-circle\"\n ></i>\n <strong>{{ timelineTypeTexts.recentItemsWarningTitle | translate }}</strong>\n </p>\n <p>\n {{ timelineTypeTexts.recentItemsWarningText | translate }}\n {{ timelineTypeTexts.addCustomText | translate }}\n </p>\n </div>\n <div class=\"p-t-16\">\n <button\n class=\"btn btn-default btn-sm\"\n aria-controls=\"collapseCustomItemForm\"\n [attr.aria-expanded]=\"isExpanded\"\n (click)=\"isExpanded = !isExpanded\"\n >\n {{ timelineTypeTexts.addCustomItemButtonLabel | translate }}\n </button>\n <div\n class=\"collapse\"\n id=\"collapseCustomItemForm\"\n [collapse]=\"!isExpanded\"\n [isAnimated]=\"true\"\n >\n <div [style.min-height]=\"'230px'\">\n <c8y-custom-alarm-event-form\n class=\"d-block\"\n *ngIf=\"isExpanded\"\n [timelineType]=\"timelineType\"\n [target]=\"assetSelection | async\"\n [omitProperties]=\"omitProperties\"\n [defaultColor]=\"defaultColor\"\n (added)=\"itemAdded($event); isExpanded = false\"\n (cancel)=\"isExpanded = false\"\n [selectedItems]=\"selectedItems\"\n ></c8y-custom-alarm-event-form>\n </div>\n </div>\n </div>\n </div>\n\n <div\n class=\"p-16\"\n *ngIf=\"!filteredItems.length\"\n >\n <c8y-ui-empty-state\n [icon]=\"timelineTypeTexts.emptyStateIcon\"\n [title]=\"timelineTypeTexts.emptyStateTitle | translate\"\n [subtitle]=\"\n items.length\n ? ('Try another filter term.' | translate)\n : (timelineTypeTexts.assetWithNoItemsEmptyStateSubtitle | translate)\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n\n <c8y-list-group>\n <c8y-list-item\n class=\"sticky-top\"\n style=\"top: 72px\"\n *ngIf=\"items.length > maxNumberOfItems && filteredItems.length >= maxNumberOfItems\"\n >\n <div class=\"alert alert-warning m-b-0\">\n {{ timelineTypeTexts.largeNumberOfItemsInfo | translate }}\n </div>\n </c8y-list-item>\n <c8y-alarm-event-selector-list-item\n class=\"d-contents\"\n [ngModel]=\"item\"\n [isSelected]=\"selectedItems | includesAlarmOrEvent: item\"\n (added)=\"itemAdded($event)\"\n (removed)=\"itemRemoved($event)\"\n [highlightText]=\"filterStringChanges$ | async\"\n [timelineType]=\"timelineType\"\n [hideSource]=\"hideSource\"\n *ngFor=\"let item of filteredItems; trackBy: trackByFn\"\n ></c8y-alarm-event-selector-list-item>\n </c8y-list-group>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n\n <!-- last column -->\n <div class=\"inner-scroll bg-level-1\">\n <p\n class=\"text-medium m-b-4 p-l-16 p-r-16 p-t-8 p-b-8 separator-bottom sticky-top text-truncate\"\n [title]=\"timelineTypeTexts.selectedItemsTitle | translate\"\n >\n {{ timelineTypeTexts.selectedItemsTitle | translate }}\n </p>\n <div class=\"d-flex flex-wrap gap-8 p-l-16 p-r-16 p-b-16\">\n <c8y-ui-empty-state\n [icon]=\"timelineTypeTexts.emptyStateIcon\"\n [title]=\"timelineTypeTexts.noSelectedItemsTitle | translate\"\n *ngIf=\"!selectedItems || !selectedItems.length\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <div\n [ngClass]=\"{\n 'c8y-alarm-pill': timelineType === 'ALARM',\n 'c8y-event-pill': timelineType === 'EVENT'\n }\"\n *ngFor=\"let selectedItem of selectedItems\"\n >\n <button\n [title]=\"'Remove' | translate\"\n type=\"button\"\n [ngClass]=\"{\n 'c8y-alarm-pill__btn': timelineType === 'ALARM',\n 'c8y-event-pill__btn': timelineType === 'EVENT'\n }\"\n (click)=\"itemRemoved(selectedItem)\"\n >\n <i\n class=\"icon-14\"\n c8yIcon=\"remove\"\n ></i>\n </button>\n <div\n class=\"c8y-datapoint-pill__label\"\n [title]=\"selectedItem.label || selectedItem.filters.type\"\n >\n <span\n class=\"circle-icon-wrapper circle-icon-wrapper--small m-r-4\"\n [style.background-color]=\"selectedItem.color || defaultColor\"\n >\n <i\n class=\"stroked-icon\"\n [c8yIcon]=\"timelineType === 'ALARM' ? 'bell' : 'c8y-events'\"\n ></i>\n </span>\n <span class=\"text-truncate\">\n <span class=\"text-truncate\">{{ selectedItem.label || selectedItem.filters.type }}</span>\n <small\n class=\"text-muted text-10\"\n *ngIf=\"!hideSource && selectedItem?.__target?.name\"\n >\n {{ selectedItem?.__target?.name }}\n </small>\n </span>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { IIdentified } from '@c8y/client';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { AlarmOrEvent, OmitSelectorProperties, TimelineType } from '../alarm-event-selector.model';\n\n@Component({\n selector: 'c8y-alarm-event-selector-modal',\n templateUrl: './alarm-event-selector-modal.component.html'\n})\nexport class AlarmEventSelectorModalComponent {\n selectType: TimelineType = 'ALARM';\n contextAsset: IIdentified;\n allowChangingContext = true;\n allowSearch = true;\n selectedItems = new Array<AlarmOrEvent>();\n title: string;\n groupsSelectable = true;\n hideSource = false;\n saveButtonLabel: string;\n omitProperties: OmitSelectorProperties = {};\n readonly result: Promise<AlarmOrEvent[]> = new Promise((resolve, reject) => {\n this.save = resolve;\n this.cancel = reject;\n });\n\n private save: (value: AlarmOrEvent[]) => void;\n private cancel: (reason?: any) => void;\n\n constructor(private bsModal: BsModalRef) {}\n\n saveChanges(): void {\n this.bsModal.hide();\n this.save(this.selectedItems);\n }\n\n close() {\n this.bsModal.hide();\n this.cancel();\n }\n\n selectionChange(selection: Array<AlarmOrEvent>) {\n this.selectedItems = selection;\n }\n}\n","<div class=\"modal-header separator\">\n <h4 class=\"text-medium\">{{ title | translate }}</h4>\n</div>\n<div class=\"modal-inner-scroll modal-inner-scroll--fixed\">\n <c8y-alarm-event-selector\n [selectedItems]=\"selectedItems\"\n [contextAsset]=\"contextAsset\"\n [timelineType]=\"selectType\"\n [groupsSelectable]=\"groupsSelectable\"\n [hideSource]=\"hideSource\"\n [allowChangingContext]=\"allowChangingContext\"\n [omitProperties]=\"omitProperties\"\n (selectionChange)=\"selectionChange($event)\"\n ></c8y-alarm-event-selector>\n</div>\n<div class=\"modal-footer\">\n <button\n type=\"button\"\n [title]=\"'Cancel' | translate\"\n class=\"btn btn-default\"\n (click)=\"close()\"\n translate\n >\n Cancel\n </button>\n <button\n [title]=\"saveButtonLabel | translate\"\n class=\"btn btn-primary\"\n [disabled]=\"!this.selectedItems?.length\"\n (click)=\"saveChanges()\"\n >\n {{ saveButtonLabel | translate }}\n </button>\n</div>\n","import { Injectable } from '@angular/core';\nimport { AlarmOrEvent } from '../alarm-event-selector.model';\nimport { AlarmEventSelectorModalComponent } from './alarm-event-selector-modal.component';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { AlarmEventSelectorModalOptions } from './alarm-event-selector-modal.model';\n\n/**\n * Service to open the alarm event selector modal.\n */\n@Injectable({ providedIn: 'root' })\nexport class AlarmEventSelectorModalService {\n constructor(private modal: BsModalService) {}\n /**\n * Opents the alarm or event selector modal.\n * @param initialState Initial state of the modal.\n * @returns Promise that resolves with the selected alarms or events.\n */\n selectItems(initialState: Partial<AlarmEventSelectorModalOptions> = {}): Promise<AlarmOrEvent[]> {\n const modal = this.modal.show(AlarmEventSelectorModalComponent, {\n ignoreBackdropClick: true,\n keyboard: false,\n initialState,\n class: 'modal-lg'\n });\n const content = modal.content as AlarmEventSelectorModalComponent;\n return content.result;\n }\n}\n","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport {\n Component,\n ContentChild,\n forwardRef,\n Input,\n OnDestroy,\n OnInit,\n Optional\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormArray,\n FormBuilder,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport { ContextRouteService, EmptyStateComponent, ViewContext } from '@c8y/ngx-components';\nimport { WidgetConfigComponent } from '@c8y/ngx-components/context-dashboard';\nimport { debounceTime, map, take, takeUntil } from 'rxjs/operators';\nimport { AlarmEventSelectorModalOptions } from '../alarm-event-selector-modal/alarm-event-selector-modal.model';\nimport { AlarmEventSelectorModalService } from '../alarm-event-selector-modal/alarm-event-selector-modal.service';\nimport {\n AlarmOrEvent,\n OmitSelectorProperties,\n TimelineType,\n TimelineTypeTexts\n} from '../alarm-event-selector.model';\nimport { AlarmEventSelectorService } from '../alarm-event-selector.service';\nimport { Subject } from 'rxjs';\nimport { ActivatedRoute } from '@angular/router';\n\n@Component({\n selector: 'c8y-alarm-event-selection-list',\n templateUrl: './alarm-event-selection-list.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => AlarmEventSelectionListComponent)\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => AlarmEventSelectionListComponent),\n multi: true\n }\n ]\n})\nexport class AlarmEventSelectionListComponent\n implements ControlValueAccessor, Validator, OnInit, OnDestroy\n{\n @Input() timelineType: TimelineType = 'ALARM';\n @Input() canRemove = true;\n @Input() canEdit = true;\n @Input() canDragAndDrop = true;\n @Input() title: string;\n @Input() addButtonLabel: string;\n @Input() hideSource = false;\n @Input() inline = false; // TODO: @janhommes we should rename this to `isDropdownContained` or similar to make it more clear\n @Input() activeToggleAsSwitch = true;\n @Input() omitProperties: OmitSelectorProperties = { color: false, label: false };\n @Input() datapoints = [];\n @ContentChild(EmptyStateComponent) emptyState: EmptyStateComponent;\n\n /**\n * The configuration for the alarms-events selector modal.\n */\n @Input() config: Partial<AlarmEventSelectorModalOptions> = {};\n\n formArray: FormArray;\n timelineTypeTexts: TimelineTypeTexts;\n contextSourceId: number | string | null;\n\n private destroy$ = new Subject<void>();\n\n constructor(\n private alarmEventModalService: AlarmEventSelectorModalService,\n private alarmEventSelectService: AlarmEventSelectorService,\n private formBuilder: FormBuilder,\n @Optional() private activatedRoute: ActivatedRoute,\n @Optional() private contextRouteService: ContextRouteService,\n @Optional() private widgetComponent: WidgetConfigComponent\n ) {\n this.formArray = this.formBuilder.array([]);\n }\n\n ngOnInit(): void {\n this.timelineTypeTexts = this.alarmEventSelectService.timelineTypeTexts(this.timelineType);\n this.title ??= this.timelineTypeTexts.listTitle;\n this.addButtonLabel ??= this.timelineTypeTexts.addButtonLabel;\n this.contextSourceId = this.initializeContextSourceId();\n const context = this.widgetComponent?.context;\n if (context?.id) {\n const { name, id, c8y_IsDevice } = context;\n this.config.contextAsset = { name, id, c8y_IsDevice };\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n registerOnTouched(fn: any): void {\n this.formArray.valueChanges.pipe(take(1)).subscribe(fn);\n }\n\n validate(_control: AbstractControl): ValidationErrors {\n return this.formArray.valid ? null : { formInvalid: {} };\n }\n\n writeValue(val: AlarmOrEvent[]): void {\n this.formArray.clear();\n if (val?.length) {\n val.forEach(val => {\n const formgroup = this.formBuilder.group({ details: [] });\n formgroup.patchValue({ details: val });\n this.formArray.push(formgroup);\n });\n }\n }\n\n registerOnChange(fn: any): void {\n this.formArray.valueChanges\n .pipe(\n debounceTime(100), // debounce to avoid emitting of this.formArray.clear()\n map(res => this.transformValue(res)),\n takeUntil(this.destroy$)\n )\n .subscribe(fn);\n }\n\n add() {\n const allowChangingContext =\n !this.widgetComponent?.isDeviceTypeDashboard && this.config?.allowChangingContext !== false;\n this.alarmEventModalService\n .selectItems({\n allowChangingContext,\n selectType: this.timelineType,\n selectedItems: this.transformValue(this.formArray.value),\n allowSearch: !this.config?.contextAsset,\n title: this.timelineTypeTexts.selectorTitle,\n saveButtonLabel: this.timelineTypeTexts.addButtonLabel,\n omitProperties: this.omitProperties,\n contextAsset: this.config?.contextAsset\n ? this.config.contextAsset\n : this.contextSourceId\n ? { id: this.contextSourceId }\n : null,\n ...(this.config || {})\n })\n .then(\n result => {\n this.writeValue(result);\n },\n () => {\n // nothing to do, modal was closed\n }\n );\n }\n\n onItemRemoved(index: number) {\n this.formArray.removeAt(index);\n }\n\n drop(event: CdkDragDrop<AlarmOrEvent[]>) {\n const currentSorting = this.formArray.value;\n moveItemInArray(currentSorting, event.previousIndex, event.currentIndex);\n this.formArray.setValue(currentSorting);\n }\n\n private transformValue(formArrayValue: any[]) {\n if (!formArrayValue) {\n return [];\n }\n return formArrayValue.map(tmp => Object.assign({}, ...Object.values(tmp)));\n }\n\n private initializeContextSourceId(): number | string | null {\n const routeContext = this.contextRouteService.getContextData(this.activatedRoute);\n if (!routeContext) {\n return;\n }\n const { context, contextData } = routeContext;\n if ([ViewContext.Device, ViewContext.Group].includes(context)) {\n return contextData?.id;\n }\n }\n}\n","<div\n class=\"card-header separator-top-bottom sticky-top bg-inherit\"\n *ngIf=\"!inline\"\n>\n <span class=\"card-title h4\">{{ title | translate }}</span>\n</div>\n\n<c8y-list-group\n class=\"flex-grow ff-scroll-fix cdk-droplist\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListDisabled]=\"formArray.controls?.length < 2\"\n>\n <div\n class=\"p-t-8\"\n *ngIf=\"!formArray.controls?.length\"\n >\n <ng-content select=\"c8y-ui-empty-state\"></ng-content>\n <c8y-ui-empty-state\n class=\"p-t-8\"\n [icon]=\"timelineTypeTexts.emptyStateIcon\"\n [title]=\"timelineTypeTexts.emptyStateTitle | translate\"\n [subtitle]=\"timelineTypeTexts.emptyStateSubtitle | translate\"\n *ngIf=\"!emptyState\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <div\n *ngFor=\"let itemForm of formArray.controls; let index = index\"\n [formGroup]=\"itemForm\"\n >\n <c8y-alarm-event-selector-list-item\n class=\"d-block\"\n cdkDrag\n [cdkDragDisabled]=\"!canDragAndDrop\"\n formControlName=\"details\"\n [showAddRemoveButton]=\"false\"\n [datapoints]=\"datapoints\"\n [optionToRemove]=\"canRemove\"\n [showActiveToggle]=\"true\"\n [timelineType]=\"timelineType\"\n [allowItemEdit]=\"canEdit\"\n [hideSource]=\"hideSource\"\n [displayAsSwitch]=\"activeToggleAsSwitch\"\n [omitProperties]=\"omitProperties\"\n (removed)=\"onItemRemoved(index)\"\n >\n <c8y-li-drag-handle\n title=\"{{ 'Click and drag to reorder' | translate }}\"\n cdkDragHandle\n *ngIf=\"canDragAndDrop\"\n >\n <i c8yIcon=\"drag-reorder\"></i>\n </c8y-li-drag-handle>\n </c8y-alarm-event-selector-list-item>\n </div>\n</c8y-list-group>\n\n<div class=\"card-footer bg-inherit\">\n <button\n class=\"btn btn-default btn-sm\"\n [title]=\"addButtonLabel | translate\"\n type=\"button\"\n [ngClass]=\"{ 'btn-block': inline }\"\n (click)=\"add()\"\n >\n <i\n c8yIcon=\"plus-circle\"\n *ngIf=\"canDragAndDrop\"\n ></i>\n {{ addButtonLabel | translate }}\n </button>\n</div>\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { AlarmEventSelectionListComponent } from './alarm-event-selection-list/alarm-event-selection-list.component';\nimport { AlarmEventSelectorListItemComponent } from './alarm-event-selector-list-item/alarm-event-selector-list-item.component';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\nimport { AlarmEventAttributesFormComponent } from './alarm-event-attributes-form/alarm-event-attributes-form.component';\nimport { AlarmEventSelectorModalComponent } from './alarm-event-selector-modal/alarm-event-selector-modal.component';\nimport { AlarmEventSelectorComponent } from './alarm-event-selector.component';\nimport { IncludesAlarmOrEventPipe } from './pipes/includes-alarm.pipe';\nimport { CustomAlarmEventFormComponent } from './custom-alarm-event-form/custom-alarm-event-form.component';\nimport { AssetSelectorModule } from '@c8y/ngx-components/assets-navigator';\nimport { CommonModule, CoreModule } from '@c8y/ngx-components';\n\n@NgModule({\n imports: [\n CommonModule,\n CoreModule,\n DragDropModule,\n PopoverModule,\n TooltipModule,\n AssetSelectorModule,\n CollapseModule,\n RouterModule.forChild([])\n ],\n declarations: [\n AlarmEventSelectionListComponent,\n AlarmEventSelectorListItemComponent,\n AlarmEventAttributesFormComponent,\n AlarmEventSelectorModalComponent,\n AlarmEventSelectorComponent,\n IncludesAlarmOrEventPipe,\n CustomAlarmEventFormComponent\n ],\n exports: [AlarmEventSelectionListComponent, AlarmEventSelectorComponent]\n})\nexport class AlarmEventSelectorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.AlarmEventAttributesFormService","i4","i1","i5.AlarmEventAttributesFormComponent","i4.AlarmEventAttributesFormComponent","i1.AlarmEventSelectorService","i7.AlarmEventSelectorListItemComponent","i8.CustomAlarmEventFormComponent","i9.IncludesAlarmOrEventPipe","i3.AlarmEventSelectorComponent","i1.AlarmEventSelectorModalService","i2.AlarmEventSelectorService","i3","i5","i6","i7","i9.AlarmEventSelectorListItemComponent"],"mappings":"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"}
|
|
@@ -1345,11 +1345,11 @@ class AlarmsFilterComponent {
|
|
|
1345
1345
|
}
|
|
1346
1346
|
}
|
|
1347
1347
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AlarmsFilterComponent, deps: [{ token: i1$2.FormBuilder }, { token: AlarmsViewService }, { token: i3.AlertService }, { token: i1$1.Router }, { token: i1$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1348
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: AlarmsFilterComponent, selector: "c8y-alarms-filter", inputs: { contextSourceId: "contextSourceId" }, outputs: { onFilterApplied: "onFilterApplied" }, viewQueries: [{ propertyName: "filtersDropdown", first: true, predicate: ["filtersDropdown"], descendants: true }], ngImport: i0, template: "<form\n class=\"d-flex a-i-center\"\n [formGroup]=\"formGroup\"\n>\n <div\n class=\"dropdown\"\n title=\"{{ 'Filter by severity' | translate }}\"\n dropdown\n #filtersDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"filtersDropdown.isOpen\"\n [insideClick]=\"true\"\n >\n <div class=\"input-group fit-w\">\n <div class=\"form-control d-flex a-i-center inner-scroll\" style=\"min-width: 104px;\">\n <ng-container *ngIf=\"chips.length !== severitiesList.length; else allAlarms\">\n <span\n class=\"tag tag--info chip\"\n *ngFor=\"let chip of chips\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"deselectChip(chip); $event.stopPropagation()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n <i\n class=\"status stroked-icon icon-12\"\n [c8yIcon]=\"chip | AlarmSeverityToIcon\"\n [ngClass]=\"chip | lowercase\"\n ></i>\n {{ SEVERITY_LABELS[chip] | translate }}\n </span>\n </ng-container>\n <ng-template #allAlarms>\n <span class=\"text-truncate\" title=\"{{ 'All severities' | translate }}\">\n {{ 'All severities' | translate }}\n </span>\n </ng-template>\n </div>\n <div class=\"input-group-btn input-group-btn--last\">\n <button\n class=\"btn-default btn btn--caret\"\n title=\"{{ chips | AlarmSeveritiesToTitle }}\"\n data-cy=\"c8y-alarm-filter\"\n dropdownToggle\n (click)=\"resetForm()\"\n >\n <i class=\"caret\"></i>\n </button>\n </div>\n </div>\n <ul\n class=\"dropdown-menu dropdown-menu-action-bar\"\n *dropdownMenu\n >\n <li class=\"p-l-16 p-r-16 p-t-4 p-b-4 d-flex a-i-center sticky-top separator-bottom\">\n <label\n class=\"c8y-checkbox d-flex a-i-center\"\n [title]=\"'All' | translate\"\n >\n <input\n type=\"checkbox\"\n data-cy=\"c8y-alarm-filter--all\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"allChanged($event)\"\n [ngModel]=\"isEachCheckboxSelected$ | async\"\n [indeterminate]=\"isIndeterminate$ | async\"\n (click)=\"markSeveritiesAsTouched()\"\n />\n <span></span>\n <i\n class=\"status stroked-icon m-l-8 icon-20\"\n [c8yIcon]=\"'bell'\"\n ></i>\n <span class=\"m-l-8\">{{ 'All' | translate }}</span>\n </label>\n </li>\n <li\n class=\"p-l-16 p-r-16 p-t-4 p-b-4 d-flex a-i-center\"\n *ngFor=\"let severity of severitiesList\"\n >\n <label\n class=\"c8y-checkbox d-flex a-i-center\"\n [title]=\"SEVERITY_LABELS[severity] | translate\"\n >\n <input\n type=\"checkbox\"\n [attr.data-cy]=\"'c8y-alarm-filter--' + severity\"\n [formControlName]=\"severity\"\n [value]=\"severity\"\n (click)=\"markSeveritiesAsTouched()\"\n />\n <span></span>\n <i\n class=\"status stroked-icon m-l-8 icon-20\"\n [c8yIcon]=\"severity | AlarmSeverityToIcon\"\n [ngClass]=\"severity | lowercase\"\n ></i>\n <span class=\"m-l-8\">{{ SEVERITY_LABELS[severity] | translate }}</span>\n </label>\n <!-- badge -->\n <div\n class=\"badge badge-info m-l-auto\"\n *ngIf=\"alarmCounts[severity] || alarmCounts[severity] === 0\"\n >\n <i\n class=\"icon-spin\"\n [c8yIcon]=\"'circle-o-notch'\"\n *ngIf=\"countLoading\"\n ></i>\n <span\n *ngIf=\"!countLoading\"\n [attr.data-cy]=\"severity + '-badge'\"\n >\n {{ alarmCounts[severity] < 99 ? alarmCounts[severity] : '99+' }}\n </span>\n </div>\n </li>\n <li class=\"p-l-16 p-r-16 p-t-4 p-b-4 d-flex a-i-center separator-top\">\n <label\n class=\"c8y-switch\"\n [attr.aria-label]=\"'Show cleared alarms' | translate\"\n [attr.data-cy]=\"'c8y-alarms-filter--cleared'\"\n >\n <input\n type=\"checkbox\"\n #showClearedCheckbox\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"showCleared\"\n (click)=\"markSeveritiesAsTouched(); updateAlarmsCount(showClearedCheckbox.checked)\"\n />\n <span></span>\n <span\n class=\"text-truncate\"\n title=\"{{ 'Show cleared alarms' | translate }}\"\n >\n {{ 'Show cleared alarms' | translate }}\n </span>\n </label>\n </li>\n\n <div class=\"p-16 d-flex sticky-bottom separator-top\">\n <button\n [attr.data-cy]=\"'c8y-alarms-filter--apply'\"\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyFilters(false); closeDropdown()\"\n [disabled]=\"shouldDisableApplyButton$ | async\"\n >\n {{ 'Apply' | translate }}\n </button>\n </div>\n </ul>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i5.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i6.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i6.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i6.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: AlarmSeverityToIconPipe, name: "AlarmSeverityToIcon" }, { kind: "pipe", type: AlarmSeveritiesToTitlePipe, name: "AlarmSeveritiesToTitle" }] }); }
|
|
1348
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: AlarmsFilterComponent, selector: "c8y-alarms-filter", inputs: { contextSourceId: "contextSourceId" }, outputs: { onFilterApplied: "onFilterApplied" }, viewQueries: [{ propertyName: "filtersDropdown", first: true, predicate: ["filtersDropdown"], descendants: true }], ngImport: i0, template: "<form\n class=\"d-flex a-i-center\"\n [formGroup]=\"formGroup\"\n>\n <div\n class=\"dropdown\"\n title=\"{{ 'Filter by severity' | translate }}\"\n dropdown\n #filtersDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"filtersDropdown.isOpen\"\n [insideClick]=\"true\"\n >\n <div class=\"input-group fit-w\">\n <div class=\"form-control d-flex a-i-center inner-scroll\" style=\"min-width: 104px; padding-top: 0; padding-bottom: 0;\">\n <ng-container *ngIf=\"chips.length !== severitiesList.length; else allAlarms\">\n <span\n class=\"tag tag--info chip\"\n *ngFor=\"let chip of chips\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"deselectChip(chip); $event.stopPropagation()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n <i\n class=\"status stroked-icon icon-12\"\n [c8yIcon]=\"chip | AlarmSeverityToIcon\"\n [ngClass]=\"chip | lowercase\"\n ></i>\n {{ SEVERITY_LABELS[chip] | translate }}\n </span>\n </ng-container>\n <ng-template #allAlarms>\n <span class=\"text-truncate\" title=\"{{ 'All severities' | translate }}\">\n {{ 'All severities' | translate }}\n </span>\n </ng-template>\n </div>\n <div class=\"input-group-btn input-group-btn--last\">\n <button\n class=\"btn-default btn btn--caret\"\n title=\"{{ chips | AlarmSeveritiesToTitle }}\"\n data-cy=\"c8y-alarm-filter\"\n dropdownToggle\n (click)=\"resetForm()\"\n >\n <i class=\"caret\"></i>\n </button>\n </div>\n </div>\n <ul\n class=\"dropdown-menu dropdown-menu-action-bar\"\n *dropdownMenu\n >\n <li class=\"p-l-16 p-r-16 p-t-4 p-b-4 d-flex a-i-center sticky-top separator-bottom\">\n <label\n class=\"c8y-checkbox d-flex a-i-center\"\n [title]=\"'All' | translate\"\n >\n <input\n type=\"checkbox\"\n data-cy=\"c8y-alarm-filter--all\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"allChanged($event)\"\n [ngModel]=\"isEachCheckboxSelected$ | async\"\n [indeterminate]=\"isIndeterminate$ | async\"\n (click)=\"markSeveritiesAsTouched()\"\n />\n <span></span>\n <i\n class=\"status stroked-icon m-l-8 icon-20\"\n [c8yIcon]=\"'bell'\"\n ></i>\n <span class=\"m-l-8\">{{ 'All' | translate }}</span>\n </label>\n </li>\n <li\n class=\"p-l-16 p-r-16 p-t-4 p-b-4 d-flex a-i-center\"\n *ngFor=\"let severity of severitiesList\"\n >\n <label\n class=\"c8y-checkbox d-flex a-i-center\"\n [title]=\"SEVERITY_LABELS[severity] | translate\"\n >\n <input\n type=\"checkbox\"\n [attr.data-cy]=\"'c8y-alarm-filter--' + severity\"\n [formControlName]=\"severity\"\n [value]=\"severity\"\n (click)=\"markSeveritiesAsTouched()\"\n />\n <span></span>\n <i\n class=\"status stroked-icon m-l-8 icon-20\"\n [c8yIcon]=\"severity | AlarmSeverityToIcon\"\n [ngClass]=\"severity | lowercase\"\n ></i>\n <span class=\"m-l-8\">{{ SEVERITY_LABELS[severity] | translate }}</span>\n </label>\n <!-- badge -->\n <div\n class=\"badge badge-info m-l-auto\"\n *ngIf=\"alarmCounts[severity] || alarmCounts[severity] === 0\"\n >\n <i\n class=\"icon-spin\"\n [c8yIcon]=\"'circle-o-notch'\"\n *ngIf=\"countLoading\"\n ></i>\n <span\n *ngIf=\"!countLoading\"\n [attr.data-cy]=\"severity + '-badge'\"\n >\n {{ alarmCounts[severity] < 99 ? alarmCounts[severity] : '99+' }}\n </span>\n </div>\n </li>\n <li class=\"p-l-16 p-r-16 p-t-4 p-b-4 d-flex a-i-center separator-top\">\n <label\n class=\"c8y-switch\"\n [attr.aria-label]=\"'Show cleared alarms' | translate\"\n [attr.data-cy]=\"'c8y-alarms-filter--cleared'\"\n >\n <input\n type=\"checkbox\"\n #showClearedCheckbox\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"showCleared\"\n (click)=\"markSeveritiesAsTouched(); updateAlarmsCount(showClearedCheckbox.checked)\"\n />\n <span></span>\n <span\n class=\"text-truncate\"\n title=\"{{ 'Show cleared alarms' | translate }}\"\n >\n {{ 'Show cleared alarms' | translate }}\n </span>\n </label>\n </li>\n\n <div class=\"p-16 d-flex sticky-bottom separator-top\">\n <button\n [attr.data-cy]=\"'c8y-alarms-filter--apply'\"\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyFilters(false); closeDropdown()\"\n [disabled]=\"shouldDisableApplyButton$ | async\"\n >\n {{ 'Apply' | translate }}\n </button>\n </div>\n </ul>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i5.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i6.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i6.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i6.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: AlarmSeverityToIconPipe, name: "AlarmSeverityToIcon" }, { kind: "pipe", type: AlarmSeveritiesToTitlePipe, name: "AlarmSeveritiesToTitle" }] }); }
|
|
1349
1349
|
}
|
|
1350
1350
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AlarmsFilterComponent, decorators: [{
|
|
1351
1351
|
type: Component,
|
|
1352
|
-
args: [{ selector: 'c8y-alarms-filter', template: "<form\n class=\"d-flex a-i-center\"\n [formGroup]=\"formGroup\"\n>\n <div\n class=\"dropdown\"\n title=\"{{ 'Filter by severity' | translate }}\"\n dropdown\n #filtersDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"filtersDropdown.isOpen\"\n [insideClick]=\"true\"\n >\n <div class=\"input-group fit-w\">\n <div class=\"form-control d-flex a-i-center inner-scroll\" style=\"min-width: 104px;\">\n <ng-container *ngIf=\"chips.length !== severitiesList.length; else allAlarms\">\n <span\n class=\"tag tag--info chip\"\n *ngFor=\"let chip of chips\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"deselectChip(chip); $event.stopPropagation()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n <i\n class=\"status stroked-icon icon-12\"\n [c8yIcon]=\"chip | AlarmSeverityToIcon\"\n [ngClass]=\"chip | lowercase\"\n ></i>\n {{ SEVERITY_LABELS[chip] | translate }}\n </span>\n </ng-container>\n <ng-template #allAlarms>\n <span class=\"text-truncate\" title=\"{{ 'All severities' | translate }}\">\n {{ 'All severities' | translate }}\n </span>\n </ng-template>\n </div>\n <div class=\"input-group-btn input-group-btn--last\">\n <button\n class=\"btn-default btn btn--caret\"\n title=\"{{ chips | AlarmSeveritiesToTitle }}\"\n data-cy=\"c8y-alarm-filter\"\n dropdownToggle\n (click)=\"resetForm()\"\n >\n <i class=\"caret\"></i>\n </button>\n </div>\n </div>\n <ul\n class=\"dropdown-menu dropdown-menu-action-bar\"\n *dropdownMenu\n >\n <li class=\"p-l-16 p-r-16 p-t-4 p-b-4 d-flex a-i-center sticky-top separator-bottom\">\n <label\n class=\"c8y-checkbox d-flex a-i-center\"\n [title]=\"'All' | translate\"\n >\n <input\n type=\"checkbox\"\n data-cy=\"c8y-alarm-filter--all\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"allChanged($event)\"\n [ngModel]=\"isEachCheckboxSelected$ | async\"\n [indeterminate]=\"isIndeterminate$ | async\"\n (click)=\"markSeveritiesAsTouched()\"\n />\n <span></span>\n <i\n class=\"status stroked-icon m-l-8 icon-20\"\n [c8yIcon]=\"'bell'\"\n ></i>\n <span class=\"m-l-8\">{{ 'All' | translate }}</span>\n </label>\n </li>\n <li\n class=\"p-l-16 p-r-16 p-t-4 p-b-4 d-flex a-i-center\"\n *ngFor=\"let severity of severitiesList\"\n >\n <label\n class=\"c8y-checkbox d-flex a-i-center\"\n [title]=\"SEVERITY_LABELS[severity] | translate\"\n >\n <input\n type=\"checkbox\"\n [attr.data-cy]=\"'c8y-alarm-filter--' + severity\"\n [formControlName]=\"severity\"\n [value]=\"severity\"\n (click)=\"markSeveritiesAsTouched()\"\n />\n <span></span>\n <i\n class=\"status stroked-icon m-l-8 icon-20\"\n [c8yIcon]=\"severity | AlarmSeverityToIcon\"\n [ngClass]=\"severity | lowercase\"\n ></i>\n <span class=\"m-l-8\">{{ SEVERITY_LABELS[severity] | translate }}</span>\n </label>\n <!-- badge -->\n <div\n class=\"badge badge-info m-l-auto\"\n *ngIf=\"alarmCounts[severity] || alarmCounts[severity] === 0\"\n >\n <i\n class=\"icon-spin\"\n [c8yIcon]=\"'circle-o-notch'\"\n *ngIf=\"countLoading\"\n ></i>\n <span\n *ngIf=\"!countLoading\"\n [attr.data-cy]=\"severity + '-badge'\"\n >\n {{ alarmCounts[severity] < 99 ? alarmCounts[severity] : '99+' }}\n </span>\n </div>\n </li>\n <li class=\"p-l-16 p-r-16 p-t-4 p-b-4 d-flex a-i-center separator-top\">\n <label\n class=\"c8y-switch\"\n [attr.aria-label]=\"'Show cleared alarms' | translate\"\n [attr.data-cy]=\"'c8y-alarms-filter--cleared'\"\n >\n <input\n type=\"checkbox\"\n #showClearedCheckbox\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"showCleared\"\n (click)=\"markSeveritiesAsTouched(); updateAlarmsCount(showClearedCheckbox.checked)\"\n />\n <span></span>\n <span\n class=\"text-truncate\"\n title=\"{{ 'Show cleared alarms' | translate }}\"\n >\n {{ 'Show cleared alarms' | translate }}\n </span>\n </label>\n </li>\n\n <div class=\"p-16 d-flex sticky-bottom separator-top\">\n <button\n [attr.data-cy]=\"'c8y-alarms-filter--apply'\"\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyFilters(false); closeDropdown()\"\n [disabled]=\"shouldDisableApplyButton$ | async\"\n >\n {{ 'Apply' | translate }}\n </button>\n </div>\n </ul>\n </div>\n</form>\n" }]
|
|
1352
|
+
args: [{ selector: 'c8y-alarms-filter', template: "<form\n class=\"d-flex a-i-center\"\n [formGroup]=\"formGroup\"\n>\n <div\n class=\"dropdown\"\n title=\"{{ 'Filter by severity' | translate }}\"\n dropdown\n #filtersDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"filtersDropdown.isOpen\"\n [insideClick]=\"true\"\n >\n <div class=\"input-group fit-w\">\n <div class=\"form-control d-flex a-i-center inner-scroll\" style=\"min-width: 104px; padding-top: 0; padding-bottom: 0;\">\n <ng-container *ngIf=\"chips.length !== severitiesList.length; else allAlarms\">\n <span\n class=\"tag tag--info chip\"\n *ngFor=\"let chip of chips\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"deselectChip(chip); $event.stopPropagation()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n <i\n class=\"status stroked-icon icon-12\"\n [c8yIcon]=\"chip | AlarmSeverityToIcon\"\n [ngClass]=\"chip | lowercase\"\n ></i>\n {{ SEVERITY_LABELS[chip] | translate }}\n </span>\n </ng-container>\n <ng-template #allAlarms>\n <span class=\"text-truncate\" title=\"{{ 'All severities' | translate }}\">\n {{ 'All severities' | translate }}\n </span>\n </ng-template>\n </div>\n <div class=\"input-group-btn input-group-btn--last\">\n <button\n class=\"btn-default btn btn--caret\"\n title=\"{{ chips | AlarmSeveritiesToTitle }}\"\n data-cy=\"c8y-alarm-filter\"\n dropdownToggle\n (click)=\"resetForm()\"\n >\n <i class=\"caret\"></i>\n </button>\n </div>\n </div>\n <ul\n class=\"dropdown-menu dropdown-menu-action-bar\"\n *dropdownMenu\n >\n <li class=\"p-l-16 p-r-16 p-t-4 p-b-4 d-flex a-i-center sticky-top separator-bottom\">\n <label\n class=\"c8y-checkbox d-flex a-i-center\"\n [title]=\"'All' | translate\"\n >\n <input\n type=\"checkbox\"\n data-cy=\"c8y-alarm-filter--all\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"allChanged($event)\"\n [ngModel]=\"isEachCheckboxSelected$ | async\"\n [indeterminate]=\"isIndeterminate$ | async\"\n (click)=\"markSeveritiesAsTouched()\"\n />\n <span></span>\n <i\n class=\"status stroked-icon m-l-8 icon-20\"\n [c8yIcon]=\"'bell'\"\n ></i>\n <span class=\"m-l-8\">{{ 'All' | translate }}</span>\n </label>\n </li>\n <li\n class=\"p-l-16 p-r-16 p-t-4 p-b-4 d-flex a-i-center\"\n *ngFor=\"let severity of severitiesList\"\n >\n <label\n class=\"c8y-checkbox d-flex a-i-center\"\n [title]=\"SEVERITY_LABELS[severity] | translate\"\n >\n <input\n type=\"checkbox\"\n [attr.data-cy]=\"'c8y-alarm-filter--' + severity\"\n [formControlName]=\"severity\"\n [value]=\"severity\"\n (click)=\"markSeveritiesAsTouched()\"\n />\n <span></span>\n <i\n class=\"status stroked-icon m-l-8 icon-20\"\n [c8yIcon]=\"severity | AlarmSeverityToIcon\"\n [ngClass]=\"severity | lowercase\"\n ></i>\n <span class=\"m-l-8\">{{ SEVERITY_LABELS[severity] | translate }}</span>\n </label>\n <!-- badge -->\n <div\n class=\"badge badge-info m-l-auto\"\n *ngIf=\"alarmCounts[severity] || alarmCounts[severity] === 0\"\n >\n <i\n class=\"icon-spin\"\n [c8yIcon]=\"'circle-o-notch'\"\n *ngIf=\"countLoading\"\n ></i>\n <span\n *ngIf=\"!countLoading\"\n [attr.data-cy]=\"severity + '-badge'\"\n >\n {{ alarmCounts[severity] < 99 ? alarmCounts[severity] : '99+' }}\n </span>\n </div>\n </li>\n <li class=\"p-l-16 p-r-16 p-t-4 p-b-4 d-flex a-i-center separator-top\">\n <label\n class=\"c8y-switch\"\n [attr.aria-label]=\"'Show cleared alarms' | translate\"\n [attr.data-cy]=\"'c8y-alarms-filter--cleared'\"\n >\n <input\n type=\"checkbox\"\n #showClearedCheckbox\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"showCleared\"\n (click)=\"markSeveritiesAsTouched(); updateAlarmsCount(showClearedCheckbox.checked)\"\n />\n <span></span>\n <span\n class=\"text-truncate\"\n title=\"{{ 'Show cleared alarms' | translate }}\"\n >\n {{ 'Show cleared alarms' | translate }}\n </span>\n </label>\n </li>\n\n <div class=\"p-16 d-flex sticky-bottom separator-top\">\n <button\n [attr.data-cy]=\"'c8y-alarms-filter--apply'\"\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyFilters(false); closeDropdown()\"\n [disabled]=\"shouldDisableApplyButton$ | async\"\n >\n {{ 'Apply' | translate }}\n </button>\n </div>\n </ul>\n </div>\n</form>\n" }]
|
|
1353
1353
|
}], ctorParameters: () => [{ type: i1$2.FormBuilder }, { type: AlarmsViewService }, { type: i3.AlertService }, { type: i1$1.Router }, { type: i1$1.ActivatedRoute }], propDecorators: { contextSourceId: [{
|
|
1354
1354
|
type: Input
|
|
1355
1355
|
}], onFilterApplied: [{
|