diff --git a/src/core/core.scale.js b/src/core/core.scale.js index c5c6a98a762..2eda295df0a 100644 --- a/src/core/core.scale.js +++ b/src/core/core.scale.js @@ -3,7 +3,7 @@ import {_alignPixel, _measureText, renderText, clipArea, unclipArea} from '../he import {callback as call, each, finiteOrDefault, isArray, isFinite, isNullOrUndef, isObject} from '../helpers/helpers.core'; import {toDegrees, toRadians, _int16Range, _limitValue, HALF_PI} from '../helpers/helpers.math'; import {_alignStartEnd, _toLeftRightCenter} from '../helpers/helpers.extras'; -import {toFont, toPadding} from '../helpers/helpers.options'; +import {toFont, toPadding, _addGrace} from '../helpers/helpers.options'; import './core.scale.defaults'; @@ -204,6 +204,7 @@ export default class Scale extends Element { this.labelRotation = undefined; this.min = undefined; this.max = undefined; + this._range = undefined; /** @type {Tick[]} */ this.ticks = []; /** @type {object[]|null} */ @@ -401,6 +402,7 @@ export default class Scale extends Element { me.beforeDataLimits(); me.determineDataLimits(); me.afterDataLimits(); + me._range = _addGrace(me, me.options.grace); me._dataLimitsCached = true; } diff --git a/src/scales/scale.linearbase.js b/src/scales/scale.linearbase.js index 3a671d269cd..9eda15c33d3 100644 --- a/src/scales/scale.linearbase.js +++ b/src/scales/scale.linearbase.js @@ -2,7 +2,6 @@ import {isNullOrUndef} from '../helpers/helpers.core'; import {almostEquals, almostWhole, niceNum, _decimalPlaces, _setMinAndMaxByKey, sign} from '../helpers/helpers.math'; import Scale from '../core/core.scale'; import {formatNumber} from '../helpers/helpers.intl'; -import {_addGrace} from '../helpers/helpers.options'; /** * Generate a set of linear ticks for an axis @@ -232,7 +231,8 @@ export default class LinearScaleBase extends Scale { step: tickOpts.stepSize, count: tickOpts.count, }; - const ticks = generateTicks(numericGeneratorOptions, _addGrace(me, opts.grace)); + const dataRange = me._range || me; + const ticks = generateTicks(numericGeneratorOptions, dataRange); // At this point, we need to update our max and min given the tick values, // since we probably have expanded the range of the scale diff --git a/test/fixtures/scale.linear/grace-neg.js b/test/fixtures/scale.linear/grace/grace-neg.js similarity index 100% rename from test/fixtures/scale.linear/grace-neg.js rename to test/fixtures/scale.linear/grace/grace-neg.js diff --git a/test/fixtures/scale.linear/grace-neg.png b/test/fixtures/scale.linear/grace/grace-neg.png similarity index 100% rename from test/fixtures/scale.linear/grace-neg.png rename to test/fixtures/scale.linear/grace/grace-neg.png diff --git a/test/fixtures/scale.linear/grace-pos.js b/test/fixtures/scale.linear/grace/grace-pos.js similarity index 100% rename from test/fixtures/scale.linear/grace-pos.js rename to test/fixtures/scale.linear/grace/grace-pos.js diff --git a/test/fixtures/scale.linear/grace-pos.png b/test/fixtures/scale.linear/grace/grace-pos.png similarity index 100% rename from test/fixtures/scale.linear/grace-pos.png rename to test/fixtures/scale.linear/grace/grace-pos.png diff --git a/test/fixtures/scale.linear/grace.js b/test/fixtures/scale.linear/grace/grace.js similarity index 100% rename from test/fixtures/scale.linear/grace.js rename to test/fixtures/scale.linear/grace/grace.js diff --git a/test/fixtures/scale.linear/grace.png b/test/fixtures/scale.linear/grace/grace.png similarity index 100% rename from test/fixtures/scale.linear/grace.png rename to test/fixtures/scale.linear/grace/grace.png diff --git a/test/fixtures/scale.linear/grace/issue-8912.js b/test/fixtures/scale.linear/grace/issue-8912.js new file mode 100644 index 00000000000..3c11da49db9 --- /dev/null +++ b/test/fixtures/scale.linear/grace/issue-8912.js @@ -0,0 +1,26 @@ +module.exports = { + description: 'https://github.com/chartjs/Chart.js/issues/8912', + config: { + type: 'bar', + data: { + labels: ['Red', 'Blue'], + datasets: [{ + data: [10, -10] + }] + }, + options: { + plugins: false, + scales: { + x: { + display: false, + }, + y: { + grace: '100%' + } + } + } + }, + options: { + spriteText: true + } +}; diff --git a/test/fixtures/scale.linear/grace/issue-8912.png b/test/fixtures/scale.linear/grace/issue-8912.png new file mode 100644 index 00000000000..0a6e768040d Binary files /dev/null and b/test/fixtures/scale.linear/grace/issue-8912.png differ