From: Jukka Kurkela Date: Fri, 3 Jan 2020 14:07:33 +0000 (+0200) Subject: Linear scale: use suggested limits as defaults (#6892) X-Git-Tag: v3.0.0-alpha~168 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=03f65d4e7f9825a20cdb4bb697cfb589c150fcc2;p=thirdparty%2FChart.js.git Linear scale: use suggested limits as defaults (#6892) * Linear scale: use suggested limits as defaults * Review update --- diff --git a/src/scales/scale.linear.js b/src/scales/scale.linear.js index 321834991..27a67a76f 100644 --- a/src/scales/scale.linear.js +++ b/src/scales/scale.linear.js @@ -1,6 +1,7 @@ 'use strict'; -import helpers from '../helpers/index'; +import {isFinite, valueOrDefault} from '../helpers/helpers.core'; +import {_parseFont} from '../helpers/helpers.options'; import LinearScaleBase from './scale.linearbase'; import Ticks from '../core/core.ticks'; @@ -12,18 +13,17 @@ const defaultConfig = { class LinearScale extends LinearScaleBase { determineDataLimits() { - var me = this; - var DEFAULT_MIN = 0; - var DEFAULT_MAX = 1; - var minmax = me._getMinMax(true); - var min = minmax.min; - var max = minmax.max; + const me = this; + const options = me.options; + const minmax = me._getMinMax(true); + let min = minmax.min; + let max = minmax.max; - me.min = helpers.isFinite(min) && !isNaN(min) ? min : DEFAULT_MIN; - me.max = helpers.isFinite(max) && !isNaN(max) ? max : DEFAULT_MAX; + me.min = isFinite(min) ? min : valueOrDefault(options.suggestedMin, 0); + me.max = isFinite(max) ? max : valueOrDefault(options.suggestedMax, 1); // Backward compatible inconsistent min for stacked - if (me.options.stacked && min > 0) { + if (options.stacked && min > 0) { me.min = 0; } @@ -39,7 +39,7 @@ class LinearScale extends LinearScaleBase { if (me.isHorizontal()) { return Math.ceil(me.width / 40); } - tickFont = helpers.options._parseFont(me.options.ticks); + tickFont = _parseFont(me.options.ticks); return Math.ceil(me.height / tickFont.lineHeight); } diff --git a/test/specs/scale.linear.tests.js b/test/specs/scale.linear.tests.js index 90a4f05fd..cad0e5181 100644 --- a/test/specs/scale.linear.tests.js +++ b/test/specs/scale.linear.tests.js @@ -141,6 +141,27 @@ describe('Linear Scale', function() { expect(chart.scales.y.max).toBe(15); }); + it('Should correctly determine the max & min when no datasets are associated and suggested minimum and maximum are set', function() { + var chart = window.acquireChart({ + type: 'bar', + data: { + datasets: [] + }, + options: { + scales: { + y: { + type: 'linear', + suggestedMin: -10, + suggestedMax: 0 + } + } + } + }); + + expect(chart.scales.y.min).toBe(-10); + expect(chart.scales.y.max).toBe(0); + }); + it('Should correctly determine the max & min data values ignoring hidden datasets', function() { var chart = window.acquireChart({ type: 'bar',