]> git.ipfire.org Git - thirdparty/Chart.js.git/commitdiff
Adds a better error message when the chart type is incorrect. Previously the user...
authoretimberg <evert.timberg@gmail.com>
Sat, 25 Mar 2017 23:34:55 +0000 (19:34 -0400)
committerEvert Timberg <evert.timberg+github@gmail.com>
Mon, 3 Apr 2017 21:39:09 +0000 (17:39 -0400)
This gives something that's easier to understand and debug.

src/core/core.controller.js
test/specs/core.controller.tests.js

index 1090aa9b80d71ad4f127663c0bb0bdaa1b230f7a..71eb3bb628c17beb68a88a6bbb1646a277f6c7c5 100644 (file)
@@ -293,7 +293,12 @@ module.exports = function(Chart) {
                                if (meta.controller) {
                                        meta.controller.updateIndex(datasetIndex);
                                } else {
-                                       meta.controller = new Chart.controllers[meta.type](me, datasetIndex);
+                                       var ControllerClass = Chart.controllers[meta.type];
+                                       if (ControllerClass === undefined) {
+                                               throw new Error('"' + meta.type + '" is not a chart type.');
+                                       }
+
+                                       meta.controller = new ControllerClass(me, datasetIndex);
                                        newControllers.push(meta.controller);
                                }
                        }, me);
index 18caee8bdb2799fcbc6e0cac2889449a8d8e92d6..1849da8c36381e1c741ca033e12bd5a77de6215f 100644 (file)
@@ -144,6 +144,32 @@ describe('Chart', function() {
                        expect(scaleOptions.xAxes[0].position).toBe('bottom');
                        expect(scaleOptions.yAxes[0].position).toBe('left');
                });
+
+               it('should throw an error if the chart type is incorrect', function() {
+                       function createChart() {
+                               acquireChart({
+                                       type: 'area',
+                                       data: {
+                                               datasets: [{
+                                                       label: 'first',
+                                                       data: [10, 20]
+                                               }],
+                                               labels: ['0', '1'],
+                                       },
+                                       options: {
+                                               scales: {
+                                                       xAxes: [{
+                                                               position: 'left',
+                                                       }],
+                                                       yAxes: [{
+                                                               position: 'bottom'
+                                                       }]
+                                               }
+                                       }
+                               });
+                       }
+                       expect(createChart).toThrow(new Error('"area" is not a chart type.'));
+               });
        });
 
        describe('config.options.responsive: false', function() {