Fix a bug with concurrent intervals.

This commit is contained in:
Michael Bostock 2010-10-24 16:03:35 -07:00
Родитель e25acce124
Коммит 1901673b06
5 изменённых файлов: 76 добавлений и 64 удалений

34
d3.js поставляемый
Просмотреть файл

@ -1194,18 +1194,16 @@ function d3_selection(groups) {
// TODO filter, slice?
groups.transition = function() {
return d3_transition(groups);
groups.transition = function(name) {
return d3_transition(groups, name);
};
return groups;
}
d3.transition = function() {
return d3_root.transition();
};
d3.transition = d3_root.transition;
// TODO namespace transitions; cancel collisions
function d3_transition(groups) {
function d3_transition(groups, name) {
var transition = {},
tweens = {},
event = d3.dispatch("start", "end"),
@ -1336,14 +1334,14 @@ function d3_transition(groups) {
};
transition.select = function(query) {
var k, t = d3_transition(groups.select(query)).ease(ease);
var k, t = d3_transition(groups.select(query), name).ease(ease);
k = -1; t.delay(function(d, i) { return delay[++k]; });
k = -1; t.duration(function(d, i) { return duration[++k]; });
return t;
};
transition.selectAll = function(query) {
var k, t = d3_transition(groups.selectAll(query)).ease(ease);
var k, t = d3_transition(groups.selectAll(query), name).ease(ease);
k = -1; t.delay(function(d, i) { return delay[i ? k : ++k]; })
k = -1; t.duration(function(d, i) { return duration[i ? k : ++k]; });
return t;
@ -1407,12 +1405,20 @@ function d3_timer_step() {
t1 = d3_timer_queue;
while (t1) {
elapsed = now - t1.then;
if ((elapsed > t1.delay) && t1.callback(elapsed)) {
if (t0) t0.next = t1.next;
else d3_timer_queue = t1.next;
}
t0 = t1;
t1 = t1.next;
if (elapsed > t1.delay) t1.flush = t1.callback(elapsed);
t1 = (t0 = t1).next;
}
d3_timer_flush();
}
// Flush after callbacks, to avoid concurrent queue modification.
function d3_timer_flush() {
var t0 = null,
t1 = d3_timer_queue;
while (t1) {
t1 = t1.flush
? (t0 ? t0.next = t1.next : d3_timer_queue = t1.next)
: (t0 = t1).next;
}
if (!t0) d3_timer_interval = clearInterval(d3_timer_interval);
}

72
d3.min.js поставляемый
Просмотреть файл

@ -1,36 +1,36 @@
if(!Date.now)Date.now=function(){return+new Date};if(!Object.create)Object.create=function(I){function D(){}D.prototype=I;return new D};
(function(I){function D(){var a={},c=[];a.add=function(b){for(var f=0;f<c.length;f++)if(c[f].listener==b)return a;c.push({listener:b,on:true});return a};a.remove=function(b){for(var f=0;f<c.length;f++){var e=c[f];if(e.listener==b){e.on=false;c=c.slice(0,f).concat(c.slice(f+1));break}}return a};a.dispatch=function(){for(var b=c,f=0,e=b.length;f<e;f++){var d=b[f];d.on&&d.listener.apply(this,arguments)}};return a}function Q(a){return function(c){return 1-a(1-c)}}function R(a){return function(c){return 0.5*
(c<0.5?a(2*c):2-a(2-2*c))}}function U(a){return a}function J(a){return function(c){return Math.pow(c,a)}}function V(a){return 1-Math.cos(a*Math.PI/2)}function W(a){return a?Math.pow(2,10*(a-1))-0.0010:0}function X(a){return 1-Math.sqrt(1-a*a)}function Y(a){return a<1/2.75?7.5625*a*a:a<2/2.75?7.5625*(a-=1.5/2.75)*a+0.75:a<2.5/2.75?7.5625*(a-=2.25/2.75)*a+0.9375:7.5625*(a-=2.625/2.75)*a+0.984375}function Z(a){return{nodeKey:function(c){return c.getAttribute(a)},dataKey:function(c){return c[a]}}}function K(a){var c,
b,f,e,d;if(e=/([a-z]+)\((.*)\)/i.exec(a)){d=e[2].split(",");switch(e[1]){case "hsl":return S(parseFloat(d[0]),parseFloat(d[1])/100,parseFloat(d[2])/100);case "rgb":return{r:L(d[0]),g:L(d[1]),b:L(d[2])}}}if(e=A[a])return e;if(a==null)return A.black;if(a.charAt(0)=="#"){if(a.length==4){c=a.charAt(1);c+=c;b=a.charAt(2);b+=b;f=a.charAt(3);f+=f}else if(a.length==7){c=a.substring(1,3);b=a.substring(3,5);f=a.substring(5,7)}c=parseInt(c,16);b=parseInt(b,16);f=parseInt(f,16)}return{r:c,g:b,b:f}}function S(a,
c,b){function f(h){if(h>360)h-=360;else if(h<0)h+=360;if(h<60)return e+(d-e)*h/60;if(h<180)return d;if(h<240)return e+(d-e)*(240-h)/60;return e}var e,d;a%=360;if(a<0)a+=360;c=c<0?0:c>1?1:c;b=b<0?0:b>1?1:b;d=b<=0.5?b*(1+c):b+c-b*c;e=2*b-d;return{r:Math.round(f(a+120)*255),g:Math.round(f(a)*255),b:Math.round(f(a-120)*255)}}function L(a){var c=parseFloat(a);return a.charAt(a.length-1)=="%"?Math.round(c*2.55):c}function y(a){function c(e){for(var d=[],h,i,g,o,j=0,m=a.length;j<m;j++){g=a[j];d.push(h=[]);
h.parentNode=g.parentNode;h.parentData=g.parentData;for(var n=0,p=g.length;n<p;n++)if(o=g[n]){h.push(i=e(o));if(i)i.__data__=o.__data__}else h.push(null)}return y(d)}function b(e){for(var d=[],h,i,g,o=0,j=a.length;o<j;o++){i=a[o];for(var m=0,n=i.length;m<n;m++)if(g=i[m]){d.push(h=e(g));h.parentNode=g;h.parentData=g.__data__}}return y(d)}function f(e){for(var d=0,h=a.length;d<h;d++)for(var i=a[d],g=0,o=i.length;g<o;g++){var j=i[g];if(j)return e.call(j,j.__data__,g)}return null}a.select=function(e){return c(function(d){return d.querySelector(e)})};
a.selectAll=function(e){return b(function(d){d=d.querySelectorAll(e);return Array.prototype.slice.call(d)})};a.data=function(e,d){function h(p,t){function r($){return p.parentNode.appendChild($)}var k=0,z=p.length,s=t.length,q=Math.min(z,s),E=Math.max(z,s),v=[],w=[],u=[],x,B;if(d){q={};E=[];var F;for(k=0;k<z;k++){q[F=d.nodeKey(x=p[k])]=x;E.push(F)}for(k=0;k<s;k++){if(x=q[F=d.dataKey(B=t[k])]){x.__data__=B;v[k]=x;w[k]=u[k]=null}else{w[k]={appendChild:r,__data__:B};v[k]=u[k]=null}delete q[F]}for(k=
0;k<z;k++)if(E[k]in q)u[k]=p[k]}else{for(;k<q;k++){x=p[k];B=t[k];if(x){x.__data__=B;v[k]=x;w[k]=u[k]=null}else{w[k]={appendChild:r,__data__:B};v[k]=u[k]=null}}for(;k<s;k++){w[k]={appendChild:r,__data__:t[k]};v[k]=u[k]=null}for(;k<E;k++){u[k]=p[k];w[k]=v[k]=null}}w.parentNode=v.parentNode=u.parentNode=p.parentNode;w.parentData=v.parentData=u.parentData=p.parentData;j.push(w);m.push(v);n.push(u)}var i=-1,g=a.length,o,j=[],m=[],n=[];if(typeof d=="string")d=Z(d);if(typeof e=="function")for(;++i<g;)h(o=
a[i],e.call(o,o.parentData,i));else for(;++i<g;)h(o=a[i],e);i=y(m);i.enter=function(p){return y(j).append(p)};i.exit=function(){return y(n)};return i};a.each=function(e){for(var d=0,h=a.length;d<h;d++)for(var i=a[d],g=0,o=i.length;g<o;g++){var j=i[g];j&&e.call(j,j.__data__,g)}return a};a.attr=function(e,d){function h(){this.removeAttribute(e)}function i(){this.removeAttributeNS(e.space,e.local)}function g(){this.setAttribute(e,d)}function o(){this.setAttributeNS(e.space,e.local,d)}function j(){var n=
d.apply(this,arguments);n==null?this.removeAttribute(e):this.setAttribute(e,n)}function m(){var n=d.apply(this,arguments);n==null?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,n)}e=l.ns.qualify(e);if(arguments.length<2)return f(e.local?function(){return this.getAttributeNS(e.space,e.local)}:function(){return this.getAttribute(e)});return a.each(d==null?e.local?i:h:typeof d=="function"?e.local?m:j:e.local?o:g)};a.style=function(e,d,h){function i(){this.style.removeProperty(e)}
function g(){this.style.setProperty(e,d,h)}function o(){var j=d.apply(this,arguments);j==null?this.style.removeProperty(e):this.style.setProperty(e,j,h)}if(arguments.length<3)h=null;if(arguments.length<2)return f(function(){return window.getComputedStyle(this,null).getPropertyValue(e)});return a.each(d==null?i:typeof d=="function"?o:g)};a.text=function(e){function d(){this.appendChild(document.createTextNode(e))}function h(){var i=e.apply(this,arguments);i!=null&&this.appendChild(document.createTextNode(i))}
if(arguments.length<1)return f(function(){return this.textContent});a.each(function(){for(;this.lastChild;)this.removeChild(this.lastChild)});return e==null?a:a.each(typeof e=="function"?h:d)};a.html=function(e){function d(){this.innerHTML=e}function h(){this.innerHTML=e.apply(this,arguments)}if(arguments.length<1)return f(function(){return this.innerHTML});return a.each(typeof e=="function"?h:d)};a.append=function(e){function d(i){return i.appendChild(document.createElement(e))}function h(i){return i.appendChild(document.createElementNS(e.space,
e.local))}e=l.ns.qualify(e);return c(e.local?h:d)};a.remove=function(){return c(function(e){var d=e.parentNode;d.removeChild(e);return d})};a.on=function(e,d){e="on"+e;return a.each(function(h,i){this[e]=function(g){l.event=g;try{d.call(this,h,i)}finally{l.event=null}}})};a.transition=function(){return M(a)};return a}function M(a){function c(j){var m=true,n=-1;a.each(function(){if(d[++n]!=2){var p=(j-h[n])/i[n];if(p>=1)p=1;else{m=false;if(p<0)return;if(!d[n]){d[n]=1;e.start.dispatch.apply(this,arguments)}}var t=
o(p),r;for(r in f)f[r].call(this,t,n);if(p==1){d[n]=2;e.end.dispatch.apply(this,arguments)}}});return m}var b={},f={},e=l.dispatch("start","end"),d=[],h=[],i=[],g,o=l.ease("cubic-in-out");b.delay=function(j){var m=Infinity,n=-1;if(typeof j=="function")a.each(function(){var p=h[++n]=+j.apply(this,arguments);if(p<m)m=p});else{m=+j;a.each(function(){h[++n]=m})}aa(c,m);return b};b.duration=function(j){var m=-1;if(typeof j=="function"){g=0;a.each(function(){var n=i[++m]=+j.apply(this,arguments);if(n>g)g=
n})}else{g=+j;a.each(function(){i[++m]=g})}return b};b.ease=function(j){o=typeof j=="string"?l.ease(j):j;return b};b.attrTween=function(j,m){function n(s,q){k[++z]=m.call(this,s,q,this.getAttribute(j))}function p(s,q){k[++z]=m.call(this,s,q,this.getAttributeNS(j.space,j.local))}function t(s,q){this.setAttribute(j,k[q](s))}function r(s,q){this.setAttributeNS(j.space,j.local,k[q](s))}var k=[],z=-1;j=l.ns.qualify(j);a.each(j.local?p:n);f["attr."+j]=j.local?r:t;return b};b.attr=function(j,m){return b.attrTween(j,
T(m))};b.styleTween=function(j,m,n){var p=[],t=-1;a.each(function(r,k){p[++t]=m.call(this,r,k,window.getComputedStyle(this,null).getPropertyValue(j))});f["style."+j]=function(r,k){this.style.setProperty(j,p[k](r),n)};return b};b.style=function(j,m,n){return b.styleTween(j,T(m),n)};b.select=function(j){var m;j=M(a.select(j)).ease(o);m=-1;j.delay(function(){return h[++m]});m=-1;j.duration(function(){return i[++m]});return j};b.selectAll=function(j){var m;j=M(a.selectAll(j)).ease(o);m=-1;j.delay(function(n,
p){return h[p?m:++m]});m=-1;j.duration(function(n,p){return i[p?m:++m]});return j};b.each=function(j,m){e[j].add(m);return b};return b.delay(0).duration(250)}function aa(a,c){for(var b=Date.now(),f=false,e=b+c,d=C;d;){if(d.callback==a){d.then=b;d.delay=c;f=true}else{var h=d.then+d.delay;if(h<e)e=h}d=d.next}f||(C={callback:a,then:b,delay:c,next:C});if(!G){clearTimeout(N);N=setTimeout(ba,Math.min(24,e-b))}}function ba(){G=setInterval(ca,24);N=0}function ca(){for(var a,c=Date.now(),b=null,f=C;f;){a=
c-f.then;if(a>f.delay&&f.callback(a))if(b)b.next=f.next;else C=f.next;b=f;f=f.next}b||(G=clearInterval(G))}function T(a){return typeof a=="function"?function(c,b,f){return l.interpolate(f,a.call(this,c,b))}:function(c,b,f){return l.interpolate(f,a)}}var l=I.d3={};l.version="0.1.0";l.range=function(a,c,b){if(arguments.length==1){c=a;a=0}if(b==null)b=1;if((c-a)/b==Infinity)throw Error("infinite range");var f=[],e=-1,d;if(b<0)for(;(d=a+b*++e)>c;)f.push(d);else for(;(d=a+b*++e)<c;)f.push(d);return f};
l.ns={prefix:{svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},qualify:function(a){var c=a.indexOf(":");return c<0?a:{space:l.ns.prefix[a.substring(0,c)],local:a.substring(c+1)}}};l.dispatch=function(){for(var a={},c,b=0,f=arguments.length;b<f;b++){c=arguments[b];a[c]=D(c)}return a};var da=J(2),ea=J(3),fa={linear:function(){return U},poly:J,quad:function(){return da},
cubic:function(){return ea},sin:function(){return V},exp:function(){return W},circle:function(){return X},elastic:function(a,c){var b;if(arguments.length<2)c=0.45;if(arguments.length<1){a=1;b=c/4}else b=c/(2*Math.PI)*Math.asin(1/a);return function(f){return 1+a*Math.pow(2,10*-f)*Math.sin(-(f+b)*2*Math.PI/c)}},back:function(a){a||(a=1.70158);return function(c){return c*c*((a+1)*c-a)}},bounce:function(){return Y}},ga={"in":function(a){return a},out:Q,"in-out":R,"out-int":function(a){return R(Q(a))}};
l.ease=function(a){var c=a.indexOf("-"),b=c>=0?a.substring(0,c):a;c=c>=0?a.substring(c+1):"in";return ga[c](fa[b].apply(null,Array.prototype.slice.call(arguments,1)))};l.event=null;l.interpolate=function(a,c){if(typeof c=="number")return l.interpolateNumber(+a,c);if(typeof c=="string")return c in A||/^(#|rgb\(|hsl\()/.test(c)?l.interpolateRgb(String(a),c):l.interpolateString(String(a),c);if(c instanceof Array)return l.interpolateArray(a,c);return l.interpolateObject(a,c)};l.interpolateNumber=function(a,
c){c-=a;return function(b){return a+c*b}};l.interpolateString=function(a,c){var b,f,e=0,d=[],h=[],i,g;for(f=0;b=O.exec(c);++f){b.index&&d.push(c.substring(e,b.index));h.push({i:d.length,x:b[0]});d.push(null);e=O.lastIndex}e<c.length&&d.push(c.substring(e));f=0;for(i=h.length;(b=O.exec(a))&&f<i;++f){g=h[f];if(g.x==b[0]){if(g.i)if(d[g.i+1]==null){d[g.i-1]+=g.x;d.splice(g.i,1);for(b=f+1;b<i;++b)h[b].i--}else{d[g.i-1]+=g.x+d[g.i+1];d.splice(g.i,2);for(b=f+1;b<i;++b)h[b].i-=2}else if(d[g.i+1]==null)d[g.i]=
g.x;else{d[g.i]=g.x+d[g.i+1];d.splice(g.i+1,1);for(b=f+1;b<i;++b)h[b].i--}h.splice(f,1);i--;f--}else g.x=l.interpolateNumber(parseFloat(b[0]),parseFloat(g.x))}for(;f<i;){g=h.pop();if(d[g.i+1]==null)d[g.i]=g.x;else{d[g.i]=g.x+d[g.i+1];d.splice(g.i+1,1)}i--}if(d.length==1)return d[0]==null?h[0].x:function(){return c};return function(o){for(f=0;f<i;++f)d[(g=h[f]).i]=g.x(o);return d.join("")}};l.interpolateRgb=function(a,c){a=K(a);c=K(c);var b=a.r,f=a.g,e=a.b,d=c.r-b,h=c.g-f,i=c.b-e;return function(g){return"rgb("+
Math.round(b+d*g)+","+Math.round(f+h*g)+","+Math.round(e+i*g)+")"}};l.interpolateArray=function(a,c){var b=[],f=[],e=a.length,d=c.length,h=Math.min(a.length,c.length),i;for(i=0;i<h;++i)b.push(l.interpolate(a[i],c[i]));for(;i<e;++i)f[i]=a[i];for(;i<d;++i)f[i]=c[i];return function(g){for(i=0;i<h;++i)f[i]=b[i](g);return f}};l.interpolateObject=function(a,c){var b={},f={},e;for(e in a)if(e in c)b[e]=(e in ha||/\bcolor\b/.test(e)?l.interpolateRgb:l.interpolate)(a[e],c[e]);else f[e]=a[e];for(e in c)e in
a||(f[e]=c[e]);return function(d){for(e in b)f[e]=b[e](d);return f}};var O=/[-+]?(?:\d+\.\d+|\d+\.|\.\d+|\d+)(?:[eE][-]?\d+)?/g,ha={background:1,fill:1,stroke:1},A={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",
cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",
dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",
lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",
mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",
powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",
yellow:"#ffff00",yellowgreen:"#9acd32"},P;for(P in A)A[P]=K(A[P]);l.hsl=function(a,c,b){a=S(a,c,b);return"rgb("+a.r+","+a.g+","+a.b+")"};l.linear=function(){function a(g){return i((g-b)*h)}function c(g){var o=Math.min(b,f),j=Math.max(b,f),m=j-o,n=Math.pow(10,Math.floor(Math.log(m/g)/Math.LN10));g=g/(m/n);if(g<=0.15)n*=10;else if(g<=0.35)n*=5;else if(g<=0.75)n*=2;return{start:Math.ceil(o/n)*n,stop:Math.floor(j/n)*n+n*0.5,step:n}}var b=0,f=1,e=0,d=1,h=1/(f-b),i=l.interpolate(e,d);a.invert=function(g){return(g-
e)/h+b};a.domain=function(g){if(!arguments.length)return[b,f];b=g[0];f=g[1];h=1/(f-b);return a};a.range=function(g){if(!arguments.length)return[e,d];e=g[0];d=g[1];i=l.interpolate(e,d);return a};a.ticks=function(g){g=c(g);return l.range(g.start,g.stop,g.step)};a.tickFormat=function(g){var o=Math.max(0,-Math.floor(Math.log(c(g).step)/Math.LN10+0.01));return function(j){return j.toFixed(o)}};return a};l.log=function(){function a(b){return c(Math.log(b))}var c=l.linear();a.invert=function(b){return Math.exp(c.invert(b))};
a.domain=function(b){if(!arguments.length)return c.domain().map(Math.exp);c.domain(b.map(Math.log));return a};a.range=function(){var b=c.range.apply(c,arguments);return arguments.length?a:b};return a};l.pow=function(){function a(h){return Math.pow(h,e)}function c(h){return Math.pow(h,d)}function b(h){return f(a(h))}var f=l.linear(),e=1,d=1/e;b.invert=function(h){return c(f.invert(h))};b.domain=function(h){if(!arguments.length)return f.domain().map(c);f.domain(h.map(a));return b};b.range=function(){var h=
f.range.apply(f,arguments);return arguments.length?b:h};b.exponent=function(h){if(!arguments.length)return e;var i=b.domain();e=h;d=1/h;return b.domain(i)};return b};l.sqrt=function(){return l.pow().exponent(0.5)};l.ordinal=function(){function a(d){d=d in b?b[d]:b[d]=c.push(d)-1;return f[d%f.length]}var c=[],b={},f=[],e=0;a.domain=function(d){if(!arguments.length)return c;c=d;b={};for(var h=-1,i=-1,g=c.length;++h<g;){d=c[h];d in b||(b[d]=++i)}return a};a.range=function(d){if(!arguments.length)return f;
f=d;return a};a.rangePoints=function(d,h){if(arguments.length<2)h=0;var i=d[0],g=d[1],o=(g-i)/(c.length-1+h);f=c.length==1?[(i+g)/2]:l.range(i+o*h/2,g+o/2,o);e=0;return a};a.rangeBands=function(d,h){if(arguments.length<2)h=0;var i=d[0],g=d[1],o=(g-i)/(c.length+h);f=l.range(i+o*h,g,o);e=o*(1-h);return a};a.rangeBand=function(){return e};return a};var H=y([[document]]);H[0].parentNode=document.documentElement;l.select=function(a){return typeof a=="string"?H.select(a):y([[a]])};l.selectAll=function(a){return typeof a==
"string"?H.selectAll(a):y([Array.prototype.slice.call(a)])};l.transition=function(){return H.transition()};var C=null,N=0,G})(this);
if(!Date.now)Date.now=function(){return+new Date};if(!Object.create)Object.create=function(I){function E(){}E.prototype=I;return new E};
(function(I){function E(){var a={},b=[];a.add=function(e){for(var f=0;f<b.length;f++)if(b[f].listener==e)return a;b.push({listener:e,on:true});return a};a.remove=function(e){for(var f=0;f<b.length;f++){var d=b[f];if(d.listener==e){d.on=false;b=b.slice(0,f).concat(b.slice(f+1));break}}return a};a.dispatch=function(){for(var e=b,f=0,d=e.length;f<d;f++){var c=e[f];c.on&&c.listener.apply(this,arguments)}};return a}function Q(a){return function(b){return 1-a(1-b)}}function R(a){return function(b){return 0.5*
(b<0.5?a(2*b):2-a(2-2*b))}}function U(a){return a}function J(a){return function(b){return Math.pow(b,a)}}function V(a){return 1-Math.cos(a*Math.PI/2)}function W(a){return a?Math.pow(2,10*(a-1))-0.0010:0}function X(a){return 1-Math.sqrt(1-a*a)}function Y(a){return a<1/2.75?7.5625*a*a:a<2/2.75?7.5625*(a-=1.5/2.75)*a+0.75:a<2.5/2.75?7.5625*(a-=2.25/2.75)*a+0.9375:7.5625*(a-=2.625/2.75)*a+0.984375}function Z(a){return{nodeKey:function(b){return b.getAttribute(a)},dataKey:function(b){return b[a]}}}function K(a){var b,
e,f,d,c;if(d=/([a-z]+)\((.*)\)/i.exec(a)){c=d[2].split(",");switch(d[1]){case "hsl":return S(parseFloat(c[0]),parseFloat(c[1])/100,parseFloat(c[2])/100);case "rgb":return{r:L(c[0]),g:L(c[1]),b:L(c[2])}}}if(d=B[a])return d;if(a==null)return B.black;if(a.charAt(0)=="#"){if(a.length==4){b=a.charAt(1);b+=b;e=a.charAt(2);e+=e;f=a.charAt(3);f+=f}else if(a.length==7){b=a.substring(1,3);e=a.substring(3,5);f=a.substring(5,7)}b=parseInt(b,16);e=parseInt(e,16);f=parseInt(f,16)}return{r:b,g:e,b:f}}function S(a,
b,e){function f(h){if(h>360)h-=360;else if(h<0)h+=360;if(h<60)return d+(c-d)*h/60;if(h<180)return c;if(h<240)return d+(c-d)*(240-h)/60;return d}var d,c;a%=360;if(a<0)a+=360;b=b<0?0:b>1?1:b;e=e<0?0:e>1?1:e;c=e<=0.5?e*(1+b):e+b-e*b;d=2*e-c;return{r:Math.round(f(a+120)*255),g:Math.round(f(a)*255),b:Math.round(f(a-120)*255)}}function L(a){var b=parseFloat(a);return a.charAt(a.length-1)=="%"?Math.round(b*2.55):b}function z(a){function b(d){for(var c=[],h,i,g,n,p=0,j=a.length;p<j;p++){g=a[p];c.push(h=[]);
h.parentNode=g.parentNode;h.parentData=g.parentData;for(var k=0,o=g.length;k<o;k++)if(n=g[k]){h.push(i=d(n));if(i)i.__data__=n.__data__}else h.push(null)}return z(c)}function e(d){for(var c=[],h,i,g,n=0,p=a.length;n<p;n++){i=a[n];for(var j=0,k=i.length;j<k;j++)if(g=i[j]){c.push(h=d(g));h.parentNode=g;h.parentData=g.__data__}}return z(c)}function f(d){for(var c=0,h=a.length;c<h;c++)for(var i=a[c],g=0,n=i.length;g<n;g++){var p=i[g];if(p)return d.call(p,p.__data__,g)}return null}a.select=function(d){return b(function(c){return c.querySelector(d)})};
a.selectAll=function(d){return e(function(c){c=c.querySelectorAll(d);return Array.prototype.slice.call(c)})};a.data=function(d,c){function h(o,q){function v($){return o.parentNode.appendChild($)}var l=0,s=o.length,A=q.length,r=Math.min(s,A),t=Math.max(s,A),w=[],x=[],u=[],y,C;if(c){r={};t=[];var F;for(l=0;l<s;l++){r[F=c.nodeKey(y=o[l])]=y;t.push(F)}for(l=0;l<A;l++){if(y=r[F=c.dataKey(C=q[l])]){y.__data__=C;w[l]=y;x[l]=u[l]=null}else{x[l]={appendChild:v,__data__:C};w[l]=u[l]=null}delete r[F]}for(l=
0;l<s;l++)if(t[l]in r)u[l]=o[l]}else{for(;l<r;l++){y=o[l];C=q[l];if(y){y.__data__=C;w[l]=y;x[l]=u[l]=null}else{x[l]={appendChild:v,__data__:C};w[l]=u[l]=null}}for(;l<A;l++){x[l]={appendChild:v,__data__:q[l]};w[l]=u[l]=null}for(;l<t;l++){u[l]=o[l];x[l]=w[l]=null}}x.parentNode=w.parentNode=u.parentNode=o.parentNode;x.parentData=w.parentData=u.parentData=o.parentData;p.push(x);j.push(w);k.push(u)}var i=-1,g=a.length,n,p=[],j=[],k=[];if(typeof c=="string")c=Z(c);if(typeof d=="function")for(;++i<g;)h(n=
a[i],d.call(n,n.parentData,i));else for(;++i<g;)h(n=a[i],d);i=z(j);i.enter=function(o){return z(p).append(o)};i.exit=function(){return z(k)};return i};a.each=function(d){for(var c=0,h=a.length;c<h;c++)for(var i=a[c],g=0,n=i.length;g<n;g++){var p=i[g];p&&d.call(p,p.__data__,g)}return a};a.attr=function(d,c){function h(){this.removeAttribute(d)}function i(){this.removeAttributeNS(d.space,d.local)}function g(){this.setAttribute(d,c)}function n(){this.setAttributeNS(d.space,d.local,c)}function p(){var k=
c.apply(this,arguments);k==null?this.removeAttribute(d):this.setAttribute(d,k)}function j(){var k=c.apply(this,arguments);k==null?this.removeAttributeNS(d.space,d.local):this.setAttributeNS(d.space,d.local,k)}d=m.ns.qualify(d);if(arguments.length<2)return f(d.local?function(){return this.getAttributeNS(d.space,d.local)}:function(){return this.getAttribute(d)});return a.each(c==null?d.local?i:h:typeof c=="function"?d.local?j:p:d.local?n:g)};a.style=function(d,c,h){function i(){this.style.removeProperty(d)}
function g(){this.style.setProperty(d,c,h)}function n(){var p=c.apply(this,arguments);p==null?this.style.removeProperty(d):this.style.setProperty(d,p,h)}if(arguments.length<3)h=null;if(arguments.length<2)return f(function(){return window.getComputedStyle(this,null).getPropertyValue(d)});return a.each(c==null?i:typeof c=="function"?n:g)};a.text=function(d){function c(){this.appendChild(document.createTextNode(d))}function h(){var i=d.apply(this,arguments);i!=null&&this.appendChild(document.createTextNode(i))}
if(arguments.length<1)return f(function(){return this.textContent});a.each(function(){for(;this.lastChild;)this.removeChild(this.lastChild)});return d==null?a:a.each(typeof d=="function"?h:c)};a.html=function(d){function c(){this.innerHTML=d}function h(){this.innerHTML=d.apply(this,arguments)}if(arguments.length<1)return f(function(){return this.innerHTML});return a.each(typeof d=="function"?h:c)};a.append=function(d){function c(i){return i.appendChild(document.createElement(d))}function h(i){return i.appendChild(document.createElementNS(d.space,
d.local))}d=m.ns.qualify(d);return b(d.local?h:c)};a.remove=function(){return b(function(d){var c=d.parentNode;c.removeChild(d);return c})};a.on=function(d,c){d="on"+d;return a.each(function(h,i){this[d]=function(g){m.event=g;try{c.call(this,h,i)}finally{m.event=null}}})};a.transition=function(d){return M(a,d)};return a}function M(a,b){function e(j){var k=true,o=-1;a.each(function(){if(h[++o]!=2){var q=(j-i[o])/g[o];if(q>=1)q=1;else{k=false;if(q<0)return;if(!h[o]){h[o]=1;c.start.dispatch.apply(this,
arguments)}}var v=p(q),l;for(l in d)d[l].call(this,v,o);if(q==1){h[o]=2;c.end.dispatch.apply(this,arguments)}}});return k}var f={},d={},c=m.dispatch("start","end"),h=[],i=[],g=[],n,p=m.ease("cubic-in-out");f.delay=function(j){var k=Infinity,o=-1;if(typeof j=="function")a.each(function(){var q=i[++o]=+j.apply(this,arguments);if(q<k)k=q});else{k=+j;a.each(function(){i[++o]=k})}aa(e,k);return f};f.duration=function(j){var k=-1;if(typeof j=="function"){n=0;a.each(function(){var o=g[++k]=+j.apply(this,
arguments);if(o>n)n=o})}else{n=+j;a.each(function(){g[++k]=n})}return f};f.ease=function(j){p=typeof j=="string"?m.ease(j):j;return f};f.attrTween=function(j,k){function o(r,t){s[++A]=k.call(this,r,t,this.getAttribute(j))}function q(r,t){s[++A]=k.call(this,r,t,this.getAttributeNS(j.space,j.local))}function v(r,t){this.setAttribute(j,s[t](r))}function l(r,t){this.setAttributeNS(j.space,j.local,s[t](r))}var s=[],A=-1;j=m.ns.qualify(j);a.each(j.local?q:o);d["attr."+j]=j.local?l:v;return f};f.attr=function(j,
k){return f.attrTween(j,T(k))};f.styleTween=function(j,k,o){var q=[],v=-1;a.each(function(l,s){q[++v]=k.call(this,l,s,window.getComputedStyle(this,null).getPropertyValue(j))});d["style."+j]=function(l,s){this.style.setProperty(j,q[s](l),o)};return f};f.style=function(j,k,o){return f.styleTween(j,T(k),o)};f.select=function(j){var k;j=M(a.select(j),b).ease(p);k=-1;j.delay(function(){return i[++k]});k=-1;j.duration(function(){return g[++k]});return j};f.selectAll=function(j){var k;j=M(a.selectAll(j),
b).ease(p);k=-1;j.delay(function(o,q){return i[q?k:++k]});k=-1;j.duration(function(o,q){return g[q?k:++k]});return j};f.each=function(j,k){c[j].add(k);return f};return f.delay(0).duration(250)}function aa(a,b){for(var e=Date.now(),f=false,d=e+b,c=D;c;){if(c.callback==a){c.then=e;c.delay=b;f=true}else{var h=c.then+c.delay;if(h<d)d=h}c=c.next}f||(D={callback:a,then:e,delay:b,next:D});if(!G){clearTimeout(N);N=setTimeout(ba,Math.min(24,d-e))}}function ba(){G=setInterval(ca,24);N=0}function ca(){for(var a,
b=Date.now(),e=D;e;){a=b-e.then;if(a>e.delay)e.flush=e.callback(a);e=e.next}a=null;for(b=D;b;)b=b.flush?a?a.next=b.next:D=b.next:(a=b).next;a||(G=clearInterval(G))}function T(a){return typeof a=="function"?function(b,e,f){return m.interpolate(f,a.call(this,b,e))}:function(b,e,f){return m.interpolate(f,a)}}var m=I.d3={};m.version="0.1.0";m.range=function(a,b,e){if(arguments.length==1){b=a;a=0}if(e==null)e=1;if((b-a)/e==Infinity)throw Error("infinite range");var f=[],d=-1,c;if(e<0)for(;(c=a+e*++d)>
b;)f.push(c);else for(;(c=a+e*++d)<b;)f.push(c);return f};m.ns={prefix:{svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},qualify:function(a){var b=a.indexOf(":");return b<0?a:{space:m.ns.prefix[a.substring(0,b)],local:a.substring(b+1)}}};m.dispatch=function(){for(var a={},b,e=0,f=arguments.length;e<f;e++){b=arguments[e];a[b]=E(b)}return a};var da=J(2),ea=J(3),
fa={linear:function(){return U},poly:J,quad:function(){return da},cubic:function(){return ea},sin:function(){return V},exp:function(){return W},circle:function(){return X},elastic:function(a,b){var e;if(arguments.length<2)b=0.45;if(arguments.length<1){a=1;e=b/4}else e=b/(2*Math.PI)*Math.asin(1/a);return function(f){return 1+a*Math.pow(2,10*-f)*Math.sin(-(f+e)*2*Math.PI/b)}},back:function(a){a||(a=1.70158);return function(b){return b*b*((a+1)*b-a)}},bounce:function(){return Y}},ga={"in":function(a){return a},
out:Q,"in-out":R,"out-int":function(a){return R(Q(a))}};m.ease=function(a){var b=a.indexOf("-"),e=b>=0?a.substring(0,b):a;b=b>=0?a.substring(b+1):"in";return ga[b](fa[e].apply(null,Array.prototype.slice.call(arguments,1)))};m.event=null;m.interpolate=function(a,b){if(typeof b=="number")return m.interpolateNumber(+a,b);if(typeof b=="string")return b in B||/^(#|rgb\(|hsl\()/.test(b)?m.interpolateRgb(String(a),b):m.interpolateString(String(a),b);if(b instanceof Array)return m.interpolateArray(a,b);return m.interpolateObject(a,
b)};m.interpolateNumber=function(a,b){b-=a;return function(e){return a+b*e}};m.interpolateString=function(a,b){var e,f,d=0,c=[],h=[],i,g;for(f=0;e=O.exec(b);++f){e.index&&c.push(b.substring(d,e.index));h.push({i:c.length,x:e[0]});c.push(null);d=O.lastIndex}d<b.length&&c.push(b.substring(d));f=0;for(i=h.length;(e=O.exec(a))&&f<i;++f){g=h[f];if(g.x==e[0]){if(g.i)if(c[g.i+1]==null){c[g.i-1]+=g.x;c.splice(g.i,1);for(e=f+1;e<i;++e)h[e].i--}else{c[g.i-1]+=g.x+c[g.i+1];c.splice(g.i,2);for(e=f+1;e<i;++e)h[e].i-=
2}else if(c[g.i+1]==null)c[g.i]=g.x;else{c[g.i]=g.x+c[g.i+1];c.splice(g.i+1,1);for(e=f+1;e<i;++e)h[e].i--}h.splice(f,1);i--;f--}else g.x=m.interpolateNumber(parseFloat(e[0]),parseFloat(g.x))}for(;f<i;){g=h.pop();if(c[g.i+1]==null)c[g.i]=g.x;else{c[g.i]=g.x+c[g.i+1];c.splice(g.i+1,1)}i--}if(c.length==1)return c[0]==null?h[0].x:function(){return b};return function(n){for(f=0;f<i;++f)c[(g=h[f]).i]=g.x(n);return c.join("")}};m.interpolateRgb=function(a,b){a=K(a);b=K(b);var e=a.r,f=a.g,d=a.b,c=b.r-e,h=
b.g-f,i=b.b-d;return function(g){return"rgb("+Math.round(e+c*g)+","+Math.round(f+h*g)+","+Math.round(d+i*g)+")"}};m.interpolateArray=function(a,b){var e=[],f=[],d=a.length,c=b.length,h=Math.min(a.length,b.length),i;for(i=0;i<h;++i)e.push(m.interpolate(a[i],b[i]));for(;i<d;++i)f[i]=a[i];for(;i<c;++i)f[i]=b[i];return function(g){for(i=0;i<h;++i)f[i]=e[i](g);return f}};m.interpolateObject=function(a,b){var e={},f={},d;for(d in a)if(d in b)e[d]=(d in ha||/\bcolor\b/.test(d)?m.interpolateRgb:m.interpolate)(a[d],
b[d]);else f[d]=a[d];for(d in b)d in a||(f[d]=b[d]);return function(c){for(d in e)f[d]=e[d](c);return f}};var O=/[-+]?(?:\d+\.\d+|\d+\.|\.\d+|\d+)(?:[eE][-]?\d+)?/g,ha={background:1,fill:1,stroke:1},B={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",
coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",
deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",
lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",
mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",
pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",
white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},P;for(P in B)B[P]=K(B[P]);m.hsl=function(a,b,e){a=S(a,b,e);return"rgb("+a.r+","+a.g+","+a.b+")"};m.linear=function(){function a(g){return i((g-e)*h)}function b(g){var n=Math.min(e,f),p=Math.max(e,f),j=p-n,k=Math.pow(10,Math.floor(Math.log(j/g)/Math.LN10));g=g/(j/k);if(g<=0.15)k*=10;else if(g<=0.35)k*=5;else if(g<=0.75)k*=2;return{start:Math.ceil(n/k)*k,stop:Math.floor(p/k)*k+k*0.5,step:k}}var e=0,f=1,d=0,c=1,h=1/(f-e),i=
m.interpolate(d,c);a.invert=function(g){return(g-d)/h+e};a.domain=function(g){if(!arguments.length)return[e,f];e=g[0];f=g[1];h=1/(f-e);return a};a.range=function(g){if(!arguments.length)return[d,c];d=g[0];c=g[1];i=m.interpolate(d,c);return a};a.ticks=function(g){g=b(g);return m.range(g.start,g.stop,g.step)};a.tickFormat=function(g){var n=Math.max(0,-Math.floor(Math.log(b(g).step)/Math.LN10+0.01));return function(p){return p.toFixed(n)}};return a};m.log=function(){function a(e){return b(Math.log(e))}
var b=m.linear();a.invert=function(e){return Math.exp(b.invert(e))};a.domain=function(e){if(!arguments.length)return b.domain().map(Math.exp);b.domain(e.map(Math.log));return a};a.range=function(){var e=b.range.apply(b,arguments);return arguments.length?a:e};return a};m.pow=function(){function a(h){return Math.pow(h,d)}function b(h){return Math.pow(h,c)}function e(h){return f(a(h))}var f=m.linear(),d=1,c=1/d;e.invert=function(h){return b(f.invert(h))};e.domain=function(h){if(!arguments.length)return f.domain().map(b);
f.domain(h.map(a));return e};e.range=function(){var h=f.range.apply(f,arguments);return arguments.length?e:h};e.exponent=function(h){if(!arguments.length)return d;var i=e.domain();d=h;c=1/h;return e.domain(i)};return e};m.sqrt=function(){return m.pow().exponent(0.5)};m.ordinal=function(){function a(c){c=c in e?e[c]:e[c]=b.push(c)-1;return f[c%f.length]}var b=[],e={},f=[],d=0;a.domain=function(c){if(!arguments.length)return b;b=c;e={};for(var h=-1,i=-1,g=b.length;++h<g;){c=b[h];c in e||(e[c]=++i)}return a};
a.range=function(c){if(!arguments.length)return f;f=c;return a};a.rangePoints=function(c,h){if(arguments.length<2)h=0;var i=c[0],g=c[1],n=(g-i)/(b.length-1+h);f=b.length==1?[(i+g)/2]:m.range(i+n*h/2,g+n/2,n);d=0;return a};a.rangeBands=function(c,h){if(arguments.length<2)h=0;var i=c[0],g=c[1],n=(g-i)/(b.length+h);f=m.range(i+n*h,g,n);d=n*(1-h);return a};a.rangeBand=function(){return d};return a};var H=z([[document]]);H[0].parentNode=document.documentElement;m.select=function(a){return typeof a=="string"?
H.select(a):z([[a]])};m.selectAll=function(a){return typeof a=="string"?H.selectAll(a):z([Array.prototype.slice.call(a)])};m.transition=H.transition;var D=null,N=0,G})(this);

Просмотреть файл

@ -362,8 +362,8 @@ function d3_selection(groups) {
// TODO filter, slice?
groups.transition = function() {
return d3_transition(groups);
groups.transition = function(name) {
return d3_transition(groups, name);
};
return groups;

Просмотреть файл

@ -49,12 +49,20 @@ function d3_timer_step() {
t1 = d3_timer_queue;
while (t1) {
elapsed = now - t1.then;
if ((elapsed > t1.delay) && t1.callback(elapsed)) {
if (t0) t0.next = t1.next;
else d3_timer_queue = t1.next;
}
t0 = t1;
t1 = t1.next;
if (elapsed > t1.delay) t1.flush = t1.callback(elapsed);
t1 = (t0 = t1).next;
}
d3_timer_flush();
}
// Flush after callbacks, to avoid concurrent queue modification.
function d3_timer_flush() {
var t0 = null,
t1 = d3_timer_queue;
while (t1) {
t1 = t1.flush
? (t0 ? t0.next = t1.next : d3_timer_queue = t1.next)
: (t0 = t1).next;
}
if (!t0) d3_timer_interval = clearInterval(d3_timer_interval);
}

Просмотреть файл

@ -1,9 +1,7 @@
d3.transition = function() {
return d3_root.transition();
};
d3.transition = d3_root.transition;
// TODO namespace transitions; cancel collisions
function d3_transition(groups) {
function d3_transition(groups, name) {
var transition = {},
tweens = {},
event = d3.dispatch("start", "end"),
@ -134,14 +132,14 @@ function d3_transition(groups) {
};
transition.select = function(query) {
var k, t = d3_transition(groups.select(query)).ease(ease);
var k, t = d3_transition(groups.select(query), name).ease(ease);
k = -1; t.delay(function(d, i) { return delay[++k]; });
k = -1; t.duration(function(d, i) { return duration[++k]; });
return t;
};
transition.selectAll = function(query) {
var k, t = d3_transition(groups.selectAll(query)).ease(ease);
var k, t = d3_transition(groups.selectAll(query), name).ease(ease);
k = -1; t.delay(function(d, i) { return delay[i ? k : ++k]; })
k = -1; t.duration(function(d, i) { return duration[i ? k : ++k]; });
return t;