]> git.ipfire.org Git - thirdparty/Chart.js.git/commitdiff
Fixed HorizontalBar: stacked axis, displays NaN when all legends
authorJerry Chang <therealjerrycan@gmail.com>
Fri, 13 Jan 2017 16:39:03 +0000 (08:39 -0800)
committerEvert Timberg <evert.timberg+github@gmail.com>
Fri, 10 Feb 2017 23:40:37 +0000 (18:40 -0500)
unselected (#3770)

added ability to take snapshot of chart limits in order to be used
when max and min value is not finite

added ignore files

src/scales/scale.linear.js
test/scale.linear.tests.js

index 319243b23e5b566d666c8ae7d628b584ab95d4bb..1fe840eec73f1b2116fad1dcdee6b1e8063ebe41 100644 (file)
@@ -12,6 +12,7 @@ module.exports = function(Chart) {
        };
 
        var LinearScale = Chart.LinearScaleBase.extend({
+
                determineDataLimits: function() {
                        var me = this;
                        var opts = me.options;
@@ -19,6 +20,8 @@ module.exports = function(Chart) {
                        var data = chart.data;
                        var datasets = data.datasets;
                        var isHorizontal = me.isHorizontal();
+                       var DEFAULT_MIN = 0;
+                       var DEFAULT_MAX = 1;
 
                        function IDMatches(meta) {
                                return isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;
@@ -121,6 +124,9 @@ module.exports = function(Chart) {
                                });
                        }
 
+                       me.min = isFinite(me.min) ? me.min : DEFAULT_MIN;
+                       me.max = isFinite(me.max) ? me.max : DEFAULT_MAX;
+
                        // Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero
                        this.handleTickRangeOptions();
                },
index 44c4dcf29e307ec913cd9bb90f4ec29ee4a56a5d..0f63e8ce587ef5226a15290f12f29c6d35209d9f 100644 (file)
@@ -801,4 +801,47 @@ describe('Linear Scale', function() {
                var yScale = chart.scales.yScale0;
                expect(yScale.width).toBeCloseToPixel(0);
        });
+
+       it('max and min value should be valid and finite when charts datasets are hidden', function() {
+               var barData = {
+                       labels: ['S1', 'S2', 'S3'],
+                       datasets: [{
+                               label: 'Closed',
+                               backgroundColor: '#382765',
+                               data: [2500, 2000, 1500]
+                       }, {
+                               label: 'In Progress',
+                               backgroundColor: '#7BC225',
+                               data: [1000, 2000, 1500]
+                       }, {
+                               label: 'Assigned',
+                               backgroundColor: '#ffC225',
+                               data: [1000, 2000, 1500]
+                       }]
+               };
+
+               var chart = window.acquireChart({
+                       type: 'horizontalBar',
+                       data: barData,
+                       options: {
+                               scales: {
+                                       xAxes: [{
+                                               stacked: true
+                                       }],
+                                       yAxes: [{
+                                               stacked: true
+                                       }]
+                               }
+                       }
+               });
+
+               barData.datasets.forEach(function(data, index) {
+                       var meta = chart.getDatasetMeta(index);
+                       meta.hidden = true;
+                       chart.update();
+               });
+
+               expect(chart.scales['x-axis-0'].min).toEqual(0);
+               expect(chart.scales['x-axis-0'].max).toEqual(1);
+       });
 });