Allow color plugin to work with custom dataset controllers (#10904)

This commit is contained in:
Jacco van den Berg 2022-11-25 15:03:49 +01:00 committed by GitHub
parent 5fdc0f71af
commit 8239567802
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,3 +1,4 @@
import {DoughnutController, PolarAreaController} from '../index.js';
import type {Chart, ChartConfiguration, ChartDataset} from '../types.js'; import type {Chart, ChartConfiguration, ChartDataset} from '../types.js';
export interface ColorsPluginOptions { export interface ColorsPluginOptions {
@ -49,17 +50,17 @@ function colorizePolarAreaDataset(dataset: ChartDataset, i: number) {
return i; return i;
} }
function getColorizer(chartType: string) { function getColorizer(chart: Chart) {
let i = 0; let i = 0;
return (dataset: ChartDataset) => { return (dataset: ChartDataset, datasetIndex: number) => {
const type = dataset.type || chartType; const controller = chart.getDatasetMeta(datasetIndex).controller;
if (type === 'doughnut' || type === 'pie') { if (controller instanceof DoughnutController) {
i = colorizeDoughnutDataset(dataset, i); i = colorizeDoughnutDataset(dataset, i);
} else if (type === 'polarArea') { } else if (controller instanceof PolarAreaController) {
i = colorizePolarAreaDataset(dataset, i); i = colorizePolarAreaDataset(dataset, i);
} else if (type) { } else if (controller) {
i = colorizeDefaultDataset(dataset, i); i = colorizeDefaultDataset(dataset, i);
} }
}; };
@ -101,7 +102,7 @@ export default {
return; return;
} }
const colorizer = getColorizer(type); const colorizer = getColorizer(chart);
datasets.forEach(colorizer); datasets.forEach(colorizer);
} }