From 8d6eed05dd5586c23ed70ccce5032fe9fa486b71 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 b8a18e9a8d430..fe7935cbf645c 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,12 +17,15 @@ * under the License. */ import { + AdhocFilter, ComparisonTimeRangeType, + SimpleAdhocFilter, t, validateNonEmpty, validateTimeComparisonRangeValues, } from '@superset-ui/core'; import { + ColumnMeta, ControlPanelConfig, ControlPanelState, ControlState, @@ -77,16 +80,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, + ), + }; + }, }, }, ], @@ -145,6 +161,9 @@ const config: ControlPanelConfig = { y_axis_format: { label: t('Number format'), }, + adhoc_filters: { + rerender: ['adhoc_custom'], + }, }, formDataOverrides: formData => ({ ...formData,