@spike-rabbit/charts-ng 49.0.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spike-rabbit-charts-ng.mjs","sources":["../../../../projects/charts-ng/src/shared/echarts.custom.ts","../../../../projects/charts-ng/src/shared/themes/element.ts","../../../../projects/charts-ng/src/shared/theme-support.ts","../../../../projects/charts-ng/src/components/si-chart-loading-spinner/si-chart-loading-spinner.component.ts","../../../../projects/charts-ng/src/components/si-chart-loading-spinner/si-chart-loading-spinner.component.html","../../../../projects/charts-ng/src/components/si-custom-legend/si-custom-legend.component.ts","../../../../projects/charts-ng/src/components/si-custom-legend/si-custom-legend.component.html","../../../../projects/charts-ng/src/components/si-chart/si-chart.component.ts","../../../../projects/charts-ng/src/components/si-chart/si-chart.component.html","../../../../projects/charts-ng/src/components/si-chart/index.ts","../../../../projects/charts-ng/src/components/si-chart-cartesian/si-chart-cartesian.component.ts","../../../../projects/charts-ng/src/components/si-chart-cartesian/index.ts","../../../../projects/charts-ng/src/components/si-chart-circle/si-chart-circle.component.ts","../../../../projects/charts-ng/src/components/si-chart-circle/index.ts","../../../../projects/charts-ng/src/components/si-chart-gauge/si-chart-gauge.component.ts","../../../../projects/charts-ng/src/components/si-chart-gauge/index.ts","../../../../projects/charts-ng/src/components/si-chart-progress/si-chart-progress.component.ts","../../../../projects/charts-ng/src/components/si-chart-progress/index.ts","../../../../projects/charts-ng/src/components/si-chart-progress-bar/si-chart-progress-bar.component.ts","../../../../projects/charts-ng/src/components/si-chart-progress-bar/index.ts","../../../../projects/charts-ng/src/components/si-custom-legend/index.ts","../../../../projects/charts-ng/src/components/si-chart-sankey/si-chart-sankey.component.ts","../../../../projects/charts-ng/src/components/si-chart-sankey/index.ts","../../../../projects/charts-ng/src/components/si-chart-sunburst/si-chart-sunburst.component.ts","../../../../projects/charts-ng/src/components/si-chart-sunburst/index.ts","../../../../projects/charts-ng/src/components/index.ts","../../../../projects/charts-ng/src/shared/index.ts","../../../../projects/charts-ng/src/public-api.module.ts","../../../../projects/charts-ng/src/public-api.ts","../../../../projects/charts-ng/src/spike-rabbit-charts-ng.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport {\n BarChart,\n CandlestickChart,\n CustomChart,\n GaugeChart,\n HeatmapChart,\n LineChart,\n PieChart,\n SankeyChart,\n ScatterChart,\n SunburstChart\n} from 'echarts/charts';\nimport {\n AxisPointerComponent,\n BrushComponent,\n DatasetComponent,\n DataZoomInsideComponent,\n DataZoomSliderComponent,\n GridComponent,\n LegendComponent,\n LegendScrollComponent,\n MarkAreaComponent,\n MarkLineComponent,\n MarkPointComponent,\n PolarComponent,\n SingleAxisComponent,\n TitleComponent,\n ToolboxComponent,\n TooltipComponent,\n VisualMapComponent\n} from 'echarts/components';\nimport * as echarts from 'echarts/core';\nimport { CanvasRenderer, SVGRenderer } from 'echarts/renderers';\n\necharts.use([\n // components\n AxisPointerComponent,\n BrushComponent,\n DataZoomInsideComponent,\n DataZoomSliderComponent,\n DatasetComponent,\n GridComponent,\n LegendComponent,\n LegendScrollComponent,\n MarkAreaComponent,\n MarkLineComponent,\n MarkPointComponent,\n PolarComponent,\n SingleAxisComponent,\n TitleComponent,\n ToolboxComponent,\n TooltipComponent,\n VisualMapComponent,\n\n // chart types\n BarChart,\n CandlestickChart,\n CustomChart,\n GaugeChart,\n HeatmapChart,\n LineChart,\n PieChart,\n ScatterChart,\n SankeyChart,\n SunburstChart,\n\n // renderers\n CanvasRenderer,\n SVGRenderer\n]);\n\nexport { echarts };\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { echarts } from '../echarts.custom';\n\nconst getProp = (style: CSSStyleDeclaration, prop: string): string => {\n return style.getPropertyValue(prop);\n};\n\nconst candleStickValues = ['open', 'close', 'lowest', 'highest'];\n\nconst tooltipFormatter = (p: object | object[]): string => {\n const params = Array.isArray(p) ? p : [p];\n const label: string = params[0]?.axisValueLabel ?? '';\n\n let html = label;\n for (const series of params) {\n const isCandle = series.componentSubType === 'candlestick';\n const isPie = series.componentSubType === 'pie';\n const useName = series.name != series.axisValue;\n const name = isPie\n ? series.data.name\n : useName\n ? // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n series.name || series.seriesName\n : series.seriesName;\n const valIndex = (series.encode.value ?? series.encode.y)[0];\n const value = isCandle\n ? ''\n : isPie\n ? series.percent + '%'\n : Array.isArray(series.value)\n ? series.value[valIndex]\n : series.value;\n\n html += '<div style=\"display: flex; align-items: center;\">';\n html += series.marker?.replace('margin-right', 'margin-inline-end');\n html += `<span style=\"margin-inline: 4px 8px\">${name}</span>`;\n html += `<span style=\"margin-inline-start: auto\">${value}</span>`;\n html += '</div>';\n\n if (isCandle) {\n const miniMarker = `<span style=\"display:inline-block;vertical-align:middle;margin-inline:3px 8px;border-radius:4px;width:4px;height:4px;background:${series.color};\"></span>`;\n for (let i = 0; i < candleStickValues.length; i++) {\n const v = candleStickValues[i];\n const idx = series.encode.y[i];\n html += '<div style=\"display: flex; align-items: center;\">';\n html += miniMarker;\n html += `<span style=\"margin-inline-end: 8px\">${v}</span>`;\n html += `<span style=\"margin-inline-start: auto\">${series.value[idx]}</span>`;\n html += '</div>';\n }\n }\n }\n return html;\n};\n\nexport const themeElement = {\n name: 'element',\n style: () => {\n const style = window.getComputedStyle(document.documentElement);\n\n const elementUi0 = getProp(style, '--element-ui-0');\n const elementUi0Hover = getProp(style, '--element-ui-0-hover');\n const elementUi1 = getProp(style, '--element-ui-1');\n const elementUi2 = getProp(style, '--element-ui-2');\n const elementUi3 = getProp(style, '--element-ui-3');\n const elementUi4 = getProp(style, '--element-ui-4');\n const elementBase0 = getProp(style, '--element-base-0');\n const elementBase1 = getProp(style, '--element-base-1');\n const elementTextPrimary = getProp(style, '--element-text-primary');\n const elementTextSecondary = getProp(style, '--element-text-secondary');\n const elementTextInverse = getProp(style, '--element-text-inverse');\n\n // The order of colors is provided by ux.\n const colorPalettes = {\n default: [\n getProp(style, '--element-data-1'), // $siemens-data-petrol,\n getProp(style, '--element-data-2'), // $siemens-data-turquoise-900,\n getProp(style, '--element-data-4'), // $siemens-data-turquoise-700,\n getProp(style, '--element-data-6'), // $siemens-data-interactive-coral-900,\n getProp(style, '--element-data-5'), // $siemens-data-royal-blue-500,\n getProp(style, '--element-data-7'), // $siemens-data-purple-700,\n getProp(style, '--element-data-8'), // $siemens-data-purple-900,\n getProp(style, '--element-data-9'), // $siemens-data-orchid-700,\n getProp(style, '--element-data-11'), // $siemens-data-plum-900,\n getProp(style, '--element-data-12'), // $siemens-data-plum-500\n getProp(style, '--element-data-13'), // $siemens-data-royal-blue-700,\n getProp(style, '--element-data-16'), // $siemens-data-sand-700,\n getProp(style, '--element-data-17'), // $siemens-data-deep-blue-700\n getProp(style, '--element-data-3'), // $siemens-data-green-700,\n getProp(style, '--element-data-10'), // $siemens-data-red-700,\n getProp(style, '--element-data-14'), // $siemens-data-orange-900,\n getProp(style, '--element-data-15') // $siemens-data-yellow-900,\n ]\n };\n\n const gradientColors = {\n default: [\n getProp(style, '--element-data-1'), // $siemens-data-petrol,\n getProp(style, '--element-data-2') // $siemens-data-turquoise-900,\n ]\n };\n\n const axisFontSize = 12;\n const axisLineHeight = 12;\n const axisLineColor = elementUi4;\n\n const rootFontSizeRaw = getProp(style, 'font-size');\n const rootFontSize = rootFontSizeRaw.endsWith('px') ? parseInt(rootFontSizeRaw) : 16;\n\n // value based on body-2\n const fontSize = rootFontSize * 0.875;\n // diverging here by intention\n const lineHeight = fontSize;\n const textColor = elementTextPrimary;\n\n const candlestickBull = colorPalettes.default[4];\n const candlestickBear = colorPalettes.default[12];\n\n const dataZoomFillerColor = echarts.color.modifyAlpha(elementUi4, 0.4);\n const dataZoomBrushColor = elementUi0;\n const dataZoomAreaColor = elementUi4;\n const dataZoomLineColor = elementUi2;\n\n const dataZoomHandleIcon =\n 'path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z';\n const dataZoomHandleColor = elementUi0;\n\n const tooltipBackground = echarts.color.modifyAlpha(elementUi1, 0.8);\n\n const rtl = style.direction === 'rtl';\n\n // For E2E testing to get rid of font-loading instability.\n const fontFamily = navigator.webdriver ? 'sans-serif' : undefined;\n\n return {\n textStyle: {\n fontFamily\n },\n\n color: colorPalettes.default,\n gradientColor: gradientColors.default,\n backgroundColor: 'transparent',\n animationDuration: 700,\n\n title: {\n padding: [10, 0, 0, 10],\n textStyle: {\n fontFamily,\n lineHeight,\n fontSize,\n color: textColor\n },\n subtextStyle: {\n fontFamily,\n lineHeight,\n fontSize,\n color: elementTextSecondary\n }\n },\n\n legend: {\n backgroundColor: 'transparent',\n inactiveColor: elementUi3,\n left: 'auto',\n right: 20,\n top: 35,\n textStyle: {\n fontFamily,\n color: textColor,\n lineHeight,\n fontSize\n },\n icon: 'circle',\n pageTextStyle: {\n color: textColor\n },\n itemStyle: {\n borderWidth: 0,\n itemGap: 12\n }\n },\n\n tooltip: {\n borderWidth: 0,\n backgroundColor: tooltipBackground,\n textStyle: {\n fontFamily,\n color: 'var(--element-text-inverse)',\n fontWeight: 400\n },\n padding: [8, 12, 8, 12],\n axisPointer: {\n crossStyle: {\n color: elementUi3,\n width: 1\n }\n },\n formatter: tooltipFormatter\n },\n\n axisPointer: {\n label: {\n fontFamily,\n color: elementTextInverse,\n backgroundColor: elementUi1,\n lineHeight: axisLineHeight,\n fontSize: axisFontSize\n },\n lineStyle: {\n color: elementUi3,\n width: 2\n },\n handle: {\n color: 'rgba(0,0,0,0)',\n margin: 0\n }\n },\n\n grid: {\n top: 85,\n left: 32,\n right: 32,\n bottom: 30,\n containLabel: true\n },\n\n valueAxis: {\n nameTextStyle: {\n fontFamily,\n color: elementTextSecondary\n },\n axisLine: {\n show: true,\n lineStyle: {\n color: axisLineColor\n }\n },\n axisLabel: {\n fontFamily,\n color: textColor,\n lineHeight: axisLineHeight,\n fontSize: axisFontSize,\n hideOverlap: true\n },\n axisTick: {\n alignWithLabel: true\n },\n splitLine: {\n lineStyle: {\n color: axisLineColor\n }\n }\n },\n timeAxis: {\n inverse: rtl,\n nameTextStyle: {\n fontFamily,\n color: elementTextSecondary\n },\n axisLine: {\n show: true,\n lineStyle: {\n color: axisLineColor\n }\n },\n axisLabel: {\n fontFamily,\n color: textColor,\n lineHeight: axisLineHeight,\n fontSize: axisFontSize,\n hideOverlap: true\n },\n axisTick: {\n alignWithLabel: true\n },\n splitLine: {\n lineStyle: {\n color: axisLineColor\n }\n }\n },\n categoryAxis: {\n inverse: rtl,\n nameTextStyle: {\n fontFamily,\n color: elementTextSecondary\n },\n axisLine: {\n show: true,\n lineStyle: {\n color: axisLineColor\n }\n },\n axisLabel: {\n fontFamily,\n color: textColor,\n lineHeight: axisLineHeight,\n fontSize: axisFontSize,\n hideOverlap: true\n },\n axisTick: {\n alignWithLabel: true\n },\n splitLine: {\n lineStyle: {\n color: axisLineColor\n }\n }\n },\n\n dataZoom: {\n textStyle: {\n fontFamily,\n color: textColor,\n lineHeight: axisLineHeight,\n fontSize: axisFontSize\n },\n borderColor: elementUi4,\n fillerColor: dataZoomFillerColor,\n handleIcon: dataZoomHandleIcon,\n handleStyle: {\n color: dataZoomHandleColor,\n borderColor: elementUi4\n },\n moveHandleStyle: {\n color: elementUi4,\n opacity: 1\n },\n brushStyle: {\n color: dataZoomBrushColor\n },\n dataBackground: {\n areaStyle: {\n color: dataZoomAreaColor\n },\n lineStyle: {\n color: dataZoomLineColor\n }\n },\n selectedDataBackground: {\n areaStyle: {\n color: dataZoomLineColor\n },\n lineStyle: {\n color: dataZoomLineColor\n }\n },\n emphasis: {\n moveHandleStyle: {\n color: elementUi0Hover,\n opacity: 1\n },\n handleStyle: {\n color: elementUi0Hover,\n borderColor: elementUi4\n }\n }\n },\n\n toolbox: {\n feature: {\n dataZoom: {\n brushStyle: {\n color: dataZoomFillerColor\n }\n }\n }\n },\n\n // different chart types\n graph: {\n color: colorPalettes.default\n },\n\n bar: {\n barGap: 0,\n label: {\n fontFamily,\n color: elementTextSecondary,\n fontSize\n }\n },\n\n line: {\n areaStyle: {\n opacity: 0.3\n },\n symbol: 'circle'\n },\n\n pie: {\n label: {\n fontFamily,\n formatter: '{d}%',\n color: elementTextSecondary,\n lineHeight,\n fontSize\n },\n labelLine: {\n lineStyle: {\n color: elementTextSecondary\n }\n },\n itemStyle: {\n borderWidth: 2,\n borderColor: elementBase1\n }\n },\n\n candlestick: {\n itemStyle: {\n color: candlestickBull,\n color0: candlestickBear,\n borderColor: candlestickBull,\n borderColor0: candlestickBear\n }\n },\n\n gauge: {\n detail: {\n color: elementTextPrimary,\n rich: {\n value: {\n color: elementTextPrimary\n },\n unit: {\n color: elementTextPrimary\n }\n }\n },\n axisLabel: {\n fontFamily,\n color: elementTextPrimary\n },\n axisTick: {\n lineStyle: {\n color: axisLineColor\n }\n },\n splitLine: {\n lineStyle: {\n color: axisLineColor\n }\n }\n },\n\n sankey: {\n label: {\n fontFamily,\n textBorderColor: 'transparent',\n color: textColor\n }\n },\n sunburst: {\n label: {\n fontFamily,\n textBorderColor: 'transparent',\n color: textColor\n }\n },\n\n simpl: {\n colorPalettes,\n\n dataZoom: {\n options: {\n height: 36,\n bottom: 20\n },\n grid: {\n bottom: 80\n }\n },\n\n timeRangeBar: {\n height: 32\n },\n\n externalZoomSlider: {\n grid: {\n bottom: 10\n }\n },\n\n legendLeft: {\n left: 10,\n width: '45%'\n },\n legendRight: {\n right: 20,\n width: '45%'\n },\n\n noTitle: {\n grid: {\n top: 60\n },\n legend: {\n top: 15\n }\n },\n\n subTitle: {\n grid: {\n top: 110\n },\n legend: {\n top: 65\n }\n },\n\n customLegend: {\n grid: {\n top: 64\n }\n },\n\n progress: {\n itemWidth: 6,\n itemGap: 6,\n grey: elementUi4\n },\n\n progressBar: {\n labelColor: textColor,\n itemWidth: 20,\n grid: {\n left: 16,\n right: 52,\n containLabel: true\n }\n },\n\n gauge: {\n grey: elementBase0,\n value: elementTextPrimary,\n unit: elementUi3,\n defaultColor: elementUi0\n }\n }\n };\n }\n};\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { themeElement } from '../shared/themes/element';\n\nexport const themeSupport = {\n _defaultTheme: themeElement,\n _themes: {} as { [key: string]: any },\n\n registerTheme(theme: any) {\n if (theme.name) {\n this._themes[theme.name] = theme;\n }\n },\n\n getThemeNames() {\n return Object.keys(this._themes);\n },\n\n getThemeByName(name: string) {\n return this._themes[name];\n },\n\n setDefault(theme: any) {\n this._defaultTheme = theme;\n },\n\n getDefault(): any {\n return this._defaultTheme;\n }\n};\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'si-chart-loading-spinner',\n templateUrl: './si-chart-loading-spinner.component.html',\n styleUrl: './si-chart-loading-spinner.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiChartLoadingSpinnerComponent {}\n","<div class=\"loading\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <g>\n <path d=\"M256,156a16,16,0,0,1-16-16V80a16,16,0,0,1,32,0v60A16,16,0,0,1,256,156Z\" />\n <path\n d=\"M314.78,175.1a16,16,0,0,1-3.54-22.35l35.27-48.54A16,16,0,1,1,372.39,123l-35.26,48.54A16,16,0,0,1,314.78,175.1Z\"\n />\n <path\n d=\"M351.11,225.1a16,16,0,0,1,10.27-20.16l57.06-18.54a16,16,0,1,1,9.89,30.43l-57.06,18.54A16,16,0,0,1,351.11,225.1Z\"\n />\n <path\n d=\"M351.11,286.9a16,16,0,0,1,20.16-10.27l57.06,18.54a16,16,0,1,1-9.89,30.43l-57.06-18.54A16,16,0,0,1,351.11,286.9Z\"\n />\n <path\n d=\"M314.78,336.9a16,16,0,0,1,22.35,3.54L372.39,389a16,16,0,1,1-25.88,18.81l-35.27-48.54A16,16,0,0,1,314.78,336.9Z\"\n />\n <path d=\"M256,356a16,16,0,0,1,16,16v60a16,16,0,0,1-32,0V372A16,16,0,0,1,256,356Z\" />\n <path\n d=\"M197.22,336.9a16,16,0,0,1,3.54,22.35l-35.27,48.54A16,16,0,1,1,139.61,389l35.26-48.54A16,16,0,0,1,197.22,336.9Z\"\n />\n <path\n d=\"M160.89,286.9a16,16,0,0,1-10.27,20.16L93.56,325.6a16,16,0,0,1-9.89-30.43l57.06-18.54A16,16,0,0,1,160.89,286.9Z\"\n />\n <path\n d=\"M160.89,225.1a16,16,0,0,1-20.16,10.27L83.67,216.83a16,16,0,1,1,9.89-30.43l57.06,18.54A16,16,0,0,1,160.89,225.1Z\"\n />\n <path\n d=\"M197.22,175.1a16,16,0,0,1-22.35-3.54L139.61,123a16,16,0,1,1,25.88-18.81l35.27,48.54A16,16,0,0,1,197.22,175.1Z\"\n />\n </g>\n </svg>\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Component, ElementRef, input, output, viewChild } from '@angular/core';\n\nimport { CustomLegend, CustomLegendItem } from './si-custom-legend.interface';\n\n@Component({\n selector: 'si-custom-legend',\n templateUrl: './si-custom-legend.component.html',\n styleUrl: './si-custom-legend.component.scss'\n})\nexport class SiCustomLegendComponent {\n /** @internal */\n readonly customLegendContainer = viewChild.required<ElementRef>('customLegendContainer');\n\n readonly customLegend = input<CustomLegend>();\n readonly title = input<string>();\n readonly subTitle = input<string>();\n\n readonly titleColor = input<string>();\n readonly subTitleColor = input<string>();\n readonly textColor = input<string>();\n\n readonly legendIconClickEvent = output<CustomLegendItem>();\n readonly legendClickEvent = output<CustomLegendItem>();\n\n readonly legendHoverStartEvent = output<CustomLegendItem>();\n readonly legendHoverEndEvent = output<CustomLegendItem>();\n\n protected legendIconClick(legend: CustomLegendItem): void {\n legend.selected = !legend.selected;\n this.legendIconClickEvent.emit(legend);\n }\n\n protected legendClick(legend: CustomLegendItem): void {\n legend.selected = !legend.selected;\n this.legendClickEvent.emit(legend);\n }\n}\n","@if (customLegend() && customLegend()?.customLegends) {\n <div #customLegendContainer class=\"legend-container si-body-2\">\n @for (leg of customLegend()?.customLegends; track legendIndex; let legendIndex = $index) {\n @if (legendIndex === 0 && leg && leg.list && leg.list.length > 0) {\n <div\n class=\"left-legends legend-item-container\"\n [class.legend-empty]=\"\n customLegend()?.legendAxis !== 'left' && customLegend()?.legendAxis !== 'both'\n \"\n [class.legend-single-axis]=\"customLegend()?.legendAxis === 'left'\"\n [class.both-legend-container]=\"customLegend()?.legendAxis === 'both'\"\n >\n <div\n class=\"both-scenario-left-unit-container\"\n [class.left-scenario-unit-container]=\"customLegend()?.legendAxis === 'left'\"\n >\n <span class=\"text-secondary\">{{ leg.unit }}</span>\n </div>\n <div\n class=\"legend-item-container both-scenario-legend-container custom-legend-left\"\n [class.legend-single-axis]=\"customLegend()?.legendAxis === 'left'\"\n >\n @for (legendItem of leg.list; track legendItem.name) {\n <div class=\"legend-item\" [class.hidden-legend]=\"!legendItem.selected\">\n <div\n class=\"me-2 mb-2\"\n (click)=\"legendIconClick(legendItem)\"\n (mouseenter)=\"legendHoverStartEvent.emit(legendItem)\"\n (mouseleave)=\"legendHoverEndEvent.emit(legendItem)\"\n >\n <svg width=\"12\" height=\"12\" xmlns=\"http://www.w3.org/2000/svg\">\n <path [attr.d]=\"legendItem.symbol\" [attr.fill]=\"legendItem.color\" />\n </svg>\n </div>\n <span\n class=\"legend-text text-truncate\"\n [style.color]=\"textColor()\"\n (click)=\"legendClick(legendItem)\"\n (mouseenter)=\"legendHoverStartEvent.emit(legendItem)\"\n (mouseleave)=\"legendHoverEndEvent.emit(legendItem)\"\n >\n {{ legendItem.displayName }}\n </span>\n @if (legendItem.tooltip) {\n <div class=\"tooltip show bs-tooltip-bottom\" role=\"tooltip\">\n <div class=\"tooltip-arrow\"></div>\n <div class=\"tooltip-inner\">{{ legendItem.tooltip }}</div>\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n }\n\n @for (leg of customLegend()?.customLegends; track legendIndex; let legendIndex = $index) {\n @if (legendIndex === 1 && leg && leg.list && leg.list.length > 0) {\n <div\n class=\"right-legends legend-item-container\"\n [class.legend-empty]=\"\n customLegend()?.legendAxis !== 'right' && customLegend()?.legendAxis !== 'both'\n \"\n [class.legend-single-axis]=\"customLegend()?.legendAxis === 'right'\"\n [class.both-legend-container]=\"customLegend()?.legendAxis === 'both'\"\n >\n <div\n class=\"legend-item-container custom-legend-right legend-item-container-right-floating-inner\"\n >\n @for (legendItem of leg.list; track legendItem.name) {\n <div\n class=\"legend-item legend-item-right\"\n [class.hidden-legend]=\"!legendItem.selected\"\n >\n <span\n class=\"legend-text text-truncate\"\n [style.color]=\"textColor()\"\n (click)=\"legendClick(legendItem)\"\n >\n {{ legendItem.displayName }}\n </span>\n <div class=\"right-legend-circle\" (click)=\"legendIconClick(legendItem)\">\n <svg width=\"12\" height=\"12\" xmlns=\"http://www.w3.org/2000/svg\">\n <path [attr.d]=\"legendItem.symbol\" [attr.fill]=\"legendItem.color\" />\n </svg>\n </div>\n @if (legendItem.tooltip) {\n <div class=\"tooltip show bs-tooltip-bottom\" role=\"tooltip\">\n <div class=\"tooltip-arrow\"></div>\n <div class=\"tooltip-inner\">{{ legendItem.tooltip }}</div>\n </div>\n }\n </div>\n }\n </div>\n <div\n class=\"both-scenario-right-unit-container\"\n [class.right-scenario-unit-container]=\"customLegend()?.legendAxis === 'right'\"\n >\n <span class=\"right-unit-text text-secondary\">{{ leg.unit }}</span>\n </div>\n </div>\n }\n }\n </div>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n inject,\n input,\n model,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n output,\n signal,\n SimpleChanges,\n viewChild,\n viewChildren\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { echarts } from '../../shared/echarts.custom';\nimport {\n DataZoomComponentOption,\n EChartOption,\n EChartSeries,\n GridComponentOption\n} from '../../shared/echarts.model';\nimport { themeSupport } from '../../shared/theme-support';\nimport { SiChartLoadingSpinnerComponent } from '../si-chart-loading-spinner/si-chart-loading-spinner.component';\nimport { SiCustomLegendComponent } from '../si-custom-legend/si-custom-legend.component';\nimport {\n CustomLegend,\n CustomLegendItem,\n CustomLegendProps\n} from '../si-custom-legend/si-custom-legend.interface';\nimport {\n AxisPointerEvent,\n CustomLegendMultiLineInfo,\n DataZoomEvent,\n DataZoomRange,\n FilterMode,\n GridRectCoordinate,\n LegendItem,\n LineColor,\n SelectedLegendItem,\n SeriesSelectionState,\n SeriesUpdate\n} from './si-chart.interfaces';\n\n@Component({\n selector: 'si-chart',\n imports: [SiCustomLegendComponent, SiChartLoadingSpinnerComponent],\n templateUrl: './si-chart.component.html',\n styleUrl: './si-chart.component.scss'\n})\nexport class SiChartComponent implements AfterViewInit, OnChanges, OnInit, OnDestroy {\n /**\n * reference to the wrapper container. Used for setting scroll position, etc.\n *\n * @defaultValue\n * ```\n * viewChild.required<ElementRef>('chartContainerWrapper')\n * ```\n */\n readonly chartContainerWrapper = viewChild.required<ElementRef>('chartContainerWrapper');\n protected readonly chartContainer = viewChild<ElementRef>('chart');\n protected readonly externalZoomSliderContainer = viewChild<ElementRef>('externalZoomSlider');\n protected readonly siCustomLegend = viewChildren('siCustomLegend', {\n read: SiCustomLegendComponent\n });\n\n /**\n * See [ECharts 5.x Documentation]{@link https://echarts.apache.org/en/option.html}\n * for all available options.\n */\n readonly options = input<EChartOption>();\n /** Used to override specific properties set in `options`. */\n readonly additionalOptions = input<EChartOption>();\n readonly title = input<string>();\n readonly subTitle = input<string>();\n /** @defaultValue true */\n readonly showLegend = model(true);\n /** @defaultValue false */\n readonly showCustomLegend = input(false);\n /**\n * the renderer to use: canvas or svg\n *\n * @defaultValue 'canvas'\n */\n readonly renderer = input<'canvas' | 'svg'>('canvas');\n /**\n * Enables the zoom slider below the chart.\n *\n * @defaultValue false\n */\n readonly zoomSlider = input(false);\n /**\n * Shows data shadow in dataZoom slider, use together with `zoomSlider`.\n *\n * @defaultValue true\n */\n readonly zoomSliderShadow = input(true);\n /**\n * realtime update mode for zoom slider\n *\n * @defaultValue true\n */\n readonly zoomSliderRealtime = input(true);\n /**\n * enable brush mode for zoom slider\n *\n * @defaultValue true\n */\n readonly zoomSliderBrush = input(true);\n /**\n * Enables zooming inside the chart with the mouse wheel/touch.\n *\n * @defaultValue false\n */\n readonly zoomInside = input(false);\n /** @defaultValue 1000 */\n readonly maxEntries = input(1000);\n /**\n * No auto dataZoom update) by default. Use together with `autoZoomSeriesIndex`.\n *\n * @defaultValue -1\n */\n readonly visibleEntries = model(-1);\n /**\n * No auto dataZoom update) by default. Use together with `autoZoomSeriesIndex`.\n *\n * @defaultValue -1\n */\n readonly visibleRange = model(-1);\n /**\n * No auto dataZoom update) by default. Use together with `visibleEntries`.\n *\n * @defaultValue -1\n */\n readonly autoZoomSeriesIndex = input(-1);\n /** The desired theme to load. */\n readonly theme = input<any>();\n /** Used to override specific options of loaded `theme`. */\n readonly themeCustomization = input<any>();\n /**\n * The name of the color palette (if any) of the loaded `theme`.\n *\n * @defaultValue undefined\n */\n readonly palette = input<string | undefined>();\n /**\n * Used to display `axisPointer` line either by click or mouse-move.\n *\n * @defaultValue false\n */\n readonly axisPointer = input<(boolean | string) | undefined>(false);\n readonly dataZoomRange = input<DataZoomRange>();\n readonly dataZoomMinValueSpan = input<number>();\n readonly dataZoomMaxValueSpan = input<number>();\n /** @defaultValue 'none' */\n readonly dataZoomFilterMode = input<FilterMode>('none');\n readonly customLegendAction = input<boolean>();\n /**\n * @defaultValue\n * ```\n * { legendItemName: '' }\n * ```\n */\n readonly selectedItem = input<SelectedLegendItem>({ legendItemName: '' });\n readonly eChartContainerHeight = input<string | null>();\n /**\n * Flag to use external zoom slider\n *\n * @defaultValue false\n */\n readonly externalZoomSlider = input(false);\n /** External XAxis Formatter from consumer */\n readonly externalXAxisFormatter = input<(value: any, visibleRange: number) => string>();\n /**\n * If true, add consumer-provided time range bar. Use together with `zoomSlider`.\n * @deprecated The input will be removed in future versions as the time range bar slot is deprecated.\n *\n * @defaultValue false\n */\n readonly showTimeRangeBar = input(false);\n\n /** Event emitted when data zoom changes. */\n readonly dataZoom = output<DataZoomEvent>();\n /** Event emitted when axis pointer moves. */\n readonly pointer = output<AxisPointerEvent>();\n readonly selectionChanged = output<any>();\n readonly chartSeriesClick = output<LegendItem>();\n /** Event emitted when chart grid is resized. */\n readonly chartGridResized = output<GridRectCoordinate>();\n readonly customLegendMultiLineInfoEvent = output<CustomLegendMultiLineInfo[]>();\n /** Emitted when datazoom changes, indicating the time range in milliseconds, 0 for full range */\n readonly timeRangeChange = output<number>();\n\n /** Allow to override options specific for a chart type. */\n protected actualOptions: EChartOption = {};\n\n protected customLegend: CustomLegend[] = [\n {\n customLegends: [\n { list: [], unit: '' },\n { list: [], unit: '' }\n ],\n legendAxis: 'both'\n }\n ];\n /** @internal */\n chart!: echarts.ECharts;\n private extZoomSliderChart!: echarts.ECharts;\n private echartElement!: HTMLElement;\n private eChartExtSliderElement!: HTMLElement;\n protected readonly inProgress = signal(false);\n protected readonly backgroundColor = signal('');\n protected readonly textColor = signal('');\n protected readonly titleColor = signal('');\n protected readonly subTitleColor = signal('');\n private selectedSeriesColors: LineColor = {};\n private unselectedSeriesColors: LineColor = {};\n private seriesSelectionState: SeriesSelectionState = {};\n protected readonly containerHeight = signal<number | null>(null);\n\n protected activeTheme: any;\n protected autoZoomUpdate = true;\n\n private subscriptions = new Subscription();\n private prevAxisPointer: any = {};\n private lastValidDataZoom: any = {};\n private presetDataZoomRange?: DataZoomRange;\n private dataZoomSetupDone = false;\n private requestedDataZoom?: DataZoomRange;\n private measureCanvas?: CanvasRenderingContext2D;\n private readonly cdRef = inject(ChangeDetectorRef);\n\n protected curWidth = 0;\n protected curHeight = 0;\n protected readonly timeBarBottom = signal(50);\n protected readonly timeBarLeft = signal(32);\n protected readonly timeBarRight = signal(32);\n protected readonly timeBarHeight = signal(32);\n\n private gridCoordinates: GridRectCoordinate = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n containerWidth: 0,\n containerHeight: 0\n };\n private customLegendsMultiLineInfo: CustomLegendMultiLineInfo[] = [];\n protected extZoomSliderOptions: EChartOption = {\n animation: false,\n dataZoom: [\n { type: 'slider', showDataShadow: false },\n { type: 'inside', showDataShadow: false }\n ],\n grid: [{ left: 32, right: 32, top: 0, height: 0, containLabel: false }],\n xAxis: [{ type: 'time', axisLine: { onZero: true }, zlevel: 1 }],\n yAxis: [{ type: 'value', boundaryGap: [0, '100%'], splitLine: { show: false }, show: false }],\n series: [{ type: 'line', showSymbol: false, lineStyle: { opacity: 0 }, data: [] }]\n };\n\n private echartMouseDown = (): void => this.handleChartMouseDown();\n private echartMouseUp = (event: MouseEvent): void => this.handleChartMouseUp(event);\n\n private echartExtSliderMouseDown = (): void => this.handleExtChartMouseDown();\n private echartExtSliderMouseUp = (event: MouseEvent): void => this.handleExtChartMouseUp(event);\n\n private readonly ngZone = inject(NgZone);\n protected readonly shapePaths: Record<string, string> = {\n circle: 'M6 0A6 6 0 1 1 6 12A6 6 0 1 1 6 0Z',\n rect: 'M0 0H12V12H0Z',\n roundRect: 'M2 0H10A2 2 0 0 1 12 2V10A2 2 0 0 1 10 12H2A2 2 0 0 1 0 10V2A2 2 0 0 1 2 0Z',\n triangle: 'M6 0L12 12H0L6 0Z',\n diamond: 'M6 0L12 6L6 12L0 6L6 0Z',\n pin: 'M6.00049 0C8.48577 0 10.5005 2.01472 10.5005 4.5C10.5005 5.51817 10.0175 6.461 9.46826 7.31836C8.42358 8.94924 7.16317 10.4497 6.00049 12C4.83781 10.4497 3.57642 8.94924 2.53174 7.31836C1.98255 6.461 1.49951 5.51817 1.49951 4.5C1.49951 2.01472 3.51521 0 6.00049 0Z'\n };\n /**\n * Allow consuming applications to re-draw chart on window resizes.\n */\n resize(): void {\n if (!this.chart) {\n return;\n }\n const rect = this.chartContainer()?.nativeElement.getBoundingClientRect();\n const width = Math.floor(rect.width);\n const height = Math.floor(rect.height);\n if (width && height && (width !== this.curWidth || height !== this.curHeight)) {\n this.curWidth = width;\n this.curHeight = height;\n\n this.ngZone.runOutsideAngular(() => {\n this.chart.resize({ width, height: this.containerHeight() ?? height });\n if (this.externalZoomSlider()) {\n this.extZoomSliderChart.resize();\n }\n setTimeout(() => this.checkGridSizeChange());\n });\n this.afterChartResize();\n }\n this.updateCustomLegendMultiLineInfo();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.options?.currentValue) {\n this.actualOptions = this.options()!;\n }\n\n if (!this.chart) {\n return;\n }\n\n if (changes.eChartContainerHeight) {\n this.setContainerHeight();\n }\n\n const selectedLegendItem = changes.selectedItem;\n if (\n selectedLegendItem &&\n !selectedLegendItem.isFirstChange() &&\n selectedLegendItem.currentValue\n ) {\n const event = {\n name: selectedLegendItem.currentValue.legendItemName,\n type: 'legendToggleSelect'\n };\n this.dispatchEChartAction(event);\n }\n\n if (\n this.customLegendAction() &&\n changes.options &&\n !changes.options.isFirstChange() &&\n !changes.options.currentValue.color.length\n ) {\n this.actualOptions.color = changes.options.previousValue.color;\n }\n if (changes.theme || changes.renderer) {\n // need to completely redo the chart for the theme change to take effect\n return this.resetChart();\n }\n\n let updates = 0;\n let applyAll = false;\n let skipMerge = false;\n\n if (\n changes.forceAll ||\n changes.yAxis ||\n changes.xAxis ||\n changes.options ||\n changes.series ||\n changes.value\n ) {\n // this is to clean the legend item list\n if (this.showCustomLegend() && this.customLegend && this.customLegend.length > 0) {\n this.customLegend.forEach(cl => {\n cl.customLegends = [\n { list: [], unit: '' },\n { list: [], unit: '' }\n ];\n });\n }\n this.applyOptions();\n applyAll = true;\n skipMerge =\n changes.series?.previousValue &&\n changes.series.currentValue &&\n changes.series.currentValue.length < changes.series.previousValue.length;\n updates++;\n }\n\n if (!applyAll && (changes.title || changes.subTitle)) {\n // already called when `applyOptions()` has been called\n this.applyTitles();\n updates++;\n }\n\n if (\n applyAll ||\n changes.forceAll ||\n changes.zoomSlider ||\n changes.zoomSliderShadow ||\n changes.zoomSliderRealtime ||\n changes.zoomSliderBrush ||\n changes.zoomInside ||\n changes.axisPointer ||\n changes.autoZoomSeriesIndex ||\n changes.visibleEntries ||\n changes.visibleRange\n ) {\n this.applyDataZoom();\n updates++;\n }\n\n if (applyAll || changes.forceAll || changes.palette || changes.additionalOptions) {\n this.applyAdditionalOptions();\n updates++;\n }\n\n if (applyAll) {\n this.applyStyles();\n setTimeout(() => this.updateCustomLegendMultiLineInfo());\n }\n\n let skipDz = false;\n\n if (updates) {\n if (changes.dataZoomRange) {\n this.setDataZoomRange(true);\n skipDz = true;\n }\n\n const dz = this.actualOptions.dataZoom!;\n let currentDataZoom: DataZoomComponentOption | undefined;\n if (skipMerge && this.hasDataZoom() && this.hasData() && !skipDz) {\n // forced updated is required when adding/removing series, see:\n // https://github.com/apache/incubator-echarts/issues/6202\n // in order not to mess up current datazoom, save the current value and add it to options\n this.saveCurrentDataZoom();\n if (this.lastValidDataZoom) {\n currentDataZoom = dz[0];\n const newDataZoom: DataZoomComponentOption = {};\n echarts.util.merge(newDataZoom, dz[0], true);\n echarts.util.merge(newDataZoom, this.lastValidDataZoom, true);\n dz[0] = newDataZoom;\n }\n }\n\n this.updateEChart(skipMerge);\n\n if (currentDataZoom) {\n dz[0] = currentDataZoom;\n this.updateEChart(false, { dataZoom: this.actualOptions.dataZoom });\n }\n this.applyColorsToCustomLegends();\n }\n\n if (!skipDz && changes.dataZoomRange) {\n // this is done after a possible setOptions call to ensure echarts has all the desired states\n this.setDataZoomRange();\n }\n\n this.cdRef.markForCheck();\n }\n\n ngOnInit(): void {\n const canvas = document.createElement('canvas') as HTMLCanvasElement;\n this.measureCanvas = canvas.getContext('2d') as CanvasRenderingContext2D;\n this.measureCanvas.font = '12px \"Siemens Sans\"';\n const externalXAxisFormatter = this.externalXAxisFormatter();\n if (this.externalZoomSlider() && externalXAxisFormatter) {\n const consumerFormatter = externalXAxisFormatter;\n this.extZoomSliderOptions.xAxis[0].axisLabel = {\n formatter: (value: any) => consumerFormatter(value, this.visibleRange())\n };\n }\n this.applyTheme();\n // this is to clean the legend item list\n if (this.showCustomLegend() && this.customLegend && this.customLegend.length > 0) {\n this.customLegend.forEach(cl => {\n cl.customLegends = [\n { list: [], unit: '' },\n { list: [], unit: '' }\n ];\n });\n }\n this.applyOptions();\n this.applyAdditionalOptions();\n this.applyDataZoom();\n this.applyStyles();\n if (this.customLegendAction()) {\n this.fetchSeriesColors();\n }\n }\n\n ngAfterViewInit(skipZoom?: boolean): void {\n this.ngZone.runOutsideAngular(() => {\n const chartContainerEl = this.chartContainer()!.nativeElement;\n // set current dimension to avoid initial resize() call on chart\n const rect = chartContainerEl.getBoundingClientRect();\n this.curWidth = Math.floor(rect.width);\n this.curHeight = Math.floor(rect.height);\n\n const opts = { renderer: this.renderer() };\n this.chart = echarts.init(chartContainerEl, this.activeTheme, opts);\n this.echartElement = chartContainerEl as HTMLElement;\n this.getEChartInner()?.addEventListener('mousedown', this.echartMouseDown);\n this.chart.setOption(this.actualOptions);\n setTimeout(() => this.checkGridSizeChange());\n\n if (this.externalZoomSlider()) {\n this.extZoomSliderChart = echarts.init(\n this.externalZoomSliderContainer()!.nativeElement,\n this.activeTheme,\n opts\n );\n this.eChartExtSliderElement = this.externalZoomSliderContainer()!\n .nativeElement as HTMLElement;\n this.getEChartExternalSliderInner()?.addEventListener(\n 'mousedown',\n this.echartExtSliderMouseDown\n );\n this.extZoomSliderChart.setOption(this.extZoomSliderOptions);\n this.extZoomSliderChart.on('datazoom', (event: any) => this.handleExtDataZoom(event));\n }\n this.afterChartInit(skipZoom);\n });\n setTimeout(() => {\n this.resize();\n this.applyColorsToCustomLegends();\n });\n }\n\n private calculateTextWidth(text: string): number {\n if (!this.measureCanvas) {\n return 150;\n }\n return Math.ceil(this.measureCanvas.measureText(text).width);\n }\n\n private disposeChart(): void {\n if (this.chart && !this.chart.isDisposed()) {\n this.chart.dispose();\n }\n if (this.extZoomSliderChart && !this.extZoomSliderChart.isDisposed()) {\n this.extZoomSliderChart.dispose();\n }\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n this.disposeChart();\n }\n\n /**\n * Re-render the whole chart.\n */\n @HostListener('window:theme-switch')\n resetChart(): void {\n this.applyTheme();\n\n if (!this.actualOptions) {\n // this can happen if the SiThemeService fires the theme switch when the chart is not\n // yet completely initialized\n return;\n }\n\n this.disposeChart();\n this.applyPalette();\n const addOpts = this.additionalOptions();\n if (addOpts?.palette) {\n echarts.util.merge(this.actualOptions.palette, addOpts.palette, true);\n }\n this.themeChanged();\n this.applyStyles();\n this.applyTitles();\n this.ngAfterViewInit(true); // eslint-disable-line @angular-eslint/no-lifecycle-call\n this.cdRef.markForCheck();\n }\n\n protected handleLegendClick(legend: CustomLegendItem): void {\n this.doToggleSeriesVisibility(legend.name, legend.selected, legend);\n this.cdRef.markForCheck();\n }\n\n protected handleLegendHover(legend: CustomLegendItem, start: boolean): void {\n this.dispatchEChartAction({\n type: start ? 'highlight' : 'downplay',\n [legend.alternativeNaming ? 'name' : 'seriesName']: legend.name\n });\n }\n\n /**\n * Toggle visibility of a series.\n */\n toggleSeriesVisibility(name: string, visible: boolean): void {\n const legendItem = this.findCustomLegendItem(name);\n this.doToggleSeriesVisibility(name, visible, legendItem);\n this.cdRef.markForCheck();\n }\n\n private doToggleSeriesVisibility(\n name: string,\n visible: boolean,\n legendItem?: CustomLegendItem\n ): void {\n if (legendItem) {\n legendItem.selected = visible;\n }\n this.dispatchEChartAction({ type: visible ? 'legendSelect' : 'legendUnSelect', name });\n\n if (this.externalZoomSlider()) {\n this.ngZone.runOutsideAngular(() => {\n this.extZoomSliderChart.dispatchAction({\n type: visible ? 'legendSelect' : 'legendUnSelect',\n name\n });\n });\n }\n const opt = this.getOptionNoClone();\n if (Array.isArray(opt.legend)) {\n const selection: any = {};\n opt.legend.forEach((l: any) => Object.assign(selection, l.selected));\n this.handleSelectionChanged({ selected: selection });\n }\n }\n\n private findCustomLegendItem(name: string): CustomLegendItem | undefined {\n if (this.showCustomLegend()) {\n for (const cl of this.customLegend) {\n for (const l of cl.customLegends) {\n for (const item of l.list) {\n if (item.name === name) {\n return item;\n }\n }\n }\n }\n }\n return undefined;\n }\n\n protected getValidXAxis(): Set<number> | undefined {\n return undefined;\n }\n\n protected setZoomMode(): void {}\n\n private applyTheme(): void {\n // Set default theme if no theme provided\n const theme = this.theme();\n if (theme?.style) {\n this.activeTheme = theme.style();\n } else if (themeSupport._defaultTheme?.style) {\n this.activeTheme = themeSupport._defaultTheme.style();\n }\n const themeCustomization = this.themeCustomization();\n if (themeCustomization) {\n const custom = echarts.util.merge({}, themeCustomization);\n this.activeTheme = echarts.util.merge(custom, this.activeTheme);\n }\n }\n\n protected themeChanged(): void {}\n\n protected applyOptions(): void {}\n\n protected applyCustomLegendPosition(): void {\n if (this.showLegend() && this.showCustomLegend()) {\n this.customLegend.forEach(cl => {\n if (cl.customLegends?.[0].list && cl.customLegends?.[1].list) {\n const leftLegend = cl.customLegends[0];\n const rightLegend = cl.customLegends[1];\n\n // if we have left and right axis\n if (leftLegend.list.length > 0 && rightLegend.list.length > 0) {\n cl.legendAxis = 'both';\n } else if (leftLegend.list.length > 0 && rightLegend.list.length === 0) {\n // if we have only left axis data\n cl.legendAxis = 'left';\n } else if (leftLegend.list.length === 0 && rightLegend.list.length > 0) {\n // if we have only right axis data\n cl.legendAxis = 'right';\n } else {\n cl.legendAxis = 'both';\n }\n } else {\n cl.legendAxis = 'both';\n }\n });\n this.cdRef.markForCheck();\n }\n }\n\n private applyAdditionalOptions(): void {\n // need to merge palette before the additionalOptions so that overrides work as expected\n this.applyPalette();\n\n if (this.additionalOptions()) {\n echarts.util.merge(this.actualOptions, this.additionalOptions(), true);\n }\n }\n\n private applyPalette(): void {\n const paletteValue = this.palette() ?? 'default';\n if (paletteValue) {\n const palette = this.getThemeCustomValue(['colorPalettes', paletteValue], null);\n if (palette) {\n this.actualOptions.color = palette;\n if (this.customLegendAction()) {\n this.fetchSeriesColors(palette);\n }\n }\n }\n }\n\n protected applyDataZoom(): void {\n if (!this.actualOptions.grid) {\n return;\n }\n this.actualOptions.dataZoom ??= [];\n\n const sliderOptions: any = {};\n const dataZoomMinValueSpan = this.dataZoomMinValueSpan();\n if (dataZoomMinValueSpan) {\n sliderOptions.minValueSpan = dataZoomMinValueSpan;\n }\n const dataZoomMaxValueSpan = this.dataZoomMaxValueSpan();\n if (dataZoomMaxValueSpan) {\n sliderOptions.maxValueSpan = dataZoomMaxValueSpan;\n }\n sliderOptions.realtime = this.zoomSliderRealtime();\n sliderOptions.brushSelect = this.zoomSliderBrush();\n sliderOptions.showDataShadow = this.zoomSliderShadow();\n sliderOptions.filterMode = this.dataZoomFilterMode();\n sliderOptions.showDetail = false;\n // keep external zoom slider in sync, always at index 0\n Object.assign(this.extZoomSliderOptions.dataZoom![0], sliderOptions);\n\n const dz = this.actualOptions.dataZoom!;\n const sliderIdx = dz.findIndex(z => z.type === 'slider');\n const insideIdx = dz.findIndex(z => z.type === 'inside');\n const zoomSlider = this.zoomSlider();\n if (zoomSlider && sliderIdx === -1) {\n // for the non-external, merge with other options\n const customOptions = this.getThemeCustomValue(['dataZoom', 'options'], {});\n const dzSliderOptions: any = Object.assign({ type: 'slider' }, customOptions, sliderOptions);\n Object.assign(this.extZoomSliderOptions.dataZoom![0], customOptions);\n\n const externalZoomSlider = this.externalZoomSlider();\n if (externalZoomSlider) {\n dzSliderOptions.show = false;\n }\n dz.push(dzSliderOptions);\n\n const gridOptions = externalZoomSlider\n ? this.getThemeCustomValue(['externalZoomSlider', 'grid'], {})\n : this.getThemeCustomValue(['dataZoom', 'grid'], {});\n\n if (this.showTimeRangeBar()) {\n const timeBarOptions = this.getThemeCustomValue(['timeRangeBar'], {});\n if (customOptions.height && customOptions.bottom) {\n this.timeBarBottom.set(customOptions.height + customOptions.bottom);\n }\n this.timeBarHeight.set(timeBarOptions?.height ?? 32);\n\n if (!externalZoomSlider) {\n gridOptions.bottom = (gridOptions?.bottom ?? 0) + this.timeBarHeight();\n }\n }\n\n echarts.util.merge(this.actualOptions.grid, gridOptions, true);\n } else if (zoomSlider && sliderIdx >= 0) {\n // update existing\n const dzSliderOptions = dz[sliderIdx];\n Object.assign(dzSliderOptions, sliderOptions);\n } else if (!zoomSlider && sliderIdx >= 0) {\n dz.splice(sliderIdx, 1);\n }\n const zoomInside = this.zoomInside();\n if (zoomInside && insideIdx === -1) {\n dz.push({ type: 'inside', filterMode: this.dataZoomFilterMode() });\n } else if (!zoomInside && insideIdx >= 0) {\n dz.splice(insideIdx, 1);\n }\n\n if (this.actualOptions.xAxis) {\n this.handleAxisPointer(this.actualOptions);\n }\n this.cdRef.markForCheck();\n }\n\n private handleAxisPointer(options: EChartOption): void {\n const axisPointer = this.axisPointer();\n if (axisPointer !== undefined) {\n options.axisPointer ??= {};\n }\n if (axisPointer === true) {\n options.axisPointer.triggerOn = 'click';\n } else if (axisPointer === false) {\n options.axisPointer.triggerOn = 'mousemove|click';\n } else if (typeof axisPointer === 'string') {\n options.axisPointer.triggerOn = axisPointer;\n }\n if (Array.isArray(options.xAxis)) {\n const xAxisArray: any[] = options.xAxis;\n xAxisArray.forEach(axis => this.handleAxisPointerSingleAxis(axis));\n } else {\n this.handleAxisPointerSingleAxis(options.xAxis);\n }\n }\n\n private handleAxisPointerSingleAxis(xAxis: any): void {\n if (this.axisPointer()) {\n echarts.util.merge(xAxis, { axisPointer: { handle: { show: true } } }, true);\n } else {\n echarts.util.merge(xAxis, { axisPointer: { handle: { show: false } } }, true);\n }\n }\n\n protected hasDataZoom(): boolean {\n return !!this.actualOptions.dataZoom?.length;\n }\n\n protected getThemeValue(props: string[], defaultValue: any, ns?: string): any {\n if (!this.activeTheme) {\n return defaultValue;\n }\n\n let currentValue = this.activeTheme;\n if (ns) {\n currentValue = currentValue[ns];\n }\n for (let i = 0; currentValue && i < props.length; i++) {\n currentValue = currentValue[props[i]];\n }\n return currentValue ?? defaultValue;\n }\n\n protected getThemeCustomValue(props: string[], defaultValue: any): any {\n return this.getThemeValue(props, defaultValue, 'simpl');\n }\n\n protected applyTitles(): void {\n const title = this.title();\n const subTitle = this.subTitle();\n const options = this.actualOptions;\n if (this.showLegend() && this.showCustomLegend()) {\n if (options.title) {\n options.title.show = false;\n }\n options.legend?.forEach(legend => {\n legend.show = false;\n legend.height = 0;\n });\n if (options.grid) {\n const gridOptions = this.getThemeCustomValue(['customLegend', 'grid'], {});\n echarts.util.merge(options.grid, gridOptions, true);\n }\n\n this.titleColor.set(this.getThemeValue(['title', 'textStyle', 'color'], null));\n this.subTitleColor.set(\n this.getThemeValue(['title', 'subtextStyle', 'color'], this.titleColor)\n );\n this.textColor.set(this.getThemeValue(['legend', 'textStyle', 'color'], null));\n this.backgroundColor.set(this.getThemeValue(['backgroundColor'], null));\n } else if (title || subTitle) {\n options.title = {\n text: title,\n subtext: subTitle\n };\n if (subTitle) {\n this.modifyTopAlignment('subTitle');\n }\n } else if (!title && !subTitle) {\n this.modifyTopAlignment('noTitle');\n }\n }\n\n private modifyTopAlignment(key: string): void {\n const options = this.actualOptions;\n if (options.grid) {\n const gridOptions = this.getThemeCustomValue([key, 'grid'], {});\n echarts.util.merge(options.grid, gridOptions, true);\n }\n\n const legendOptions = this.getThemeCustomValue([key, 'legend'], {});\n options.legend?.forEach(legend => echarts.util.merge(legend, legendOptions, true));\n }\n\n protected afterChartInit(skipZoom?: boolean): void {\n this.chart.on('datazoom', (event: any) => this.handleDataZoom(event, 'echart'));\n if (!this.customLegendAction()) {\n // default generic si-chart behavior\n this.chart.on('legendselectchanged', (event: any) => this.handleSelectionChanged(event));\n this.chart.on('click', (event: any) => this.handleClickOnChart(event, false));\n } else {\n // custom chart behaviour\n this.chart.on('legendselectchanged', (event: any) =>\n this.handleSelectionChangedCustom(event)\n );\n this.chart.on('click', (event: any) => this.handleClickOnChart(event, true));\n }\n this.chart.on('updateaxispointer', (event: any) => this.handleUpdateAxisPointer(event));\n if (!skipZoom) {\n this.setDataZoomRange();\n }\n this.cdRef.markForCheck();\n }\n\n protected afterChartResize(): void {}\n\n private getEChartInner(): Element | null {\n return this.echartElement.querySelector(':scope > div:first-child');\n }\n\n private getEChartExternalSliderInner(): Element | null {\n return this.eChartExtSliderElement.querySelector(':scope > div:first-child');\n }\n\n private handleExtChartMouseDown(): void {\n window.addEventListener('mouseup', this.echartExtSliderMouseUp);\n }\n\n private handleExtChartMouseUp(event: MouseEvent): void {\n window.removeEventListener('mouseup', this.echartExtSliderMouseUp);\n const newEvent = new MouseEvent('mouseup', event);\n setTimeout(() => {\n this.getEChartExternalSliderInner()?.dispatchEvent(newEvent);\n this.cdRef.markForCheck();\n }, 1);\n }\n\n private handleChartMouseDown(): void {\n window.addEventListener('mouseup', this.echartMouseUp);\n }\n\n private handleChartMouseUp(event: MouseEvent): void {\n window.removeEventListener('mouseup', this.echartMouseUp);\n const newEvent = new MouseEvent('mouseup', event);\n setTimeout(() => {\n this.getEChartInner()?.dispatchEvent(newEvent);\n this.cdRef.markForCheck();\n }, 1);\n }\n\n private setDataZoomRange(skipUpdate?: boolean): void {\n // Checking if we received a valid dataZoomRange Object\n const dataZoomRange = this.dataZoomRange();\n if (dataZoomRange && Object.keys(dataZoomRange).length > 0) {\n // If series has data, then directly dispatch action for the dataZoom event\n // Else, Store the dataZoomRange values in presetDataZoomRange variable for applying zoom\n // after data is received in chart\n // No need to reassign presetDataZoomRange if earlier value is not consumed\n if (this.hasData()) {\n const dz = this.getPresetDataZoom(dataZoomRange);\n if (dz) {\n const requested = { ...dataZoomRange };\n this.presetDataZoomRange = undefined;\n\n this.updateDataZoom(dz);\n if (!skipUpdate) {\n this.updateEChart(false, { dataZoom: [dz] });\n }\n\n // update user with proper data\n setTimeout(() => {\n this.ngZone.runOutsideAngular(() => {\n this.requestedDataZoom = requested;\n this.handleDataZoom(dz, 'setDataZoomRange');\n });\n });\n\n return;\n }\n }\n this.presetDataZoomRange = dataZoomRange;\n }\n }\n\n private handleDataZoom(event: any, source?: string): void {\n // events can be batched\n if (event.batch?.length) {\n event = event.batch[0];\n }\n if (Number.isNaN(event.start) || Number.isNaN(event.end)) {\n // need to fix to the last valid dataZoom setting, see below\n this.chart.dispatchAction({ type: 'dataZoom', ...this.lastValidDataZoom });\n return;\n }\n\n const effectiveOpts = this.getOptionNoClone();\n // in case of pane by chart area, event.start and event.end are always undefined.\n // and in case of slider move, they has values in percentage(0-100)\n // so, to handle in case of pane, we need to get start and end values from datazoom property\n // following condition will be executed only if autozoom is false; and start and end are undefined(undefined means call is from pane)\n const dz = effectiveOpts.dataZoom[0];\n this.autoZoomUpdate = !!dz && dz.end === 100;\n // Due to chart updates outside Angular, we need to emit events back\n // inside Angular to activate Angular's change detection.\n const range = this.getVisibleRange();\n if (range) {\n range.source = source ?? event.source;\n this.calculateVisibleRange(range);\n if (this.requestedDataZoom) {\n range.requested = this.requestedDataZoom;\n this.requestedDataZoom = undefined;\n }\n\n this.ngZone.run(() => {\n this.dataZoom.emit(range);\n this.timeRangeChange.emit(\n dz.start === 0 && dz.end === 100 ? 0 : range.rangeEnd - range.rangeStart\n );\n });\n\n setTimeout(() => this.checkGridSizeChange());\n this.presetDataZoomRange = undefined;\n this.dataZoomSetupDone = true;\n\n // sync/store values\n this.updateDataZoom({ startValue: range.rangeStart, endValue: range.rangeEnd });\n\n if (event.source !== 'extSlider') {\n this.extZoomSliderChart?.dispatchAction({\n type: 'dataZoom',\n source: 'mainChart',\n startValue: range.rangeStart,\n endValue: range.rangeEnd\n });\n }\n }\n this.cdRef.markForCheck();\n }\n\n private handleExtDataZoom(event: any): void {\n if (event.batch?.length) {\n event = event.batch[0];\n }\n\n if (event.source === 'mainChart') {\n return;\n }\n\n const zoomModel = (this.extZoomSliderChart as any)._model;\n const range = this.doGetVisibleRange(zoomModel);\n if (range) {\n this.calculateVisibleRange(range);\n this.chart?.dispatchAction({\n type: 'dataZoom',\n source: 'extSlider',\n startValue: range.rangeStart,\n endValue: range.rangeEnd\n });\n }\n }\n\n protected handleSelectionChanged(event: any): void {\n this.selectionChanged.emit(event);\n\n for (const a in event.selected) {\n if (event.selected[a] !== false) {\n return;\n }\n }\n\n this.saveCurrentDataZoom();\n }\n\n /**\n * Creates two objects that stores the colors for selected and unselected series. Used only for custom legend actions.\n */\n protected fetchSeriesColors(colorsToBeUSed?: any): void {\n const options = this.actualOptions;\n if (!options.color?.length && this.activeTheme) {\n options.color = [...this.activeTheme.color];\n }\n if (!colorsToBeUSed && !this.activeTheme) {\n return;\n }\n options.series?.forEach((element, index) => {\n this.unselectedSeriesColors[element.name!] = {\n color: this.getThemeValue(['legend', 'unselected', 'color'], '#ccc'),\n index\n };\n const colors = colorsToBeUSed ?? this.activeTheme.color;\n this.selectedSeriesColors[element.name!] = { color: colors[index], index };\n });\n }\n\n /**\n * Handles legend select event in non echart native way.\n * @param event - legend select\n */\n protected handleSelectionChangedCustom(event: any): void {\n const optionsToChange = this.styleSelectedSeries(event.name, false, event.dataIndex);\n this.ngZone.runOutsideAngular(() => {\n this.chart.setOption(optionsToChange);\n this.chart.dispatchAction({ type: 'legendSelect', name: event.name });\n });\n }\n\n /**\n * Handles click on series in non echart native way.\n * @param event - click\n */\n protected handleClickOnChart(event: any, toggleVisibility: boolean): void {\n if (event.componentType !== 'series') {\n return;\n }\n if (toggleVisibility) {\n const optionsToChange = this.styleSelectedSeries(event.seriesName, true, event.dataIndex);\n this.chart.setOption(optionsToChange);\n } else {\n this.ngZone.run(() =>\n this.chartSeriesClick.emit({\n itemName: event.seriesName,\n dataIndex: event.dataIndex\n })\n );\n }\n }\n\n /**\n * Selects or unselects the series based on series state object\n * @param seriesName - series to be selected/unselected\n * @param emit - if true event is emitted otherwise no event is emitted\n */\n protected styleSelectedSeries(seriesName: string, emit: boolean, seriesDataIndex: number): any {\n if (this.seriesSelectionState?.[seriesName]) {\n const elementToStyle = this.actualOptions.series?.find(\n element => element.name === seriesName\n );\n this.seriesSelectionState[seriesName] = false;\n return this.selectSeries(elementToStyle, emit, seriesDataIndex);\n } else {\n const elementToStyle = this.actualOptions.series?.find(\n element => element.name === seriesName\n );\n this.seriesSelectionState[seriesName] = true;\n return this.unselectSeries(elementToStyle, emit, seriesDataIndex);\n }\n }\n\n /**\n * Selects the series\n * @param element - to be styled as selected\n * @param emit - if true event is emitted otherwise no event is emitted\n */\n protected selectSeries(element: any, emit: boolean, seriesDataIndex: number): any {\n const options = this.actualOptions;\n const optionsToChange = { color: options.color, series: [options.series] };\n const optionsColorIndex = this.selectedSeriesColors[element.name].index;\n optionsToChange.color[optionsColorIndex] = this.selectedSeriesColors[element.name].color;\n if (element.areaStyle) {\n element.areaStyle.opacity = 0.4;\n optionsToChange.series[this.selectedSeriesColors[element.name].index] = element;\n }\n if (emit) {\n this.chartSeriesClick.emit({\n itemName: element.name,\n dataIndex: seriesDataIndex,\n selected: false,\n color: this.selectedSeriesColors[element.name].color\n });\n }\n return optionsToChange;\n }\n\n /**\n * Unselects the series\n * @param element - to be styled as unselected\n * @param emit - if true event is emitted otherwise no event is emitted\n */\n protected unselectSeries(\n element: any,\n emit: boolean,\n seriesDataIndex: number\n ): {\n color: any;\n series: (EChartSeries | undefined)[];\n } {\n const options = this.actualOptions;\n const optionsToChange = { color: options.color, series: [options.series] };\n const optionsColorIndex = this.selectedSeriesColors[element.name].index;\n optionsToChange.color[optionsColorIndex] = this.unselectedSeriesColors[element.name].color;\n if (element.areaStyle) {\n element.areaStyle.opacity = 0;\n optionsToChange.series[this.unselectedSeriesColors[element.name].index] = element;\n }\n if (emit) {\n this.chartSeriesClick.emit({\n itemName: element.name,\n dataIndex: seriesDataIndex,\n selected: true,\n color: this.selectedSeriesColors[element.name].color\n });\n }\n return optionsToChange;\n }\n\n private isValidDataZoomValue(val: any): boolean {\n return val !== null && val !== undefined && !Number.isNaN(val);\n }\n\n private saveCurrentDataZoom(): void {\n const options = this.actualOptions;\n if (!options.grid || !options.dataZoom) {\n return;\n }\n\n // When the last item on the legend is disabled, remember the current valid\n // dataZoom setting. Due to a bug in ECharts it happens\n // that the zoom slider disappears not to ever reappear again. To work around\n // the problem, we simply inject the last valid dataZoom settings saved here\n // once the invalid values (NaN) are detected\n const currentOpts = this.getOptionNoClone();\n if (!currentOpts?.dataZoom?.[0]) {\n return;\n }\n\n const dz = currentOpts.dataZoom[0];\n if (dz) {\n this.lastValidDataZoom = {};\n if (this.isValidDataZoomValue(dz.startValue)) {\n this.lastValidDataZoom.startValue = dz.startValue;\n } else if (this.isValidDataZoomValue(dz.start)) {\n this.lastValidDataZoom.start = dz.start;\n }\n if (this.isValidDataZoomValue(dz.endValue)) {\n this.lastValidDataZoom.endValue = dz.endValue;\n } else if (this.isValidDataZoomValue(dz.end)) {\n this.lastValidDataZoom.end = dz.end;\n }\n }\n }\n\n /**\n * Get color by series name.\n */\n getSeriesColorBySeriesName(seriesName: string): string | undefined {\n return this.doGetSeriesColorBySeriesName(seriesName).color;\n }\n\n private doGetSeriesColorBySeriesName(seriesName: string): {\n color: string | undefined;\n altName: boolean;\n } {\n const ecModel = this.internalGetModel();\n const ecSeries = ecModel.getSeriesByName(seriesName);\n if (ecSeries && ecSeries.length > 0) {\n return { color: ecSeries[0].getData().getVisual('style')?.fill as string, altName: false };\n }\n\n let ret = { color: undefined as string | undefined, altName: false };\n ecModel.eachRawSeries((seriesModel: any) => {\n const idx = seriesModel.legendVisualProvider?.indexOfName(seriesName) ?? -1;\n if (idx >= 0) {\n ret = {\n color: seriesModel.legendVisualProvider.getItemVisual(idx, 'style')?.fill as string,\n altName: true\n };\n }\n });\n return ret;\n }\n\n private applyColorsToCustomLegends(): void {\n if (!this.showLegend() || !this.showCustomLegend()) {\n return;\n }\n this.customLegend.forEach(cl => {\n cl.customLegends.forEach(legendAxis => {\n legendAxis?.list.forEach(legend => {\n const color = this.doGetSeriesColorBySeriesName(legend.name);\n legend.color = color.color;\n legend.alternativeNaming = color.altName;\n });\n });\n });\n this.cdRef.markForCheck();\n }\n\n private handleUpdateAxisPointer(event: any): void {\n if (\n event.seriesIndex !== this.prevAxisPointer.seriesIndex ||\n event.dataIndex !== this.prevAxisPointer.dataIndex\n ) {\n this.prevAxisPointer.seriesIndex = event.seriesIndex;\n this.prevAxisPointer.dataIndex = event.dataIndex;\n\n if (this.axisPointer() && event.seriesIndex === undefined) {\n return;\n }\n\n // Due to chart updates outside Angular, we need to emit events back\n // inside Angular to activate Angular's change detection.\n this.ngZone.run(() => {\n this.pointer.emit({\n seriesIndex: event.seriesIndex,\n dataIndex: event.dataIndex\n });\n });\n }\n }\n\n /**\n * Get current data zoom range.\n */\n getVisibleRange(): DataZoomEvent | undefined {\n return this.doGetVisibleRange(this.internalGetModel());\n }\n\n protected internalGetModel(): any {\n return (this.chart as any)._model;\n }\n\n /**\n * returns the current EChart options, w/o cloning anything. Be very careful\n * not to change anything in the data structure in it.\n */\n getOptionNoClone(): any {\n return this.internalGetModel().option;\n }\n\n protected parsePercent(percent: string | number, all: number): number {\n if (typeof percent === 'string') {\n if (percent.match(/\\d+%/)) {\n return (parseFloat(percent) / 100) * all;\n }\n return parseFloat(percent);\n }\n return percent;\n }\n\n private doGetVisibleRange(zoomModel: any): DataZoomEvent | undefined {\n const effectiveOpts: any = zoomModel.option;\n const xAxis = effectiveOpts.xAxis?.[0];\n const dz = effectiveOpts.dataZoom[0];\n\n const rangeStartArray: number[] = [];\n const rangeEndArray: number[] = [];\n for (let i = 0; i < effectiveOpts.xAxis?.length; i++) {\n const axis = zoomModel.getComponent('xAxis', i);\n const extent = axis?.axis?.scale?.getExtent();\n if (extent?.length) {\n if (this.isValidDataZoomValue(extent[0])) {\n rangeStartArray.push(extent[0]);\n }\n if (this.isValidDataZoomValue(extent[1])) {\n rangeEndArray.push(extent[1]);\n }\n }\n }\n\n const rangeStart = rangeStartArray.length ? Math.min(...rangeStartArray) : dz?.startValue;\n const rangeEnd = rangeEndArray.length ? Math.max(...rangeEndArray) : dz?.endValue;\n\n if (!this.isValidDataZoomValue(rangeEnd)) {\n return;\n }\n\n let gridWidth: number | undefined;\n if (effectiveOpts.grid && effectiveOpts.grid.length > 0) {\n const width = this.chart.getWidth();\n const grid = effectiveOpts.grid[0];\n gridWidth =\n width - this.parsePercent(grid.left, width) - this.parsePercent(grid.right, width);\n }\n\n return {\n rangeType: xAxis.type,\n rangeStart,\n rangeEnd,\n width: gridWidth,\n autoZoomUpdate: this.autoZoomUpdate\n };\n }\n\n protected updateEChart(force = false, options?: EChartOption): void {\n if (!this.chart) {\n return;\n }\n let axisDZUpdated = this.updateAxisAndDataZoom(options);\n options ??= this.actualOptions;\n const isFilledArray = (v: any): boolean => Array.isArray(v) && v.length > 0;\n if (\n isFilledArray(options.grid) &&\n isFilledArray(options.xAxis) &&\n isFilledArray(options.dataZoom)\n ) {\n // adjust grid for axis labels\n let max = 0;\n options.yAxis.forEach((axis: any) => {\n if (axis.position !== 'right' && isFilledArray(axis.data)) {\n axis.data.forEach((label: string) => {\n const width = this.calculateTextWidth(label);\n max = Math.max(max, width);\n });\n }\n });\n max += 16; // long text getting truncated, so add some padding\n const grids = options.grid as GridComponentOption[];\n grids.forEach(g => (g.left = Math.max(g.left as number, max)));\n\n // update dataZoom if not already set\n const zoom = options.dataZoom![0];\n if (\n !this.isValidDataZoomValue(zoom?.startValue) &&\n !this.isValidDataZoomValue(zoom?.endValue) &&\n !this.isValidDataZoomValue(zoom?.end)\n ) {\n const range = this.getVisibleRange();\n if (range) {\n this.updateDataZoom({ startValue: range.rangeStart, endValue: range.rangeEnd });\n }\n }\n\n // change in grid/axis requires a full update\n force = true;\n axisDZUpdated = true;\n }\n\n this.ngZone.runOutsideAngular(() => {\n this.chart.setOption(options!, force);\n this.setZoomMode();\n if (axisDZUpdated && this.externalZoomSlider()) {\n this.extZoomSliderChart.setOption(this.extZoomSliderOptions, false);\n }\n });\n\n setTimeout(() => this.checkGridSizeChange());\n }\n\n protected updateAxisAndDataZoom(inOptions?: EChartOption): boolean {\n const options = this.actualOptions;\n if (!options.xAxis) {\n return false;\n }\n\n const isFull = !inOptions || inOptions === options;\n inOptions = inOptions ?? {};\n if (!isFull && !inOptions.series && !options.dataZoom) {\n return false;\n }\n\n const xAxis = Array.isArray(options.xAxis) ? options.xAxis : [options.xAxis];\n if (!isFull && !inOptions.xAxis) {\n // for delta update, make sure we have same-sized axis array\n inOptions.xAxis = xAxis.map(() => ({}));\n }\n\n const minMax = this.getSeriesMinMax();\n\n // extend range if DZ is bigger than actual data\n const dz = inOptions?.dataZoom?.[0];\n if (\n dz?.startValue != null &&\n (minMax.min === undefined || (dz.startValue as number) < minMax.min)\n ) {\n minMax.min = dz.startValue as number;\n }\n if (\n dz?.endValue != null &&\n (minMax.max === undefined || (dz.endValue as number) > minMax.max)\n ) {\n minMax.max = dz.endValue as number;\n }\n\n // Update all sub chart index to be controlled by the dataZoom\n let xAxisIndexes: number[] = [];\n xAxis.forEach((axis, index) => {\n if (axis.gridIndex >= 0) {\n // set min/max the same on all axis so that datazoom can work\n axis.min = minMax.min;\n axis.max = minMax.max;\n\n if (!isFull) {\n inOptions.xAxis[index].min = minMax.min;\n inOptions.xAxis[index].max = minMax.max;\n }\n\n xAxisIndexes.push(index);\n }\n });\n\n // update dataZoom\n const effectiveOpts = this.getOptionNoClone();\n const effectiveXAxis = effectiveOpts.xAxis;\n if (effectiveXAxis.length > 1) {\n // 1. find out all visible series\n // 2. find out valid x index\n // 3. remove invalid x axis from the xAxisIndex array\n const validXAxis = this.getValidXAxis();\n if (validXAxis) {\n xAxisIndexes = xAxisIndexes.filter(index => validXAxis.has(index));\n }\n }\n\n if (xAxisIndexes.length) {\n const allDataZoom = options.dataZoom!;\n allDataZoom.forEach(zoom => (zoom.xAxisIndex = xAxisIndexes));\n if (!isFull && inOptions.dataZoom) {\n inOptions.dataZoom.forEach(zoom => (zoom.xAxisIndex = xAxisIndexes));\n }\n }\n\n // update external slider if required\n if (this.externalZoomSlider()) {\n const extSliderAxis = this.extZoomSliderOptions.xAxis[0];\n if (extSliderAxis.min !== minMax.min || extSliderAxis.max !== minMax.max) {\n extSliderAxis.min = minMax.min;\n extSliderAxis.max = minMax.max;\n this.extZoomSliderOptions.series![0].data = [\n [minMax.min, null],\n [minMax.max, null]\n ];\n }\n }\n\n return true;\n }\n\n /**\n * Send action to echart.\n * @see https://echarts.apache.org/en/api.html#action\n */\n dispatchEChartAction(action: echarts.Payload): void {\n if (!this.chart) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n this.chart.dispatchAction(action);\n });\n this.cdRef.markForCheck();\n }\n\n private getSeriesMinMax(visibleOnly = false): {\n min: number | undefined;\n max: number | undefined;\n } {\n const legend = visibleOnly ? this.internalGetModel().getComponent('legend') : undefined;\n let min: number | undefined;\n let max: number | undefined;\n this.actualOptions.series?.forEach(s => {\n const seriesData = s.data as any[];\n if (seriesData?.length > 1 && (!legend || legend.isSelected(s.name))) {\n const start = seriesData[0][0]?.valueOf();\n const last = seriesData[seriesData.length - 1];\n // end value is can be undefined sometimes, if we don't have milliseconds as a value, instead\n // we have value[] array of Date, so to handle that scenario we are taking value[0].valueOf() to\n // calculate the millisecond value i.e from Date(value[0])\n const end = last[0]?.valueOf() ?? last.value?.[0]?.valueOf();\n if (this.isValidDataZoomValue(start) && this.isValidDataZoomValue(end)) {\n if (min === undefined || start < min) {\n min = start;\n }\n if (max === undefined || end > max) {\n max = end;\n }\n }\n }\n });\n return { min, max };\n }\n\n private calculateVisibleRange(range: DataZoomEvent | undefined): void {\n const options = this.actualOptions;\n if (!options.xAxis || !this.hasDataZoom() || !range) {\n return;\n }\n if (!Array.isArray(options.xAxis) && options.xAxis.type === 'category') {\n this.visibleRange.set(Math.ceil(range.rangeEnd) - Math.floor(range.rangeStart));\n } else {\n this.visibleRange.set(Math.round(range.rangeEnd - range.rangeStart));\n }\n\n // once in range mode, disable the entries mode to prevent overriding the user\n this.visibleEntries.set(-1);\n }\n\n private getValueFromSeriesPoint(point: any): any[] {\n return Array.isArray(point) ? point : point.value;\n }\n\n private calculateZoomStartValue(): any {\n const options = this.actualOptions;\n if (!options.series) {\n return null;\n }\n\n const seriesData = options.series[this.autoZoomSeriesIndex()]?.data as any[];\n if (!seriesData) {\n return null;\n }\n\n if (this.visibleEntries() > -1) {\n const offset = Math.min(seriesData.length, this.visibleEntries());\n const data = seriesData[seriesData.length - offset];\n return data ? this.getValueFromSeriesPoint(data)[0] : null;\n } else if (this.visibleRange() > -1) {\n const minMax = this.getSeriesMinMax(true);\n if (minMax.min && minMax.max) {\n // make sure startValue is >= the min data value\n return Math.max(minMax.min, minMax.max - this.visibleRange());\n }\n const data = seriesData[seriesData.length - 1];\n return data ? this.getValueFromSeriesPoint(data)[0] - this.visibleRange() : null;\n }\n return null;\n }\n\n protected hasData(): boolean {\n return this.actualOptions.series?.some(s => (s.data as any[])?.length > 0) ?? false;\n }\n\n /**\n * Re-render the chart series data. This method should be called on series data changes.\n */\n refreshSeries(isLive: boolean = true, dzToSet?: DataZoomRange): void {\n dzToSet ??= this.presetDataZoomRange;\n const optionsToUpdate: any = {\n series: this.actualOptions.series\n };\n\n if (!isLive) {\n this.updateEChart(false, optionsToUpdate);\n return;\n }\n\n if (this.hasDataZoom() && this.hasData()) {\n if (dzToSet) {\n this.dataZoomSetupDone = true;\n\n const dz = this.getPresetDataZoom(dzToSet);\n if (dz) {\n const requested = { ...dzToSet };\n this.presetDataZoomRange = undefined;\n this.updateDataZoom(dz, optionsToUpdate);\n\n // dispatch the same async. reasoning: the sync here is needed to prevent\n // flickering, the async dispatch to ensure a DataZoomEvent is fired so\n // that any consumer of this event work as expected\n setTimeout(() => {\n this.ngZone.runOutsideAngular(() => {\n this.requestedDataZoom = requested;\n this.handleDataZoom(dz, 'refreshSeries');\n });\n });\n }\n } else if (!this.dataZoomSetupDone) {\n // need to do this async to have the data in ECharts\n setTimeout(() => {\n if (!this.dataZoomSetupDone && !this.dataZoomRange() && this.chart) {\n this.calculateVisibleRange(this.getVisibleRange());\n }\n this.dataZoomSetupDone = true;\n });\n } else if (this.zoomSlider() && this.autoZoomUpdate && this.autoZoomSeriesIndex() !== -1) {\n // this ensures the slider is at the end and the window size remains stable, showing new data\n const startValue = this.calculateZoomStartValue();\n if (this.isValidDataZoomValue(startValue)) {\n this.updateDataZoom({ startValue, end: 100 }, optionsToUpdate);\n }\n if (isLive) {\n this.dispatchEChartAction({ type: 'hideTip' });\n }\n } else {\n // this ensures the current displayed window stays stable as new data arrives\n const dz = this.getOptionNoClone().dataZoom[0];\n if (\n this.isValidDataZoomValue(dz.startValue) &&\n this.isValidDataZoomValue(dz.endValue) &&\n dz.end !== 100\n ) {\n this.updateDataZoom(\n { startValue: dz.startValue, endValue: dz.endValue },\n optionsToUpdate\n );\n }\n }\n }\n\n this.updateEChart(false, optionsToUpdate);\n }\n\n // this ensures DZ is in sync everywhere\n private updateDataZoom(dz: DataZoomRange, optionsToUpdate?: EChartOption): void {\n const options = this.actualOptions;\n if (options.dataZoom?.[0]) {\n this.doUpdateDZ(dz, options.dataZoom[0]);\n }\n if (optionsToUpdate && optionsToUpdate !== options) {\n if (Array.isArray(optionsToUpdate.dataZoom)) {\n this.doUpdateDZ(dz, optionsToUpdate.dataZoom[0]);\n } else if (optionsToUpdate.dataZoom) {\n this.doUpdateDZ(dz, optionsToUpdate.dataZoom);\n } else {\n optionsToUpdate.dataZoom = [{ ...dz }];\n }\n }\n if (this.externalZoomSlider()) {\n this.doUpdateDZ(dz, this.extZoomSliderOptions.dataZoom![0]);\n }\n }\n\n private doUpdateDZ(dz: DataZoomRange, dzOptions: DataZoomComponentOption): void {\n // make sure only to have value or percent\n if (this.isValidDataZoomValue(dz.startValue)) {\n dzOptions.startValue = dz.startValue;\n dzOptions.start = undefined;\n } else if (this.isValidDataZoomValue(dz.start)) {\n dzOptions.start = dz.start;\n dzOptions.startValue = undefined;\n }\n if (this.isValidDataZoomValue(dz.endValue)) {\n dzOptions.endValue = dz.endValue;\n dzOptions.end = undefined;\n } else if (this.isValidDataZoomValue(dz.end)) {\n dzOptions.end = dz.end;\n dzOptions.endValue = undefined;\n }\n }\n\n protected applyStyles(): void {\n const bodyStyle: CSSStyleDeclaration = window.getComputedStyle(document.body);\n const options = this.actualOptions;\n options.textStyle = {\n fontFamily: bodyStyle.fontFamily,\n fontSize: bodyStyle.fontSize\n };\n this.extZoomSliderOptions.textStyle = options.textStyle;\n }\n\n protected addLegendItem(\n name: string,\n visible?: boolean | null,\n index: number = 0,\n gridIndex: number = 0,\n customLegendProp?: CustomLegendProps,\n seriesSymbol?: string\n ): void {\n const options = this.actualOptions;\n if (!options.legend?.length) {\n return;\n }\n\n const legend = options.legend[options.legend.length > index ? index : 0];\n const unitText = customLegendProp ? customLegendProp.unit : undefined;\n const customLegendItem: CustomLegendItem = {\n name: '',\n displayName: '',\n color: '',\n selected: false,\n tooltip: customLegendProp ? customLegendProp.tooltip : '',\n symbol: this.getPath(seriesSymbol, false)\n };\n legend.data?.push({\n name,\n icon: this.getPath(seriesSymbol, true)\n });\n\n legend.selected ??= {};\n\n if (visible !== null && visible !== undefined) {\n legend.selected[name] = visible;\n customLegendItem.selected = visible;\n }\n const showCustomLegend = this.showCustomLegend();\n if (this.showLegend() && showCustomLegend) {\n if (visible !== false) {\n customLegendItem.selected = true;\n }\n customLegendItem.name = name;\n customLegendItem.displayName = customLegendProp?.displayName ?? name;\n\n if (showCustomLegend) {\n this.addCustomLegend(customLegendItem, unitText, index, gridIndex);\n }\n }\n this.cdRef.markForCheck();\n }\n\n private getPath(seriesSymbol: string | undefined, prefix: boolean): string {\n const path = seriesSymbol ? this.shapePaths[seriesSymbol] : this.shapePaths.circle;\n return prefix ? 'path://' + path : path;\n }\n\n private addCustomLegend(\n customLegendItem: CustomLegendItem,\n unitText: string | undefined,\n index: number,\n gridIndex: number = 0\n ): void {\n if (this.actualOptions.legend) {\n if (!this.customLegend[gridIndex].customLegends) {\n this.customLegend[gridIndex].customLegends = [\n { list: [], unit: '' },\n { list: [], unit: '' }\n ];\n }\n // index = 0 means left legend\n if (index === 0) {\n if (!this.customLegend[gridIndex]?.customLegends[0]?.list) {\n this.customLegend[gridIndex].customLegends[0] = { list: [customLegendItem] };\n } else {\n // legend with same id and name not found\n this.customLegend[gridIndex].customLegends[0].list.push(customLegendItem);\n }\n this.customLegend[gridIndex].customLegends[0].unit = unitText;\n } else {\n // index = 1 means right legend\n if (!this.customLegend[gridIndex]?.customLegends[1]?.list) {\n this.customLegend[gridIndex].customLegends[1] = { list: [customLegendItem] };\n } else {\n this.customLegend[gridIndex].customLegends[1].list.push(customLegendItem);\n }\n this.customLegend[gridIndex].customLegends[1].unit = unitText;\n }\n this.applyCustomLegendPosition();\n }\n }\n\n /**\n * Show loading indicator.\n */\n public startProgressIndication(): void {\n this.inProgress.set(true);\n }\n\n /**\n * Hide loading indicator.\n */\n public stopProgressIndication(): void {\n this.inProgress.set(false);\n }\n\n /**\n * Set the data zoom range for the chart in milliseconds.\n * As an example one hour is the value 3600000.\n */\n setTimeRange(range: number): void {\n const currentDZ = this.getVisibleRange();\n const minMax = this.getSeriesMinMax(true);\n if (!currentDZ || minMax.min == null || minMax.max == null) {\n return;\n }\n\n const mid = (currentDZ.rangeStart + currentDZ.rangeEnd) / 2;\n const halfRange = range / 2;\n\n let start = 0;\n let end = 0;\n\n if (range === 0 || range > minMax.max - minMax.min) {\n start = minMax.min;\n end = minMax.max;\n } else {\n start = mid - halfRange;\n end = mid + halfRange;\n\n // at start\n if (start < minMax.min) {\n start = minMax.min;\n end = start + range;\n }\n\n // at end. Special case: if already at end, keep end\n if (end > minMax.max || currentDZ.rangeEnd === minMax.max) {\n start = minMax.max - range;\n end = minMax.max;\n }\n }\n\n this.dispatchEChartAction({ type: 'dataZoom', startValue: start, endValue: end });\n }\n\n protected addDataInternal(series: SeriesUpdate<any>[]): void {\n const options = this.actualOptions;\n series.forEach(update => {\n const currentSeries = options.series![update.index];\n if (!currentSeries) {\n return;\n }\n const seriesData = currentSeries.data as any[];\n seriesData.push(update.data);\n if (this.maxEntries() > 0 && seriesData.length > this.maxEntries()) {\n seriesData.splice(0, seriesData.length - this.maxEntries());\n }\n });\n\n this.refreshSeries();\n }\n\n private getPresetDataZoom(range: DataZoomRange): any {\n let ret: any;\n if (range.visibleWidth && this.autoZoomSeriesIndex() !== -1) {\n this.visibleRange.set(range.visibleWidth);\n\n const startValue = this.calculateZoomStartValue();\n if (this.isValidDataZoomValue(startValue)) {\n this.autoZoomUpdate = true;\n ret = { startValue, end: 100 };\n }\n } else if (\n this.isValidDataZoomValue(range.startValue) &&\n this.isValidDataZoomValue(range.endValue)\n ) {\n // handling the case when startValue and endValue is given as a fixed time interval\n ret = {\n startValue: range.startValue,\n endValue: range.endValue\n };\n this.autoZoomUpdate = false;\n } else {\n ret = { ...range };\n }\n\n return ret;\n }\n\n private checkGridSizeChange(): void {\n if (!this.chart) {\n return;\n }\n const gridRectNew: GridRectCoordinate =\n this.internalGetModel()?.getComponent('grid')?.coordinateSystem?._rect;\n if (gridRectNew) {\n const nativeWrapper = this.chartContainerWrapper().nativeElement as HTMLElement;\n gridRectNew.containerWidth = nativeWrapper.offsetWidth;\n gridRectNew.containerHeight = nativeWrapper.offsetHeight;\n\n let isGridResized = false;\n\n for (const objKey of Object.keys(this.gridCoordinates) as (keyof GridRectCoordinate)[]) {\n if (this.gridSizeItemChanged(gridRectNew[objKey], this.gridCoordinates[objKey])) {\n isGridResized = true;\n break;\n }\n }\n\n if (isGridResized) {\n // update new coordinates and emit event\n this.gridCoordinates = gridRectNew;\n this.timeBarLeft.set(this.gridCoordinates.x);\n this.timeBarRight.set(\n this.gridCoordinates.containerWidth - this.gridCoordinates.x - this.gridCoordinates.width\n );\n\n if (this.externalZoomSlider() && Array.isArray(this.extZoomSliderOptions?.grid)) {\n this.extZoomSliderOptions.grid[0].left = this.timeBarLeft();\n this.extZoomSliderOptions.grid[0].right = this.timeBarRight();\n this.extZoomSliderChart.setOption({ grid: this.extZoomSliderOptions.grid }, false);\n }\n this.ngZone.run(() => this.chartGridResized.emit(this.gridCoordinates));\n }\n }\n this.cdRef.markForCheck();\n }\n\n private gridSizeItemChanged(a: any, b: any): boolean {\n return Array.isArray(a)\n ? a.length !== b.length || (a as any[]).some((item, index) => item !== b[index])\n : a !== b;\n }\n\n private setContainerHeight(): void {\n const newHeight = parseInt(this.eChartContainerHeight()!, 10) || null;\n if (newHeight !== this.containerHeight()) {\n this.containerHeight.set(newHeight);\n\n this.ngZone.runOutsideAngular(() => {\n this.chart?.resize({ width: this.curWidth, height: newHeight ?? this.curHeight });\n if (this.externalZoomSlider()) {\n this.extZoomSliderChart.resize();\n }\n });\n }\n }\n\n private updateCustomLegendMultiLineInfo(): void {\n const event: CustomLegendMultiLineInfo[] = [];\n this.siCustomLegend().forEach((legend, index) => {\n event.push({\n customLegendId: index,\n isCustomLegendMultilined: legend.customLegendContainer().nativeElement.offsetHeight > 20\n });\n });\n if (\n event.length !== this.customLegendsMultiLineInfo.length ||\n event.some(\n (e, index) =>\n e.isCustomLegendMultilined !==\n this.customLegendsMultiLineInfo[index].isCustomLegendMultilined\n )\n ) {\n this.customLegendsMultiLineInfo = event;\n this.customLegendMultiLineInfoEvent.emit(event);\n }\n this.cdRef.markForCheck();\n }\n}\n","@if (showCustomLegend() && (title() || subTitle())) {\n <div\n class=\"si-title-2 chart-title chart-title-width\"\n [style.background-color]=\"backgroundColor()\"\n >\n <div class=\"chart-title-text\" [style.color]=\"titleColor()\">{{ title() }}</div>\n @if (subTitle()) {\n <div class=\"si-body-2\" [style.color]=\"subTitleColor()\">{{ subTitle() }}</div>\n }\n </div>\n}\n\n<div\n #chartContainerWrapper\n class=\"chart-container-wrapper\"\n [class.chart-scroll]=\"containerHeight()\"\n [attr.tabindex]=\"containerHeight() ? '0' : null\"\n>\n <div class=\"chart-container\" [style.height.px]=\"containerHeight()\">\n @if (showCustomLegend()) {\n @for (cl of customLegend; track $index) {\n <si-custom-legend\n #siCustomLegend\n class=\"custom-legend\"\n [style.top.px]=\"cl.top\"\n [title]=\"title()\"\n [subTitle]=\"subTitle()\"\n [customLegend]=\"cl\"\n [style.background-color]=\"backgroundColor()\"\n [titleColor]=\"titleColor()\"\n [subTitleColor]=\"subTitleColor()\"\n [textColor]=\"textColor()\"\n (legendIconClickEvent)=\"handleLegendClick($event)\"\n (legendClickEvent)=\"handleLegendClick($event)\"\n (legendHoverStartEvent)=\"handleLegendHover($event, true)\"\n (legendHoverEndEvent)=\"handleLegendHover($event, false)\"\n />\n }\n }\n <div #chart class=\"echart-container\" [style.height.px]=\"containerHeight()\"></div>\n </div>\n</div>\n@if (externalZoomSlider()) {\n <div\n #externalZoomSlider\n class=\"external-zoom-container\"\n [class.has-time-range-bar]=\"showTimeRangeBar()\"\n [style.--time-bar-height.px]=\"timeBarHeight()\"\n ></div>\n}\n\n@if (showTimeRangeBar() && zoomSlider()) {\n <div\n class=\"time-range-bar\"\n [style.bottom.px]=\"timeBarBottom()\"\n [style.padding-left.px]=\"timeBarLeft()\"\n [style.padding-right.px]=\"timeBarRight()\"\n >\n <ng-content select=\"[slot=timeRangeBar]\" />\n </div>\n}\n\n@if (inProgress()) {\n <div class=\"progress-container\">\n <si-chart-loading-spinner />\n </div>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-chart.component';\nexport * from './si-chart.interfaces';\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Component, input, OnChanges, SimpleChanges } from '@angular/core';\n\nimport { echarts } from '../../shared/echarts.custom';\nimport { LegendComponentOption, TooltipComponentOption } from '../../shared/echarts.model';\nimport { SiChartLoadingSpinnerComponent } from '../si-chart-loading-spinner/si-chart-loading-spinner.component';\nimport { SiChartComponent } from '../si-chart/si-chart.component';\nimport {\n ChartXAxis,\n ChartYAxis,\n DataZoomRange,\n SeriesUpdate\n} from '../si-chart/si-chart.interfaces';\nimport { SiCustomLegendComponent } from '../si-custom-legend/si-custom-legend.component';\nimport { CustomLegend, CustomLegendProps } from '../si-custom-legend/si-custom-legend.interface';\nimport {\n CartesianChartData,\n CartesianChartSeries,\n SubchartGrid\n} from './si-chart-cartesian.interfaces';\n\n@Component({\n selector: 'si-chart-cartesian',\n imports: [SiCustomLegendComponent, SiChartLoadingSpinnerComponent],\n templateUrl: '../si-chart/si-chart.component.html',\n styleUrl: '../si-chart/si-chart.component.scss'\n})\nexport class SiChartCartesianComponent extends SiChartComponent implements OnChanges {\n readonly series = input<CartesianChartSeries[]>();\n readonly subChartGrids = input<SubchartGrid[]>();\n readonly yAxis = input<ChartYAxis | ChartYAxis[]>();\n readonly xAxis = input<ChartXAxis | ChartXAxis[]>();\n readonly tooltipFormatter = input<TooltipComponentOption['formatter']>();\n /**\n * Used to display the chart as a stacked one.\n *\n * @defaultValue false\n */\n readonly stacked = input(false);\n /** Enable or disable brush zoom mode */\n readonly zoomMode = input<boolean>();\n\n // Used to toggle different chart types\n override ngOnChanges(changes: SimpleChanges): void {\n if (changes.zoomMode) {\n this.setZoomMode();\n }\n if (changes.stacked) {\n changes.forceAll = changes.stacked;\n }\n if (changes.subChartGrids) {\n changes.forceAll = changes.subChartGrids;\n }\n super.ngOnChanges(changes);\n }\n\n private formatTooltip(p: object | object[]): string {\n const params = Array.isArray(p) ? p : [p];\n const label: string = params[0]?.axisValueLabel ?? '';\n\n let html = label;\n for (const series of params) {\n const isCandle = series.componentSubType === 'candlestick';\n const isPie = series.componentSubType === 'pie';\n const useName = series.name != series.axisValue;\n const name = isPie\n ? series.data.name\n : useName\n ? // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n series.name || series.seriesName\n : series.seriesName;\n const valIndex = (series.encode.value ?? series.encode.y)[0];\n const value = isCandle\n ? ''\n : isPie\n ? series.percent + '%'\n : Array.isArray(series.value)\n ? series.value[valIndex]\n : series.value;\n\n html += '<div style=\"display: flex; align-items: center;\">';\n html += this.getSeriesMarkerSvg(name);\n html += `<span style=\"margin-inline: 4px 8px\">${name}</span>`;\n html += `<span style=\"margin-inline-start: auto\">${value}</span>`;\n html += '</div>';\n }\n return html;\n }\n\n /**\n * Get the series marker svg by series name.\n */\n getSeriesMarkerSvg(seriesName: string): string {\n const seriesValue = this.actualOptions.series as CartesianChartSeries[];\n let sym;\n if (seriesValue) {\n sym = this.getSeriesMarker(seriesName);\n const symbol = this.shapePaths[sym as string];\n const color = this.getSeriesColorBySeriesName(seriesName);\n return `<svg width=\"12\" height=\"12\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"${symbol}\" fill=\"${color}\" />\n </svg>`;\n }\n return '';\n }\n\n /**\n * Get the series marker by series name.\n */\n getSeriesMarker(seriesName: string): string {\n const seriesValue = this.actualOptions.series as CartesianChartSeries[];\n if (seriesValue) {\n const seriesMarker = seriesValue.find(ser => ser.name === seriesName);\n if (seriesMarker && 'symbol' in seriesMarker) {\n return seriesMarker.symbol as string;\n }\n }\n return 'circle';\n }\n\n protected override afterChartInit(skipZoom?: boolean): void {\n super.afterChartInit(skipZoom);\n if (this.zoomMode()) {\n this.setZoomMode();\n }\n }\n\n protected override setZoomMode(): void {\n this.dispatchEChartAction({\n type: 'takeGlobalCursor',\n key: 'dataZoomSelect',\n dataZoomSelectActive: this.zoomMode()\n });\n }\n\n protected override getValidXAxis(): Set<number> {\n const validXAxis: Set<number> = new Set<number>();\n this.series()?.forEach(series => {\n if (series.visible !== false && series.xAxisIndex !== undefined) {\n validXAxis.add(series.xAxisIndex);\n }\n });\n return validXAxis;\n }\n\n protected override applyOptions(): void {\n this.actualOptions = {\n series: [],\n xAxis: this.xAxis(),\n grid: this.getGrid(),\n yAxis: this.yAxis(),\n toolbox: {\n showTitle: false,\n itemSize: 0,\n feature: {\n dataZoom: {\n filterMode: 'none',\n xAxisIndex: 'all',\n yAxisIndex: false,\n icon: {\n zoom: 'image://',\n back: 'image://'\n }\n }\n }\n },\n legend: [\n {\n data: []\n },\n {\n data: []\n }\n ],\n tooltip: {\n trigger: 'axis'\n }\n };\n const tooltipFormatter = this.tooltipFormatter();\n if (tooltipFormatter) {\n this.actualOptions.tooltip.formatter = tooltipFormatter;\n } else if (this.hasDifferentMarker()) {\n this.actualOptions.tooltip.formatter = this.formatTooltip.bind(this);\n }\n\n const yAxis = this.yAxis();\n const yAxisArray = Array.isArray(yAxis) ? yAxis : yAxis ? [yAxis] : [];\n const numRight = yAxisArray.reduce((acc, cur) => acc + (cur.position === 'right' ? 1 : 0), 0);\n const numLeft = yAxisArray.length - numRight;\n const legendLeftOptions = this.getThemeCustomValue(['legendLeft'], {});\n const legendRightOptions = this.getThemeCustomValue(['legendRight'], {});\n let leftUnitText: string | undefined;\n let rightUnitText: string | undefined;\n const legends = this.actualOptions.legend as LegendComponentOption[];\n if (numLeft && numRight) {\n echarts.util.merge(legends[0], legendLeftOptions, true);\n echarts.util.merge(legends[1], legendRightOptions, true);\n } else if (Array.isArray(this.yAxis()) && numLeft) {\n echarts.util.merge(legends[0], { left: legendLeftOptions.left }, true);\n } else if (numRight) {\n echarts.util.merge(legends[1], { right: legendRightOptions.right }, true);\n }\n\n const subChartGrids = this.subChartGrids();\n if (subChartGrids) {\n if (subChartGrids.length !== this.customLegend.length) {\n const diff = subChartGrids.length - this.customLegend.length;\n if (diff < 0) {\n this.customLegend.length = subChartGrids.length;\n } else {\n for (let i = 0; i < diff; i++) {\n // Add default custom legends for all grids\n const cl: CustomLegend = {\n customLegends: [\n { list: [], unit: '' },\n { list: [], unit: '' }\n ],\n legendAxis: 'both'\n };\n this.customLegend.push(cl);\n }\n }\n }\n const margin = 16;\n // calculate custom legend positions from top according to subcharts.\n for (let i = 0; i < subChartGrids.length; i++) {\n if (i === 0) {\n this.customLegend[i].top = 0;\n } else {\n const prevGrid = subChartGrids[i - 1];\n const subChartTop = (prevGrid.top as number) ?? 0;\n const subChartHeight = (prevGrid.height as number) ?? 0;\n this.customLegend[i].top = subChartTop + subChartHeight + margin;\n }\n }\n }\n\n const seriesValue = this.series();\n if (seriesValue) {\n const optionSeries = this.actualOptions.series as CartesianChartSeries[];\n seriesValue.forEach(series => {\n const s: any = Object.assign(\n {\n stack: this.stacked()\n },\n series\n );\n if (s.type === 'line' && s.area) {\n delete s.area;\n s.areaStyle = {};\n } else {\n s.areaStyle ??= null;\n }\n delete s.visible;\n\n if ('symbol' in series && !this.shapePaths[series.symbol as string]) {\n s.symbol = 'circle';\n }\n\n optionSeries.push(s);\n\n if (this.showLegend() && series.name) {\n let legendIndex = 0;\n const axis = yAxisArray[series.yAxisIndex ?? 0];\n if (axis && axis.position === 'right') {\n legendIndex = 1;\n }\n\n let customLegendProp: CustomLegendProps | undefined;\n if (this.showCustomLegend()) {\n // get left and right axis units from axis array\n if (axis && (axis.show === undefined || axis.show)) {\n if ((!leftUnitText || leftUnitText !== axis.name) && axis.position === 'left') {\n if (axis.name != null) {\n // axis.name is the same property name which eChart uses to display axis title,\n // hence in case of custom legends units were shown at two places i.e. at axis\n // title as well as custom legend unit section. Thus changing the property name\n // to customLegendUnit only in case custom legends are used.\n axis.customLegendUnit = axis.name;\n }\n if (axis.customLegendUnit != null) {\n leftUnitText = axis.customLegendUnit;\n }\n } else if (\n (!rightUnitText || rightUnitText !== axis.name) &&\n axis.position === 'right'\n ) {\n if (axis.name != null) {\n // axis.name is the same property name which eChart uses to display axis title,\n // hence in case of custom legends units were shown at two places i.e. at axis\n // title as well as custom legend unit section. Thus changing the property name\n // to customLegendUnit only in case custom legends are used.\n axis.customLegendUnit = axis.name;\n }\n if (axis.customLegendUnit != null) {\n rightUnitText = axis.customLegendUnit;\n }\n }\n delete axis.name;\n }\n\n const unitText = axis.position === 'right' ? rightUnitText : leftUnitText;\n customLegendProp = {\n displayName: s.displayName,\n tooltip: s.customLegendToolTip,\n unit: unitText\n };\n }\n // As we have only 1 xAxis per sub chart, xAxisIndex equals grid index.\n const seriesSymbol = 'symbol' in s ? (s.symbol as string) : 'circle';\n this.addLegendItem(\n series.name as string,\n series.visible,\n legendIndex,\n series.xAxisIndex,\n customLegendProp,\n seriesSymbol\n );\n }\n });\n }\n\n this.applyTitles();\n if (this.externalZoomSlider()) {\n this.extZoomSliderOptions.legend = this.actualOptions.legend;\n }\n }\n\n private hasDifferentMarker(): boolean {\n const seriesValue = this.series();\n return !!seriesValue?.some(series => 'symbol' in series && series.symbol !== 'circle');\n }\n\n private getGrid(): any {\n const subChartGrids = this.subChartGrids();\n if (subChartGrids) {\n subChartGrids.forEach(g => (g.containLabel = false));\n return subChartGrids;\n }\n return {};\n }\n\n override refreshSeries(isLive: boolean = true, dzToSet?: DataZoomRange): void {\n const seriesValue = this.series();\n if (!seriesValue) {\n return;\n }\n const optionSeries = this.actualOptions.series as CartesianChartSeries[];\n seriesValue.forEach((series, i) => {\n optionSeries[i].data = series.data;\n });\n super.refreshSeries(isLive, dzToSet);\n }\n\n protected override hasData(): boolean {\n return this.series()?.some(s => s.visible !== false && s.data && s.data.length > 0) ?? false;\n }\n\n protected override handleSelectionChanged(event: any): void {\n if (event?.selected) {\n this.series()?.forEach(series => (series.visible = event.selected[series.name!] !== false));\n }\n super.handleSelectionChanged(event);\n }\n\n /**\n * Update single chart data entry.\n */\n addData(index: number, data: CartesianChartData): void {\n this.addDataInternal([{ index, data }]);\n }\n\n /**\n * Append charts data entries to the end of the series.\n */\n addDataMulti(series: SeriesUpdate<CartesianChartData>[]): void {\n this.addDataInternal(series);\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-chart-cartesian.component';\nexport * from './si-chart-cartesian.interfaces';\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Component, input } from '@angular/core';\n\nimport { PieSeriesOption } from '../../shared/echarts.model';\nimport { SiChartLoadingSpinnerComponent } from '../si-chart-loading-spinner/si-chart-loading-spinner.component';\nimport { SiChartComponent } from '../si-chart/si-chart.component';\nimport { SiCustomLegendComponent } from '../si-custom-legend/si-custom-legend.component';\nimport { CircleChartSeries, CircleValueUpdate } from './si-chart-circle.interface';\n\n@Component({\n selector: 'si-chart-circle',\n imports: [SiCustomLegendComponent, SiChartLoadingSpinnerComponent],\n templateUrl: '../si-chart/si-chart.component.html',\n styleUrl: '../si-chart/si-chart.component.scss'\n})\nexport class SiChartCircleComponent extends SiChartComponent {\n readonly series = input<CircleChartSeries[]>();\n\n protected override applyOptions(): void {\n this.actualOptions = {\n series: [],\n legend: [\n {\n data: []\n }\n ],\n tooltip: {\n trigger: 'item',\n confine: true\n }\n };\n const optionSeries = this.actualOptions.series as PieSeriesOption[];\n\n const offset =\n !this.showCustomLegend() && this.subTitle()\n ? this.getThemeCustomValue(['subTitle', 'legend', 'top'], 0)\n : 0;\n const top = 32 + offset;\n this.series()?.forEach(series => {\n const s: any = Object.assign({ type: 'pie', top }, series);\n optionSeries.push(s);\n if (this.showLegend()) {\n series.data.forEach(data => {\n if (data.name) {\n this.addLegendItem(data.name);\n }\n });\n }\n });\n\n this.applyTitles();\n }\n\n protected override applyDataZoom(): void {}\n\n /**\n * Update single value of the circle chart.\n */\n changeSingleValue(index: number, valueIndex: number, value: number): void {\n const optionSeries = this.actualOptions.series as PieSeriesOption[];\n const series = optionSeries[index].data!;\n (series[valueIndex] as any).value = value;\n this.updateEChart();\n }\n\n /**\n * Update multiple values of the circle chart.\n */\n changeMultiValues(updateValues: CircleValueUpdate[]): void {\n const optionSeries = this.actualOptions.series as PieSeriesOption[];\n updateValues.forEach(update => {\n const currentSeries = optionSeries[update.seriesIndex].data!;\n if (!currentSeries) {\n return;\n }\n (currentSeries[update.valueIndex] as any).value = update.value;\n });\n\n this.updateEChart();\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-chart-circle.component';\nexport * from './si-chart-circle.interface';\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n Component,\n computed,\n inject,\n input,\n LOCALE_ID,\n OnChanges,\n SimpleChange,\n SimpleChanges\n} from '@angular/core';\n\nimport { GaugeSeriesOption } from '../../shared/echarts.model';\nimport { SiChartLoadingSpinnerComponent } from '../si-chart-loading-spinner/si-chart-loading-spinner.component';\nimport { SiChartComponent } from '../si-chart/si-chart.component';\nimport { SiCustomLegendComponent } from '../si-custom-legend/si-custom-legend.component';\nimport { GaugeChartSeries } from './si-chart-gauge.interface';\n\n@Component({\n selector: 'si-chart-gauge',\n imports: [SiCustomLegendComponent, SiChartLoadingSpinnerComponent],\n templateUrl: '../si-chart/si-chart.component.html',\n styleUrl: '../si-chart/si-chart.component.scss'\n})\nexport class SiChartGaugeComponent extends SiChartComponent implements OnChanges {\n /** @defaultValue 0 */\n readonly minValue = input(0);\n /** @defaultValue 100 */\n readonly maxValue = input(100);\n /** @defaultValue 0 */\n readonly value = input(0);\n readonly splitSteps = input<number>();\n /** @defaultValue true */\n readonly responsiveSplitSteps = input(true);\n /** @defaultValue '%' */\n readonly unit = input('%');\n /** @defaultValue false */\n readonly unitsOnSplit = input(false);\n /**\n * Custom formatter for axis labels.\n * Takes precedence when specified, i.e. number of decimals, unit etc needs\n * to be set by the user using this formatter.\n */\n readonly labelFormatter = input<(val: number) => string>();\n /**\n * Custom formatter for value.\n * Takes precedence when specified, i.e. number of decimals needs\n * to be set by the user using this formatter.\n */\n readonly valueFormatter = input<(val: number) => string>();\n /**\n * Sets the number of decimals.\n * @deprecated Use `minNumberOfDecimals` and `maxNumberOfDecimals` instead.\n * @defaultValue undefined */\n readonly numberOfDecimals = input<number | undefined>();\n /**\n * Min number of decimals.\n * @defaultValue 0\n */\n readonly minNumberOfDecimals = input(0);\n /**\n * Max number of decimals.\n * @defaultValue 0\n */\n readonly maxNumberOfDecimals = input(0);\n /**\n * Number of decimals on the axis.\n * @defaultValue 0\n */\n readonly axisNumberOfDecimals = input(0);\n /** @defaultValue false */\n readonly hideAxisLabels = input(false, { transform: booleanAttribute });\n /**\n * Segments on the arc from 0 (implicit) to 1 (explicit)\n * E.g. 0.2 means from 0 to 0.2 of the possible range (maxValue - minValue)\n *\n * @defaultValue [0.2, 0.8, 1]\n */\n readonly segments = input<number[]>([0.2, 0.8, 1]);\n /**\n * Colors for the defined segments.\n * If there are less colors then segments, the colors will be repeated. Defaults to the standard color palette\n */\n readonly colors = input<string[]>();\n\n private readonly locale = inject(LOCALE_ID).toString();\n private readonly actualMinNumberOfDecimals = computed(\n () => this.numberOfDecimals() ?? this.minNumberOfDecimals()\n );\n private readonly actualMaxNumberOfDecimals = computed(\n () => this.numberOfDecimals() ?? this.maxNumberOfDecimals()\n );\n private readonly numberFormat = computed(() => {\n const minDecimals = this.actualMinNumberOfDecimals();\n return new Intl.NumberFormat(this.locale, {\n minimumFractionDigits: minDecimals,\n maximumFractionDigits: Math.max(minDecimals, this.actualMaxNumberOfDecimals())\n });\n });\n\n private readonly axisNumberFormat = computed(() => {\n const decimals = this.axisNumberOfDecimals();\n return new Intl.NumberFormat(this.locale, {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals\n });\n });\n\n protected override afterChartInit(): void {\n super.afterChartInit();\n this.applyOptions();\n this.updateColors();\n this.refreshSeries();\n }\n\n private updateColors(): void {\n // gauge doesn't respect color palette, it needs a bit convincing\n const effectiveOpts: any = this.getOptionNoClone();\n const colors: string[] = this.colors() ?? effectiveOpts.color;\n const hasIndicator = !!this.segments().length;\n\n let newColors: any[];\n if (hasIndicator) {\n newColors = this.segments().map((threshold, index) => {\n const color = colors[index % colors.length];\n return [threshold, color];\n });\n } else {\n const colorsValue = this.colors();\n const dataColor = colorsValue?.length\n ? colorsValue[0]\n : this.getThemeCustomValue(['gauge', 'defaultColor'], colors[0]);\n newColors = [[1, dataColor]];\n }\n\n if (hasIndicator) {\n this.setAxisLineColor(newColors, (this.actualOptions.series![0] as any).axisLine);\n }\n (this.actualOptions.series![0] as any).axisLine.show = hasIndicator;\n\n this.setAxisLineColor(newColors, (this.actualOptions.series![2] as any).axisLine);\n this.refreshSeries();\n }\n\n private setAxisLineColor(colors: any[], axisLine: any): void {\n axisLine.lineStyle = axisLine.lineStyle ?? {};\n axisLine.lineStyle.color = colors;\n }\n\n private getResponsiveConfig(): {\n outerRadius: number;\n center: (string | number)[];\n progressWidth: number;\n indicatorWidth: number;\n gap: number;\n splits: number;\n axisLabelDist: number;\n axisFontSize: number;\n valueFontSize: number;\n unitFontSize: number;\n } {\n const marginY = 12;\n const maxHeight = this.curHeight - marginY;\n const dim = Math.min(this.curWidth / 2, maxHeight);\n const top = dim < maxHeight ? this.curHeight / 2 + dim / 2 : maxHeight;\n\n if (dim < 150) {\n const splits = dim < 100 ? 1 : 4;\n const axisLabelDist = dim < 100 ? -6 : 0;\n return {\n outerRadius: dim - 4,\n center: ['50%', top],\n progressWidth: 8,\n indicatorWidth: 1,\n gap: 2,\n splits,\n axisLabelDist,\n axisFontSize: 12,\n valueFontSize: 18,\n unitFontSize: 12\n };\n }\n\n if (dim < 200) {\n return {\n outerRadius: dim - 7,\n center: ['50%', top],\n progressWidth: 14,\n indicatorWidth: 3,\n gap: 3,\n splits: 6,\n axisLabelDist: 12,\n axisFontSize: 16,\n valueFontSize: 30,\n unitFontSize: 14\n };\n }\n\n return {\n outerRadius: dim - 12,\n center: ['50%', top],\n progressWidth: 24,\n indicatorWidth: 4,\n gap: 5,\n splits: 0,\n axisLabelDist: 20,\n axisFontSize: 20,\n valueFontSize: 48,\n unitFontSize: 16\n };\n }\n\n private calcValue(value: number): number {\n // workaround for bug in echarts\n if (value === this.minValue()) {\n return value + 0.0001;\n }\n return value;\n }\n\n private axisLabelFormatter = (value: any): string => {\n const formatted = this.axisNumberFormat().format(Number(value));\n return this.unitsOnSplit() ? `${formatted} ${this.unit()}` : formatted;\n };\n\n protected override applyOptions(): void {\n const resp = this.getResponsiveConfig();\n const hasIndicator = !!this.segments().length;\n\n const splitNumber =\n this.responsiveSplitSteps() && resp.splits ? resp.splits : this.splitSteps();\n const grey = this.getThemeCustomValue(['gauge', 'grey'], '#F0F2F5');\n const axisColor = this.getThemeCustomValue(['gauge', 'unit'], '#656A6F');\n\n const indicator: GaugeSeriesOption = {\n type: 'gauge',\n radius: resp.outerRadius - resp.progressWidth - resp.gap,\n startAngle: 180,\n endAngle: 0,\n min: this.minValue(),\n max: this.maxValue(),\n center: resp.center,\n axisLine: {\n show: hasIndicator,\n lineStyle: { width: resp.indicatorWidth }\n },\n axisTick: {\n length: 0,\n splitNumber: 1,\n lineStyle: {\n width: 2,\n color: axisColor\n }\n },\n splitLine: {\n length: 0,\n lineStyle: {\n width: 1,\n color: axisColor\n }\n },\n axisLabel: { show: false }\n };\n\n const labelDistance = resp.axisLabelDist + (hasIndicator ? resp.indicatorWidth + resp.gap : 0);\n\n const shade: GaugeSeriesOption = {\n type: 'gauge',\n radius: resp.outerRadius,\n startAngle: 180,\n endAngle: 0,\n min: this.minValue(),\n max: this.maxValue(),\n splitNumber,\n axisTick: { show: false },\n splitLine: { show: false },\n title: { show: false },\n center: resp.center,\n axisLine: {\n lineStyle: {\n width: resp.progressWidth,\n opacity: 0.6,\n color: [[1, grey]]\n }\n },\n axisLabel: {\n show: !this.hideAxisLabels(),\n distance: labelDistance,\n color: axisColor,\n fontSize: resp.axisFontSize,\n formatter: this.labelFormatter() ?? this.axisLabelFormatter\n }\n };\n\n const data: GaugeSeriesOption = {\n type: 'gauge',\n silent: false,\n radius: resp.outerRadius,\n startAngle: 180,\n endAngle: 0,\n min: this.minValue(),\n max: this.maxValue(),\n splitNumber,\n progress: {\n show: true,\n itemStyle: { color: 'auto' },\n width: resp.progressWidth\n },\n emphasis: {\n // This code is added to avoid flickering when the progress is hovered and\n // when mouse effects are enabled with `silent: false` flag. The issue occurs\n // because of the progress.itemStyle.color is set to `auto` which tries to\n // calculate the color dynamically and it conflicts with the mouse hover action\n // which tries to apply the hover style\n itemStyle: { color: 'auto' }\n },\n pointer: {\n show: true,\n length: '0%',\n itemStyle: {\n color: 'auto',\n opacity: 0.001\n }\n },\n center: resp.center,\n axisLine: {\n show: false,\n lineStyle: { opacity: 0.6 }\n },\n axisTick: { show: false },\n splitLine: { show: false },\n axisLabel: { show: false },\n title: { show: false },\n detail: {\n offsetCenter: [0, -0.5 * resp.valueFontSize],\n valueAnimation: true,\n formatter: this.valueFormatterInternal(),\n rich: {\n value: {\n fontSize: resp.valueFontSize,\n lineHeight: resp.valueFontSize,\n fontWeight: 'bolder'\n },\n unit: {\n fontSize: resp.unitFontSize,\n lineHeight: resp.unitFontSize,\n padding: [0, 0, (resp.unitFontSize - resp.valueFontSize) / 2, 0]\n }\n }\n },\n data: [{ value: this.calcValue(this.value()) }]\n };\n\n const series: GaugeSeriesOption[] = [indicator, shade, data];\n\n this.showLegend.set(false);\n this.actualOptions.series = series;\n\n this.applyTitles();\n }\n\n private valueFormatterInternal(): (val: number) => string {\n const unit = this.unit();\n const valueFormatter = this.valueFormatter();\n const labelFormatter = this.labelFormatter();\n\n const formattedUnit = unit ? (unit.length > 5 ? `\\n{unit|${unit}}` : ` {unit|${unit}}`) : '';\n\n return (value: number): string => {\n if (valueFormatter) {\n return `{value|${valueFormatter(value)}}${formattedUnit}`;\n }\n // DEPRECATED: Use the new input `valueFormatter` to format the value.\n // labelFormatter should be removed from here in future versions.\n if (labelFormatter) {\n return labelFormatter(value);\n }\n return `{value|${this.numberFormat().format(value)}}${formattedUnit}`;\n };\n }\n\n override ngOnChanges(changes: SimpleChanges): void {\n if (this.chart && (changes.palette || changes.colors || changes.segments)) {\n this.updateColors();\n }\n changes.forceAll = new SimpleChange(false, true, false);\n super.ngOnChanges(changes);\n }\n\n protected override applyDataZoom(): void {}\n\n protected override afterChartResize(): void {\n this.applyOptions();\n this.refreshSeries();\n }\n\n /**\n * Update gauge chart value.\n */\n setValue(value: number): void {\n const optionSeries = this.actualOptions.series as GaugeChartSeries[];\n optionSeries[2].data[0].value = this.calcValue(value);\n this.refreshSeries();\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-chart-gauge.component';\nexport * from './si-chart-gauge.interface';\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Component, input } from '@angular/core';\nimport { PieSeriesOption } from 'echarts';\n\nimport { SiChartLoadingSpinnerComponent } from '../si-chart-loading-spinner/si-chart-loading-spinner.component';\nimport { SiChartComponent } from '../si-chart/si-chart.component';\nimport { SiCustomLegendComponent } from '../si-custom-legend/si-custom-legend.component';\nimport { ProgressChartSeries, ProgressValueUpdate } from './si-chart-progress.interface';\n\n@Component({\n selector: 'si-chart-progress',\n imports: [SiCustomLegendComponent, SiChartLoadingSpinnerComponent],\n templateUrl: '../si-chart/si-chart.component.html',\n styleUrl: '../si-chart/si-chart.component.scss'\n})\nexport class SiChartProgressComponent extends SiChartComponent {\n readonly series = input<ProgressChartSeries[]>();\n\n /**\n * How big the data can get in degrees.\n *\n * @defaultValue 220\n */\n readonly dataAngle = input(220);\n\n // item width in % radius\n private itemWidth!: number;\n\n // item gap in % radius\n private itemGap!: number;\n\n // base radius of an item\n private baseRadius = 98;\n\n private sizeFactor!: number;\n\n // placement chart in % on canvas\n private center!: number;\n\n // color of disabled part of item\n private grey!: string;\n\n // where the data starts. not very intuitive:\n // 0° is at 3 o'clock, goes counterclockwise, but series drawing goes clockwise\n private startAngle!: number;\n\n protected override afterChartInit(): void {\n this.chart.on('legendselectchanged', (params: any) => {\n this.updateRadius(params.selected);\n this.updateEChart();\n });\n }\n\n protected override themeChanged(): void {\n this.applyOptions();\n }\n\n protected override handleSelectionChanged(event: any): void {\n super.handleSelectionChanged(event);\n this.updateRadius(event.selected);\n this.updateEChart();\n }\n\n protected override applyOptions(): void {\n this.actualOptions = {\n series: [],\n legend: [\n {\n data: []\n }\n ]\n };\n\n const dataAngle = this.dataAngle();\n this.startAngle = dataAngle === 360 ? 90 : 270 - (360 - dataAngle) / 2;\n this.itemWidth = this.getThemeCustomValue(['progress', 'itemWidth'], 6);\n this.itemGap = this.getThemeCustomValue(['progress', 'itemGap'], 6);\n this.grey = this.getThemeCustomValue(['progress', 'grey'], '#E6E6E6');\n\n // a factor to change the size of base radius and center related to\n // dataAngle proportionately\n this.sizeFactor = 1 - Math.sin((((this.dataAngle() - 180) / 2) * Math.PI) / 180);\n this.center = 50 + 25 * this.sizeFactor;\n\n const seriesValue = this.series();\n if (seriesValue) {\n seriesValue.forEach(series => {\n this.addSeries(series.name, series.percent);\n if (this.showLegend()) {\n this.addLegendItem(series.name);\n }\n });\n }\n\n this.applyTitles();\n }\n\n private labelFormatter(p: any): string {\n return p.seriesName + '\\n' + Math.round((100 / this.dataAngle()) * p.value) + ' %';\n }\n\n private addSeries(name: string, percent: number): void {\n const optionSeries = this.actualOptions.series as PieSeriesOption[];\n const index = optionSeries.length;\n\n const offset =\n !this.showCustomLegend() && this.subTitle()\n ? this.getThemeCustomValue(['subTitle', 'legend', 'top'], 0)\n : 0;\n const top = !this.sizeFactor ? 32 + offset : Math.floor(offset / 2);\n const bottom = !this.sizeFactor ? undefined : -offset;\n\n const item: PieSeriesOption = {\n top,\n bottom,\n center: ['50%', this.center + '%'],\n name,\n type: 'pie',\n colorBy: 'series',\n radius: this.calculateRadius(index),\n avoidLabelOverlap: false,\n tooltip: { show: false },\n startAngle: this.startAngle,\n label: {\n show: false,\n formatter: p => this.labelFormatter(p),\n position: 'center'\n },\n labelLine: {\n show: false\n },\n emphasis: {\n label: {\n show: true,\n lineHeight: 30,\n fontSize: '30',\n fontWeight: 'bold'\n }\n },\n itemStyle: {\n borderWidth: 0\n },\n data: [\n {\n value: 0,\n name: 'v' + index,\n label: {\n lineHeight: 30,\n fontSize: 30,\n color: 'inherit'\n }\n },\n {\n value: 0,\n name: 'a' + index,\n itemStyle: { color: this.grey },\n emphasis: {\n scale: false,\n itemStyle: { color: this.grey }\n },\n cursor: 'default',\n label: { show: false }\n },\n {\n value: 0,\n name: 'b' + index,\n itemStyle: { color: 'rgba(0,0,0,0)' },\n cursor: 'default',\n label: { show: false }\n }\n ]\n };\n\n this.updateData(item, percent);\n optionSeries.push(item);\n }\n\n private updateData(series: any, percent: number): void {\n const angle = (this.dataAngle() * percent) / 100;\n series.data[0].value = angle;\n series.data[1].value = this.dataAngle() - angle;\n series.data[2].value = 360 - this.dataAngle();\n series.realValue = percent;\n }\n\n private calculateRadius(index: number): string[] {\n const outerRadius = this.baseRadius - index * (this.itemWidth + this.itemGap);\n const innerRadius = outerRadius - this.itemWidth;\n return [innerRadius + '%', outerRadius + '%'];\n }\n\n private updateRadius(selected: any): void {\n let visibleIndex = 0;\n const optionSeries = this.actualOptions.series as PieSeriesOption[];\n optionSeries.forEach(series => {\n if (selected[series.name!] === false) {\n return;\n }\n series.radius = this.calculateRadius(visibleIndex);\n visibleIndex++;\n });\n }\n\n protected override applyDataZoom(): void {}\n\n /**\n * Update single value of the progress chart.\n */\n changeSingleValue(index: number, percent: number): void {\n const optionSeries = this.actualOptions.series as PieSeriesOption[];\n this.updateData(optionSeries[index], percent);\n this.updateEChart();\n }\n\n /**\n * Update multiple values of the progress chart.\n */\n changeMultiValues(updateValues: ProgressValueUpdate[]): void {\n const optionSeries = this.actualOptions.series as PieSeriesOption[];\n updateValues.forEach(update => {\n const currentSeries = optionSeries[update.seriesIndex];\n if (!currentSeries) {\n return;\n }\n this.updateData(currentSeries, update.percent);\n });\n\n this.updateEChart();\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-chart-progress.component';\nexport * from './si-chart-progress.interface';\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Component, input } from '@angular/core';\n\nimport { echarts } from '../../shared/echarts.custom';\nimport { BarSeriesOption } from '../../shared/echarts.model';\nimport { SiChartLoadingSpinnerComponent } from '../si-chart-loading-spinner/si-chart-loading-spinner.component';\nimport { SiChartComponent } from '../si-chart/si-chart.component';\nimport { ChartXAxis, ChartYAxis } from '../si-chart/si-chart.interfaces';\nimport { SiCustomLegendComponent } from '../si-custom-legend/si-custom-legend.component';\nimport { ProgressBarChartSeries, ProgressBarValueUpdate } from './si-chart-progress-bar.interface';\n\n@Component({\n selector: 'si-chart-progress-bar',\n imports: [SiCustomLegendComponent, SiChartLoadingSpinnerComponent],\n templateUrl: '../si-chart/si-chart.component.html',\n styleUrl: '../si-chart/si-chart.component.scss'\n})\nexport class SiChartProgressBarComponent extends SiChartComponent {\n readonly series = input<ProgressBarChartSeries[]>();\n /** Used to display the label in inline or above the progress-bar. */\n readonly labelPosition = input<string>();\n\n private maxValue = 100;\n private xAxisConfig: ChartXAxis = { type: 'value', max: this.maxValue };\n private yAxis: ChartYAxis = {\n type: 'category',\n data: [],\n axisLabel: {\n show: true,\n fontSize: 14\n }\n };\n\n private formatter = new Intl.NumberFormat(undefined, { maximumFractionDigits: 1 });\n private labelPositionOption: BarSeriesOption['label'];\n private labelPositionOptionForValue: BarSeriesOption['label'];\n\n private labelFormatter(p: any): string {\n return this.formatter.format(this.maxValue - p.value) + ' %';\n }\n\n protected override themeChanged(): void {\n this.applyOptions();\n }\n\n protected override applyOptions(): void {\n this.showLegend.set(false);\n const grey = this.getThemeCustomValue(['progress', 'grey'], '#E6E6E6');\n const labelColor = this.getThemeCustomValue(['progressBar', 'labelColor'], '#000');\n const itemWidth = this.getThemeCustomValue(['progressBar', 'itemWidth'], 20);\n\n if (this.labelPosition() === 'top') {\n this.yAxis.axisLabel = false;\n this.labelPositionOption = {\n position: [0, -16],\n formatter: '{b}',\n fontSize: 14,\n color: labelColor,\n show: true\n };\n this.labelPositionOptionForValue = {\n position: ['100%', '-80%'],\n align: 'right',\n show: true,\n formatter: p => this.labelFormatter(p),\n color: labelColor,\n fontWeight: 700\n };\n } else {\n this.yAxis.axisLabel.show = true;\n this.labelPositionOption = {\n show: false\n };\n this.labelPositionOptionForValue = {\n position: 'right',\n show: true,\n formatter: p => this.labelFormatter(p),\n color: labelColor,\n fontWeight: 700\n };\n }\n\n this.actualOptions = {\n series: [],\n xAxis: this.xAxisConfig,\n yAxis: this.yAxis,\n grid: {},\n tooltip: {}\n };\n const categoryAxisOpts = {\n axisLine: { show: false },\n axisTick: { show: false },\n splitLine: { show: false },\n axisLabel: { show: this.yAxis.axisLabel },\n inverse: true\n };\n\n const valueAxisOpts = {\n axisLabel: { show: false },\n axisLine: { show: false },\n axisTick: { show: false },\n splitLine: { show: false }\n };\n\n echarts.util.merge(this.actualOptions.yAxis, categoryAxisOpts, true);\n echarts.util.merge(this.actualOptions.xAxis, valueAxisOpts, true);\n\n this.actualOptions.grid = this.getThemeCustomValue(['progressBar', 'grid'], {});\n\n const series = this.series();\n if (series) {\n const optionSeries = this.actualOptions.series as BarSeriesOption[];\n (this.actualOptions.yAxis as any).data = series.map(item => item.name);\n\n const dataItem: BarSeriesOption = {\n type: 'bar',\n stack: 'chart',\n z: 3,\n barWidth: itemWidth,\n label: this.labelPositionOption,\n data: series.map(item => item.percent)\n };\n\n const fillerItem: BarSeriesOption = {\n type: 'bar',\n stack: 'chart',\n silent: true,\n label: this.labelPositionOptionForValue,\n itemStyle: {\n color: grey\n },\n data: series.map(item => this.maxValue - item.percent)\n };\n\n optionSeries.push(dataItem);\n optionSeries.push(fillerItem);\n }\n\n this.applyTitles();\n }\n\n protected override applyDataZoom(): void {}\n\n /**\n * Updates single value of a single progress bar.\n */\n changeSingleValue(valueIndex: number, value: number): void {\n const optionSeries = this.actualOptions.series as BarSeriesOption[];\n optionSeries[0].data![valueIndex] = value;\n optionSeries[1].data![valueIndex] = this.maxValue - value;\n this.updateEChart();\n }\n\n /**\n * Updates multiple values of a single progress bar.\n */\n changeMultiValues(updateValues: ProgressBarValueUpdate[]): void {\n const optionSeries = this.actualOptions.series as BarSeriesOption[];\n updateValues.forEach(update => {\n const currentDataItem = optionSeries[0].data![update.valueIndex];\n if (!currentDataItem) {\n return;\n }\n optionSeries[0].data![update.valueIndex] = update.value;\n optionSeries[1].data![update.valueIndex] = this.maxValue - update.value;\n });\n\n this.updateEChart();\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-chart-progress-bar.component';\nexport * from './si-chart-progress-bar.interface';\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-custom-legend.component';\nexport * from './si-custom-legend.interface';\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Component, input } from '@angular/core';\n\nimport { SankeySeriesOption } from '../../shared/echarts.model';\nimport { SiChartLoadingSpinnerComponent } from '../si-chart-loading-spinner/si-chart-loading-spinner.component';\nimport { SiChartComponent } from '../si-chart/si-chart.component';\nimport { SiCustomLegendComponent } from '../si-custom-legend/si-custom-legend.component';\n\n@Component({\n selector: 'si-chart-sankey',\n imports: [SiCustomLegendComponent, SiChartLoadingSpinnerComponent],\n templateUrl: '../si-chart/si-chart.component.html',\n styleUrl: '../si-chart/si-chart.component.scss'\n})\nexport class SiChartSankeyComponent extends SiChartComponent {\n readonly series = input<SankeySeriesOption>();\n /** @defaultValue false */\n readonly toolTip = input(false);\n\n protected override applyOptions(): void {\n const series = this.series();\n this.actualOptions = {\n series: series ? (Object.assign({ type: 'sankey' }, series) as any) : [],\n tooltip: { show: this.toolTip() }\n };\n\n this.applyTitles();\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-chart-sankey.component';\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Component, input } from '@angular/core';\n\nimport { SunburstSeriesOption } from '../../shared/echarts.model';\nimport { SiChartLoadingSpinnerComponent } from '../si-chart-loading-spinner/si-chart-loading-spinner.component';\nimport { SiChartComponent } from '../si-chart/si-chart.component';\nimport { SiCustomLegendComponent } from '../si-custom-legend/si-custom-legend.component';\n\n@Component({\n selector: 'si-chart-sunburst',\n imports: [SiCustomLegendComponent, SiChartLoadingSpinnerComponent],\n templateUrl: '../si-chart/si-chart.component.html',\n styleUrl: '../si-chart/si-chart.component.scss'\n})\nexport class SiChartSunburstComponent extends SiChartComponent {\n readonly series = input<SunburstSeriesOption>();\n /** @defaultValue false */\n readonly toolTip = input(false);\n\n protected override applyOptions(): void {\n const series = this.series();\n this.actualOptions = {\n series: series ? (Object.assign({ type: 'sunburst' }, series) as any) : [],\n tooltip: { show: this.toolTip() }\n };\n\n this.applyTitles();\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-chart-sunburst.component';\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-chart/index';\nexport * from './si-chart-cartesian/index';\nexport * from './si-chart-circle/index';\nexport * from './si-chart-gauge/index';\nexport * from './si-chart-progress/index';\nexport * from './si-chart-progress-bar/index';\nexport * from './si-custom-legend/index';\nexport * from './si-chart-sankey/index';\nexport * from './si-chart-sunburst/index';\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './echarts.custom';\nexport * from './echarts.model';\nexport * from './theme-support';\nexport * from './themes/element';\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { SiChartCartesianComponent } from './components/si-chart-cartesian/si-chart-cartesian.component';\nimport { SiChartCircleComponent } from './components/si-chart-circle/si-chart-circle.component';\nimport { SiChartGaugeComponent } from './components/si-chart-gauge/si-chart-gauge.component';\nimport { SiChartLoadingSpinnerComponent } from './components/si-chart-loading-spinner/si-chart-loading-spinner.component';\nimport { SiChartProgressBarComponent } from './components/si-chart-progress-bar/si-chart-progress-bar.component';\nimport { SiChartProgressComponent } from './components/si-chart-progress/si-chart-progress.component';\nimport { SiChartSankeyComponent } from './components/si-chart-sankey/si-chart-sankey.component';\nimport { SiChartSunburstComponent } from './components/si-chart-sunburst/si-chart-sunburst.component';\nimport { SiChartComponent } from './components/si-chart/si-chart.component';\nimport { SiCustomLegendComponent } from './components/si-custom-legend/si-custom-legend.component';\n\n@NgModule({\n imports: [\n CommonModule,\n SiChartCartesianComponent,\n SiChartCircleComponent,\n SiChartComponent,\n SiChartGaugeComponent,\n SiChartLoadingSpinnerComponent,\n SiChartProgressBarComponent,\n SiChartProgressComponent,\n SiChartSankeyComponent,\n SiChartSunburstComponent,\n SiCustomLegendComponent\n ],\n exports: [\n SiChartCartesianComponent,\n SiChartCircleComponent,\n SiChartComponent,\n SiChartGaugeComponent,\n SiChartProgressBarComponent,\n SiChartProgressComponent,\n SiChartSankeyComponent,\n SiChartSunburstComponent,\n SiCustomLegendComponent\n ]\n})\nexport class SiChartsNgModule {}\n\nexport { SiChartsNgModule as SimplChartsNgModule };\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\n// Public API Surface\n\nexport * from './components/index';\nexport * from './shared/index';\n\nexport * from './public-api.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}