From 9aa804e070d9361df5e7dcde326ef16a769ac322 Mon Sep 17 00:00:00 2001 From: Yongjie Zhao Date: Wed, 19 Oct 2022 18:47:02 +0800 Subject: [PATCH] fix: categorical x-axis can't apply the label of column (#21869) --- .../src/MixedTimeseries/transformProps.ts | 24 ++++++++++++------- .../src/Timeseries/transformProps.ts | 20 +++++++++++----- 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/transformProps.ts b/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/transformProps.ts index b06516168f104..c280235b314d9 100644 --- a/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/transformProps.ts +++ b/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/transformProps.ts @@ -30,6 +30,8 @@ import { TimeseriesChartDataResponseResult, TimeseriesDataRecord, getXAxisLabel, + isPhysicalColumn, + isDefined, } from '@superset-ui/core'; import { EChartsCoreOption, SeriesOption } from 'echarts'; import { @@ -152,23 +154,29 @@ export default function transformProps( const colorScale = CategoricalColorNamespace.getScale(colorScheme as string); - const xAxisCol = getXAxisLabel( + let xAxisLabel = getXAxisLabel( chartProps.rawFormData as QueryFormData, ) as string; + if ( + isPhysicalColumn(chartProps.rawFormData?.x_axis) && + isDefined(verboseMap[xAxisLabel]) + ) { + xAxisLabel = verboseMap[xAxisLabel]; + } const rebasedDataA = rebaseForecastDatum(data1, verboseMap); const rawSeriesA = extractSeries(rebasedDataA, { fillNeighborValue: stack ? 0 : undefined, - xAxis: xAxisCol, + xAxis: xAxisLabel, }); const rebasedDataB = rebaseForecastDatum(data2, verboseMap); const rawSeriesB = extractSeries(rebasedDataB, { fillNeighborValue: stackB ? 0 : undefined, - xAxis: xAxisCol, + xAxis: xAxisLabel, }); const dataTypes = getColtypesMapping(queriesData[0]); - const xAxisDataType = dataTypes?.[xAxisCol] ?? dataTypes?.[xAxisOrig]; + const xAxisDataType = dataTypes?.[xAxisLabel] ?? dataTypes?.[xAxisOrig]; const xAxisType = getAxisType(xAxisDataType); const series: SeriesOption[] = []; const formatter = getNumberFormatter(contributionMode ? ',.0%' : yAxisFormat); @@ -205,7 +213,7 @@ export default function transformProps( { stack, percentageThreshold, - xAxisCol, + xAxisCol: xAxisLabel, }, ); const { @@ -214,7 +222,7 @@ export default function transformProps( } = extractDataTotalValues(rebasedDataB, { stack: Boolean(stackB), percentageThreshold, - xAxisCol, + xAxisCol: xAxisLabel, }); annotationLayers @@ -225,7 +233,7 @@ export default function transformProps( transformFormulaAnnotation( layer, data1, - xAxisCol, + xAxisLabel, xAxisType, colorScale, sliceId, @@ -502,7 +510,7 @@ export default function transformProps( onContextMenu, xValueFormatter: tooltipFormatter, xAxis: { - label: xAxisCol, + label: xAxisLabel, type: xAxisType, }, }; 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 6cdad4a4ab0d8..8934bffda181c 100644 --- a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/transformProps.ts +++ b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/transformProps.ts @@ -30,6 +30,8 @@ import { t, AxisType, getXAxisLabel, + isPhysicalColumn, + isDefined, } from '@superset-ui/core'; import { isDerivedSeries } from '@superset-ui/chart-controls'; import { EChartsCoreOption, SeriesOption } from 'echarts'; @@ -148,19 +150,25 @@ export default function transformProps( const colorScale = CategoricalColorNamespace.getScale(colorScheme as string); const rebasedData = rebaseForecastDatum(data, verboseMap); - const xAxisCol = getXAxisLabel(chartProps.rawFormData) as string; + let xAxisLabel = getXAxisLabel(chartProps.rawFormData) as string; + if ( + isPhysicalColumn(chartProps.rawFormData?.x_axis) && + isDefined(verboseMap[xAxisLabel]) + ) { + xAxisLabel = verboseMap[xAxisLabel]; + } const isHorizontal = orientation === OrientationType.horizontal; const { totalStackedValues, thresholdValues } = extractDataTotalValues( rebasedData, { stack, percentageThreshold, - xAxisCol, + xAxisCol: xAxisLabel, }, ); const rawSeries = extractSeries(rebasedData, { fillNeighborValue: stack && !forecastEnabled ? 0 : undefined, - xAxis: xAxisCol, + xAxis: xAxisLabel, removeNulls: seriesType === EchartsTimeseriesSeriesType.Scatter, stack, totalStackedValues, @@ -175,7 +183,7 @@ export default function transformProps( Object.values(rawSeries).map(series => series.name as string), ); const isAreaExpand = stack === AreaChartExtraControlsValue.Expand; - const xAxisDataType = dataTypes?.[xAxisCol] ?? dataTypes?.[xAxisOrig]; + const xAxisDataType = dataTypes?.[xAxisLabel] ?? dataTypes?.[xAxisOrig]; const xAxisType = getAxisType(xAxisDataType); const series: SeriesOption[] = []; @@ -229,7 +237,7 @@ export default function transformProps( transformFormulaAnnotation( layer, data, - xAxisCol, + xAxisLabel, xAxisType, colorScale, sliceId, @@ -452,7 +460,7 @@ export default function transformProps( onContextMenu, xValueFormatter: tooltipFormatter, xAxis: { - label: xAxisCol, + label: xAxisLabel, type: xAxisType, }, };