Skip to content

Commit

Permalink
feat: standardized form_data (#20010)
Browse files Browse the repository at this point in the history
  • Loading branch information
zhaoyongjie committed Jun 5, 2022
1 parent b08e21e commit dd4b581
Show file tree
Hide file tree
Showing 11 changed files with 554 additions and 15 deletions.
17 changes: 17 additions & 0 deletions superset-frontend/packages/superset-ui-chart-controls/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ import type {
JsonValue,
Metric,
QueryFormData,
QueryFormMetric,
QueryFormColumn,
} from '@superset-ui/core';
import { sharedControls } from './shared-controls';
import sharedControlComponents from './shared-controls/components';
Expand Down Expand Up @@ -340,11 +342,26 @@ export interface ControlPanelSectionConfig {
controlSetRows: ControlSetRow[];
}

export interface StandardizedState {
metrics: QueryFormMetric[];
columns: QueryFormColumn[];
}

export interface StandardizedFormDataInterface {
standardizedState: StandardizedState;
memorizedFormData: Map<string, QueryFormData>;
}

export interface ControlPanelConfig {
controlPanelSections: (ControlPanelSectionConfig | null)[];
controlOverrides?: ControlOverrides;
sectionOverrides?: SectionOverrides;
onInit?: (state: ControlStateMapping) => void;
denormalizeFormData?: (
formData: QueryFormData & {
standardizedFormData: StandardizedFormDataInterface;
},
) => QueryFormData;
}

export type ControlOverrides = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,4 +96,8 @@ export default {
label: t('Number format'),
},
},
denormalizeFormData: formData => ({
...formData,
metric: formData.standardizedFormData.standardizedState.metrics[0],
}),
} as ControlPanelConfig;
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,10 @@ const config: ControlPanelConfig = {
label: t('Number format'),
},
},
denormalizeFormData: formData => ({
...formData,
metric: formData.standardizedFormData.standardizedState.metrics[0],
}),
};

export default config;
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,11 @@ const config: ControlPanelConfig = {
default: 100,
},
},
denormalizeFormData: formData => ({
...formData,
metric: formData.standardizedFormData.standardizedState.metrics[0],
groupby: formData.standardizedFormData.standardizedState.columns,
}),
};

export default config;
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,10 @@ const config: ControlPanelConfig = {
default: rowLimit,
},
},
denormalizeFormData: formData => ({
...formData,
metrics: formData.standardizedFormData.standardizedState.metrics,
}),
};

export default config;
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
*/
import React from 'react';
import {
ensureIsArray,
QueryFormMetric,
smartDateFormatter,
t,
Expand Down Expand Up @@ -367,6 +368,17 @@ const config: ControlPanelConfig = {
],
},
],
denormalizeFormData: formData => {
const groupbyColumns =
formData.standardizedFormData.standardizedState.columns.filter(
col => !ensureIsArray(formData.groupbyRows).includes(col),
);
return {
...formData,
metrics: formData.standardizedFormData.standardizedState.metrics,
groupbyColumns,
};
},
};

export default config;
Original file line number Diff line number Diff line change
Expand Up @@ -531,6 +531,11 @@ const config: ControlPanelConfig = {
],
},
],
denormalizeFormData: formData => ({
...formData,
metrics: formData.standardizedFormData.standardizedState.metrics,
groupby: formData.standardizedFormData.standardizedState.columns,
}),
};

export default config;
1 change: 1 addition & 0 deletions superset-frontend/src/explore/controlUtils/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,4 @@ export * from './getControlConfig';
export * from './getControlState';
export * from './getFormDataFromControls';
export * from './getControlValuesCompatibleWithDatasource';
export * from './standardizedFormData';

0 comments on commit dd4b581

Please sign in to comment.