Fix hidden charts hanging the browser

Ensure width cannot be greater than maxWidth. Similar to `minSize.height` calculation.
This commit is contained in:
Thomas Redston 2017-04-04 01:48:55 +01:00 committed by Evert Timberg
parent 86fb98eb37
commit 3ec6377f11
3 changed files with 35 additions and 4 deletions

View File

@ -356,7 +356,7 @@ module.exports = function(Chart) {
} else {
largestTextWidth += me.options.ticks.padding;
}
minSize.width += largestTextWidth;
minSize.width = Math.min(me.maxWidth, minSize.width + largestTextWidth);
me.paddingTop = tickFont.size / 2;
me.paddingBottom = tickFont.size / 2;
}

View File

@ -145,18 +145,19 @@ module.exports = function(Chart) {
var unitSizeInMilliSeconds = unitDefinition.size;
var sizeInUnits = Math.ceil((max - min) / unitSizeInMilliSeconds);
var multiplier = 1;
var range = max - min;
if (unitDefinition.steps) {
// Have an array of steps
var numSteps = unitDefinition.steps.length;
for (var i = 0; i < numSteps && sizeInUnits > maxTicks; i++) {
multiplier = unitDefinition.steps[i];
sizeInUnits = Math.ceil((max - min) / (unitSizeInMilliSeconds * multiplier));
sizeInUnits = Math.ceil(range / (unitSizeInMilliSeconds * multiplier));
}
} else {
while (sizeInUnits > maxTicks) {
while (sizeInUnits > maxTicks && maxTicks > 0) {
++multiplier;
sizeInUnits = Math.ceil((max - min) / (unitSizeInMilliSeconds * multiplier));
sizeInUnits = Math.ceil(range / (unitSizeInMilliSeconds * multiplier));
}
}

View File

@ -471,4 +471,34 @@ describe('Time scale tests', function() {
unit: 'day',
});
});
it('does not create a negative width chart when hidden', function() {
var chart = window.acquireChart({
type: 'line',
data: {
datasets: [{
data: []
}]
},
options: {
scales: {
xAxes: [{
type: 'time',
time: {
min: moment().subtract(1, 'months'),
max: moment(),
}
}],
},
responsive: true,
},
}, {
wrapper: {
style: 'display: none',
},
});
expect(chart.scales['y-axis-0'].width).toEqual(0);
expect(chart.scales['y-axis-0'].maxWidth).toEqual(0);
expect(chart.width).toEqual(0);
});
});