From 19a30f5090bb806a97dc175660f9a1d2ece5eb69 Mon Sep 17 00:00:00 2001 From: Evert Timberg Date: Tue, 16 Jun 2015 22:04:52 -0400 Subject: [PATCH] Update controllers to handle adding new datasets --- src/controllers/controller.bar.js | 4 +++- src/controllers/controller.doughnut.js | 4 +++- src/controllers/controller.line.js | 3 +++ src/controllers/controller.polarArea.js | 3 +++ src/controllers/controller.radar.js | 3 +++ src/core/core.controller.js | 21 +++++++++++++++++++-- 6 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/controllers/controller.bar.js b/src/controllers/controller.bar.js index 0bb92041d..e4f7fa918 100644 --- a/src/controllers/controller.bar.js +++ b/src/controllers/controller.bar.js @@ -40,7 +40,9 @@ this.linkScales(); this.addElements(); }, - + updateIndex: function(datasetIndex) { + this.index = datasetIndex; + }, linkScales: function() { if (!this.getDataset().xAxisID) { this.getDataset().xAxisID = this.chart.options.scales.xAxes[0].id; diff --git a/src/controllers/controller.doughnut.js b/src/controllers/controller.doughnut.js index 795f0d115..dc8cbdc35 100644 --- a/src/controllers/controller.doughnut.js +++ b/src/controllers/controller.doughnut.js @@ -38,7 +38,9 @@ this.linkScales(); this.addElements(); }, - + updateIndex: function(datasetIndex) { + this.index = datasetIndex; + }, linkScales: function() { // no scales for doughnut }, diff --git a/src/controllers/controller.line.js b/src/controllers/controller.line.js index 19c9d6f53..2e3e341e2 100644 --- a/src/controllers/controller.line.js +++ b/src/controllers/controller.line.js @@ -36,6 +36,9 @@ this.linkScales(); this.addElements(); }, + updateIndex: function(datasetIndex) { + this.index = datasetIndex; + }, linkScales: function() { if (!this.getDataset().xAxisID) { diff --git a/src/controllers/controller.polarArea.js b/src/controllers/controller.polarArea.js index 2aa0e4989..733ab9dc6 100644 --- a/src/controllers/controller.polarArea.js +++ b/src/controllers/controller.polarArea.js @@ -30,6 +30,9 @@ this.linkScales(); this.addElements(); }, + updateIndex: function(datasetIndex) { + this.index = datasetIndex; + }, linkScales: function() { // no scales for doughnut diff --git a/src/controllers/controller.radar.js b/src/controllers/controller.radar.js index 28c0f2ca8..df35de5b1 100644 --- a/src/controllers/controller.radar.js +++ b/src/controllers/controller.radar.js @@ -31,6 +31,9 @@ this.linkScales(); this.addElements(); }, + updateIndex: function(datasetIndex) { + this.index = datasetIndex; + }, linkScales: function() { // No need. Single scale only diff --git a/src/core/core.controller.js b/src/core/core.controller.js index ac081a748..1d098e890 100644 --- a/src/core/core.controller.js +++ b/src/core/core.controller.js @@ -52,7 +52,7 @@ // Make sure controllers are built first so that each dataset is bound to an axis before the scales // are built this.ensureScalesHaveIDs(); - this.buildControllers(); + this.buildOrUpdateControllers(); this.buildScales(); this.resetElements(); this.initToolTip(); @@ -75,6 +75,23 @@ return this; }, + addDataset: function addDataset(dataset, index) { + if (index !== undefined) { + this.data.datasets.splice(index, 0, dataset); + } else { + this.data.datasets.push(dataset); + } + + this.buildOrUpdateControllers(); + dataset.controller.reset(); // so that animation looks ok + this.update(); + }, + removeDataset: function removeDataset(index) { + this.data.datasets.splice(index, 1); + this.buildOrUpdateControllers(); + this.update(); + }, + resize: function resize(silent) { this.stop(); var canvas = this.chart.canvas, @@ -162,7 +179,7 @@ Chart.scaleService.fitScalesForChart(this, this.chart.width, this.chart.height); }, - buildControllers: function() { + buildOrUpdateControllers: function() { helpers.each(this.data.datasets, function(dataset, datasetIndex) { var type = dataset.type || this.config.type; if (dataset.controller) { -- 2.47.3