From 8cd62a5e972ddbe1b3ac1b872cd8cda446a7f9dd Mon Sep 17 00:00:00 2001 From: Kamil Gabryjelski Date: Thu, 23 Jun 2022 17:11:52 +0200 Subject: [PATCH 01/10] feat(explore): Denormalize form data in Calendar Heatmap --- .../plugins/legacy-plugin-chart-calendar/src/controlPanel.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts b/superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts index 2787687b06159..73a0ddca7813d 100644 --- a/superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts +++ b/superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts @@ -191,6 +191,10 @@ const config: ControlPanelConfig = { label: t('Number Format'), }, }, + denormalizeFormData: formData => ({ + ...formData, + metrics: formData.standardizedFormData.standardizedState.metrics, + }), }; export default config; From 33df1ca9e8aae3d9ebc0b9113e2a2acf62c93b57 Mon Sep 17 00:00:00 2001 From: Kamil Gabryjelski Date: Thu, 23 Jun 2022 17:12:25 +0200 Subject: [PATCH 02/10] feat(explore): Denormalize form data in Bubble --- .../src/Bubble/controlPanel.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bubble/controlPanel.ts b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bubble/controlPanel.ts index 33a4ea6bf02cf..0d928a6f9cce7 100644 --- a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bubble/controlPanel.ts +++ b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bubble/controlPanel.ts @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -import { t } from '@superset-ui/core'; +import { ensureIsArray, t } from '@superset-ui/core'; import { ControlPanelConfig, formatSelectOptions, @@ -128,6 +128,16 @@ const config: ControlPanelConfig = { renderTrigger: false, }, }, + denormalizeFormData: formData => { + const entity = + formData.standardizedFormData.standardizedState.columns.filter( + col => !ensureIsArray(formData.series).includes(col), + )[0]; + return { + ...formData, + entity, + }; + }, }; export default config; From 42bfaa048ca5478c0db10677f0b512e36b1de1ab Mon Sep 17 00:00:00 2001 From: Kamil Gabryjelski Date: Thu, 23 Jun 2022 17:12:40 +0200 Subject: [PATCH 03/10] feat(explore): Denormalize form data in Chord --- .../legacy-plugin-chart-chord/src/controlPanel.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/superset-frontend/plugins/legacy-plugin-chart-chord/src/controlPanel.ts b/superset-frontend/plugins/legacy-plugin-chart-chord/src/controlPanel.ts index c2559a7b0d57f..a18b06166deec 100644 --- a/superset-frontend/plugins/legacy-plugin-chart-chord/src/controlPanel.ts +++ b/superset-frontend/plugins/legacy-plugin-chart-chord/src/controlPanel.ts @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -import { t, validateNonEmpty } from '@superset-ui/core'; +import { ensureIsArray, t, validateNonEmpty } from '@superset-ui/core'; import { ControlPanelConfig, sections } from '@superset-ui/chart-controls'; const config: ControlPanelConfig = { @@ -69,6 +69,17 @@ const config: ControlPanelConfig = { description: t('Choose a target'), }, }, + denormalizeFormData: formData => { + const groupby = + formData.standardizedFormData.standardizedState.columns.filter( + col => !ensureIsArray(formData.columns).includes(col), + ); + return { + ...formData, + metric: formData.standardizedFormData.standardizedState.metrics[0], + groupby, + }; + }, }; export default config; From 174623dcff4c630408643bfd1b4086e5c4eadc00 Mon Sep 17 00:00:00 2001 From: Kamil Gabryjelski Date: Thu, 23 Jun 2022 17:12:57 +0200 Subject: [PATCH 04/10] Dimensions -> Dimension for single selection --- .../src/shared-controls/dndControls.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx b/superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx index 43b0059046ba2..63aa64bf461ca 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx @@ -72,7 +72,7 @@ export const dndColumnsControl: typeof dndGroupByControl = { export const dndSeries: typeof dndGroupByControl = { ...dndGroupByControl, - label: t('Dimensions'), + label: t('Dimension'), multi: false, default: null, description: t( From 8bc2e7d7c513042edb62c0b8e5eb9740263fe7bc Mon Sep 17 00:00:00 2001 From: Kamil Gabryjelski Date: Fri, 24 Jun 2022 12:28:23 +0200 Subject: [PATCH 05/10] feat(explore): Denormalize form data in Country Map --- .../legacy-plugin-chart-country-map/src/controlPanel.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/superset-frontend/plugins/legacy-plugin-chart-country-map/src/controlPanel.ts b/superset-frontend/plugins/legacy-plugin-chart-country-map/src/controlPanel.ts index f1aad661eeaea..b80e180c0d297 100644 --- a/superset-frontend/plugins/legacy-plugin-chart-country-map/src/controlPanel.ts +++ b/superset-frontend/plugins/legacy-plugin-chart-country-map/src/controlPanel.ts @@ -88,6 +88,11 @@ const config: ControlPanelConfig = { renderTrigger: false, }, }, + denormalizeFormData: formData => ({ + ...formData, + metric: formData.standardizedFormData.standardizedState.metrics[0], + entity: formData.standardizedFormData.standardizedState.columns[0], + }), }; export default config; From cf96beb537424a7b9282952d480023acb7ec4c3b Mon Sep 17 00:00:00 2001 From: Kamil Gabryjelski Date: Fri, 24 Jun 2022 12:28:32 +0200 Subject: [PATCH 06/10] feat(explore): Denormalize form data in Heatmap --- .../plugins/legacy-plugin-chart-heatmap/src/controlPanel.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.ts b/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.ts index ab3eb2a59fa11..057cbca4cf421 100644 --- a/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.ts +++ b/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.ts @@ -329,6 +329,10 @@ const config: ControlPanelConfig = { label: t('Value Format'), }, }, + denormalizeFormData: formData => ({ + ...formData, + metric: formData.standardizedFormData.standardizedState.metrics[0], + }), }; export default config; From 8d2173d55d1e162d2f802023c68011e5c51c6034 Mon Sep 17 00:00:00 2001 From: Kamil Gabryjelski Date: Fri, 24 Jun 2022 12:28:42 +0200 Subject: [PATCH 07/10] feat(explore): Denormalize form data in Histogram --- .../plugins/legacy-plugin-chart-histogram/src/controlPanel.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/superset-frontend/plugins/legacy-plugin-chart-histogram/src/controlPanel.ts b/superset-frontend/plugins/legacy-plugin-chart-histogram/src/controlPanel.ts index 26cec94749e6e..a75f8b31bb4dc 100644 --- a/superset-frontend/plugins/legacy-plugin-chart-histogram/src/controlPanel.ts +++ b/superset-frontend/plugins/legacy-plugin-chart-histogram/src/controlPanel.ts @@ -160,5 +160,9 @@ const config: ControlPanelConfig = { ], }, ], + denormalizeFormData: formData => ({ + ...formData, + groupby: formData.standardizedFormData.standardizedState.columns, + }), }; export default config; From 5306c4554d73487aa898b9546b80af0433eabd16 Mon Sep 17 00:00:00 2001 From: Kamil Gabryjelski Date: Fri, 24 Jun 2022 12:29:01 +0200 Subject: [PATCH 08/10] feat(explore): Denormalize form data in Handlebars --- .../plugin-chart-handlebars/src/plugin/controlPanel.tsx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controlPanel.tsx b/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controlPanel.tsx index da0ba7d589b12..75e67b841ff56 100644 --- a/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controlPanel.tsx +++ b/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controlPanel.tsx @@ -78,6 +78,11 @@ const config: ControlPanelConfig = { ], }, ], + denormalizeFormData: formData => ({ + ...formData, + metrics: formData.standardizedFormData.standardizedState.metrics, + groupby: formData.standardizedFormData.standardizedState.columns, + }), }; export default config; From 1a33398a3daf2cf7549a2f0ea5a7c8e900ead676 Mon Sep 17 00:00:00 2001 From: Kamil Gabryjelski Date: Fri, 24 Jun 2022 12:29:34 +0200 Subject: [PATCH 09/10] feat(explore): Denormalize form data in Percent Change --- .../legacy-preset-chart-nvd3/src/Compare/controlPanel.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Compare/controlPanel.ts b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Compare/controlPanel.ts index db4a84fd476e3..702ab16d9214e 100644 --- a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Compare/controlPanel.ts +++ b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Compare/controlPanel.ts @@ -62,6 +62,11 @@ const config: ControlPanelConfig = { timeSeriesSection[1], sections.annotations, ], + denormalizeFormData: formData => ({ + ...formData, + metrics: formData.standardizedFormData.standardizedState.metrics, + groupby: formData.standardizedFormData.standardizedState.columns, + }), }; export default config; From db6f5c052c96f645bb1a80e73b12f25929ad5e92 Mon Sep 17 00:00:00 2001 From: Kamil Gabryjelski Date: Tue, 28 Jun 2022 17:05:21 +0200 Subject: [PATCH 10/10] Use new standardized form data interface --- .../src/utils/getStandardizedControls.ts | 4 ++++ .../src/controlPanel.ts | 5 +++-- .../src/controlPanel.ts | 17 ++++++++++------- .../src/controlPanel.ts | 7 ++++--- .../src/controlPanel.ts | 5 +++-- .../src/controlPanel.ts | 5 +++-- .../src/Bubble/controlPanel.ts | 18 +++++++----------- .../src/Compare/controlPanel.ts | 12 ++++++++---- .../src/plugin/controlPanel.tsx | 7 ++++--- 9 files changed, 46 insertions(+), 34 deletions(-) diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/utils/getStandardizedControls.ts b/superset-frontend/packages/superset-ui-chart-controls/src/utils/getStandardizedControls.ts index 650e063d60bb4..42ff874c588d4 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/src/utils/getStandardizedControls.ts +++ b/superset-frontend/packages/superset-ui-chart-controls/src/utils/getStandardizedControls.ts @@ -43,6 +43,10 @@ class StandardizedControlsManager { return this.controls.metrics.shift(); } + shiftColumn() { + return this.controls.columns.shift(); + } + popAllMetrics() { return this.controls.metrics.splice(0, this.controls.metrics.length); } diff --git a/superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts b/superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts index 73a0ddca7813d..fe2c1bd1fc564 100644 --- a/superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts +++ b/superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts @@ -22,6 +22,7 @@ import { D3_FORMAT_DOCS, D3_TIME_FORMAT_OPTIONS, formatSelectOptions, + getStandardizedControls, sections, } from '@superset-ui/chart-controls'; @@ -191,9 +192,9 @@ const config: ControlPanelConfig = { label: t('Number Format'), }, }, - denormalizeFormData: formData => ({ + formDataOverrides: formData => ({ ...formData, - metrics: formData.standardizedFormData.standardizedState.metrics, + metrics: getStandardizedControls().popAllMetrics(), }), }; diff --git a/superset-frontend/plugins/legacy-plugin-chart-chord/src/controlPanel.ts b/superset-frontend/plugins/legacy-plugin-chart-chord/src/controlPanel.ts index a18b06166deec..5a58b567a7a32 100644 --- a/superset-frontend/plugins/legacy-plugin-chart-chord/src/controlPanel.ts +++ b/superset-frontend/plugins/legacy-plugin-chart-chord/src/controlPanel.ts @@ -17,7 +17,11 @@ * under the License. */ import { ensureIsArray, t, validateNonEmpty } from '@superset-ui/core'; -import { ControlPanelConfig, sections } from '@superset-ui/chart-controls'; +import { + ControlPanelConfig, + getStandardizedControls, + sections, +} from '@superset-ui/chart-controls'; const config: ControlPanelConfig = { controlPanelSections: [ @@ -69,15 +73,14 @@ const config: ControlPanelConfig = { description: t('Choose a target'), }, }, - denormalizeFormData: formData => { - const groupby = - formData.standardizedFormData.standardizedState.columns.filter( - col => !ensureIsArray(formData.columns).includes(col), - ); + formDataOverrides: formData => { + const groupby = getStandardizedControls() + .popAllColumns() + .filter(col => !ensureIsArray(formData.columns).includes(col)); return { ...formData, - metric: formData.standardizedFormData.standardizedState.metrics[0], groupby, + metric: getStandardizedControls().shiftMetric(), }; }, }; diff --git a/superset-frontend/plugins/legacy-plugin-chart-country-map/src/controlPanel.ts b/superset-frontend/plugins/legacy-plugin-chart-country-map/src/controlPanel.ts index b80e180c0d297..c6b26bd2b6850 100644 --- a/superset-frontend/plugins/legacy-plugin-chart-country-map/src/controlPanel.ts +++ b/superset-frontend/plugins/legacy-plugin-chart-country-map/src/controlPanel.ts @@ -22,6 +22,7 @@ import { D3_FORMAT_OPTIONS, D3_FORMAT_DOCS, sections, + getStandardizedControls, } from '@superset-ui/chart-controls'; import { countryOptions } from './countries'; @@ -88,10 +89,10 @@ const config: ControlPanelConfig = { renderTrigger: false, }, }, - denormalizeFormData: formData => ({ + formDataOverrides: formData => ({ ...formData, - metric: formData.standardizedFormData.standardizedState.metrics[0], - entity: formData.standardizedFormData.standardizedState.columns[0], + entity: getStandardizedControls().shiftColumn(), + metric: getStandardizedControls().shiftMetric(), }), }; diff --git a/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.ts b/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.ts index 057cbca4cf421..f4528d23b5429 100644 --- a/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.ts +++ b/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.ts @@ -30,6 +30,7 @@ import { formatSelectOptionsForRange, sections, dndEntity, + getStandardizedControls, } from '@superset-ui/chart-controls'; const sortAxisChoices = [ @@ -329,9 +330,9 @@ const config: ControlPanelConfig = { label: t('Value Format'), }, }, - denormalizeFormData: formData => ({ + formDataOverrides: formData => ({ ...formData, - metric: formData.standardizedFormData.standardizedState.metrics[0], + metric: getStandardizedControls().shiftMetric(), }), }; diff --git a/superset-frontend/plugins/legacy-plugin-chart-histogram/src/controlPanel.ts b/superset-frontend/plugins/legacy-plugin-chart-histogram/src/controlPanel.ts index a75f8b31bb4dc..6c5a13ce6a79e 100644 --- a/superset-frontend/plugins/legacy-plugin-chart-histogram/src/controlPanel.ts +++ b/superset-frontend/plugins/legacy-plugin-chart-histogram/src/controlPanel.ts @@ -29,6 +29,7 @@ import { formatSelectOptions, sections, dndColumnsControl, + getStandardizedControls, } from '@superset-ui/chart-controls'; const allColumns = { @@ -160,9 +161,9 @@ const config: ControlPanelConfig = { ], }, ], - denormalizeFormData: formData => ({ + formDataOverrides: formData => ({ ...formData, - groupby: formData.standardizedFormData.standardizedState.columns, + groupby: getStandardizedControls().popAllColumns(), }), }; export default config; diff --git a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bubble/controlPanel.ts b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bubble/controlPanel.ts index 0d928a6f9cce7..1bac94b5aff93 100644 --- a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bubble/controlPanel.ts +++ b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bubble/controlPanel.ts @@ -16,12 +16,13 @@ * specific language governing permissions and limitations * under the License. */ -import { ensureIsArray, t } from '@superset-ui/core'; +import { t } from '@superset-ui/core'; import { ControlPanelConfig, formatSelectOptions, D3_FORMAT_OPTIONS, sections, + getStandardizedControls, } from '@superset-ui/chart-controls'; import { showLegend, @@ -128,16 +129,11 @@ const config: ControlPanelConfig = { renderTrigger: false, }, }, - denormalizeFormData: formData => { - const entity = - formData.standardizedFormData.standardizedState.columns.filter( - col => !ensureIsArray(formData.series).includes(col), - )[0]; - return { - ...formData, - entity, - }; - }, + formDataOverrides: formData => ({ + ...formData, + series: getStandardizedControls().shiftColumn(), + entity: getStandardizedControls().shiftColumn(), + }), }; export default config; diff --git a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Compare/controlPanel.ts b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Compare/controlPanel.ts index 702ab16d9214e..fcae6dd397932 100644 --- a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Compare/controlPanel.ts +++ b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/Compare/controlPanel.ts @@ -17,7 +17,11 @@ * under the License. */ import { t } from '@superset-ui/core'; -import { ControlPanelConfig, sections } from '@superset-ui/chart-controls'; +import { + ControlPanelConfig, + getStandardizedControls, + sections, +} from '@superset-ui/chart-controls'; import { xAxisLabel, yAxisLabel, @@ -62,10 +66,10 @@ const config: ControlPanelConfig = { timeSeriesSection[1], sections.annotations, ], - denormalizeFormData: formData => ({ + formDataOverrides: formData => ({ ...formData, - metrics: formData.standardizedFormData.standardizedState.metrics, - groupby: formData.standardizedFormData.standardizedState.columns, + groupby: getStandardizedControls().popAllColumns(), + metrics: getStandardizedControls().popAllMetrics(), }), }; diff --git a/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controlPanel.tsx b/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controlPanel.tsx index 75e67b841ff56..288ec0972e87f 100644 --- a/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controlPanel.tsx +++ b/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controlPanel.tsx @@ -19,6 +19,7 @@ import { ControlPanelConfig, emitFilterControl, + getStandardizedControls, sections, } from '@superset-ui/chart-controls'; import { addLocaleData, t } from '@superset-ui/core'; @@ -78,10 +79,10 @@ const config: ControlPanelConfig = { ], }, ], - denormalizeFormData: formData => ({ + formDataOverrides: formData => ({ ...formData, - metrics: formData.standardizedFormData.standardizedState.metrics, - groupby: formData.standardizedFormData.standardizedState.columns, + groupby: getStandardizedControls().popAllColumns(), + metrics: getStandardizedControls().popAllMetrics(), }), };