From 87f36d2b2f524e044e2a38021703bd30d44970fc Mon Sep 17 00:00:00 2001 From: Mehmet Salih Yavuz Date: Tue, 28 Oct 2025 23:36:50 +0300 Subject: [PATCH] fix(echarts): fix time shift color matching functionality (#35826) Co-authored-by: Claude (cherry picked from commit 5218b4eea29b32cc983138b4ee33941ab65f67f4) --- .../src/Timeseries/transformProps.ts | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/transformProps.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/transformProps.ts index 630fa7afe88..638b0948c02 100644 --- a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/transformProps.ts +++ b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/transformProps.ts @@ -198,6 +198,7 @@ export default function transformProps( zoomable, stackDimension, }: EchartsTimeseriesFormData = { ...DEFAULT_FORM_DATA, ...formData }; + const refs: Refs = {}; const groupBy = ensureIsArray(groupby); const labelMap: { [key: string]: string[] } = Object.entries( @@ -299,7 +300,24 @@ export default function transformProps( const entryName = String(entry.name || ''); const seriesName = inverted[entryName] || entryName; - const colorScaleKey = getOriginalSeries(seriesName, array); + + let colorScaleKey = getOriginalSeries(seriesName, array); + + // If this series name exactly matches a time compare value, it's a time-shifted series + // and we need to find the corresponding original series for color matching + if (array && array.includes(seriesName)) { + // Find the original series (first non-time-compare series) + const originalSeries = rawSeries.find(s => { + const sName = inverted[String(s.name || '')] || String(s.name || ''); + return !array.includes(sName); + }); + if (originalSeries) { + const originalSeriesName = + inverted[String(originalSeries.name || '')] || + String(originalSeries.name || ''); + colorScaleKey = getOriginalSeries(originalSeriesName, array); + } + } const transformedSeries = transformSeries( entry,