From 4d9144eca5fb5fcd3ca7f7adeab99b24b29ade83 Mon Sep 17 00:00:00 2001 From: "Michael S. Molina" <70410625+michael-s-molina@users.noreply.github.com> Date: Thu, 18 Jan 2024 11:59:08 -0300 Subject: [PATCH] refactor: Migrates legacy Sunburst charts to ECharts and removes legacy code (#26350) --- .../cypress/e2e/dashboard/utils.ts | 2 +- .../explore/visualizations/sunburst.test.js | 31 +- superset-frontend/package-lock.json | 27 - superset-frontend/package.json | 1 - .../test/chart/fixtures/formData.ts | 4 +- .../packages/superset-ui-demo/package.json | 1 - .../legacy-plugin-chart-sunburst/Stories.tsx | 63 --- .../legacy-plugin-chart-sunburst/data.ts | 32 -- .../ChartDataProviderStories.tsx | 3 - .../legacy-plugin-chart-sunburst/CHANGELOG.md | 35 -- .../legacy-plugin-chart-sunburst/README.md | 52 -- .../legacy-plugin-chart-sunburst/package.json | 37 -- .../src/ReactSunburst.jsx | 66 --- .../src/Sunburst.js | 531 ------------------ .../src/controlPanel.ts | 108 ---- .../src/images/example.png | Bin 141954 -> 0 bytes .../src/images/thumbnail.png | Bin 21011 -> 0 bytes .../src/images/thumbnailLarge.png | Bin 51408 -> 0 bytes .../legacy-plugin-chart-sunburst/src/index.js | 47 -- .../src/transformProps.js | 45 -- .../src/utils/wrapSvgText.js | 71 --- .../tsconfig.json | 25 - .../src/Sunburst/index.ts | 2 +- .../spec/fixtures/mockSliceEntities.js | 2 +- .../SliceHeaderControls.test.tsx | 8 +- .../VizTypeControl/VizTypeGallery.tsx | 1 - .../src/visualizations/presets/MainPreset.js | 2 - ...Vaccine_Candidates_per_Country__Stage.yaml | 10 +- .../examples/supported_charts_dashboard.py | 6 +- superset/examples/world_bank.py | 6 +- ...-41_a32e0c4d8646_migrate_sunburst_chart.py | 44 ++ superset/viz.py | 49 -- 32 files changed, 82 insertions(+), 1229 deletions(-) delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-plugin-chart-sunburst/Stories.tsx delete mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-plugin-chart-sunburst/data.ts delete mode 100644 superset-frontend/plugins/legacy-plugin-chart-sunburst/CHANGELOG.md delete mode 100644 superset-frontend/plugins/legacy-plugin-chart-sunburst/README.md delete mode 100644 superset-frontend/plugins/legacy-plugin-chart-sunburst/package.json delete mode 100644 superset-frontend/plugins/legacy-plugin-chart-sunburst/src/ReactSunburst.jsx delete mode 100644 superset-frontend/plugins/legacy-plugin-chart-sunburst/src/Sunburst.js delete mode 100644 superset-frontend/plugins/legacy-plugin-chart-sunburst/src/controlPanel.ts delete mode 100644 superset-frontend/plugins/legacy-plugin-chart-sunburst/src/images/example.png delete mode 100644 superset-frontend/plugins/legacy-plugin-chart-sunburst/src/images/thumbnail.png delete mode 100644 superset-frontend/plugins/legacy-plugin-chart-sunburst/src/images/thumbnailLarge.png delete mode 100644 superset-frontend/plugins/legacy-plugin-chart-sunburst/src/index.js delete mode 100644 superset-frontend/plugins/legacy-plugin-chart-sunburst/src/transformProps.js delete mode 100644 superset-frontend/plugins/legacy-plugin-chart-sunburst/src/utils/wrapSvgText.js delete mode 100644 superset-frontend/plugins/legacy-plugin-chart-sunburst/tsconfig.json create mode 100644 superset/migrations/versions/2024-01-18_14-41_a32e0c4d8646_migrate_sunburst_chart.py diff --git a/superset-frontend/cypress-base/cypress/e2e/dashboard/utils.ts b/superset-frontend/cypress-base/cypress/e2e/dashboard/utils.ts index c63df51d10..ebcd7d6d0d 100644 --- a/superset-frontend/cypress-base/cypress/e2e/dashboard/utils.ts +++ b/superset-frontend/cypress-base/cypress/e2e/dashboard/utils.ts @@ -25,7 +25,7 @@ export const WORLD_HEALTH_CHARTS = [ { name: 'Most Populated Countries', viz: 'table' }, { name: "World's Population", viz: 'big_number' }, { name: 'Growth Rate', viz: 'line' }, - { name: 'Rural Breakdown', viz: 'sunburst' }, + { name: 'Rural Breakdown', viz: 'sunburst_v2' }, { name: "World's Pop Growth", viz: 'area' }, { name: 'Life Expectancy VS Rural %', viz: 'bubble' }, { name: 'Treemap', viz: 'treemap_v2' }, diff --git a/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/sunburst.test.js b/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/sunburst.test.js index 03090db9c4..4d55d592c8 100644 --- a/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/sunburst.test.js +++ b/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/sunburst.test.js @@ -18,17 +18,17 @@ */ describe('Visualization > Sunburst', () => { beforeEach(() => { - cy.intercept('POST', '/superset/explore_json/**').as('getJson'); + cy.intercept('POST', '/api/v1/chart/data**').as('chartData'); }); const SUNBURST_FORM_DATA = { datasource: '2__table', - viz_type: 'sunburst', + viz_type: 'sunburst_v2', slice_id: 47, granularity_sqla: 'year', time_grain_sqla: 'P1D', time_range: 'No filter', - groupby: ['region'], + columns: ['region'], metric: 'sum__SP_POP_TOTL', adhoc_filters: [], row_limit: 50000, @@ -37,32 +37,35 @@ describe('Visualization > Sunburst', () => { function verify(formData) { cy.visitChartByParams(formData); - cy.verifySliceSuccess({ waitAlias: '@getJson', chartSelector: 'svg' }); + cy.verifySliceSuccess({ waitAlias: '@chartData' }); } - it('should work without secondary metric', () => { + // requires the ability to render charts using SVG only for tests + it.skip('should work without secondary metric', () => { verify(SUNBURST_FORM_DATA); - // There should be 7 visible arcs + 1 hidden - cy.get('.chart-container svg g#arcs path').should('have.length', 8); + cy.get('.chart-container svg g path').should('have.length', 7); }); - it('should work with secondary metric', () => { + // requires the ability to render charts using SVG only for tests + it.skip('should work with secondary metric', () => { verify({ ...SUNBURST_FORM_DATA, secondary_metric: 'sum__SP_RUR_TOTL', }); - cy.get('.chart-container svg g#arcs path').should('have.length', 8); + cy.get('.chart-container svg g path').should('have.length', 7); }); - it('should work with multiple groupbys', () => { + // requires the ability to render charts using SVG only for tests + it.skip('should work with multiple columns', () => { verify({ ...SUNBURST_FORM_DATA, - groupby: ['region', 'country_name'], + columns: ['region', 'country_name'], }); - cy.get('.chart-container svg g#arcs path').should('have.length', 117); + cy.get('.chart-container svg g path').should('have.length', 221); }); - it('should work with filter', () => { + // requires the ability to render charts using SVG only for tests + it.skip('should work with filter', () => { verify({ ...SUNBURST_FORM_DATA, adhoc_filters: [ @@ -77,7 +80,7 @@ describe('Visualization > Sunburst', () => { }, ], }); - cy.get('.chart-container svg g#arcs path').should('have.length', 3); + cy.get('.chart-container svg g path').should('have.length', 2); }); it('should allow type to search color schemes', () => { diff --git a/superset-frontend/package-lock.json b/superset-frontend/package-lock.json index 35f211effb..e4af285544 100644 --- a/superset-frontend/package-lock.json +++ b/superset-frontend/package-lock.json @@ -39,7 +39,6 @@ "@superset-ui/legacy-plugin-chart-rose": "file:./plugins/legacy-plugin-chart-rose", "@superset-ui/legacy-plugin-chart-sankey": "file:./plugins/legacy-plugin-chart-sankey", "@superset-ui/legacy-plugin-chart-sankey-loop": "file:./plugins/legacy-plugin-chart-sankey-loop", - "@superset-ui/legacy-plugin-chart-sunburst": "file:./plugins/legacy-plugin-chart-sunburst", "@superset-ui/legacy-plugin-chart-world-map": "file:./plugins/legacy-plugin-chart-world-map", "@superset-ui/legacy-preset-chart-deckgl": "file:./plugins/legacy-preset-chart-deckgl", "@superset-ui/legacy-preset-chart-nvd3": "file:./plugins/legacy-preset-chart-nvd3", @@ -18338,10 +18337,6 @@ "resolved": "plugins/legacy-plugin-chart-sankey-loop", "link": true }, - "node_modules/@superset-ui/legacy-plugin-chart-sunburst": { - "resolved": "plugins/legacy-plugin-chart-sunburst", - "link": true - }, "node_modules/@superset-ui/legacy-plugin-chart-world-map": { "resolved": "plugins/legacy-plugin-chart-world-map", "link": true @@ -62257,7 +62252,6 @@ "@superset-ui/legacy-plugin-chart-rose": "*", "@superset-ui/legacy-plugin-chart-sankey": "*", "@superset-ui/legacy-plugin-chart-sankey-loop": "*", - "@superset-ui/legacy-plugin-chart-sunburst": "*", "@superset-ui/legacy-plugin-chart-time-table": "*", "@superset-ui/legacy-plugin-chart-world-map": "*", "@superset-ui/legacy-preset-chart-deckgl": "*", @@ -63291,20 +63285,6 @@ "react": "^16.13.1" } }, - "plugins/legacy-plugin-chart-sunburst": { - "name": "@superset-ui/legacy-plugin-chart-sunburst", - "version": "0.18.25", - "license": "Apache-2.0", - "dependencies": { - "d3": "^3.5.17", - "prop-types": "^15.8.1" - }, - "peerDependencies": { - "@superset-ui/chart-controls": "*", - "@superset-ui/core": "*", - "react": "^16.13.1" - } - }, "plugins/legacy-plugin-chart-time-table": { "name": "@superset-ui/legacy-plugin-chart-time-table", "version": "0.0.1", @@ -78157,13 +78137,6 @@ "prop-types": "^15.8.1" } }, - "@superset-ui/legacy-plugin-chart-sunburst": { - "version": "file:plugins/legacy-plugin-chart-sunburst", - "requires": { - "d3": "^3.5.17", - "prop-types": "^15.8.1" - } - }, "@superset-ui/legacy-plugin-chart-world-map": { "version": "file:plugins/legacy-plugin-chart-world-map", "requires": { diff --git a/superset-frontend/package.json b/superset-frontend/package.json index 4aeb85c6e1..4cbff6e5e9 100644 --- a/superset-frontend/package.json +++ b/superset-frontend/package.json @@ -105,7 +105,6 @@ "@superset-ui/legacy-plugin-chart-rose": "file:./plugins/legacy-plugin-chart-rose", "@superset-ui/legacy-plugin-chart-sankey": "file:./plugins/legacy-plugin-chart-sankey", "@superset-ui/legacy-plugin-chart-sankey-loop": "file:./plugins/legacy-plugin-chart-sankey-loop", - "@superset-ui/legacy-plugin-chart-sunburst": "file:./plugins/legacy-plugin-chart-sunburst", "@superset-ui/legacy-plugin-chart-world-map": "file:./plugins/legacy-plugin-chart-world-map", "@superset-ui/legacy-preset-chart-deckgl": "file:./plugins/legacy-preset-chart-deckgl", "@superset-ui/legacy-preset-chart-nvd3": "file:./plugins/legacy-preset-chart-nvd3", diff --git a/superset-frontend/packages/superset-ui-core/test/chart/fixtures/formData.ts b/superset-frontend/packages/superset-ui-core/test/chart/fixtures/formData.ts index 9d926f4613..88a78c6017 100644 --- a/superset-frontend/packages/superset-ui-core/test/chart/fixtures/formData.ts +++ b/superset-frontend/packages/superset-ui-core/test/chart/fixtures/formData.ts @@ -56,13 +56,13 @@ export const wordCloudFormData = { export const sunburstFormData = { datasource: '2__table', - viz_type: 'sunburst', + viz_type: 'sunburst_v2', slice_id: 47, url_params: {}, granularity_sqla: 'year', time_grain_sqla: 'P1D', time_range: '2011-01-01 : 2011-01-01', - groupby: ['region', 'country_name'], + columns: ['region', 'country_name'], metric: 'sum__SP_POP_TOTL', secondary_metric: 'sum__SP_RUR_TOTL', adhoc_filters: [], diff --git a/superset-frontend/packages/superset-ui-demo/package.json b/superset-frontend/packages/superset-ui-demo/package.json index 883165a532..7c04c590a3 100644 --- a/superset-frontend/packages/superset-ui-demo/package.json +++ b/superset-frontend/packages/superset-ui-demo/package.json @@ -80,7 +80,6 @@ "@superset-ui/legacy-plugin-chart-rose": "*", "@superset-ui/legacy-plugin-chart-sankey": "*", "@superset-ui/legacy-plugin-chart-sankey-loop": "*", - "@superset-ui/legacy-plugin-chart-sunburst": "*", "@superset-ui/legacy-plugin-chart-time-table": "*", "@superset-ui/legacy-plugin-chart-world-map": "*", "@superset-ui/legacy-preset-chart-deckgl": "*", diff --git a/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-plugin-chart-sunburst/Stories.tsx b/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-plugin-chart-sunburst/Stories.tsx deleted file mode 100644 index 35b6388be7..0000000000 --- a/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-plugin-chart-sunburst/Stories.tsx +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* eslint-disable no-magic-numbers */ -import React from 'react'; -import { SuperChart } from '@superset-ui/core'; -import SunburstChartPlugin from '@superset-ui/legacy-plugin-chart-sunburst'; -import ResizableChartDemo from '../../../shared/components/ResizableChartDemo'; -import data from './data'; - -new SunburstChartPlugin().configure({ key: 'sunburst' }).register(); - -export default { - title: 'Legacy Chart Plugins/legacy-plugin-chart-sunburst', -}; - -export const basic = () => ( - -); - -export const resizable = () => ( - - {({ width, height }) => ( - - )} - -); diff --git a/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-plugin-chart-sunburst/data.ts b/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-plugin-chart-sunburst/data.ts deleted file mode 100644 index 69df74de4d..0000000000 --- a/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-plugin-chart-sunburst/data.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* eslint-disable sort-keys, no-magic-numbers */ -export default [ - ['East Asia & Pacific', 'China', 1344130000.0, 664363135.0], - ['South Asia', 'India', 1247446011.0, 857294797.0], - ['North America', 'United States', 311721632.0, 59414143.0], - ['East Asia & Pacific', 'Indonesia', 244808254.0, 120661092.0], - ['Latin America & Caribbean', 'Brazil', 200517584.0, 30833589.0], - ['South Asia', 'Pakistan', 173669648.0, 109399721.0], - ['Sub-Saharan Africa', 'Nigeria', 163770669.0, 91118725.0], - ['South Asia', 'Bangladesh', 153405612.0, 105504710.0], - ['Europe & Central Asia', 'Russian Federation', 142960868.0, 37552961.0], - ['East Asia & Pacific', 'Japan', 127817277.0, 11186568.0], -]; diff --git a/superset-frontend/packages/superset-ui-demo/storybook/stories/superset-ui-chart/ChartDataProviderStories.tsx b/superset-frontend/packages/superset-ui-demo/storybook/stories/superset-ui-chart/ChartDataProviderStories.tsx index ddf21df792..1abc9ee65c 100644 --- a/superset-frontend/packages/superset-ui-demo/storybook/stories/superset-ui-chart/ChartDataProviderStories.tsx +++ b/superset-frontend/packages/superset-ui-demo/storybook/stories/superset-ui-chart/ChartDataProviderStories.tsx @@ -27,7 +27,6 @@ import { } from '@superset-ui/core'; import { BigNumberChartPlugin } from '@superset-ui/plugin-chart-echarts'; import LegacySankeyPlugin from '@superset-ui/legacy-plugin-chart-sankey'; -import LegacySunburstPlugin from '@superset-ui/legacy-plugin-chart-sunburst'; import { WordCloudChartPlugin } from '@superset-ui/plugin-chart-word-cloud'; import { @@ -50,8 +49,6 @@ new BigNumberChartPlugin().configure({ key: BIG_NUMBER }).register(); // eslint-disable-next-line new LegacySankeyPlugin().configure({ key: SANKEY }).register(); // eslint-disable-next-line -new LegacySunburstPlugin().configure({ key: SUNBURST }).register(); -// eslint-disable-next-line new WordCloudChartPlugin().configure({ key: WORD_CLOUD }).register(); const VIS_TYPES = [BIG_NUMBER, SANKEY, SUNBURST, WORD_CLOUD, WORD_CLOUD_LEGACY]; diff --git a/superset-frontend/plugins/legacy-plugin-chart-sunburst/CHANGELOG.md b/superset-frontend/plugins/legacy-plugin-chart-sunburst/CHANGELOG.md deleted file mode 100644 index 01a75d202c..0000000000 --- a/superset-frontend/plugins/legacy-plugin-chart-sunburst/CHANGELOG.md +++ /dev/null @@ -1,35 +0,0 @@ - - -# Change Log - -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. - -# [0.18.0](https://github.com/apache-superset/superset-ui/compare/v0.17.87...v0.18.0) (2021-08-30) - -**Note:** Version bump only for package @superset-ui/legacy-plugin-chart-sunburst - - - - - -## [0.17.61](https://github.com/apache-superset/superset-ui/compare/v0.17.60...v0.17.61) (2021-07-02) - -**Note:** Version bump only for package @superset-ui/legacy-plugin-chart-sunburst diff --git a/superset-frontend/plugins/legacy-plugin-chart-sunburst/README.md b/superset-frontend/plugins/legacy-plugin-chart-sunburst/README.md deleted file mode 100644 index 20bfb8a483..0000000000 --- a/superset-frontend/plugins/legacy-plugin-chart-sunburst/README.md +++ /dev/null @@ -1,52 +0,0 @@ - - -## @superset-ui/legacy-plugin-chart-sunburst - -[![Version](https://img.shields.io/npm/v/@superset-ui/legacy-plugin-chart-sunburst.svg?style=flat-square)](https://www.npmjs.com/package/@superset-ui/legacy-plugin-chart-sunburst) -[![David (path)](https://img.shields.io/david/apache-superset/superset-ui-plugins.svg?path=packages%2Fsuperset-ui-legacy-plugin-chart-sunburst&style=flat-square)](https://david-dm.org/apache-superset/superset-ui-plugins?path=packages/superset-ui-legacy-plugin-chart-sunburst) - -This plugin provides Sunburst for Superset. - -### Usage - -Configure `key`, which can be any `string`, and register the plugin. This `key` will be used to -lookup this chart throughout the app. - -```js -import SunburstChartPlugin from '@superset-ui/legacy-plugin-chart-sunburst'; - -new SunburstChartPlugin().configure({ key: 'sunburst' }).register(); -``` - -Then use it via `SuperChart`. See -[storybook](https://apache-superset.github.io/superset-ui-plugins/?selectedKind=plugin-chart-sunburst) -for more details. - -```js - -``` diff --git a/superset-frontend/plugins/legacy-plugin-chart-sunburst/package.json b/superset-frontend/plugins/legacy-plugin-chart-sunburst/package.json deleted file mode 100644 index fd2a5405a3..0000000000 --- a/superset-frontend/plugins/legacy-plugin-chart-sunburst/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "@superset-ui/legacy-plugin-chart-sunburst", - "version": "0.18.25", - "description": "Superset Legacy Chart - Sunburst", - "keywords": [ - "superset" - ], - "homepage": "https://github.com/apache/superset/tree/master/superset-frontend/plugins/legacy-plugin-chart-sunburst#readme", - "bugs": { - "url": "https://github.com/apache/superset/issues" - }, - "repository": { - "type": "git", - "url": "https://github.com/apache/superset.git", - "directory": "superset-frontend/plugins/legacy-plugin-chart-sunburst" - }, - "license": "Apache-2.0", - "author": "Superset", - "main": "lib/index.js", - "module": "esm/index.js", - "files": [ - "esm", - "lib" - ], - "dependencies": { - "d3": "^3.5.17", - "prop-types": "^15.8.1" - }, - "peerDependencies": { - "@superset-ui/chart-controls": "*", - "@superset-ui/core": "*", - "react": "^16.13.1" - }, - "publishConfig": { - "access": "public" - } -} diff --git a/superset-frontend/plugins/legacy-plugin-chart-sunburst/src/ReactSunburst.jsx b/superset-frontend/plugins/legacy-plugin-chart-sunburst/src/ReactSunburst.jsx deleted file mode 100644 index 10e959285b..0000000000 --- a/superset-frontend/plugins/legacy-plugin-chart-sunburst/src/ReactSunburst.jsx +++ /dev/null @@ -1,66 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -import React from 'react'; -import { reactify, styled } from '@superset-ui/core'; -import Component from './Sunburst'; - -const ReactComponent = reactify(Component); - -const Sunburst = ({ className, ...otherProps }) => ( -
- -
-); - -export default styled(Sunburst)` - ${({ theme }) => ` - .superset-legacy-chart-sunburst text { - text-rendering: optimizeLegibility; - } - .superset-legacy-chart-sunburst path { - stroke: ${theme.colors.grayscale.light2}; - stroke-width: 0.5px; - } - .superset-legacy-chart-sunburst .center-label { - text-anchor: middle; - fill: ${theme.colors.grayscale.dark1}; - pointer-events: none; - } - .superset-legacy-chart-sunburst .path-abs-percent { - font-size: ${theme.typography.sizes.m}px; - font-weight: ${theme.typography.weights.bold}; - } - .superset-legacy-chart-sunburst .path-cond-percent { - font-size: ${theme.typography.sizes.s}px; - } - .superset-legacy-chart-sunburst .path-metrics { - color: ${theme.colors.grayscale.base}; - } - .superset-legacy-chart-sunburst .path-ratio { - color: ${theme.colors.grayscale.base}; - } - - .superset-legacy-chart-sunburst .breadcrumbs text { - font-weight: ${theme.typography.weights.bold}; - font-size: ${theme.typography.sizes.m}px; - text-anchor: middle; - fill: ${theme.colors.grayscale.dark1}; - } - `} -`; diff --git a/superset-frontend/plugins/legacy-plugin-chart-sunburst/src/Sunburst.js b/superset-frontend/plugins/legacy-plugin-chart-sunburst/src/Sunburst.js deleted file mode 100644 index 138788495c..0000000000 --- a/superset-frontend/plugins/legacy-plugin-chart-sunburst/src/Sunburst.js +++ /dev/null @@ -1,531 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* eslint-disable no-param-reassign, react/sort-prop-types */ -import d3 from 'd3'; -import PropTypes from 'prop-types'; -import { - getNumberFormatter, - NumberFormats, - CategoricalColorNamespace, - getSequentialSchemeRegistry, - t, -} from '@superset-ui/core'; -import wrapSvgText from './utils/wrapSvgText'; - -const propTypes = { - // Each row is an array of [hierarchy-lvl1, hierarchy-lvl2, metric1, metric2] - // hierarchy-lvls are string. metrics are number - data: PropTypes.arrayOf(PropTypes.array), - width: PropTypes.number, - height: PropTypes.number, - colorScheme: PropTypes.string, - linearColorScheme: PropTypes.string, - numberFormat: PropTypes.string, - metrics: PropTypes.arrayOf( - PropTypes.oneOfType([ - PropTypes.string, - PropTypes.object, // The metric object - ]), - ), -}; - -function metricLabel(metric) { - return typeof metric === 'string' || metric instanceof String - ? metric - : metric.label; -} - -// Given a node in a partition layout, return an array of all of its ancestor -// nodes, highest first, but excluding the root. -function getAncestors(node) { - const path = []; - let current = node; - while (current.parent) { - path.unshift(current); - current = current.parent; - } - - return path; -} - -function buildHierarchy(rows) { - const root = { - name: 'root', - children: [], - }; - - // each record [groupby1val, groupby2val, ( or 0)n, m1, m2] - rows.forEach(row => { - const m1 = Number(row[row.length - 2]); - const m2 = Number(row[row.length - 1]); - const levels = row.slice(0, -2); - if (Number.isNaN(m1)) { - // e.g. if this is a header row - return; - } - let currentNode = root; - for (let level = 0; level < levels.length; level += 1) { - const children = currentNode.children || []; - const node = levels[level]; - const nodeName = node ? node.toString() : t('N/A'); - // If the next node has the name '0', it will - const isLeafNode = level >= levels.length - 1 || levels[level + 1] === 0; - let childNode; - - if (!isLeafNode) { - childNode = children.find( - child => child.name === nodeName && child.level === level, - ); - - if (!childNode) { - childNode = { - name: nodeName, - children: [], - level, - }; - children.push(childNode); - } - currentNode = childNode; - } else if (nodeName !== 0) { - // Reached the end of the sequence; create a leaf node. - childNode = { - name: nodeName, - m1, - m2, - }; - children.push(childNode); - } - } - }); - - function recurse(node) { - if (node.children) { - let sums; - let m1 = 0; - let m2 = 0; - for (let i = 0; i < node.children.length; i += 1) { - sums = recurse(node.children[i]); - m1 += sums[0]; - m2 += sums[1]; - } - node.m1 = m1; - node.m2 = m2; - } - - return [node.m1, node.m2]; - } - - recurse(root); - - return root; -} - -function getResponsiveContainerClass(width) { - if (width > 500) { - return 'l'; - } - - if (width > 200 && width <= 500) { - return 'm'; - } - - return 's'; -} - -function getYOffset(width) { - if (width > 500) { - return ['0', '20', '40', '60']; - } - - if (width > 200 && width <= 500) { - return ['0', '15', '30', '45']; - } - - return ['0', '10', '20', '30']; -} - -// Modified from http://bl.ocks.org/kerryrodden/7090426 -function Sunburst(element, props) { - const container = d3.select(element); - const { - data, - width, - height, - colorScheme, - linearColorScheme, - metrics, - numberFormat, - sliceId, - } = props; - const responsiveClass = getResponsiveContainerClass(width); - const isSmallWidth = responsiveClass === 's'; - container.attr('class', `superset-legacy-chart-sunburst ${responsiveClass}`); - // vars with shared scope within this function - const margin = { top: 10, right: 5, bottom: 10, left: 5 }; - const containerWidth = width; - const containerHeight = height; - const breadcrumbHeight = containerHeight * 0.085; - const visWidth = containerWidth - margin.left - margin.right; - const visHeight = - containerHeight - margin.top - margin.bottom - breadcrumbHeight; - const radius = Math.min(visWidth, visHeight) / 2; - - let colorByCategory = true; // color by category if primary/secondary metrics match - let maxBreadcrumbs; - let breadcrumbDims; // set based on data - let totalSize; // total size of all segments; set after loading the data. - let breadcrumbs; - let vis; - let arcs; - let gMiddleText; // dom handles - - const categoricalColorScale = CategoricalColorNamespace.getScale(colorScheme); - let linearColorScale; - - // Helper + path gen functions - const partition = d3.layout - .partition() - .size([2 * Math.PI, radius * radius]) - .value(d => d.m1); - - const arc = d3.svg - .arc() - .startAngle(d => d.x) - .endAngle(d => d.x + d.dx) - .innerRadius(d => Math.sqrt(d.y)) - .outerRadius(d => Math.sqrt(d.y + d.dy)); - - const formatNum = getNumberFormatter( - numberFormat || NumberFormats.SI_3_DIGIT, - ); - const formatPerc = getNumberFormatter(NumberFormats.PERCENT_3_POINT); - - container.select('svg').remove(); - - const svg = container - .append('svg:svg') - .attr('width', containerWidth) - .attr('height', containerHeight); - - function createBreadcrumbs(firstRowData) { - // -2 bc row contains 2x metrics, +extra for %label and buffer - maxBreadcrumbs = firstRowData.length - 2 + 1; - breadcrumbDims = { - width: visWidth / maxBreadcrumbs, - height: breadcrumbHeight * 0.8, // more margin - spacing: 3, - tipTailWidth: 10, - }; - - breadcrumbs = svg - .append('svg:g') - .attr('class', 'breadcrumbs') - .attr('transform', `translate(${margin.left},${margin.top})`); - - breadcrumbs.append('svg:text').attr('class', 'end-label'); - } - - // Generate a string that describes the points of a breadcrumb polygon. - function breadcrumbPoints(d, i) { - const points = []; - if (isSmallWidth) { - points.push('0,0'); - points.push(`${width},0`); - points.push(`${width},0`); - points.push(`${width},${breadcrumbDims.height}`); - points.push(`0,${breadcrumbDims.height}`); - if (i > 0) { - // Leftmost breadcrumb; don't include 6th vertex. - // points.push(`${breadcrumbDims.tipTailWidth},${breadcrumbDims.height / 2}`); - } - } else { - points.push('0,0'); - points.push(`${breadcrumbDims.width},0`); - points.push( - `${breadcrumbDims.width + breadcrumbDims.tipTailWidth},${ - breadcrumbDims.height / 2 - }`, - ); - points.push(`${breadcrumbDims.width},${breadcrumbDims.height}`); - points.push(`0,${breadcrumbDims.height}`); - if (i > 0) { - // Leftmost breadcrumb; don't include 6th vertex. - points.push( - `${breadcrumbDims.tipTailWidth},${breadcrumbDims.height / 2}`, - ); - } - } - - return points.join(' '); - } - - function updateBreadcrumbs(sequenceArray, percentageString) { - const breadcrumbWidth = isSmallWidth ? width : breadcrumbDims.width; - const g = breadcrumbs - .selectAll('g') - .data(sequenceArray, d => d.name + d.depth); - - // Add breadcrumb and label for entering nodes. - const entering = g.enter().append('svg:g'); - - entering - .append('svg:polygon') - .attr('points', breadcrumbPoints) - .style('fill', d => - colorByCategory - ? categoricalColorScale(d.name, sliceId) - : linearColorScale(d.m2 / d.m1), - ); - - entering - .append('svg:text') - .attr('x', (breadcrumbWidth + breadcrumbDims.tipTailWidth) / 2) - .attr('y', breadcrumbDims.height / 4) - .attr('dy', '0.35em') - .style('fill', d => { - // Make text white or black based on the lightness of the background - const col = d3.hsl( - colorByCategory - ? categoricalColorScale(d.name, sliceId) - : linearColorScale(d.m2 / d.m1), - ); - - return col.l < 0.5 ? 'white' : 'black'; - }) - .attr('class', 'step-label') - .text(d => d.name.replace(/_/g, ' ')) - .call(wrapSvgText, breadcrumbWidth, breadcrumbDims.height / 2); - - // Set position for entering and updating nodes. - g.attr('transform', (d, i) => { - if (isSmallWidth) { - return `translate(0, ${ - i * (breadcrumbDims.height + breadcrumbDims.spacing) - })`; - } - return `translate(${ - i * (breadcrumbDims.width + breadcrumbDims.spacing) - }, 0)`; - }); - - // Remove exiting nodes. - g.exit().remove(); - - // Now move and update the percentage at the end. - breadcrumbs - .select('.end-label') - .attr('x', () => { - if (isSmallWidth) { - return (breadcrumbWidth + breadcrumbDims.tipTailWidth) / 2; - } - - return ( - (sequenceArray.length + 0.5) * - (breadcrumbDims.width + breadcrumbDims.spacing) - ); - }) - .attr('y', () => { - if (isSmallWidth) { - return (sequenceArray.length + 1) * breadcrumbDims.height; - } - - return breadcrumbDims.height / 2; - }) - .attr('dy', '0.35em') - .text(percentageString); - - // Make the breadcrumb trail visible, if it's hidden. - breadcrumbs.style('visibility', null); - } - - // Fade all but the current sequence, and show it in the breadcrumb trail. - function mouseenter(d) { - const sequenceArray = getAncestors(d); - const parentOfD = sequenceArray[sequenceArray.length - 2] || null; - - const absolutePercentage = (d.m1 / totalSize).toPrecision(3); - const conditionalPercentage = parentOfD - ? (d.m1 / parentOfD.m1).toPrecision(3) - : null; - - const absolutePercString = formatPerc(absolutePercentage); - const conditionalPercString = parentOfD - ? formatPerc(conditionalPercentage) - : ''; - - // 3 levels of text if inner-most level, 4 otherwise - const yOffsets = getYOffset(width); - let offsetIndex = 0; - - // If metrics match, assume we are coloring by category - const metricsMatch = Math.abs(d.m1 - d.m2) < 0.00001; - - gMiddleText.selectAll('*').remove(); - - offsetIndex += 1; - gMiddleText - .append('text') - .attr('class', 'path-abs-percent') - .attr('y', yOffsets[offsetIndex]) - // eslint-disable-next-line prefer-template - .text(absolutePercString + ' ' + t('of total')); - - const OF_PARENT_TEXT = t('of parent'); - - if (conditionalPercString) { - offsetIndex += 1; - gMiddleText - .append('text') - .attr('class', 'path-cond-percent') - .attr('y', yOffsets[offsetIndex]) - .text(`${conditionalPercString} ${OF_PARENT_TEXT}`); - } - - offsetIndex += 1; - gMiddleText - .append('text') - .attr('class', 'path-metrics') - .attr('y', yOffsets[offsetIndex]) - .text( - `${metricLabel(metrics[0])}: ${formatNum(d.m1)}${ - metricsMatch ? '' : `, ${metricLabel(metrics[1])}: ${formatNum(d.m2)}` - }`, - ); - - offsetIndex += 1; - gMiddleText - .append('text') - .attr('class', 'path-ratio') - .attr('y', yOffsets[offsetIndex]) - .text( - metricsMatch - ? '' - : `${metricLabel(metrics[1])}/${metricLabel( - metrics[0], - )}: ${formatPerc(d.m2 / d.m1)}`, - ); - - // Reset and fade all the segments. - arcs - .selectAll('path') - .style('stroke-width', null) - .style('stroke', null) - .style('opacity', 0.3); - - // Then highlight only those that are an ancestor of the current segment. - arcs - .selectAll('path') - .filter(node => sequenceArray.includes(node)) - .style('opacity', 1) - .style('stroke', '#aaa'); - - updateBreadcrumbs(sequenceArray, absolutePercString); - } - - // Restore everything to full opacity when moving off the visualization. - function mouseleave() { - // Hide the breadcrumb trail - breadcrumbs.style('visibility', 'hidden'); - - gMiddleText.selectAll('*').remove(); - - // Deactivate all segments during transition. - arcs.selectAll('path').on('mouseenter', null); - - // Transition each segment to full opacity and then reactivate it. - arcs - .selectAll('path') - .transition() - .duration(200) - .style('opacity', 1) - .style('stroke', null) - .style('stroke-width', null) - .each('end', function end() { - d3.select(this).on('mouseenter', mouseenter); - }); - } - - // Main function to draw and set up the visualization, once we have the data. - function createVisualization(rows) { - const root = buildHierarchy(rows); - maxBreadcrumbs = rows[0].length - 2; - vis = svg - .append('svg:g') - .attr('class', 'sunburst-vis') - .attr( - 'transform', - 'translate(' + - `${margin.left + visWidth / 2},` + - `${ - margin.top + - (isSmallWidth - ? breadcrumbHeight * maxBreadcrumbs - : breadcrumbHeight) + - visHeight / 2 - }` + - ')', - ) - .on('mouseleave', mouseleave); - - arcs = vis.append('svg:g').attr('id', 'arcs'); - - gMiddleText = vis.append('svg:g').attr('class', 'center-label'); - - // Bounding circle underneath the sunburst, to make it easier to detect - // when the mouse leaves the parent g. - arcs.append('svg:circle').attr('r', radius).style('opacity', 0); - - // For efficiency, filter nodes to keep only those large enough to see. - const nodes = partition.nodes(root).filter(d => d.dx > 0.005); // 0.005 radians = 0.29 degrees - - if (metrics[0] !== metrics[1] && metrics[1]) { - colorByCategory = false; - const ext = d3.extent(nodes, d => d.m2 / d.m1); - linearColorScale = getSequentialSchemeRegistry() - .get(linearColorScheme) - .createLinearScale(ext); - } - - arcs - .selectAll('path') - .data(nodes) - .enter() - .append('svg:path') - .attr('display', d => (d.depth ? null : 'none')) - .attr('d', arc) - .attr('fill-rule', 'evenodd') - .style('fill', d => - colorByCategory - ? categoricalColorScale(d.name, sliceId) - : linearColorScale(d.m2 / d.m1), - ) - .style('opacity', 1) - .on('mouseenter', mouseenter); - - // Get total size of the tree = value of root node from partition. - totalSize = root.value; - } - createBreadcrumbs(data[0]); - createVisualization(data); -} - -Sunburst.displayName = 'Sunburst'; -Sunburst.propTypes = propTypes; - -export default Sunburst; diff --git a/superset-frontend/plugins/legacy-plugin-chart-sunburst/src/controlPanel.ts b/superset-frontend/plugins/legacy-plugin-chart-sunburst/src/controlPanel.ts deleted file mode 100644 index 32b56fb9e4..0000000000 --- a/superset-frontend/plugins/legacy-plugin-chart-sunburst/src/controlPanel.ts +++ /dev/null @@ -1,108 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -import { t } from '@superset-ui/core'; -import { - ControlPanelConfig, - ControlPanelsContainerProps, - getStandardizedControls, - sections, -} from '@superset-ui/chart-controls'; - -const config: ControlPanelConfig = { - controlPanelSections: [ - sections.legacyRegularTime, - { - label: t('Query'), - expanded: true, - controlSetRows: [ - ['groupby'], - ['metric'], - ['secondary_metric'], - ['adhoc_filters'], - ['row_limit'], - [ - { - name: 'sort_by_metric', - config: { - type: 'CheckboxControl', - label: t('Sort by metric'), - description: t( - 'Whether to sort results by the selected metric in descending order.', - ), - }, - }, - ], - ], - }, - { - label: t('Chart Options'), - expanded: true, - controlSetRows: [['color_scheme'], ['linear_color_scheme']], - }, - ], - controlOverrides: { - metric: { - label: t('Primary Metric'), - description: t( - 'The primary metric is used to define the arc segment sizes', - ), - }, - secondary_metric: { - label: t('Secondary Metric'), - default: null, - description: t( - '[optional] this secondary metric is used to ' + - 'define the color as a ratio against the primary metric. ' + - 'When omitted, the color is categorical and based on labels', - ), - }, - color_scheme: { - description: t( - 'When only a primary metric is provided, a categorical color scale is used.', - ), - visibility: ({ controls }: ControlPanelsContainerProps) => - Boolean( - !controls?.secondary_metric?.value || - controls?.secondary_metric?.value === controls?.metric.value, - ), - }, - linear_color_scheme: { - description: t( - 'When a secondary metric is provided, a linear color scale is used.', - ), - visibility: ({ controls }: ControlPanelsContainerProps) => - Boolean( - controls?.secondary_metric?.value && - controls?.secondary_metric?.value !== controls?.metric.value, - ), - }, - groupby: { - label: t('Hierarchy'), - 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; diff --git a/superset-frontend/plugins/legacy-plugin-chart-sunburst/src/images/example.png b/superset-frontend/plugins/legacy-plugin-chart-sunburst/src/images/example.png deleted file mode 100644 index 003d00e966074ceca14e5c988353b21ca646e558..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141954 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 Q4Z%w7+2!S2?!<`y4o^aSq0S*x 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 diff --git a/superset-frontend/plugins/legacy-plugin-chart-sunburst/src/index.js b/superset-frontend/plugins/legacy-plugin-chart-sunburst/src/index.js deleted file mode 100644 index c3ea740e25..0000000000 --- a/superset-frontend/plugins/legacy-plugin-chart-sunburst/src/index.js +++ /dev/null @@ -1,47 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -import { t, ChartMetadata, ChartPlugin } from '@superset-ui/core'; -import transformProps from './transformProps'; -import thumbnail from './images/thumbnail.png'; -import example from './images/example.png'; -import controlPanel from './controlPanel'; - -const metadata = new ChartMetadata({ - category: t('Part of a Whole'), - credits: ['https://bl.ocks.org/kerryrodden/7090426'], - description: t( - 'Uses circles to visualize the flow of data through different stages of a system. Hover over individual paths in the visualization to understand the stages a value took. Useful for multi-stage, multi-group visualizing funnels and pipelines.', - ), - exampleGallery: [{ url: example }], - name: t('Sunburst Chart'), - tags: [t('Aesthetic'), t('Legacy'), t('Multi-Levels'), t('Proportional')], - thumbnail, - useLegacyApi: true, -}); - -export default class SunburstChartPlugin extends ChartPlugin { - constructor() { - super({ - loadChart: () => import('./ReactSunburst'), - metadata, - transformProps, - controlPanel, - }); - } -} diff --git a/superset-frontend/plugins/legacy-plugin-chart-sunburst/src/transformProps.js b/superset-frontend/plugins/legacy-plugin-chart-sunburst/src/transformProps.js deleted file mode 100644 index 92c4d99f00..0000000000 --- a/superset-frontend/plugins/legacy-plugin-chart-sunburst/src/transformProps.js +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -export default function transformProps(chartProps) { - const { width, height, formData, queriesData, datasource } = chartProps; - const { colorScheme, linearColorScheme, metric, secondaryMetric, sliceId } = - formData; - - const returnProps = { - width, - height, - data: queriesData[0].data, - colorScheme, - linearColorScheme, - metrics: [metric, secondaryMetric], - sliceId, - }; - - if (datasource && datasource.metrics) { - const metricWithFormat = datasource.metrics.find( - ({ metric_name: metricName, d3format }) => - metricName === formData.metric && d3format, - ); - if (metricWithFormat) { - Object.assign(returnProps, { numberFormat: metricWithFormat.d3format }); - } - } - - return returnProps; -} diff --git a/superset-frontend/plugins/legacy-plugin-chart-sunburst/src/utils/wrapSvgText.js b/superset-frontend/plugins/legacy-plugin-chart-sunburst/src/utils/wrapSvgText.js deleted file mode 100644 index 12cdead8d3..0000000000 --- a/superset-frontend/plugins/legacy-plugin-chart-sunburst/src/utils/wrapSvgText.js +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - Utility function that takes a d3 svg:text selection and a max width, and splits the - text's text across multiple tspan lines such that any given line does not exceed max width - - If text does not span multiple lines AND adjustedY is passed, - will set the text to the passed val -*/ -import d3 from 'd3'; - -export default function wrapSvgText(text, width, adjustedY) { - const lineHeight = 1; - // ems - text.each(function each() { - const d3Text = d3.select(this); - const words = d3Text.text().split(/\s+/); - let line = []; - let lineNumber = 0; - const x = d3Text.attr('x'); - const y = d3Text.attr('y'); - const dy = parseFloat(d3Text.attr('dy')); - let tspan = d3Text - .text(null) - .append('tspan') - .attr('x', x) - .attr('y', y) - .attr('dy', `${dy}em`); - - let didWrap = false; - words.forEach(word => { - line.push(word); - tspan.text(line.join(' ')); - if (tspan.node().getComputedTextLength() > width) { - lineNumber += 1; - line.pop(); - // remove word that pushes over the limit - tspan.text(line.join(' ')); - line = [word]; - tspan = d3Text - .append('tspan') - .attr('x', x) - .attr('y', y) - .attr('dy', `${lineNumber * lineHeight + dy}em`) - .text(word); - didWrap = true; - } - }); - - if (!didWrap && typeof adjustedY !== 'undefined') { - tspan.attr('y', adjustedY); - } - }); -} diff --git a/superset-frontend/plugins/legacy-plugin-chart-sunburst/tsconfig.json b/superset-frontend/plugins/legacy-plugin-chart-sunburst/tsconfig.json deleted file mode 100644 index b6bfaa2d98..0000000000 --- a/superset-frontend/plugins/legacy-plugin-chart-sunburst/tsconfig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "compilerOptions": { - "declarationDir": "lib", - "outDir": "lib", - "rootDir": "src" - }, - "exclude": [ - "lib", - "test" - ], - "extends": "../../tsconfig.json", - "include": [ - "src/**/*", - "types/**/*", - "../../types/**/*" - ], - "references": [ - { - "path": "../../packages/superset-ui-chart-controls" - }, - { - "path": "../../packages/superset-ui-core" - } - ] -} diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/index.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/index.ts index 4208707803..43309d5d27 100644 --- a/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/index.ts +++ b/superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/index.ts @@ -43,7 +43,7 @@ export default class EchartsSunburstChartPlugin extends EchartsChartPlugin { 'Uses circles to visualize the flow of data through different stages of a system. Hover over individual paths in the visualization to understand the stages a value took. Useful for multi-stage, multi-group visualizing funnels and pipelines.', ), exampleGallery: [{ url: example1 }, { url: example2 }], - name: t('Sunburst Chart v2'), + name: t('Sunburst Chart'), tags: [ t('ECharts'), t('Aesthetic'), diff --git a/superset-frontend/spec/fixtures/mockSliceEntities.js b/superset-frontend/spec/fixtures/mockSliceEntities.js index 73e96ae871..2737d35d01 100644 --- a/superset-frontend/spec/fixtures/mockSliceEntities.js +++ b/superset-frontend/spec/fixtures/mockSliceEntities.js @@ -149,7 +149,7 @@ export const sliceEntitiesForDashboard = { slice_url: '/explore/?form_data=%7B%22slice_id%22%3A%20133%7D', slice_name: 'Rural Breakdown', form_data: {}, - viz_type: 'sunburst', + viz_type: 'sunburst_v2', datasource: '2__table', description: null, description_markeddown: '', diff --git a/superset-frontend/src/dashboard/components/SliceHeaderControls/SliceHeaderControls.test.tsx b/superset-frontend/src/dashboard/components/SliceHeaderControls/SliceHeaderControls.test.tsx index add9bb9739..2d7b5c05bd 100644 --- a/superset-frontend/src/dashboard/components/SliceHeaderControls/SliceHeaderControls.test.tsx +++ b/superset-frontend/src/dashboard/components/SliceHeaderControls/SliceHeaderControls.test.tsx @@ -37,7 +37,7 @@ jest.mock('src/components/Dropdown', () => { }; }); -const createProps = (viz_type = 'sunburst') => +const createProps = (viz_type = 'sunburst_v2') => ({ addDangerToast: jest.fn(), addSuccessToast: jest.fn(), @@ -59,7 +59,9 @@ const createProps = (viz_type = 'sunburst') => adhoc_filters: [], color_scheme: 'supersetColors', datasource: '58__table', - groupby: ['product_category', 'clinical_stage'], + ...(viz_type === 'sunburst_v2' + ? { columns: ['product_category', 'clinical_stage'] } + : { groupby: ['product_category', 'clinical_stage'] }), linear_color_scheme: 'schemeYlOrBr', metric: 'count', queryFields: { @@ -93,7 +95,7 @@ const createProps = (viz_type = 'sunburst') => chartStatus: 'rendered', showControls: true, supersetCanShare: true, - formData: { slice_id: 1, datasource: '58__table', viz_type: 'sunburst' }, + formData: { slice_id: 1, datasource: '58__table', viz_type: 'sunburst_v2' }, exploreUrl: '/explore', } as SliceHeaderControlsProps); diff --git a/superset-frontend/src/explore/components/controls/VizTypeControl/VizTypeGallery.tsx b/superset-frontend/src/explore/components/controls/VizTypeControl/VizTypeGallery.tsx index 2d14376516..8934ca9cf0 100644 --- a/superset-frontend/src/explore/components/controls/VizTypeControl/VizTypeGallery.tsx +++ b/superset-frontend/src/explore/components/controls/VizTypeControl/VizTypeGallery.tsx @@ -93,7 +93,6 @@ const DEFAULT_ORDER = [ 'deck_screengrid', 'treemap_v2', 'box_plot', - 'sunburst', 'sankey', 'word_cloud', 'mapbox', diff --git a/superset-frontend/src/visualizations/presets/MainPreset.js b/superset-frontend/src/visualizations/presets/MainPreset.js index f37a9155e1..4e25ef0188 100644 --- a/superset-frontend/src/visualizations/presets/MainPreset.js +++ b/superset-frontend/src/visualizations/presets/MainPreset.js @@ -30,7 +30,6 @@ import ParallelCoordinatesChartPlugin from '@superset-ui/legacy-plugin-chart-par import PartitionChartPlugin from '@superset-ui/legacy-plugin-chart-partition'; import RoseChartPlugin from '@superset-ui/legacy-plugin-chart-rose'; import SankeyChartPlugin from '@superset-ui/legacy-plugin-chart-sankey'; -import SunburstChartPlugin from '@superset-ui/legacy-plugin-chart-sunburst'; import TableChartPlugin from '@superset-ui/plugin-chart-table'; import { WordCloudChartPlugin } from '@superset-ui/plugin-chart-word-cloud'; import WorldMapChartPlugin from '@superset-ui/legacy-plugin-chart-world-map'; @@ -127,7 +126,6 @@ export default class MainPreset extends Preset { new PivotTableChartPluginV2().configure({ key: 'pivot_table_v2' }), new RoseChartPlugin().configure({ key: 'rose' }), new SankeyChartPlugin().configure({ key: 'sankey' }), - new SunburstChartPlugin().configure({ key: 'sunburst' }), new TableChartPlugin().configure({ key: 'table' }), new TimePivotChartPlugin().configure({ key: 'time_pivot' }), new TimeTableChartPlugin().configure({ key: 'time_table' }), diff --git a/superset/examples/configs/charts/Vaccine_Candidates_per_Country__Stage.yaml b/superset/examples/configs/charts/Vaccine_Candidates_per_Country__Stage.yaml index 81c54e69e3..ea9d4c67ef 100644 --- a/superset/examples/configs/charts/Vaccine_Candidates_per_Country__Stage.yaml +++ b/superset/examples/configs/charts/Vaccine_Candidates_per_Country__Stage.yaml @@ -15,14 +15,14 @@ # specific language governing permissions and limitations # under the License. slice_name: Vaccine Candidates per Country & Stage -viz_type: sunburst +viz_type: sunburst_v2 params: adhoc_filters: [] color_scheme: supersetColors datasource: 69__table - groupby: - - product_category - - clinical_stage + columns: + - product_category + - clinical_stage linear_color_scheme: schemeYlOrBr metric: count queryFields: @@ -33,7 +33,7 @@ params: slice_id: 3964 time_range: No filter url_params: {} - viz_type: sunburst + viz_type: sunburst_v2 cache_timeout: null uuid: f69c556f-15fe-4a82-a8bb-69d5b6954123 version: 1.0.0 diff --git a/superset/examples/supported_charts_dashboard.py b/superset/examples/supported_charts_dashboard.py index 7354b369bb..926750ffba 100644 --- a/superset/examples/supported_charts_dashboard.py +++ b/superset/examples/supported_charts_dashboard.py @@ -397,12 +397,12 @@ def create_slices(tbl: SqlaTable) -> list[Slice]: Slice( **slice_kwargs, slice_name="Sunburst Chart", - viz_type="sunburst", + viz_type="sunburst_v2", params=get_slice_json( defaults, - viz_type="sunburst", + viz_type="sunburst_v2", metric="sum__num", - groupby=["gender", "state"], + columns=["gender", "state"], ), ), Slice( diff --git a/superset/examples/world_bank.py b/superset/examples/world_bank.py index 1541e3e472..5e895fd78a 100644 --- a/superset/examples/world_bank.py +++ b/superset/examples/world_bank.py @@ -266,13 +266,13 @@ def create_slices(tbl: BaseDatasource) -> list[Slice]: ), Slice( slice_name="Rural Breakdown", - viz_type="sunburst", + viz_type="sunburst_v2", datasource_type=DatasourceType.TABLE, datasource_id=tbl.id, params=get_slice_json( defaults, - viz_type="sunburst", - groupby=["region", "country_name"], + viz_type="sunburst_v2", + columns=["region", "country_name"], since="2011-01-01", until="2011-01-02", metric=metric, diff --git a/superset/migrations/versions/2024-01-18_14-41_a32e0c4d8646_migrate_sunburst_chart.py b/superset/migrations/versions/2024-01-18_14-41_a32e0c4d8646_migrate_sunburst_chart.py new file mode 100644 index 0000000000..10644e4073 --- /dev/null +++ b/superset/migrations/versions/2024-01-18_14-41_a32e0c4d8646_migrate_sunburst_chart.py @@ -0,0 +1,44 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +"""migrate-sunburst-chart + +Revision ID: a32e0c4d8646 +Revises: 59a1450b3c10 +Create Date: 2023-12-22 14:41:43.638321 + +""" + +# revision identifiers, used by Alembic. +revision = "a32e0c4d8646" +down_revision = "59a1450b3c10" + +from alembic import op + +from superset import db +from superset.migrations.shared.migrate_viz import MigrateSunburst + + +def upgrade(): + bind = op.get_bind() + session = db.Session(bind=bind) + MigrateSunburst.upgrade(session) + + +def downgrade(): + bind = op.get_bind() + session = db.Session(bind=bind) + MigrateSunburst.downgrade(session) diff --git a/superset/viz.py b/superset/viz.py index 8ba785ddcf..5738fabc93 100644 --- a/superset/viz.py +++ b/superset/viz.py @@ -1352,55 +1352,6 @@ class DistributionBarViz(BaseViz): return chart_data -class SunburstViz(BaseViz): - - """A multi level sunburst chart""" - - viz_type = "sunburst" - verbose_name = _("Sunburst") - is_timeseries = False - credits = ( - "Kerry Rodden " - '@bl.ocks.org' - ) - - @deprecated(deprecated_in="3.0") - def get_data(self, df: pd.DataFrame) -> VizData: - if df.empty: - return None - form_data = copy.deepcopy(self.form_data) - cols = get_column_names(form_data.get("groupby")) - cols.extend(["m1", "m2"]) - metric = utils.get_metric_name(form_data["metric"]) - secondary_metric = ( - utils.get_metric_name(form_data["secondary_metric"]) - if form_data.get("secondary_metric") - else None - ) - if metric == secondary_metric or secondary_metric is None: - df.rename(columns={df.columns[-1]: "m1"}, inplace=True) - df["m2"] = df["m1"] - else: - df.rename(columns={df.columns[-2]: "m1"}, inplace=True) - df.rename(columns={df.columns[-1]: "m2"}, inplace=True) - - # Re-order the columns as the query result set column ordering may differ from - # that listed in the hierarchy. - df = df[cols] - return df.to_numpy().tolist() - - @deprecated(deprecated_in="3.0") - def query_obj(self) -> QueryObjectDict: - query_obj = super().query_obj() - query_obj["metrics"] = [self.form_data["metric"]] - secondary_metric = self.form_data.get("secondary_metric") - if secondary_metric and secondary_metric != self.form_data["metric"]: - query_obj["metrics"].append(secondary_metric) - if self.form_data.get("sort_by_metric", False): - query_obj["orderby"] = [(query_obj["metrics"][0], False)] - return query_obj - - class SankeyViz(BaseViz): """A Sankey diagram that requires a parent-child dataset"""