]> git.ipfire.org Git - thirdparty/Chart.js.git/commitdiff
Allow color plugin to work with custom dataset controllers (#10904)
authorJacco van den Berg <jaccoberg2281@gmail.com>
Fri, 25 Nov 2022 14:03:49 +0000 (15:03 +0100)
committerGitHub <noreply@github.com>
Fri, 25 Nov 2022 14:03:49 +0000 (15:03 +0100)
src/plugins/plugin.colors.ts

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