Scale: Make sure grace is applied only once (#8913)

* Scale: Make sure grace is applied only once
* Add description to fixture
This commit is contained in:
Jukka Kurkela
2021-04-17 14:31:15 +03:00
committed by GitHub
parent 9e06f90d14
commit 853f094937
10 changed files with 31 additions and 3 deletions

View File

@@ -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;
}

View File

@@ -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

View File

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

View 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
}
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB