feat: implement new version of word cloud (#9962)
This commit is contained in:
parent
38a6bd79da
commit
fc92692f49
|
|
@ -23,7 +23,7 @@ import DashboardFilterTest from './filter';
|
|||
import DashboardLoadTest from './load';
|
||||
import DashboardSaveTest from './save';
|
||||
import DashboardTabsTest from './tabs';
|
||||
import DashboardUrlParamsTest from './url_params';
|
||||
import DashboardFormDataTest from './url_params';
|
||||
|
||||
describe('Dashboard', () => {
|
||||
DashboardControlsTest();
|
||||
|
|
@ -33,5 +33,5 @@ describe('Dashboard', () => {
|
|||
DashboardLoadTest();
|
||||
DashboardSaveTest();
|
||||
DashboardTabsTest();
|
||||
DashboardUrlParamsTest();
|
||||
DashboardFormDataTest();
|
||||
});
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
import { WORLD_HEALTH_DASHBOARD } from './dashboard.helper';
|
||||
|
||||
export default () =>
|
||||
describe('dashboard url params', () => {
|
||||
describe('dashboard form data', () => {
|
||||
const urlParams = { param1: '123', param2: 'abc' };
|
||||
let sliceIds = [];
|
||||
let dashboardId;
|
||||
|
|
@ -38,7 +38,7 @@ export default () =>
|
|||
});
|
||||
});
|
||||
|
||||
it('should apply url params to slice requests', () => {
|
||||
it('should apply url params and queryFields to slice requests', () => {
|
||||
const aliases = [];
|
||||
sliceIds.forEach(id => {
|
||||
const alias = `getJson_${id}`;
|
||||
|
|
@ -53,6 +53,7 @@ export default () =>
|
|||
requests.forEach(xhr => {
|
||||
const requestFormData = xhr.request.body;
|
||||
const requestParams = JSON.parse(requestFormData.get('form_data'));
|
||||
expect(requestParams).to.have.property('queryFields');
|
||||
expect(requestParams.url_params).deep.eq(urlParams);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -6603,9 +6603,9 @@
|
|||
}
|
||||
},
|
||||
"@superset-ui/control-utils": {
|
||||
"version": "0.13.12",
|
||||
"resolved": "https://registry.npmjs.org/@superset-ui/control-utils/-/control-utils-0.13.12.tgz",
|
||||
"integrity": "sha512-fxl9lWITCuvZjb2lTPE7X6WA01dM1BInnKktUForK7HP09K+oSaiInRdwZSVC5P9cH7xNlcbkPPh/AOC+Hk/Hg==",
|
||||
"version": "0.13.21",
|
||||
"resolved": "https://registry.npmjs.org/@superset-ui/control-utils/-/control-utils-0.13.21.tgz",
|
||||
"integrity": "sha512-KEDSkArY9/hTVW3wdmefbVxUdQNtOyjU3EJiJZ8zeGUZAn517MmEck9AWwKAL/UsOzccU5tq5HVwZ/eSSsmLqQ==",
|
||||
"requires": {
|
||||
"@types/react-bootstrap": "0.32.21",
|
||||
"lodash": "^4.17.15",
|
||||
|
|
@ -7010,15 +7010,16 @@
|
|||
}
|
||||
},
|
||||
"@superset-ui/plugin-chart-word-cloud": {
|
||||
"version": "0.13.9",
|
||||
"resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-word-cloud/-/plugin-chart-word-cloud-0.13.9.tgz",
|
||||
"integrity": "sha512-2tUfQgXtzDETI7Gw4wSBDs+FnlrOkaKF4cpVqX2G/IuCc+h8UxuMbLKIp4NAMgeJ8mDbeEL+lKgnl+RDobks9w==",
|
||||
"version": "0.13.24",
|
||||
"resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-word-cloud/-/plugin-chart-word-cloud-0.13.24.tgz",
|
||||
"integrity": "sha512-EzOFoWMg+fDep/r6rBYMXuHmbceYf5pGQKhZQaY/flUR6F3iVS4NUb9+K9zowK4A9HWcLMN3oAHxFJP32p1Jjg==",
|
||||
"requires": {
|
||||
"@types/d3-cloud": "^1.2.1",
|
||||
"@types/d3-scale": "^2.0.2",
|
||||
"@types/react": "^16.3.0",
|
||||
"d3-cloud": "^1.2.5",
|
||||
"d3-scale": "^3.0.1",
|
||||
"emotion-theming": "^10.0.27",
|
||||
"encodable": "^0.3.3"
|
||||
},
|
||||
"dependencies": {
|
||||
|
|
@ -7178,9 +7179,9 @@
|
|||
}
|
||||
},
|
||||
"@superset-ui/query": {
|
||||
"version": "0.13.6",
|
||||
"resolved": "https://registry.npmjs.org/@superset-ui/query/-/query-0.13.6.tgz",
|
||||
"integrity": "sha512-wJvqXuzv9vJNxDPKNAaHzCCly7LF8UP9AQ1zdoA88QcfYJqCzNvbt3j8XSR4nABrvNVZHnsn67wQNG4HS/IPpQ=="
|
||||
"version": "0.13.21",
|
||||
"resolved": "https://registry.npmjs.org/@superset-ui/query/-/query-0.13.21.tgz",
|
||||
"integrity": "sha512-cD4o7ChFBS/9k2joYKdxqXBIyV2ZlrFVAmitNk1U4tAUE1zaipofNhZ2imV1Q3H8p8c3Fgk8QiqYOSbpyXiuQQ=="
|
||||
},
|
||||
"@superset-ui/style": {
|
||||
"version": "0.13.11",
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@
|
|||
"@superset-ui/chart-composition": "^0.13.5",
|
||||
"@superset-ui/color": "^0.13.3",
|
||||
"@superset-ui/connection": "^0.13.5",
|
||||
"@superset-ui/control-utils": "^0.13.12",
|
||||
"@superset-ui/control-utils": "^0.13.21",
|
||||
"@superset-ui/core": "^0.13.5",
|
||||
"@superset-ui/dimension": "^0.13.3",
|
||||
"@superset-ui/legacy-plugin-chart-calendar": "^0.13.6",
|
||||
|
|
@ -91,9 +91,9 @@
|
|||
"@superset-ui/legacy-preset-chart-deckgl": "^0.2.3",
|
||||
"@superset-ui/legacy-preset-chart-nvd3": "^0.13.23",
|
||||
"@superset-ui/number-format": "^0.13.3",
|
||||
"@superset-ui/plugin-chart-word-cloud": "^0.13.9",
|
||||
"@superset-ui/plugin-chart-word-cloud": "^0.13.24",
|
||||
"@superset-ui/preset-chart-xy": "^0.13.11",
|
||||
"@superset-ui/query": "^0.13.6",
|
||||
"@superset-ui/query": "^0.13.21",
|
||||
"@superset-ui/style": "^0.13.11",
|
||||
"@superset-ui/time-format": "^0.13.15",
|
||||
"@superset-ui/translation": "^0.13.3",
|
||||
|
|
|
|||
|
|
@ -109,7 +109,7 @@ describe('controlUtils', () => {
|
|||
name: 'all_columns',
|
||||
config: {
|
||||
type: 'SelectControl',
|
||||
controlGroup: 'columns',
|
||||
queryField: 'columns',
|
||||
multi: true,
|
||||
label: t('Columns'),
|
||||
default: [],
|
||||
|
|
@ -250,11 +250,11 @@ describe('controlUtils', () => {
|
|||
});
|
||||
});
|
||||
|
||||
describe('controlGroup', () => {
|
||||
describe('queryFields', () => {
|
||||
it('in formData', () => {
|
||||
const controlsState = getAllControlsState('table', 'table', {}, {});
|
||||
const formData = getFormDataFromControls(controlsState);
|
||||
expect(formData.controlGroups).toEqual({ all_columns: 'columns' });
|
||||
expect(formData.queryFields).toEqual({ all_columns: 'columns' });
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -68,13 +68,16 @@ describe('store', () => {
|
|||
});
|
||||
|
||||
it('removes out of scope, or deprecated keys', () => {
|
||||
const staleQueryFields = { staleKey: 'staleValue' };
|
||||
const inputFormData = {
|
||||
datasource: '11_table',
|
||||
viz_type: 'table',
|
||||
queryFields: staleQueryFields,
|
||||
this_should_no_be_here: true,
|
||||
};
|
||||
const outputFormData = applyDefaultFormData(inputFormData);
|
||||
expect(outputFormData.this_should_no_be_here).toBe(undefined);
|
||||
expect(outputFormData.queryFields).not.toBe(staleQueryFields);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -21,13 +21,12 @@ import { controls as SHARED_CONTROLS } from './controls';
|
|||
import * as SECTIONS from './controlPanels/sections';
|
||||
|
||||
export function getFormDataFromControls(controlsState) {
|
||||
const formData = {};
|
||||
formData.controlGroups = {};
|
||||
const formData = { queryFields: {} };
|
||||
Object.keys(controlsState).forEach(controlName => {
|
||||
const control = controlsState[controlName];
|
||||
formData[controlName] = control.value;
|
||||
if (control.hasOwnProperty('controlGroup')) {
|
||||
formData.controlGroups[controlName] = control.controlGroup;
|
||||
if (control.hasOwnProperty('queryField')) {
|
||||
formData.queryFields[controlName] = control.queryField;
|
||||
}
|
||||
});
|
||||
return formData;
|
||||
|
|
|
|||
|
|
@ -125,7 +125,7 @@ const timeColumnOption = {
|
|||
|
||||
const groupByControl = {
|
||||
type: 'SelectControl',
|
||||
controlGroup: 'groupby',
|
||||
queryField: 'groupby',
|
||||
multi: true,
|
||||
freeForm: true,
|
||||
label: t('Group by'),
|
||||
|
|
@ -157,7 +157,7 @@ const groupByControl = {
|
|||
|
||||
const metrics = {
|
||||
type: 'MetricsControl',
|
||||
controlGroup: 'metrics',
|
||||
queryField: 'metrics',
|
||||
multi: true,
|
||||
label: t('Metrics'),
|
||||
validators: [validateNonEmpty],
|
||||
|
|
|
|||
|
|
@ -67,16 +67,19 @@ export function applyDefaultFormData(inputFormData) {
|
|||
const controlsState = getAllControlsState(vizType, datasourceType, null, {
|
||||
...inputFormData,
|
||||
});
|
||||
const formData = {};
|
||||
const controlFormData = getFormDataFromControls(controlsState);
|
||||
|
||||
const formData = {};
|
||||
Object.keys(controlsState).forEach(controlName => {
|
||||
if (inputFormData[controlName] === undefined) {
|
||||
formData[controlName] = controlsState[controlName].value;
|
||||
formData[controlName] = controlFormData[controlName];
|
||||
} else {
|
||||
formData[controlName] = inputFormData[controlName];
|
||||
}
|
||||
});
|
||||
|
||||
// always use dynamically generated queryFields
|
||||
formData.queryFields = controlFormData.queryFields;
|
||||
return formData;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue