in zookeeper-contrib/zookeeper-contrib-loggraph/src/main/resources/webapp/org/apache/zookeeper/graph/resources/raphael.js [2829:2933]
animation = function () {
var Now = +new Date;
for (var l in animationElements) if (l != "length" && animationElements[has](l)) {
var e = animationElements[l];
if (e.stop || e.el.removed) {
delete animationElements[l];
animationElements[length]--;
continue;
}
var time = Now - e.start,
ms = e.ms,
easing = e.easing,
from = e.from,
diff = e.diff,
to = e.to,
t = e.t,
prev = e.prev || 0,
that = e.el,
callback = e.callback,
set = {},
now;
if (time < ms) {
var pos = R.easing_formulas[easing] ? R.easing_formulas[easing](time / ms) : time / ms;
for (var attr in from) if (from[has](attr)) {
switch (availableAnimAttrs[attr]) {
case "along":
now = pos * ms * diff[attr];
to.back && (now = to.len - now);
var point = getPointAtLength(to[attr], now);
that.translate(diff.sx - diff.x || 0, diff.sy - diff.y || 0);
diff.x = point.x;
diff.y = point.y;
that.translate(point.x - diff.sx, point.y - diff.sy);
to.rot && that.rotate(diff.r + point.alpha, point.x, point.y);
break;
case "number":
now = +from[attr] + pos * ms * diff[attr];
break;
case "colour":
now = "rgb(" + [
upto255(round(from[attr].r + pos * ms * diff[attr].r)),
upto255(round(from[attr].g + pos * ms * diff[attr].g)),
upto255(round(from[attr].b + pos * ms * diff[attr].b))
][join](",") + ")";
break;
case "path":
now = [];
for (var i = 0, ii = from[attr][length]; i < ii; i++) {
now[i] = [from[attr][i][0]];
for (var j = 1, jj = from[attr][i][length]; j < jj; j++) {
now[i][j] = +from[attr][i][j] + pos * ms * diff[attr][i][j];
}
now[i] = now[i][join](S);
}
now = now[join](S);
break;
case "csv":
switch (attr) {
case "translation":
var x = diff[attr][0] * (time - prev),
y = diff[attr][1] * (time - prev);
t.x += x;
t.y += y;
now = x + S + y;
break;
case "rotation":
now = +from[attr][0] + pos * ms * diff[attr][0];
from[attr][1] && (now += "," + from[attr][1] + "," + from[attr][2]);
break;
case "scale":
now = [+from[attr][0] + pos * ms * diff[attr][0], +from[attr][1] + pos * ms * diff[attr][1], (2 in to[attr] ? to[attr][2] : E), (3 in to[attr] ? to[attr][3] : E)][join](S);
break;
case "clip-rect":
now = [];
i = 4;
while (i--) {
now[i] = +from[attr][i] + pos * ms * diff[attr][i];
}
break;
}
break;
}
set[attr] = now;
}
that.attr(set);
that._run && that._run.call(that);
} else {
if (to.along) {
point = getPointAtLength(to.along, to.len * !to.back);
that.translate(diff.sx - (diff.x || 0) + point.x - diff.sx, diff.sy - (diff.y || 0) + point.y - diff.sy);
to.rot && that.rotate(diff.r + point.alpha, point.x, point.y);
}
(t.x || t.y) && that.translate(-t.x, -t.y);
to.scale && (to.scale = to.scale + E);
that.attr(to);
delete animationElements[l];
animationElements[length]--;
that.in_animation = null;
R.is(callback, "function") && callback.call(that);
}
e.prev = time;
}
R.svg && that && that.paper.safari();
animationElements[length] && win.setTimeout(animation);
},