From 4d03b0cca3cdf1b80a864727ec5527c038a652ff Mon Sep 17 00:00:00 2001 From: Kamil Gabryjelski Date: Tue, 5 Mar 2024 21:24:26 +0100 Subject: [PATCH] fix: Allow only dttm columns in comparison filter in Period over Period chart (#27209) (cherry picked from commit a4c771e013957e95d80d252dcdedad7046348964) --- .../BigNumberPeriodOverPeriod/controlPanel.ts | 39 ++++++++++++++----- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/controlPanel.ts b/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/controlPanel.ts index 5ac80eaf96256..be731421a0a6f 100644 --- a/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/controlPanel.ts +++ b/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/controlPanel.ts @@ -17,11 +17,14 @@ * under the License. */ import { + AdhocFilter, ComparisonTimeRangeType, + SimpleAdhocFilter, t, validateTimeComparisonRangeValues, } from '@superset-ui/core'; import { + ColumnMeta, ControlPanelConfig, ControlPanelState, ControlState, @@ -76,16 +79,29 @@ const config: ControlPanelConfig = { mapStateToProps: ( state: ControlPanelState, controlState: ControlState, - ) => ({ - ...(sharedControls.adhoc_filters.mapStateToProps?.( - state, - controlState, - ) || {}), - externalValidationErrors: validateTimeComparisonRangeValues( - state.controls?.time_comparison?.value, - controlState.value, - ), - }), + ) => { + const originalMapStateToPropsRes = + sharedControls.adhoc_filters.mapStateToProps?.( + state, + controlState, + ) || {}; + const columns = originalMapStateToPropsRes.columns.filter( + (col: ColumnMeta) => + col.is_dttm && + (state.controls.adhoc_filters.value as AdhocFilter[]).some( + (val: SimpleAdhocFilter) => + val.subject === col.column_name, + ), + ); + return { + ...originalMapStateToPropsRes, + columns, + externalValidationErrors: validateTimeComparisonRangeValues( + state.controls?.time_comparison?.value, + controlState.value, + ), + }; + }, }, }, ], @@ -138,6 +154,9 @@ const config: ControlPanelConfig = { y_axis_format: { label: t('Number format'), }, + adhoc_filters: { + rerender: ['adhoc_custom'], + }, }, formDataOverrides: formData => ({ ...formData,