You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by kg...@apache.org on 2024/03/05 20:24:32 UTC
(superset) branch master updated: fix: Allow only dttm columns in comparison filter in Period over Period chart (#27209)
This is an automated email from the ASF dual-hosted git repository.
kgabryje pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to refs/heads/master by this push:
new a4c771e013 fix: Allow only dttm columns in comparison filter in Period over Period chart (#27209)
a4c771e013 is described below
commit a4c771e013957e95d80d252dcdedad7046348964
Author: Kamil Gabryjelski <ka...@gmail.com>
AuthorDate: Tue Mar 5 21:24:26 2024 +0100
fix: Allow only dttm columns in comparison filter in Period over Period chart (#27209)
---
.../BigNumberPeriodOverPeriod/controlPanel.ts | 39 ++++++++++++++++------
.../DndColumnSelectControl/DndFilterSelect.tsx | 13 +++++++-
2 files changed, 41 insertions(+), 11 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 5ac80eaf96..be731421a0 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,
diff --git a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.tsx b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.tsx
index 5295bd6dae..bf8b7b6e81 100644
--- a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.tsx
+++ b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.tsx
@@ -382,7 +382,18 @@ const DndFilterSelect = (props: DndFilterSelectProps) => {
return new AdhocFilter(config);
}, [droppedItem]);
- const canDrop = useCallback(() => true, []);
+ const canDrop = useCallback(
+ (item: DatasourcePanelDndItem) => {
+ if (item.type === DndItemType.Column) {
+ return props.columns.some(
+ col => col.column_name === (item.value as ColumnMeta).column_name,
+ );
+ }
+ return true;
+ },
+ [props.columns],
+ );
+
const handleDrop = useCallback(
(item: DatasourcePanelDndItem) => {
setDroppedItem(item.value);