diff --git a/d3.js b/d3.js index 22379d83..9b28ef61 100644 --- a/d3.js +++ b/d3.js @@ -1776,16 +1776,17 @@ function d3_selection_transition() { } } - return d3_transition(subgroups); + return d3_transition(subgroups, d3_transitionInheritId || ++d3_transitionId); } -function d3_transition(groups) { +function d3_transition(groups, id) { d3_arraySubclass(groups, d3_transitionPrototype); - var id = d3_transitionInheritId || ++d3_transitionId, - tweens = {}, + var tweens = {}, event = d3.dispatch("start", "end"), ease = d3_transitionEase; + groups.id = id; + groups.tween = function(name, tween) { if (arguments.length < 2) return tweens[name]; if (tween == null) delete tweens[name]; @@ -1914,7 +1915,7 @@ function d3_transition_select(selector) { } } - return d3_transition(subgroups).ease(this.ease()); + return d3_transition(subgroups, this.id).ease(this.ease()); } function d3_transition_selectAll(selector) { var subgroups = [], @@ -1934,7 +1935,7 @@ function d3_transition_selectAll(selector) { } } - return d3_transition(subgroups).ease(this.ease()); + return d3_transition(subgroups, this.id).ease(this.ease()); } function d3_transition_attr(name, value) { return this.attrTween(name, d3_transitionTween(value)); diff --git a/d3.min.js b/d3.min.js index 36158e9f..9ce5860d 100644 --- a/d3.min.js +++ b/d3.min.js @@ -1,2 +1,2 @@ -(function(){function dj(){return"circle"}function di(){return 64}function dh(a,b){var c=(a.ownerSVGElement||a).createSVGPoint();if(dg<0&&(window.scrollX||window.scrollY)){var d=d3.select(document.body).append("svg:svg").style("position","absolute").style("top",0).style("left",0),e=d[0][0].getScreenCTM();dg=!e.f&&!e.e,d.remove()}dg?(c.x=b.pageX,c.y=b.pageY):(c.x=b.clientX,c.y=b.clientY),c=c.matrixTransform(a.getScreenCTM().inverse());return[c.x,c.y]}function df(a){return function(){var b=a.apply(this,arguments),c=b[0],d=b[1]+cr;return[c*Math.cos(d),c*Math.sin(d)]}}function de(a){return[a.x,a.y]}function dd(a){return a.endAngle}function dc(a){return a.startAngle}function db(a){return a.radius}function da(a){return a.target}function c_(a){return a.source}function c$(a){return function(b,c){return a[c][1]}}function cZ(a){return function(b,c){return a[c][0]}}function cY(a){function i(f){if(f.length<1)return null;var i=cy(this,f,b,d),j=cy(this,f,b===c?cZ(i):c,d===e?c$(i):e);return"M"+g(a(j),h)+"L"+g(a(i.reverse()),h)+"Z"}var b=cz,c=cz,d=0,e=cA,f="linear",g=cB[f],h=.7;i.x=function(a){if(!arguments.length)return c;b=c=a;return i},i.x0=function(a){if(!arguments.length)return b;b=a;return i},i.x1=function(a){if(!arguments.length)return c;c=a;return i},i.y=function(a){if(!arguments.length)return e;d=e=a;return i},i.y0=function(a){if(!arguments.length)return d;d=a;return i},i.y1=function(a){if(!arguments.length)return e;e=a;return i},i.interpolate=function(a){if(!arguments.length)return f;g=cB[f=a];return i},i.tension=function(a){if(!arguments.length)return h;h=a;return i};return i}function cX(a){var b,c=-1,d=a.length,e,f;while(++c9&&(f=c*3/Math.sqrt(f),g[h]=f*d,g[h+1]=f*e));h=-1;while(++h<=i)f=(a[Math.min(i,h+1)][0]-a[Math.max(0,h-1)][0])/(6*(1+g[h]*g[h])),b.push([f||0,g[h]*f||0]);return b}function cU(a){var b=0,c=a.length-1,d=[],e=a[0],f=a[1],g=d[0]=cT(e,f);while(++b1){h=b[1],f=a[i],i++,d+="C"+(e[0]+g[0])+","+(e[1]+g[1])+","+(f[0]-h[0])+","+(f[1]-h[1])+","+f[0]+","+f[1];for(var j=2;j0;j--)e.push(c(f)*j)}else{for(;fi;g--);e=e.slice(f,g)}return e},d.tickFormat=function(){return ch},d.copy=function(){return ce(a.copy(),b)};return bZ(d,a)}function cd(a,b,c,d){var e=[],f=[],g=0,h=a.length;while(++g=c.delay&&(c.flush=c.callback(a)),c=c.next;var d=bS()-b;d>24?(isFinite(d)&&(clearTimeout(bQ),bQ=setTimeout(bR,d)),bP=0):(bP=1,bT(bR))}function bN(a){for(var b=0,c=this.length;b=0)j[i].call(k,e);if(c===1){n.active=0,n.owner===b&&delete k.__transition__,bB=b,d.end.dispatch.call(k,g,h),bB=0;return!0}}function o(a){if(n.active<=b){n.active=b,d.start.dispatch.call(k,g,h);for(var e in c)(e=c[e].call(k,g,h))&&j.push(e);l-=a,d3.timer(p)}return!0}var j=[],k=this,l=a[i][h].delay-e,m=a[i][h].duration,n=k.__transition__;n?n.owner360?a-=360:a<0&&(a+=360);return a<60?d+(e-d)*a/60:a<180?e:a<240?d+(e-d)*(240-a)/60:d}var d,e;a=a%360,a<0&&(a+=360),b=b<0?0:b>1?1:b,c=c<0?0:c>1?1:c,e=c<=.5?c*(1+b):c+b-c*b,d=2*c-e;return H(g(a+120),g(a),g(a-120))}function Q(a,b,c){this.h=a,this.s=b,this.l=c}function P(a,b,c){return new Q(a,b,c)}function M(a){var b=parseFloat(a);return a.charAt(a.length-1)==="%"?Math.round(b*2.55):b}function L(a,b,c){var d=Math.min(a/=255,b/=255,c/=255),e=Math.max(a,b,c),f=e-d,g,h,i=(e+d)/2;f?(h=i<.5?f/(e+d):f/(2-e-d),a==e?g=(b-c)/f+(b=0?a.substring(b):(b=a.length,""),d=[];while(b>0)d.push(a.substring(b-=3,b+3));return d.reverse().join(",")+c}function m(a){return a+""}function j(a){var b={},c=[];b.add=function(a){for(var d=0;db?1:a>=b?0:NaN},d3.descending=function(a,b){return ba?1:b>=a?0:NaN},d3.min=function(a,b){var c=-1,d=a.length,e,f;if(arguments.length===1){while(++cf&&(e=f)}else{while(++cf&&(e=f)}return e},d3.max=function(a,b){var c=-1,d=a.length,e,f;if(arguments.length===1){while(++ce&&(e=f)}else{while(++ce&&(e=f)}return e},d3.sum=function(a,b){var c=0,d=a.length,e,f=-1;if(arguments.length===1)while(++f>1;a[e]>1;b0&&(e=f);return e},d3.last=function(a,b){var c=0,d=a.length,e=a[0],f;arguments.length===1&&(b=d3.ascending);while(++c=b.length)return a;var e=[],f=c[d++],h;for(h in a)e.push({key:h,values:g(a[h],d)});f&&e.sort(function(a,b){return f(a.key,b.key)});return e}function f(c,g){if(g>=b.length)return e?e.call(a,c):d?c.sort(d):c;var h=-1,i=c.length,j=b[g++],k,l,m={};while(++hb)d.push(f);else while((f=a+c*++e)=^]))?([+\- ])?(#)?(0)?([0-9]+)?(,)?(\.[0-9]+)?([a-zA-Z%])?/,l={g:function(a,b){return a.toPrecision(b)},e:function(a,b){return a.toExponential(b)},f:function(a,b){return a.toFixed(b)},r:function(a,b){var c=1+Math.floor(1e-15+Math.log(a)/Math.LN10);return d3.round(a,b-c).toFixed(Math.max(0,Math.min(20,b-c)))}},o=v(2),p=v(3),q={linear:function(){return u},poly:v,quad:function(){return o},cubic:function(){return p},sin:function(){return w},exp:function(){return x},circle:function(){return y},elastic:z,back:A,bounce:function(){return B}},r={"in":function(a){return a},out:s,"in-out":t,"out-in":function(a){return t(s(a))}};d3.ease=function(a){var b=a.indexOf("-"),c=b>=0?a.substring(0,b):a,d=b>=0?a.substring(b+1):"in";return r[d](q[c].apply(null,Array.prototype.slice.call(arguments,1)))},d3.event=null,d3.interpolate=function(a,b){var c=d3.interpolators.length,d;while(--c>=0&&!(d=d3.interpolators[c](a,b)));return d},d3.interpolateNumber=function(a,b){b-=a;return function(c){return a+b*c}},d3.interpolateRound=function(a,b){b-=a;return function(c){return Math.round(a+b*c)}},d3.interpolateString=function(a,b){var c,d,e,f=0,g=0,h=[],i=[],j,k;C.lastIndex=0;for(d=0;c=C.exec(b);++d)c.index&&h.push(b.substring(f,g=c.index)),i.push({i:h.length,x:c[0]}),h.push(null),f=C.lastIndex;f=cs?e?"M0,"+f+"A"+f+","+f+" 0 1,1 0,"+ -f+"A"+f+","+f+" 0 1,1 0,"+f+"M0,"+e+"A"+e+","+e+" 0 1,1 0,"+ -e+"A"+e+","+e+" 0 1,1 0,"+e+"Z":"M0,"+f+"A"+f+","+f+" 0 1,1 0,"+ -f+"A"+f+","+f+" 0 1,1 0,"+f+"Z":e?"M"+f*k+","+f*l+"A"+f+","+f+" 0 "+j+",1 "+f*m+","+f*n+"L"+e*m+","+e*n+"A"+e+","+e+" 0 "+j+",0 "+e*k+","+e*l+"Z":"M"+f*k+","+f*l+"A"+f+","+f+" 0 "+j+",1 "+f*m+","+f*n+"L0,0"+"Z"}var a=ct,b=cu,c=cv,d=cw;e.innerRadius=function(b){if(!arguments.length)return a;a=d3.functor(b);return e},e.outerRadius=function(a){if(!arguments.length)return b;b=d3.functor(a);return e},e.startAngle=function(a){if(!arguments.length)return c;c=d3.functor(a);return e},e.endAngle=function(a){if(!arguments.length)return d;d=d3.functor(a);return e},e.centroid=function(){var e=(a.apply(this,arguments)+b.apply(this,arguments))/2,f=(c.apply(this,arguments)+d.apply(this,arguments))/2+cr;return[Math.cos(f)*e,Math.sin(f)*e]};return e};var cr=-Math.PI/2,cs=2*Math.PI-1e-6;d3.svg.line=function(){return cx(Object)};var cB={linear:cC,"step-before":cD,"step-after":cE,basis:cK,"basis-open":cL,"basis-closed":cM,bundle:cN,cardinal:cH,"cardinal-open":cF,"cardinal-closed":cG,monotone:cW},cP=[0,2/3,1/3,0],cQ=[0,1/3,2/3,0],cR=[0,1/6,2/3,1/6];d3.svg.line.radial=function(){var a=cx(cX);a.radius=a.x,delete a.x,a.angle=a.y,delete a.y;return a},d3.svg.area=function(){return cY(Object)},d3.svg.area.radial=function(){var a=cY(cX);a.radius=a.x,delete a.x,a.innerRadius=a.x0,delete a.x0,a.outerRadius=a.x1,delete a.x1,a.angle=a.y,delete a.y,a.startAngle=a.y0,delete a.y0,a.endAngle=a.y1,delete a.y1;return a},d3.svg.chord=function(){function j(a,b,c,d){return"Q 0,0 "+d}function i(a,b){return"A"+a+","+a+" 0 0,1 "+b}function h(a,b){return a.a0==b.a0&&a.a1==b.a1}function g(a,b,f,g){var h=b.call(a,f,g),i=c.call(a,h,g),j=d.call(a,h,g)+cr,k=e.call(a,h,g)+cr;return{r:i,a0:j,a1:k,p0:[i*Math.cos(j),i*Math.sin(j)],p1:[i*Math.cos(k),i*Math.sin(k)]}}function f(c,d){var e=g(this,a,c,d),f=g(this,b,c,d);return"M"+e.p0+i(e.r,e.p1)+(h(e,f)?j(e.r,e.p1,e.r,e.p0):j(e.r,e.p1,f.r,f.p0)+i(f.r,f.p1)+j(f.r,f.p1,e.r,e.p0))+"Z"}var a=c_,b=da,c=db,d=cv,e=cw;f.radius=function(a){if(!arguments.length)return c;c=d3.functor(a);return f},f.source=function(b){if(!arguments.length)return a;a=d3.functor(b);return f},f.target=function(a){if(!arguments.length)return b;b=d3.functor(a);return f},f.startAngle=function(a){if(!arguments.length)return d;d=d3.functor(a);return f},f.endAngle=function(a){if(!arguments.length)return e;e=d3.functor(a);return f};return f},d3.svg.diagonal=function(){function d(d,e){var f=a.call(this,d,e),g=b.call(this,d,e),h=(f.y+g.y)/2,i=[f,{x:f.x,y:h},{x:g.x,y:h},g];i=i.map(c);return"M"+i[0]+"C"+i[1]+" "+i[2]+" "+i[3]}var a=c_,b=da,c=de;d.source=function(b){if(!arguments.length)return a;a=d3.functor(b);return d},d.target=function(a){if(!arguments.length)return b;b=d3.functor(a);return d},d.projection=function(a){if(!arguments.length)return c;c=a;return d};return d},d3.svg.diagonal.radial=function(){var a=d3.svg.diagonal(),b=de,c=a.projection;a.projection=function(a){return arguments.length?c(df(b=a)):b};return a},d3.svg.mouse=function(a){return dh(a,d3.event)};var dg=/WebKit/.test(navigator.userAgent)?-1:0;d3.svg.touches=function(b){var c=d3.event.touches;return c?a(c).map(function(a){var c=dh(b,a);c.identifier=a.identifier;return c}):[]},d3.svg.symbol=function(){function c(c,d){return(dk[a.call(this,c,d)]||dk.circle)(b.call(this,c,d))}var a=dj,b=di;c.type=function(b){if(!arguments.length)return a;a=d3.functor(b);return c},c.size=function(a){if(!arguments.length)return b;b=d3.functor(a);return c};return c};var dk={circle:function(a){var b=Math.sqrt(a/Math.PI);return"M0,"+b+"A"+b+","+b+" 0 1,1 0,"+ -b+"A"+b+","+b+" 0 1,1 0,"+b+"Z"},cross:function(a){var b=Math.sqrt(a/5)/2;return"M"+ -3*b+","+ -b+"H"+ -b+"V"+ -3*b+"H"+b+"V"+ -b+"H"+3*b+"V"+b+"H"+b+"V"+3*b+"H"+ -b+"V"+b+"H"+ -3*b+"Z"},diamond:function(a){var b=Math.sqrt(a/(2*dm)),c=b*dm;return"M0,"+ -b+"L"+c+",0"+" 0,"+b+" "+ -c+",0"+"Z"},square:function(a){var b=Math.sqrt(a)/2;return"M"+ -b+","+ -b+"L"+b+","+ -b+" "+b+","+b+" "+ -b+","+b+"Z"},"triangle-down":function(a){var b=Math.sqrt(a/dl),c=b*dl/2;return"M0,"+c+"L"+b+","+ -c+" "+ -b+","+ -c+"Z"},"triangle-up":function(a){var b=Math.sqrt(a/dl),c=b*dl/2;return"M0,"+ -c+"L"+b+","+c+" "+ -b+","+c+"Z"}};d3.svg.symbolTypes=d3.keys(dk);var dl=Math.sqrt(3),dm=Math.tan(30*Math.PI/180)})() \ No newline at end of file +(function(){function dj(){return"circle"}function di(){return 64}function dh(a,b){var c=(a.ownerSVGElement||a).createSVGPoint();if(dg<0&&(window.scrollX||window.scrollY)){var d=d3.select(document.body).append("svg:svg").style("position","absolute").style("top",0).style("left",0),e=d[0][0].getScreenCTM();dg=!e.f&&!e.e,d.remove()}dg?(c.x=b.pageX,c.y=b.pageY):(c.x=b.clientX,c.y=b.clientY),c=c.matrixTransform(a.getScreenCTM().inverse());return[c.x,c.y]}function df(a){return function(){var b=a.apply(this,arguments),c=b[0],d=b[1]+cr;return[c*Math.cos(d),c*Math.sin(d)]}}function de(a){return[a.x,a.y]}function dd(a){return a.endAngle}function dc(a){return a.startAngle}function db(a){return a.radius}function da(a){return a.target}function c_(a){return a.source}function c$(a){return function(b,c){return a[c][1]}}function cZ(a){return function(b,c){return a[c][0]}}function cY(a){function i(f){if(f.length<1)return null;var i=cy(this,f,b,d),j=cy(this,f,b===c?cZ(i):c,d===e?c$(i):e);return"M"+g(a(j),h)+"L"+g(a(i.reverse()),h)+"Z"}var b=cz,c=cz,d=0,e=cA,f="linear",g=cB[f],h=.7;i.x=function(a){if(!arguments.length)return c;b=c=a;return i},i.x0=function(a){if(!arguments.length)return b;b=a;return i},i.x1=function(a){if(!arguments.length)return c;c=a;return i},i.y=function(a){if(!arguments.length)return e;d=e=a;return i},i.y0=function(a){if(!arguments.length)return d;d=a;return i},i.y1=function(a){if(!arguments.length)return e;e=a;return i},i.interpolate=function(a){if(!arguments.length)return f;g=cB[f=a];return i},i.tension=function(a){if(!arguments.length)return h;h=a;return i};return i}function cX(a){var b,c=-1,d=a.length,e,f;while(++c9&&(f=c*3/Math.sqrt(f),g[h]=f*d,g[h+1]=f*e));h=-1;while(++h<=i)f=(a[Math.min(i,h+1)][0]-a[Math.max(0,h-1)][0])/(6*(1+g[h]*g[h])),b.push([f||0,g[h]*f||0]);return b}function cU(a){var b=0,c=a.length-1,d=[],e=a[0],f=a[1],g=d[0]=cT(e,f);while(++b1){h=b[1],f=a[i],i++,d+="C"+(e[0]+g[0])+","+(e[1]+g[1])+","+(f[0]-h[0])+","+(f[1]-h[1])+","+f[0]+","+f[1];for(var j=2;j0;j--)e.push(c(f)*j)}else{for(;fi;g--);e=e.slice(f,g)}return e},d.tickFormat=function(){return ch},d.copy=function(){return ce(a.copy(),b)};return bZ(d,a)}function cd(a,b,c,d){var e=[],f=[],g=0,h=a.length;while(++g=c.delay&&(c.flush=c.callback(a)),c=c.next;var d=bS()-b;d>24?(isFinite(d)&&(clearTimeout(bQ),bQ=setTimeout(bR,d)),bP=0):(bP=1,bT(bR))}function bN(a){for(var b=0,c=this.length;b=0)j[i].call(k,e);if(c===1){n.active=0,n.owner===b&&delete k.__transition__,bB=b,d.end.dispatch.call(k,g,h),bB=0;return!0}}function o(a){if(n.active<=b){n.active=b,d.start.dispatch.call(k,g,h);for(var e in c)(e=c[e].call(k,g,h))&&j.push(e);l-=a,d3.timer(p)}return!0}var j=[],k=this,l=a[i][h].delay-e,m=a[i][h].duration,n=k.__transition__;n?n.owner360?a-=360:a<0&&(a+=360);return a<60?d+(e-d)*a/60:a<180?e:a<240?d+(e-d)*(240-a)/60:d}var d,e;a=a%360,a<0&&(a+=360),b=b<0?0:b>1?1:b,c=c<0?0:c>1?1:c,e=c<=.5?c*(1+b):c+b-c*b,d=2*c-e;return H(g(a+120),g(a),g(a-120))}function Q(a,b,c){this.h=a,this.s=b,this.l=c}function P(a,b,c){return new Q(a,b,c)}function M(a){var b=parseFloat(a);return a.charAt(a.length-1)==="%"?Math.round(b*2.55):b}function L(a,b,c){var d=Math.min(a/=255,b/=255,c/=255),e=Math.max(a,b,c),f=e-d,g,h,i=(e+d)/2;f?(h=i<.5?f/(e+d):f/(2-e-d),a==e?g=(b-c)/f+(b=0?a.substring(b):(b=a.length,""),d=[];while(b>0)d.push(a.substring(b-=3,b+3));return d.reverse().join(",")+c}function m(a){return a+""}function j(a){var b={},c=[];b.add=function(a){for(var d=0;db?1:a>=b?0:NaN},d3.descending=function(a,b){return ba?1:b>=a?0:NaN},d3.min=function(a,b){var c=-1,d=a.length,e,f;if(arguments.length===1){while(++cf&&(e=f)}else{while(++cf&&(e=f)}return e},d3.max=function(a,b){var c=-1,d=a.length,e,f;if(arguments.length===1){while(++ce&&(e=f)}else{while(++ce&&(e=f)}return e},d3.sum=function(a,b){var c=0,d=a.length,e,f=-1;if(arguments.length===1)while(++f>1;a[e]>1;b0&&(e=f);return e},d3.last=function(a,b){var c=0,d=a.length,e=a[0],f;arguments.length===1&&(b=d3.ascending);while(++c=b.length)return a;var e=[],f=c[d++],h;for(h in a)e.push({key:h,values:g(a[h],d)});f&&e.sort(function(a,b){return f(a.key,b.key)});return e}function f(c,g){if(g>=b.length)return e?e.call(a,c):d?c.sort(d):c;var h=-1,i=c.length,j=b[g++],k,l,m={};while(++hb)d.push(f);else while((f=a+c*++e)=^]))?([+\- ])?(#)?(0)?([0-9]+)?(,)?(\.[0-9]+)?([a-zA-Z%])?/,l={g:function(a,b){return a.toPrecision(b)},e:function(a,b){return a.toExponential(b)},f:function(a,b){return a.toFixed(b)},r:function(a,b){var c=1+Math.floor(1e-15+Math.log(a)/Math.LN10);return d3.round(a,b-c).toFixed(Math.max(0,Math.min(20,b-c)))}},o=v(2),p=v(3),q={linear:function(){return u},poly:v,quad:function(){return o},cubic:function(){return p},sin:function(){return w},exp:function(){return x},circle:function(){return y},elastic:z,back:A,bounce:function(){return B}},r={"in":function(a){return a},out:s,"in-out":t,"out-in":function(a){return t(s(a))}};d3.ease=function(a){var b=a.indexOf("-"),c=b>=0?a.substring(0,b):a,d=b>=0?a.substring(b+1):"in";return r[d](q[c].apply(null,Array.prototype.slice.call(arguments,1)))},d3.event=null,d3.interpolate=function(a,b){var c=d3.interpolators.length,d;while(--c>=0&&!(d=d3.interpolators[c](a,b)));return d},d3.interpolateNumber=function(a,b){b-=a;return function(c){return a+b*c}},d3.interpolateRound=function(a,b){b-=a;return function(c){return Math.round(a+b*c)}},d3.interpolateString=function(a,b){var c,d,e,f=0,g=0,h=[],i=[],j,k;C.lastIndex=0;for(d=0;c=C.exec(b);++d)c.index&&h.push(b.substring(f,g=c.index)),i.push({i:h.length,x:c[0]}),h.push(null),f=C.lastIndex;f=cs?e?"M0,"+f+"A"+f+","+f+" 0 1,1 0,"+ -f+"A"+f+","+f+" 0 1,1 0,"+f+"M0,"+e+"A"+e+","+e+" 0 1,1 0,"+ -e+"A"+e+","+e+" 0 1,1 0,"+e+"Z":"M0,"+f+"A"+f+","+f+" 0 1,1 0,"+ -f+"A"+f+","+f+" 0 1,1 0,"+f+"Z":e?"M"+f*k+","+f*l+"A"+f+","+f+" 0 "+j+",1 "+f*m+","+f*n+"L"+e*m+","+e*n+"A"+e+","+e+" 0 "+j+",0 "+e*k+","+e*l+"Z":"M"+f*k+","+f*l+"A"+f+","+f+" 0 "+j+",1 "+f*m+","+f*n+"L0,0"+"Z"}var a=ct,b=cu,c=cv,d=cw;e.innerRadius=function(b){if(!arguments.length)return a;a=d3.functor(b);return e},e.outerRadius=function(a){if(!arguments.length)return b;b=d3.functor(a);return e},e.startAngle=function(a){if(!arguments.length)return c;c=d3.functor(a);return e},e.endAngle=function(a){if(!arguments.length)return d;d=d3.functor(a);return e},e.centroid=function(){var e=(a.apply(this,arguments)+b.apply(this,arguments))/2,f=(c.apply(this,arguments)+d.apply(this,arguments))/2+cr;return[Math.cos(f)*e,Math.sin(f)*e]};return e};var cr=-Math.PI/2,cs=2*Math.PI-1e-6;d3.svg.line=function(){return cx(Object)};var cB={linear:cC,"step-before":cD,"step-after":cE,basis:cK,"basis-open":cL,"basis-closed":cM,bundle:cN,cardinal:cH,"cardinal-open":cF,"cardinal-closed":cG,monotone:cW},cP=[0,2/3,1/3,0],cQ=[0,1/3,2/3,0],cR=[0,1/6,2/3,1/6];d3.svg.line.radial=function(){var a=cx(cX);a.radius=a.x,delete a.x,a.angle=a.y,delete a.y;return a},d3.svg.area=function(){return cY(Object)},d3.svg.area.radial=function(){var a=cY(cX);a.radius=a.x,delete a.x,a.innerRadius=a.x0,delete a.x0,a.outerRadius=a.x1,delete a.x1,a.angle=a.y,delete a.y,a.startAngle=a.y0,delete a.y0,a.endAngle=a.y1,delete a.y1;return a},d3.svg.chord=function(){function j(a,b,c,d){return"Q 0,0 "+d}function i(a,b){return"A"+a+","+a+" 0 0,1 "+b}function h(a,b){return a.a0==b.a0&&a.a1==b.a1}function g(a,b,f,g){var h=b.call(a,f,g),i=c.call(a,h,g),j=d.call(a,h,g)+cr,k=e.call(a,h,g)+cr;return{r:i,a0:j,a1:k,p0:[i*Math.cos(j),i*Math.sin(j)],p1:[i*Math.cos(k),i*Math.sin(k)]}}function f(c,d){var e=g(this,a,c,d),f=g(this,b,c,d);return"M"+e.p0+i(e.r,e.p1)+(h(e,f)?j(e.r,e.p1,e.r,e.p0):j(e.r,e.p1,f.r,f.p0)+i(f.r,f.p1)+j(f.r,f.p1,e.r,e.p0))+"Z"}var a=c_,b=da,c=db,d=cv,e=cw;f.radius=function(a){if(!arguments.length)return c;c=d3.functor(a);return f},f.source=function(b){if(!arguments.length)return a;a=d3.functor(b);return f},f.target=function(a){if(!arguments.length)return b;b=d3.functor(a);return f},f.startAngle=function(a){if(!arguments.length)return d;d=d3.functor(a);return f},f.endAngle=function(a){if(!arguments.length)return e;e=d3.functor(a);return f};return f},d3.svg.diagonal=function(){function d(d,e){var f=a.call(this,d,e),g=b.call(this,d,e),h=(f.y+g.y)/2,i=[f,{x:f.x,y:h},{x:g.x,y:h},g];i=i.map(c);return"M"+i[0]+"C"+i[1]+" "+i[2]+" "+i[3]}var a=c_,b=da,c=de;d.source=function(b){if(!arguments.length)return a;a=d3.functor(b);return d},d.target=function(a){if(!arguments.length)return b;b=d3.functor(a);return d},d.projection=function(a){if(!arguments.length)return c;c=a;return d};return d},d3.svg.diagonal.radial=function(){var a=d3.svg.diagonal(),b=de,c=a.projection;a.projection=function(a){return arguments.length?c(df(b=a)):b};return a},d3.svg.mouse=function(a){return dh(a,d3.event)};var dg=/WebKit/.test(navigator.userAgent)?-1:0;d3.svg.touches=function(b){var c=d3.event.touches;return c?a(c).map(function(a){var c=dh(b,a);c.identifier=a.identifier;return c}):[]},d3.svg.symbol=function(){function c(c,d){return(dk[a.call(this,c,d)]||dk.circle)(b.call(this,c,d))}var a=dj,b=di;c.type=function(b){if(!arguments.length)return a;a=d3.functor(b);return c},c.size=function(a){if(!arguments.length)return b;b=d3.functor(a);return c};return c};var dk={circle:function(a){var b=Math.sqrt(a/Math.PI);return"M0,"+b+"A"+b+","+b+" 0 1,1 0,"+ -b+"A"+b+","+b+" 0 1,1 0,"+b+"Z"},cross:function(a){var b=Math.sqrt(a/5)/2;return"M"+ -3*b+","+ -b+"H"+ -b+"V"+ -3*b+"H"+b+"V"+ -b+"H"+3*b+"V"+b+"H"+b+"V"+3*b+"H"+ -b+"V"+b+"H"+ -3*b+"Z"},diamond:function(a){var b=Math.sqrt(a/(2*dm)),c=b*dm;return"M0,"+ -b+"L"+c+",0"+" 0,"+b+" "+ -c+",0"+"Z"},square:function(a){var b=Math.sqrt(a)/2;return"M"+ -b+","+ -b+"L"+b+","+ -b+" "+b+","+b+" "+ -b+","+b+"Z"},"triangle-down":function(a){var b=Math.sqrt(a/dl),c=b*dl/2;return"M0,"+c+"L"+b+","+ -c+" "+ -b+","+ -c+"Z"},"triangle-up":function(a){var b=Math.sqrt(a/dl),c=b*dl/2;return"M0,"+ -c+"L"+b+","+c+" "+ -b+","+c+"Z"}};d3.svg.symbolTypes=d3.keys(dk);var dl=Math.sqrt(3),dm=Math.tan(30*Math.PI/180)})() \ No newline at end of file diff --git a/src/core/selection-transition.js b/src/core/selection-transition.js index a24ef76d..09827790 100644 --- a/src/core/selection-transition.js +++ b/src/core/selection-transition.js @@ -10,5 +10,5 @@ function d3_selection_transition() { } } - return d3_transition(subgroups); + return d3_transition(subgroups, d3_transitionInheritId || ++d3_transitionId); } diff --git a/src/core/transition-select.js b/src/core/transition-select.js index 552907b9..251f5aa4 100644 --- a/src/core/transition-select.js +++ b/src/core/transition-select.js @@ -18,5 +18,5 @@ function d3_transition_select(selector) { } } - return d3_transition(subgroups).ease(this.ease()); + return d3_transition(subgroups, this.id).ease(this.ease()); } diff --git a/src/core/transition-selectAll.js b/src/core/transition-selectAll.js index ce6d3309..871dcc23 100644 --- a/src/core/transition-selectAll.js +++ b/src/core/transition-selectAll.js @@ -16,5 +16,5 @@ function d3_transition_selectAll(selector) { } } - return d3_transition(subgroups).ease(this.ease()); + return d3_transition(subgroups, this.id).ease(this.ease()); } diff --git a/src/core/transition.js b/src/core/transition.js index 85efdece..9092e293 100644 --- a/src/core/transition.js +++ b/src/core/transition.js @@ -1,11 +1,12 @@ -function d3_transition(groups) { +function d3_transition(groups, id) { d3_arraySubclass(groups, d3_transitionPrototype); - var id = d3_transitionInheritId || ++d3_transitionId, - tweens = {}, + var tweens = {}, event = d3.dispatch("start", "end"), ease = d3_transitionEase; + groups.id = id; + groups.tween = function(name, tween) { if (arguments.length < 2) return tweens[name]; if (tween == null) delete tweens[name]; diff --git a/test/core/transition-test-each.js b/test/core/transition-test-each.js index 361a247d..f6d4758a 100644 --- a/test/core/transition-test-each.js +++ b/test/core/transition-test-each.js @@ -36,7 +36,8 @@ module.exports = { context: context, data: data, index: index, - count: count + count: count, + id: transition.id }); }); }, @@ -66,7 +67,7 @@ module.exports = { }, "sets an exclusive lock on transitioning nodes": function(result) { - var id = result.selection[0][0].__transition__.owner; + var id = result.id; assert.isTrue(id > 0); assert.equal(result.selection[0][0].__transition__.owner, id); assert.equal(result.selection[0][1].__transition__.owner, id); @@ -87,13 +88,7 @@ module.exports = { data = [], index = [], count = [], - delay = [], - id; - - // A callback to grab the transition id. - transition.each("start", function() { - id = this.__transition__.active; - }); + delay = []; // A callback to verify that multiple callbacks are allowed. transition.each("end", function() { @@ -114,7 +109,7 @@ module.exports = { data: data, index: index, count: count, - id: id + id: transition.id }); }); }, diff --git a/test/core/transition-test-id.js b/test/core/transition-test-id.js new file mode 100644 index 00000000..be9ed374 --- /dev/null +++ b/test/core/transition-test-id.js @@ -0,0 +1,20 @@ +require("../env"); +require("../../d3"); + +var assert = require("assert"); + +module.exports = { + topic: function() { + return d3.select("body").append("div").transition(); + }, + "has a positive integer id": function(transition) { + var id = transition.id; + assert.isTrue(id > 0); + assert.equal(~~id, id); + }, + "increases monotonically across transitions": function(transition) { + var t0 = d3.select("body").append("div").transition(), + t1 = d3.select("body").append("div").transition(); + assert.isTrue(t1.id > t0.id); + } +}; diff --git a/test/core/transition-test-select.js b/test/core/transition-test-select.js index d7d964b5..21e79e16 100644 --- a/test/core/transition-test-select.js +++ b/test/core/transition-test-select.js @@ -52,5 +52,12 @@ module.exports = { "returns null if no match is found": function(transition) { var t = transition.select("span"); assert.isNull(t[0][0]); + }, + "inherits transition id": function(transition) { + var id = transition.id, + t0 = transition.select("span"), + t1 = transition.select("span"); + assert.equal(t0.id, id); + assert.equal(t1.id, id); } }; diff --git a/test/core/transition-test-selectAll.js b/test/core/transition-test-selectAll.js index db75cba2..087fc62a 100644 --- a/test/core/transition-test-selectAll.js +++ b/test/core/transition-test-selectAll.js @@ -44,5 +44,12 @@ module.exports = { "returns empty if no match is found": function(transition) { var t = transition.selectAll("span"); assert.isEmpty(t[0]); + }, + "inherits transition id": function(transition) { + var id = transition.id, + t0 = transition.selectAll("span"), + t1 = transition.selectAll("span"); + assert.equal(t0.id, id); + assert.equal(t1.id, id); } }; diff --git a/test/core/transition-test.js b/test/core/transition-test.js index dbdfff08..2a06fb09 100644 --- a/test/core/transition-test.js +++ b/test/core/transition-test.js @@ -43,7 +43,8 @@ suite.addBatch({ // Control "each": require("./transition-test-each"), "call": require("./transition-test-call"), - "tween": require("./transition-test-tween") + "tween": require("./transition-test-tween"), + "id": require("./transition-test-id") });