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 <33317356+ville...@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; }