buildOrUpdateControllers now returns an array of all the new controllers that were created. Build controllers before updating the scales but only reset them afterwards because the scales need to update label moments first.

This commit is contained in:
Evert Timberg 2016-01-21 22:00:21 -05:00
parent 76ef7de646
commit 59e3ccb42a

View File

@ -208,8 +208,10 @@
Chart.layoutService.update(this, this.chart.width, this.chart.height); Chart.layoutService.update(this, this.chart.width, this.chart.height);
}, },
buildOrUpdateControllers: function buildOrUpdateControllers(resetNewControllers) { buildOrUpdateControllers: function buildOrUpdateControllers() {
var types = []; var types = [];
var newControllers = [];
helpers.each(this.data.datasets, function(dataset, datasetIndex) { helpers.each(this.data.datasets, function(dataset, datasetIndex) {
if (!dataset.type) { if (!dataset.type) {
dataset.type = this.config.type; dataset.type = this.config.type;
@ -222,10 +224,7 @@
dataset.controller.updateIndex(datasetIndex); dataset.controller.updateIndex(datasetIndex);
} else { } else {
dataset.controller = new Chart.controllers[type](this, datasetIndex); dataset.controller = new Chart.controllers[type](this, datasetIndex);
newControllers.push(dataset.controller);
if (resetNewControllers) {
dataset.controller.reset();
}
} }
}, this); }, this);
@ -237,6 +236,8 @@
} }
} }
} }
return newControllers;
}, },
resetElements: function resetElements() { resetElements: function resetElements() {
@ -250,10 +251,15 @@
this.tooltip._data = this.data; this.tooltip._data = this.data;
// Make sure dataset controllers are updated and new controllers are reset // Make sure dataset controllers are updated and new controllers are reset
this.buildOrUpdateControllers(true); var newControllers = this.buildOrUpdateControllers();
Chart.layoutService.update(this, this.chart.width, this.chart.height); Chart.layoutService.update(this, this.chart.width, this.chart.height);
// Can only reset the new controllers after the scales have been updated
helpers.each(newControllers, function(controller) {
controller.reset();
});
// Make sure all dataset controllers have correct meta data counts // Make sure all dataset controllers have correct meta data counts
helpers.each(this.data.datasets, function(dataset, datasetIndex) { helpers.each(this.data.datasets, function(dataset, datasetIndex) {
dataset.controller.buildOrUpdateElements(); dataset.controller.buildOrUpdateElements();