From 1fa932acd31ea7a6c6f023f3bbd45384714f4166 Mon Sep 17 00:00:00 2001 From: dangreen Date: Mon, 14 Nov 2022 01:02:22 +0400 Subject: [PATCH] feat: colors for mixed charts --- src/plugins/plugin.colors.ts | 50 +++++++++++++------------- test/fixtures/plugin.colors/mixed.js | 41 +++++++++++++++++++++ test/fixtures/plugin.colors/mixed.png | Bin 0 -> 37711 bytes 3 files changed, 67 insertions(+), 24 deletions(-) create mode 100644 test/fixtures/plugin.colors/mixed.js create mode 100644 test/fixtures/plugin.colors/mixed.png diff --git a/src/plugins/plugin.colors.ts b/src/plugins/plugin.colors.ts index fdc8d7e3b69..8286c27c569 100644 --- a/src/plugins/plugin.colors.ts +++ b/src/plugins/plugin.colors.ts @@ -4,8 +4,6 @@ export interface ColorsPluginOptions { enabled?: boolean; } -type DatasetColorizer = (dataset: ChartDataset, i: number) => void; - interface ColorsDescriptor { backgroundColor?: unknown; borderColor?: unknown; @@ -32,38 +30,41 @@ function getBackgroundColor(i: number) { return BACKGROUND_COLORS[i % BACKGROUND_COLORS.length]; } -function createDefaultDatasetColorizer() { - return (dataset: ChartDataset, i: number) => { - dataset.borderColor = getBorderColor(i); - dataset.backgroundColor = getBackgroundColor(i); - }; +function colorizeDefaultDataset(dataset: ChartDataset, i: number) { + dataset.borderColor = getBorderColor(i); + dataset.backgroundColor = getBackgroundColor(i); + + return ++i; } -function createDoughnutDatasetColorizer() { - let i = 0; +function colorizeDoughnutDataset(dataset: ChartDataset, i: number) { + dataset.backgroundColor = dataset.data.map(() => getBorderColor(i++)); - return (dataset: ChartDataset) => { - dataset.backgroundColor = dataset.data.map(() => getBorderColor(i++)); - }; + return i; +} + +function colorizePolarAreaDataset(dataset: ChartDataset, i: number) { + dataset.backgroundColor = dataset.data.map(() => getBackgroundColor(i++)); + + return i; } -function createPolarAreaDatasetColorizer() { +function getColorizer(chartType: string) { let i = 0; return (dataset: ChartDataset) => { - dataset.backgroundColor = dataset.data.map(() => getBackgroundColor(i++)); + const type = dataset.type || chartType; + + if (type === 'doughnut' || type === 'pie') { + i = colorizeDoughnutDataset(dataset, i); + } else if (type === 'polarArea') { + i = colorizePolarAreaDataset(dataset, i); + } else if (type) { + i = colorizeDefaultDataset(dataset, i); + } }; } -function getColorizer(type: string) { - if (type === 'doughnut' || type === 'pie') { - return createDoughnutDatasetColorizer(); - } else if (type === 'polarArea') { - return createPolarAreaDatasetColorizer(); - } - return createDefaultDatasetColorizer(); -} - function containsColorsDefinitions( descriptors: ColorsDescriptor[] | Record ) { @@ -100,7 +101,8 @@ export default { return; } - const colorizer: DatasetColorizer = getColorizer(type); + const colorizer = getColorizer(type); + datasets.forEach(colorizer); } }; diff --git a/test/fixtures/plugin.colors/mixed.js b/test/fixtures/plugin.colors/mixed.js new file mode 100644 index 00000000000..2ea5b83b910 --- /dev/null +++ b/test/fixtures/plugin.colors/mixed.js @@ -0,0 +1,41 @@ +module.exports = { + config: { + data: { + labels: [0, 1, 2, 3], + datasets: [ + { + type: 'line', + data: [5, 20, 1, 10], + }, + { + type: 'bar', + data: [6, 16, 3, 19] + }, + { + type: 'pie', + data: [5, 20, 1, 10], + } + ] + }, + options: { + scales: { + x: { + ticks: { + display: false, + } + }, + y: { + ticks: { + display: false, + } + } + }, + plugins: { + legend: false, + colors: { + enabled: true + } + } + } + } +}; diff --git a/test/fixtures/plugin.colors/mixed.png b/test/fixtures/plugin.colors/mixed.png new file mode 100644 index 0000000000000000000000000000000000000000..d507dd0f8446dcefcbc5a36016a122a5aa24016a GIT binary patch literal 37711 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