@c8y/ngx-components 1021.13.3 → 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-list.component.d.ts +2 -17
- package/alarms/alarms-list.component.d.ts.map +1 -1
- package/alarms/alarms-view.service.d.ts +1 -0
- package/alarms/alarms-view.service.d.ts.map +1 -1
- package/alarms/alarms.model.d.ts +30 -0
- package/alarms/alarms.model.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 +24 -18
- 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/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-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 +11 -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 +6 -12
- package/core/dashboard/wiget-time-context/widget-time-context.model.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/alarms/alarms-list.component.mjs +5 -16
- package/esm2022/alarms/alarms-view.service.mjs +2 -1
- package/esm2022/alarms/alarms.model.mjs +1 -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.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 +18 -1
- 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/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-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 -37
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context.model.mjs +1 -28
- package/esm2022/core/date-time-picker/date-time-picker.component.mjs +3 -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/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/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-alarms.mjs +5 -15
- package/fesm2022/c8y-ngx-components-alarms.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-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 +5080 -4272
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- 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 +257 -18
- 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/i18n/translate.loader.d.ts +0 -31
- package/core/i18n/translate.loader.d.ts.map +0 -1
- package/esm2022/core/i18n/translate.loader.mjs +0 -71
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { gettext } from '@c8y/ngx-components';
|
|
2
|
+
import { TIME_RANGE_INTERVAL_UNITS_VALUES } from '@c8y/ngx-components/datapoints-export-selector';
|
|
3
|
+
export const DEFAULT_COUNTDOWN_VALUE = 30_000;
|
|
4
|
+
export const DATE_SELECTION_VALUES = {
|
|
5
|
+
// Will be uncommented in MTM-61920
|
|
6
|
+
// dashboard_context: 'dashboard_context',
|
|
7
|
+
config: 'config',
|
|
8
|
+
view_and_config: 'view_and_config'
|
|
9
|
+
};
|
|
10
|
+
export const DATE_SELECTION_VALUES_ARR = [
|
|
11
|
+
// Will be uncommented in MTM-61920
|
|
12
|
+
// DATE_SELECTION_VALUES.dashboard_context,
|
|
13
|
+
DATE_SELECTION_VALUES.config,
|
|
14
|
+
DATE_SELECTION_VALUES.view_and_config
|
|
15
|
+
];
|
|
16
|
+
export const DATE_SELECTION_LABELS = {
|
|
17
|
+
config: gettext('Widget configuration'),
|
|
18
|
+
view_and_config: gettext('Widget and widget configuration'),
|
|
19
|
+
dashboard_context: gettext('Dashboard time range')
|
|
20
|
+
};
|
|
21
|
+
export const REFRESH_INTERVAL_VALUES_ARR = [5_000, 10_000, 15_000, 30_000, 60_000];
|
|
22
|
+
export const RENDER_TYPES_LABELS = {
|
|
23
|
+
min: gettext('Minimum'),
|
|
24
|
+
max: gettext('Maximum'),
|
|
25
|
+
area: gettext('Area')
|
|
26
|
+
};
|
|
27
|
+
export const INTERVAL_VALUES_ARR = [
|
|
28
|
+
TIME_RANGE_INTERVAL_UNITS_VALUES.minutes,
|
|
29
|
+
TIME_RANGE_INTERVAL_UNITS_VALUES.hours,
|
|
30
|
+
TIME_RANGE_INTERVAL_UNITS_VALUES.days,
|
|
31
|
+
TIME_RANGE_INTERVAL_UNITS_VALUES.weeks,
|
|
32
|
+
TIME_RANGE_INTERVAL_UNITS_VALUES.months,
|
|
33
|
+
TIME_RANGE_INTERVAL_UNITS_VALUES.custom
|
|
34
|
+
];
|
|
35
|
+
export const TIME_RANGE_INTERVAL_LABELS = {
|
|
36
|
+
minutes: gettext('Last minute'),
|
|
37
|
+
hours: gettext('Last hour'),
|
|
38
|
+
days: gettext('Last day'),
|
|
39
|
+
weeks: gettext('Last week'),
|
|
40
|
+
months: gettext('Last month'),
|
|
41
|
+
custom: gettext('Custom')
|
|
42
|
+
};
|
|
43
|
+
export const DURATION_OPTIONS = [
|
|
44
|
+
{
|
|
45
|
+
id: TIME_RANGE_INTERVAL_UNITS_VALUES.minutes,
|
|
46
|
+
label: TIME_RANGE_INTERVAL_LABELS.minutes,
|
|
47
|
+
unit: TIME_RANGE_INTERVAL_UNITS_VALUES.minutes,
|
|
48
|
+
amount: 1
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
id: TIME_RANGE_INTERVAL_UNITS_VALUES.hours,
|
|
52
|
+
label: TIME_RANGE_INTERVAL_LABELS.hours,
|
|
53
|
+
unit: TIME_RANGE_INTERVAL_UNITS_VALUES.hours,
|
|
54
|
+
amount: 1
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
id: TIME_RANGE_INTERVAL_UNITS_VALUES.days,
|
|
58
|
+
label: TIME_RANGE_INTERVAL_LABELS.days,
|
|
59
|
+
unit: TIME_RANGE_INTERVAL_UNITS_VALUES.days,
|
|
60
|
+
amount: 1
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
id: TIME_RANGE_INTERVAL_UNITS_VALUES.weeks,
|
|
64
|
+
label: TIME_RANGE_INTERVAL_LABELS.weeks,
|
|
65
|
+
unit: TIME_RANGE_INTERVAL_UNITS_VALUES.weeks,
|
|
66
|
+
amount: 1
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
id: TIME_RANGE_INTERVAL_UNITS_VALUES.months,
|
|
70
|
+
label: TIME_RANGE_INTERVAL_LABELS.months,
|
|
71
|
+
unit: TIME_RANGE_INTERVAL_UNITS_VALUES.months,
|
|
72
|
+
amount: 1
|
|
73
|
+
},
|
|
74
|
+
{ id: TIME_RANGE_INTERVAL_UNITS_VALUES.custom, label: TIME_RANGE_INTERVAL_LABELS.custom }
|
|
75
|
+
];
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50cy10YWJsZS13aWRnZXQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi93aWRnZXRzL2ltcGxlbWVudGF0aW9ucy9kYXRhcG9pbnRzLXRhYmxlL2RhdGFwb2ludHMtdGFibGUtd2lkZ2V0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBcUIsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFakUsT0FBTyxFQUdMLGdDQUFnQyxFQUdqQyxNQUFNLGdEQUFnRCxDQUFDO0FBRXhELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQztBQWtDOUMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUc7SUFDbkMsbUNBQW1DO0lBQ25DLDBDQUEwQztJQUMxQyxNQUFNLEVBQUUsUUFBUTtJQUNoQixlQUFlLEVBQUUsaUJBQWlCO0NBQzFCLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRztJQUN2QyxtQ0FBbUM7SUFDbkMsMkNBQTJDO0lBQzNDLHFCQUFxQixDQUFDLE1BQU07SUFDNUIscUJBQXFCLENBQUMsZUFBZTtDQUM3QixDQUFDO0FBRVgsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUc7SUFDbkMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBMkI7SUFDakUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxpQ0FBaUMsQ0FBc0M7SUFDaEcsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLHNCQUFzQixDQUEyQjtDQUNwRSxDQUFDO0FBRVgsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFFbkYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUc7SUFDakMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQWM7SUFDcEMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQWM7SUFDcEMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQVc7Q0FDdkIsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHO0lBQ2pDLGdDQUFnQyxDQUFDLE9BQU87SUFDeEMsZ0NBQWdDLENBQUMsS0FBSztJQUN0QyxnQ0FBZ0MsQ0FBQyxJQUFJO0lBQ3JDLGdDQUFnQyxDQUFDLEtBQUs7SUFDdEMsZ0NBQWdDLENBQUMsTUFBTTtJQUN2QyxnQ0FBZ0MsQ0FBQyxNQUFNO0NBQy9CLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRztJQUN4QyxPQUFPLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBa0I7SUFDaEQsS0FBSyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQWdCO0lBQzFDLElBQUksRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFlO0lBQ3ZDLEtBQUssRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFnQjtJQUMxQyxNQUFNLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBaUI7SUFDN0MsTUFBTSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQWE7Q0FDN0IsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCO1FBQ0UsRUFBRSxFQUFFLGdDQUFnQyxDQUFDLE9BQU87UUFDNUMsS0FBSyxFQUFFLDBCQUEwQixDQUFDLE9BQU87UUFDekMsSUFBSSxFQUFFLGdDQUFnQyxDQUFDLE9BQU87UUFDOUMsTUFBTSxFQUFFLENBQUM7S0FDVjtJQUNEO1FBQ0UsRUFBRSxFQUFFLGdDQUFnQyxDQUFDLEtBQUs7UUFDMUMsS0FBSyxFQUFFLDBCQUEwQixDQUFDLEtBQUs7UUFDdkMsSUFBSSxFQUFFLGdDQUFnQyxDQUFDLEtBQUs7UUFDNUMsTUFBTSxFQUFFLENBQUM7S0FDVjtJQUNEO1FBQ0UsRUFBRSxFQUFFLGdDQUFnQyxDQUFDLElBQUk7UUFDekMsS0FBSyxFQUFFLDBCQUEwQixDQUFDLElBQUk7UUFDdEMsSUFBSSxFQUFFLGdDQUFnQyxDQUFDLElBQUk7UUFDM0MsTUFBTSxFQUFFLENBQUM7S0FDVjtJQUNEO1FBQ0UsRUFBRSxFQUFFLGdDQUFnQyxDQUFDLEtBQUs7UUFDMUMsS0FBSyxFQUFFLDBCQUEwQixDQUFDLEtBQUs7UUFDdkMsSUFBSSxFQUFFLGdDQUFnQyxDQUFDLEtBQUs7UUFDNUMsTUFBTSxFQUFFLENBQUM7S0FDVjtJQUNEO1FBQ0UsRUFBRSxFQUFFLGdDQUFnQyxDQUFDLE1BQU07UUFDM0MsS0FBSyxFQUFFLDBCQUEwQixDQUFDLE1BQU07UUFDeEMsSUFBSSxFQUFFLGdDQUFnQyxDQUFDLE1BQU07UUFDN0MsTUFBTSxFQUFFLENBQUM7S0FDVjtJQUNELEVBQUUsRUFBRSxFQUFFLGdDQUFnQyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsMEJBQTBCLENBQUMsTUFBTSxFQUFFO0NBQzFGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJRmV0Y2hSZXNwb25zZSwgSVNlcmllcyB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEFnZ3JlZ2F0aW9uT3B0aW9uLCBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBLUElEZXRhaWxzIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9kYXRhcG9pbnQtc2VsZWN0b3InO1xuaW1wb3J0IHtcbiAgTWluTWF4VmFsdWVzLFxuICBTb3VyY2VJZCxcbiAgVElNRV9SQU5HRV9JTlRFUlZBTF9VTklUU19WQUxVRVMsXG4gIFRpbWVSYW5nZUludGVydmFsLFxuICBUaW1lU3RhbXBcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvcic7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0NPVU5URE9XTl9WQUxVRSA9IDMwXzAwMDtcblxuZXhwb3J0IHR5cGUgRGF0YXBvaW50VGFibGVNYXBLZXkgPSBgJHtUaW1lU3RhbXB9XyR7RGV2aWNlTmFtZX1gO1xuLyoqXG4gKiBSZXByZXNlbnRzIGEgbWFwcGluZyB3aGVyZSB0aGUga2V5IGlzIGEgZGF0YXBvaW50IGlkZW50aWZpZXIgY29udGFpbmluZyB0aGUgZGF0ZSBhbmQgZGV2aWNlIG5hbWUsIGFuZCB0aGUgdmFsdWUgaXMgYW4gYXJyYXkgb2YgZGF0YSBwb2ludCB0YWJsZSBpdGVtcyBvciBudWxsLlxuICovXG5leHBvcnQgdHlwZSBEYXRhUG9pbnRzVGFibGVNYXAgPSBNYXA8RGF0YXBvaW50VGFibGVNYXBLZXksIChEYXRhcG9pbnRUYWJsZUl0ZW0gfCBudWxsKVtdPjtcblxudHlwZSBEZXZpY2VOYW1lID0gc3RyaW5nO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBtYXAgb2YgZGF0YXBvaW50cyBzZXJpZXMgZGF0YS5cbiAqIFRoZSBrZXkgb2YgdGhlIG1hcCBpcyBhIHNvdXJjZSwgYW5kIHRoZSB2YWx1ZSBpcyB0aGUgZGF0YSBmb3IgcmVxdWVzdGVkIHNlcmllcy5cbiAqL1xuZXhwb3J0IHR5cGUgRGF0YXBvaW50c1Nlcmllc0RhdGFNYXAgPSBNYXA8U291cmNlSWQsIElTZXJpZXM+O1xuLyoqXG4gKiBEZXRlcm1pbmVzIHdoaWNoIHZhbHVlcyB3aWxsIGJlIGRpc3BsYXllZCBhcyB2YWx1ZXMgZm9yIGRhdGFwb2ludHMuXG4gKiBlLmcuIGlmIHVzZXIgY2hvc2UgJ21pbicsIG9ubHkgdGhlIG1pbmltdW0gdmFsdWVzIHdpbGwgYmUgZGlzcGxheWVkLlxuICovXG5leHBvcnQgdHlwZSBSZW5kZXJUeXBlID0ga2V5b2YgdHlwZW9mIFJFTkRFUl9UWVBFU19MQUJFTFM7XG4vKipcbiAqIFJlcHJlc2VudHMgYW4gb2JqZWN0IHdoZXJlIGtleSBpcyBhIHRpbWVzdGFtcCBhbmQgdmFsdWUgaXMgYW4gYXJyYXlcbiAqIHdoZXJlIGZpcnN0IHJlY29yZCBjb250YWlucyBtaW4gYW5kIG1heCB2YWx1ZXMgZm9yIGEgY29ycmVzcG9uZGluZyB0aW1lc3RhbXAuXG4gKi9cbmV4cG9ydCB0eXBlIE1lYXN1cmVtZW50UmFuZ2VzID0ge1xuICBba2V5OiBUaW1lU3RhbXBdOiBBcnJheTxNaW5NYXhWYWx1ZXM+O1xufTtcbi8qKlxuICogUmVwcmVzZW50cyBhIHZhbHVlIG9iamVjdCB3aGVyZSBrZXkgaXMgYW4gb2JqZWN0IHdpdGggbWluIGFuZCBtYXggcHJvcGVydGllcyB3aXRoIGl0cyBjb3JyZXNwb25kaW5nIHZhbHVlcy5cbiAqL1xuZXhwb3J0IHR5cGUgVmFsdWUgPSB7XG4gIFtrZXkgaW4ga2V5b2YgTWluTWF4VmFsdWVzXTogbnVtYmVyO1xufTtcblxuZXhwb3J0IGNvbnN0IERBVEVfU0VMRUNUSU9OX1ZBTFVFUyA9IHtcbiAgLy8gV2lsbCBiZSB1bmNvbW1lbnRlZCBpbiBNVE0tNjE5MjBcbiAgLy8gZGFzaGJvYXJkX2NvbnRleHQ6ICdkYXNoYm9hcmRfY29udGV4dCcsXG4gIGNvbmZpZzogJ2NvbmZpZycsXG4gIHZpZXdfYW5kX2NvbmZpZzogJ3ZpZXdfYW5kX2NvbmZpZydcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBEQVRFX1NFTEVDVElPTl9WQUxVRVNfQVJSID0gW1xuICAvLyBXaWxsIGJlIHVuY29tbWVudGVkIGluIE1UTS02MTkyMFxuICAvLyBEQVRFX1NFTEVDVElPTl9WQUxVRVMuZGFzaGJvYXJkX2NvbnRleHQsXG4gIERBVEVfU0VMRUNUSU9OX1ZBTFVFUy5jb25maWcsXG4gIERBVEVfU0VMRUNUSU9OX1ZBTFVFUy52aWV3X2FuZF9jb25maWdcbl0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBEQVRFX1NFTEVDVElPTl9MQUJFTFMgPSB7XG4gIGNvbmZpZzogZ2V0dGV4dCgnV2lkZ2V0IGNvbmZpZ3VyYXRpb24nKSBhcyAnV2lkZ2V0IGNvbmZpZ3VyYXRpb24nLFxuICB2aWV3X2FuZF9jb25maWc6IGdldHRleHQoJ1dpZGdldCBhbmQgd2lkZ2V0IGNvbmZpZ3VyYXRpb24nKSBhcyAnV2lkZ2V0IGFuZCB3aWRnZXQgY29uZmlndXJhdGlvbicsXG4gIGRhc2hib2FyZF9jb250ZXh0OiBnZXR0ZXh0KCdEYXNoYm9hcmQgdGltZSByYW5nZScpIGFzICdEYXNoYm9hcmQgdGltZSByYW5nZSdcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBSRUZSRVNIX0lOVEVSVkFMX1ZBTFVFU19BUlIgPSBbNV8wMDAsIDEwXzAwMCwgMTVfMDAwLCAzMF8wMDAsIDYwXzAwMF07XG5cbmV4cG9ydCBjb25zdCBSRU5ERVJfVFlQRVNfTEFCRUxTID0ge1xuICBtaW46IGdldHRleHQoJ01pbmltdW0nKSBhcyAnTWluaW11bScsXG4gIG1heDogZ2V0dGV4dCgnTWF4aW11bScpIGFzICdNYXhpbXVtJyxcbiAgYXJlYTogZ2V0dGV4dCgnQXJlYScpIGFzICdBcmVhJ1xufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IElOVEVSVkFMX1ZBTFVFU19BUlIgPSBbXG4gIFRJTUVfUkFOR0VfSU5URVJWQUxfVU5JVFNfVkFMVUVTLm1pbnV0ZXMsXG4gIFRJTUVfUkFOR0VfSU5URVJWQUxfVU5JVFNfVkFMVUVTLmhvdXJzLFxuICBUSU1FX1JBTkdFX0lOVEVSVkFMX1VOSVRTX1ZBTFVFUy5kYXlzLFxuICBUSU1FX1JBTkdFX0lOVEVSVkFMX1VOSVRTX1ZBTFVFUy53ZWVrcyxcbiAgVElNRV9SQU5HRV9JTlRFUlZBTF9VTklUU19WQUxVRVMubW9udGhzLFxuICBUSU1FX1JBTkdFX0lOVEVSVkFMX1VOSVRTX1ZBTFVFUy5jdXN0b21cbl0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBUSU1FX1JBTkdFX0lOVEVSVkFMX0xBQkVMUyA9IHtcbiAgbWludXRlczogZ2V0dGV4dCgnTGFzdCBtaW51dGUnKSBhcyAnTGFzdCBtaW51dGUnLFxuICBob3VyczogZ2V0dGV4dCgnTGFzdCBob3VyJykgYXMgJ0xhc3QgaG91cicsXG4gIGRheXM6IGdldHRleHQoJ0xhc3QgZGF5JykgYXMgJ0xhc3QgZGF5JyxcbiAgd2Vla3M6IGdldHRleHQoJ0xhc3Qgd2VlaycpIGFzICdMYXN0IHdlZWsnLFxuICBtb250aHM6IGdldHRleHQoJ0xhc3QgbW9udGgnKSBhcyAnTGFzdCBtb250aCcsXG4gIGN1c3RvbTogZ2V0dGV4dCgnQ3VzdG9tJykgYXMgJ0N1c3RvbSdcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBEVVJBVElPTl9PUFRJT05TID0gW1xuICB7XG4gICAgaWQ6IFRJTUVfUkFOR0VfSU5URVJWQUxfVU5JVFNfVkFMVUVTLm1pbnV0ZXMsXG4gICAgbGFiZWw6IFRJTUVfUkFOR0VfSU5URVJWQUxfTEFCRUxTLm1pbnV0ZXMsXG4gICAgdW5pdDogVElNRV9SQU5HRV9JTlRFUlZBTF9VTklUU19WQUxVRVMubWludXRlcyxcbiAgICBhbW91bnQ6IDFcbiAgfSxcbiAge1xuICAgIGlkOiBUSU1FX1JBTkdFX0lOVEVSVkFMX1VOSVRTX1ZBTFVFUy5ob3VycyxcbiAgICBsYWJlbDogVElNRV9SQU5HRV9JTlRFUlZBTF9MQUJFTFMuaG91cnMsXG4gICAgdW5pdDogVElNRV9SQU5HRV9JTlRFUlZBTF9VTklUU19WQUxVRVMuaG91cnMsXG4gICAgYW1vdW50OiAxXG4gIH0sXG4gIHtcbiAgICBpZDogVElNRV9SQU5HRV9JTlRFUlZBTF9VTklUU19WQUxVRVMuZGF5cyxcbiAgICBsYWJlbDogVElNRV9SQU5HRV9JTlRFUlZBTF9MQUJFTFMuZGF5cyxcbiAgICB1bml0OiBUSU1FX1JBTkdFX0lOVEVSVkFMX1VOSVRTX1ZBTFVFUy5kYXlzLFxuICAgIGFtb3VudDogMVxuICB9LFxuICB7XG4gICAgaWQ6IFRJTUVfUkFOR0VfSU5URVJWQUxfVU5JVFNfVkFMVUVTLndlZWtzLFxuICAgIGxhYmVsOiBUSU1FX1JBTkdFX0lOVEVSVkFMX0xBQkVMUy53ZWVrcyxcbiAgICB1bml0OiBUSU1FX1JBTkdFX0lOVEVSVkFMX1VOSVRTX1ZBTFVFUy53ZWVrcyxcbiAgICBhbW91bnQ6IDFcbiAgfSxcbiAge1xuICAgIGlkOiBUSU1FX1JBTkdFX0lOVEVSVkFMX1VOSVRTX1ZBTFVFUy5tb250aHMsXG4gICAgbGFiZWw6IFRJTUVfUkFOR0VfSU5URVJWQUxfTEFCRUxTLm1vbnRocyxcbiAgICB1bml0OiBUSU1FX1JBTkdFX0lOVEVSVkFMX1VOSVRTX1ZBTFVFUy5tb250aHMsXG4gICAgYW1vdW50OiAxXG4gIH0sXG4gIHsgaWQ6IFRJTUVfUkFOR0VfSU5URVJWQUxfVU5JVFNfVkFMVUVTLmN1c3RvbSwgbGFiZWw6IFRJTUVfUkFOR0VfSU5URVJWQUxfTEFCRUxTLmN1c3RvbSB9XG5dO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbG9yUmFuZ2VCb3VuZGFyaWVzIHtcbiAgeWVsbG93UmFuZ2VNaW46IG51bWJlcjtcbiAgeWVsbG93UmFuZ2VNYXg6IG51bWJlcjtcbiAgcmVkUmFuZ2VNaW46IG51bWJlcjtcbiAgcmVkUmFuZ2VNYXg6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhcG9pbnRXaXRoVmFsdWVzIGV4dGVuZHMgS1BJRGV0YWlscyB7XG4gIHNlcmllc1VuaXQ/OiBzdHJpbmc7XG4gIHZhbHVlczogTWVhc3VyZW1lbnRSYW5nZXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHVyYXRpb24ge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICB1bml0Pzogc3RyaW5nO1xuICBhbW91bnQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVDb2x1bW5IZWFkZXIge1xuICBkZXZpY2VOYW1lOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHJlbmRlclR5cGU6IHN0cmluZztcbiAgdW5pdDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVSYW5nZSB7XG4gIGRhdGVGcm9tOiBzdHJpbmc7XG4gIGRhdGVUbzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFwb2ludHNUYWJsZUNvbmZpZyB7XG4gIGFnZ3JlZ2F0aW9uPzogQWdncmVnYXRpb25PcHRpb247XG4gIGNvbnRleHQ/OiBudW1iZXI7XG4gIGRhdGFwb2ludHM6IEtQSURldGFpbHNbXTtcbiAgLyoqXG4gICAqIEFycmF5IHRoYXQgY29udGFpbnMgZ2xvYmFsIHRpbWUgY29udGV4dCBkYXRlRnJvbSBhbmQgZGF0ZVRvLlxuICAgKi9cbiAgZGF0ZT86IHN0cmluZ1tdO1xuICBkYXRlRnJvbTogc3RyaW5nO1xuICBkYXRlVG86IHN0cmluZztcbiAgZGVjaW1hbFBsYWNlcz86IG51bWJlcjtcbiAgZGlzcGxheURhdGVTZWxlY3Rpb246IGJvb2xlYW47XG4gIGRpc3BsYXlTZXR0aW5nczoge1xuICAgIGdsb2JhbFRpbWVDb250ZXh0OiBib29sZWFuO1xuICAgIGdsb2JhbFJlYWx0aW1lQ29udGV4dDogYm9vbGVhbjtcbiAgICBnbG9iYWxBZ2dyZWdhdGlvbkNvbnRleHQ6IGJvb2xlYW47XG4gIH07XG4gIGludGVydmFsOiBUaW1lUmFuZ2VJbnRlcnZhbDtcbiAgaXNBdXRvUmVmcmVzaEVuYWJsZWQ6IGJvb2xlYW47XG4gIHJlYWx0aW1lOiBib29sZWFuO1xuICByZWZyZXNoSW50ZXJ2YWw/OiBudW1iZXI7XG4gIHNlbGVjdGVkOiBvYmplY3Q7XG4gIHdpZGdldEluc3RhbmNlR2xvYmFsVGltZUNvbnRleHQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXBvaW50VGFibGVJdGVtIHtcbiAgZGF0ZUFuZFRpbWU6IHN0cmluZztcbiAgZGV2aWNlTmFtZTogc3RyaW5nO1xuICBmcmFnbWVudDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICByZWRSYW5nZU1heD86IG51bWJlcjtcbiAgcmVkUmFuZ2VNaW4/OiBudW1iZXI7XG4gIHJlbmRlclR5cGU6IHN0cmluZztcbiAgc2VyaWVzOiBzdHJpbmc7XG4gIHZhbHVlOiBWYWx1ZTtcbiAgeWVsbG93UmFuZ2VNYXg/OiBudW1iZXI7XG4gIHllbGxvd1JhbmdlTWluPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdyb3VwZWREYXRhcG9pbnRUYWJsZUl0ZW0ge1xuICBkYXRlQW5kVGltZTogc3RyaW5nO1xuICBkZXZpY2VOYW1lOiBzdHJpbmc7XG4gIHJvd0l0ZW1zOiAoe1xuICAgIGZyYWdtZW50OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICByZWRSYW5nZU1heD86IG51bWJlcjtcbiAgICByZWRSYW5nZU1pbj86IG51bWJlcjtcbiAgICByZW5kZXJUeXBlOiBzdHJpbmc7XG4gICAgc2VyaWVzOiBzdHJpbmc7XG4gICAgdmFsdWU6IFZhbHVlO1xuICAgIHllbGxvd1JhbmdlTWF4PzogbnVtYmVyO1xuICAgIHllbGxvd1JhbmdlTWluPzogbnVtYmVyO1xuICB9IHwgbnVsbClbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXJpZXNEYXRhV2l0aFJlc3BvbnNlIHtcbiAgc291cmNlOiBTb3VyY2VJZDtcbiAgZGF0YTogSVNlcmllcztcbiAgcmVzOiBJRmV0Y2hSZXNwb25zZTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { TIME_RANGE_INTERVAL_UNITS_VALUES } from '@c8y/ngx-components/datapoints-export-selector';
|
|
3
|
+
import { DatapointsTableViewService } from './datapoints-table-view/datapoints-table-view.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./datapoints-table-view/datapoints-table-view.service";
|
|
6
|
+
export class DatapointsTableService {
|
|
7
|
+
constructor(datapointsTableViewService) {
|
|
8
|
+
this.datapointsTableViewService = datapointsTableViewService;
|
|
9
|
+
}
|
|
10
|
+
calculateDateRange(interval) {
|
|
11
|
+
const now = new Date();
|
|
12
|
+
const nowString = now.toISOString();
|
|
13
|
+
let dateFrom;
|
|
14
|
+
switch (interval) {
|
|
15
|
+
case TIME_RANGE_INTERVAL_UNITS_VALUES.minutes:
|
|
16
|
+
dateFrom = this.datapointsTableViewService.adjustDate(nowString, -1, true);
|
|
17
|
+
break;
|
|
18
|
+
case TIME_RANGE_INTERVAL_UNITS_VALUES.hours:
|
|
19
|
+
const minutesInAnHourNegative = -60;
|
|
20
|
+
dateFrom = this.datapointsTableViewService.adjustDate(nowString, minutesInAnHourNegative, true);
|
|
21
|
+
break;
|
|
22
|
+
case TIME_RANGE_INTERVAL_UNITS_VALUES.days:
|
|
23
|
+
const minutesInADayNegative = -24 * 60;
|
|
24
|
+
dateFrom = this.datapointsTableViewService.adjustDate(nowString, minutesInADayNegative, true);
|
|
25
|
+
break;
|
|
26
|
+
case TIME_RANGE_INTERVAL_UNITS_VALUES.weeks:
|
|
27
|
+
const minutesInAWeekNegative = -7 * 24 * 60;
|
|
28
|
+
dateFrom = this.datapointsTableViewService.adjustDate(nowString, minutesInAWeekNegative, true);
|
|
29
|
+
break;
|
|
30
|
+
case TIME_RANGE_INTERVAL_UNITS_VALUES.months:
|
|
31
|
+
const oneMonthAgo = new Date(now);
|
|
32
|
+
oneMonthAgo.setMonth(oneMonthAgo.getMonth() - 1);
|
|
33
|
+
dateFrom = this.datapointsTableViewService.adjustDate(oneMonthAgo.toISOString(), 0, true);
|
|
34
|
+
break;
|
|
35
|
+
default:
|
|
36
|
+
throw new Error('Invalid time interval');
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
dateFrom: dateFrom,
|
|
40
|
+
dateTo: this.datapointsTableViewService.adjustDate(nowString, 0, true)
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatapointsTableService, deps: [{ token: i1.DatapointsTableViewService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
44
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatapointsTableService, providedIn: 'root' }); }
|
|
45
|
+
}
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatapointsTableService, decorators: [{
|
|
47
|
+
type: Injectable,
|
|
48
|
+
args: [{
|
|
49
|
+
providedIn: 'root'
|
|
50
|
+
}]
|
|
51
|
+
}], ctorParameters: () => [{ type: i1.DatapointsTableViewService }] });
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50cy10YWJsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvZGF0YXBvaW50cy10YWJsZS9kYXRhcG9pbnRzLXRhYmxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsZ0NBQWdDLEVBRWpDLE1BQU0sZ0RBQWdELENBQUM7QUFDeEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sdURBQXVELENBQUM7OztBQU1uRyxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLFlBQW9CLDBCQUFzRDtRQUF0RCwrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTRCO0lBQUcsQ0FBQztJQUU5RSxrQkFBa0IsQ0FBQyxRQUEyQjtRQUM1QyxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVwQyxJQUFJLFFBQWdCLENBQUM7UUFFckIsUUFBUSxRQUFRLEVBQUUsQ0FBQztZQUNqQixLQUFLLGdDQUFnQyxDQUFDLE9BQU87Z0JBQzNDLFFBQVEsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDM0UsTUFBTTtZQUNSLEtBQUssZ0NBQWdDLENBQUMsS0FBSztnQkFDekMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsUUFBUSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxVQUFVLENBQ25ELFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsSUFBSSxDQUNMLENBQUM7Z0JBQ0YsTUFBTTtZQUNSLEtBQUssZ0NBQWdDLENBQUMsSUFBSTtnQkFDeEMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7Z0JBQ3ZDLFFBQVEsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsVUFBVSxDQUNuRCxTQUFTLEVBQ1QscUJBQXFCLEVBQ3JCLElBQUksQ0FDTCxDQUFDO2dCQUNGLE1BQU07WUFDUixLQUFLLGdDQUFnQyxDQUFDLEtBQUs7Z0JBQ3pDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztnQkFDNUMsUUFBUSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxVQUFVLENBQ25ELFNBQVMsRUFDVCxzQkFBc0IsRUFDdEIsSUFBSSxDQUNMLENBQUM7Z0JBQ0YsTUFBTTtZQUNSLEtBQUssZ0NBQWdDLENBQUMsTUFBTTtnQkFDMUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2xDLFdBQVcsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNqRCxRQUFRLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUMxRixNQUFNO1lBQ1I7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRCxPQUFPO1lBQ0wsUUFBUSxFQUFFLFFBQVE7WUFDbEIsTUFBTSxFQUFFLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUM7U0FDdkUsQ0FBQztJQUNKLENBQUM7OEdBbERVLHNCQUFzQjtrSEFBdEIsc0JBQXNCLGNBRnJCLE1BQU07OzJGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBUSU1FX1JBTkdFX0lOVEVSVkFMX1VOSVRTX1ZBTFVFUyxcbiAgVGltZVJhbmdlSW50ZXJ2YWxcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvcic7XG5pbXBvcnQgeyBEYXRhcG9pbnRzVGFibGVWaWV3U2VydmljZSB9IGZyb20gJy4vZGF0YXBvaW50cy10YWJsZS12aWV3L2RhdGFwb2ludHMtdGFibGUtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVSYW5nZSB9IGZyb20gJy4vZGF0YXBvaW50cy10YWJsZS13aWRnZXQubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEYXRhcG9pbnRzVGFibGVTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRhcG9pbnRzVGFibGVWaWV3U2VydmljZTogRGF0YXBvaW50c1RhYmxlVmlld1NlcnZpY2UpIHt9XG5cbiAgY2FsY3VsYXRlRGF0ZVJhbmdlKGludGVydmFsOiBUaW1lUmFuZ2VJbnRlcnZhbCk6IERhdGVSYW5nZSB7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBub3dTdHJpbmcgPSBub3cudG9JU09TdHJpbmcoKTtcblxuICAgIGxldCBkYXRlRnJvbTogc3RyaW5nO1xuXG4gICAgc3dpdGNoIChpbnRlcnZhbCkge1xuICAgICAgY2FzZSBUSU1FX1JBTkdFX0lOVEVSVkFMX1VOSVRTX1ZBTFVFUy5taW51dGVzOlxuICAgICAgICBkYXRlRnJvbSA9IHRoaXMuZGF0YXBvaW50c1RhYmxlVmlld1NlcnZpY2UuYWRqdXN0RGF0ZShub3dTdHJpbmcsIC0xLCB0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRJTUVfUkFOR0VfSU5URVJWQUxfVU5JVFNfVkFMVUVTLmhvdXJzOlxuICAgICAgICBjb25zdCBtaW51dGVzSW5BbkhvdXJOZWdhdGl2ZSA9IC02MDtcbiAgICAgICAgZGF0ZUZyb20gPSB0aGlzLmRhdGFwb2ludHNUYWJsZVZpZXdTZXJ2aWNlLmFkanVzdERhdGUoXG4gICAgICAgICAgbm93U3RyaW5nLFxuICAgICAgICAgIG1pbnV0ZXNJbkFuSG91ck5lZ2F0aXZlLFxuICAgICAgICAgIHRydWVcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRJTUVfUkFOR0VfSU5URVJWQUxfVU5JVFNfVkFMVUVTLmRheXM6XG4gICAgICAgIGNvbnN0IG1pbnV0ZXNJbkFEYXlOZWdhdGl2ZSA9IC0yNCAqIDYwO1xuICAgICAgICBkYXRlRnJvbSA9IHRoaXMuZGF0YXBvaW50c1RhYmxlVmlld1NlcnZpY2UuYWRqdXN0RGF0ZShcbiAgICAgICAgICBub3dTdHJpbmcsXG4gICAgICAgICAgbWludXRlc0luQURheU5lZ2F0aXZlLFxuICAgICAgICAgIHRydWVcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRJTUVfUkFOR0VfSU5URVJWQUxfVU5JVFNfVkFMVUVTLndlZWtzOlxuICAgICAgICBjb25zdCBtaW51dGVzSW5BV2Vla05lZ2F0aXZlID0gLTcgKiAyNCAqIDYwO1xuICAgICAgICBkYXRlRnJvbSA9IHRoaXMuZGF0YXBvaW50c1RhYmxlVmlld1NlcnZpY2UuYWRqdXN0RGF0ZShcbiAgICAgICAgICBub3dTdHJpbmcsXG4gICAgICAgICAgbWludXRlc0luQVdlZWtOZWdhdGl2ZSxcbiAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUSU1FX1JBTkdFX0lOVEVSVkFMX1VOSVRTX1ZBTFVFUy5tb250aHM6XG4gICAgICAgIGNvbnN0IG9uZU1vbnRoQWdvID0gbmV3IERhdGUobm93KTtcbiAgICAgICAgb25lTW9udGhBZ28uc2V0TW9udGgob25lTW9udGhBZ28uZ2V0TW9udGgoKSAtIDEpO1xuICAgICAgICBkYXRlRnJvbSA9IHRoaXMuZGF0YXBvaW50c1RhYmxlVmlld1NlcnZpY2UuYWRqdXN0RGF0ZShvbmVNb250aEFnby50b0lTT1N0cmluZygpLCAwLCB0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdGltZSBpbnRlcnZhbCcpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkYXRlRnJvbTogZGF0ZUZyb20sXG4gICAgICBkYXRlVG86IHRoaXMuZGF0YXBvaW50c1RhYmxlVmlld1NlcnZpY2UuYWRqdXN0RGF0ZShub3dTdHJpbmcsIDAsIHRydWUpXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, Output } from '@angular/core';
|
|
3
|
+
import { ControlContainer, ReactiveFormsModule } from '@angular/forms';
|
|
4
|
+
import { CoreModule, gettext } from '@c8y/ngx-components';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@c8y/ngx-components";
|
|
7
|
+
import * as i2 from "@angular/common";
|
|
8
|
+
import * as i3 from "@angular/forms";
|
|
9
|
+
export class DateRangePickerComponent {
|
|
10
|
+
constructor() {
|
|
11
|
+
/**
|
|
12
|
+
* If set to true, the component will be reactive and will emit the updatedDate on every change.
|
|
13
|
+
* Otherwise, the component will use a non emitting variant of a template.
|
|
14
|
+
*/
|
|
15
|
+
this.isEmittingDateChange = false;
|
|
16
|
+
/**
|
|
17
|
+
* Determines the display of from and to date picker labels.
|
|
18
|
+
*/
|
|
19
|
+
this.showLabel = true;
|
|
20
|
+
this.updatedDate = new EventEmitter();
|
|
21
|
+
this.DATE_FROM = 'dateFrom';
|
|
22
|
+
this.DATE_TO = 'dateTo';
|
|
23
|
+
this.FROM_DATE = gettext('From`date`');
|
|
24
|
+
this.HAS_ERROR = 'has-error';
|
|
25
|
+
this.INVALID_DATE_TIME = 'invalidDateTime';
|
|
26
|
+
this.THIS_DATE_IS_INVALID = gettext('This date is invalid.');
|
|
27
|
+
this.THIS_DATE_IS_AFTER_THE_LAST_ALLOWED_DATE = gettext('This date is after the latest allowed date.');
|
|
28
|
+
this.THIS_DATE_IS_BEFORE_THE_EARLIEST_ALLOWED_DATE = gettext('This date is before the earliest allowed date.');
|
|
29
|
+
this.TO_DATE = gettext('To`date`');
|
|
30
|
+
this.parentContainer = inject(ControlContainer);
|
|
31
|
+
}
|
|
32
|
+
onDateFromChange(dateFrom) {
|
|
33
|
+
this.updatedDate.emit({
|
|
34
|
+
dateFrom
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
onDateToChange(dateTo) {
|
|
38
|
+
this.updatedDate.emit({
|
|
39
|
+
dateTo
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
get parentFormGroup() {
|
|
43
|
+
return this.parentContainer.control;
|
|
44
|
+
}
|
|
45
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
46
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: DateRangePickerComponent, isStandalone: true, selector: "c8y-date-range-picker", inputs: { isEmittingDateChange: "isEmittingDateChange", showLabel: "showLabel" }, outputs: { updatedDate: "updatedDate" }, ngImport: i0, template: "<div class=\"d-flex gap-8 a-i-center flex-wrap\">\n <c8y-form-group\n [ngClass]=\"[\n parentFormGroup?.controls.dateFrom.errors ? HAS_ERROR : '',\n isEmittingDateChange ? 'd-flex a-i-center gap-4 m-b-0' : ''\n ]\"\n >\n <ng-container *ngIf=\"showLabel\">\n <label\n [title]=\"FROM_DATE | translate\"\n [for]=\"DATE_FROM\"\n >\n {{ FROM_DATE | translate }}\n </label>\n </ng-container>\n <c8y-date-time-picker\n id=\"DATE_FROM\"\n [maxDate]=\"parentFormGroup?.value.dateTo\"\n [placeholder]=\"FROM_DATE | translate\"\n [formControl]=\"parentFormGroup?.controls.dateFrom\"\n [ngClass]=\"parentFormGroup?.controls.dateFrom.errors ? HAS_ERROR : ''\"\n (ngModelChange)=\"onDateFromChange($event)\"\n ></c8y-date-time-picker>\n <c8y-messages\n class=\"text-nowrap\"\n [show]=\"parentFormGroup?.controls.dateFrom.errors\"\n >\n <c8y-message\n name=\"dateAfterRangeMax\"\n [text]=\"THIS_DATE_IS_AFTER_THE_LAST_ALLOWED_DATE | translate\"\n ></c8y-message>\n <c8y-message\n name=\"INVALID_DATE_TIME\"\n [text]=\"THIS_DATE_IS_INVALID | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <c8y-form-group\n [ngClass]=\"[\n parentFormGroup?.controls.dateTo.errors ? HAS_ERROR : '',\n isEmittingDateChange ? 'd-flex a-i-center gap-4 m-b-0' : ''\n ]\"\n >\n <ng-container *ngIf=\"showLabel\">\n <label\n [title]=\"TO_DATE | translate\"\n [for]=\"DATE_TO\"\n >\n {{ TO_DATE | translate }}\n </label>\n </ng-container>\n <c8y-date-time-picker\n id=\"DATE_TO\"\n [minDate]=\"parentFormGroup?.value.dateFrom\"\n [placeholder]=\"TO_DATE | translate\"\n [formControl]=\"parentFormGroup?.controls.dateTo\"\n [ngClass]=\"parentFormGroup?.controls.dateTo.errors ? HAS_ERROR : ''\"\n (ngModelChange)=\"onDateToChange($event)\"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"parentFormGroup?.controls.dateTo.errors\">\n <c8y-message\n name=\"dateBeforeRangeMin\"\n [text]=\"THIS_DATE_IS_BEFORE_THE_EARLIEST_ALLOWED_DATE | translate\"\n ></c8y-message>\n <c8y-message\n name=\"INVALID_DATE_TIME\"\n [text]=\"THIS_DATE_IS_INVALID | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1.MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: i1.MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i1.DateTimePickerComponent, selector: "c8y-date-time-picker", inputs: ["minDate", "maxDate", "placeholder", "dateInputFormat", "adaptivePosition", "size", "dateType", "config"], outputs: ["onDateSelected"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }], viewProviders: [
|
|
47
|
+
{
|
|
48
|
+
provide: ControlContainer,
|
|
49
|
+
useFactory: () => inject(ControlContainer, { skipSelf: true })
|
|
50
|
+
}
|
|
51
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
52
|
+
}
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DateRangePickerComponent, decorators: [{
|
|
54
|
+
type: Component,
|
|
55
|
+
args: [{ selector: 'c8y-date-range-picker', standalone: true, imports: [CoreModule, CommonModule, ReactiveFormsModule], changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [
|
|
56
|
+
{
|
|
57
|
+
provide: ControlContainer,
|
|
58
|
+
useFactory: () => inject(ControlContainer, { skipSelf: true })
|
|
59
|
+
}
|
|
60
|
+
], template: "<div class=\"d-flex gap-8 a-i-center flex-wrap\">\n <c8y-form-group\n [ngClass]=\"[\n parentFormGroup?.controls.dateFrom.errors ? HAS_ERROR : '',\n isEmittingDateChange ? 'd-flex a-i-center gap-4 m-b-0' : ''\n ]\"\n >\n <ng-container *ngIf=\"showLabel\">\n <label\n [title]=\"FROM_DATE | translate\"\n [for]=\"DATE_FROM\"\n >\n {{ FROM_DATE | translate }}\n </label>\n </ng-container>\n <c8y-date-time-picker\n id=\"DATE_FROM\"\n [maxDate]=\"parentFormGroup?.value.dateTo\"\n [placeholder]=\"FROM_DATE | translate\"\n [formControl]=\"parentFormGroup?.controls.dateFrom\"\n [ngClass]=\"parentFormGroup?.controls.dateFrom.errors ? HAS_ERROR : ''\"\n (ngModelChange)=\"onDateFromChange($event)\"\n ></c8y-date-time-picker>\n <c8y-messages\n class=\"text-nowrap\"\n [show]=\"parentFormGroup?.controls.dateFrom.errors\"\n >\n <c8y-message\n name=\"dateAfterRangeMax\"\n [text]=\"THIS_DATE_IS_AFTER_THE_LAST_ALLOWED_DATE | translate\"\n ></c8y-message>\n <c8y-message\n name=\"INVALID_DATE_TIME\"\n [text]=\"THIS_DATE_IS_INVALID | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <c8y-form-group\n [ngClass]=\"[\n parentFormGroup?.controls.dateTo.errors ? HAS_ERROR : '',\n isEmittingDateChange ? 'd-flex a-i-center gap-4 m-b-0' : ''\n ]\"\n >\n <ng-container *ngIf=\"showLabel\">\n <label\n [title]=\"TO_DATE | translate\"\n [for]=\"DATE_TO\"\n >\n {{ TO_DATE | translate }}\n </label>\n </ng-container>\n <c8y-date-time-picker\n id=\"DATE_TO\"\n [minDate]=\"parentFormGroup?.value.dateFrom\"\n [placeholder]=\"TO_DATE | translate\"\n [formControl]=\"parentFormGroup?.controls.dateTo\"\n [ngClass]=\"parentFormGroup?.controls.dateTo.errors ? HAS_ERROR : ''\"\n (ngModelChange)=\"onDateToChange($event)\"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"parentFormGroup?.controls.dateTo.errors\">\n <c8y-message\n name=\"dateBeforeRangeMin\"\n [text]=\"THIS_DATE_IS_BEFORE_THE_EARLIEST_ALLOWED_DATE | translate\"\n ></c8y-message>\n <c8y-message\n name=\"INVALID_DATE_TIME\"\n [text]=\"THIS_DATE_IS_INVALID | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n</div>\n" }]
|
|
61
|
+
}], propDecorators: { isEmittingDateChange: [{
|
|
62
|
+
type: Input
|
|
63
|
+
}], showLabel: [{
|
|
64
|
+
type: Input
|
|
65
|
+
}], updatedDate: [{
|
|
66
|
+
type: Output
|
|
67
|
+
}] } });
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvZGF0YXBvaW50cy10YWJsZS9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi93aWRnZXRzL2ltcGxlbWVudGF0aW9ucy9kYXRhcG9pbnRzLXRhYmxlL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFhLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7QUFlMUQsTUFBTSxPQUFPLHdCQUF3QjtJQWJyQztRQWNFOzs7V0FHRztRQUNNLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUN0Qzs7V0FFRztRQUNNLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDaEIsZ0JBQVcsR0FHaEIsSUFBSSxZQUFZLEVBR2pCLENBQUM7UUFFSSxjQUFTLEdBQUcsVUFBVSxDQUFDO1FBQ3ZCLFlBQU8sR0FBRyxRQUFRLENBQUM7UUFDbkIsY0FBUyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsQyxjQUFTLEdBQUcsV0FBVyxDQUFDO1FBQ3hCLHNCQUFpQixHQUFHLGlCQUFpQixDQUFDO1FBQ3RDLHlCQUFvQixHQUFHLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3hELDZDQUF3QyxHQUFHLE9BQU8sQ0FDekQsNkNBQTZDLENBQzlDLENBQUM7UUFDTyxrREFBNkMsR0FBRyxPQUFPLENBQzlELGdEQUFnRCxDQUNqRCxDQUFDO1FBQ08sWUFBTyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMvQixvQkFBZSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0tBaUJwRDtJQWZDLGdCQUFnQixDQUFDLFFBQWdCO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ3BCLFFBQVE7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQWM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDcEIsTUFBTTtTQUNQLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQW9CLENBQUM7SUFDbkQsQ0FBQzs4R0EvQ1Usd0JBQXdCO2tHQUF4Qix3QkFBd0IsNE1DekJyQyxxM0VBdUVBLDJDRHZEWSxVQUFVLGtxQ0FBRSxZQUFZLDhCQUFFLG1CQUFtQixvQkFFeEM7WUFDYjtnQkFDRSxPQUFPLEVBQUUsZ0JBQWdCO2dCQUN6QixVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO2FBQy9EO1NBQ0Y7OzJGQUVVLHdCQUF3QjtrQkFicEMsU0FBUzsrQkFDRSx1QkFBdUIsY0FFckIsSUFBSSxXQUNQLENBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxtQkFBbUIsQ0FBQyxtQkFDdkMsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEM7d0JBQ2I7NEJBQ0UsT0FBTyxFQUFFLGdCQUFnQjs0QkFDekIsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQzt5QkFDL0Q7cUJBQ0Y7OEJBT1Esb0JBQW9CO3NCQUE1QixLQUFLO2dCQUlHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE91dHB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvcmVNb2R1bGUsIGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRhdGUtcmFuZ2UtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvcmVNb2R1bGUsIENvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB2aWV3UHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lcixcbiAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IGluamVjdChDb250cm9sQ29udGFpbmVyLCB7IHNraXBTZWxmOiB0cnVlIH0pXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERhdGVSYW5nZVBpY2tlckNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIGNvbXBvbmVudCB3aWxsIGJlIHJlYWN0aXZlIGFuZCB3aWxsIGVtaXQgdGhlIHVwZGF0ZWREYXRlIG9uIGV2ZXJ5IGNoYW5nZS5cbiAgICogT3RoZXJ3aXNlLCB0aGUgY29tcG9uZW50IHdpbGwgdXNlIGEgbm9uIGVtaXR0aW5nIHZhcmlhbnQgb2YgYSB0ZW1wbGF0ZS5cbiAgICovXG4gIEBJbnB1dCgpIGlzRW1pdHRpbmdEYXRlQ2hhbmdlID0gZmFsc2U7XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHRoZSBkaXNwbGF5IG9mIGZyb20gYW5kIHRvIGRhdGUgcGlja2VyIGxhYmVscy5cbiAgICovXG4gIEBJbnB1dCgpIHNob3dMYWJlbCA9IHRydWU7XG4gIEBPdXRwdXQoKSB1cGRhdGVkRGF0ZTogRXZlbnRFbWl0dGVyPHtcbiAgICBkYXRlRnJvbT86IHN0cmluZyB8IG51bGw7XG4gICAgZGF0ZVRvPzogc3RyaW5nIHwgbnVsbDtcbiAgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICBkYXRlRnJvbT86IHN0cmluZyB8IG51bGw7XG4gICAgZGF0ZVRvPzogc3RyaW5nIHwgbnVsbDtcbiAgfT4oKTtcblxuICByZWFkb25seSBEQVRFX0ZST00gPSAnZGF0ZUZyb20nO1xuICByZWFkb25seSBEQVRFX1RPID0gJ2RhdGVUbyc7XG4gIHJlYWRvbmx5IEZST01fREFURSA9IGdldHRleHQoJ0Zyb21gZGF0ZWAnKTtcbiAgcmVhZG9ubHkgSEFTX0VSUk9SID0gJ2hhcy1lcnJvcic7XG4gIHJlYWRvbmx5IElOVkFMSURfREFURV9USU1FID0gJ2ludmFsaWREYXRlVGltZSc7XG4gIHJlYWRvbmx5IFRISVNfREFURV9JU19JTlZBTElEID0gZ2V0dGV4dCgnVGhpcyBkYXRlIGlzIGludmFsaWQuJyk7XG4gIHJlYWRvbmx5IFRISVNfREFURV9JU19BRlRFUl9USEVfTEFTVF9BTExPV0VEX0RBVEUgPSBnZXR0ZXh0KFxuICAgICdUaGlzIGRhdGUgaXMgYWZ0ZXIgdGhlIGxhdGVzdCBhbGxvd2VkIGRhdGUuJ1xuICApO1xuICByZWFkb25seSBUSElTX0RBVEVfSVNfQkVGT1JFX1RIRV9FQVJMSUVTVF9BTExPV0VEX0RBVEUgPSBnZXR0ZXh0KFxuICAgICdUaGlzIGRhdGUgaXMgYmVmb3JlIHRoZSBlYXJsaWVzdCBhbGxvd2VkIGRhdGUuJ1xuICApO1xuICByZWFkb25seSBUT19EQVRFID0gZ2V0dGV4dCgnVG9gZGF0ZWAnKTtcbiAgcHJpdmF0ZSBwYXJlbnRDb250YWluZXIgPSBpbmplY3QoQ29udHJvbENvbnRhaW5lcik7XG5cbiAgb25EYXRlRnJvbUNoYW5nZShkYXRlRnJvbTogc3RyaW5nKSB7XG4gICAgdGhpcy51cGRhdGVkRGF0ZS5lbWl0KHtcbiAgICAgIGRhdGVGcm9tXG4gICAgfSk7XG4gIH1cblxuICBvbkRhdGVUb0NoYW5nZShkYXRlVG86IHN0cmluZykge1xuICAgIHRoaXMudXBkYXRlZERhdGUuZW1pdCh7XG4gICAgICBkYXRlVG9cbiAgICB9KTtcbiAgfVxuXG4gIGdldCBwYXJlbnRGb3JtR3JvdXAoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50Q29udGFpbmVyLmNvbnRyb2wgYXMgRm9ybUdyb3VwO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC04IGEtaS1jZW50ZXIgZmxleC13cmFwXCI+XG4gIDxjOHktZm9ybS1ncm91cFxuICAgIFtuZ0NsYXNzXT1cIltcbiAgICAgIHBhcmVudEZvcm1Hcm91cD8uY29udHJvbHMuZGF0ZUZyb20uZXJyb3JzID8gSEFTX0VSUk9SIDogJycsXG4gICAgICBpc0VtaXR0aW5nRGF0ZUNoYW5nZSA/ICdkLWZsZXggYS1pLWNlbnRlciBnYXAtNCBtLWItMCcgOiAnJ1xuICAgIF1cIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dMYWJlbFwiPlxuICAgICAgPGxhYmVsXG4gICAgICAgIFt0aXRsZV09XCJGUk9NX0RBVEUgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbZm9yXT1cIkRBVEVfRlJPTVwiXG4gICAgICA+XG4gICAgICAgIHt7IEZST01fREFURSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9sYWJlbD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8Yzh5LWRhdGUtdGltZS1waWNrZXJcbiAgICAgIGlkPVwiREFURV9GUk9NXCJcbiAgICAgIFttYXhEYXRlXT1cInBhcmVudEZvcm1Hcm91cD8udmFsdWUuZGF0ZVRvXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJGUk9NX0RBVEUgfCB0cmFuc2xhdGVcIlxuICAgICAgW2Zvcm1Db250cm9sXT1cInBhcmVudEZvcm1Hcm91cD8uY29udHJvbHMuZGF0ZUZyb21cIlxuICAgICAgW25nQ2xhc3NdPVwicGFyZW50Rm9ybUdyb3VwPy5jb250cm9scy5kYXRlRnJvbS5lcnJvcnMgPyBIQVNfRVJST1IgOiAnJ1wiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkRhdGVGcm9tQ2hhbmdlKCRldmVudClcIlxuICAgID48L2M4eS1kYXRlLXRpbWUtcGlja2VyPlxuICAgIDxjOHktbWVzc2FnZXNcbiAgICAgIGNsYXNzPVwidGV4dC1ub3dyYXBcIlxuICAgICAgW3Nob3ddPVwicGFyZW50Rm9ybUdyb3VwPy5jb250cm9scy5kYXRlRnJvbS5lcnJvcnNcIlxuICAgID5cbiAgICAgIDxjOHktbWVzc2FnZVxuICAgICAgICBuYW1lPVwiZGF0ZUFmdGVyUmFuZ2VNYXhcIlxuICAgICAgICBbdGV4dF09XCJUSElTX0RBVEVfSVNfQUZURVJfVEhFX0xBU1RfQUxMT1dFRF9EQVRFIHwgdHJhbnNsYXRlXCJcbiAgICAgID48L2M4eS1tZXNzYWdlPlxuICAgICAgPGM4eS1tZXNzYWdlXG4gICAgICAgIG5hbWU9XCJJTlZBTElEX0RBVEVfVElNRVwiXG4gICAgICAgIFt0ZXh0XT1cIlRISVNfREFURV9JU19JTlZBTElEIHwgdHJhbnNsYXRlXCJcbiAgICAgID48L2M4eS1tZXNzYWdlPlxuICAgIDwvYzh5LW1lc3NhZ2VzPlxuICA8L2M4eS1mb3JtLWdyb3VwPlxuICA8Yzh5LWZvcm0tZ3JvdXBcbiAgICBbbmdDbGFzc109XCJbXG4gICAgICBwYXJlbnRGb3JtR3JvdXA/LmNvbnRyb2xzLmRhdGVUby5lcnJvcnMgPyBIQVNfRVJST1IgOiAnJyxcbiAgICAgIGlzRW1pdHRpbmdEYXRlQ2hhbmdlID8gJ2QtZmxleCBhLWktY2VudGVyIGdhcC00IG0tYi0wJyA6ICcnXG4gICAgXVwiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0xhYmVsXCI+XG4gICAgICA8bGFiZWxcbiAgICAgICAgW3RpdGxlXT1cIlRPX0RBVEUgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbZm9yXT1cIkRBVEVfVE9cIlxuICAgICAgPlxuICAgICAgICB7eyBUT19EQVRFIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2xhYmVsPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxjOHktZGF0ZS10aW1lLXBpY2tlclxuICAgICAgaWQ9XCJEQVRFX1RPXCJcbiAgICAgIFttaW5EYXRlXT1cInBhcmVudEZvcm1Hcm91cD8udmFsdWUuZGF0ZUZyb21cIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cIlRPX0RBVEUgfCB0cmFuc2xhdGVcIlxuICAgICAgW2Zvcm1Db250cm9sXT1cInBhcmVudEZvcm1Hcm91cD8uY29udHJvbHMuZGF0ZVRvXCJcbiAgICAgIFtuZ0NsYXNzXT1cInBhcmVudEZvcm1Hcm91cD8uY29udHJvbHMuZGF0ZVRvLmVycm9ycyA/IEhBU19FUlJPUiA6ICcnXCJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRGF0ZVRvQ2hhbmdlKCRldmVudClcIlxuICAgID48L2M4eS1kYXRlLXRpbWUtcGlja2VyPlxuICAgIDxjOHktbWVzc2FnZXMgW3Nob3ddPVwicGFyZW50Rm9ybUdyb3VwPy5jb250cm9scy5kYXRlVG8uZXJyb3JzXCI+XG4gICAgICA8Yzh5LW1lc3NhZ2VcbiAgICAgICAgbmFtZT1cImRhdGVCZWZvcmVSYW5nZU1pblwiXG4gICAgICAgIFt0ZXh0XT1cIlRISVNfREFURV9JU19CRUZPUkVfVEhFX0VBUkxJRVNUX0FMTE9XRURfREFURSB8IHRyYW5zbGF0ZVwiXG4gICAgICA+PC9jOHktbWVzc2FnZT5cbiAgICAgIDxjOHktbWVzc2FnZVxuICAgICAgICBuYW1lPVwiSU5WQUxJRF9EQVRFX1RJTUVcIlxuICAgICAgICBbdGV4dF09XCJUSElTX0RBVEVfSVNfSU5WQUxJRCB8IHRyYW5zbGF0ZVwiXG4gICAgICA+PC9jOHktbWVzc2FnZT5cbiAgICA8L2M4eS1tZXNzYWdlcz5cbiAgPC9jOHktZm9ybS1ncm91cD5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from './datapoints-table-config/datapoints-table-config.component';
|
|
2
|
+
export * from './datapoints-table-view/adjust-aggregated-time-range.pipe';
|
|
3
|
+
export * from './datapoints-table-view/apply-range-class.pipe';
|
|
4
|
+
export * from './datapoints-table-view/datapoints-reload/datapoints-reload.component';
|
|
5
|
+
export * from './datapoints-table-view/datapoints-table-view.component';
|
|
6
|
+
export * from './datapoints-table-view/datapoints-table-view.service';
|
|
7
|
+
export * from './datapoints-table-view/datapoints-table/datapoints-table.component';
|
|
8
|
+
export * from './datapoints-table-view/virtual-scroll-listener.directive';
|
|
9
|
+
export * from './datapoints-table-widget.model';
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi93aWRnZXRzL2ltcGxlbWVudGF0aW9ucy9kYXRhcG9pbnRzLXRhYmxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNkRBQTZELENBQUM7QUFDNUUsY0FBYywyREFBMkQsQ0FBQztBQUMxRSxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsdUVBQXVFLENBQUM7QUFDdEYsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMscUVBQXFFLENBQUM7QUFDcEYsY0FBYywyREFBMkQsQ0FBQztBQUMxRSxjQUFjLGlDQUFpQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kYXRhcG9pbnRzLXRhYmxlLWNvbmZpZy9kYXRhcG9pbnRzLXRhYmxlLWNvbmZpZy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhcG9pbnRzLXRhYmxlLXZpZXcvYWRqdXN0LWFnZ3JlZ2F0ZWQtdGltZS1yYW5nZS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0YXBvaW50cy10YWJsZS12aWV3L2FwcGx5LXJhbmdlLWNsYXNzLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhcG9pbnRzLXRhYmxlLXZpZXcvZGF0YXBvaW50cy1yZWxvYWQvZGF0YXBvaW50cy1yZWxvYWQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZGF0YXBvaW50cy10YWJsZS12aWV3L2RhdGFwb2ludHMtdGFibGUtdmlldy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhcG9pbnRzLXRhYmxlLXZpZXcvZGF0YXBvaW50cy10YWJsZS12aWV3LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhcG9pbnRzLXRhYmxlLXZpZXcvZGF0YXBvaW50cy10YWJsZS9kYXRhcG9pbnRzLXRhYmxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGFwb2ludHMtdGFibGUtdmlldy92aXJ0dWFsLXNjcm9sbC1saXN0ZW5lci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhcG9pbnRzLXRhYmxlLXdpZGdldC5tb2RlbCc7XG4iXX0=
|
|
@@ -29,7 +29,7 @@ export class MapWidgetConfigComponent {
|
|
|
29
29
|
};
|
|
30
30
|
this.canAutoCenter = true;
|
|
31
31
|
this.isPositionedDevice = false;
|
|
32
|
-
this.
|
|
32
|
+
this.refreshOption = 'none';
|
|
33
33
|
this.destroyed$ = new Subject();
|
|
34
34
|
// JS precision for floating point number is 15 for 64-bit and because of this provided to leaflet are recalculated
|
|
35
35
|
// to values almost-like provided (e.g. 0 is recalculated to 1.46e-14; for 180 it's 180.00000000000003).
|
|
@@ -119,9 +119,13 @@ export class MapWidgetConfigComponent {
|
|
|
119
119
|
];
|
|
120
120
|
this.changeCenter();
|
|
121
121
|
}
|
|
122
|
-
|
|
123
|
-
this.formConfig.realtime = this.
|
|
124
|
-
|
|
122
|
+
updateRefreshOption() {
|
|
123
|
+
this.formConfig.realtime = this.refreshOption === 'realtime';
|
|
124
|
+
this.config.widgetInstanceGlobalAutoRefreshContext =
|
|
125
|
+
this.refreshOption === 'dashboard-auto-refresh-context';
|
|
126
|
+
this.formConfig.widgetInstanceGlobalAutoRefreshContext =
|
|
127
|
+
this.refreshOption === 'dashboard-auto-refresh-context';
|
|
128
|
+
if (this.refreshOption === 'interval') {
|
|
125
129
|
this.formConfig.refreshInterval ??= 5000;
|
|
126
130
|
}
|
|
127
131
|
else {
|
|
@@ -131,7 +135,7 @@ export class MapWidgetConfigComponent {
|
|
|
131
135
|
this.formConfig.follow = false;
|
|
132
136
|
}
|
|
133
137
|
this.config.widgetInstanceGlobalTimeContext =
|
|
134
|
-
this.
|
|
138
|
+
this.refreshOption === 'dashboard-realtime-context';
|
|
135
139
|
if (this.config.widgetInstanceGlobalTimeContext) {
|
|
136
140
|
this.formConfig.realtime = null;
|
|
137
141
|
}
|
|
@@ -144,15 +148,15 @@ export class MapWidgetConfigComponent {
|
|
|
144
148
|
async updateAsset() {
|
|
145
149
|
this.canAutoCenter = this.mapService.hasPosition(this.config.device);
|
|
146
150
|
this.isPositionedDevice = this.mapService.isPositionedDevice(this.config.device);
|
|
147
|
-
this.
|
|
148
|
-
this.
|
|
151
|
+
this.refreshOption = this.getRefreshOption();
|
|
152
|
+
this.updateRefreshOption();
|
|
149
153
|
const { data, paging } = await this.mapService.getAllPositionMOs(this.config.device);
|
|
150
154
|
this.assets = data;
|
|
151
155
|
if (paging.totalPages > 1) {
|
|
152
156
|
this.alertService.danger(gettext('It might be possible that assets are not shown in the preview, as the current selection has more than 500 assets and the preview only supports a maximum of 500 assets.'));
|
|
153
157
|
}
|
|
154
158
|
}
|
|
155
|
-
|
|
159
|
+
getRefreshOption() {
|
|
156
160
|
let option = 'none';
|
|
157
161
|
if (this.formConfig.realtime) {
|
|
158
162
|
option = 'realtime';
|
|
@@ -163,6 +167,10 @@ export class MapWidgetConfigComponent {
|
|
|
163
167
|
else if (this.config.widgetInstanceGlobalTimeContext) {
|
|
164
168
|
option = 'dashboard-realtime-context';
|
|
165
169
|
}
|
|
170
|
+
else if (this.config.widgetInstanceGlobalAutoRefreshContext ||
|
|
171
|
+
this.formConfig.widgetInstanceGlobalAutoRefreshContext) {
|
|
172
|
+
option = 'dashboard-auto-refresh-context';
|
|
173
|
+
}
|
|
166
174
|
const isNotAllowedOption = (!this.isPositionedDevice && option === 'dashboard-realtime-context') ||
|
|
167
175
|
(!this.isPositionedDevice && option === 'realtime') ||
|
|
168
176
|
(this.isPositionedDevice && option === 'interval');
|
|
@@ -180,7 +188,7 @@ export class MapWidgetConfigComponent {
|
|
|
180
188
|
this.previewMap.addMarkerToMap(this.centerIcon);
|
|
181
189
|
}
|
|
182
190
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: MapWidgetConfigComponent, deps: [{ token: i1.MapService }, { token: i2.AlertService }, { token: i3.TranslateService }, { token: MAP_DEFAULT_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
183
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: MapWidgetConfigComponent, isStandalone: true, selector: "c8y-map-widget-config", inputs: { config: "config" }, viewQueries: [{ propertyName: "previewMap", first: true, predicate: MapComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"row p-t-16\"\n *ngIf=\"formConfig\"\n>\n <div class=\"col-xs-2\">\n <c8y-form-group class=\"m-b-0 text-center form-group-sm\">\n <label translate>Marker icon</label>\n <c8y-icon-selector-wrapper\n [canRemoveIcon]=\"true\"\n [selectedIcon]=\"formConfig.icon\"\n (onSelect)=\"selectIcon($event)\"\n ></c8y-icon-selector-wrapper>\n </c8y-form-group>\n </div>\n <div class=\"col-xs-10\">\n <div class=\"row tight-grid separator-bottom\">\n <div class=\"col-xs-4\">\n <div class=\"form-group form-group-sm\">\n <label translate>Zoom level</label>\n <c8y-range\n class=\"label-bottom\"\n name=\"zoomLevel\"\n #range\n [(ngModel)]=\"formConfig.zoomLevel\"\n (change)=\"zoomLevelChanged()\"\n >\n <input\n type=\"range\"\n min=\"2\"\n max=\"18\"\n step=\"1\"\n />\n </c8y-range>\n </div>\n </div>\n <div class=\"col-xs-8\">\n <c8y-form-group class=\"form-group-sm m-b-8\">\n <label translate>Center bound</label>\n <div class=\"input-group input-group-sm\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'lat.`latitude`' | translate }}\"\n name=\"centerLat\"\n type=\"number\"\n required\n [(ngModel)]=\"formConfig.center[0]\"\n (change)=\"changeCenter()\"\n (keydown.enter)=\"changeCenterOnEnterKey($event)\"\n min=\"-90\"\n max=\"90\"\n step=\"0.1\"\n />\n <input\n class=\"form-control\"\n placeholder=\"{{ 'lng.`longitude`' | translate }}\"\n name=\"centerLng\"\n type=\"number\"\n min=\"-180\"\n max=\"180\"\n required\n [(ngModel)]=\"formConfig.center[1]\"\n (change)=\"changeCenter()\"\n (keydown.enter)=\"changeCenterOnEnterKey($event)\"\n min=\"-180\"\n max=\"180\"\n step=\"0.1\"\n />\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Use your location' | translate\"\n [tooltip]=\"'Use your location' | translate\"\n placement=\"top\"\n container=\"body\"\n (click)=\"useOwnPosition()\"\n >\n <i\n class=\"icon-14\"\n c8yIcon=\"location-arrow\"\n ></i>\n </button>\n </div>\n <div\n class=\"input-group-btn\"\n *ngIf=\"canAutoCenter\"\n >\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Use selected asset location' | translate\"\n [tooltip]=\"'Use selected asset location' | translate\"\n placement=\"top\"\n container=\"body\"\n (click)=\"centerToAsset()\"\n >\n <i\n class=\"icon-14\"\n c8yIcon=\"location\"\n ></i>\n </button>\n </div>\n </div>\n <c8y-messages\n [helpMessage]=\"'Drag the map to the desired position' | translate\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row tight-grid p-t-8 d-flex a-i-center\">\n <div class=\"col-xs-6\">\n <c8y-form-group class=\"m-b-0 form-group-sm\">\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n title=\"{{ 'Refresh options`options for refreshing a view`' | translate }}\"\n id=\"selectExample\"\n name=\"refreshSelection\"\n [(ngModel)]=\"refreshOptions\"\n (change)=\"updateRefreshOptions()\"\n >\n <option\n [title]=\"'Only refreshing on interaction' | translate\"\n value=\"none\"\n translate\n >\n No automatic refresh\n </option>\n <option\n [title]=\"'Refreshing after the given interval and on interaction' | translate\"\n value=\"interval\"\n *ngIf=\"!isPositionedDevice\"\n translate\n >\n Use refresh interval\n </option>\n <option\n [title]=\"'Live updating on each position change' | translate\"\n value=\"realtime\"\n *ngIf=\"isPositionedDevice\"\n translate\n >\n Realtime\n </option>\n <option\n [title]=\"'Bind widget to dashboard realtime context' | translate\"\n value=\"dashboard-realtime-context\"\n *ngIf=\"isPositionedDevice\"\n translate\n >\n Dashboard realtime context\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-xs-8\">\n <div class=\"form-group form-group-sm m-b-0\">\n <c8y-range\n class=\"label-bottom\"\n name=\"refreshInterval\"\n #intervalRange\n *ngIf=\"refreshOptions === 'interval'\"\n [(ngModel)]=\"formConfig.refreshInterval\"\n >\n <ng-template #c8yRangeValue>\n <div>\n <span\n [translateParams]=\"{ intervalInSeconds: intervalRange.value * 0.001 }\"\n translate\n ngNonBindable\n >\n {{ intervalInSeconds }} s\n </span>\n </div>\n </ng-template>\n <input\n type=\"range\"\n min=\"5000\"\n max=\"100000\"\n step=\"1000\"\n />\n </c8y-range>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline\"\n *ngIf=\"refreshOptions === 'realtime' || refreshOptions === 'dashboard-realtime-context'\"\n >\n <input\n name=\"follow\"\n type=\"checkbox\"\n [(ngModel)]=\"formConfig.follow\"\n />\n <span></span>\n <span\n class=\"text-12\"\n translate\n >\n Follow selected\n </span>\n </label>\n </div>\n </div>\n </div>\n</div>\n\n<div\n class=\"p-t-16 p-b-16\"\n style=\"width: 100%; height: 240px\"\n>\n <c8y-map\n *ngIf=\"config.mapConfig\"\n [assets]=\"assets\"\n [config]=\"config.mapConfig\"\n (onMove)=\"onPreviewMapMove($event)\"\n (onZoomStart)=\"onPreviewZoomStart()\"\n (onZoomEnd)=\"onPreviewZoomEnd($event)\"\n (onInit)=\"previewMapInit($event)\"\n ></c8y-map>\n</div>\n", dependencies: [{ kind: "ngmodule", type: NgCommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: NgFormsModule }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i5.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "directive", type: i2.MaxValidationDirective, selector: "[max]", inputs: ["max"] }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: i2.MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: i2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i2.RangeDirective, selector: "input[type=\"range\"]" }, { kind: "component", type: i2.RangeComponent, selector: "c8y-range", inputs: ["valueDisplayMode"] }, { kind: "ngmodule", type: IconSelectorModule }, { kind: "component", type: i6.IconSelectorWrapperComponent, selector: "c8y-icon-selector-wrapper", inputs: ["canRemoveIcon", "selectedIcon", "iconSize"], outputs: ["onSelect"] }, { kind: "ngmodule", type: MapModule }, { kind: "component", type: i1.MapComponent, selector: "c8y-map", inputs: ["config", "assets", "polyline$", "polylineOptions"], outputs: ["onRealtimeUpdate", "onMove", "onMoveEnd", "onZoomStart", "onZoomEnd", "onMap", "onInit"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i7.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
|
|
191
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: MapWidgetConfigComponent, isStandalone: true, selector: "c8y-map-widget-config", inputs: { config: "config" }, viewQueries: [{ propertyName: "previewMap", first: true, predicate: MapComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"row p-t-16\"\n *ngIf=\"formConfig\"\n>\n <div class=\"col-xs-2\">\n <c8y-form-group class=\"m-b-0 text-center form-group-sm\">\n <label translate>Marker icon</label>\n <c8y-icon-selector-wrapper\n [canRemoveIcon]=\"true\"\n [selectedIcon]=\"formConfig.icon\"\n (onSelect)=\"selectIcon($event)\"\n ></c8y-icon-selector-wrapper>\n </c8y-form-group>\n </div>\n <div class=\"col-xs-10\">\n <div class=\"row tight-grid separator-bottom\">\n <div class=\"col-xs-4\">\n <div class=\"form-group form-group-sm\">\n <label translate>Zoom level</label>\n <c8y-range\n class=\"label-bottom\"\n name=\"zoomLevel\"\n #range\n [(ngModel)]=\"formConfig.zoomLevel\"\n (change)=\"zoomLevelChanged()\"\n >\n <input\n type=\"range\"\n min=\"2\"\n max=\"18\"\n step=\"1\"\n />\n </c8y-range>\n </div>\n </div>\n <div class=\"col-xs-8\">\n <c8y-form-group class=\"form-group-sm m-b-8\">\n <label translate>Center bound</label>\n <div class=\"input-group input-group-sm\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'lat.`latitude`' | translate }}\"\n name=\"centerLat\"\n type=\"number\"\n required\n [(ngModel)]=\"formConfig.center[0]\"\n (change)=\"changeCenter()\"\n (keydown.enter)=\"changeCenterOnEnterKey($event)\"\n min=\"-90\"\n max=\"90\"\n step=\"0.1\"\n />\n <input\n class=\"form-control\"\n placeholder=\"{{ 'lng.`longitude`' | translate }}\"\n name=\"centerLng\"\n type=\"number\"\n required\n min=\"-180\"\n max=\"180\"\n [(ngModel)]=\"formConfig.center[1]\"\n (change)=\"changeCenter()\"\n (keydown.enter)=\"changeCenterOnEnterKey($event)\"\n min=\"-180\"\n max=\"180\"\n step=\"0.1\"\n />\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Use your location' | translate\"\n [tooltip]=\"'Use your location' | translate\"\n placement=\"top\"\n container=\"body\"\n (click)=\"useOwnPosition()\"\n >\n <i\n class=\"icon-14\"\n c8yIcon=\"location-arrow\"\n ></i>\n </button>\n </div>\n <div\n class=\"input-group-btn\"\n *ngIf=\"canAutoCenter\"\n >\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Use selected asset location' | translate\"\n [tooltip]=\"'Use selected asset location' | translate\"\n placement=\"top\"\n container=\"body\"\n (click)=\"centerToAsset()\"\n >\n <i\n class=\"icon-14\"\n c8yIcon=\"location\"\n ></i>\n </button>\n </div>\n </div>\n <c8y-messages\n [helpMessage]=\"'Drag the map to the desired position' | translate\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row tight-grid p-t-8 d-flex a-i-center\">\n <div class=\"col-xs-6\">\n <c8y-form-group class=\"m-b-0 form-group-sm\">\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n title=\"{{ 'Refresh options`options for refreshing a view`' | translate }}\"\n id=\"selectExample\"\n name=\"refreshSelection\"\n [(ngModel)]=\"refreshOption\"\n (change)=\"updateRefreshOption()\"\n >\n <option\n [title]=\"'Only refreshing on interaction' | translate\"\n value=\"none\"\n translate\n >\n No automatic refresh\n </option>\n <option\n [title]=\"'Refreshing after the given interval and on interaction' | translate\"\n value=\"interval\"\n *ngIf=\"!isPositionedDevice\"\n translate\n >\n Use refresh interval\n </option>\n <option\n [title]=\"\n 'Refreshing after the given interval and on interaction, synchronized globally'\n | translate\n \"\n value=\"dashboard-auto-refresh-context\"\n *ngIf=\"!isPositionedDevice\"\n translate\n >\n Use global refresh interval\n </option>\n <option\n [title]=\"'Live updating on each position change' | translate\"\n value=\"realtime\"\n *ngIf=\"isPositionedDevice\"\n translate\n >\n Realtime\n </option>\n <option\n [title]=\"'Bind widget to dashboard realtime context' | translate\"\n value=\"dashboard-realtime-context\"\n *ngIf=\"isPositionedDevice\"\n translate\n >\n Dashboard realtime context\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-xs-8\">\n <div class=\"form-group form-group-sm m-b-0\">\n <c8y-range\n class=\"label-bottom\"\n name=\"refreshInterval\"\n #intervalRange\n *ngIf=\"refreshOption === 'interval'\"\n [(ngModel)]=\"formConfig.refreshInterval\"\n >\n <ng-template #c8yRangeValue>\n <div>\n <span\n [translateParams]=\"{ intervalInSeconds: intervalRange.value * 0.001 }\"\n translate\n ngNonBindable\n >\n {{ intervalInSeconds }} s\n </span>\n </div>\n </ng-template>\n <input\n type=\"range\"\n min=\"5000\"\n max=\"100000\"\n step=\"1000\"\n />\n </c8y-range>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline\"\n *ngIf=\"refreshOption === 'realtime' || refreshOption === 'dashboard-realtime-context'\"\n >\n <input\n name=\"follow\"\n type=\"checkbox\"\n [(ngModel)]=\"formConfig.follow\"\n />\n <span></span>\n <span\n class=\"text-12\"\n translate\n >\n Follow selected\n </span>\n </label>\n </div>\n </div>\n </div>\n</div>\n\n<div\n class=\"p-t-16 p-b-16\"\n style=\"width: 100%; height: 240px\"\n>\n <c8y-map\n *ngIf=\"config.mapConfig\"\n [assets]=\"assets\"\n [config]=\"config.mapConfig\"\n (onMove)=\"onPreviewMapMove($event)\"\n (onZoomStart)=\"onPreviewZoomStart()\"\n (onZoomEnd)=\"onPreviewZoomEnd($event)\"\n (onInit)=\"previewMapInit($event)\"\n ></c8y-map>\n</div>\n", dependencies: [{ kind: "ngmodule", type: NgCommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: NgFormsModule }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i5.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "directive", type: i2.MaxValidationDirective, selector: "[max]", inputs: ["max"] }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: i2.MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: i2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i2.RangeDirective, selector: "input[type=\"range\"]" }, { kind: "component", type: i2.RangeComponent, selector: "c8y-range", inputs: ["valueDisplayMode"] }, { kind: "ngmodule", type: IconSelectorModule }, { kind: "component", type: i6.IconSelectorWrapperComponent, selector: "c8y-icon-selector-wrapper", inputs: ["canRemoveIcon", "selectedIcon", "iconSize"], outputs: ["onSelect"] }, { kind: "ngmodule", type: MapModule }, { kind: "component", type: i1.MapComponent, selector: "c8y-map", inputs: ["config", "assets", "polyline$", "polylineOptions"], outputs: ["onRealtimeUpdate", "onMove", "onMoveEnd", "onZoomStart", "onZoomEnd", "onMap", "onInit"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i7.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
|
|
184
192
|
}
|
|
185
193
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: MapWidgetConfigComponent, decorators: [{
|
|
186
194
|
type: Component,
|
|
@@ -193,7 +201,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
193
201
|
MapModule,
|
|
194
202
|
AssetLinkPipe,
|
|
195
203
|
TooltipModule
|
|
196
|
-
], template: "<div\n class=\"row p-t-16\"\n *ngIf=\"formConfig\"\n>\n <div class=\"col-xs-2\">\n <c8y-form-group class=\"m-b-0 text-center form-group-sm\">\n <label translate>Marker icon</label>\n <c8y-icon-selector-wrapper\n [canRemoveIcon]=\"true\"\n [selectedIcon]=\"formConfig.icon\"\n (onSelect)=\"selectIcon($event)\"\n ></c8y-icon-selector-wrapper>\n </c8y-form-group>\n </div>\n <div class=\"col-xs-10\">\n <div class=\"row tight-grid separator-bottom\">\n <div class=\"col-xs-4\">\n <div class=\"form-group form-group-sm\">\n <label translate>Zoom level</label>\n <c8y-range\n class=\"label-bottom\"\n name=\"zoomLevel\"\n #range\n [(ngModel)]=\"formConfig.zoomLevel\"\n (change)=\"zoomLevelChanged()\"\n >\n <input\n type=\"range\"\n min=\"2\"\n max=\"18\"\n step=\"1\"\n />\n </c8y-range>\n </div>\n </div>\n <div class=\"col-xs-8\">\n <c8y-form-group class=\"form-group-sm m-b-8\">\n <label translate>Center bound</label>\n <div class=\"input-group input-group-sm\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'lat.`latitude`' | translate }}\"\n name=\"centerLat\"\n type=\"number\"\n required\n [(ngModel)]=\"formConfig.center[0]\"\n (change)=\"changeCenter()\"\n (keydown.enter)=\"changeCenterOnEnterKey($event)\"\n min=\"-90\"\n max=\"90\"\n step=\"0.1\"\n />\n <input\n class=\"form-control\"\n placeholder=\"{{ 'lng.`longitude`' | translate }}\"\n name=\"centerLng\"\n type=\"number\"\n min=\"-180\"\n max=\"180\"\n
|
|
204
|
+
], template: "<div\n class=\"row p-t-16\"\n *ngIf=\"formConfig\"\n>\n <div class=\"col-xs-2\">\n <c8y-form-group class=\"m-b-0 text-center form-group-sm\">\n <label translate>Marker icon</label>\n <c8y-icon-selector-wrapper\n [canRemoveIcon]=\"true\"\n [selectedIcon]=\"formConfig.icon\"\n (onSelect)=\"selectIcon($event)\"\n ></c8y-icon-selector-wrapper>\n </c8y-form-group>\n </div>\n <div class=\"col-xs-10\">\n <div class=\"row tight-grid separator-bottom\">\n <div class=\"col-xs-4\">\n <div class=\"form-group form-group-sm\">\n <label translate>Zoom level</label>\n <c8y-range\n class=\"label-bottom\"\n name=\"zoomLevel\"\n #range\n [(ngModel)]=\"formConfig.zoomLevel\"\n (change)=\"zoomLevelChanged()\"\n >\n <input\n type=\"range\"\n min=\"2\"\n max=\"18\"\n step=\"1\"\n />\n </c8y-range>\n </div>\n </div>\n <div class=\"col-xs-8\">\n <c8y-form-group class=\"form-group-sm m-b-8\">\n <label translate>Center bound</label>\n <div class=\"input-group input-group-sm\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'lat.`latitude`' | translate }}\"\n name=\"centerLat\"\n type=\"number\"\n required\n [(ngModel)]=\"formConfig.center[0]\"\n (change)=\"changeCenter()\"\n (keydown.enter)=\"changeCenterOnEnterKey($event)\"\n min=\"-90\"\n max=\"90\"\n step=\"0.1\"\n />\n <input\n class=\"form-control\"\n placeholder=\"{{ 'lng.`longitude`' | translate }}\"\n name=\"centerLng\"\n type=\"number\"\n required\n min=\"-180\"\n max=\"180\"\n [(ngModel)]=\"formConfig.center[1]\"\n (change)=\"changeCenter()\"\n (keydown.enter)=\"changeCenterOnEnterKey($event)\"\n min=\"-180\"\n max=\"180\"\n step=\"0.1\"\n />\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Use your location' | translate\"\n [tooltip]=\"'Use your location' | translate\"\n placement=\"top\"\n container=\"body\"\n (click)=\"useOwnPosition()\"\n >\n <i\n class=\"icon-14\"\n c8yIcon=\"location-arrow\"\n ></i>\n </button>\n </div>\n <div\n class=\"input-group-btn\"\n *ngIf=\"canAutoCenter\"\n >\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Use selected asset location' | translate\"\n [tooltip]=\"'Use selected asset location' | translate\"\n placement=\"top\"\n container=\"body\"\n (click)=\"centerToAsset()\"\n >\n <i\n class=\"icon-14\"\n c8yIcon=\"location\"\n ></i>\n </button>\n </div>\n </div>\n <c8y-messages\n [helpMessage]=\"'Drag the map to the desired position' | translate\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row tight-grid p-t-8 d-flex a-i-center\">\n <div class=\"col-xs-6\">\n <c8y-form-group class=\"m-b-0 form-group-sm\">\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n title=\"{{ 'Refresh options`options for refreshing a view`' | translate }}\"\n id=\"selectExample\"\n name=\"refreshSelection\"\n [(ngModel)]=\"refreshOption\"\n (change)=\"updateRefreshOption()\"\n >\n <option\n [title]=\"'Only refreshing on interaction' | translate\"\n value=\"none\"\n translate\n >\n No automatic refresh\n </option>\n <option\n [title]=\"'Refreshing after the given interval and on interaction' | translate\"\n value=\"interval\"\n *ngIf=\"!isPositionedDevice\"\n translate\n >\n Use refresh interval\n </option>\n <option\n [title]=\"\n 'Refreshing after the given interval and on interaction, synchronized globally'\n | translate\n \"\n value=\"dashboard-auto-refresh-context\"\n *ngIf=\"!isPositionedDevice\"\n translate\n >\n Use global refresh interval\n </option>\n <option\n [title]=\"'Live updating on each position change' | translate\"\n value=\"realtime\"\n *ngIf=\"isPositionedDevice\"\n translate\n >\n Realtime\n </option>\n <option\n [title]=\"'Bind widget to dashboard realtime context' | translate\"\n value=\"dashboard-realtime-context\"\n *ngIf=\"isPositionedDevice\"\n translate\n >\n Dashboard realtime context\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-xs-8\">\n <div class=\"form-group form-group-sm m-b-0\">\n <c8y-range\n class=\"label-bottom\"\n name=\"refreshInterval\"\n #intervalRange\n *ngIf=\"refreshOption === 'interval'\"\n [(ngModel)]=\"formConfig.refreshInterval\"\n >\n <ng-template #c8yRangeValue>\n <div>\n <span\n [translateParams]=\"{ intervalInSeconds: intervalRange.value * 0.001 }\"\n translate\n ngNonBindable\n >\n {{ intervalInSeconds }} s\n </span>\n </div>\n </ng-template>\n <input\n type=\"range\"\n min=\"5000\"\n max=\"100000\"\n step=\"1000\"\n />\n </c8y-range>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline\"\n *ngIf=\"refreshOption === 'realtime' || refreshOption === 'dashboard-realtime-context'\"\n >\n <input\n name=\"follow\"\n type=\"checkbox\"\n [(ngModel)]=\"formConfig.follow\"\n />\n <span></span>\n <span\n class=\"text-12\"\n translate\n >\n Follow selected\n </span>\n </label>\n </div>\n </div>\n </div>\n</div>\n\n<div\n class=\"p-t-16 p-b-16\"\n style=\"width: 100%; height: 240px\"\n>\n <c8y-map\n *ngIf=\"config.mapConfig\"\n [assets]=\"assets\"\n [config]=\"config.mapConfig\"\n (onMove)=\"onPreviewMapMove($event)\"\n (onZoomStart)=\"onPreviewZoomStart()\"\n (onZoomEnd)=\"onPreviewZoomEnd($event)\"\n (onInit)=\"previewMapInit($event)\"\n ></c8y-map>\n</div>\n" }]
|
|
197
205
|
}], ctorParameters: () => [{ type: i1.MapService }, { type: i2.AlertService }, { type: i3.TranslateService }, { type: i8.Observable, decorators: [{
|
|
198
206
|
type: Inject,
|
|
199
207
|
args: [MAP_DEFAULT_CONFIG]
|
|
@@ -203,4 +211,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
203
211
|
type: ViewChild,
|
|
204
212
|
args: [MapComponent]
|
|
205
213
|
}] } });
|
|
206
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXdpZGdldC1jb25maWcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvbWFwL21hcC13aWRnZXQtY29uZmlnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3dpZGdldHMvaW1wbGVtZW50YXRpb25zL21hcC9tYXAtd2lkZ2V0LWNvbmZpZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBS0wsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLElBQUksY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsSUFBSSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUNMLFlBQVksRUFDWixhQUFhLEVBQ2IsWUFBWSxFQUNaLFdBQVcsRUFDWCxPQUFPLEVBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBRUwsa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixTQUFTLEVBQ1QsVUFBVSxFQUVYLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7OztBQWtCdEQsTUFBTSxPQUFP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RCxJQUFJO1NBQ0wsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7OEdBbk1VLHdCQUF3Qix3R0EyQnpCLGtCQUFrQjtrR0EzQmpCLHdCQUF3QiwySkFvQnhCLFlBQVkscUVDekV6Qiw4aU9BMk5BLDJDRGhMSSxjQUFjLGtJQUNkLGFBQWEsKzZEQUNiLFlBQVkseVJBQ1osV0FBVyw0eEJBQ1gsa0JBQWtCLGlOQUNsQixTQUFTLG9RQUVULGFBQWEsdWpCQVZBLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDOzsyRkFheEQsd0JBQXdCO2tCQWhCcEMsU0FBUzsrQkFDRSx1QkFBdUIsaUJBRWxCLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDLGNBQ3ZELElBQUksV0FDUDt3QkFDUCxjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGtCQUFrQjt3QkFDbEIsU0FBUzt3QkFDVCxhQUFhO3dCQUNiLGFBQWE7cUJBQ2Q7OzBCQTZCRSxNQUFNOzJCQUFDLGtCQUFrQjt5Q0ExQm5CLE1BQU07c0JBQWQsS0FBSztnQkFvQk4sVUFBVTtzQkFEVCxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSBhcyBOZ0NvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSBhcyBOZ0Zvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgQWxlcnRTZXJ2aWNlLFxuICBBc3NldExpbmtQaXBlLFxuICBDb21tb25Nb2R1bGUsXG4gIEZvcm1zTW9kdWxlLFxuICBnZXR0ZXh0XG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBNYXBEZWZhdWx0Q29uZmlnIH0gZnJvbSAnQGM4eS9vcHRpb25zJztcbmltcG9ydCB7XG4gIENsdXN0ZXJNYXBDb25maWcsXG4gIE1BUF9ERUZBVUxUX0NPTkZJRyxcbiAgTWFwQ29tcG9uZW50LFxuICBNYXBNb2R1bGUsXG4gIE1hcFNlcnZpY2UsXG4gIFBvc2l0aW9uTWFuYWdlZE9iamVjdFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL21hcCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgdHlwZSBMIGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWFwV2lkZ2V0Q29uZmlnLCBSZWZyZXNoT3B0aW9ucyB9IGZyb20gJy4vbWFwLXdpZGdldC5tb2RlbCc7XG5pbXBvcnQgeyBJY29uU2VsZWN0b3JNb2R1bGUgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2ljb24tc2VsZWN0b3InO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvdG9vbHRpcCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1tYXAtd2lkZ2V0LWNvbmZpZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXAtd2lkZ2V0LWNvbmZpZy5jb21wb25lbnQuaHRtbCcsXG4gIHZpZXdQcm92aWRlcnM6IFt7IHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsIHVzZUV4aXN0aW5nOiBOZ0Zvcm0gfV0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBOZ0NvbW1vbk1vZHVsZSxcbiAgICBOZ0Zvcm1zTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBJY29uU2VsZWN0b3JNb2R1bGUsXG4gICAgTWFwTW9kdWxlLFxuICAgIEFzc2V0TGlua1BpcGUsXG4gICAgVG9vbHRpcE1vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE1hcFdpZGdldENvbmZpZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBjb25maWc6IE1hcFdpZGdldENvbmZpZyA9IHtcbiAgICBtYXBDb25maWc6IHVuZGVmaW5lZFxuICB9O1xuXG4gIGZvcm1Db25maWc6IENsdXN0ZXJNYXBDb25maWc7XG5cbiAgY2FuQXV0b0NlbnRlciA9IHRydWU7XG4gIGlzUG9zaXRpb25lZERldmljZSA9IGZhbHNlO1xuICBhc3NldHM6IFBvc2l0aW9uTWFuYWdlZE9iamVjdFtdO1xuICByZWZyZXNoT3B0aW9uczogUmVmcmVzaE9wdGlvbnMgPSAnbm9uZSc7XG5cbiAgcHJpdmF0ZSBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBsZWFmbGV0OiB0eXBlb2YgTDtcbiAgcHJpdmF0ZSBjZW50ZXJJY29uOiBMLk1hcmtlcjtcbiAgLy8gSlMgcHJlY2lzaW9uIGZvciBmbG9hdGluZyBwb2ludCBudW1iZXIgaXMgMTUgZm9yIDY0LWJpdCBhbmQgYmVjYXVzZSBvZiB0aGlzIHByb3ZpZGVkIHRvIGxlYWZsZXQgYXJlIHJlY2FsY3VsYXRlZFxuICAvLyB0byB2YWx1ZXMgYWxtb3N0LWxpa2UgcHJvdmlkZWQgKGUuZy4gMCBpcyByZWNhbGN1bGF0ZWQgdG8gMS40NmUtMTQ7IGZvciAxODAgaXQncyAxODAuMDAwMDAwMDAwMDAwMDMpLlxuICAvLyBUbyBlbnN1cmUgcHJvdmlkZWQgdmFsdWUgaGFzIG5vIGZsb2F0aW5nIHBvaW50IGVycm9yLCBudW1iZXIgbmVlZHMgdG8gYmUgcm91bmRlZCB0byBmaXhlZCBwb2ludCAxMy5cbiAgcHJpdmF0ZSByZWFkb25seSBGSVhFRF9QT0lOVF9ESUdJVFMgPSAxMztcblxuICBAVmlld0NoaWxkKE1hcENvbXBvbmVudClcbiAgcHJldmlld01hcDogTWFwQ29tcG9uZW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWFwU2VydmljZTogTWFwU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBASW5qZWN0KE1BUF9ERUZBVUxUX0NPTkZJRykgcHJpdmF0ZSBkZWZhdWx0TWFwQ29uZmlnOiBPYnNlcnZhYmxlPE1hcERlZmF1bHRDb25maWc+XG4gICkge31cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5kZWZhdWx0TWFwQ29uZmlnLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZShkZWZhdWx0Q29uZmlnID0+IHtcbiAgICAgIHRoaXMuZm9ybUNvbmZpZyA9IHtcbiAgICAgICAgem9vbUxldmVsOiBkZWZhdWx0Q29uZmlnLnpvb21MZXZlbCxcbiAgICAgICAgY2VudGVyOiBkZWZhdWx0Q29uZmlnLmNlbnRlclxuICAgICAgfTtcbiAgICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGluaXRGb3JtKCkge1xuICAgIGlmICghdGhpcy5jb25maWcubWFwQ29uZmlnKSB7XG4gICAgICB0aGlzLmNvbmZpZy5tYXBDb25maWcgPSB0aGlzLmZvcm1Db25maWc7XG4gICAgfVxuICAgIHRoaXMuZm9ybUNvbmZpZyA9IHtcbiAgICAgIC4uLnRoaXMuZm9ybUNvbmZpZyxcbiAgICAgIC4uLnRoaXMuY29uZmlnLm1hcENvbmZpZyxcbiAgICAgIGRpc2FibGVQYW46IGZhbHNlXG4gICAgfTtcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZUFzc2V0KCk7XG4gIH1cblxuICBhc3luYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKFxuICAgICAgY2hhbmdlcy5jb25maWcuY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzLmNvbmZpZy5wcmV2aW91c1ZhbHVlICYmXG4gICAgICAhY2hhbmdlcy5jb25maWcuZmlyc3RDaGFuZ2VcbiAgICApIHtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlQXNzZXQoKTtcbiAgICB9XG4gIH1cblxuICBwcmV2aWV3TWFwSW5pdChsZWFmbGV0OiB0eXBlb2YgTCk6IHZvaWQge1xuICAgIHRoaXMubGVhZmxldCA9IGxlYWZsZXQ7XG4gICAgdGhpcy5hZGRDZW50ZXJJY29uKHRoaXMuZm9ybUNvbmZpZy5jZW50ZXJbMF0sIHRoaXMuZm9ybUNvbmZpZy5jZW50ZXJbMV0pO1xuICB9XG5cbiAgb25CZWZvcmVTYXZlKCkge1xuICAgIHRoaXMuY29uZmlnLm1hcENvbmZpZyA9IHRoaXMuZm9ybUNvbmZpZztcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHpvb21MZXZlbENoYW5nZWQoKSB7XG4gICAgdGhpcy5jb25maWcubWFwQ29uZmlnID0ge1xuICAgICAgLi4udGhpcy5jb25maWcubWFwQ29uZmlnLFxuICAgICAgem9vbUxldmVsOiB0aGlzLmZvcm1Db25maWcuem9vbUxldmVsXG4gICAgfTtcbiAgfVxuXG4gIGNoYW5nZUNlbnRlcigpIHtcbiAgICBpZiAodGhpcy5jZW50ZXJJY29uKSB7XG4gICAgICB0aGlzLmNlbnRlckljb24ucmVtb3ZlKCk7XG4gICAgfVxuICAgIHRoaXMuY29uZmlnLm1hcENvbmZpZyA9IHsgLi4udGhpcy5mb3JtQ29uZmlnLCBjZW50ZXI6IFsuLi50aGlzLmZvcm1Db25maWcuY2VudGVyXSB9O1xuICAgIHRoaXMuYWRkQ2VudGVySWNvbih0aGlzLmZvcm1Db25maWcuY2VudGVyWzBdLCB0aGlzLmZvcm1Db25maWcuY2VudGVyWzFdKTtcbiAgfVxuXG4gIGNoYW5nZUNlbnRlck9uRW50ZXJLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuY2hhbmdlQ2VudGVyKCk7XG4gIH1cblxuICBvblByZXZpZXdab29tU3RhcnQoKSB7XG4gICAgdGhpcy5jZW50ZXJJY29uLnJlbW92ZSgpO1xuICB9XG5cbiAgb25QcmV2aWV3Wm9vbUVuZChldmVudDogTC5MZWFmbGV0RXZlbnQpIHtcbiAgICB0aGlzLmZvcm1Db25maWcuem9vbUxldmVsID0gTWF0aC5mbG9vcihldmVudC50YXJnZXQuZ2V0Wm9vbSgpKTtcbiAgfVxuXG4gIG9uUHJldmlld01hcE1vdmUoZXZlbnQ6IEwuTGVhZmxldEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuY2VudGVySWNvbikge1xuICAgICAgdGhpcy5jZW50ZXJJY29uLnJlbW92ZSgpO1xuICAgIH1cbiAgICBjb25zdCB7IGxhdCwgbG5nIH0gPSBldmVudC50YXJnZXQuZ2V0Q2VudGVyKCk7XG4gICAgY29uc3QgZml4ZWRMYXQgPSArbGF0LnRvRml4ZWQodGhpcy5GSVhFRF9QT0lOVF9ESUdJVFMpO1xuICAgIGNvbnN0IGZpeGVkTG5nID0gK2xuZy50b0ZpeGVkKHRoaXMuRklYRURfUE9JTlRfRElHSVRTKTtcbiAgICB0aGlzLmFkZENlbnRlckljb24oZml4ZWRMYXQsIGZpeGVkTG5nKTtcbiAgICB0aGlzLmZvcm1Db25maWcuY2VudGVyID0gW2ZpeGVkTGF0LCBmaXhlZExuZ107XG4gIH1cblxuICB1c2VPd25Qb3NpdGlvbigpIHtcbiAgICBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKCh7IGNvb3JkcyB9KSA9PiB7XG4gICAgICB0aGlzLmZvcm1Db25maWcuY2VudGVyID0gW2Nvb3Jkcy5sYXRpdHVkZSwgY29vcmRzLmxvbmdpdHVkZV07XG4gICAgICB0aGlzLmNoYW5nZUNlbnRlcigpO1xuICAgIH0pO1xuICB9XG5cbiAgY2VudGVyVG9Bc3NldCgpIHtcbiAgICB0aGlzLmZvcm1Db25maWcuY2VudGVyID0gW1xuICAgICAgdGhpcy5jb25maWcuZGV2aWNlLmM4eV9Qb3NpdGlvbi5sYXQsXG4gICAgICB0aGlzLmNvbmZpZy5kZXZpY2UuYzh5X1Bvc2l0aW9uLmxuZ1xuICAgIF07XG4gICAgdGhpcy5jaGFuZ2VDZW50ZXIoKTtcbiAgfVxuXG4gIHVwZGF0ZVJlZnJlc2hPcHRpb25zKCkge1xuICAgIHRoaXMuZm9ybUNvbmZpZy5yZWFsdGltZSA9IHRoaXMucmVmcmVzaE9wdGlvbnMgPT09ICdyZWFsdGltZSc7XG4gICAgaWYgKHRoaXMucmVmcmVzaE9wdGlvbnMgPT09ICdpbnRlcnZhbCcpIHtcbiAgICAgIHRoaXMuZm9ybUNvbmZpZy5yZWZyZXNoSW50ZXJ2YWwgPz89IDUwMDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybUNvbmZpZy5yZWZyZXNoSW50ZXJ2YWwgPSBudWxsO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZm9ybUNvbmZpZy5yZWFsdGltZSkge1xuICAgICAgdGhpcy5mb3JtQ29uZmlnLmZvbGxvdyA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmNvbmZpZy53aWRnZXRJbnN0YW5jZUdsb2JhbFRpbWVDb250ZXh0ID1cbiAgICAgIHRoaXMucmVmcmVzaE9wdGlvbnMgPT09ICdkYXNoYm9hcmQtcmVhbHRpbWUtY29udGV4dCc7XG4gICAgaWYgKHRoaXMuY29uZmlnLndpZGdldEluc3RhbmNlR2xvYmFsVGltZUNvbnRleHQpIHtcbiAgICAgIHRoaXMuZm9ybUNvbmZpZy5yZWFsdGltZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0SWNvbihpY29uOiBzdHJpbmcpIHtcbiAgICB0aGlzLmZvcm1Db25maWcuaWNvbiA9IGljb247XG4gICAgdGhpcy5jb25maWcubWFwQ29uZmlnLmljb24gPSBpY29uO1xuICAgIHRoaXMucHJldmlld01hcC5yZWZyZXNoTWFya2VycygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVBc3NldCgpIHtcbiAgICB0aGlzLmNhbkF1dG9DZW50ZXIgPSB0aGlzLm1hcFNlcnZpY2UuaGFzUG9zaXRpb24odGhpcy5jb25maWcuZGV2aWNlKTtcbiAgICB0aGlzLmlzUG9zaXRpb25lZERldmljZSA9IHRoaXMubWFwU2VydmljZS5pc1Bvc2l0aW9uZWREZXZpY2UodGhpcy5jb25maWcuZGV2aWNlKTtcbiAgICB0aGlzLnJlZnJlc2hPcHRpb25zID0gdGhpcy5nZXRSZWZyZXNoT3B0aW9ucygpO1xuICAgIHRoaXMudXBkYXRlUmVmcmVzaE9wdGlvbnMoKTtcblxuICAgIGNvbnN0IHsgZGF0YSwgcGFnaW5nIH0gPSBhd2FpdCB0aGlzLm1hcFNlcnZpY2UuZ2V0QWxsUG9zaXRpb25NT3ModGhpcy5jb25maWcuZGV2aWNlKTtcbiAgICB0aGlzLmFzc2V0cyA9IGRhdGE7XG4gICAgaWYgKHBhZ2luZy50b3RhbFBhZ2VzID4gMSkge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZGFuZ2VyKFxuICAgICAgICBnZXR0ZXh0KFxuICAgICAgICAgICdJdCBtaWdodCBiZSBwb3NzaWJsZSB0aGF0IGFzc2V0cyBhcmUgbm90IHNob3duIGluIHRoZSBwcmV2aWV3LCBhcyB0aGUgY3VycmVudCBzZWxlY3Rpb24gaGFzIG1vcmUgdGhhbiA1MDAgYXNzZXRzIGFuZCB0aGUgcHJldmlldyBvbmx5IHN1cHBvcnRzIGEgbWF4aW11bSBvZiA1MDAgYXNzZXRzLidcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFJlZnJlc2hPcHRpb25zKCk6IFJlZnJlc2hPcHRpb25zIHtcbiAgICBsZXQgb3B0aW9uOiBSZWZyZXNoT3B0aW9ucyA9ICdub25lJztcbiAgICBpZiAodGhpcy5mb3JtQ29uZmlnLnJlYWx0aW1lKSB7XG4gICAgICBvcHRpb24gPSAncmVhbHRpbWUnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5mb3JtQ29uZmlnLnJlZnJlc2hJbnRlcnZhbCkge1xuICAgICAgb3B0aW9uID0gJ2ludGVydmFsJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnLndpZGdldEluc3RhbmNlR2xvYmFsVGltZUNvbnRleHQpIHtcbiAgICAgIG9wdGlvbiA9ICdkYXNoYm9hcmQtcmVhbHRpbWUtY29udGV4dCc7XG4gICAgfVxuICAgIGNvbnN0IGlzTm90QWxsb3dlZE9wdGlvbiA9XG4gICAgICAoIXRoaXMuaXNQb3NpdGlvbmVkRGV2aWNlICYmIG9wdGlvbiA9PT0gJ2Rhc2hib2FyZC1yZWFsdGltZS1jb250ZXh0JykgfHxcbiAgICAgICghdGhpcy5pc1Bvc2l0aW9uZWREZXZpY2UgJiYgb3B0aW9uID09PSAncmVhbHRpbWUnKSB8fFxuICAgICAgKHRoaXMuaXNQb3NpdGlvbmVkRGV2aWNlICYmIG9wdGlvbiA9PT0gJ2ludGVydmFsJyk7XG4gICAgb3B0aW9uID0gaXNOb3RBbGxvd2VkT3B0aW9uID8gJ25vbmUnIDogb3B0aW9uO1xuICAgIHJldHVybiBvcHRpb247XG4gIH1cblxuICBwcml2YXRlIGFkZENlbnRlckljb24obGF0OiBudW1iZXIsIGxuZzogbnVtYmVyKSB7XG4gICAgY29uc3QgdGl0bGVUZXh0ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgnTWFwIGNlbnRlcicpKTtcbiAgICBjb25zdCBpY29uID0gdGhpcy5sZWFmbGV0LmRpdkljb24oe1xuICAgICAgaHRtbDogYDxpIHN0eWxlPVwicG9pbnRlci1ldmVudHM6IG5vbmVcIiBjbGFzcz1cImM4eS1tYXAtbWFya2VyLWljb24gdGV4dC1tdXRlZCBkbHQtYzh5LWljb24tdGFyZ2V0IGljb24tMnhcIiB0aXRsZT1cIiR7dGl0bGVUZXh0fVwiIC8+YFxuICAgIH0pO1xuICAgIHRoaXMuY2VudGVySWNvbiA9IHRoaXMubGVhZmxldC5tYXJrZXIoW2xhdCwgbG5nXSwge1xuICAgICAgaWNvblxuICAgIH0pO1xuICAgIHRoaXMucHJldmlld01hcC5hZGRNYXJrZXJUb01hcCh0aGlzLmNlbnRlckljb24pO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwicm93IHAtdC0xNlwiXG4gICpuZ0lmPVwiZm9ybUNvbmZpZ1wiXG4+XG4gIDxkaXYgY2xhc3M9XCJjb2wteHMtMlwiPlxuICAgIDxjOHktZm9ybS1ncm91cCBjbGFzcz1cIm0tYi0wIHRleHQtY2VudGVyIGZvcm0tZ3JvdXAtc21cIj5cbiAgICAgIDxsYWJlbCB0cmFuc2xhdGU+TWFya2VyIGljb248L2xhYmVsPlxuICAgICAgPGM4eS1pY29uLXNlbGVjdG9yLXdyYXBwZXJcbiAgICAgICAgW2NhblJlbW92ZUljb25dPVwidHJ1ZVwiXG4gICAgICAgIFtzZWxlY3RlZEljb25dPVwiZm9ybUNvbmZpZy5pY29uXCJcbiAgICAgICAgKG9uU2VsZWN0KT1cInNlbGVjdEljb24oJGV2ZW50KVwiXG4gICAgICA+PC9jOHktaWNvbi1zZWxlY3Rvci13cmFwcGVyPlxuICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY29sLXhzLTEwXCI+XG4gICAgPGRpdiBjbGFzcz1cInJvdyB0aWdodC1ncmlkIHNlcGFyYXRvci1ib3R0b21cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBmb3JtLWdyb3VwLXNtXCI+XG4gICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5ab29tIGxldmVsPC9sYWJlbD5cbiAgICAgICAgICA8Yzh5LXJhbmdlXG4gICAgICAgICAgICBjbGFzcz1cImxhYmVsLWJvdHRvbVwiXG4gICAgICAgICAgICBuYW1lPVwiem9vbUxldmVsXCJcbiAgICAgICAgICAgICNyYW5nZVxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb3JtQ29uZmlnLnpvb21MZXZlbFwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cInpvb21MZXZlbENoYW5nZWQoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJyYW5nZVwiXG4gICAgICAgICAgICAgIG1pbj1cIjJcIlxuICAgICAgICAgICAgICBtYXg9XCIxOFwiXG4gICAgICAgICAgICAgIHN0ZXA9XCIxXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9jOHktcmFuZ2U+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLThcIj5cbiAgICAgICAgPGM4eS1mb3JtLWdyb3VwIGNsYXNzPVwiZm9ybS1ncm91cC1zbSBtLWItOFwiPlxuICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+Q2VudGVyIGJvdW5kPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgaW5wdXQtZ3JvdXAtc21cIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2xhdC5gbGF0aXR1ZGVgJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIG5hbWU9XCJjZW50ZXJMYXRcIlxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb3JtQ29uZmlnLmNlbnRlclswXVwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlQ2VudGVyKClcIlxuICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJjaGFuZ2VDZW50ZXJPbkVudGVyS2V5KCRldmVudClcIlxuICAgICAgICAgICAgICBtaW49XCItOTBcIlxuICAgICAgICAgICAgICBtYXg9XCI5MFwiXG4gICAgICAgICAgICAgIHN0ZXA9XCIwLjFcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2xuZy5gbG9uZ2l0dWRlYCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICBuYW1lPVwiY2VudGVyTG5nXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIG1pbj1cIi0xODBcIlxuICAgICAgICAgICAgICBtYXg9XCIxODBcIlxuICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvcm1Db25maWcuY2VudGVyWzFdXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2VDZW50ZXIoKVwiXG4gICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImNoYW5nZUNlbnRlck9uRW50ZXJLZXkoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIG1pbj1cIi0xODBcIlxuICAgICAgICAgICAgICBtYXg9XCIxODBcIlxuICAgICAgICAgICAgICBzdGVwPVwiMC4xXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtYnRuXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInVXNlIHlvdXIgbG9jYXRpb24nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcF09XCInVXNlIHlvdXIgbG9jYXRpb24nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ0b3BcIlxuICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ1c2VPd25Qb3NpdGlvbigpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb24tMTRcIlxuICAgICAgICAgICAgICAgICAgYzh5SWNvbj1cImxvY2F0aW9uLWFycm93XCJcbiAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImlucHV0LWdyb3VwLWJ0blwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY2FuQXV0b0NlbnRlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInVXNlIHNlbGVjdGVkIGFzc2V0IGxvY2F0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwiJ1VzZSBzZWxlY3RlZCBhc3NldCBsb2NhdGlvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNlbnRlclRvQXNzZXQoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uLTE0XCJcbiAgICAgICAgICAgICAgICAgIGM4eUljb249XCJsb2NhdGlvblwiXG4gICAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8Yzh5LW1lc3NhZ2VzXG4gICAgICAgICAgICBbaGVscE1lc3NhZ2VdPVwiJ0RyYWcgdGhlIG1hcCB0byB0aGUgZGVzaXJlZCBwb3NpdGlvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgID48L2M4eS1tZXNzYWdlcz5cbiAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInJvdyB0aWdodC1ncmlkIHAtdC04IGQtZmxleCBhLWktY2VudGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTZcIj5cbiAgICAgICAgPGM4eS1mb3JtLWdyb3VwIGNsYXNzPVwibS1iLTAgZm9ybS1ncm91cC1zbVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjOHktc2VsZWN0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICB0aXRsZT1cInt7ICdSZWZyZXNoIG9wdGlvbnNgb3B0aW9ucyBmb3IgcmVmcmVzaGluZyBhIHZpZXdgJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIGlkPVwic2VsZWN0RXhhbXBsZVwiXG4gICAgICAgICAgICAgIG5hbWU9XCJyZWZyZXNoU2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyZWZyZXNoT3B0aW9uc1wiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlUmVmcmVzaE9wdGlvbnMoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ09ubHkgcmVmcmVzaGluZyBvbiBpbnRlcmFjdGlvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIHZhbHVlPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBObyBhdXRvbWF0aWMgcmVmcmVzaFxuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCInUmVmcmVzaGluZyBhZnRlciB0aGUgZ2l2ZW4gaW50ZXJ2YWwgYW5kIG9uIGludGVyYWN0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgdmFsdWU9XCJpbnRlcnZhbFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNQb3NpdGlvbmVkRGV2aWNlXCJcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFVzZSByZWZyZXNoIGludGVydmFsXG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidMaXZlIHVwZGF0aW5nIG9uIGVhY2ggcG9zaXRpb24gY2hhbmdlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgdmFsdWU9XCJyZWFsdGltZVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpc1Bvc2l0aW9uZWREZXZpY2VcIlxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgUmVhbHRpbWVcbiAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0JpbmQgd2lkZ2V0IHRvIGRhc2hib2FyZCByZWFsdGltZSBjb250ZXh0JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgdmFsdWU9XCJkYXNoYm9hcmQtcmVhbHRpbWUtY29udGV4dFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpc1Bvc2l0aW9uZWREZXZpY2VcIlxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgRGFzaGJvYXJkIHJlYWx0aW1lIGNvbnRleHRcbiAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy04XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGZvcm0tZ3JvdXAtc20gbS1iLTBcIj5cbiAgICAgICAgICA8Yzh5LXJhbmdlXG4gICAgICAgICAgICBjbGFzcz1cImxhYmVsLWJvdHRvbVwiXG4gICAgICAgICAgICBuYW1lPVwicmVmcmVzaEludGVydmFsXCJcbiAgICAgICAgICAgICNpbnRlcnZhbFJhbmdlXG4gICAgICAgICAgICAqbmdJZj1cInJlZnJlc2hPcHRpb25zID09PSAnaW50ZXJ2YWwnXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9ybUNvbmZpZy5yZWZyZXNoSW50ZXJ2YWxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYzh5UmFuZ2VWYWx1ZT5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJ7IGludGVydmFsSW5TZWNvbmRzOiBpbnRlcnZhbFJhbmdlLnZhbHVlICogMC4wMDEgfVwiXG4gICAgICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgIG5nTm9uQmluZGFibGVcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBpbnRlcnZhbEluU2Vjb25kcyB9fSBzXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInJhbmdlXCJcbiAgICAgICAgICAgICAgbWluPVwiNTAwMFwiXG4gICAgICAgICAgICAgIG1heD1cIjEwMDAwMFwiXG4gICAgICAgICAgICAgIHN0ZXA9XCIxMDAwXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9jOHktcmFuZ2U+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICBjbGFzcz1cImM4eS1zd2l0Y2ggYzh5LXN3aXRjaC0taW5saW5lXCJcbiAgICAgICAgICAqbmdJZj1cInJlZnJlc2hPcHRpb25zID09PSAncmVhbHRpbWUnIHx8IHJlZnJlc2hPcHRpb25zID09PSAnZGFzaGJvYXJkLXJlYWx0aW1lLWNvbnRleHQnXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgbmFtZT1cImZvbGxvd1wiXG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb3JtQ29uZmlnLmZvbGxvd1wiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC0xMlwiXG4gICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICBGb2xsb3cgc2VsZWN0ZWRcbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdlxuICBjbGFzcz1cInAtdC0xNiBwLWItMTZcIlxuICBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDI0MHB4XCJcbj5cbiAgPGM4eS1tYXBcbiAgICAqbmdJZj1cImNvbmZpZy5tYXBDb25maWdcIlxuICAgIFthc3NldHNdPVwiYXNzZXRzXCJcbiAgICBbY29uZmlnXT1cImNvbmZpZy5tYXBDb25maWdcIlxuICAgIChvbk1vdmUpPVwib25QcmV2aWV3TWFwTW92ZSgkZXZlbnQpXCJcbiAgICAob25ab29tU3RhcnQpPVwib25QcmV2aWV3Wm9vbVN0YXJ0KClcIlxuICAgIChvblpvb21FbmQpPVwib25QcmV2aWV3Wm9vbUVuZCgkZXZlbnQpXCJcbiAgICAob25Jbml0KT1cInByZXZpZXdNYXBJbml0KCRldmVudClcIlxuICA+PC9jOHktbWFwPlxuPC9kaXY+XG4iXX0=
|
|
214
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXdpZGdldC1jb25maWcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvbWFwL21hcC13aWRnZXQtY29uZmlnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3dpZGdldHMvaW1wbGVtZW50YXRpb25zL21hcC9tYXAtd2lkZ2V0LWNvbmZpZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBS0wsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLElBQUksY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsSUFBSSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUNMLFlBQVksRUFDWixhQUFhLEVBQ2IsWUFBWSxFQUNaLFdBQVcsRUFDWCxPQUFPLEVBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBRUwsa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixTQUFTLEVBQ1QsVUFBVSxFQUVYLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7OztBQWtCdEQsTUFBTSxPQUFP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cnQge1xuICBDb21wb25lbnQsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSBhcyBOZ0NvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSBhcyBOZ0Zvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgQWxlcnRTZXJ2aWNlLFxuICBBc3NldExpbmtQaXBlLFxuICBDb21tb25Nb2R1bGUsXG4gIEZvcm1zTW9kdWxlLFxuICBnZXR0ZXh0XG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBNYXBEZWZhdWx0Q29uZmlnIH0gZnJvbSAnQGM4eS9vcHRpb25zJztcbmltcG9ydCB7XG4gIENsdXN0ZXJNYXBDb25maWcsXG4gIE1BUF9ERUZBVUxUX0NPTkZJRyxcbiAgTWFwQ29tcG9uZW50LFxuICBNYXBNb2R1bGUsXG4gIE1hcFNlcnZpY2UsXG4gIFBvc2l0aW9uTWFuYWdlZE9iamVjdFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL21hcCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgdHlwZSBMIGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWFwV2lkZ2V0Q29uZmlnLCBNYXBSZWZyZXNoT3B0aW9uIH0gZnJvbSAnLi9tYXAtd2lkZ2V0Lm1vZGVsJztcbmltcG9ydCB7IEljb25TZWxlY3Rvck1vZHVsZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvcic7XG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC90b29sdGlwJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LW1hcC13aWRnZXQtY29uZmlnJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hcC13aWRnZXQtY29uZmlnLmNvbXBvbmVudC5odG1sJyxcbiAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IE5nRm9ybSB9XSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nQ29tbW9uTW9kdWxlLFxuICAgIE5nRm9ybXNNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEljb25TZWxlY3Rvck1vZHVsZSxcbiAgICBNYXBNb2R1bGUsXG4gICAgQXNzZXRMaW5rUGlwZSxcbiAgICBUb29sdGlwTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTWFwV2lkZ2V0Q29uZmlnQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGNvbmZpZzogTWFwV2lkZ2V0Q29uZmlnID0ge1xuICAgIG1hcENvbmZpZzogdW5kZWZpbmVkXG4gIH07XG5cbiAgZm9ybUNvbmZpZzogQ2x1c3Rlck1hcENvbmZpZztcblxuICBjYW5BdXRvQ2VudGVyID0gdHJ1ZTtcbiAgaXNQb3NpdGlvbmVkRGV2aWNlID0gZmFsc2U7XG4gIGFzc2V0czogUG9zaXRpb25NYW5hZ2VkT2JqZWN0W107XG4gIHJlZnJlc2hPcHRpb246IE1hcFJlZnJlc2hPcHRpb24gPSAnbm9uZSc7XG5cbiAgcHJpdmF0ZSBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBsZWFmbGV0OiB0eXBlb2YgTDtcbiAgcHJpdmF0ZSBjZW50ZXJJY29uOiBMLk1hcmtlcjtcbiAgLy8gSlMgcHJlY2lzaW9uIGZvciBmbG9hdGluZyBwb2ludCBudW1iZXIgaXMgMTUgZm9yIDY0LWJpdCBhbmQgYmVjYXVzZSBvZiB0aGlzIHByb3ZpZGVkIHRvIGxlYWZsZXQgYXJlIHJlY2FsY3VsYXRlZFxuICAvLyB0byB2YWx1ZXMgYWxtb3N0LWxpa2UgcHJvdmlkZWQgKGUuZy4gMCBpcyByZWNhbGN1bGF0ZWQgdG8gMS40NmUtMTQ7IGZvciAxODAgaXQncyAxODAuMDAwMDAwMDAwMDAwMDMpLlxuICAvLyBUbyBlbnN1cmUgcHJvdmlkZWQgdmFsdWUgaGFzIG5vIGZsb2F0aW5nIHBvaW50IGVycm9yLCBudW1iZXIgbmVlZHMgdG8gYmUgcm91bmRlZCB0byBmaXhlZCBwb2ludCAxMy5cbiAgcHJpdmF0ZSByZWFkb25seSBGSVhFRF9QT0lOVF9ESUdJVFMgPSAxMztcblxuICBAVmlld0NoaWxkKE1hcENvbXBvbmVudClcbiAgcHJldmlld01hcDogTWFwQ29tcG9uZW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWFwU2VydmljZTogTWFwU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBASW5qZWN0KE1BUF9ERUZBVUxUX0NPTkZJRykgcHJpdmF0ZSBkZWZhdWx0TWFwQ29uZmlnOiBPYnNlcnZhYmxlPE1hcERlZmF1bHRDb25maWc+XG4gICkge31cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5kZWZhdWx0TWFwQ29uZmlnLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZShkZWZhdWx0Q29uZmlnID0+IHtcbiAgICAgIHRoaXMuZm9ybUNvbmZpZyA9IHtcbiAgICAgICAgem9vbUxldmVsOiBkZWZhdWx0Q29uZmlnLnpvb21MZXZlbCxcbiAgICAgICAgY2VudGVyOiBkZWZhdWx0Q29uZmlnLmNlbnRlclxuICAgICAgfTtcbiAgICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGluaXRGb3JtKCkge1xuICAgIGlmICghdGhpcy5jb25maWcubWFwQ29uZmlnKSB7XG4gICAgICB0aGlzLmNvbmZpZy5tYXBDb25maWcgPSB0aGlzLmZvcm1Db25maWc7XG4gICAgfVxuICAgIHRoaXMuZm9ybUNvbmZpZyA9IHtcbiAgICAgIC4uLnRoaXMuZm9ybUNvbmZpZyxcbiAgICAgIC4uLnRoaXMuY29uZmlnLm1hcENvbmZpZyxcbiAgICAgIGRpc2FibGVQYW46IGZhbHNlXG4gICAgfTtcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZUFzc2V0KCk7XG4gIH1cblxuICBhc3luYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKFxuICAgICAgY2hhbmdlcy5jb25maWcuY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzLmNvbmZpZy5wcmV2aW91c1ZhbHVlICYmXG4gICAgICAhY2hhbmdlcy5jb25maWcuZmlyc3RDaGFuZ2VcbiAgICApIHtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlQXNzZXQoKTtcbiAgICB9XG4gIH1cblxuICBwcmV2aWV3TWFwSW5pdChsZWFmbGV0OiB0eXBlb2YgTCk6IHZvaWQge1xuICAgIHRoaXMubGVhZmxldCA9IGxlYWZsZXQ7XG4gICAgdGhpcy5hZGRDZW50ZXJJY29uKHRoaXMuZm9ybUNvbmZpZy5jZW50ZXJbMF0sIHRoaXMuZm9ybUNvbmZpZy5jZW50ZXJbMV0pO1xuICB9XG5cbiAgb25CZWZvcmVTYXZlKCkge1xuICAgIHRoaXMuY29uZmlnLm1hcENvbmZpZyA9IHRoaXMuZm9ybUNvbmZpZztcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHpvb21MZXZlbENoYW5nZWQoKSB7XG4gICAgdGhpcy5jb25maWcubWFwQ29uZmlnID0ge1xuICAgICAgLi4udGhpcy5jb25maWcubWFwQ29uZmlnLFxuICAgICAgem9vbUxldmVsOiB0aGlzLmZvcm1Db25maWcuem9vbUxldmVsXG4gICAgfTtcbiAgfVxuXG4gIGNoYW5nZUNlbnRlcigpIHtcbiAgICBpZiAodGhpcy5jZW50ZXJJY29uKSB7XG4gICAgICB0aGlzLmNlbnRlckljb24ucmVtb3ZlKCk7XG4gICAgfVxuICAgIHRoaXMuY29uZmlnLm1hcENvbmZpZyA9IHsgLi4udGhpcy5mb3JtQ29uZmlnLCBjZW50ZXI6IFsuLi50aGlzLmZvcm1Db25maWcuY2VudGVyXSB9O1xuICAgIHRoaXMuYWRkQ2VudGVySWNvbih0aGlzLmZvcm1Db25maWcuY2VudGVyWzBdLCB0aGlzLmZvcm1Db25maWcuY2VudGVyWzFdKTtcbiAgfVxuXG4gIGNoYW5nZUNlbnRlck9uRW50ZXJLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuY2hhbmdlQ2VudGVyKCk7XG4gIH1cblxuICBvblByZXZpZXdab29tU3RhcnQoKSB7XG4gICAgdGhpcy5jZW50ZXJJY29uLnJlbW92ZSgpO1xuICB9XG5cbiAgb25QcmV2aWV3Wm9vbUVuZChldmVudDogTC5MZWFmbGV0RXZlbnQpIHtcbiAgICB0aGlzLmZvcm1Db25maWcuem9vbUxldmVsID0gTWF0aC5mbG9vcihldmVudC50YXJnZXQuZ2V0Wm9vbSgpKTtcbiAgfVxuXG4gIG9uUHJldmlld01hcE1vdmUoZXZlbnQ6IEwuTGVhZmxldEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuY2VudGVySWNvbikge1xuICAgICAgdGhpcy5jZW50ZXJJY29uLnJlbW92ZSgpO1xuICAgIH1cbiAgICBjb25zdCB7IGxhdCwgbG5nIH0gPSBldmVudC50YXJnZXQuZ2V0Q2VudGVyKCk7XG4gICAgY29uc3QgZml4ZWRMYXQgPSArbGF0LnRvRml4ZWQodGhpcy5GSVhFRF9QT0lOVF9ESUdJVFMpO1xuICAgIGNvbnN0IGZpeGVkTG5nID0gK2xuZy50b0ZpeGVkKHRoaXMuRklYRURfUE9JTlRfRElHSVRTKTtcbiAgICB0aGlzLmFkZENlbnRlckljb24oZml4ZWRMYXQsIGZpeGVkTG5nKTtcbiAgICB0aGlzLmZvcm1Db25maWcuY2VudGVyID0gW2ZpeGVkTGF0LCBmaXhlZExuZ107XG4gIH1cblxuICB1c2VPd25Qb3NpdGlvbigpIHtcbiAgICBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKCh7IGNvb3JkcyB9KSA9PiB7XG4gICAgICB0aGlzLmZvcm1Db25maWcuY2VudGVyID0gW2Nvb3Jkcy5sYXRpdHVkZSwgY29vcmRzLmxvbmdpdHVkZV07XG4gICAgICB0aGlzLmNoYW5nZUNlbnRlcigpO1xuICAgIH0pO1xuICB9XG5cbiAgY2VudGVyVG9Bc3NldCgpIHtcbiAgICB0aGlzLmZvcm1Db25maWcuY2VudGVyID0gW1xuICAgICAgdGhpcy5jb25maWcuZGV2aWNlLmM4eV9Qb3NpdGlvbi5sYXQsXG4gICAgICB0aGlzLmNvbmZpZy5kZXZpY2UuYzh5X1Bvc2l0aW9uLmxuZ1xuICAgIF07XG4gICAgdGhpcy5jaGFuZ2VDZW50ZXIoKTtcbiAgfVxuXG4gIHVwZGF0ZVJlZnJlc2hPcHRpb24oKSB7XG4gICAgdGhpcy5mb3JtQ29uZmlnLnJlYWx0aW1lID0gdGhpcy5yZWZyZXNoT3B0aW9uID09PSAncmVhbHRpbWUnO1xuICAgIHRoaXMuY29uZmlnLndpZGdldEluc3RhbmNlR2xvYmFsQXV0b1JlZnJlc2hDb250ZXh0ID1cbiAgICAgIHRoaXMucmVmcmVzaE9wdGlvbiA9PT0gJ2Rhc2hib2FyZC1hdXRvLXJlZnJlc2gtY29udGV4dCc7XG4gICAgdGhpcy5mb3JtQ29uZmlnLndpZGdldEluc3RhbmNlR2xvYmFsQXV0b1JlZnJlc2hDb250ZXh0ID1cbiAgICAgIHRoaXMucmVmcmVzaE9wdGlvbiA9PT0gJ2Rhc2hib2FyZC1hdXRvLXJlZnJlc2gtY29udGV4dCc7XG4gICAgaWYgKHRoaXMucmVmcmVzaE9wdGlvbiA9PT0gJ2ludGVydmFsJykge1xuICAgICAgdGhpcy5mb3JtQ29uZmlnLnJlZnJlc2hJbnRlcnZhbCA/Pz0gNTAwMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JtQ29uZmlnLnJlZnJlc2hJbnRlcnZhbCA9IG51bGw7XG4gICAgfVxuICAgIGlmICghdGhpcy5mb3JtQ29uZmlnLnJlYWx0aW1lKSB7XG4gICAgICB0aGlzLmZvcm1Db25maWcuZm9sbG93ID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuY29uZmlnLndpZGdldEluc3RhbmNlR2xvYmFsVGltZUNvbnRleHQgPVxuICAgICAgdGhpcy5yZWZyZXNoT3B0aW9uID09PSAnZGFzaGJvYXJkLXJlYWx0aW1lLWNvbnRleHQnO1xuICAgIGlmICh0aGlzLmNvbmZpZy53aWRnZXRJbnN0YW5jZUdsb2JhbFRpbWVDb250ZXh0KSB7XG4gICAgICB0aGlzLmZvcm1Db25maWcucmVhbHRpbWUgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdEljb24oaWNvbjogc3RyaW5nKSB7XG4gICAgdGhpcy5mb3JtQ29uZmlnLmljb24gPSBpY29uO1xuICAgIHRoaXMuY29uZmlnLm1hcENvbmZpZy5pY29uID0gaWNvbjtcbiAgICB0aGlzLnByZXZpZXdNYXAucmVmcmVzaE1hcmtlcnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlQXNzZXQoKSB7XG4gICAgdGhpcy5jYW5BdXRvQ2VudGVyID0gdGhpcy5tYXBTZXJ2aWNlLmhhc1Bvc2l0aW9uKHRoaXMuY29uZmlnLmRldmljZSk7XG4gICAgdGhpcy5pc1Bvc2l0aW9uZWREZXZpY2UgPSB0aGlzLm1hcFNlcnZpY2UuaXNQb3NpdGlvbmVkRGV2aWNlKHRoaXMuY29uZmlnLmRldmljZSk7XG4gICAgdGhpcy5yZWZyZXNoT3B0aW9uID0gdGhpcy5nZXRSZWZyZXNoT3B0aW9uKCk7XG4gICAgdGhpcy51cGRhdGVSZWZyZXNoT3B0aW9uKCk7XG5cbiAgICBjb25zdCB7IGRhdGEsIHBhZ2luZyB9ID0gYXdhaXQgdGhpcy5tYXBTZXJ2aWNlLmdldEFsbFBvc2l0aW9uTU9zKHRoaXMuY29uZmlnLmRldmljZSk7XG4gICAgdGhpcy5hc3NldHMgPSBkYXRhO1xuICAgIGlmIChwYWdpbmcudG90YWxQYWdlcyA+IDEpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmRhbmdlcihcbiAgICAgICAgZ2V0dGV4dChcbiAgICAgICAgICAnSXQgbWlnaHQgYmUgcG9zc2libGUgdGhhdCBhc3NldHMgYXJlIG5vdCBzaG93biBpbiB0aGUgcHJldmlldywgYXMgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGhhcyBtb3JlIHRoYW4gNTAwIGFzc2V0cyBhbmQgdGhlIHByZXZpZXcgb25seSBzdXBwb3J0cyBhIG1heGltdW0gb2YgNTAwIGFzc2V0cy4nXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRSZWZyZXNoT3B0aW9uKCk6IE1hcFJlZnJlc2hPcHRpb24ge1xuICAgIGxldCBvcHRpb246IE1hcFJlZnJlc2hPcHRpb24gPSAnbm9uZSc7XG4gICAgaWYgKHRoaXMuZm9ybUNvbmZpZy5yZWFsdGltZSkge1xuICAgICAgb3B0aW9uID0gJ3JlYWx0aW1lJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuZm9ybUNvbmZpZy5yZWZyZXNoSW50ZXJ2YWwpIHtcbiAgICAgIG9wdGlvbiA9ICdpbnRlcnZhbCc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZy53aWRnZXRJbnN0YW5jZUdsb2JhbFRpbWVDb250ZXh0KSB7XG4gICAgICBvcHRpb24gPSAnZGFzaGJvYXJkLXJlYWx0aW1lLWNvbnRleHQnO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0aGlzLmNvbmZpZy53aWRnZXRJbnN0YW5jZUdsb2JhbEF1dG9SZWZyZXNoQ29udGV4dCB8fFxuICAgICAgdGhpcy5mb3JtQ29uZmlnLndpZGdldEluc3RhbmNlR2xvYmFsQXV0b1JlZnJlc2hDb250ZXh0XG4gICAgKSB7XG4gICAgICBvcHRpb24gPSAnZGFzaGJvYXJkLWF1dG8tcmVmcmVzaC1jb250ZXh0JztcbiAgICB9XG4gICAgY29uc3QgaXNOb3RBbGxvd2VkT3B0aW9uID1cbiAgICAgICghdGhpcy5pc1Bvc2l0aW9uZWREZXZpY2UgJiYgb3B0aW9uID09PSAnZGFzaGJvYXJkLXJlYWx0aW1lLWNvbnRleHQnKSB8fFxuICAgICAgKCF0aGlzLmlzUG9zaXRpb25lZERldmljZSAmJiBvcHRpb24gPT09ICdyZWFsdGltZScpIHx8XG4gICAgICAodGhpcy5pc1Bvc2l0aW9uZWREZXZpY2UgJiYgb3B0aW9uID09PSAnaW50ZXJ2YWwnKTtcbiAgICBvcHRpb24gPSBpc05vdEFsbG93ZWRPcHRpb24gPyAnbm9uZScgOiBvcHRpb247XG4gICAgcmV0dXJuIG9wdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQ2VudGVySWNvbihsYXQ6IG51bWJlciwgbG5nOiBudW1iZXIpIHtcbiAgICBjb25zdCB0aXRsZVRleHQgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCdNYXAgY2VudGVyJykpO1xuICAgIGNvbnN0IGljb24gPSB0aGlzLmxlYWZsZXQuZGl2SWNvbih7XG4gICAgICBodG1sOiBgPGkgc3R5bGU9XCJwb2ludGVyLWV2ZW50czogbm9uZVwiIGNsYXNzPVwiYzh5LW1hcC1tYXJrZXItaWNvbiB0ZXh0LW11dGVkIGRsdC1jOHktaWNvbi10YXJnZXQgaWNvbi0yeFwiIHRpdGxlPVwiJHt0aXRsZVRleHR9XCIgLz5gXG4gICAgfSk7XG4gICAgdGhpcy5jZW50ZXJJY29uID0gdGhpcy5sZWFmbGV0Lm1hcmtlcihbbGF0LCBsbmddLCB7XG4gICAgICBpY29uXG4gICAgfSk7XG4gICAgdGhpcy5wcmV2aWV3TWFwLmFkZE1hcmtlclRvTWFwKHRoaXMuY2VudGVySWNvbik7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJyb3cgcC10LTE2XCJcbiAgKm5nSWY9XCJmb3JtQ29uZmlnXCJcbj5cbiAgPGRpdiBjbGFzcz1cImNvbC14cy0yXCI+XG4gICAgPGM4eS1mb3JtLWdyb3VwIGNsYXNzPVwibS1iLTAgdGV4dC1jZW50ZXIgZm9ybS1ncm91cC1zbVwiPlxuICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5NYXJrZXIgaWNvbjwvbGFiZWw+XG4gICAgICA8Yzh5LWljb24tc2VsZWN0b3Itd3JhcHBlclxuICAgICAgICBbY2FuUmVtb3ZlSWNvbl09XCJ0cnVlXCJcbiAgICAgICAgW3NlbGVjdGVkSWNvbl09XCJmb3JtQ29uZmlnLmljb25cIlxuICAgICAgICAob25TZWxlY3QpPVwic2VsZWN0SWNvbigkZXZlbnQpXCJcbiAgICAgID48L2M4eS1pY29uLXNlbGVjdG9yLXdyYXBwZXI+XG4gICAgPC9jOHktZm9ybS1ncm91cD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb2wteHMtMTBcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IHRpZ2h0LWdyaWQgc2VwYXJhdG9yLWJvdHRvbVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGZvcm0tZ3JvdXAtc21cIj5cbiAgICAgICAgICA8bGFiZWwgdHJhbnNsYXRlPlpvb20gbGV2ZWw8L2xhYmVsPlxuICAgICAgICAgIDxjOHktcmFuZ2VcbiAgICAgICAgICAgIGNsYXNzPVwibGFiZWwtYm90dG9tXCJcbiAgICAgICAgICAgIG5hbWU9XCJ6b29tTGV2ZWxcIlxuICAgICAgICAgICAgI3JhbmdlXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvcm1Db25maWcuem9vbUxldmVsXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwiem9vbUxldmVsQ2hhbmdlZCgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInJhbmdlXCJcbiAgICAgICAgICAgICAgbWluPVwiMlwiXG4gICAgICAgICAgICAgIG1heD1cIjE4XCJcbiAgICAgICAgICAgICAgc3RlcD1cIjFcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2M4eS1yYW5nZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtOFwiPlxuICAgICAgICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJmb3JtLWdyb3VwLXNtIG0tYi04XCI+XG4gICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5DZW50ZXIgYm91bmQ8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBpbnB1dC1ncm91cC1zbVwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnbGF0LmBsYXRpdHVkZWAnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgbmFtZT1cImNlbnRlckxhdFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvcm1Db25maWcuY2VudGVyWzBdXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2VDZW50ZXIoKVwiXG4gICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImNoYW5nZUNlbnRlck9uRW50ZXJLZXkoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIG1pbj1cIi05MFwiXG4gICAgICAgICAgICAgIG1heD1cIjkwXCJcbiAgICAgICAgICAgICAgc3RlcD1cIjAuMVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnbG5nLmBsb25naXR1ZGVgJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIG5hbWU9XCJjZW50ZXJMbmdcIlxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgbWluPVwiLTE4MFwiXG4gICAgICAgICAgICAgIG1heD1cIjE4MFwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9ybUNvbmZpZy5jZW50ZXJbMV1cIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cImNoYW5nZUNlbnRlcigpXCJcbiAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiY2hhbmdlQ2VudGVyT25FbnRlcktleSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgbWluPVwiLTE4MFwiXG4gICAgICAgICAgICAgIG1heD1cIjE4MFwiXG4gICAgICAgICAgICAgIHN0ZXA9XCIwLjFcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1idG5cIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidVc2UgeW91ciBsb2NhdGlvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwXT1cIidVc2UgeW91ciBsb2NhdGlvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInVzZU93blBvc2l0aW9uKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbi0xNFwiXG4gICAgICAgICAgICAgICAgICBjOHlJY29uPVwibG9jYXRpb24tYXJyb3dcIlxuICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYnRuXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjYW5BdXRvQ2VudGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidVc2Ugc2VsZWN0ZWQgYXNzZXQgbG9jYXRpb24nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcF09XCInVXNlIHNlbGVjdGVkIGFzc2V0IGxvY2F0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwidG9wXCJcbiAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2VudGVyVG9Bc3NldCgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb24tMTRcIlxuICAgICAgICAgICAgICAgICAgYzh5SWNvbj1cImxvY2F0aW9uXCJcbiAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxjOHktbWVzc2FnZXNcbiAgICAgICAgICAgIFtoZWxwTWVzc2FnZV09XCInRHJhZyB0aGUgbWFwIHRvIHRoZSBkZXNpcmVkIHBvc2l0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgPjwvYzh5LW1lc3NhZ2VzPlxuICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicm93IHRpZ2h0LWdyaWQgcC10LTggZC1mbGV4IGEtaS1jZW50ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtNlwiPlxuICAgICAgICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJtLWItMCBmb3JtLWdyb3VwLXNtXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImM4eS1zZWxlY3Qtd3JhcHBlclwiPlxuICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1JlZnJlc2ggb3B0aW9uc2BvcHRpb25zIGZvciByZWZyZXNoaW5nIGEgdmlld2AnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgaWQ9XCJzZWxlY3RFeGFtcGxlXCJcbiAgICAgICAgICAgICAgbmFtZT1cInJlZnJlc2hTZWxlY3Rpb25cIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJlZnJlc2hPcHRpb25cIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZVJlZnJlc2hPcHRpb24oKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ09ubHkgcmVmcmVzaGluZyBvbiBpbnRlcmFjdGlvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIHZhbHVlPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBObyBhdXRvbWF0aWMgcmVmcmVzaFxuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCInUmVmcmVzaGluZyBhZnRlciB0aGUgZ2l2ZW4gaW50ZXJ2YWwgYW5kIG9uIGludGVyYWN0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgdmFsdWU9XCJpbnRlcnZhbFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNQb3NpdGlvbmVkRGV2aWNlXCJcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFVzZSByZWZyZXNoIGludGVydmFsXG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgJ1JlZnJlc2hpbmcgYWZ0ZXIgdGhlIGdpdmVuIGludGVydmFsIGFuZCBvbiBpbnRlcmFjdGlvbiwgc3luY2hyb25pemVkIGdsb2JhbGx5J1xuICAgICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9XCJkYXNoYm9hcmQtYXV0by1yZWZyZXNoLWNvbnRleHRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzUG9zaXRpb25lZERldmljZVwiXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBVc2UgZ2xvYmFsIHJlZnJlc2ggaW50ZXJ2YWxcbiAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0xpdmUgdXBkYXRpbmcgb24gZWFjaCBwb3NpdGlvbiBjaGFuZ2UnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT1cInJlYWx0aW1lXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImlzUG9zaXRpb25lZERldmljZVwiXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBSZWFsdGltZVxuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQmluZCB3aWRnZXQgdG8gZGFzaGJvYXJkIHJlYWx0aW1lIGNvbnRleHQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT1cImRhc2hib2FyZC1yZWFsdGltZS1jb250ZXh0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImlzUG9zaXRpb25lZERldmljZVwiXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBEYXNoYm9hcmQgcmVhbHRpbWUgY29udGV4dFxuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLThcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZm9ybS1ncm91cC1zbSBtLWItMFwiPlxuICAgICAgICAgIDxjOHktcmFuZ2VcbiAgICAgICAgICAgIGNsYXNzPVwibGFiZWwtYm90dG9tXCJcbiAgICAgICAgICAgIG5hbWU9XCJyZWZyZXNoSW50ZXJ2YWxcIlxuICAgICAgICAgICAgI2ludGVydmFsUmFuZ2VcbiAgICAgICAgICAgICpuZ0lmPVwicmVmcmVzaE9wdGlvbiA9PT0gJ2ludGVydmFsJ1wiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvcm1Db25maWcucmVmcmVzaEludGVydmFsXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2M4eVJhbmdlVmFsdWU+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwieyBpbnRlcnZhbEluU2Vjb25kczogaW50ZXJ2YWxSYW5nZS52YWx1ZSAqIDAuMDAxIH1cIlxuICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICBuZ05vbkJpbmRhYmxlXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgaW50ZXJ2YWxJblNlY29uZHMgfX0gc1xuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJyYW5nZVwiXG4gICAgICAgICAgICAgIG1pbj1cIjUwMDBcIlxuICAgICAgICAgICAgICBtYXg9XCIxMDAwMDBcIlxuICAgICAgICAgICAgICBzdGVwPVwiMTAwMFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvYzh5LXJhbmdlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgY2xhc3M9XCJjOHktc3dpdGNoIGM4eS1zd2l0Y2gtLWlubGluZVwiXG4gICAgICAgICAgKm5nSWY9XCJyZWZyZXNoT3B0aW9uID09PSAncmVhbHRpbWUnIHx8IHJlZnJlc2hPcHRpb24gPT09ICdkYXNoYm9hcmQtcmVhbHRpbWUtY29udGV4dCdcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBuYW1lPVwiZm9sbG93XCJcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvcm1Db25maWcuZm9sbG93XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LTEyXCJcbiAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIEZvbGxvdyBzZWxlY3RlZFxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2XG4gIGNsYXNzPVwicC10LTE2IHAtYi0xNlwiXG4gIHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogMjQwcHhcIlxuPlxuICA8Yzh5LW1hcFxuICAgICpuZ0lmPVwiY29uZmlnLm1hcENvbmZpZ1wiXG4gICAgW2Fzc2V0c109XCJhc3NldHNcIlxuICAgIFtjb25maWddPVwiY29uZmlnLm1hcENvbmZpZ1wiXG4gICAgKG9uTW92ZSk9XCJvblByZXZpZXdNYXBNb3ZlKCRldmVudClcIlxuICAgIChvblpvb21TdGFydCk9XCJvblByZXZpZXdab29tU3RhcnQoKVwiXG4gICAgKG9uWm9vbUVuZCk9XCJvblByZXZpZXdab29tRW5kKCRldmVudClcIlxuICAgIChvbkluaXQpPVwicHJldmlld01hcEluaXQoJGV2ZW50KVwiXG4gID48L2M4eS1tYXA+XG48L2Rpdj5cbiJdfQ==
|