feat: apply standardized form data to tier 2 charts (#20530)

This commit is contained in:
Yongjie Zhao 2022-06-29 16:27:31 +08:00 committed by GitHub
parent 927d066f70
commit de524bc59f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 94 additions and 9 deletions

View File

@ -24,6 +24,7 @@ import {
formatSelectOptions,
sections,
dndEntity,
getStandardizedControls,
} from '@superset-ui/chart-controls';
const allColumns = {
@ -328,6 +329,10 @@ const config: ControlPanelConfig = {
),
},
},
formDataOverrides: formData => ({
...formData,
groupby: getStandardizedControls().popAllColumns(),
}),
};
export default config;

View File

@ -25,6 +25,7 @@ import {
D3_FORMAT_OPTIONS,
D3_TIME_FORMAT_OPTIONS,
formatSelectOptions,
getStandardizedControls,
sections,
} from '@superset-ui/chart-controls';
import OptionDescription from './OptionDescription';
@ -39,7 +40,8 @@ const config: ControlPanelConfig = {
['metrics'],
['adhoc_filters'],
['groupby'],
['limit', 'timeseries_limit_metric'],
['limit'],
['timeseries_limit_metric'],
['order_desc'],
[
{
@ -52,7 +54,7 @@ const config: ControlPanelConfig = {
},
},
],
['row_limit', null],
['row_limit'],
],
},
{
@ -383,6 +385,11 @@ const config: ControlPanelConfig = {
],
},
],
formDataOverrides: formData => ({
...formData,
groupby: getStandardizedControls().popAllColumns(),
metrics: getStandardizedControls().popAllMetrics(),
}),
};
export default config;

View File

@ -25,6 +25,7 @@ import {
D3_FORMAT_OPTIONS,
D3_TIME_FORMAT_OPTIONS,
sections,
getStandardizedControls,
} from '@superset-ui/chart-controls';
const config: ControlPanelConfig = {
@ -266,6 +267,11 @@ const config: ControlPanelConfig = {
],
},
],
formDataOverrides: formData => ({
...formData,
groupby: getStandardizedControls().popAllColumns(),
metrics: getStandardizedControls().popAllMetrics(),
}),
};
export default config;

View File

@ -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';
const config: ControlPanelConfig = {
controlPanelSections: [
@ -67,6 +71,11 @@ const config: ControlPanelConfig = {
controlSetRows: [['color_scheme']],
},
],
formDataOverrides: formData => ({
...formData,
groupby: getStandardizedControls().popAllColumns(),
metric: getStandardizedControls().shiftMetric(),
}),
};
export default config;

View File

@ -20,6 +20,7 @@ import { t } from '@superset-ui/core';
import {
ControlPanelConfig,
ControlPanelsContainerProps,
getStandardizedControls,
sections,
} from '@superset-ui/chart-controls';
@ -96,6 +97,12 @@ const config: ControlPanelConfig = {
description: t('This defines the level of the hierarchy'),
},
},
formDataOverrides: formData => ({
...formData,
groupby: getStandardizedControls().popAllColumns(),
metric: getStandardizedControls().shiftMetric(),
secondary_metric: getStandardizedControls().shiftMetric(),
}),
};
export default config;

View File

@ -155,7 +155,8 @@ const config: ControlPanelConfig = {
},
formDataOverrides: formData => ({
...formData,
metrics: getStandardizedControls().popAllMetrics(),
entity: getStandardizedControls().shiftColumn(),
metric: getStandardizedControls().shiftMetric(),
}),
};

View File

@ -133,6 +133,9 @@ const config: ControlPanelConfig = {
...formData,
series: getStandardizedControls().shiftColumn(),
entity: getStandardizedControls().shiftColumn(),
x: getStandardizedControls().shiftMetric(),
y: getStandardizedControls().shiftMetric(),
size: getStandardizedControls().shiftMetric(),
}),
};

View File

@ -17,7 +17,11 @@
* under the License.
*/
import { 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: [
@ -103,6 +107,11 @@ const config: ControlPanelConfig = {
default: 100,
},
},
formDataOverrides: formData => ({
...formData,
series: getStandardizedControls().shiftColumn(),
metric: getStandardizedControls().shiftMetric(),
}),
};
export default config;

View File

@ -68,6 +68,9 @@ describe('should collect control values and create SFD', () => {
metrics: ['m2'],
metric_2: 'm3',
size: 'm4',
x: 'm5',
y: 'm6',
secondary_metric: 'm7',
// columns
groupby: ['c1'],
columns: ['c2'],
@ -75,6 +78,7 @@ describe('should collect control values and create SFD', () => {
groupbyRows: ['c4'],
series: 'c5',
entity: 'c6',
series_columns: ['c7'],
};
const publicControlsFormData = {
// time section
@ -171,7 +175,15 @@ describe('should collect control values and create SFD', () => {
Object.entries(sharedKey).length,
);
const sfd = new StandardizedFormData(sourceMockFormData);
expect(sfd.serialize().controls.metrics).toEqual(['m1', 'm2', 'm3', 'm4']);
expect(sfd.serialize().controls.metrics).toEqual([
'm1',
'm2',
'm3',
'm4',
'm5',
'm6',
'm7',
]);
expect(sfd.serialize().controls.columns).toEqual([
'c1',
'c2',
@ -179,6 +191,7 @@ describe('should collect control values and create SFD', () => {
'c4',
'c5',
'c6',
'c7',
]);
});
@ -193,8 +206,24 @@ describe('should collect control values and create SFD', () => {
expect(formData).toHaveProperty(key);
expect(value).toEqual(publicControlsFormData[key]);
});
expect(formData.columns).toEqual(['c1', 'c2', 'c3', 'c4', 'c5', 'c6']);
expect(formData.metrics).toEqual(['m1', 'm2', 'm3', 'm4']);
expect(formData.columns).toEqual([
'c1',
'c2',
'c3',
'c4',
'c5',
'c6',
'c7',
]);
expect(formData.metrics).toEqual([
'm1',
'm2',
'm3',
'm4',
'm5',
'm6',
'm7',
]);
});
test('should inherit standardizedFormData and memorizedFormData is LIFO', () => {

View File

@ -38,6 +38,9 @@ export const sharedMetricsKey = [
'metrics', // via sharedControls, array
'metric_2', // via sharedControls, scalar
'size', // via sharedControls, scalar
'x', // via sharedControls, scalar
'y', // via sharedControls, scalar
'secondary_metric', // via sharedControls, scalar
];
export const sharedColumnsKey = [
'groupby', // via sharedControls, array
@ -46,6 +49,7 @@ export const sharedColumnsKey = [
'groupbyRows', // via pivot table v2, array
'entity', // via sharedControls, scalar
'series', // via sharedControls, scalar
'series_columns', // via sharedControls, array
];
export const publicControls = [

View File

@ -17,7 +17,7 @@
* under the License.
*/
import { t, validateNonEmpty } from '@superset-ui/core';
import { sections } from '@superset-ui/chart-controls';
import { getStandardizedControls, sections } from '@superset-ui/chart-controls';
export default {
controlPanelSections: [
@ -65,4 +65,9 @@ export default {
multiple: false,
},
},
formDataOverrides: formData => ({
...formData,
groupby: getStandardizedControls().popAllColumns(),
metrics: getStandardizedControls().popAllMetrics(),
}),
};