From 24cae1a0f3aa4440891bd6be16bd1d0f636d9216 Mon Sep 17 00:00:00 2001 From: Kamil Gabryjelski Date: Mon, 1 Mar 2021 11:33:42 +0100 Subject: [PATCH] feat: implement Filter dnd (#978) --- .../src/shared-controls/dndControls.tsx | 15 +++++++++++++++ .../src/shared-controls/index.tsx | 10 ++++++++-- .../superset-ui-chart-controls/src/types.ts | 1 + 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx index a3aa3f6cf029..57de72c1950f 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx @@ -70,3 +70,18 @@ export const dndEntity: typeof dndGroupByControl = { validators: [validateNonEmpty], description: t('This defines the element to be plotted on the chart'), }; + +export const dnd_adhoc_filters: SharedControlConfig<'DndFilterSelect'> = { + type: 'DndFilterSelect', + label: t('Filters'), + default: null, + description: '', + mapStateToProps: ({ datasource, form_data }) => ({ + columns: datasource?.columns.filter(c => c.filterable) || [], + savedMetrics: datasource?.metrics || [], + // current active adhoc metrics + selectedMetrics: form_data.metrics || (form_data.metric ? [form_data.metric] : []), + datasource, + }), + provideFormDataToProps: true, +}; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart-controls/src/shared-controls/index.tsx b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart-controls/src/shared-controls/index.tsx index 7fc46c8435a0..8d449969b6ac 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart-controls/src/shared-controls/index.tsx +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart-controls/src/shared-controls/index.tsx @@ -54,7 +54,13 @@ import { SelectControlConfig, } from '../types'; import { ColumnOption } from '../components/ColumnOption'; -import { dndColumnsControl, dndEntity, dndGroupByControl, dndSeries } from './dndControls'; +import { + dnd_adhoc_filters, + dndColumnsControl, + dndEntity, + dndGroupByControl, + dndSeries, +} from './dndControls'; const categoricalSchemeRegistry = getCategoricalSchemeRegistry(); const sequentialSchemeRegistry = getSequentialSchemeRegistry(); @@ -510,7 +516,7 @@ const sharedControls = { size, y_axis_format, x_axis_time_format, - adhoc_filters, + adhoc_filters: enableExploreDnd ? dnd_adhoc_filters : adhoc_filters, color_scheme, label_colors, }; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart-controls/src/types.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart-controls/src/types.ts index 9fa295c43256..0134c15eb6a8 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart-controls/src/types.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart-controls/src/types.ts @@ -140,6 +140,7 @@ export type InternalControlType = | 'AdhocFilterControl' | 'FilterBoxItemControl' | 'DndColumnSelectControl' + | 'DndFilterSelect' | keyof SharedControlComponents; // expanded in `expandControlConfig` // eslint-disable-next-line @typescript-eslint/no-explicit-any