@c8y/ngx-components 1021.11.1 → 1021.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/alarms/alarms-date-filter.component.d.ts +34 -0
- package/alarms/alarms-date-filter.component.d.ts.map +1 -0
- package/alarms/alarms-filter.component.d.ts +2 -1
- package/alarms/alarms-filter.component.d.ts.map +1 -1
- package/alarms/alarms-list.component.d.ts +2 -17
- package/alarms/alarms-list.component.d.ts.map +1 -1
- package/alarms/alarms-view.service.d.ts +5 -2
- package/alarms/alarms-view.service.d.ts.map +1 -1
- package/alarms/alarms.component.d.ts +3 -1
- package/alarms/alarms.component.d.ts.map +1 -1
- package/alarms/alarms.model.d.ts +47 -1
- package/alarms/alarms.model.d.ts.map +1 -1
- package/alarms/alarms.module.d.ts +15 -13
- package/alarms/alarms.module.d.ts.map +1 -1
- package/branding/shared/data/store-branding.service.d.ts +5 -0
- package/branding/shared/data/store-branding.service.d.ts.map +1 -1
- package/branding/shared/lazy/branding/branding.component.d.ts.map +1 -1
- package/context-dashboard/context-dashboard.model.d.ts +1 -0
- package/context-dashboard/context-dashboard.model.d.ts.map +1 -1
- package/context-dashboard/context-dashboard.service.d.ts +7 -5
- package/context-dashboard/context-dashboard.service.d.ts.map +1 -1
- package/context-dashboard/dashboard-detail.component.d.ts +4 -7
- package/context-dashboard/dashboard-detail.component.d.ts.map +1 -1
- package/context-dashboard/dashboard-detail.service.d.ts +4 -4
- package/context-dashboard/dashboard-detail.service.d.ts.map +1 -1
- package/context-dashboard/dashboard-settings/dashboard-general-settings.component.d.ts +2 -2
- package/context-dashboard/dashboard-settings/dashboard-general-settings.component.d.ts.map +1 -1
- package/context-dashboard/dashboard-settings/typed-dashboard-settings.component.d.ts +19 -6
- package/context-dashboard/dashboard-settings/typed-dashboard-settings.component.d.ts.map +1 -1
- package/core/action-bar/action-bar-item.component.d.ts +1 -1
- package/core/action-bar/action-bar-item.component.d.ts.map +1 -1
- package/core/action-bar/action-bar.module.d.ts +6 -6
- package/core/action-bar/action-bar.module.d.ts.map +1 -1
- package/core/bootstrap/bootstrap.component.d.ts +3 -1
- package/core/bootstrap/bootstrap.component.d.ts.map +1 -1
- package/core/common/aggregation/aggregation.model.d.ts +39 -0
- package/core/common/aggregation/aggregation.model.d.ts.map +1 -0
- package/core/common/aggregation/aggregation.service.d.ts +17 -0
- package/core/common/aggregation/aggregation.service.d.ts.map +1 -0
- package/core/common/index.d.ts +4 -0
- package/core/common/index.d.ts.map +1 -1
- package/core/common/inter-app.service.d.ts +48 -0
- package/core/common/inter-app.service.d.ts.map +1 -0
- package/core/common/interval-based-reload.abstract.d.ts +120 -0
- package/core/common/interval-based-reload.abstract.d.ts.map +1 -0
- package/core/dashboard/dashboard.module.d.ts +26 -20
- package/core/dashboard/dashboard.module.d.ts.map +1 -1
- package/core/dashboard/index.d.ts +3 -0
- package/core/dashboard/index.d.ts.map +1 -1
- package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts +31 -0
- package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.d.ts +17 -0
- package/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.d.ts +4 -0
- package/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/index.d.ts +8 -0
- package/core/dashboard/widget-auto-refresh-context/index.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.d.ts +7 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.d.ts +29 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.d.ts +15 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.d.ts +169 -0
- package/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.d.ts.map +1 -0
- package/core/dashboard/widget-change-event.model.d.ts +1 -1
- package/core/dashboard/widget-change-event.model.d.ts.map +1 -1
- package/core/dashboard/widgets-dashboard.component.d.ts +6 -3
- package/core/dashboard/widgets-dashboard.component.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.d.ts +2 -2
- package/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context-helper.service.d.ts +2 -1
- package/core/dashboard/wiget-time-context/widget-time-context-helper.service.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.d.ts +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context-query.service.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts +12 -8
- 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 +7 -26
- package/core/dashboard/wiget-time-context/widget-time-context.model.d.ts.map +1 -1
- package/core/date-time-picker/date-time-picker.component.d.ts.map +1 -1
- package/core/header/header.module.d.ts +18 -18
- package/core/header/header.module.d.ts.map +1 -1
- package/core/header/title/title.component.d.ts +1 -1
- package/core/header/title/title.component.d.ts.map +1 -1
- package/core/i18n/cached-locale-dictionary.service.d.ts +5 -1
- package/core/i18n/cached-locale-dictionary.service.d.ts.map +1 -1
- package/core/i18n/i18n.module.d.ts +0 -4
- package/core/i18n/i18n.module.d.ts.map +1 -1
- package/core/i18n/index.d.ts +2 -1
- package/core/i18n/index.d.ts.map +1 -1
- package/core/i18n/translation-loader.service.d.ts +50 -0
- package/core/i18n/translation-loader.service.d.ts.map +1 -0
- package/core/i18n/translation-utils.d.ts +14 -0
- package/core/i18n/translation-utils.d.ts.map +1 -0
- package/core/plugins/plugins-resolve.service.d.ts +7 -10
- package/core/plugins/plugins-resolve.service.d.ts.map +1 -1
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.d.ts +2 -1
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.d.ts.map +1 -1
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts +11 -2
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts.map +1 -1
- package/datapoint-selector/datapoint-selection.model.d.ts +6 -0
- package/datapoint-selector/datapoint-selection.model.d.ts.map +1 -1
- package/datapoints-export-selector/c8y-ngx-components-datapoints-export-selector.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts +117 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.d.ts +90 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.d.ts +160 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts +89 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-preview/datapoints-export-selector-preview.component.d.ts +11 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-preview/datapoints-export-selector-preview.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-data-scope/datapoints-exports-selector-data-scope.component.d.ts +27 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-data-scope/datapoints-exports-selector-data-scope.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-file-types/datapoints-exports-selector-file-types.component.d.ts +12 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-file-types/datapoints-exports-selector-file-types.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.d.ts +22 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.d.ts +3 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.d.ts +9 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.d.ts +56 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.d.ts +21 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector.component.d.ts +14 -0
- package/datapoints-export-selector/datapoints-export-selector.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector.model.d.ts +232 -0
- package/datapoints-export-selector/datapoints-export-selector.model.d.ts.map +1 -0
- package/datapoints-export-selector/index.d.ts +15 -0
- package/datapoints-export-selector/index.d.ts.map +1 -0
- package/device-list/device-list.module.d.ts +4 -2
- package/device-list/device-list.module.d.ts.map +1 -1
- package/esm2022/alarm-event-selector/alarm-event-selection-list/alarm-event-selection-list.component.mjs +4 -4
- package/esm2022/alarm-event-selector/alarm-event-selector-list-item/alarm-event-selector-list-item.component.mjs +3 -3
- package/esm2022/alarms/alarms-date-filter.component.mjs +139 -0
- package/esm2022/alarms/alarms-filter.component.mjs +11 -5
- package/esm2022/alarms/alarms-list.component.mjs +5 -16
- package/esm2022/alarms/alarms-type-filter.component.mjs +3 -3
- package/esm2022/alarms/alarms-view.service.mjs +16 -2
- package/esm2022/alarms/alarms.component.mjs +12 -6
- package/esm2022/alarms/alarms.model.mjs +17 -1
- package/esm2022/alarms/alarms.module.mjs +11 -4
- package/esm2022/branding/shared/data/store-branding.service.mjs +24 -1
- package/esm2022/branding/shared/lazy/branding/branding.component.mjs +3 -1
- package/esm2022/context-dashboard/context-dashboard.component.mjs +4 -4
- package/esm2022/context-dashboard/context-dashboard.model.mjs +1 -1
- package/esm2022/context-dashboard/context-dashboard.service.mjs +47 -21
- package/esm2022/context-dashboard/dashboard-detail.component.mjs +8 -16
- package/esm2022/context-dashboard/dashboard-detail.service.mjs +13 -6
- package/esm2022/context-dashboard/dashboard-settings/dashboard-general-settings.component.mjs +3 -3
- package/esm2022/context-dashboard/dashboard-settings/typed-dashboard-settings.component.mjs +32 -11
- package/esm2022/core/action-bar/action-bar-item.component.mjs +3 -3
- package/esm2022/core/action-bar/action-bar.component.mjs +3 -3
- package/esm2022/core/action-bar/action-bar.module.mjs +16 -5
- package/esm2022/core/bootstrap/bootstrap.component.mjs +21 -16
- package/esm2022/core/common/aggregation/aggregation.model.mjs +46 -0
- package/esm2022/core/common/aggregation/aggregation.service.mjs +34 -0
- package/esm2022/core/common/humanize-app-name.model.mjs +2 -2
- package/esm2022/core/common/humanize-app-name.pipe.mjs +2 -2
- package/esm2022/core/common/index.mjs +5 -1
- package/esm2022/core/common/inter-app.service.mjs +76 -0
- package/esm2022/core/common/interval-based-reload.abstract.mjs +110 -0
- package/esm2022/core/countdown-interval/countdown-interval.component.mjs +3 -3
- package/esm2022/core/dashboard/dashboard-child.component.mjs +6 -5
- package/esm2022/core/dashboard/dashboard.module.mjs +22 -4
- package/esm2022/core/dashboard/index.mjs +4 -1
- package/esm2022/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.mjs +101 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.mjs +50 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.mjs +7 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/index.mjs +8 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.mjs +18 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.mjs +127 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.mjs +5 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.mjs +233 -0
- package/esm2022/core/dashboard/widget-change-event.model.mjs +1 -1
- package/esm2022/core/dashboard/widgets-dashboard.component.mjs +35 -30
- package/esm2022/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.mjs +4 -4
- package/esm2022/core/dashboard/wiget-time-context/realtime-control/realtime-control.component.mjs +2 -2
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context-helper.service.mjs +3 -2
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.mjs +5 -5
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context-query.service.mjs +7 -4
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context.component.mjs +37 -36
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context.model.mjs +1 -72
- package/esm2022/core/date-time-picker/date-time-picker.component.mjs +9 -3
- package/esm2022/core/header/header.module.mjs +7 -5
- package/esm2022/core/header/title/title.component.mjs +3 -3
- package/esm2022/core/i18n/cached-locale-dictionary.service.mjs +1 -1
- package/esm2022/core/i18n/i18n.module.mjs +7 -14
- package/esm2022/core/i18n/index.mjs +3 -2
- package/esm2022/core/i18n/translate.parser.mjs +2 -2
- package/esm2022/core/i18n/translation-loader.service.mjs +132 -0
- package/esm2022/core/i18n/translation-utils.mjs +24 -0
- package/esm2022/core/list-display-switch/list-display-switch.component.mjs +3 -3
- package/esm2022/core/plugins/plugins-resolve.service.mjs +12 -37
- package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.mjs +13 -6
- package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.mjs +22 -5
- package/esm2022/datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.mjs +3 -3
- package/esm2022/datapoint-selector/datapoint-selection.model.mjs +1 -1
- package/esm2022/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.mjs +3 -3
- package/esm2022/datapoints-export-selector/c8y-ngx-components-datapoints-export-selector.mjs +5 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.mjs +407 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.mjs +207 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.mjs +467 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.mjs +187 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-preview/datapoints-export-selector-preview.component.mjs +27 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-data-scope/datapoints-exports-selector-data-scope.component.mjs +41 -0
- 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 +23 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.mjs +42 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.mjs +120 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.mjs +282 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.mjs +76 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.mjs +46 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector.component.mjs +42 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector.model.mjs +43 -0
- package/esm2022/datapoints-export-selector/index.mjs +15 -0
- package/esm2022/device-list/add-smart-group.component.mjs +4 -3
- package/esm2022/device-list/device-list.module.mjs +22 -4
- package/esm2022/interval-picker/c8y-ngx-components-interval-picker.mjs +5 -0
- package/esm2022/interval-picker/index.mjs +3 -0
- package/esm2022/interval-picker/interval-picker.component.mjs +68 -0
- package/esm2022/interval-picker/interval-picker.model.mjs +47 -0
- package/esm2022/map/cluster-map.component.mjs +41 -13
- package/esm2022/map/map-status.component.mjs +6 -5
- package/esm2022/map/map.component.mjs +9 -5
- package/esm2022/map/map.model.mjs +1 -1
- package/esm2022/translation-editor/c8y-ngx-components-translation-editor.mjs +5 -0
- package/esm2022/translation-editor/data/c8y-ngx-components-translation-editor-data.mjs +5 -0
- package/esm2022/translation-editor/data/index.mjs +2 -0
- package/esm2022/translation-editor/data/translation-store.service.mjs +175 -0
- package/esm2022/translation-editor/index.mjs +10 -0
- package/esm2022/translation-editor/lazy/add-translation-modal/add-translation-modal.component.mjs +70 -0
- package/esm2022/translation-editor/lazy/c8y-ngx-components-translation-editor-lazy.mjs +5 -0
- package/esm2022/translation-editor/lazy/index.mjs +2 -0
- package/esm2022/translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.mjs +53 -0
- package/esm2022/translation-editor/lazy/translation-editor/translation-editor.component.mjs +124 -0
- package/esm2022/translation-editor/translation-editor-naviagtor-factory.service.mjs +31 -0
- package/esm2022/widgets/cockpit/index.mjs +4 -2
- package/esm2022/widgets/cockpit-exports/index.mjs +8 -1
- package/esm2022/widgets/definitions/alarms/alarm-list/index.mjs +6 -2
- package/esm2022/widgets/definitions/alarms/all-critical-alarms/index.mjs +6 -2
- package/esm2022/widgets/definitions/alarms/recent-alarms/index.mjs +6 -2
- package/esm2022/widgets/definitions/datapoints-table/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +5 -0
- package/esm2022/widgets/definitions/datapoints-table/index.mjs +34 -0
- package/esm2022/widgets/definitions/index.mjs +2 -1
- package/esm2022/widgets/definitions/map/index.mjs +4 -2
- package/esm2022/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.mjs +29 -15
- package/esm2022/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.mjs +57 -25
- package/esm2022/widgets/implementations/alarms/alarm-list-widget.model.mjs +2 -1
- package/esm2022/widgets/implementations/alarms/alarm-widget-alarms-reload.component.mjs +19 -21
- package/esm2022/widgets/implementations/datapoints-table/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +5 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.mjs +383 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.mjs +124 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/adjust-aggregated-time-range.pipe.mjs +191 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/apply-range-class.pipe.mjs +36 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/column-title.pipe.mjs +45 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.mjs +116 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.mjs +116 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/dynamic-column.directive.mjs +43 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.mjs +282 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.mjs +430 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/virtual-scroll-listener.directive.mjs +75 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-widget.model.mjs +76 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table.service.mjs +52 -0
- package/esm2022/widgets/implementations/datapoints-table/date-range-picker.component.mjs +68 -0
- package/esm2022/widgets/implementations/datapoints-table/index.mjs +10 -0
- package/esm2022/widgets/implementations/map/map-widget-config.component.mjs +19 -11
- package/esm2022/widgets/implementations/map/map-widget.component.mjs +20 -2
- package/esm2022/widgets/implementations/map/map-widget.model.mjs +1 -1
- package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +5 -5
- package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarms.mjs +189 -31
- package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +23 -0
- package/fesm2022/c8y-ngx-components-branding-shared-data.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +2 -0
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs +135 -91
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +37 -13
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +1928 -0
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-device-list.mjs +24 -5
- package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-interval-picker.mjs +120 -0
- package/fesm2022/c8y-ngx-components-interval-picker.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-map.mjs +52 -19
- package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +181 -0
- package/fesm2022/c8y-ngx-components-translation-editor-data.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +236 -0
- package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-translation-editor.mjs +46 -0
- package/fesm2022/c8y-ngx-components-translation-editor.mjs.map +1 -0
- 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-cockpit.mjs +3 -1
- package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs +5 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs +5 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs +5 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +41 -0
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs +3 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions.mjs +1 -0
- package/fesm2022/c8y-ngx-components-widgets-definitions.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +101 -58
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +1967 -0
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +37 -11
- package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +5093 -4369
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/interval-picker/c8y-ngx-components-interval-picker.d.ts.map +1 -0
- package/interval-picker/index.d.ts +3 -0
- package/interval-picker/index.d.ts.map +1 -0
- package/{core/dashboard/wiget-time-context/interval-picker → interval-picker}/interval-picker.component.d.ts +10 -2
- package/interval-picker/interval-picker.component.d.ts.map +1 -0
- package/interval-picker/interval-picker.model.d.ts +15 -0
- package/interval-picker/interval-picker.model.d.ts.map +1 -0
- package/locales/de.po +289 -18
- package/locales/en.po +12 -0
- package/locales/en_US.po +3 -0
- package/locales/es.po +253 -18
- package/locales/fr.po +253 -18
- package/locales/ja_JP.po +282 -18
- package/locales/locales.pot +266 -21
- package/locales/nl.po +253 -18
- package/locales/pl.po +253 -18
- package/locales/pt_BR.po +253 -18
- package/map/cluster-map.component.d.ts +8 -3
- package/map/cluster-map.component.d.ts.map +1 -1
- package/map/map-status.component.d.ts +0 -3
- package/map/map-status.component.d.ts.map +1 -1
- package/map/map.component.d.ts +4 -2
- package/map/map.component.d.ts.map +1 -1
- package/map/map.model.d.ts +2 -1
- package/map/map.model.d.ts.map +1 -1
- package/package.json +1 -1
- package/translation-editor/c8y-ngx-components-translation-editor.d.ts.map +1 -0
- package/translation-editor/data/c8y-ngx-components-translation-editor-data.d.ts.map +1 -0
- package/translation-editor/data/index.d.ts +2 -0
- package/translation-editor/data/index.d.ts.map +1 -0
- package/translation-editor/data/translation-store.service.d.ts +61 -0
- package/translation-editor/data/translation-store.service.d.ts.map +1 -0
- package/translation-editor/index.d.ts +2 -0
- package/translation-editor/index.d.ts.map +1 -0
- package/translation-editor/lazy/add-translation-modal/add-translation-modal.component.d.ts +30 -0
- package/translation-editor/lazy/add-translation-modal/add-translation-modal.component.d.ts.map +1 -0
- package/translation-editor/lazy/c8y-ngx-components-translation-editor-lazy.d.ts.map +1 -0
- package/translation-editor/lazy/index.d.ts +2 -0
- package/translation-editor/lazy/index.d.ts.map +1 -0
- package/translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.d.ts +22 -0
- package/translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.d.ts.map +1 -0
- package/translation-editor/lazy/translation-editor/translation-editor.component.d.ts +34 -0
- package/translation-editor/lazy/translation-editor/translation-editor.component.d.ts.map +1 -0
- package/translation-editor/translation-editor-naviagtor-factory.service.d.ts +11 -0
- package/translation-editor/translation-editor-naviagtor-factory.service.d.ts.map +1 -0
- package/widgets/cockpit/index.d.ts +13 -0
- package/widgets/cockpit/index.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/alarms/alarm-list/index.d.ts +2 -0
- package/widgets/definitions/alarms/alarm-list/index.d.ts.map +1 -1
- package/widgets/definitions/alarms/all-critical-alarms/index.d.ts +2 -0
- package/widgets/definitions/alarms/all-critical-alarms/index.d.ts.map +1 -1
- package/widgets/definitions/alarms/recent-alarms/index.d.ts +2 -0
- package/widgets/definitions/alarms/recent-alarms/index.d.ts.map +1 -1
- package/widgets/definitions/datapoints-table/c8y-ngx-components-widgets-definitions-datapoints-table.d.ts.map +1 -0
- package/widgets/definitions/datapoints-table/index.d.ts +14 -0
- package/widgets/definitions/datapoints-table/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/definitions/map/index.d.ts +2 -1
- package/widgets/definitions/map/index.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts +5 -9
- package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts +17 -10
- package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-list-widget.model.d.ts +5 -1
- package/widgets/implementations/alarms/alarm-list-widget.model.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts +5 -11
- package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts.map +1 -1
- package/widgets/implementations/datapoints-table/c8y-ngx-components-widgets-implementations-datapoints-table.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts +129 -0
- package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.d.ts +56 -0
- package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/adjust-aggregated-time-range.pipe.d.ts +88 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/adjust-aggregated-time-range.pipe.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/apply-range-class.pipe.d.ts +19 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/apply-range-class.pipe.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/column-title.pipe.d.ts +26 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/column-title.pipe.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts +63 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.d.ts +38 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/dynamic-column.directive.d.ts +13 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/dynamic-column.directive.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts +123 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.d.ts +196 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/virtual-scroll-listener.directive.d.ts +41 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/virtual-scroll-listener.directive.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts +175 -0
- package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table.service.d.ts +12 -0
- package/widgets/implementations/datapoints-table/datapoints-table.service.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/date-range-picker.component.d.ts +34 -0
- package/widgets/implementations/datapoints-table/date-range-picker.component.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/index.d.ts +10 -0
- package/widgets/implementations/datapoints-table/index.d.ts.map +1 -0
- package/widgets/implementations/map/map-widget-config.component.d.ts +4 -4
- package/widgets/implementations/map/map-widget-config.component.d.ts.map +1 -1
- package/widgets/implementations/map/map-widget.component.d.ts +8 -3
- package/widgets/implementations/map/map-widget.component.d.ts.map +1 -1
- package/widgets/implementations/map/map-widget.model.d.ts +4 -3
- package/widgets/implementations/map/map-widget.model.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/interval-picker/interval-picker.component.d.ts.map +0 -1
- package/core/i18n/translate.loader.d.ts +0 -31
- package/core/i18n/translate.loader.d.ts.map +0 -1
- package/esm2022/core/dashboard/wiget-time-context/interval-picker/interval-picker.component.mjs +0 -55
- package/esm2022/core/i18n/translate.loader.mjs +0 -71
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import JSZip from 'jszip';
|
|
3
|
+
import { FILE_COMPRESSION_TYPES_VALUES, MEASUREMENTS_PREVIEW_ITEMS_LIMIT, SERIES_DATA_MERGED_FILE_NAME } from '../../datapoints-export-selector.model';
|
|
4
|
+
import { FILE_GENERATORS } from './datapoints-export-selector-file-exporter.component';
|
|
5
|
+
import { UtilsService } from './utils.service';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "./utils.service";
|
|
8
|
+
export class DataProcessingService {
|
|
9
|
+
constructor(fileGenerators, utils) {
|
|
10
|
+
this.fileGenerators = fileGenerators;
|
|
11
|
+
this.utils = utils;
|
|
12
|
+
this.mergeMapping = {};
|
|
13
|
+
this.setGenerators(this.fileGenerators);
|
|
14
|
+
this.fileTypesConfigs = this.fileGenerators.reduce((acc, g) => {
|
|
15
|
+
acc[g.getType()] = {
|
|
16
|
+
extension: g.getFileExtension(),
|
|
17
|
+
mimeType: g.getMimeType(),
|
|
18
|
+
acceptType: g.getAcceptType()
|
|
19
|
+
};
|
|
20
|
+
return acc;
|
|
21
|
+
}, {});
|
|
22
|
+
}
|
|
23
|
+
setGenerators(fileGenerators) {
|
|
24
|
+
fileGenerators.forEach(g => {
|
|
25
|
+
this.mergeMapping[g.getType()] = g.generateMerged;
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Transforms the data into a structured format for an export.
|
|
30
|
+
*
|
|
31
|
+
* @param dataToExport - An array of processed measurement data combined with the respective properties of the datapoint.
|
|
32
|
+
* @returns Provides a two-dimensional array of ExportData,
|
|
33
|
+
* where each inner array contains ExportData entries representing the transformed measurements and metadata of each datapoint.
|
|
34
|
+
*/
|
|
35
|
+
transformToExportFileStructure(dataToExport) {
|
|
36
|
+
const exportData = [];
|
|
37
|
+
for (const data of dataToExport) {
|
|
38
|
+
const rowsData = this.processDataToExport(data);
|
|
39
|
+
exportData.push(rowsData);
|
|
40
|
+
}
|
|
41
|
+
return exportData;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Transforms the input datapoints with values into a structured format for a preview.
|
|
45
|
+
*
|
|
46
|
+
* @param dataToExport - An array of processed measurement data combined with the respective properties of the datapoint.
|
|
47
|
+
* @returns Provides an array of up to 5 ExportData elements (no more is needed for a preview) or an empty array,
|
|
48
|
+
*/
|
|
49
|
+
transformToExportFileStructureForPreview(dataToExport) {
|
|
50
|
+
const data = dataToExport.find(data => {
|
|
51
|
+
return data !== null && data.timeValueMap && data.unit;
|
|
52
|
+
});
|
|
53
|
+
if (!data) {
|
|
54
|
+
return [];
|
|
55
|
+
}
|
|
56
|
+
const exportData = this.processDataToExport(data);
|
|
57
|
+
return exportData.slice(0, MEASUREMENTS_PREVIEW_ITEMS_LIMIT);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Processes a single dataToExport and transforms it into an array of ExportData.
|
|
61
|
+
*
|
|
62
|
+
* Used further for creating series data based export and also for measurements and series data based preview.
|
|
63
|
+
* Series data provides min and max values for each timestamp.
|
|
64
|
+
*
|
|
65
|
+
* @param dataToExport - A processed measurement or series data combined with the respective properties of the datapoint to be precessed
|
|
66
|
+
* @returns An array of ExportData representing the processed datapoint,
|
|
67
|
+
* that can be used as a row data in the exported files or for preview.
|
|
68
|
+
*/
|
|
69
|
+
processDataToExport(dataToExport) {
|
|
70
|
+
const rowsData = [];
|
|
71
|
+
// When measurements or series data is not available, add an empty header row with only device_name, source and fragment_series.
|
|
72
|
+
// This data is needed later to be used to create the file name and merged file header string.
|
|
73
|
+
const responseDoesNotContainData = !dataToExport.timeValueMap?.size && !dataToExport.unit;
|
|
74
|
+
if (responseDoesNotContainData) {
|
|
75
|
+
rowsData.push({
|
|
76
|
+
time: null,
|
|
77
|
+
source: dataToExport.source,
|
|
78
|
+
device_name: dataToExport.deviceName,
|
|
79
|
+
fragment_series: `${dataToExport.valueFragmentType}.${dataToExport.valueFragmentSeries}`,
|
|
80
|
+
value: null,
|
|
81
|
+
value_min: null,
|
|
82
|
+
value_max: null,
|
|
83
|
+
unit: null
|
|
84
|
+
});
|
|
85
|
+
return rowsData;
|
|
86
|
+
}
|
|
87
|
+
for (const [time, value] of Object.entries(dataToExport.timeValueMap)) {
|
|
88
|
+
// Measurements data contains only one value as a number, series data contains object with min and max values.
|
|
89
|
+
const isMeasurementData = typeof value === 'number';
|
|
90
|
+
if (isMeasurementData) {
|
|
91
|
+
rowsData.push(this.createExportData(dataToExport, time, isMeasurementData, value));
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
rowsData.push(this.createExportData(dataToExport, time, isMeasurementData, value.min, value.max));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return rowsData;
|
|
98
|
+
}
|
|
99
|
+
createExportData(dataToExport, time, isMeasurement, value, valueMax) {
|
|
100
|
+
const commonExportData = {
|
|
101
|
+
time: new Date(time).toISOString(),
|
|
102
|
+
source: dataToExport.source,
|
|
103
|
+
device_name: dataToExport.deviceName,
|
|
104
|
+
fragment_series: `${dataToExport.valueFragmentType}.${dataToExport.valueFragmentSeries}`,
|
|
105
|
+
unit: dataToExport.unit
|
|
106
|
+
};
|
|
107
|
+
return isMeasurement
|
|
108
|
+
? { ...commonExportData, value }
|
|
109
|
+
: { ...commonExportData, value_min: value, value_max: valueMax };
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Exports the given data to merged CSV or Excel files.
|
|
113
|
+
*
|
|
114
|
+
* @param exportData - An array containing ExportData objects that will be used as parts of the merged file.
|
|
115
|
+
* @param fileType - Indicates the type of the file to be exported.
|
|
116
|
+
* @param mergedExportDetails - An object containing the date range from which the export was created and aggregation type.
|
|
117
|
+
* @returns An objects containing file name and its respective content as Blob.
|
|
118
|
+
*
|
|
119
|
+
* Example of exported merged file structure:
|
|
120
|
+
* date from date to
|
|
121
|
+
* 2024-04-15T12:14:00.000Z 2024-07-16T14:14:28+02:00
|
|
122
|
+
* time G6Fit -> c8y_Acceleration.accelerationX [G] G6Fit -> c8y_Acceleration.accelerationY [G]
|
|
123
|
+
* 2024-05-13T13:45:10.500+02:00 0.0109026359624273 0.789461628278069
|
|
124
|
+
*
|
|
125
|
+
* Example of exported file name format:
|
|
126
|
+
* 04dec231240-06dec232350.xlsx
|
|
127
|
+
*/
|
|
128
|
+
async exportSeriesDataToMergedFiles(exportData, fileType, mergedExportDetails) {
|
|
129
|
+
const fileTypeConfig = this.fileTypesConfigs[fileType];
|
|
130
|
+
mergedExportDetails.dateFrom = new Date(mergedExportDetails.dateFrom).toISOString();
|
|
131
|
+
mergedExportDetails.dateTo = new Date(mergedExportDetails.dateTo).toISOString();
|
|
132
|
+
const mergedFileContent = this.mergeMapping[fileType](exportData, mergedExportDetails);
|
|
133
|
+
const mergedFileNameDateRange = this.utils.getFormattedDateRange(mergedExportDetails.dateFrom, mergedExportDetails.dateTo);
|
|
134
|
+
return {
|
|
135
|
+
fileName: `${mergedFileNameDateRange}.${fileTypeConfig.extension}`,
|
|
136
|
+
fileData: new Blob([await mergedFileContent], { type: fileTypeConfig.mimeType })
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Zips all created files.
|
|
141
|
+
*
|
|
142
|
+
* @param files - An array of objects containing file names and their respective content as Blobs.
|
|
143
|
+
* @returns A Promise that resolves to a Blob representing the generated zip file.
|
|
144
|
+
*/
|
|
145
|
+
async zipFiles(files) {
|
|
146
|
+
const zip = new JSZip();
|
|
147
|
+
files.forEach(file => {
|
|
148
|
+
zip.file(file.fileName, file.fileData);
|
|
149
|
+
});
|
|
150
|
+
return await this.generateZipBlob(zip, FILE_COMPRESSION_TYPES_VALUES.deflate, 9);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Exports the given data to CSV or Excel files.
|
|
154
|
+
*
|
|
155
|
+
* @param params - An object containing all the necessary parameters for the export and zip process.
|
|
156
|
+
* @returns A Promise that resolves to a Blob representing the exported file.
|
|
157
|
+
*/
|
|
158
|
+
async exportSeriesData(params) {
|
|
159
|
+
const { flattenedAndSortedExportData, fileType, mergedExportDetails } = params;
|
|
160
|
+
const exportedMergedFile = await this.exportSeriesDataToMergedFiles(flattenedAndSortedExportData, fileType, mergedExportDetails);
|
|
161
|
+
const blob = new Blob([exportedMergedFile.fileData], { type: fileType });
|
|
162
|
+
Object.defineProperty(blob, SERIES_DATA_MERGED_FILE_NAME, {
|
|
163
|
+
value: exportedMergedFile.fileName,
|
|
164
|
+
writable: false,
|
|
165
|
+
enumerable: false,
|
|
166
|
+
configurable: true
|
|
167
|
+
});
|
|
168
|
+
return blob;
|
|
169
|
+
}
|
|
170
|
+
createFileName(source, fragmentSeries, fileExtension) {
|
|
171
|
+
return `${source}_${fragmentSeries}.${fileExtension}`;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Generates a zip blob using the provided zip object.
|
|
175
|
+
*
|
|
176
|
+
* @param zip - The zip object used for generating the blob.
|
|
177
|
+
* @param compressionType - The compression type for the zip file. 'STORE' is no compression, 'DEFLATE' is compression.
|
|
178
|
+
* @param compressionLevel - The compression level for the zip file.
|
|
179
|
+
* Level 1 is quickest, 9 is best compressed.
|
|
180
|
+
* @returns A Promise that resolves to a Blob containing the generated zip file.
|
|
181
|
+
*/
|
|
182
|
+
async generateZipBlob(zip, compressionType = FILE_COMPRESSION_TYPES_VALUES.store, compressionLevel = 1) {
|
|
183
|
+
const blob = 'blob';
|
|
184
|
+
if (compressionType === FILE_COMPRESSION_TYPES_VALUES.store) {
|
|
185
|
+
return await zip.generateAsync({ type: blob });
|
|
186
|
+
}
|
|
187
|
+
return await zip.generateAsync({
|
|
188
|
+
type: blob,
|
|
189
|
+
compression: compressionType,
|
|
190
|
+
compressionOptions: {
|
|
191
|
+
level: compressionLevel
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DataProcessingService, deps: [{ token: FILE_GENERATORS }, { token: i1.UtilsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
196
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DataProcessingService, providedIn: 'root' }); }
|
|
197
|
+
}
|
|
198
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DataProcessingService, decorators: [{
|
|
199
|
+
type: Injectable,
|
|
200
|
+
args: [{
|
|
201
|
+
providedIn: 'root'
|
|
202
|
+
}]
|
|
203
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
204
|
+
type: Inject,
|
|
205
|
+
args: [FILE_GENERATORS]
|
|
206
|
+
}] }, { type: i1.UtilsService }] });
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1wcm9jZXNzaW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci1tb2RhbC9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci1maWxlLWV4cG9ydGVyL2RhdGEtcHJvY2Vzc2luZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBSUwsNkJBQTZCLEVBRzdCLGdDQUFnQyxFQUVoQyw0QkFBNEIsRUFFN0IsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFLL0MsTUFBTSxPQUFPLHFCQUFxQjtJQVVoQyxZQUNtQyxjQUErQixFQUN4RCxLQUFtQjtRQURNLG1CQUFjLEdBQWQsY0FBYyxDQUFpQjtRQUN4RCxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBWDdCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBYWhCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRXhDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM1RCxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUc7Z0JBQ2pCLFNBQVMsRUFBRSxDQUFDLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQy9CLFFBQVEsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFO2dCQUN6QixVQUFVLEVBQUUsQ0FB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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgSlNaaXAgZnJvbSAnanN6aXAnO1xuaW1wb3J0IHtcbiAgRGF0YVRvRXhwb3J0LFxuICBFeHBvcnREYXRhLFxuICBFeHBvcnRlZEZpbGUsXG4gIEZJTEVfQ09NUFJFU1NJT05fVFlQRVNfVkFMVUVTLFxuICBGaWxlQ29tcHJlc3Npb25UeXBlcyxcbiAgRmlsZUdlbmVyYXRvcixcbiAgTUVBU1VSRU1FTlRTX1BSRVZJRVdfSVRFTVNfTElNSVQsXG4gIE1lcmdlZEV4cG9ydERldGFpbHMsXG4gIFNFUklFU19EQVRBX01FUkdFRF9GSUxFX05BTUUsXG4gIFNlcmllc0V4cG9ydFBhcmFtc1xufSBmcm9tICcuLi8uLi9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci5tb2RlbCc7XG5pbXBvcnQgeyBGSUxFX0dFTkVSQVRPUlMgfSBmcm9tICcuL2RhdGFwb2ludHMtZXhwb3J0LXNlbGVjdG9yLWZpbGUtZXhwb3J0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFV0aWxzU2VydmljZSB9IGZyb20gJy4vdXRpbHMuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIERhdGFQcm9jZXNzaW5nU2VydmljZSB7XG4gIG1lcmdlTWFwcGluZyA9IHt9O1xuICBmaWxlVHlwZXNDb25maWdzOiB7XG4gICAgW2tleTogc3RyaW5nXToge1xuICAgICAgZXh0ZW5zaW9uOiBzdHJpbmc7XG4gICAgICBtaW1lVHlwZTogc3RyaW5nO1xuICAgICAgYWNjZXB0VHlwZTogc3RyaW5nO1xuICAgIH07XG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChGSUxFX0dFTkVSQVRPUlMpIHByaXZhdGUgZmlsZUdlbmVyYXRvcnM6IEZpbGVHZW5lcmF0b3JbXSxcbiAgICBwcml2YXRlIHV0aWxzOiBVdGlsc1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5zZXRHZW5lcmF0b3JzKHRoaXMuZmlsZUdlbmVyYXRvcnMpO1xuXG4gICAgdGhpcy5maWxlVHlwZXNDb25maWdzID0gdGhpcy5maWxlR2VuZXJhdG9ycy5yZWR1Y2UoKGFjYywgZykgPT4ge1xuICAgICAgYWNjW2cuZ2V0VHlwZSgpXSA9IHtcbiAgICAgICAgZXh0ZW5zaW9uOiBnLmdldEZpbGVFeHRlbnNpb24oKSxcbiAgICAgICAgbWltZVR5cGU6IGcuZ2V0TWltZVR5cGUoKSxcbiAgICAgICAgYWNjZXB0VHlwZTogZy5nZXRBY2NlcHRUeXBlKClcbiAgICAgIH07XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcbiAgfVxuXG4gIHNldEdlbmVyYXRvcnMoZmlsZUdlbmVyYXRvcnM6IEZpbGVHZW5lcmF0b3JbXSkge1xuICAgIGZpbGVHZW5lcmF0b3JzLmZvckVhY2goZyA9PiB7XG4gICAgICB0aGlzLm1lcmdlTWFwcGluZ1tnLmdldFR5cGUoKV0gPSBnLmdlbmVyYXRlTWVyZ2VkO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgdGhlIGRhdGEgaW50byBhIHN0cnVjdHVyZWQgZm9ybWF0IGZvciBhbiBleHBvcnQuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhVG9FeHBvcnQgLSBBbiBhcnJheSBvZiBwcm9jZXNzZWQgbWVhc3VyZW1lbnQgZGF0YSBjb21iaW5lZCB3aXRoIHRoZSByZXNwZWN0aXZlIHByb3BlcnRpZXMgb2YgdGhlIGRhdGFwb2ludC5cbiAgICogQHJldHVybnMgUHJvdmlkZXMgYSB0d28tZGltZW5zaW9uYWwgYXJyYXkgb2YgRXhwb3J0RGF0YSxcbiAgICogICAgICAgICAgd2hlcmUgZWFjaCBpbm5lciBhcnJheSBjb250YWlucyBFeHBvcnREYXRhIGVudHJpZXMgcmVwcmVzZW50aW5nIHRoZSB0cmFuc2Zvcm1lZCBtZWFzdXJlbWVudHMgYW5kIG1ldGFkYXRhIG9mIGVhY2ggZGF0YXBvaW50LlxuICAgKi9cbiAgdHJhbnNmb3JtVG9FeHBvcnRGaWxlU3RydWN0dXJlKGRhdGFUb0V4cG9ydDogRGF0YVRvRXhwb3J0W10pOiBFeHBvcnREYXRhW11bXSB7XG4gICAgY29uc3QgZXhwb3J0RGF0YTogRXhwb3J0RGF0YVtdW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgZGF0YSBvZiBkYXRhVG9FeHBvcnQpIHtcbiAgICAgIGNvbnN0IHJvd3NEYXRhOiBFeHBvcnREYXRhW10gPSB0aGlzLnByb2Nlc3NEYXRhVG9FeHBvcnQoZGF0YSk7XG4gICAgICBleHBvcnREYXRhLnB1c2gocm93c0RhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gZXhwb3J0RGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm1zIHRoZSBpbnB1dCBkYXRhcG9pbnRzIHdpdGggdmFsdWVzIGludG8gYSBzdHJ1Y3R1cmVkIGZvcm1hdCBmb3IgYSBwcmV2aWV3LlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YVRvRXhwb3J0IC0gQW4gYXJyYXkgb2YgcHJvY2Vzc2VkIG1lYXN1cmVtZW50IGRhdGEgY29tYmluZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSBwcm9wZXJ0aWVzIG9mIHRoZSBkYXRhcG9pbnQuXG4gICAqIEByZXR1cm5zIFByb3ZpZGVzIGFuIGFycmF5IG9mIHVwIHRvIDUgRXhwb3J0RGF0YSBlbGVtZW50cyAobm8gbW9yZSBpcyBuZWVkZWQgZm9yIGEgcHJldmlldykgb3IgYW4gZW1wdHkgYXJyYXksXG4gICAqL1xuICB0cmFuc2Zvcm1Ub0V4cG9ydEZpbGVTdHJ1Y3R1cmVGb3JQcmV2aWV3KGRhdGFUb0V4cG9ydDogRGF0YVRvRXhwb3J0W10pOiBFeHBvcnREYXRhW10ge1xuICAgIGNvbnN0IGRhdGEgPSBkYXRhVG9FeHBvcnQuZmluZChkYXRhID0+IHtcbiAgICAgIHJldHVybiBkYXRhICE9PSBudWxsICYmIGRhdGEudGltZVZhbHVlTWFwICYmIGRhdGEudW5pdDtcbiAgICB9KTtcblxuICAgIGlmICghZGF0YSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGV4cG9ydERhdGEgPSB0aGlzLnByb2Nlc3NEYXRhVG9FeHBvcnQoZGF0YSk7XG5cbiAgICByZXR1cm4gZXhwb3J0RGF0YS5zbGljZSgwLCBNRUFTVVJFTUVOVFNfUFJFVklFV19JVEVNU19MSU1JVCk7XG4gIH1cblxuICAvKipcbiAgICogUHJvY2Vzc2VzIGEgc2luZ2xlIGRhdGFUb0V4cG9ydCBhbmQgdHJhbnNmb3JtcyBpdCBpbnRvIGFuIGFycmF5IG9mIEV4cG9ydERhdGEuXG4gICAqXG4gICAqIFVzZWQgZnVydGhlciBmb3IgY3JlYXRpbmcgc2VyaWVzIGRhdGEgYmFzZWQgZXhwb3J0IGFuZCBhbHNvIGZvciBtZWFzdXJlbWVudHMgYW5kIHNlcmllcyBkYXRhIGJhc2VkIHByZXZpZXcuXG4gICAqIFNlcmllcyBkYXRhIHByb3ZpZGVzIG1pbiBhbmQgbWF4IHZhbHVlcyBmb3IgZWFjaCB0aW1lc3RhbXAuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhVG9FeHBvcnQgLSBBIHByb2Nlc3NlZCBtZWFzdXJlbWVudCBvciBzZXJpZXMgZGF0YSBjb21iaW5lZCB3aXRoIHRoZSByZXNwZWN0aXZlIHByb3BlcnRpZXMgb2YgdGhlIGRhdGFwb2ludCB0byBiZSBwcmVjZXNzZWRcbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgRXhwb3J0RGF0YSByZXByZXNlbnRpbmcgdGhlIHByb2Nlc3NlZCBkYXRhcG9pbnQsXG4gICAqICAgICAgICAgIHRoYXQgY2FuIGJlIHVzZWQgYXMgYSByb3cgZGF0YSBpbiB0aGUgZXhwb3J0ZWQgZmlsZXMgb3IgZm9yIHByZXZpZXcuXG4gICAqL1xuICBwcm9jZXNzRGF0YVRvRXhwb3J0KGRhdGFUb0V4cG9ydDogRGF0YVRvRXhwb3J0KTogRXhwb3J0RGF0YVtdIHtcbiAgICBjb25zdCByb3dzRGF0YTogRXhwb3J0RGF0YVtdID0gW107XG5cbiAgICAvLyBXaGVuIG1lYXN1cmVtZW50cyBvciBzZXJpZXMgZGF0YSBpcyBub3QgYXZhaWxhYmxlLCBhZGQgYW4gZW1wdHkgaGVhZGVyIHJvdyB3aXRoIG9ubHkgZGV2aWNlX25hbWUsIHNvdXJjZSBhbmQgZnJhZ21lbnRfc2VyaWVzLlxuICAgIC8vIFRoaXMgZGF0YSBpcyBuZWVkZWQgbGF0ZXIgdG8gYmUgdXNlZCB0byBjcmVhdGUgdGhlIGZpbGUgbmFtZSBhbmQgbWVyZ2VkIGZpbGUgaGVhZGVyIHN0cmluZy5cbiAgICBjb25zdCByZXNwb25zZURvZXNOb3RDb250YWluRGF0YSA9ICFkYXRhVG9FeHBvcnQudGltZVZhbHVlTWFwPy5zaXplICYmICFkYXRhVG9FeHBvcnQudW5pdDtcbiAgICBpZiAocmVzcG9uc2VEb2VzTm90Q29udGFpbkRhdGEpIHtcbiAgICAgIHJvd3NEYXRhLnB1c2goe1xuICAgICAgICB0aW1lOiBudWxsLFxuICAgICAgICBzb3VyY2U6IGRhdGFUb0V4cG9ydC5zb3VyY2UsXG4gICAgICAgIGRldmljZV9uYW1lOiBkYXRhVG9FeHBvcnQuZGV2aWNlTmFtZSxcbiAgICAgICAgZnJhZ21lbnRfc2VyaWVzOiBgJHtkYXRhVG9FeHBvcnQudmFsdWVGcmFnbWVudFR5cGV9LiR7ZGF0YVRvRXhwb3J0LnZhbHVlRnJhZ21lbnRTZXJpZXN9YCxcbiAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgIHZhbHVlX21pbjogbnVsbCxcbiAgICAgICAgdmFsdWVfbWF4OiBudWxsLFxuICAgICAgICB1bml0OiBudWxsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiByb3dzRGF0YTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IFt0aW1lLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZGF0YVRvRXhwb3J0LnRpbWVWYWx1ZU1hcCkpIHtcbiAgICAgIC8vIE1lYXN1cmVtZW50cyBkYXRhIGNvbnRhaW5zIG9ubHkgb25lIHZhbHVlIGFzIGEgbnVtYmVyLCBzZXJpZXMgZGF0YSBjb250YWlucyBvYmplY3Qgd2l0aCBtaW4gYW5kIG1heCB2YWx1ZXMuXG4gICAgICBjb25zdCBpc01lYXN1cmVtZW50RGF0YSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcic7XG4gICAgICBpZiAoaXNNZWFzdXJlbWVudERhdGEpIHtcbiAgICAgICAgcm93c0RhdGEucHVzaCh0aGlzLmNyZWF0ZUV4cG9ydERhdGEoZGF0YVRvRXhwb3J0LCB0aW1lLCBpc01lYXN1cmVtZW50RGF0YSwgdmFsdWUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJvd3NEYXRhLnB1c2goXG4gICAgICAgICAgdGhpcy5jcmVhdGVFeHBvcnREYXRhKGRhdGFUb0V4cG9ydCwgdGltZSwgaXNNZWFzdXJlbWVudERhdGEsIHZhbHVlLm1pbiwgdmFsdWUubWF4KVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcm93c0RhdGE7XG4gIH1cblxuICBjcmVhdGVFeHBvcnREYXRhKFxuICAgIGRhdGFUb0V4cG9ydDogRGF0YVRvRXhwb3J0LFxuICAgIHRpbWU6IHN0cmluZyxcbiAgICBpc01lYXN1cmVtZW50OiBib29sZWFuLFxuICAgIHZhbHVlOiBudW1iZXIsXG4gICAgdmFsdWVNYXg/OiBudW1iZXJcbiAgKTogRXhwb3J0RGF0YSB7XG4gICAgY29uc3QgY29tbW9uRXhwb3J0RGF0YSA9IHtcbiAgICAgIHRpbWU6IG5ldyBEYXRlKHRpbWUpLnRvSVNPU3RyaW5nKCksXG4gICAgICBzb3VyY2U6IGRhdGFUb0V4cG9ydC5zb3VyY2UsXG4gICAgICBkZXZpY2VfbmFtZTogZGF0YVRvRXhwb3J0LmRldmljZU5hbWUsXG4gICAgICBmcmFnbWVudF9zZXJpZXM6IGAke2RhdGFUb0V4cG9ydC52YWx1ZUZyYWdtZW50VHlwZX0uJHtkYXRhVG9FeHBvcnQudmFsdWVGcmFnbWVudFNlcmllc31gLFxuICAgICAgdW5pdDogZGF0YVRvRXhwb3J0LnVuaXRcbiAgICB9O1xuXG4gICAgcmV0dXJuIGlzTWVhc3VyZW1lbnRcbiAgICAgID8geyAuLi5jb21tb25FeHBvcnREYXRhLCB2YWx1ZSB9XG4gICAgICA6IHsgLi4uY29tbW9uRXhwb3J0RGF0YSwgdmFsdWVfbWluOiB2YWx1ZSwgdmFsdWVfbWF4OiB2YWx1ZU1heCB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cG9ydHMgdGhlIGdpdmVuIGRhdGEgdG8gbWVyZ2VkIENTViBvciBFeGNlbCBmaWxlcy5cbiAgICpcbiAgICogQHBhcmFtIGV4cG9ydERhdGEgLSBBbiBhcnJheSBjb250YWluaW5nIEV4cG9ydERhdGEgb2JqZWN0cyB0aGF0IHdpbGwgYmUgdXNlZCBhcyBwYXJ0cyBvZiB0aGUgbWVyZ2VkIGZpbGUuXG4gICAqIEBwYXJhbSBmaWxlVHlwZSAtIEluZGljYXRlcyB0aGUgdHlwZSBvZiB0aGUgZmlsZSB0byBiZSBleHBvcnRlZC5cbiAgICogQHBhcmFtIG1lcmdlZEV4cG9ydERldGFpbHMgLSBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgZGF0ZSByYW5nZSBmcm9tIHdoaWNoIHRoZSBleHBvcnQgd2FzIGNyZWF0ZWQgYW5kIGFnZ3JlZ2F0aW9uIHR5cGUuXG4gICAqIEByZXR1cm5zIEFuIG9iamVjdHMgY29udGFpbmluZyBmaWxlIG5hbWUgYW5kIGl0cyByZXNwZWN0aXZlIGNvbnRlbnQgYXMgQmxvYi5cbiAgICpcbiAgICogRXhhbXBsZSBvZiBleHBvcnRlZCBtZXJnZWQgZmlsZSBzdHJ1Y3R1cmU6XG4gICAqIGRhdGUgZnJvbVx0ZGF0ZSB0b1xuICAgKiAyMDI0LTA0LTE1VDEyOjE0OjAwLjAwMFpcdDIwMjQtMDctMTZUMTQ6MTQ6MjgrMDI6MDBcbiAgICogdGltZVx0ICAgICAgICAgICAgICAgICAgICAgICAgICBHNkZpdCAtPiBjOHlfQWNjZWxlcmF0aW9uLmFjY2VsZXJhdGlvblggW0ddXHRHNkZpdCAtPiBjOHlfQWNjZWxlcmF0aW9uLmFjY2VsZXJhdGlvblkgW0ddXG4gICAqIDIwMjQtMDUtMTNUMTM6NDU6MTAuNTAwKzAyOjAwXHQwLjAxMDkwMjYzNTk2MjQyNzNcdCAgICAgICAgICAgICAgICAgICAgICAgIDAuNzg5NDYxNjI4Mjc4MDY5XG4gICAqXG4gICAqIEV4YW1wbGUgb2YgZXhwb3J0ZWQgZmlsZSBuYW1lIGZvcm1hdDpcbiAgICogMDRkZWMyMzEyNDAtMDZkZWMyMzIzNTAueGxzeFxuICAgKi9cbiAgYXN5bmMgZXhwb3J0U2VyaWVzRGF0YVRvTWVyZ2VkRmlsZXMoXG4gICAgZXhwb3J0RGF0YTogRXhwb3J0RGF0YVtdLFxuICAgIGZpbGVUeXBlOiBzdHJpbmcsXG4gICAgbWVyZ2VkRXhwb3J0RGV0YWlsczogTWVyZ2VkRXhwb3J0RGV0YWlsc1xuICApOiBQcm9taXNlPEV4cG9ydGVkRmlsZT4ge1xuICAgIGNvbnN0IGZpbGVUeXBlQ29uZmlnID0gdGhpcy5maWxlVHlwZXNDb25maWdzW2ZpbGVUeXBlXTtcblxuICAgIG1lcmdlZEV4cG9ydERldGFpbHMuZGF0ZUZyb20gPSBuZXcgRGF0ZShtZXJnZWRFeHBvcnREZXRhaWxzLmRhdGVGcm9tKS50b0lTT1N0cmluZygpO1xuICAgIG1lcmdlZEV4cG9ydERldGFpbHMuZGF0ZVRvID0gbmV3IERhdGUobWVyZ2VkRXhwb3J0RGV0YWlscy5kYXRlVG8pLnRvSVNPU3RyaW5nKCk7XG5cbiAgICBjb25zdCBtZXJnZWRGaWxlQ29udGVudCA9IHRoaXMubWVyZ2VNYXBwaW5nW2ZpbGVUeXBlXShleHBvcnREYXRhLCBtZXJnZWRFeHBvcnREZXRhaWxzKTtcblxuICAgIGNvbnN0IG1lcmdlZEZpbGVOYW1lRGF0ZVJhbmdlID0gdGhpcy51dGlscy5nZXRGb3JtYXR0ZWREYXRlUmFuZ2UoXG4gICAgICBtZXJnZWRFeHBvcnREZXRhaWxzLmRhdGVGcm9tLFxuICAgICAgbWVyZ2VkRXhwb3J0RGV0YWlscy5kYXRlVG9cbiAgICApO1xuICAgIHJldHVybiB7XG4gICAgICBmaWxlTmFtZTogYCR7bWVyZ2VkRmlsZU5hbWVEYXRlUmFuZ2V9LiR7ZmlsZVR5cGVDb25maWcuZXh0ZW5zaW9ufWAsXG4gICAgICBmaWxlRGF0YTogbmV3IEJsb2IoW2F3YWl0IG1lcmdlZEZpbGVDb250ZW50XSwgeyB0eXBlOiBmaWxlVHlwZUNvbmZpZy5taW1lVHlwZSB9KVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogWmlwcyBhbGwgY3JlYXRlZCBmaWxlcy5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVzIC0gQW4gYXJyYXkgb2Ygb2JqZWN0cyBjb250YWluaW5nIGZpbGUgbmFtZXMgYW5kIHRoZWlyIHJlc3BlY3RpdmUgY29udGVudCBhcyBCbG9icy5cbiAgICogQHJldHVybnMgQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBCbG9iIHJlcHJlc2VudGluZyB0aGUgZ2VuZXJhdGVkIHppcCBmaWxlLlxuICAgKi9cbiAgYXN5bmMgemlwRmlsZXMoZmlsZXM6IEV4cG9ydGVkRmlsZVtdKTogUHJvbWlzZTxCbG9iPiB7XG4gICAgY29uc3QgemlwID0gbmV3IEpTWmlwKCk7XG5cbiAgICBmaWxlcy5mb3JFYWNoKGZpbGUgPT4ge1xuICAgICAgemlwLmZpbGUoZmlsZS5maWxlTmFtZSwgZmlsZS5maWxlRGF0YSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5nZW5lcmF0ZVppcEJsb2IoemlwLCBGSUxFX0NPTVBSRVNTSU9OX1RZUEVTX1ZBTFVFUy5kZWZsYXRlLCA5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBvcnRzIHRoZSBnaXZlbiBkYXRhIHRvIENTViBvciBFeGNlbCBmaWxlcy5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIEFuIG9iamVjdCBjb250YWluaW5nIGFsbCB0aGUgbmVjZXNzYXJ5IHBhcmFtZXRlcnMgZm9yIHRoZSBleHBvcnQgYW5kIHppcCBwcm9jZXNzLlxuICAgKiBAcmV0dXJucyBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIEJsb2IgcmVwcmVzZW50aW5nIHRoZSBleHBvcnRlZCBmaWxlLlxuICAgKi9cbiAgYXN5bmMgZXhwb3J0U2VyaWVzRGF0YShwYXJhbXM6IFNlcmllc0V4cG9ydFBhcmFtcyk6IFByb21pc2U8QmxvYj4ge1xuICAgIGNvbnN0IHsgZmxhdHRlbmVkQW5kU29ydGVkRXhwb3J0RGF0YSwgZmlsZVR5cGUsIG1lcmdlZEV4cG9ydERldGFpbHMgfSA9IHBhcmFtcztcbiAgICBjb25zdCBleHBvcnRlZE1lcmdlZEZpbGU6IEV4cG9ydGVkRmlsZSA9IGF3YWl0IHRoaXMuZXhwb3J0U2VyaWVzRGF0YVRvTWVyZ2VkRmlsZXMoXG4gICAgICBmbGF0dGVuZWRBbmRTb3J0ZWRFeHBvcnREYXRhLFxuICAgICAgZmlsZVR5cGUsXG4gICAgICBtZXJnZWRFeHBvcnREZXRhaWxzXG4gICAgKTtcblxuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbZXhwb3J0ZWRNZXJnZWRGaWxlLmZpbGVEYXRhXSwgeyB0eXBlOiBmaWxlVHlwZSB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShibG9iLCBTRVJJRVNfREFUQV9NRVJHRURfRklMRV9OQU1FLCB7XG4gICAgICB2YWx1ZTogZXhwb3J0ZWRNZXJnZWRGaWxlLmZpbGVOYW1lLFxuICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcblxuICAgIHJldHVybiBibG9iO1xuICB9XG5cbiAgY3JlYXRlRmlsZU5hbWUoc291cmNlOiBzdHJpbmcgfCBudW1iZXIsIGZyYWdtZW50U2VyaWVzOiBzdHJpbmcsIGZpbGVFeHRlbnNpb246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3NvdXJjZX1fJHtmcmFnbWVudFNlcmllc30uJHtmaWxlRXh0ZW5zaW9ufWA7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgemlwIGJsb2IgdXNpbmcgdGhlIHByb3ZpZGVkIHppcCBvYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSB6aXAgLSBUaGUgemlwIG9iamVjdCB1c2VkIGZvciBnZW5lcmF0aW5nIHRoZSBibG9iLlxuICAgKiBAcGFyYW0gY29tcHJlc3Npb25UeXBlIC0gVGhlIGNvbXByZXNzaW9uIHR5cGUgZm9yIHRoZSB6aXAgZmlsZS4gJ1NUT1JFJyBpcyBubyBjb21wcmVzc2lvbiwgJ0RFRkxBVEUnIGlzIGNvbXByZXNzaW9uLlxuICAgKiBAcGFyYW0gY29tcHJlc3Npb25MZXZlbCAtIFRoZSBjb21wcmVzc2lvbiBsZXZlbCBmb3IgdGhlIHppcCBmaWxlLlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIExldmVsIDEgaXMgcXVpY2tlc3QsIDkgaXMgYmVzdCBjb21wcmVzc2VkLlxuICAgKiBAcmV0dXJucyBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIEJsb2IgY29udGFpbmluZyB0aGUgZ2VuZXJhdGVkIHppcCBmaWxlLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBnZW5lcmF0ZVppcEJsb2IoXG4gICAgemlwOiBKU1ppcCxcbiAgICBjb21wcmVzc2lvblR5cGU6IEZpbGVDb21wcmVzc2lvblR5cGVzID0gRklMRV9DT01QUkVTU0lPTl9UWVBFU19WQUxVRVMuc3RvcmUsXG4gICAgY29tcHJlc3Npb25MZXZlbCA9IDFcbiAgKTogUHJvbWlzZTxCbG9iPiB7XG4gICAgY29uc3QgYmxvYiA9ICdibG9iJztcblxuICAgIGlmIChjb21wcmVzc2lvblR5cGUgPT09IEZJTEVfQ09NUFJFU1NJT05fVFlQRVNfVkFMVUVTLnN0b3JlKSB7XG4gICAgICByZXR1cm4gYXdhaXQgemlwLmdlbmVyYXRlQXN5bmMoeyB0eXBlOiBibG9iIH0pO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgemlwLmdlbmVyYXRlQXN5bmMoe1xuICAgICAgdHlwZTogYmxvYixcbiAgICAgIGNvbXByZXNzaW9uOiBjb21wcmVzc2lvblR5cGUsXG4gICAgICBjb21wcmVzc2lvbk9wdGlvbnM6IHtcbiAgICAgICAgbGV2ZWw6IGNvbXByZXNzaW9uTGV2ZWxcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19
|