Merge pull request #2129 from nnnick/fix/2037

Fix animation bug.
This commit is contained in:
Evert Timberg 2016-03-13 12:29:48 -04:00
commit f64324e2a8
2 changed files with 24 additions and 5 deletions

View File

@ -52,11 +52,11 @@ module.exports = function(Chart) {
},
// Cancel the animation for a given chart instance
cancelAnimation: function(chartInstance) {
var index = helpers.findNextWhere(this.animations, function(animationWrapper) {
var index = helpers.findIndex(this.animations, function(animationWrapper) {
return animationWrapper.chartInstance === chartInstance;
});
if (index) {
if (index !== -1) {
this.animations.splice(index, 1);
chartInstance.animating = false;
}
@ -75,7 +75,8 @@ module.exports = function(Chart) {
this.dropFrames = this.dropFrames % 1;
}
for (var i = 0; i < this.animations.length; i++) {
var i = 0;
while (i < this.animations.length) {
if (this.animations[i].animationObject.currentStep === null) {
this.animations[i].animationObject.currentStep = 0;
}
@ -98,9 +99,10 @@ module.exports = function(Chart) {
// executed the last frame. Remove the animation.
this.animations[i].chartInstance.animating = false;
this.animations.splice(i, 1);
// Keep the index in place to offset the splice
i--;
} else {
++i;
}
}

View File

@ -201,6 +201,23 @@ module.exports = function(Chart) {
return filtered;
};
helpers.findIndex = function(arrayToSearch, callback, thisArg) {
var index = -1;
if (Array.prototype.findIndex) {
index = arrayToSearch.findIndex(callback, thisArg);
} else {
for (var i = 0; i < arrayToSearch.length; ++i) {
thisArg = thisArg !== undefined ? thisArg : arrayToSearch;
if (callback.call(thisArg, arrayToSearch[i], i, arrayToSearch)) {
index = i;
break;
}
}
}
return index;
};
helpers.findNextWhere = function(arrayToSearch, filterCallback, startIndex) {
// Default to start of the array
if (startIndex === undefined || startIndex === null) {