]> git.ipfire.org Git - thirdparty/Chart.js.git/commitdiff
Toggling of doughnut items now works
authorEvert Timberg <evert.timberg@gmail.com>
Tue, 8 Dec 2015 02:23:20 +0000 (21:23 -0500)
committerEvert Timberg <evert.timberg@gmail.com>
Tue, 8 Dec 2015 02:23:20 +0000 (21:23 -0500)
src/controllers/controller.doughnut.js

index d65d10d39005396e7c3bf84353dc42cd344ba21b..fddc97da1caef8be39543a40f57c09242ff85927 100644 (file)
                                                return {
                                                        text: label,
                                                        fillStyle: data.datasets[0].backgroundColor[i],
+                                                       hidden: isNaN(data.datasets[0].data[i]),
 
                                                        // Extra data used for toggling the correct item
                                                        index: i
                                                };
                                        });
                                }
+                       },
+                       onClick: function(e, legendItem) {
+                               helpers.each(this.chart.data.datasets, function(dataset) {
+                                       dataset.metaHiddenData = dataset.metaHiddenData || [];
+                                       var idx = legendItem.index;
+
+                                       if (!isNaN(dataset.data[idx])) {
+                                               dataset.metaHiddenData[idx] = dataset.data[idx];
+                                               dataset.data[idx] = NaN;
+                                       } else if (!isNaN(dataset.metaHiddenData[idx])) {
+                                               dataset.data[idx] = dataset.metaHiddenData[idx];
+                                       }
+                               });
+
+                               this.chart.update();
                        }
                },
 
 
                        this.getDataset().total = 0;
                        helpers.each(this.getDataset().data, function(value) {
-                               this.getDataset().total += Math.abs(value);
+                               if (!isNaN(value)) {
+                                       this.getDataset().total += Math.abs(value);
+                               }
                        }, this);
 
                        this.outerRadius = this.chart.outerRadius - (this.chart.radiusLength * this.getRingIndex(this.index));
                },
 
                calculateCircumference: function(value) {
-                       if (this.getDataset().total > 0) {
+                       if (this.getDataset().total > 0 && !isNaN(value)) {
                                return (Math.PI * 1.999999) * (value / this.getDataset().total);
                        } else {
                                return 0;