From 15682e6ae86102bbfd32abcbc744a6eb7801772b Mon Sep 17 00:00:00 2001 From: "Irina V. Kuzmina" Date: Mon, 19 Jun 2023 13:28:32 +0300 Subject: [PATCH 1/2] show totals of selected series on legend click --- .../__stories__/pie/WithTotals.stories.tsx | 16 +++++++ .../highcharts/mocks/pie-with-totals.ts | 45 +++++++++++++++++++ .../renderer/helpers/config/config.js | 11 +++-- src/plugins/highcharts/types/widget.ts | 1 + 4 files changed, 67 insertions(+), 6 deletions(-) create mode 100644 src/plugins/highcharts/__stories__/pie/WithTotals.stories.tsx create mode 100644 src/plugins/highcharts/mocks/pie-with-totals.ts diff --git a/src/plugins/highcharts/__stories__/pie/WithTotals.stories.tsx b/src/plugins/highcharts/__stories__/pie/WithTotals.stories.tsx new file mode 100644 index 00000000..2e621d27 --- /dev/null +++ b/src/plugins/highcharts/__stories__/pie/WithTotals.stories.tsx @@ -0,0 +1,16 @@ +import React from 'react'; +import {Meta, Story} from '@storybook/react'; +import {ChartKit} from '../../../../components/ChartKit'; +import {data} from '../../mocks/pie-with-totals'; +import {ChartStory} from '../components/ChartStory'; + +export default { + title: 'Plugins/Highcharts/Pie', + component: ChartKit, +} as Meta; + +const Template: Story = () => { + return ; +}; + +export const WithTotals = Template.bind({}); diff --git a/src/plugins/highcharts/mocks/pie-with-totals.ts b/src/plugins/highcharts/mocks/pie-with-totals.ts new file mode 100644 index 00000000..3fbd04b6 --- /dev/null +++ b/src/plugins/highcharts/mocks/pie-with-totals.ts @@ -0,0 +1,45 @@ +import {HighchartsWidgetData} from '../types'; + +export const data: HighchartsWidgetData = { + data: { + graphs: [ + { + name: 'Number of requests', + tooltip: { + chartKitFormatting: true, + chartKitPrecision: 0, + }, + dataLabels: { + format: null, + chartKitFormatting: true, + chartKitPrecision: 0, + chartKitPrefix: '', + chartKitPostfix: '', + chartKitLabelMode: 'absolute', + chartKitFormat: 'number', + chartKitShowRankDelimiter: true, + }, + data: [ + {name: 'Furniture', y: 14344, label: 14344}, + {name: 'Domestic chemistry', y: 14244, label: 14244}, + {name: 'Household goods', y: 14181, label: 14181}, + ], + }, + ], + categories: ['Furniture', 'Domestic chemistry', 'Household goods'], + totals: 42769, + }, + config: { + showPercentInTooltip: true, + }, + libraryConfig: { + chart: { + type: 'pie', + }, + plotOptions: { + pie: { + innerSize: '50%', + }, + }, + }, +}; diff --git a/src/plugins/highcharts/renderer/helpers/config/config.js b/src/plugins/highcharts/renderer/helpers/config/config.js index 74049935..d269c06c 100644 --- a/src/plugins/highcharts/renderer/helpers/config/config.js +++ b/src/plugins/highcharts/renderer/helpers/config/config.js @@ -1622,13 +1622,12 @@ export function prepareConfig(data, options, isMobile, holidays) { const chart = this; const chartSeries = chart.series[0]; const innerWidth = chartSeries?.center[3]; + const formatOptions = chartSeries?.userOptions?.tooltip; + const value = + formatDonutTotals(chartSeries.total, formatOptions) || totals; + if (innerWidth) { - debouncedAdjustDonutFontSize( - chart, - chartSeries, - innerWidth, - totals, - ); + debouncedAdjustDonutFontSize(chart, chartSeries, innerWidth, value); } }, }), diff --git a/src/plugins/highcharts/types/widget.ts b/src/plugins/highcharts/types/widget.ts index 76c99979..e0e7091b 100644 --- a/src/plugins/highcharts/types/widget.ts +++ b/src/plugins/highcharts/types/widget.ts @@ -44,6 +44,7 @@ export type HighchartsWidgetData = { | { graphs: CkHighchartsSeriesOptionsType[]; categories: string[]; + totals?: number | string; } | { graphs: CkHighchartsSeriesOptionsType[]; From 80b03c23b7345351eaa9ef2c97672f25d048e661 Mon Sep 17 00:00:00 2001 From: "Irina V. Kuzmina" Date: Mon, 19 Jun 2023 15:48:25 +0300 Subject: [PATCH 2/2] fix --- src/plugins/highcharts/renderer/helpers/config/config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/highcharts/renderer/helpers/config/config.js b/src/plugins/highcharts/renderer/helpers/config/config.js index d269c06c..e0f4c186 100644 --- a/src/plugins/highcharts/renderer/helpers/config/config.js +++ b/src/plugins/highcharts/renderer/helpers/config/config.js @@ -1624,7 +1624,7 @@ export function prepareConfig(data, options, isMobile, holidays) { const innerWidth = chartSeries?.center[3]; const formatOptions = chartSeries?.userOptions?.tooltip; const value = - formatDonutTotals(chartSeries.total, formatOptions) || totals; + formatDonutTotals(chartSeries?.total, formatOptions) || totals; if (innerWidth) { debouncedAdjustDonutFontSize(chart, chartSeries, innerWidth, value);