@c8y/ngx-components 1023.14.2 → 1023.14.33
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/ai/index.d.ts +4 -2
- package/ai/index.d.ts.map +1 -1
- package/auth-configuration/index.d.ts +6 -3
- package/auth-configuration/index.d.ts.map +1 -1
- package/context-dashboard/index.d.ts +1 -0
- package/context-dashboard/index.d.ts.map +1 -1
- package/datapoint-explorer/view/index.d.ts +2 -1
- package/datapoint-explorer/view/index.d.ts.map +1 -1
- package/datapoint-library/details/index.d.ts.map +1 -1
- package/datapoint-selector/index.d.ts +6 -3
- package/datapoint-selector/index.d.ts.map +1 -1
- package/device-grid/index.d.ts.map +1 -1
- package/echart/index.d.ts +1 -0
- package/echart/index.d.ts.map +1 -1
- package/echart/models/index.d.ts +1 -0
- package/echart/models/index.d.ts.map +1 -1
- package/fesm2022/c8y-ngx-components-actility-device-registration.mjs +16 -16
- package/fesm2022/c8y-ngx-components-advanced-software-management.mjs +7 -7
- package/fesm2022/c8y-ngx-components-ai-agent-chat.mjs +9 -9
- package/fesm2022/c8y-ngx-components-ai-ai-chat.mjs +12 -12
- package/fesm2022/c8y-ngx-components-ai.mjs +11 -9
- package/fesm2022/c8y-ngx-components-ai.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +34 -34
- package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +4 -4
- package/fesm2022/c8y-ngx-components-alarms.mjs +76 -76
- package/fesm2022/c8y-ngx-components-api.mjs +7 -7
- package/fesm2022/c8y-ngx-components-app-logs.mjs +10 -10
- package/fesm2022/c8y-ngx-components-asset-properties.mjs +39 -39
- package/fesm2022/{c8y-ngx-components-asset-property-grid.component-B1q7kXRu.mjs → c8y-ngx-components-asset-property-grid.component-CDjsn5j9.mjs} +13 -13
- package/fesm2022/{c8y-ngx-components-asset-property-grid.component-B1q7kXRu.mjs.map → c8y-ngx-components-asset-property-grid.component-CDjsn5j9.mjs.map} +1 -1
- package/fesm2022/c8y-ngx-components-assets-navigator.mjs +32 -32
- package/fesm2022/c8y-ngx-components-auth-configuration.mjs +244 -170
- package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-binary-file-download.mjs +7 -7
- package/fesm2022/c8y-ngx-components-bookmarks.mjs +13 -13
- package/fesm2022/c8y-ngx-components-branding-base-branding.mjs +4 -4
- package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs +7 -7
- package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs +7 -7
- package/fesm2022/c8y-ngx-components-branding-plain-branding-editor-lazy.mjs +3 -3
- package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs +7 -7
- package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +15 -15
- package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs +6 -6
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +36 -36
- package/fesm2022/c8y-ngx-components-branding-shared.mjs +13 -13
- package/fesm2022/c8y-ngx-components-child-devices.mjs +13 -13
- package/fesm2022/c8y-ngx-components-cockpit-config.mjs +40 -40
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-alarm-count-config.component-Bl18pHcM.mjs → c8y-ngx-components-computed-asset-properties-alarm-count-config.component-SA0syLy7.mjs} +4 -4
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-alarm-count-config.component-Bl18pHcM.mjs.map → c8y-ngx-components-computed-asset-properties-alarm-count-config.component-SA0syLy7.mjs.map} +1 -1
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-C5QMFdX1.mjs → c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-BOmgJI14.mjs} +4 -4
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-C5QMFdX1.mjs.map → c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-BOmgJI14.mjs.map} +1 -1
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-event-count-config.component-C-Lc5Ble.mjs → c8y-ngx-components-computed-asset-properties-event-count-config.component-CaTb9cph.mjs} +4 -4
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-event-count-config.component-C-Lc5Ble.mjs.map → c8y-ngx-components-computed-asset-properties-event-count-config.component-CaTb9cph.mjs.map} +1 -1
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-last-measurement-config.component-BXfM7hTQ.mjs → c8y-ngx-components-computed-asset-properties-last-measurement-config.component-DkrSvf9F.mjs} +4 -4
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-last-measurement-config.component-BXfM7hTQ.mjs.map → c8y-ngx-components-computed-asset-properties-last-measurement-config.component-DkrSvf9F.mjs.map} +1 -1
- package/fesm2022/c8y-ngx-components-computed-asset-properties.mjs +6 -6
- package/fesm2022/c8y-ngx-components-connectivity.mjs +53 -53
- package/fesm2022/c8y-ngx-components-context-dashboard-asset-add.mjs +10 -10
- package/fesm2022/c8y-ngx-components-context-dashboard-asset-view.mjs +7 -7
- package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs +11 -11
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-BuGMpNrA.mjs → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-DM3hASUP.mjs} +4 -4
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-BuGMpNrA.mjs.map → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-DM3hASUP.mjs.map} +1 -1
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DN-f35bA.mjs → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-CC5346kW.mjs} +10 -10
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DN-f35bA.mjs.map → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-CC5346kW.mjs.map} +1 -1
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-BlIVEV__.mjs → c8y-ngx-components-context-dashboard-dashboard-version-history.component-CHuc--XM.mjs} +4 -4
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-BlIVEV__.mjs.map → c8y-ngx-components-context-dashboard-dashboard-version-history.component-CHuc--XM.mjs.map} +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard-device-add.mjs +10 -10
- package/fesm2022/c8y-ngx-components-context-dashboard-device-view.mjs +7 -7
- package/fesm2022/c8y-ngx-components-context-dashboard-devicemanagement.mjs +3 -3
- package/fesm2022/c8y-ngx-components-context-dashboard-state.mjs +3 -3
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs +113 -108
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-m7YeEj9R.mjs → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-D0C7SH6L.mjs} +16 -16
- package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-m7YeEj9R.mjs.map → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-D0C7SH6L.mjs.map} +1 -1
- package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs +12 -12
- package/fesm2022/c8y-ngx-components-dashboard-manager-devicemanagement.mjs +6 -6
- package/fesm2022/c8y-ngx-components-dashboard-manager.mjs +22 -22
- package/fesm2022/c8y-ngx-components-data-broker.mjs +7 -7
- package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs +3 -3
- package/fesm2022/c8y-ngx-components-data-grid-columns.mjs +3 -3
- package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +31 -26
- package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +13 -13
- package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs +6 -19
- package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs +3 -3
- package/fesm2022/c8y-ngx-components-datapoint-library-services.mjs +3 -3
- package/fesm2022/c8y-ngx-components-datapoint-library.mjs +4 -4
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +56 -57
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +34 -34
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-default-subscriptions.mjs +16 -16
- package/fesm2022/c8y-ngx-components-device-grid.mjs +48 -44
- package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-list.mjs +22 -22
- package/fesm2022/c8y-ngx-components-device-map.mjs +12 -12
- package/fesm2022/c8y-ngx-components-device-profile.mjs +34 -34
- package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs +3 -3
- package/fesm2022/c8y-ngx-components-device-protocols.mjs +16 -16
- package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +13 -13
- package/fesm2022/c8y-ngx-components-device-shell.mjs +31 -31
- package/fesm2022/c8y-ngx-components-diagnostics.mjs +13 -13
- package/fesm2022/c8y-ngx-components-echart-models.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-echart.mjs +120 -61
- package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +43 -43
- package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs +7 -7
- package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs +10 -10
- package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs +7 -7
- package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +46 -46
- package/fesm2022/c8y-ngx-components-ecosystem.mjs +82 -82
- package/fesm2022/c8y-ngx-components-editor.mjs +6 -6
- package/fesm2022/c8y-ngx-components-events-events-timeline.mjs +4 -4
- package/fesm2022/c8y-ngx-components-events-events-timeline.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-events.mjs +3 -3
- package/fesm2022/c8y-ngx-components-exports-list.mjs +6 -6
- package/fesm2022/c8y-ngx-components-file-preview.mjs +7 -7
- package/fesm2022/c8y-ngx-components-files-repository.mjs +19 -19
- package/fesm2022/c8y-ngx-components-global-context.mjs +134 -134
- package/fesm2022/c8y-ngx-components-global-context.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector.mjs +21 -21
- package/fesm2022/c8y-ngx-components-icon-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-interval-picker.mjs +3 -3
- package/fesm2022/c8y-ngx-components-location.mjs +28 -28
- package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs +16 -16
- package/fesm2022/c8y-ngx-components-map.mjs +19 -19
- package/fesm2022/c8y-ngx-components-messaging-management.mjs +55 -55
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs +19 -19
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-bulk-operations-service.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs +3 -3
- package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-device-selector.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs +12 -12
- package/fesm2022/c8y-ngx-components-operations-operation-details.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs +10 -10
- package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +12 -12
- package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs +10 -12
- package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-shared.mjs +10 -10
- package/fesm2022/c8y-ngx-components-operations-status-filter.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations.mjs +7 -7
- package/fesm2022/c8y-ngx-components-pending-mo-request.mjs +7 -7
- package/fesm2022/c8y-ngx-components-platform-configuration.mjs +10 -10
- package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +38 -38
- package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +58 -58
- package/fesm2022/c8y-ngx-components-register-device.mjs +58 -58
- package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +9 -9
- package/fesm2022/c8y-ngx-components-remote-access-data.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +6 -6
- package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +6 -6
- package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs +3 -3
- package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs +6 -6
- package/fesm2022/c8y-ngx-components-replace-device.mjs +10 -10
- package/fesm2022/c8y-ngx-components-report-dashboard.mjs +16 -16
- package/fesm2022/c8y-ngx-components-reports.mjs +19 -19
- package/fesm2022/c8y-ngx-components-repository-configuration.mjs +48 -48
- package/fesm2022/c8y-ngx-components-repository-firmware.mjs +33 -33
- package/fesm2022/c8y-ngx-components-repository-shared.mjs +34 -34
- package/fesm2022/c8y-ngx-components-repository-software.mjs +42 -42
- package/fesm2022/c8y-ngx-components-repository.mjs +4 -4
- package/fesm2022/c8y-ngx-components-search.mjs +48 -45
- package/fesm2022/c8y-ngx-components-search.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs +6 -6
- package/fesm2022/c8y-ngx-components-sensor-phone.mjs +7 -7
- package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs +3 -3
- package/fesm2022/c8y-ngx-components-services-shared.mjs +3 -3
- package/fesm2022/c8y-ngx-components-services.mjs +29 -29
- package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs +16 -16
- package/fesm2022/c8y-ngx-components-sms-gateway.mjs +7 -7
- package/fesm2022/c8y-ngx-components-static-assets-data.mjs +3 -3
- package/fesm2022/c8y-ngx-components-static-assets-modal.mjs +9 -9
- package/fesm2022/c8y-ngx-components-static-assets.mjs +6 -6
- package/fesm2022/c8y-ngx-components-sub-assets.mjs +76 -66
- package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-tenants.mjs +40 -40
- package/fesm2022/c8y-ngx-components-time-context.mjs +14 -7
- package/fesm2022/c8y-ngx-components-time-context.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-tracking.mjs +15 -15
- package/fesm2022/c8y-ngx-components-tracking.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +3 -3
- package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +12 -12
- package/fesm2022/c8y-ngx-components-translation-editor.mjs +6 -6
- package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +33 -33
- package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs +4 -4
- package/fesm2022/c8y-ngx-components-upgrade.mjs +41 -41
- package/fesm2022/c8y-ngx-components-user-roles.mjs +10 -10
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget-ai-config.mjs +4 -4
- package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget-ai-config.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs +6 -6
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +19 -19
- package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-legacy-welcome.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +7 -7
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +27 -27
- package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs +7 -7
- package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs +24 -24
- package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs +9 -9
- package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +24 -20
- package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs +6 -6
- package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs +6 -6
- package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +9 -9
- package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs +9 -9
- package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs +18 -18
- package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs +9 -9
- package/fesm2022/c8y-ngx-components.mjs +9450 -9420
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/global-context/index.d.ts.map +1 -1
- package/index.d.ts +3283 -3271
- package/index.d.ts.map +1 -1
- package/locales/de.po +124 -133
- package/locales/es.po +48 -40
- package/locales/fr.po +41 -33
- package/locales/ja_JP.po +35 -28
- package/locales/ko.po +46 -38
- package/locales/locales.pot +17 -8
- package/locales/nl.po +44 -36
- package/locales/pl.po +62 -54
- package/locales/pt_BR.po +45 -37
- package/locales/zh_CN.po +42 -35
- package/locales/zh_TW.po +55 -46
- package/operations/operations-timeline/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/search/index.d.ts +5 -5
- package/search/index.d.ts.map +1 -1
- package/sub-assets/index.d.ts +3 -3
- package/sub-assets/index.d.ts.map +1 -1
- package/time-context/index.d.ts +3 -2
- package/time-context/index.d.ts.map +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, Input, Component, EventEmitter,
|
|
2
|
+
import { Injectable, inject, SecurityContext, Input, Component, EventEmitter, Output, ViewChild } from '@angular/core';
|
|
3
3
|
import { gettext } from '@c8y/ngx-components/gettext';
|
|
4
4
|
import { from, merge, interval, BehaviorSubject, of, lastValueFrom, defer, forkJoin } from 'rxjs';
|
|
5
5
|
import { mergeMap, map, tap, throttleTime, buffer, switchMap } from 'rxjs/operators';
|
|
@@ -20,6 +20,7 @@ import { NgxEchartsModule, NGX_ECHARTS_CONFIG } from 'ngx-echarts';
|
|
|
20
20
|
import { TooltipModule } from 'ngx-bootstrap/tooltip';
|
|
21
21
|
import * as i1$3 from 'ngx-bootstrap/popover';
|
|
22
22
|
import { PopoverModule } from 'ngx-bootstrap/popover';
|
|
23
|
+
import { DomSanitizer } from '@angular/platform-browser';
|
|
23
24
|
import * as i2 from 'ngx-bootstrap/dropdown';
|
|
24
25
|
import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
|
|
25
26
|
import * as i3 from '@angular/cdk/a11y';
|
|
@@ -97,12 +98,26 @@ class YAxisService {
|
|
|
97
98
|
getYAxis(datapointsWithValues, YAxisOptions) {
|
|
98
99
|
const YAxisPlacement = this.getYAxisPlacement(datapointsWithValues);
|
|
99
100
|
if (YAxisOptions.forceMergeDatapoints) {
|
|
100
|
-
const firstDp = datapointsWithValues[0];
|
|
101
|
-
const unit = firstDp?.unit ? `[${firstDp.unit}]` : '';
|
|
102
101
|
return {
|
|
103
|
-
name:
|
|
102
|
+
name: Array.from(datapointsWithValues)
|
|
103
|
+
.map((dp, index) => `{${index}|${dp.unit}}`)
|
|
104
|
+
.join(' /'),
|
|
104
105
|
nameLocation: 'middle',
|
|
106
|
+
nameTruncate: {
|
|
107
|
+
maxWidth: 350
|
|
108
|
+
},
|
|
105
109
|
nameGap: 25,
|
|
110
|
+
nameTextStyle: {
|
|
111
|
+
// add rich text to support multiple colors for different dp units
|
|
112
|
+
rich: {
|
|
113
|
+
...Array.from(datapointsWithValues).reduce((acc, dp, index) => {
|
|
114
|
+
acc[index] = {
|
|
115
|
+
color: dp.color || '#6f7079'
|
|
116
|
+
};
|
|
117
|
+
return acc;
|
|
118
|
+
}, {})
|
|
119
|
+
}
|
|
120
|
+
},
|
|
106
121
|
type: 'value',
|
|
107
122
|
animation: true,
|
|
108
123
|
axisLabel: {
|
|
@@ -127,7 +142,8 @@ class YAxisService {
|
|
|
127
142
|
label: {
|
|
128
143
|
show: false
|
|
129
144
|
}
|
|
130
|
-
}
|
|
145
|
+
},
|
|
146
|
+
...(datapointsWithValues[0] ? {} : { min: 0, max: 100 })
|
|
131
147
|
};
|
|
132
148
|
}
|
|
133
149
|
const matchingDpSet = new Set();
|
|
@@ -160,7 +176,7 @@ class YAxisService {
|
|
|
160
176
|
? YAxisOptions.mergeMatchingDatapoints
|
|
161
177
|
? firstOccurrence.has(dp)
|
|
162
178
|
? Array.from(matchingDpSet)
|
|
163
|
-
.map(dp => `{${
|
|
179
|
+
.map((dp, index) => `{${index}|${dp.unit}}`)
|
|
164
180
|
.join(' /')
|
|
165
181
|
: matchingDpRange
|
|
166
182
|
? ''
|
|
@@ -168,13 +184,15 @@ class YAxisService {
|
|
|
168
184
|
: `${dp.label} [${dp.unit}]`
|
|
169
185
|
: '',
|
|
170
186
|
nameLocation: 'middle',
|
|
187
|
+
nameTruncate: {
|
|
188
|
+
maxWidth: 350
|
|
189
|
+
},
|
|
171
190
|
nameGap: 25,
|
|
172
191
|
nameTextStyle: {
|
|
173
192
|
// add rich text to support multiple colors for different dp units
|
|
174
193
|
rich: {
|
|
175
|
-
...Array.from(matchingDpSet).reduce((acc, dp) => {
|
|
176
|
-
|
|
177
|
-
acc[accKey] = {
|
|
194
|
+
...Array.from(matchingDpSet).reduce((acc, dp, index) => {
|
|
195
|
+
acc[index] = {
|
|
178
196
|
color: dp.color
|
|
179
197
|
};
|
|
180
198
|
return acc;
|
|
@@ -220,6 +238,7 @@ class YAxisService {
|
|
|
220
238
|
show: false
|
|
221
239
|
}
|
|
222
240
|
},
|
|
241
|
+
...(Object.keys(dp.values || {}).length > 0 ? {} : { min: 0, max: 100 }),
|
|
223
242
|
...(dp.min && { min: dp.min }),
|
|
224
243
|
...(dp.max && { max: dp.max })
|
|
225
244
|
};
|
|
@@ -261,10 +280,10 @@ class YAxisService {
|
|
|
261
280
|
return 'left';
|
|
262
281
|
}
|
|
263
282
|
}
|
|
264
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
265
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
283
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: YAxisService, deps: [{ token: i1.AppStateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
284
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: YAxisService }); }
|
|
266
285
|
}
|
|
267
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
286
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: YAxisService, decorators: [{
|
|
268
287
|
type: Injectable
|
|
269
288
|
}], ctorParameters: () => [{ type: i1.AppStateService }] });
|
|
270
289
|
|
|
@@ -361,10 +380,10 @@ class ChartTypesService {
|
|
|
361
380
|
const baseOption = this.lineSeriesOption(color, isMinMaxChart, renderType);
|
|
362
381
|
return { ...baseOption, step: 'end' };
|
|
363
382
|
}
|
|
364
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
365
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
383
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ChartTypesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
384
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ChartTypesService }); }
|
|
366
385
|
}
|
|
367
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
386
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ChartTypesService, decorators: [{
|
|
368
387
|
type: Injectable
|
|
369
388
|
}] });
|
|
370
389
|
|
|
@@ -388,10 +407,15 @@ class EchartsOptionsService {
|
|
|
388
407
|
forceMergeDatapoints: displayOptions.forceMergeDatapoints,
|
|
389
408
|
showLabelAndUnit: displayOptions.showLabelAndUnit
|
|
390
409
|
});
|
|
410
|
+
const AXIS_PADDING = 20;
|
|
391
411
|
const leftAxis = Array.isArray(yAxis) ? yAxis.filter(yx => yx.position === 'left') : [];
|
|
392
|
-
const gridLeft = leftAxis.length
|
|
412
|
+
const gridLeft = leftAxis.length
|
|
413
|
+
? leftAxis.length * (this.yAxisService.Y_AXIS_OFFSET - AXIS_PADDING)
|
|
414
|
+
: 32;
|
|
393
415
|
const rightAxis = Array.isArray(yAxis) ? yAxis.filter(yx => yx.position === 'right') : [];
|
|
394
|
-
const gridRight = rightAxis.length
|
|
416
|
+
const gridRight = rightAxis.length
|
|
417
|
+
? rightAxis.length * (this.yAxisService.Y_AXIS_OFFSET - AXIS_PADDING)
|
|
418
|
+
: 16;
|
|
395
419
|
const selectedLanguage = this.translate.currentLang;
|
|
396
420
|
let intervalInMs = this.calculateExtendedIntervalInMs(selectedTimeRange?.interval || timeRange.interval || 'hours', selectedTimeRange || timeRange);
|
|
397
421
|
if (sliderZoomUsed) {
|
|
@@ -421,7 +445,7 @@ class EchartsOptionsService {
|
|
|
421
445
|
left: gridLeft,
|
|
422
446
|
top: 16,
|
|
423
447
|
right: gridRight,
|
|
424
|
-
bottom: 68
|
|
448
|
+
bottom: displayOptions.showSlider ? 68 : 8
|
|
425
449
|
},
|
|
426
450
|
dataZoom: [
|
|
427
451
|
{
|
|
@@ -495,8 +519,8 @@ class EchartsOptionsService {
|
|
|
495
519
|
show: false
|
|
496
520
|
},
|
|
497
521
|
xAxis: {
|
|
498
|
-
min: aggregatedDatapoint
|
|
499
|
-
? Object.keys(aggregatedDatapoint.values)
|
|
522
|
+
min: Object.keys(aggregatedDatapoint.values || {}).length > 0
|
|
523
|
+
? Object.keys(aggregatedDatapoint.values || {})
|
|
500
524
|
.map(date => new Date(date).valueOf())
|
|
501
525
|
.sort((a, b) => a - b)[0]
|
|
502
526
|
: new Date(timeRange.dateFrom).valueOf() - intervalInMs,
|
|
@@ -988,9 +1012,9 @@ class EchartsOptionsService {
|
|
|
988
1012
|
*/
|
|
989
1013
|
processEvent(event, XAxisValue) {
|
|
990
1014
|
let value = `<ul class="list-unstyled small separator-top text-default">`;
|
|
991
|
-
value += `<li class="p-t-4 p-b-4 d-flex separator-bottom text-
|
|
992
|
-
value += `<li class="p-t-4 p-b-4 d-flex separator-bottom text-
|
|
993
|
-
value += `<li class="p-t-4 p-b-4 d-flex separator-bottom text-
|
|
1015
|
+
value += `<li class="p-t-4 p-b-4 d-flex separator-bottom text-truncate"><label class="text-label-small m-b-0 m-r-8">${echarts.format.encodeHTML(this.translate.instant(gettext('Event type')))}</label><span class="small m-l-auto"><code title="${echarts.format.encodeHTML(event.type)}">${echarts.format.encodeHTML(event.type)}</code></span></li>`;
|
|
1016
|
+
value += `<li class="p-t-4 p-b-4 d-flex separator-bottom text-truncate"><label class="text-label-small m-b-0 m-r-8">${echarts.format.encodeHTML(this.translate.instant(gettext('Event text')))}</label><span class="small m-l-auto" style="display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis; word-break: break-word; white-space: normal; max-width: 200px; -webkit-line-clamp: 5;" title="${echarts.format.encodeHTML(event.text)}">${echarts.format.encodeHTML(event.text)}</span></li>`;
|
|
1017
|
+
value += `<li class="p-t-4 p-b-4 d-flex separator-bottom text-truncate"><label class="text-label-small m-b-0 m-r-8">${echarts.format.encodeHTML(this.translate.instant(gettext('Event time')))}</label><span class="small m-l-auto">${echarts.format.encodeHTML(this.datePipe.transform(XAxisValue))}<span></li>`;
|
|
994
1018
|
value += `</ul>`;
|
|
995
1019
|
return value;
|
|
996
1020
|
}
|
|
@@ -1001,19 +1025,19 @@ class EchartsOptionsService {
|
|
|
1001
1025
|
*/
|
|
1002
1026
|
async processAlarm(alarm) {
|
|
1003
1027
|
let value = `<ul class="list-unstyled small separator-top text-default m-0">`;
|
|
1004
|
-
value += `<li class="p-t-4 p-b-4 d-flex a-i-center separator-bottom text-
|
|
1028
|
+
value += `<li class="p-t-4 p-b-4 d-flex a-i-center separator-bottom text-truncate"><label class="text-label-small m-b-0 m-r-8">${echarts.format.encodeHTML(this.translate.instant(gettext('Alarm severity')))}</label>`;
|
|
1005
1029
|
value += `<span class="small d-inline-flex a-i-center gap-4 m-l-auto"><i class="stroked-icon icon-14 status dlt-c8y-icon-${echarts.format.encodeHTML(this.severityIconPipe.transform(alarm.severity))} ${alarm.severity.toLowerCase()}" > </i> ${this.severityLabelPipe.transform(alarm.severity)} </span></li>`;
|
|
1006
|
-
value += `<li class="p-t-4 p-b-4 d-flex separator-bottom text-
|
|
1007
|
-
value += `<li class="p-t-4 p-b-4 d-flex separator-bottom text-
|
|
1008
|
-
value += `<li class="p-t-4 p-b-4 d-flex separator-bottom text-
|
|
1030
|
+
value += `<li class="p-t-4 p-b-4 d-flex separator-bottom text-truncate"><label class="text-label-small m-b-0 m-r-8">${echarts.format.encodeHTML(this.translate.instant(gettext('Alarm type')))}</label><span class="small m-l-auto"><code title="${echarts.format.encodeHTML(alarm.type)}">${echarts.format.encodeHTML(alarm.type)}</code></span></li>`;
|
|
1031
|
+
value += `<li class="p-t-4 p-b-4 d-flex separator-bottom text-truncate"><label class="text-label-small m-b-0 m-r-8">${echarts.format.encodeHTML(this.translate.instant(gettext('Message')))}</label><span class="small m-l-auto" style="display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 5; overflow: hidden; text-overflow: ellipsis; word-break: break-word; white-space: normal; max-width: 200px;" title="${echarts.format.encodeHTML(this.translate.instant(alarm.text))}">${echarts.format.encodeHTML(this.translate.instant(alarm.text))}</span></li>`;
|
|
1032
|
+
value += `<li class="p-t-4 p-b-4 d-flex separator-bottom text-truncate"><label class="text-label-small m-b-0 m-r-8">${echarts.format.encodeHTML(this.translate.instant(gettext('Last updated')))}</label><span class="small m-l-auto">${echarts.format.encodeHTML(this.datePipe.transform(alarm['lastUpdated']))}</span></li>`;
|
|
1009
1033
|
const exists = await this.alarmRouteExists();
|
|
1010
1034
|
if (exists) {
|
|
1011
1035
|
const currentUrl = window.location.href;
|
|
1012
1036
|
const baseUrlIndex = currentUrl.indexOf(INDEX_HTML);
|
|
1013
1037
|
const baseUrl = currentUrl.substring(0, baseUrlIndex + INDEX_HTML.length);
|
|
1014
|
-
value += `<li class="p-t-4 p-b-4 d-flex separator-bottom text-
|
|
1038
|
+
value += `<li class="p-t-4 p-b-4 d-flex separator-bottom text-truncate"><label class="text-label-small m-b-0 m-r-8">${echarts.format.encodeHTML(this.translate.instant(gettext('Open details')))}</label><span class="small m-l-auto"><a href="${baseUrl}#/alarms/${alarm.id}/details?showCleared=true">${echarts.format.encodeHTML(this.translate.instant(gettext('Alarm details')))}</a></span></li>`;
|
|
1015
1039
|
}
|
|
1016
|
-
value += `<li class="p-t-4 p-b-4 d-flex text-
|
|
1040
|
+
value += `<li class="p-t-4 p-b-4 d-flex text-truncate"><label class="text-label-small m-b-0 m-r-8">${echarts.format.encodeHTML(this.translate.instant(gettext('Alarm count')))}</label><span class="small m-l-auto"><span class="badge badge-info">${alarm.count}</span></span></li>`;
|
|
1017
1041
|
value += `</ul>`;
|
|
1018
1042
|
return value;
|
|
1019
1043
|
}
|
|
@@ -1364,7 +1388,7 @@ class EchartsOptionsService {
|
|
|
1364
1388
|
value =
|
|
1365
1389
|
`<div class="d-flex a-i-center separator-top text-default p-t-8 p-b-8">` +
|
|
1366
1390
|
`<label class="text-12 m-r-8 m-b-0">${echarts.format.encodeHTML(this.datePipe.transform(minValue[0]))}</label>` +
|
|
1367
|
-
`<div class="m-l-auto text-12"
|
|
1391
|
+
`<div class="m-l-auto text-12 text-truncate">${echarts.format.encodeHTML(minValue[1].toFixed(displayOptions.numberOfDecimalPlaces ?? 2) ?? '--')} — ${echarts.format.encodeHTML(maxValue[1].toFixed(displayOptions.numberOfDecimalPlaces ?? 2) ?? '--')}</div>` +
|
|
1368
1392
|
(series['datapointUnit']
|
|
1369
1393
|
? ` ${echarts.format.encodeHTML(series['datapointUnit'])}`
|
|
1370
1394
|
: '') +
|
|
@@ -1382,7 +1406,7 @@ class EchartsOptionsService {
|
|
|
1382
1406
|
value =
|
|
1383
1407
|
`<div class="d-flex a-i-center separator-top text-default p-t-8 p-b-8">` +
|
|
1384
1408
|
`<label class="text-12 m-r-8 m-b-0">${echarts.format.encodeHTML(this.datePipe.transform(seriesValue[0]))}</label>` +
|
|
1385
|
-
`<div class="m-l-auto text-12"
|
|
1409
|
+
`<div class="m-l-auto text-12 text-truncate">${echarts.format.encodeHTML(seriesValue[1]?.toFixed(displayOptions.numberOfDecimalPlaces ?? 2) ?? '--')}` +
|
|
1386
1410
|
(series['datapointUnit']
|
|
1387
1411
|
? ` ${echarts.format.encodeHTML(series['datapointUnit'])}`
|
|
1388
1412
|
: '') +
|
|
@@ -1410,10 +1434,10 @@ class EchartsOptionsService {
|
|
|
1410
1434
|
return acc;
|
|
1411
1435
|
}, null);
|
|
1412
1436
|
}
|
|
1413
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1414
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
1437
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: EchartsOptionsService, deps: [{ token: i1.DatePipe }, { token: YAxisService }, { token: ChartTypesService }, { token: i4.AlarmSeverityToIconPipe }, { token: i4.AlarmSeverityToLabelPipe }, { token: i5.TranslateService }, { token: i6.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1438
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: EchartsOptionsService }); }
|
|
1415
1439
|
}
|
|
1416
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1440
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: EchartsOptionsService, decorators: [{
|
|
1417
1441
|
type: Injectable
|
|
1418
1442
|
}], ctorParameters: () => [{ type: i1.DatePipe }, { type: YAxisService }, { type: ChartTypesService }, { type: i4.AlarmSeverityToIconPipe }, { type: i4.AlarmSeverityToLabelPipe }, { type: i5.TranslateService }, { type: i6.Router }] });
|
|
1419
1443
|
|
|
@@ -1665,20 +1689,29 @@ class ChartRealtimeService {
|
|
|
1665
1689
|
datapointOutOfSyncCallback(datapoint);
|
|
1666
1690
|
}
|
|
1667
1691
|
}
|
|
1668
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1669
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
1692
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ChartRealtimeService, deps: [{ token: i1.MeasurementRealtimeService }, { token: i1.AlarmRealtimeService }, { token: i1.EventRealtimeService }, { token: EchartsOptionsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1693
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ChartRealtimeService }); }
|
|
1670
1694
|
}
|
|
1671
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1695
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ChartRealtimeService, decorators: [{
|
|
1672
1696
|
type: Injectable
|
|
1673
1697
|
}], ctorParameters: () => [{ type: i1.MeasurementRealtimeService }, { type: i1.AlarmRealtimeService }, { type: i1.EventRealtimeService }, { type: EchartsOptionsService }] });
|
|
1674
1698
|
|
|
1675
1699
|
class ChartAlertsComponent {
|
|
1676
|
-
|
|
1677
|
-
|
|
1700
|
+
constructor() {
|
|
1701
|
+
this.sanitizer = inject(DomSanitizer);
|
|
1702
|
+
}
|
|
1703
|
+
sanitizeAlertText(text) {
|
|
1704
|
+
if (typeof text === 'string') {
|
|
1705
|
+
return this.sanitizer.sanitize(SecurityContext.HTML, text);
|
|
1706
|
+
}
|
|
1707
|
+
return text;
|
|
1708
|
+
}
|
|
1709
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ChartAlertsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1710
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: ChartAlertsComponent, isStandalone: true, selector: "c8y-chart-alerts", inputs: { alerts: "alerts" }, ngImport: i0, template: "@if (alerts?.anyAlertExists$ | async) {\n <div class=\"overlay-center-vertically d-col p-16 p-r-24 p-l-24\">\n @for (alertGroup of alerts?.alertGroups; track alertGroup) {\n @if (alertGroup.value.alerts.length) {\n <div\n class=\"alert\"\n role=\"alert\"\n [ngClass]=\"'alert-' + alertGroup.type\"\n >\n @if (alertGroup.value.alertDismissal.dismissStrategy !== 'none') {\n <button\n class=\"close\"\n type=\"button\"\n (click)=\"alerts.dismissAlertGroup(alertGroup.type, dismissPermanently.checked)\"\n >\n <span aria-hidden=\"true\">\u00D7</span>\n <span class=\"sr-only\">{{ 'Close' | translate }}</span>\n </button>\n }\n\n @for (alertItem of alertGroup.value.alerts; track alertItem) {\n <p [innerHTML]=\"sanitizeAlertText(alertItem.text)\"></p>\n }\n\n @if (alertGroup.value.alertDismissal.dismissStrategy !== 'none') {\n <label\n class=\"c8y-checkbox m-t-16\"\n title=\"{{ 'Don\\'t show again' | translate }}\"\n >\n <input\n type=\"checkbox\"\n #dismissPermanently\n />\n <span></span>\n <span>{{ \"Don't show again\" | translate }}</span>\n </label>\n }\n </div>\n }\n }\n </div>\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }] }); }
|
|
1678
1711
|
}
|
|
1679
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1712
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ChartAlertsComponent, decorators: [{
|
|
1680
1713
|
type: Component,
|
|
1681
|
-
args: [{ selector: 'c8y-chart-alerts', standalone: true, imports: [CommonModule], template: "
|
|
1714
|
+
args: [{ selector: 'c8y-chart-alerts', standalone: true, imports: [CommonModule], template: "@if (alerts?.anyAlertExists$ | async) {\n <div class=\"overlay-center-vertically d-col p-16 p-r-24 p-l-24\">\n @for (alertGroup of alerts?.alertGroups; track alertGroup) {\n @if (alertGroup.value.alerts.length) {\n <div\n class=\"alert\"\n role=\"alert\"\n [ngClass]=\"'alert-' + alertGroup.type\"\n >\n @if (alertGroup.value.alertDismissal.dismissStrategy !== 'none') {\n <button\n class=\"close\"\n type=\"button\"\n (click)=\"alerts.dismissAlertGroup(alertGroup.type, dismissPermanently.checked)\"\n >\n <span aria-hidden=\"true\">\u00D7</span>\n <span class=\"sr-only\">{{ 'Close' | translate }}</span>\n </button>\n }\n\n @for (alertItem of alertGroup.value.alerts; track alertItem) {\n <p [innerHTML]=\"sanitizeAlertText(alertItem.text)\"></p>\n }\n\n @if (alertGroup.value.alertDismissal.dismissStrategy !== 'none') {\n <label\n class=\"c8y-checkbox m-t-16\"\n title=\"{{ 'Don\\'t show again' | translate }}\"\n >\n <input\n type=\"checkbox\"\n #dismissPermanently\n />\n <span></span>\n <span>{{ \"Don't show again\" | translate }}</span>\n </label>\n }\n </div>\n }\n }\n </div>\n}\n" }]
|
|
1682
1715
|
}], propDecorators: { alerts: [{
|
|
1683
1716
|
type: Input
|
|
1684
1717
|
}] } });
|
|
@@ -1716,10 +1749,10 @@ class ChartEventsService {
|
|
|
1716
1749
|
const result = await Promise.all(promises);
|
|
1717
1750
|
return result.flat();
|
|
1718
1751
|
}
|
|
1719
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1720
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
1752
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ChartEventsService, deps: [{ token: i1$2.EventService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1753
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ChartEventsService }); }
|
|
1721
1754
|
}
|
|
1722
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1755
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ChartEventsService, decorators: [{
|
|
1723
1756
|
type: Injectable
|
|
1724
1757
|
}], ctorParameters: () => [{ type: i1$2.EventService }] });
|
|
1725
1758
|
|
|
@@ -1770,10 +1803,10 @@ class ChartAlarmsService {
|
|
|
1770
1803
|
const result = await Promise.all(promises);
|
|
1771
1804
|
return result.flat();
|
|
1772
1805
|
}
|
|
1773
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1774
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
1806
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ChartAlarmsService, deps: [{ token: i1$2.AlarmService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1807
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ChartAlarmsService }); }
|
|
1775
1808
|
}
|
|
1776
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1809
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ChartAlarmsService, decorators: [{
|
|
1777
1810
|
type: Injectable
|
|
1778
1811
|
}], ctorParameters: () => [{ type: i1$2.AlarmService }] });
|
|
1779
1812
|
|
|
@@ -1805,10 +1838,10 @@ class ChartHelpersService {
|
|
|
1805
1838
|
getTargetId(obj) {
|
|
1806
1839
|
return obj?.__target?.id ?? obj?.target;
|
|
1807
1840
|
}
|
|
1808
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1809
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
1841
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ChartHelpersService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1842
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ChartHelpersService }); }
|
|
1810
1843
|
}
|
|
1811
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1844
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ChartHelpersService, decorators: [{
|
|
1812
1845
|
type: Injectable
|
|
1813
1846
|
}] });
|
|
1814
1847
|
|
|
@@ -1847,10 +1880,10 @@ class SelectAggregatedDatapointComponent {
|
|
|
1847
1880
|
this.selectedDatapointLabel = found?.label || '';
|
|
1848
1881
|
this.selectedDatapointColor = found?.color || '';
|
|
1849
1882
|
}
|
|
1850
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1851
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
1883
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SelectAggregatedDatapointComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1884
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: SelectAggregatedDatapointComponent, isStandalone: true, selector: "c8y-select-aggregated-datapoint", inputs: { activeDatapoints: "activeDatapoints", value: "value" }, outputs: { valueChange: "valueChange" }, host: { classAttribute: "d-contents" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"dropdown dropup\"\n dropdown\n #datapointDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"datapointDropdown.isOpen\"\n *ngIf=\"activeDatapoints?.length > 0\"\n>\n <ng-template #selectedDatapoint>\n <div class=\"text-left\">\n <strong>{{ selectedDatapointLabel }}</strong>\n <br />\n {{ 'Click to change' | translate }}\n </div>\n </ng-template>\n <button\n class=\"btn btn-default d-flex a-i-center dropdown-toggle c8y-dropdown\"\n title=\"{{'Select a data point to view its aggregated values in the time slider.' | translate }}\"\n type=\"button\"\n dropdownToggle\n >\n <span\n [style.background-color]=\"selectedDatapointColor\"\n style=\"display: inline-block; width: 16px; height: 16px; border-radius: 50%\"\n ></span>\n <span class=\"caret\"></span>\n </button>\n <ul\n class=\"dropdown-menu dropdown-menu-right\"\n *dropdownMenu\n >\n <li *ngFor=\"let datapoint of activeDatapoints\">\n <button\n class=\"p-r-8\"\n type=\"button\"\n (click)=\"changeDatapointSelection(datapoint)\"\n >\n <span\n class=\"d-inline-block m-r-4\"\n [style.background-color]=\"datapoint?.color\"\n style=\"width: 16px; height: 16px; border-radius: 50%\"\n ></span>\n <span class=\"text-truncate\" style=\"max-width:220px!important\" title=\"{{ datapoint?.label || `${datapoint?.fragment}-${datapoint?.series}` }}\">\n {{ datapoint?.label || `${datapoint?.fragment}-${datapoint?.series}` }}\n </span>\n <span\n class=\"m-l-auto flex-no-shrink\"\n *ngIf=\"\n datapoint.__target.id === value?.__target.id &&\n datapoint.fragment === value?.fragment &&\n datapoint.series === value?.series\n \"\n >\n <i\n class=\"text-success h4\"\n [c8yIcon]=\"'check'\"\n ></i>\n </span>\n </button>\n </li>\n </ul>\n</div>\n<button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Select a data point to view its aggregated values in the time slider.' | translate\n }}\"\n placement=\"left\"\n triggers=\"focus\"\n container=\"body\"\n></button>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i1$3.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "ngmodule", type: BsDropdownModule }, { kind: "directive", type: i2.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i2.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i2.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
|
|
1852
1885
|
}
|
|
1853
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1886
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SelectAggregatedDatapointComponent, decorators: [{
|
|
1854
1887
|
type: Component,
|
|
1855
1888
|
args: [{ selector: 'c8y-select-aggregated-datapoint', host: {
|
|
1856
1889
|
class: 'd-contents'
|
|
@@ -1935,6 +1968,15 @@ class ChartsComponent {
|
|
|
1935
1968
|
changes.config.previousValue?.dateFrom !== changes.config.currentValue.dateFrom &&
|
|
1936
1969
|
changes.config.previousValue?.dateTo !== changes.config.currentValue.dateTo &&
|
|
1937
1970
|
changes.config.previousValue?.aggregation === changes.config.currentValue?.aggregation) {
|
|
1971
|
+
// This is needed for cases when 2 data point graph widgets exist on the same dashboard
|
|
1972
|
+
// and one of them changes the time range which is loaded, the other one should update the zoom level accordingly
|
|
1973
|
+
if (this.echartsInstance) {
|
|
1974
|
+
this.echartsInstance.dispatchAction({
|
|
1975
|
+
type: 'dataZoom',
|
|
1976
|
+
startValue: new Date(currentTimeRange.dateFrom).getTime(),
|
|
1977
|
+
endValue: new Date(currentTimeRange.dateTo).getTime()
|
|
1978
|
+
}, { silent: true });
|
|
1979
|
+
}
|
|
1938
1980
|
return;
|
|
1939
1981
|
}
|
|
1940
1982
|
this.configChangedSubject.next();
|
|
@@ -1942,6 +1984,7 @@ class ChartsComponent {
|
|
|
1942
1984
|
ngOnInit() {
|
|
1943
1985
|
if (this.alerts) {
|
|
1944
1986
|
this.alerts.setAlertGroupDismissStrategy('warning', DismissAlertStrategy.TEMPORARY_OR_PERMANENT);
|
|
1987
|
+
this.alerts.setAlertGroupDismissStrategy('danger', DismissAlertStrategy.NONE);
|
|
1945
1988
|
}
|
|
1946
1989
|
}
|
|
1947
1990
|
ngOnDestroy() {
|
|
@@ -2057,7 +2100,13 @@ class ChartsComponent {
|
|
|
2057
2100
|
return options?.series?.[0]?.markArea?.data?.length > 0;
|
|
2058
2101
|
}
|
|
2059
2102
|
saveAsImage() {
|
|
2060
|
-
this.echartsInstance.
|
|
2103
|
+
const dataZoom = this.echartsInstance.getOption().dataZoom;
|
|
2104
|
+
const grid = this.echartsInstance.getOption().grid;
|
|
2105
|
+
this.echartsInstance.setOption({
|
|
2106
|
+
grid: { bottom: 8 },
|
|
2107
|
+
dataZoom: [{}, { show: false }]
|
|
2108
|
+
});
|
|
2109
|
+
this.echartsInstance.resize();
|
|
2061
2110
|
const url = this.echartsInstance.getDataURL({
|
|
2062
2111
|
pixelRatio: 2,
|
|
2063
2112
|
backgroundColor: '#fff',
|
|
@@ -2069,7 +2118,8 @@ class ChartsComponent {
|
|
|
2069
2118
|
document.body.appendChild(link);
|
|
2070
2119
|
link.click();
|
|
2071
2120
|
document.body.removeChild(link);
|
|
2072
|
-
this.echartsInstance.setOption({
|
|
2121
|
+
this.echartsInstance.setOption({ dataZoom, grid });
|
|
2122
|
+
this.echartsInstance.resize(); // force resize to original state
|
|
2073
2123
|
}
|
|
2074
2124
|
loadMoreData() {
|
|
2075
2125
|
const currentRange = this.widgetTimeContextDateRangeService.initialTimeRange();
|
|
@@ -2291,7 +2341,7 @@ class ChartsComponent {
|
|
|
2291
2341
|
}, this.events, this.alarms, {
|
|
2292
2342
|
displayMarkedLine: this.config.displayMarkedLine || false,
|
|
2293
2343
|
displayMarkedPoint: this.config.displayMarkedPoint || false,
|
|
2294
|
-
mergeMatchingDatapoints: this.config.mergeMatchingDatapoints
|
|
2344
|
+
mergeMatchingDatapoints: this.config.mergeMatchingDatapoints ?? true,
|
|
2295
2345
|
forceMergeDatapoints: this.config.forceMergeDatapoints || false,
|
|
2296
2346
|
showLabelAndUnit: this.config.showLabelAndUnit || false,
|
|
2297
2347
|
showSlider: this.config.showSlider || false,
|
|
@@ -2329,7 +2379,7 @@ class ChartsComponent {
|
|
|
2329
2379
|
}, this.events, this.alarms, {
|
|
2330
2380
|
displayMarkedLine: this.config.displayMarkedLine || false,
|
|
2331
2381
|
displayMarkedPoint: this.config.displayMarkedPoint || false,
|
|
2332
|
-
mergeMatchingDatapoints: this.config.mergeMatchingDatapoints
|
|
2382
|
+
mergeMatchingDatapoints: this.config.mergeMatchingDatapoints ?? true,
|
|
2333
2383
|
forceMergeDatapoints: this.config.forceMergeDatapoints || false,
|
|
2334
2384
|
showLabelAndUnit: this.config.showLabelAndUnit || false,
|
|
2335
2385
|
showSlider: this.config.showSlider || false,
|
|
@@ -2340,6 +2390,15 @@ class ChartsComponent {
|
|
|
2340
2390
|
}
|
|
2341
2391
|
fetchSeriesForDatapoints$() {
|
|
2342
2392
|
this.activeDatapoints = this.config?.datapoints?.filter(dp => dp.__active);
|
|
2393
|
+
const retrievalError = this.config?.datapoints?.find(dp => dp.retrievalError);
|
|
2394
|
+
if (retrievalError) {
|
|
2395
|
+
this.alerts.clear();
|
|
2396
|
+
this.alerts.addAlerts(new DynamicComponentAlert({
|
|
2397
|
+
type: 'danger',
|
|
2398
|
+
text: retrievalError.text
|
|
2399
|
+
}));
|
|
2400
|
+
return of([]);
|
|
2401
|
+
}
|
|
2343
2402
|
if (!this.activeDatapoints || this.activeDatapoints.length === 0) {
|
|
2344
2403
|
this.updateActiveDatapoints.emit([]);
|
|
2345
2404
|
return of([]);
|
|
@@ -2383,7 +2442,7 @@ class ChartsComponent {
|
|
|
2383
2442
|
: this.config?.datapoints?.filter(dp => dp.__active)[0];
|
|
2384
2443
|
const request = defer(() => this.measurementService.listSeries({
|
|
2385
2444
|
...(customTimeRange ? customTimeRange : timeRange),
|
|
2386
|
-
source: aggregatedDatapoint
|
|
2445
|
+
source: aggregatedDatapoint.__target?.id || '',
|
|
2387
2446
|
series: [`${aggregatedDatapoint.fragment}.${aggregatedDatapoint.series}`],
|
|
2388
2447
|
...(this.config.aggregation || customTimeRange
|
|
2389
2448
|
? {
|
|
@@ -2466,8 +2525,8 @@ class ChartsComponent {
|
|
|
2466
2525
|
}
|
|
2467
2526
|
return { dateFrom: timeRange.dateFrom.toISOString(), dateTo: timeRange.dateTo.toISOString() };
|
|
2468
2527
|
}
|
|
2469
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2470
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
2528
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ChartsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2529
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: ChartsComponent, isStandalone: true, selector: "c8y-charts", inputs: { config: "config", alerts: "alerts", chartViewContext: "chartViewContext" }, outputs: { configChangeOnZoomOut: "configChangeOnZoomOut", timeRangeChangeOnRealtime: "timeRangeChangeOnRealtime", datapointOutOfSync: "datapointOutOfSync", updateAlarmsAndEvents: "updateAlarmsAndEvents", isMarkedAreaEnabled: "isMarkedAreaEnabled", finishLoading: "finishLoading", updateActiveDatapoints: "updateActiveDatapoints", updateAggregatedSliderDatapoint: "updateAggregatedSliderDatapoint" }, providers: [
|
|
2471
2530
|
{ provide: NGX_ECHARTS_CONFIG, useFactory: () => ({ echarts: () => import('echarts') }) },
|
|
2472
2531
|
ChartRealtimeService,
|
|
2473
2532
|
MeasurementRealtimeService,
|
|
@@ -2480,7 +2539,7 @@ class ChartsComponent {
|
|
|
2480
2539
|
AlarmSeverityToLabelPipe
|
|
2481
2540
|
], viewQueries: [{ propertyName: "chart", first: true, predicate: ["chart"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"p-relative fit-h chart-container\">\n <div\n class=\"fit-w fit-h\"\n #chart\n echarts\n [options]=\"chartOption$ | async\"\n (chartInit)=\"onChartInit($event)\"\n ></div>\n\n <c8y-chart-alerts [alerts]=\"alerts\"></c8y-chart-alerts>\n\n <div\n class=\"chart-load-more\"\n *ngIf=\"showLoadMore\"\n >\n <button\n class=\"btn btn-primary btn-block\"\n (click)=\"loadMoreData()\"\n >\n <i c8yIcon=\"restore\"></i>\n {{ 'Load more' | translate }}\n </button>\n </div>\n\n <div\n class=\"e-charts--aggregated-datapoint\"\n *ngIf=\"\n activeDatapoints.length > 1 &&\n config?.showSlider &&\n chartViewContext !== CHART_VIEW_CONTEXT.WIDGET_VIEW\n \"\n >\n <c8y-select-aggregated-datapoint\n [value]=\"config?.aggregatedDatapoint || activeDatapoints[0]\"\n (valueChange)=\"updateAggregatedSliderDatapoint.emit($event)\"\n [activeDatapoints]=\"activeDatapoints\"\n ></c8y-select-aggregated-datapoint>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule$1 }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "ngmodule", type: NgxEchartsModule }, { kind: "directive", type: i3$1.NgxEchartsDirective, selector: "echarts, [echarts]", inputs: ["options", "theme", "initOpts", "merge", "autoResize", "loading", "loadingType", "loadingOpts"], outputs: ["chartInit", "optionsError", "chartClick", "chartDblClick", "chartMouseDown", "chartMouseMove", "chartMouseUp", "chartMouseOver", "chartMouseOut", "chartGlobalOut", "chartContextMenu", "chartHighlight", "chartDownplay", "chartSelectChanged", "chartLegendSelectChanged", "chartLegendSelected", "chartLegendUnselected", "chartLegendLegendSelectAll", "chartLegendLegendInverseSelect", "chartLegendScroll", "chartDataZoom", "chartDataRangeSelected", "chartGraphRoam", "chartGeoRoam", "chartTreeRoam", "chartTimelineChanged", "chartTimelinePlayChanged", "chartRestore", "chartDataViewChanged", "chartMagicTypeChanged", "chartGeoSelectChanged", "chartGeoSelected", "chartGeoUnselected", "chartAxisAreaSelected", "chartBrush", "chartBrushEnd", "chartBrushSelected", "chartGlobalCursorTaken", "chartRendered", "chartFinished"], exportAs: ["echarts"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "ngmodule", type: PopoverModule }, { kind: "component", type: ChartAlertsComponent, selector: "c8y-chart-alerts", inputs: ["alerts"] }, { kind: "ngmodule", type: AlarmsModule }, { kind: "component", type: SelectAggregatedDatapointComponent, selector: "c8y-select-aggregated-datapoint", inputs: ["activeDatapoints", "value"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }] }); }
|
|
2482
2541
|
}
|
|
2483
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2542
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ChartsComponent, decorators: [{
|
|
2484
2543
|
type: Component,
|
|
2485
2544
|
args: [{ selector: 'c8y-charts', providers: [
|
|
2486
2545
|
{ provide: NGX_ECHARTS_CONFIG, useFactory: () => ({ echarts: () => import('echarts') }) },
|