mirror of
https://github.com/chartjs/Chart.js.git
synced 2025-12-08 20:36:08 +00:00
Add sanity check for stepSize (#9679)
This commit is contained in:
parent
8e68481ec4
commit
5587738fa4
@ -222,6 +222,10 @@ export default class LinearScaleBase extends Scale {
|
||||
|
||||
if (stepSize) {
|
||||
maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;
|
||||
if (maxTicks > 1000) {
|
||||
console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);
|
||||
maxTicks = 1000;
|
||||
}
|
||||
} else {
|
||||
maxTicks = this.computeTickLimit();
|
||||
maxTicksLimit = maxTicksLimit || 11;
|
||||
|
||||
@ -639,6 +639,29 @@ describe('Linear Scale', function() {
|
||||
expect(getLabels(chart.scales.y)).toEqual(['1', '3', '5', '7', '9', '11']);
|
||||
});
|
||||
|
||||
it('Should not generate insane amounts of ticks with small stepSize and large range', function() {
|
||||
var chart = window.acquireChart({
|
||||
type: 'bar',
|
||||
options: {
|
||||
scales: {
|
||||
y: {
|
||||
type: 'linear',
|
||||
min: 1,
|
||||
max: 1E10,
|
||||
ticks: {
|
||||
stepSize: 2,
|
||||
autoSkip: false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
expect(chart.scales.y.min).toBe(1);
|
||||
expect(chart.scales.y.max).toBe(1E10);
|
||||
expect(chart.scales.y.ticks.length).toBeLessThanOrEqual(1000);
|
||||
});
|
||||
|
||||
it('Should create decimal steps if stepSize is a decimal number', function() {
|
||||
var chart = window.acquireChart({
|
||||
type: 'bar',
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user