Scale: Make sure grace is applied only once (#8913)
* Scale: Make sure grace is applied only once * Add description to fixture
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 6.7 KiB |
|
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
26
test/fixtures/scale.linear/grace/issue-8912.js
vendored
Normal file
@@ -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
|
||||
}
|
||||
};
|
||||
BIN
test/fixtures/scale.linear/grace/issue-8912.png
vendored
Normal file
|
After Width: | Height: | Size: 11 KiB |