From 2169a0b37e48b122d0babfb3f4242af362ecba72 Mon Sep 17 00:00:00 2001 From: Ville Brofeldt <33317356+villebro@users.noreply.github.com> Date: Fri, 11 Sep 2020 00:56:38 +0300 Subject: [PATCH] feat: implement ECharts pie chart (#772) --- .../src/Pie/controlPanel.ts | 2 +- .../src/Pie/EchartsPie.tsx | 4 +- .../src/Pie/controlPanel.ts | 89 +++++++++++- .../src/Pie/images/thumbnail.png | Bin 5658 -> 104865 bytes .../plugin-chart-echarts/src/Pie/index.ts | 12 +- .../src/Pie/transformProps.ts | 129 +++++++++++++----- .../plugin-chart-echarts/src/Pie/types.ts | 32 ++--- .../src/Timeseries/buildQuery.ts | 2 +- .../src/Timeseries/index.ts | 12 +- .../src/Timeseries/transformProps.ts | 1 - .../plugin-chart-echarts/src/utils/series.ts | 8 +- .../test/Pie/buildQuery.test.ts | 36 +++++ .../test/Pie/transformProps.test.ts | 87 ++++++++++++ .../test/Timeseries/buildQuery.test.ts | 7 +- .../test/Timeseries/transformProps.test.ts | 24 +++- .../test/utils/series.test.ts | 22 ++- 16 files changed, 385 insertions(+), 82 deletions(-) create mode 100644 superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/test/Pie/buildQuery.test.ts create mode 100644 superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/test/Pie/transformProps.test.ts diff --git a/superset-frontend/temporary_superset_ui/superset-ui/plugins/legacy-preset-chart-nvd3/src/Pie/controlPanel.ts b/superset-frontend/temporary_superset_ui/superset-ui/plugins/legacy-preset-chart-nvd3/src/Pie/controlPanel.ts index f814676fd6..e080765d9b 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/plugins/legacy-preset-chart-nvd3/src/Pie/controlPanel.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/plugins/legacy-preset-chart-nvd3/src/Pie/controlPanel.ts @@ -25,7 +25,7 @@ export default { { label: t('Query'), expanded: true, - controlSetRows: [['metric'], ['adhoc_filters'], ['groupby'], ['row_limit']], + controlSetRows: [['groupby'], ['metric'], ['adhoc_filters'], ['row_limit']], }, { label: t('Chart Options'), diff --git a/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Pie/EchartsPie.tsx b/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Pie/EchartsPie.tsx index 31c0127d55..41900c4d00 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Pie/EchartsPie.tsx +++ b/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Pie/EchartsPie.tsx @@ -17,9 +17,9 @@ * under the License. */ import React from 'react'; -import { EchartsPieProps } from './types'; +import { EchartsProps } from '../types'; import Echart from '../components/Echart'; -export default function EchartsPie({ height, width, echartOptions }: EchartsPieProps) { +export default function EchartsPie({ height, width, echartOptions }: EchartsProps) { return ; } diff --git a/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Pie/controlPanel.ts b/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Pie/controlPanel.ts index eb59b45ac4..cd635f8c9e 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Pie/controlPanel.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Pie/controlPanel.ts @@ -17,19 +17,98 @@ * under the License. */ import { t, validateNonEmpty } from '@superset-ui/core'; -import { ControlPanelConfig } from '@superset-ui/chart-controls'; +import { ControlPanelConfig, D3_FORMAT_OPTIONS } from '@superset-ui/chart-controls'; const config: ControlPanelConfig = { controlPanelSections: [ { label: t('Query'), expanded: true, - controlSetRows: [['groupby'], ['metrics'], ['adhoc_filters'], ['row_limit', null]], + controlSetRows: [['groupby'], ['metric'], ['adhoc_filters'], ['row_limit', null]], }, { label: t('Chart Options'), expanded: true, controlSetRows: [ + [ + { + name: 'pie_label_type', + config: { + type: 'SelectControl', + label: t('Label Type'), + default: 'key', + renderTrigger: true, + choices: [ + ['key', 'Category Name'], + ['value', 'Value'], + ['percent', 'Percentage'], + ['key_value', 'Category and Value'], + ['key_percent', 'Category and Percentage'], + ['key_value_percent', 'Category, Value and Percentage'], + ], + description: t('What should be shown on the label?'), + }, + }, + { + name: 'number_format', + config: { + type: 'SelectControl', + freeForm: true, + label: t('Number format'), + renderTrigger: true, + default: 'SMART_NUMBER', + choices: D3_FORMAT_OPTIONS, + description: `${t('D3 format syntax: https://github.com/d3/d3-format')} ${t( + 'Only applies when "Label Type" is set to show values.', + )}`, + }, + }, + ], + [ + { + name: 'donut', + config: { + type: 'CheckboxControl', + label: t('Donut'), + default: false, + renderTrigger: true, + description: t('Do you want a donut or a pie?'), + }, + }, + { + name: 'show_legend', + config: { + type: 'CheckboxControl', + label: t('Legend'), + renderTrigger: true, + default: true, + description: t('Whether to display a legend for the chart'), + }, + }, + ], + [ + { + name: 'show_labels', + config: { + type: 'CheckboxControl', + label: t('Show Labels'), + renderTrigger: true, + default: true, + description: t('Whether to display the labels.'), + }, + }, + { + name: 'labels_outside', + config: { + type: 'CheckboxControl', + label: t('Put labels outside'), + default: true, + renderTrigger: true, + description: t('Put the labels outside of the pie?'), + }, + }, + ], + ['color_scheme', 'label_colors'], [ { name: 'outerRadius', @@ -40,10 +119,12 @@ const config: ControlPanelConfig = { min: 10, max: 100, step: 1, - default: 70, + default: 80, description: t('Outer edge of Pie chart'), }, }, + ], + [ { name: 'innerRadius', config: { @@ -53,7 +134,7 @@ const config: ControlPanelConfig = { min: 0, max: 100, step: 1, - default: 50, + default: 40, description: t('Inner radius of donut hole'), }, }, diff --git a/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Pie/images/thumbnail.png b/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Pie/images/thumbnail.png index 7afef30bd4e6e4f85723208bf9f429647d03d3e5..ec5c55b6e24c5334448bb3249b47ca03ea087650 100644 GIT binary patch literal 104865 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 literal 5658 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 diff --git a/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Pie/index.ts b/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Pie/index.ts index 7bcaed4d6f..553dd8ed05 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Pie/index.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Pie/index.ts @@ -22,12 +22,6 @@ import controlPanel from './controlPanel'; import transformProps from './transformProps'; import thumbnail from './images/thumbnail.png'; -const metadata = new ChartMetadata({ - description: 'Pie chart using ECharts', - name: t('EchartsPie'), - thumbnail, -}); - export default class EchartsPieChartPlugin extends ChartPlugin { /** * The constructor is used to pass relevant metadata and callbacks that get @@ -44,7 +38,11 @@ export default class EchartsPieChartPlugin extends ChartPlugin { buildQuery, controlPanel, loadChart: () => import('./EchartsPie'), - metadata, + metadata: new ChartMetadata({ + description: 'Pie chart using ECharts', + name: t('ECharts Pie'), + thumbnail, + }), transformProps, }); } diff --git a/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Pie/transformProps.ts b/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Pie/transformProps.ts index 04fe4d5c99..267ae12dba 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Pie/transformProps.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Pie/transformProps.ts @@ -16,60 +16,126 @@ * specific language governing permissions and limitations * under the License. */ -import { ChartProps, DataRecord } from '@superset-ui/core'; -import { EchartsPieProps } from './types'; +import { + CategoricalColorNamespace, + ChartProps, + convertMetric, + DataRecord, + getNumberFormatter, + NumberFormats, + NumberFormatter, +} from '@superset-ui/core'; +import { EchartsPieLabelType, PieChartFormData } from './types'; +import { EchartsProps } from '../types'; +import { extractGroupbyLabel } from '../utils/series'; -export default function transformProps(chartProps: ChartProps): EchartsPieProps { - /* - TODO: - - add support for multiple groupby (requires post transform op) - - add support for ad-hoc metrics (currently only supports datasource metrics) - - add support for superset colors - - add support for control values in legacy pie chart - */ +const percentFormatter = getNumberFormatter(NumberFormats.PERCENT_2_POINT); + +export function formatPieLabel({ + params, + pieLabelType, + numberFormatter, +}: { + params: echarts.EChartOption.Tooltip.Format; + pieLabelType: EchartsPieLabelType; + numberFormatter: NumberFormatter; +}): string { + const { name = '', value, percent } = params; + const formattedValue = numberFormatter(value as number); + const formattedPercent = percentFormatter((percent as number) / 100); + if (pieLabelType === 'key') return name; + if (pieLabelType === 'value') return formattedValue; + if (pieLabelType === 'percent') return formattedPercent; + if (pieLabelType === 'key_value') return `${name}: ${formattedValue}`; + if (pieLabelType === 'key_value_percent') + return `${name}: ${formattedValue} (${formattedPercent})`; + if (pieLabelType === 'key_percent') return `${name}: ${formattedPercent}`; + return name; +} + +export default function transformProps(chartProps: ChartProps): EchartsProps { const { width, height, formData, queryData } = chartProps; const data: DataRecord[] = queryData.data || []; - const { innerRadius = 50, outerRadius = 70, groupby = [], metrics = [] } = formData; + const { + colorScheme, + donut = false, + groupby, + innerRadius = 40, + labelsOutside = true, + metric, + numberFormat, + outerRadius = 80, + pieLabelType = 'value', + showLabels = true, + showLegend = false, + } = formData as PieChartFormData; + const { label: metricLabel } = convertMetric(metric); - const keys = Array.from(new Set(data.map(datum => datum[groupby[0]]))); + const keys = data.map(datum => extractGroupbyLabel(datum, groupby)); + const colorFn = CategoricalColorNamespace.getScale(colorScheme as string); + const numberFormatter = getNumberFormatter(numberFormat); const transformedData = data.map(datum => { + const name = extractGroupbyLabel(datum, groupby); return { - value: datum[metrics[0]], - name: datum[groupby[0]], + value: datum[metricLabel], + name, + itemStyle: { + color: colorFn(name), + }, }; }); - const echartOptions = { + const formatter = (params: { name: string; value: number; percent: number }) => + formatPieLabel({ params, numberFormatter, pieLabelType }); + + const echartOptions: echarts.EChartOption = { tooltip: { + confine: true, trigger: 'item', - formatter: '{b}: {c} ({d}%)', - }, - legend: { - orient: 'vertical', - left: 10, - data: keys, + formatter: params => { + return formatPieLabel({ + params: params as echarts.EChartOption.Tooltip.Format, + numberFormatter, + pieLabelType: 'key_value_percent', + }); + }, }, + legend: showLegend + ? { + orient: 'horizontal', + left: 10, + data: keys, + } + : undefined, series: [ { type: 'pie', - radius: [`${innerRadius}%`, `${outerRadius}%`], - avoidLabelOverlap: false, - label: { - show: false, - position: 'center', - }, + radius: [`${donut ? innerRadius : 0}%`, `${outerRadius}%`], + avoidLabelOverlap: true, + labelLine: labelsOutside ? { show: true } : { show: false }, + label: labelsOutside + ? { + formatter, + position: 'outer', + show: showLabels, + alignTo: 'none', + bleedMargin: 5, + } + : { + formatter, + position: 'inner', + show: showLabels, + }, emphasis: { label: { show: true, - fontSize: '30', + fontSize: 30, fontWeight: 'bold', }, }, - labelLine: { - show: false, - }, + // @ts-ignore data: transformedData, }, ], @@ -78,7 +144,6 @@ export default function transformProps(chartProps: ChartProps): EchartsPieProps return { width, height, - // @ts-ignore echartOptions, }; } diff --git a/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Pie/types.ts b/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Pie/types.ts index 93b97c1c00..3814cd679a 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Pie/types.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Pie/types.ts @@ -17,26 +17,24 @@ * under the License. */ import { QueryFormData } from '@superset-ui/core'; -import { EchartsProps } from '../types'; export type PieChartFormData = QueryFormData & { - groupby?: string[]; - metrics?: string[]; + groupby: string[]; + metric: string; outerRadius?: number; innerRadius?: number; + colorScheme?: string; + donut?: boolean; + showLegend?: boolean; + showLabels?: boolean; + labelsOutside?: boolean; + numberFormat?: string; }; -export type EchartsPieProps = EchartsProps & { - formData: PieChartFormData; - area: number; - colorScheme: string; - contributionMode?: string; - zoomable?: boolean; - seriesType: string; - logAxis: boolean; - stack: boolean; - markerEnabled: boolean; - markerSize: number; - minorSplitLine: boolean; - opacity: number; -}; +export type EchartsPieLabelType = + | 'key' + | 'value' + | 'percent' + | 'key_value' + | 'key_percent' + | 'key_value_percent'; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Timeseries/buildQuery.ts b/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Timeseries/buildQuery.ts index 56fe8d4b85..552eacf44d 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Timeseries/buildQuery.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Timeseries/buildQuery.ts @@ -40,7 +40,7 @@ export default function buildQuery(formData: QueryFormData) { return [ { ...baseQueryObject, - // Time series charts need to set the `is_timeseries` flag to true + groupby: formData.series, is_timeseries: true, post_processing: [ { diff --git a/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Timeseries/index.ts b/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Timeseries/index.ts index d49fa8e5d1..27417515cd 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Timeseries/index.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Timeseries/index.ts @@ -22,12 +22,6 @@ import controlPanel from './controlPanel'; import transformProps from './transformProps'; import thumbnail from './images/thumbnail.png'; -const metadata = new ChartMetadata({ - description: 'ECharts Timeseries', - name: t('ECharts Timeseries'), - thumbnail, -}); - export default class EchartsTimeseriesChartPlugin extends ChartPlugin { /** * The constructor is used to pass relevant metadata and callbacks that get @@ -44,7 +38,11 @@ export default class EchartsTimeseriesChartPlugin extends ChartPlugin { buildQuery, controlPanel, loadChart: () => import('./EchartsTimeseries'), - metadata, + metadata: new ChartMetadata({ + description: 'ECharts Timeseries', + name: t('ECharts Timeseries'), + thumbnail, + }), transformProps, }); } diff --git a/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Timeseries/transformProps.ts b/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Timeseries/transformProps.ts index dd26e88f72..8ad7574e18 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Timeseries/transformProps.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/Timeseries/transformProps.ts @@ -52,7 +52,6 @@ export default function transformProps(chartProps: ChartProps): EchartsTimeserie const colorFn = CategoricalColorNamespace.getScale(colorScheme as string); - // eslint-disable-next-line @typescript-eslint/no-unsafe-call const rebasedData = rebaseTimeseriesDatum(queryData.data || []); const rawSeries = extractTimeseriesSeries(rebasedData); diff --git a/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/utils/series.ts b/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/utils/series.ts index be9e6147c9..a4b983f964 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/utils/series.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/src/utils/series.ts @@ -17,9 +17,8 @@ * specific language governing permissions and limitations * under the License. */ -import { TimeseriesDataRecord } from '@superset-ui/core'; +import { DataRecord, TimeseriesDataRecord } from '@superset-ui/core'; -// eslint-disable-next-line import/prefer-default-export export function extractTimeseriesSeries( data: TimeseriesDataRecord[], ): echarts.EChartOption.Series[] { @@ -39,3 +38,8 @@ export function extractTimeseriesSeries( data: rows.map(datum => [datum.__timestamp, datum[key]]), })); } + +export function extractGroupbyLabel(datum: DataRecord, groupby: string[]): string { + // TODO: apply formatting to dates and numbers + return groupby.map(val => `${datum[val]}`).join(', '); +} diff --git a/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/test/Pie/buildQuery.test.ts b/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/test/Pie/buildQuery.test.ts new file mode 100644 index 0000000000..269c6b6c0f --- /dev/null +++ b/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/test/Pie/buildQuery.test.ts @@ -0,0 +1,36 @@ +/** + * 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 buildQuery from '../../src/Pie/buildQuery'; + +describe('Pie buildQuery', () => { + const formData = { + datasource: '5__table', + granularity_sqla: 'ds', + metric: 'foo', + groupby: ['bar'], + viz_type: 'my_chart', + }; + + it('should build groupby with series in form data', () => { + const queryContext = buildQuery(formData); + const [query] = queryContext.queries; + expect(query.metrics).toEqual([{ label: 'foo' }]); + expect(query.groupby).toEqual(['bar']); + }); +}); diff --git a/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/test/Pie/transformProps.test.ts b/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/test/Pie/transformProps.test.ts new file mode 100644 index 0000000000..cbaeafd414 --- /dev/null +++ b/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/test/Pie/transformProps.test.ts @@ -0,0 +1,87 @@ +/** + * 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 'babel-polyfill'; +import { ChartProps, getNumberFormatter } from '@superset-ui/core'; +import transformProps, { formatPieLabel } from '../../src/Pie/transformProps'; + +describe('Pie tranformProps', () => { + const formData = { + colorScheme: 'bnbColors', + datasource: '3__table', + granularity_sqla: 'ds', + metric: 'sum__num', + groupby: ['foo', 'bar'], + }; + const chartProps = new ChartProps({ + formData, + width: 800, + height: 600, + queryData: { + data: [ + { foo: 'Sylvester', bar: 1, sum__num: 10 }, + { foo: 'Arnold', bar: 2, sum__num: 2.5 }, + ], + }, + }); + + it('should tranform chart props for viz', () => { + expect(transformProps(chartProps)).toEqual( + expect.objectContaining({ + width: 800, + height: 600, + echartOptions: expect.objectContaining({ + series: [ + expect.objectContaining({ + avoidLabelOverlap: true, + data: expect.arrayContaining([ + expect.objectContaining({ + name: 'Arnold, 2', + value: 2.5, + }), + expect.objectContaining({ + name: 'Sylvester, 1', + value: 10, + }), + ]), + }), + ], + }), + }), + ); + }); +}); + +describe('formatPieLabel', () => { + it('should generate a valid pie chart label', () => { + const numberFormatter = getNumberFormatter(); + const params = { name: 'My Label', value: 1234, percent: 12.34 }; + expect(formatPieLabel({ params, numberFormatter, pieLabelType: 'key' })).toEqual('My Label'); + expect(formatPieLabel({ params, numberFormatter, pieLabelType: 'value' })).toEqual('1.23k'); + expect(formatPieLabel({ params, numberFormatter, pieLabelType: 'percent' })).toEqual('12.34%'); + expect(formatPieLabel({ params, numberFormatter, pieLabelType: 'key_value' })).toEqual( + 'My Label: 1.23k', + ); + expect(formatPieLabel({ params, numberFormatter, pieLabelType: 'key_percent' })).toEqual( + 'My Label: 12.34%', + ); + expect(formatPieLabel({ params, numberFormatter, pieLabelType: 'key_value_percent' })).toEqual( + 'My Label: 1.23k (12.34%)', + ); + }); +}); diff --git a/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/test/Timeseries/buildQuery.test.ts b/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/test/Timeseries/buildQuery.test.ts index b91aa4a539..b355c4723d 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/test/Timeseries/buildQuery.test.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/test/Timeseries/buildQuery.test.ts @@ -18,18 +18,19 @@ */ import buildQuery from '../../src/Timeseries/buildQuery'; -describe('EchartsTimeseries buildQuery', () => { +describe('Timeseries buildQuery', () => { const formData = { datasource: '5__table', granularity_sqla: 'ds', - series: 'foo', + series: ['foo'], + metrics: ['bar', 'baz'], viz_type: 'my_chart', - queryFields: { series: 'groupby' }, }; it('should build groupby with series in form data', () => { const queryContext = buildQuery(formData); const [query] = queryContext.queries; expect(query.groupby).toEqual(['foo']); + expect(query.metrics).toEqual([{ label: 'bar' }, { label: 'baz' }]); }); }); diff --git a/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/test/Timeseries/transformProps.test.ts b/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/test/Timeseries/transformProps.test.ts index 60bbe61add..fc037a55ba 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/test/Timeseries/transformProps.test.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/test/Timeseries/transformProps.test.ts @@ -26,14 +26,17 @@ describe('EchartsTimeseries tranformProps', () => { datasource: '3__table', granularity_sqla: 'ds', metric: 'sum__num', - series: 'name', + series: ['foo', 'bar'], }; const chartProps = new ChartProps({ formData, width: 800, height: 600, queryData: { - data: [{ sum__num: 1, __timestamp: 599616000000 }], + data: [ + { 'San Francisco': 1, 'New York': 2, __timestamp: 599616000000 }, + { 'San Francisco': 3, 'New York': 4, __timestamp: 599916000000 }, + ], }, }); @@ -43,10 +46,23 @@ describe('EchartsTimeseries tranformProps', () => { width: 800, height: 600, echartOptions: expect.objectContaining({ + legend: expect.objectContaining({ + data: ['San Francisco', 'New York'], + }), series: expect.arrayContaining([ expect.objectContaining({ - data: [[new Date(599616000000), 1]], - id: 'sum__num', + data: [ + [new Date(599616000000), 1], + [new Date(599916000000), 3], + ], + name: 'San Francisco', + }), + expect.objectContaining({ + data: [ + [new Date(599616000000), 2], + [new Date(599916000000), 4], + ], + name: 'New York', }), ]), }), diff --git a/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/test/utils/series.test.ts b/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/test/utils/series.test.ts index 2e33fd9137..a69e1f79a8 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/test/utils/series.test.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/plugins/plugin-chart-echarts/test/utils/series.test.ts @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -import { extractTimeseriesSeries } from '../../src/utils/series'; +import { extractGroupbyLabel, extractTimeseriesSeries } from '../../src/utils/series'; describe('extractTimeseriesSeries', () => { it('should generate a valid ECharts timeseries series object', () => { @@ -57,3 +57,23 @@ describe('extractTimeseriesSeries', () => { ]); }); }); + +describe('extractGroupbyLabel', () => { + it('should join together multiple groupby labels', () => { + expect(extractGroupbyLabel({ a: 'abc', b: 'qwerty' }, ['a', 'b'])).toEqual('abc, qwerty'); + }); + + it('should handle a single groupby', () => { + expect(extractGroupbyLabel({ xyz: 'qqq' }, ['xyz'])).toEqual('qqq'); + }); + + it('should handle mixed types', () => { + expect( + extractGroupbyLabel({ strcol: 'abc', intcol: 123, floatcol: 0.123 }, [ + 'strcol', + 'intcol', + 'floatcol', + ]), + ).toEqual('abc, 123, 0.123'); + }); +});