myLineChart.update(); // Calling update now animates the position of March from 90 to 50.
```
+#### .reset()
+
+Reset the chart to it's state before the initial animation. A new animation can then be triggered using `update`.
+
+```javascript
+myLineChart.reset();
+```
+
#### .render(duration, lazy)
Triggers a redraw of all chart elements. Note, this does not update elements for new data. Use `.update()` in that case.
return newControllers;
},
+ /**
+ * Reset the elements of all datasets
+ * @method resetElements
+ * @private
+ */
resetElements: function() {
var me = this;
helpers.each(me.data.datasets, function(dataset, datasetIndex) {
}, me);
},
+ /**
+ * Resets the chart back to it's state before the initial animation
+ * @method reset
+ */
+ reset: function() {
+ this.resetElements();
+ this.tooltip.initialize();
+ },
+
update: function(animationDuration, lazy) {
var me = this;
Chart.plugins.notify('beforeUpdate', [me]);
expect(wrapper.firstChild.tagName).toBe('CANVAS');
});
});
+
+ describe('controller.reset', function() {
+ it('should reset the chart elements', function() {
+ var chart = acquireChart({
+ type: 'line',
+ data: {
+ labels: ['A', 'B', 'C', 'D'],
+ datasets: [{
+ data: [10, 20, 30, 0]
+ }]
+ },
+ options: {
+ responsive: true
+ }
+ });
+
+ var meta = chart.getDatasetMeta(0);
+
+ // Verify that points are at their initial correct location,
+ // then we will reset and see that they moved
+ expect(meta.data[0]._model.y).toBe(333);
+ expect(meta.data[1]._model.y).toBe(183);
+ expect(meta.data[2]._model.y).toBe(32);
+ expect(meta.data[3]._model.y).toBe(484);
+
+ chart.reset();
+
+ // For a line chart, the animation state is the bottom
+ expect(meta.data[0]._model.y).toBe(484);
+ expect(meta.data[1]._model.y).toBe(484);
+ expect(meta.data[2]._model.y).toBe(484);
+ expect(meta.data[3]._model.y).toBe(484);
+ });
+ });
});