From 254bd4bf86ab8dc9801c61844cd3e668e3e2090f Mon Sep 17 00:00:00 2001 From: GabrielMancik Date: Sat, 15 Apr 2017 18:37:49 +0200 Subject: [PATCH] Fixed calculation of scale min and max when dataset contains no values (#4064) * Fixed different calculation of scale min and max when dataset contains no values * Removed trailing spaces * Added test for correct min/max calculation * Removed trailing spaces --- src/scales/scale.linearbase.js | 12 ++++++++++-- test/specs/scale.linear.tests.js | 29 +++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/src/scales/scale.linearbase.js b/src/scales/scale.linearbase.js index dc700f304..b87272177 100644 --- a/src/scales/scale.linearbase.js +++ b/src/scales/scale.linearbase.js @@ -30,13 +30,21 @@ module.exports = function(Chart) { if (tickOpts.min !== undefined) { me.min = tickOpts.min; } else if (tickOpts.suggestedMin !== undefined) { - me.min = Math.min(me.min, tickOpts.suggestedMin); + if (me.min === null) { + me.min = tickOpts.suggestedMin; + } else { + me.min = Math.min(me.min, tickOpts.suggestedMin); + } } if (tickOpts.max !== undefined) { me.max = tickOpts.max; } else if (tickOpts.suggestedMax !== undefined) { - me.max = Math.max(me.max, tickOpts.suggestedMax); + if (me.max === null) { + me.max = tickOpts.suggestedMax; + } else { + me.max = Math.max(me.max, tickOpts.suggestedMax); + } } if (me.min === me.max) { diff --git a/test/specs/scale.linear.tests.js b/test/specs/scale.linear.tests.js index e94741cf6..c63cad338 100644 --- a/test/specs/scale.linear.tests.js +++ b/test/specs/scale.linear.tests.js @@ -117,6 +117,35 @@ describe('Linear Scale', function() { expect(chart.scales.yScale0.max).toBe(150); }); + it('Should correctly determine the max & min when no values provided and suggested minimum and maximum are set', function() { + var chart = window.acquireChart({ + type: 'bar', + data: { + datasets: [{ + yAxisID: 'yScale0', + data: [] + }], + labels: ['a', 'b', 'c', 'd', 'e', 'f'] + }, + options: { + scales: { + yAxes: [{ + id: 'yScale0', + type: 'linear', + ticks: { + suggestedMin: -10, + suggestedMax: 15 + } + }] + } + } + }); + + expect(chart.scales.yScale0).not.toEqual(undefined); // must construct + expect(chart.scales.yScale0.min).toBe(-10); + expect(chart.scales.yScale0.max).toBe(15); + }); + it('Should correctly determine the max & min data values ignoring hidden datasets', function() { var chart = window.acquireChart({ type: 'bar', -- 2.47.3