You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by vi...@apache.org on 2020/06/02 16:29:22 UTC
[incubator-superset] branch master updated: feat: implement new
version of word cloud (#9962)
This is an automated email from the ASF dual-hosted git repository.
villebro pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git
The following commit(s) were added to refs/heads/master by this push:
new fc92692 feat: implement new version of word cloud (#9962)
fc92692 is described below
commit fc92692f491f6179d99118aeb7325977ce53cb59
Author: Ville Brofeldt <33...@users.noreply.github.com>
AuthorDate: Tue Jun 2 19:28:58 2020 +0300
feat: implement new version of word cloud (#9962)
---
.../cypress/integration/dashboard/index.test.js | 4 ++--
.../cypress/integration/dashboard/url_params.js | 5 +++--
superset-frontend/package-lock.json | 19 ++++++++++---------
superset-frontend/package.json | 6 +++---
.../spec/javascripts/explore/controlUtils_spec.jsx | 6 +++---
.../spec/javascripts/explore/store_spec.jsx | 3 +++
superset-frontend/src/explore/controlUtils.js | 7 +++----
superset-frontend/src/explore/controls.jsx | 4 ++--
superset-frontend/src/explore/store.js | 7 +++++--
9 files changed, 34 insertions(+), 27 deletions(-)
diff --git a/superset-frontend/cypress-base/cypress/integration/dashboard/index.test.js b/superset-frontend/cypress-base/cypress/integration/dashboard/index.test.js
index 5512307..b4ee364 100644
--- a/superset-frontend/cypress-base/cypress/integration/dashboard/index.test.js
+++ b/superset-frontend/cypress-base/cypress/integration/dashboard/index.test.js
@@ -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();
});
diff --git a/superset-frontend/cypress-base/cypress/integration/dashboard/url_params.js b/superset-frontend/cypress-base/cypress/integration/dashboard/url_params.js
index 54b74a6..84b1a82 100644
--- a/superset-frontend/cypress-base/cypress/integration/dashboard/url_params.js
+++ b/superset-frontend/cypress-base/cypress/integration/dashboard/url_params.js
@@ -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);
});
});
diff --git a/superset-frontend/package-lock.json b/superset-frontend/package-lock.json
index ce680a2..9376e08 100644
--- a/superset-frontend/package-lock.json
+++ b/superset-frontend/package-lock.json
@@ -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",
diff --git a/superset-frontend/package.json b/superset-frontend/package.json
index 1c16f56..d1c941b 100644
--- a/superset-frontend/package.json
+++ b/superset-frontend/package.json
@@ -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",
diff --git a/superset-frontend/spec/javascripts/explore/controlUtils_spec.jsx b/superset-frontend/spec/javascripts/explore/controlUtils_spec.jsx
index be5dfcc..00e252e 100644
--- a/superset-frontend/spec/javascripts/explore/controlUtils_spec.jsx
+++ b/superset-frontend/spec/javascripts/explore/controlUtils_spec.jsx
@@ -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' });
});
});
});
diff --git a/superset-frontend/spec/javascripts/explore/store_spec.jsx b/superset-frontend/spec/javascripts/explore/store_spec.jsx
index 5468ab5..dacdb7f 100644
--- a/superset-frontend/spec/javascripts/explore/store_spec.jsx
+++ b/superset-frontend/spec/javascripts/explore/store_spec.jsx
@@ -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);
});
});
});
diff --git a/superset-frontend/src/explore/controlUtils.js b/superset-frontend/src/explore/controlUtils.js
index 0dd2090..1158a2f 100644
--- a/superset-frontend/src/explore/controlUtils.js
+++ b/superset-frontend/src/explore/controlUtils.js
@@ -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;
diff --git a/superset-frontend/src/explore/controls.jsx b/superset-frontend/src/explore/controls.jsx
index acdc66b..ce7a01d 100644
--- a/superset-frontend/src/explore/controls.jsx
+++ b/superset-frontend/src/explore/controls.jsx
@@ -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],
diff --git a/superset-frontend/src/explore/store.js b/superset-frontend/src/explore/store.js
index 92cd4f7..1e54901 100644
--- a/superset-frontend/src/explore/store.js
+++ b/superset-frontend/src/explore/store.js
@@ -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;
}