*/
advance: function() {
var animations = this.animations;
- var animation, chart;
+ var animation, chart, numSteps, nextStep;
var i = 0;
+ // 1 animation per chart, so we are looping charts here
while (i < animations.length) {
animation = animations[i];
chart = animation.chart;
+ numSteps = animation.numSteps;
- animation.currentStep = Math.floor((Date.now() - animation.startTime) / animation.duration * animation.numSteps);
- animation.currentStep = Math.min(animation.currentStep, animation.numSteps);
+ // Make sure that currentStep starts at 1
+ // https://github.com/chartjs/Chart.js/issues/6104
+ nextStep = Math.floor((Date.now() - animation.startTime) / animation.duration * numSteps) + 1;
+ animation.currentStep = Math.min(nextStep, numSteps);
helpers.callback(animation.render, [chart, animation], chart);
helpers.callback(animation.onAnimationProgress, [animation], chart);
- if (animation.currentStep >= animation.numSteps) {
+ if (animation.currentStep >= numSteps) {
helpers.callback(animation.onAnimationComplete, [animation], chart);
chart.animating = false;
animations.splice(i, 1);