When all datasets are hidden, the linear scale defaults to a range of 0 - 1.

If `ticks.min` was set this would not set the range correctly.
Added a test to cover this case as well
This commit is contained in:
etimberg 2017-06-25 09:06:22 -04:00 committed by Evert Timberg
parent 548edc65ea
commit ccb2898539
3 changed files with 48 additions and 2 deletions

View File

@ -124,8 +124,8 @@ module.exports = function(Chart) {
});
}
me.min = isFinite(me.min) ? me.min : DEFAULT_MIN;
me.max = isFinite(me.max) ? me.max : DEFAULT_MAX;
me.min = isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN;
me.max = isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX;
// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero
this.handleTickRangeOptions();

View File

@ -27,6 +27,9 @@ module.exports = function(Chart) {
}
}
var setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined;
var setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined;
if (tickOpts.min !== undefined) {
me.min = tickOpts.min;
} else if (tickOpts.suggestedMin !== undefined) {
@ -47,6 +50,20 @@ module.exports = function(Chart) {
}
}
if (setMin !== setMax) {
// We set the min or the max but not both.
// So ensure that our range is good
// Inverted or 0 length range can happen when
// ticks.min is set, and no datasets are visible
if (me.min >= me.max) {
if (setMin) {
me.max = me.min + 1;
} else {
me.min = me.max - 1;
}
}
}
if (me.min === me.max) {
me.max++;

View File

@ -877,4 +877,33 @@ describe('Linear Scale', function() {
expect(chart.scales['x-axis-0'].min).toEqual(0);
expect(chart.scales['x-axis-0'].max).toEqual(1);
});
it('max and min value should be valid when min is set and all datasets are hidden', function() {
var barData = {
labels: ['S1', 'S2', 'S3'],
datasets: [{
label: 'dataset 1',
backgroundColor: '#382765',
data: [2500, 2000, 1500],
hidden: true,
}]
};
var chart = window.acquireChart({
type: 'horizontalBar',
data: barData,
options: {
scales: {
xAxes: [{
ticks: {
min: 20
}
}]
}
}
});
expect(chart.scales['x-axis-0'].min).toEqual(20);
expect(chart.scales['x-axis-0'].max).toEqual(21);
});
});