This commit is contained in:
Michael Bostock 2010-11-01 23:28:27 -07:00
Родитель 05a255ca9a
Коммит 5c72d2c1c6
5 изменённых файлов: 171 добавлений и 33 удалений

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

@ -1,4 +1,4 @@
d3 = {version: "0.2.0"}; // semver
d3 = {version: "0.3.0"}; // semver
if (!Date.now) Date.now = function() {
return +new Date();
};
@ -1066,6 +1066,22 @@ function d3_selection(groups) {
});
};
groups.sort = function(comparator) {
comparator = d3_comparator.apply(this, arguments);
for (var j = 0, m = groups.length; j < m; j++) {
var group = groups[j];
group.sort(comparator);
for (var i = 1, n = group.length, prev = group[0]; i < n; i++) {
var node = group[i];
if (node) {
if (prev) prev.parentNode.insertBefore(node, prev.nextSibling);
prev = node;
}
}
}
return groups;
};
// TODO namespaced event listeners to allow multiples
groups.on = function(type, listener) {
type = "on" + type;
@ -1099,6 +1115,21 @@ function d3_selection_join(key) {
dataKey: function(data) { return data[key]; }
};
}
function d3_comparator(comparator) {
if (!arguments.length) comparator = d3_ascending;
return function(a, b) {
return comparator(a && a.__data__, b && b.__data__);
};
}
function d3_ascending(a, b) {
return a < b ? -1 : a > b ? 1 : 0;
}
function d3_descending(a, b) {
return a < b ? 1 : a > b ? -1 : 0;
}
d3.transition = d3_root.transition;
// TODO namespace transitions; cancel collisions

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

@ -1,17 +1,17 @@
(function(){var p=null;d3={version:"0.2.0"};if(!Date.now)Date.now=function(){return+new Date};if(!Object.create)Object.create=function(a){function d(){}d.prototype=a;return new d};function z(a){return Array.prototype.slice.call(a)}function C(a,d){d=z(arguments);d[0]=this;a.apply(this,d);return this}d3.range=function(a,d,e){if(arguments.length==1){d=a;a=0}if(e==p)e=1;if((d-a)/e==Infinity)throw Error("infinite range");var f=[],c=-1,b;if(e<0)for(;(b=a+e*++c)>d;)f.push(b);else for(;(b=a+e*++c)<d;)f.push(b);return f};
(function(){var p=null;d3={version:"0.3.0"};if(!Date.now)Date.now=function(){return+new Date};if(!Object.create)Object.create=function(a){function d(){}d.prototype=a;return new d};function z(a){return Array.prototype.slice.call(a)}function C(a,d){d=z(arguments);d[0]=this;a.apply(this,d);return this}d3.range=function(a,d,e){if(arguments.length==1){d=a;a=0}if(e==p)e=1;if((d-a)/e==Infinity)throw Error("infinite range");var f=[],c=-1,b;if(e<0)for(;(b=a+e*++c)>d;)f.push(b);else for(;(b=a+e*++c)<d;)f.push(b);return f};
d3.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 d=a.indexOf(":");return d<0?a:{space:d3.ns.prefix[a.substring(0,d)],local:a.substring(d+1)}}};d3.dispatch=function(){for(var a={},d,e=0,f=arguments.length;e<f;e++){d=arguments[e];a[d]=E(d)}return a};
function E(){var a={},d=[];a.add=function(e){for(var f=0;f<d.length;f++)if(d[f].e==e)return a;d.push({e:e,on:true});return a};a.remove=function(e){for(var f=0;f<d.length;f++){var c=d[f];if(c.e==e){c.on=false;d=d.slice(0,f).concat(d.slice(f+1));break}}return a};a.dispatch=function(){for(var e=d,f=0,c=e.length;f<c;f++){var b=e[f];b.on&&b.e.apply(this,arguments)}};return a}
d3.format=function(a){a=F.exec(a);var d=a[1]||" ",e=a[5],f=+a[6],c=a[7],b=a[8],h=a[9];if(b)b=b.substring(1);if(e)d="0";if(h=="d")b="0";return function(i){if(h=="d"&&i%1)return"";if(b)i=(+i).toFixed(b);else i+="";if(c){for(var g=i.lastIndexOf("."),m=g>=0?i.substring(g):(g=i.length,""),n=[];g>0;)n.push(i.substring(g-=3,g+3));i=n.reverse().join(",")+m}g=i.length;if(g<f)i=Array(f-g+1).join(d)+i;return i}};
d3.format=function(a){a=F.exec(a);var d=a[1]||" ",e=a[5],f=+a[6],c=a[7],b=a[8],i=a[9];if(b)b=b.substring(1);if(e)d="0";if(i=="d")b="0";return function(h){if(i=="d"&&h%1)return"";if(b)h=(+h).toFixed(b);else h+="";if(c){for(var g=h.lastIndexOf("."),l=g>=0?h.substring(g):(g=h.length,""),n=[];g>0;)n.push(h.substring(g-=3,g+3));h=n.reverse().join(",")+l}g=h.length;if(g<f)h=Array(f-g+1).join(d)+h;return h}};
var F=/(?:([^{])?([<>=^]))?([+\- ])?(#)?(0)?([0-9]+)?(,)?(\.[0-9]+)?([a-zA-Z%])?/,H=G(2),I=G(3),ea={linear:function(){return J},poly:G,quad:function(){return H},cubic:function(){return I},sin:function(){return K},exp:function(){return L},circle:function(){return aa},elastic:ba,back:ca,bounce:function(){return da}},fa={"in":function(a){return a},out:M,"in-out":N,"out-int":function(a){return N(M(a))}};
d3.ease=function(a){var d=a.indexOf("-");return fa[d>=0?a.substring(d+1):"in"](ea[d>=0?a.substring(0,d):a].apply(p,Array.prototype.slice.call(arguments,1)))};function M(a){return function(d){return 1-a(1-d)}}function N(a){return function(d){return 0.5*(d<0.5?a(2*d):2-a(2-2*d))}}function J(a){return a}function G(a){return function(d){return Math.pow(d,a)}}function K(a){return 1-Math.cos(a*Math.PI/2)}function L(a){return a?Math.pow(2,10*(a-1))-0.0010:0}function aa(a){return 1-Math.sqrt(1-a*a)}
function ba(a,d){var e;if(arguments.length<2)d=0.45;if(arguments.length<1){a=1;e=d/4}else e=d/(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/d)}}function ca(a){a||(a=1.70158);return function(d){return d*d*((a+1)*d-a)}}function da(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}d3.event=p;
d3.interpolate=function(a,d){if(typeof d=="number")return d3.interpolateNumber(+a,d);if(typeof d=="string")return d in O||/^(#|rgb\(|hsl\()/.test(d)?d3.interpolateRgb(String(a),d):d3.interpolateString(String(a),d);if(d instanceof Array)return d3.interpolateArray(a,d);return d3.interpolateObject(a,d)};d3.interpolateNumber=function(a,d){d-=a;return function(e){return a+d*e}};
d3.interpolateString=function(a,d){var e,f,c=0,b=[],h=[],i,g;for(f=0;e=P.exec(d);++f){e.index&&b.push(d.substring(c,e.index));h.push({a:b.length,x:e[0]});b.push(p);c=P.lastIndex}c<d.length&&b.push(d.substring(c));f=0;for(i=h.length;(e=P.exec(a))&&f<i;++f){g=h[f];if(g.x==e[0]){if(g.a)if(b[g.a+1]==p){b[g.a-1]+=g.x;b.splice(g.a,1);for(e=f+1;e<i;++e)h[e].a--}else{b[g.a-1]+=g.x+b[g.a+1];b.splice(g.a,2);for(e=f+1;e<i;++e)h[e].a-=2}else if(b[g.a+1]==p)b[g.a]=g.x;else{b[g.a]=g.x+b[g.a+1];b.splice(g.a+1,1);
for(e=f+1;e<i;++e)h[e].a--}h.splice(f,1);i--;f--}else g.x=d3.interpolateNumber(parseFloat(e[0]),parseFloat(g.x))}for(;f<i;){g=h.pop();if(b[g.a+1]==p)b[g.a]=g.x;else{b[g.a]=g.x+b[g.a+1];b.splice(g.a+1,1)}i--}if(b.length==1)return b[0]==p?h[0].x:function(){return d};return function(m){for(f=0;f<i;++f)b[(g=h[f]).a]=g.x(m);return b.join("")}};
d3.interpolateRgb=function(a,d){a=Q(a);d=Q(d);var e=a.d,f=a.c,c=a.b,b=d.d-e,h=d.c-f,i=d.b-c;return function(g){return"rgb("+Math.round(e+b*g)+","+Math.round(f+h*g)+","+Math.round(c+i*g)+")"}};d3.interpolateArray=function(a,d){var e=[],f=[],c=a.length,b=d.length,h=Math.min(a.length,d.length),i;for(i=0;i<h;++i)e.push(d3.interpolate(a[i],d[i]));for(;i<c;++i)f[i]=a[i];for(;i<b;++i)f[i]=d[i];return function(g){for(i=0;i<h;++i)f[i]=e[i](g);return f}};
d3.interpolateString=function(a,d){var e,f,c=0,b=[],i=[],h,g;for(f=0;e=P.exec(d);++f){e.index&&b.push(d.substring(c,e.index));i.push({a:b.length,x:e[0]});b.push(p);c=P.lastIndex}c<d.length&&b.push(d.substring(c));f=0;for(h=i.length;(e=P.exec(a))&&f<h;++f){g=i[f];if(g.x==e[0]){if(g.a)if(b[g.a+1]==p){b[g.a-1]+=g.x;b.splice(g.a,1);for(e=f+1;e<h;++e)i[e].a--}else{b[g.a-1]+=g.x+b[g.a+1];b.splice(g.a,2);for(e=f+1;e<h;++e)i[e].a-=2}else if(b[g.a+1]==p)b[g.a]=g.x;else{b[g.a]=g.x+b[g.a+1];b.splice(g.a+1,1);
for(e=f+1;e<h;++e)i[e].a--}i.splice(f,1);h--;f--}else g.x=d3.interpolateNumber(parseFloat(e[0]),parseFloat(g.x))}for(;f<h;){g=i.pop();if(b[g.a+1]==p)b[g.a]=g.x;else{b[g.a]=g.x+b[g.a+1];b.splice(g.a+1,1)}h--}if(b.length==1)return b[0]==p?i[0].x:function(){return d};return function(l){for(f=0;f<h;++f)b[(g=i[f]).a]=g.x(l);return b.join("")}};
d3.interpolateRgb=function(a,d){a=Q(a);d=Q(d);var e=a.d,f=a.c,c=a.b,b=d.d-e,i=d.c-f,h=d.b-c;return function(g){return"rgb("+Math.round(e+b*g)+","+Math.round(f+i*g)+","+Math.round(c+h*g)+")"}};d3.interpolateArray=function(a,d){var e=[],f=[],c=a.length,b=d.length,i=Math.min(a.length,d.length),h;for(h=0;h<i;++h)e.push(d3.interpolate(a[h],d[h]));for(;h<c;++h)f[h]=a[h];for(;h<b;++h)f[h]=d[h];return function(g){for(h=0;h<i;++h)f[h]=e[h](g);return f}};
d3.interpolateObject=function(a,d){var e={},f={},c;for(c in a)if(c in d)e[c]=(c in ga||/\bcolor\b/.test(c)?d3.interpolateRgb:d3.interpolate)(a[c],d[c]);else f[c]=a[c];for(c in d)c in a||(f[c]=d[c]);return function(b){for(c in e)f[c]=e[c](b);return f}};var P=/[-+]?(?:\d+\.\d+|\d+\.|\.\d+|\d+)(?:[eE][-]?\d+)?/g,ga={background:1,fill:1,stroke:1};
function Q(a){var d,e,f,c,b;if(c=/([a-z]+)\((.*)\)/i.exec(a)){b=c[2].split(",");switch(c[1]){case "hsl":return R(parseFloat(b[0]),parseFloat(b[1])/100,parseFloat(b[2])/100);case "rgb":return{d:S(b[0]),c:S(b[1]),b:S(b[2])}}}if(c=O[a])return c;if(a==p)return O.j;if(a.charAt(0)=="#"){if(a.length==4){d=a.charAt(1);d+=d;e=a.charAt(2);e+=e;f=a.charAt(3);f+=f}else if(a.length==7){d=a.substring(1,3);e=a.substring(3,5);f=a.substring(5,7)}d=parseInt(d,16);e=parseInt(e,16);f=parseInt(f,16)}return{d:d,c:e,b:f}}
function R(a,d,e){function f(h){if(h>360)h-=360;else if(h<0)h+=360;if(h<60)return c+(b-c)*h/60;if(h<180)return b;if(h<240)return c+(b-c)*(240-h)/60;return c}var c,b;a%=360;if(a<0)a+=360;d=d<0?0:d>1?1:d;e=e<0?0:e>1?1:e;b=e<=0.5?e*(1+d):e+d-e*d;c=2*e-b;return{d:Math.round(f(a+120)*255),c:Math.round(f(a)*255),b:Math.round(f(a-120)*255)}}function S(a){var d=parseFloat(a);return a.charAt(a.length-1)=="%"?Math.round(d*2.55):d}
function R(a,d,e){function f(i){if(i>360)i-=360;else if(i<0)i+=360;if(i<60)return c+(b-c)*i/60;if(i<180)return b;if(i<240)return c+(b-c)*(240-i)/60;return c}var c,b;a%=360;if(a<0)a+=360;d=d<0?0:d>1?1:d;e=e<0?0:e>1?1:e;b=e<=0.5?e*(1+d):e+d-e*d;c=2*e-b;return{d:Math.round(f(a+120)*255),c:Math.round(f(a)*255),b:Math.round(f(a-120)*255)}}function S(a){var d=parseFloat(a);return a.charAt(a.length-1)=="%"?Math.round(d*2.55):d}
var O={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",
@ -19,32 +19,33 @@ lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsla
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"},T;for(T in O)O[T]=Q(O[T]);d3.hsl=function(a,d,e){a=R(a,d,e);return"rgb("+a.d+","+a.c+","+a.b+")"};var V=U([[document]]);
V[0].parentNode=document.documentElement;d3.select=function(a){return typeof a=="string"?V.select(a):U([[a]])};d3.selectAll=function(a){return typeof a=="string"?V.selectAll(a):U([z(a)])};
function U(a){function d(c){for(var b=[],h,i,g,m,n=0,j=a.length;n<j;n++){g=a[n];b.push(h=[]);h.parentNode=g.parentNode;h.parentData=g.parentData;for(var k=0,o=g.length;k<o;k++)if(m=g[k]){h.push(i=c(m));if(i)i.__data__=m.__data__}else h.push(p)}return U(b)}function e(c){for(var b=[],h,i,g,m=0,n=a.length;m<n;m++){i=a[m];for(var j=0,k=i.length;j<k;j++)if(g=i[j]){b.push(h=c(g));h.parentNode=g;h.parentData=g.__data__}}return U(b)}function f(c){for(var b=0,h=a.length;b<h;b++)for(var i=a[b],g=0,m=i.length;g<
m;g++){var n=i[g];if(n)return c.call(n,n.__data__,g)}return p}a.select=function(c){return d(function(b){return b.querySelector(c)})};a.selectAll=function(c){return e(function(b){return z(b.querySelectorAll(c))})};a.data=function(c,b){function h(o,q){function v(ha){return o.parentNode.appendChild(ha)}var l=0,s=o.length,B=q.length,r=Math.min(s,B),t=Math.max(s,B),w=[],x=[],u=[],y,A;if(b){r={};t=[];var D;A=q.length;for(l=0;l<s;l++){D=b.nodeKey(y=o[l]);if(D in r)u[A++]=o[l];else{r[D]=y;t.push(D)}}for(l=
0;l<B;l++){if(y=r[D=b.dataKey(A=q[l])]){y.__data__=A;w[l]=y;x[l]=u[l]=p}else{x[l]={appendChild:v,__data__:A};w[l]=u[l]=p}delete r[D]}for(l=0;l<s;l++)if(t[l]in r)u[l]=o[l]}else{for(;l<r;l++){y=o[l];A=q[l];if(y){y.__data__=A;w[l]=y;x[l]=u[l]=p}else{x[l]={appendChild:v,__data__:A};w[l]=u[l]=p}}for(;l<B;l++){x[l]={appendChild:v,__data__:q[l]};w[l]=u[l]=p}for(;l<t;l++){u[l]=o[l];x[l]=w[l]=p}}x.parentNode=w.parentNode=u.parentNode=o.parentNode;x.parentData=w.parentData=u.parentData=o.parentData;n.push(x);
j.push(w);k.push(u)}var i=-1,g=a.length,m,n=[],j=[],k=[];if(typeof b=="string")b=ia(b);if(typeof c=="function")for(;++i<g;)h(m=a[i],c.call(m,m.parentData,i));else for(;++i<g;)h(m=a[i],c);i=U(j);i.enter=function(o){return U(n).append(o)};i.exit=function(){return U(k)};return i};a.each=function(c){for(var b=0,h=a.length;b<h;b++)for(var i=a[b],g=0,m=i.length;g<m;g++){var n=i[g];n&&c.call(n,n.__data__,g)}return a};a.attr=function(c,b){function h(){this.removeAttribute(c)}function i(){this.removeAttributeNS(c.space,
c.local)}function g(){this.setAttribute(c,b)}function m(){this.setAttributeNS(c.space,c.local,b)}function n(){var k=b.apply(this,arguments);k==p?this.removeAttribute(c):this.setAttribute(c,k)}function j(){var k=b.apply(this,arguments);k==p?this.removeAttributeNS(c.space,c.local):this.setAttributeNS(c.space,c.local,k)}c=d3.ns.qualify(c);if(arguments.length<2)return f(c.local?function(){return this.getAttributeNS(c.space,c.local)}:function(){return this.getAttribute(c)});return a.each(b==p?c.local?
i:h:typeof b=="function"?c.local?j:n:c.local?m:g)};a.style=function(c,b,h){function i(){this.style.removeProperty(c)}function g(){this.style.setProperty(c,b,h)}function m(){var n=b.apply(this,arguments);n==p?this.style.removeProperty(c):this.style.setProperty(c,n,h)}if(arguments.length<3)h=p;if(arguments.length<2)return f(function(){return window.getComputedStyle(this,p).getPropertyValue(c)});return a.each(b==p?i:typeof b=="function"?m:g)};a.property=function(c,b){function h(){delete this[c]}function i(){this[c]=
b}function g(){var m=b.apply(this,arguments);if(m==p)delete this[c];else this[c]=m}c=d3.ns.qualify(c);if(arguments.length<2)return f(function(){return this[c]});return a.each(b==p?h:typeof b=="function"?g:i)};a.text=function(c){function b(){this.appendChild(document.createTextNode(c))}function h(){var i=c.apply(this,arguments);i!=p&&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 c==p?a:a.each(typeof c=="function"?h:b)};a.html=function(c){function b(){this.innerHTML=c}function h(){this.innerHTML=c.apply(this,arguments)}if(arguments.length<1)return f(function(){return this.innerHTML});return a.each(typeof c=="function"?h:b)};a.append=function(c){function b(i){return i.appendChild(document.createElement(c))}function h(i){return i.appendChild(document.createElementNS(c.space,c.local))}c=d3.ns.qualify(c);return d(c.local?h:b)};a.remove=function(){return d(function(c){var b=
c.parentNode;b.removeChild(c);return b})};a.on=function(c,b){c="on"+c;return a.each(function(h,i){this[c]=function(g){d3.event=g;try{b.call(this,h,i)}finally{d3.event=p}}})};a.transition=function(c){return W(a,c)};a.call=C;return a}function ia(a){return{nodeKey:function(d){return d.getAttribute(a)},dataKey:function(d){return d[a]}}}d3.transition=V.transition;
function W(a,d){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;b.start.dispatch.apply(this,arguments)}}var v=n(q),l;for(l in c)c[l].call(this,v,o);if(q==1){h[o]=2;b.end.dispatch.apply(this,arguments)}}});return k}var f={},c={},b=d3.dispatch("start","end"),h=[],i=[],g=[],m,n=d3.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})}ja(e,k);return f};f.duration=function(j){var k=-1;if(typeof j=="function"){m=0;a.each(function(){var o=g[++k]=+j.apply(this,arguments);if(o>m)m=o})}else{m=+j;a.each(function(){g[++k]=m})}return f};f.ease=function(j){n=typeof j=="string"?d3.ease(j):j;return f};f.attrTween=function(j,k){function o(r,t){s[++B]=k.call(this,r,t,this.getAttribute(j))}function q(r,t){s[++B]=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=[],B=-1;j=d3.ns.qualify(j);a.each(j.local?q:o);c["attr."+j]=j.local?l:v;return f};f.attr=function(j,k){return f.attrTween(j,X(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,p).getPropertyValue(j))});c["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,X(k),o)};f.select=function(j){var k;
j=W(a.select(j),d).ease(n);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=W(a.selectAll(j),d).ease(n);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){b[j].add(k);return f};f.call=C;return f.delay(0).duration(250)}var Y=p,Z=0,$;
function ja(a,d){var e=Date.now(),f=false,c=e+d,b=Y;if(isFinite(d)){for(;b;){if(b.g==a){b.f=e;b.delay=d;f=true}else{var h=b.f+b.delay;if(h<c)c=h}b=b.next}f||(Y={g:a,f:e,delay:d,next:Y});if(!$){clearTimeout(Z);Z=setTimeout(ka,Math.max(24,c-e))}}}function ka(){$=setInterval(la,24);Z=0}function la(){for(var a,d=Date.now(),e=Y;e;){a=d-e.f;if(a>e.delay)e.i=e.g(a);e=e.next}a=p;for(d=Y;d;)d=d.i?a?a.next=d.next:Y=d.next:(a=d).next;a||($=clearInterval($))}
function U(a){function d(c){for(var b=[],i,h,g,l,n=0,j=a.length;n<j;n++){g=a[n];b.push(i=[]);i.parentNode=g.parentNode;i.parentData=g.parentData;for(var k=0,o=g.length;k<o;k++)if(l=g[k]){i.push(h=c(l));if(h)h.__data__=l.__data__}else i.push(p)}return U(b)}function e(c){for(var b=[],i,h,g,l=0,n=a.length;l<n;l++){h=a[l];for(var j=0,k=h.length;j<k;j++)if(g=h[j]){b.push(i=c(g));i.parentNode=g;i.parentData=g.__data__}}return U(b)}function f(c){for(var b=0,i=a.length;b<i;b++)for(var h=a[b],g=0,l=h.length;g<
l;g++){var n=h[g];if(n)return c.call(n,n.__data__,g)}return p}a.select=function(c){return d(function(b){return b.querySelector(c)})};a.selectAll=function(c){return e(function(b){return z(b.querySelectorAll(c))})};a.data=function(c,b){function i(o,q){function v(ha){return o.parentNode.appendChild(ha)}var m=0,s=o.length,B=q.length,r=Math.min(s,B),t=Math.max(s,B),w=[],x=[],u=[],y,A;if(b){r={};t=[];var D;A=q.length;for(m=0;m<s;m++){D=b.nodeKey(y=o[m]);if(D in r)u[A++]=o[m];else{r[D]=y;t.push(D)}}for(m=
0;m<B;m++){if(y=r[D=b.dataKey(A=q[m])]){y.__data__=A;w[m]=y;x[m]=u[m]=p}else{x[m]={appendChild:v,__data__:A};w[m]=u[m]=p}delete r[D]}for(m=0;m<s;m++)if(t[m]in r)u[m]=o[m]}else{for(;m<r;m++){y=o[m];A=q[m];if(y){y.__data__=A;w[m]=y;x[m]=u[m]=p}else{x[m]={appendChild:v,__data__:A};w[m]=u[m]=p}}for(;m<B;m++){x[m]={appendChild:v,__data__:q[m]};w[m]=u[m]=p}for(;m<t;m++){u[m]=o[m];x[m]=w[m]=p}}x.parentNode=w.parentNode=u.parentNode=o.parentNode;x.parentData=w.parentData=u.parentData=o.parentData;n.push(x);
j.push(w);k.push(u)}var h=-1,g=a.length,l,n=[],j=[],k=[];if(typeof b=="string")b=ia(b);if(typeof c=="function")for(;++h<g;)i(l=a[h],c.call(l,l.parentData,h));else for(;++h<g;)i(l=a[h],c);h=U(j);h.enter=function(o){return U(n).append(o)};h.exit=function(){return U(k)};return h};a.each=function(c){for(var b=0,i=a.length;b<i;b++)for(var h=a[b],g=0,l=h.length;g<l;g++){var n=h[g];n&&c.call(n,n.__data__,g)}return a};a.attr=function(c,b){function i(){this.removeAttribute(c)}function h(){this.removeAttributeNS(c.space,
c.local)}function g(){this.setAttribute(c,b)}function l(){this.setAttributeNS(c.space,c.local,b)}function n(){var k=b.apply(this,arguments);k==p?this.removeAttribute(c):this.setAttribute(c,k)}function j(){var k=b.apply(this,arguments);k==p?this.removeAttributeNS(c.space,c.local):this.setAttributeNS(c.space,c.local,k)}c=d3.ns.qualify(c);if(arguments.length<2)return f(c.local?function(){return this.getAttributeNS(c.space,c.local)}:function(){return this.getAttribute(c)});return a.each(b==p?c.local?
h:i:typeof b=="function"?c.local?j:n:c.local?l:g)};a.style=function(c,b,i){function h(){this.style.removeProperty(c)}function g(){this.style.setProperty(c,b,i)}function l(){var n=b.apply(this,arguments);n==p?this.style.removeProperty(c):this.style.setProperty(c,n,i)}if(arguments.length<3)i=p;if(arguments.length<2)return f(function(){return window.getComputedStyle(this,p).getPropertyValue(c)});return a.each(b==p?h:typeof b=="function"?l:g)};a.property=function(c,b){function i(){delete this[c]}function h(){this[c]=
b}function g(){var l=b.apply(this,arguments);if(l==p)delete this[c];else this[c]=l}c=d3.ns.qualify(c);if(arguments.length<2)return f(function(){return this[c]});return a.each(b==p?i:typeof b=="function"?g:h)};a.text=function(c){function b(){this.appendChild(document.createTextNode(c))}function i(){var h=c.apply(this,arguments);h!=p&&this.appendChild(document.createTextNode(h))}if(arguments.length<1)return f(function(){return this.textContent});a.each(function(){for(;this.lastChild;)this.removeChild(this.lastChild)});
return c==p?a:a.each(typeof c=="function"?i:b)};a.html=function(c){function b(){this.innerHTML=c}function i(){this.innerHTML=c.apply(this,arguments)}if(arguments.length<1)return f(function(){return this.innerHTML});return a.each(typeof c=="function"?i:b)};a.append=function(c){function b(h){return h.appendChild(document.createElement(c))}function i(h){return h.appendChild(document.createElementNS(c.space,c.local))}c=d3.ns.qualify(c);return d(c.local?i:b)};a.remove=function(){return d(function(c){var b=
c.parentNode;b.removeChild(c);return b})};a.sort=function(c){c=ja.apply(this,arguments);for(var b=0,i=a.length;b<i;b++){var h=a[b];h.sort(c);for(var g=1,l=h.length,n=h[0];g<l;g++){var j=h[g];if(j){n&&n.parentNode.insertBefore(j,n.nextSibling);n=j}}}return a};a.on=function(c,b){c="on"+c;return a.each(function(i,h){this[c]=function(g){d3.event=g;try{b.call(this,i,h)}finally{d3.event=p}}})};a.transition=function(c){return W(a,c)};a.call=C;return a}
function ia(a){return{nodeKey:function(d){return d.getAttribute(a)},dataKey:function(d){return d[a]}}}function ja(a){arguments.length||(a=ka);return function(d,e){return a(d&&d.__data__,e&&e.__data__)}}function ka(a,d){return a<d?-1:a>d?1:0}d3.transition=V.transition;
function W(a,d){function e(j){var k=true,o=-1;a.each(function(){if(i[++o]!=2){var q=(j-h[o])/g[o];if(q>=1)q=1;else{k=false;if(q<0)return;if(!i[o]){i[o]=1;b.start.dispatch.apply(this,arguments)}}var v=n(q),m;for(m in c)c[m].call(this,v,o);if(q==1){i[o]=2;b.end.dispatch.apply(this,arguments)}}});return k}var f={},c={},b=d3.dispatch("start","end"),i=[],h=[],g=[],l,n=d3.ease("cubic-in-out");f.delay=function(j){var k=Infinity,o=-1;if(typeof j=="function")a.each(function(){var q=h[++o]=+j.apply(this,arguments);
if(q<k)k=q});else{k=+j;a.each(function(){h[++o]=k})}la(e,k);return f};f.duration=function(j){var k=-1;if(typeof j=="function"){l=0;a.each(function(){var o=g[++k]=+j.apply(this,arguments);if(o>l)l=o})}else{l=+j;a.each(function(){g[++k]=l})}return f};f.ease=function(j){n=typeof j=="string"?d3.ease(j):j;return f};f.attrTween=function(j,k){function o(r,t){s[++B]=k.call(this,r,t,this.getAttribute(j))}function q(r,t){s[++B]=k.call(this,r,t,this.getAttributeNS(j.space,j.local))}function v(r,t){this.setAttribute(j,
s[t](r))}function m(r,t){this.setAttributeNS(j.space,j.local,s[t](r))}var s=[],B=-1;j=d3.ns.qualify(j);a.each(j.local?q:o);c["attr."+j]=j.local?m:v;return f};f.attr=function(j,k){return f.attrTween(j,X(k))};f.styleTween=function(j,k,o){var q=[],v=-1;a.each(function(m,s){q[++v]=k.call(this,m,s,window.getComputedStyle(this,p).getPropertyValue(j))});c["style."+j]=function(m,s){this.style.setProperty(j,q[s](m),o)};return f};f.style=function(j,k,o){return f.styleTween(j,X(k),o)};f.select=function(j){var k;
j=W(a.select(j),d).ease(n);k=-1;j.delay(function(){return h[++k]});k=-1;j.duration(function(){return g[++k]});return j};f.selectAll=function(j){var k;j=W(a.selectAll(j),d).ease(n);k=-1;j.delay(function(o,q){return h[q?k:++k]});k=-1;j.duration(function(o,q){return g[q?k:++k]});return j};f.each=function(j,k){b[j].add(k);return f};f.call=C;return f.delay(0).duration(250)}var Y=p,Z=0,$;
function la(a,d){var e=Date.now(),f=false,c=e+d,b=Y;if(isFinite(d)){for(;b;){if(b.g==a){b.f=e;b.delay=d;f=true}else{var i=b.f+b.delay;if(i<c)c=i}b=b.next}f||(Y={g:a,f:e,delay:d,next:Y});if(!$){clearTimeout(Z);Z=setTimeout(ma,Math.max(24,c-e))}}}function ma(){$=setInterval(na,24);Z=0}function na(){for(var a,d=Date.now(),e=Y;e;){a=d-e.f;if(a>e.delay)e.i=e.g(a);e=e.next}a=p;for(d=Y;d;)d=d.i?a?a.next=d.next:Y=d.next:(a=d).next;a||($=clearInterval($))}
function X(a){return typeof a=="function"?function(d,e,f){return d3.interpolate(f,a.call(this,d,e))}:function(d,e,f){return d3.interpolate(f,a)}}d3.scale={};
d3.scale.linear=function(){function a(g){return i((g-e)*h)}function d(g){var m=Math.min(e,f),n=Math.max(e,f),j=n-m,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(m/k)*k,stop:Math.floor(n/k)*k+k*0.5,h:k}}var e=0,f=1,c=0,b=1,h=1/(f-e),i=d3.interpolate(c,b);a.invert=function(g){return(g-c)/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[c,
b];c=g[0];b=g[1];i=d3.interpolate(c,b);return a};a.ticks=function(g){g=d(g);return d3.range(g.start,g.stop,g.h)};a.tickFormat=function(g){return d3.format(",."+Math.max(0,-Math.floor(Math.log(d(g).h)/Math.LN10+0.01))+"f")};return a};
d3.scale.log=function(){function a(c){return Math.log(c)/Math.LN10}function d(c){return Math.pow(10,c)}function e(c){return f(a(c))}var f=d3.scale.linear();e.invert=function(c){return d(f.invert(c))};e.domain=function(c){if(!arguments.length)return f.domain().map(d);f.domain(c.map(a));return e};e.range=function(){var c=f.range.apply(f,arguments);return arguments.length?e:c};e.ticks=function(){var c=f.domain(),b=Math.floor(c[0]),h=Math.ceil(c[1]),i=[];if(c.every(isFinite)){for(;++b<=h;)for(c=1;c<10;c++)i.push(d(b)*
c);i.push(d(b))}return i};e.tickFormat=function(){return function(c){return c.toPrecision(1)}};return e};
d3.scale.pow=function(){function a(h){return Math.pow(h,c)}function d(h){return Math.pow(h,b)}function e(h){return f(a(h))}var f=d3.scale.linear(),c=1,b=1/c;e.invert=function(h){return d(f.invert(h))};e.domain=function(h){if(!arguments.length)return f.domain().map(d);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 c;var i=e.domain();c=h;b=1/h;return e.domain(i)};return e};
d3.scale.linear=function(){function a(g){return h((g-e)*i)}function d(g){var l=Math.min(e,f),n=Math.max(e,f),j=n-l,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(l/k)*k,stop:Math.floor(n/k)*k+k*0.5,h:k}}var e=0,f=1,c=0,b=1,i=1/(f-e),h=d3.interpolate(c,b);a.invert=function(g){return(g-c)/i+e};a.domain=function(g){if(!arguments.length)return[e,f];e=g[0];f=g[1];i=1/(f-e);return a};a.range=function(g){if(!arguments.length)return[c,
b];c=g[0];b=g[1];h=d3.interpolate(c,b);return a};a.ticks=function(g){g=d(g);return d3.range(g.start,g.stop,g.h)};a.tickFormat=function(g){return d3.format(",."+Math.max(0,-Math.floor(Math.log(d(g).h)/Math.LN10+0.01))+"f")};return a};
d3.scale.log=function(){function a(c){return Math.log(c)/Math.LN10}function d(c){return Math.pow(10,c)}function e(c){return f(a(c))}var f=d3.scale.linear();e.invert=function(c){return d(f.invert(c))};e.domain=function(c){if(!arguments.length)return f.domain().map(d);f.domain(c.map(a));return e};e.range=function(){var c=f.range.apply(f,arguments);return arguments.length?e:c};e.ticks=function(){var c=f.domain(),b=Math.floor(c[0]),i=Math.ceil(c[1]),h=[];if(c.every(isFinite)){for(;++b<=i;)for(c=1;c<10;c++)h.push(d(b)*
c);h.push(d(b))}return h};e.tickFormat=function(){return function(c){return c.toPrecision(1)}};return e};
d3.scale.pow=function(){function a(i){return Math.pow(i,c)}function d(i){return Math.pow(i,b)}function e(i){return f(a(i))}var f=d3.scale.linear(),c=1,b=1/c;e.invert=function(i){return d(f.invert(i))};e.domain=function(i){if(!arguments.length)return f.domain().map(d);f.domain(i.map(a));return e};e.range=function(){var i=f.range.apply(f,arguments);return arguments.length?e:i};e.exponent=function(i){if(!arguments.length)return c;var h=e.domain();c=i;b=1/i;return e.domain(h)};return e};
d3.scale.sqrt=function(){return d3.scale.pow().exponent(0.5)};
d3.scale.ordinal=function(){function a(b){b=b in e?e[b]:e[b]=d.push(b)-1;return f[b%f.length]}var d=[],e={},f=[],c=0;a.domain=function(b){if(!arguments.length)return d;d=b;e={};for(var h=-1,i=-1,g=d.length;++h<g;){b=d[h];b in e||(e[b]=++i)}return a};a.range=function(b){if(!arguments.length)return f;f=b;return a};a.rangePoints=function(b,h){if(arguments.length<2)h=0;var i=b[0],g=b[1],m=(g-i)/(d.length-1+h);f=d.length==1?[(i+g)/2]:d3.range(i+m*h/2,g+m/2,m);c=0;return a};a.rangeBands=function(b,h){if(arguments.length<
2)h=0;var i=b[0],g=b[1],m=(g-i)/(d.length+h);f=d3.range(i+m*h,g,m);c=m*(1-h);return a};a.rangeBand=function(){return c};return a};d3.scale.category10=function(){return d3.scale.ordinal().range(ma)};d3.scale.category19=function(){return d3.scale.ordinal().range(na)};d3.scale.category20=function(){return d3.scale.ordinal().range(oa)};
var ma=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],na=["#9c9ede","#7375b5","#4a5584","#cedb9c","#b5cf6b","#8ca252","#637939","#e7cb94","#e7ba52","#bd9e39","#8c6d31","#e7969c","#d6616b","#ad494a","#843c39","#de9ed6","#ce6dbd","#a55194","#7b4173"],oa=["#1f77b4","#aec7e8","#ff7f0e","#ffbb78","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5","#8c564b","#c49c94","#e377c2","#f7b6d2","#7f7f7f","#c7c7c7","#bcbd22","#dbdb8d","#17becf","#9edae5"];
d3.scale.ordinal=function(){function a(b){b=b in e?e[b]:e[b]=d.push(b)-1;return f[b%f.length]}var d=[],e={},f=[],c=0;a.domain=function(b){if(!arguments.length)return d;d=b;e={};for(var i=-1,h=-1,g=d.length;++i<g;){b=d[i];b in e||(e[b]=++h)}return a};a.range=function(b){if(!arguments.length)return f;f=b;return a};a.rangePoints=function(b,i){if(arguments.length<2)i=0;var h=b[0],g=b[1],l=(g-h)/(d.length-1+i);f=d.length==1?[(h+g)/2]:d3.range(h+l*i/2,g+l/2,l);c=0;return a};a.rangeBands=function(b,i){if(arguments.length<
2)i=0;var h=b[0],g=b[1],l=(g-h)/(d.length+i);f=d3.range(h+l*i,g,l);c=l*(1-i);return a};a.rangeBand=function(){return c};return a};d3.scale.category10=function(){return d3.scale.ordinal().range(oa)};d3.scale.category19=function(){return d3.scale.ordinal().range(pa)};d3.scale.category20=function(){return d3.scale.ordinal().range(qa)};
var oa=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],pa=["#9c9ede","#7375b5","#4a5584","#cedb9c","#b5cf6b","#8ca252","#637939","#e7cb94","#e7ba52","#bd9e39","#8c6d31","#e7969c","#d6616b","#ad494a","#843c39","#de9ed6","#ce6dbd","#a55194","#7b4173"],qa=["#1f77b4","#aec7e8","#ff7f0e","#ffbb78","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5","#8c564b","#c49c94","#e377c2","#f7b6d2","#7f7f7f","#c7c7c7","#bcbd22","#dbdb8d","#17becf","#9edae5"];
d3.svg={};
d3.svg.arc=function(){function a(b){return b.endAngle}function d(b){return b.startAngle}function e(b){return b.outerRadius}function f(b){return b.innerRadius}function c(b){var h=f(b),i=e(b),g=d(b)-Math.PI/2,m=a(b)-Math.PI/2;b=m-g;var n=Math.cos(g);g=Math.sin(g);var j=Math.cos(m);m=Math.sin(m);return"M"+i*n+","+i*g+"A"+i+","+i+" 0 "+(b<Math.PI?"0":"1")+",1 "+i*j+","+i*m+"L"+h*j+","+h*m+"A"+h+","+h+" 0 "+(b<Math.PI?"0":"1")+",0 "+h*n+","+h*g+"Z"}c.innerRadius=function(b){f=typeof b=="function"?b:function(){return b};
d3.svg.arc=function(){function a(b){return b.endAngle}function d(b){return b.startAngle}function e(b){return b.outerRadius}function f(b){return b.innerRadius}function c(b){var i=f(b),h=e(b),g=d(b)-Math.PI/2,l=a(b)-Math.PI/2;b=l-g;var n=Math.cos(g);g=Math.sin(g);var j=Math.cos(l);l=Math.sin(l);return"M"+h*n+","+h*g+"A"+h+","+h+" 0 "+(b<Math.PI?"0":"1")+",1 "+h*j+","+h*l+"L"+i*j+","+i*l+"A"+i+","+i+" 0 "+(b<Math.PI?"0":"1")+",0 "+i*n+","+i*g+"Z"}c.innerRadius=function(b){f=typeof b=="function"?b:function(){return b};
return c};c.outerRadius=function(b){e=typeof b=="function"?b:function(){return b};return c};c.startAngle=function(b){d=typeof b=="function"?b:function(){return b};return c};c.endAngle=function(b){a=typeof b=="function"?b:function(){return b};return c};return c};
d3.svg.line=function(){function a(f){return f.y}function d(f){return f.x}function e(f){var c=[],b=0,h=f[0];for(c.push("M",d.call(this,h,b),",",a.call(this,h,b));h=f[++b];)c.push("L",d.call(this,h,b),",",a.call(this,h,b));return c.join("")}e.x=function(f){d=f;return e};e.y=function(f){a=f;return e};return e};
d3.svg.area=function(){function a(c){return c.y1}function d(c){return c.x}function e(c){var b=[],h=0,i=c[0];for(b.push("M",d.call(this,i,h),","+f+"V",a.call(this,i,h));i=c[++h];)b.push("L",d.call(this,i,h),",",a.call(this,i,h));b.push("V"+f+"Z");return b.join("")}var f=0;e.x=function(c){d=c;return e};e.y0=function(c){f=c;return e};e.y1=function(c){a=c;return e};return e};})()
d3.svg.line=function(){function a(f){return f.y}function d(f){return f.x}function e(f){var c=[],b=0,i=f[0];for(c.push("M",d.call(this,i,b),",",a.call(this,i,b));i=f[++b];)c.push("L",d.call(this,i,b),",",a.call(this,i,b));return c.join("")}e.x=function(f){d=f;return e};e.y=function(f){a=f;return e};return e};
d3.svg.area=function(){function a(c){return c.y1}function d(c){return c.x}function e(c){var b=[],i=0,h=c[0];for(b.push("M",d.call(this,h,i),","+f+"V",a.call(this,h,i));h=c[++i];)b.push("L",d.call(this,h,i),",",a.call(this,h,i));b.push("V"+f+"Z");return b.join("")}var f=0;e.x=function(c){d=c;return e};e.y0=function(c){f=c;return e};e.y1=function(c){a=c;return e};return e};})()

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

@ -0,0 +1,75 @@
<!DOCTYPE html>
<html>
<head>
<title>Hello, sort!</title>
<script type="text/javascript" src="../../d3.js"></script>
<style type="text/css">
html, body, svg {
font: 14px Helvetica Neue;
margin: 0;
width: 100%;
height: 100%;
display: block;
}
circle {
fill: steelblue;
fill-opacity: .8;
stroke: #fff;
}
div {
position: fixed;
top: 10px;
left: 10px;
}
</style>
</head>
<body>
<div>
<input id="sort" type="checkbox" checked>
<label for="sort">Ascending</label>
</div>
<script type="text/javascript">
d3.select("body")
.append("svg:svg")
.attr("viewBox", "0 0 1000 1000");
d3.select("#sort")
.on("change", sort);
transform();
function transform() {
var circle = d3.select("svg")
.selectAll("circle")
.data(d3.range(400).map(Math.random));
circle.enter("svg:circle")
.attr("cx", function() { return 100 + Math.random() * 800; })
.attr("cy", function() { return 100 + Math.random() * 800; })
.attr("r", function(d) { return 50 * d; });
circle
.transition()
.duration(750)
.attr("r", function(d) { return 50 * d; });
sort();
}
function sort() {
d3.selectAll("circle")
.sort(d3.select("#sort").property("checked")
? function(a, b) { return b - a; }
: function(a, b) { return a - b; });
}
window.addEventListener("keypress", transform, false);
</script>
</body>
</html>

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

@ -1 +1 @@
d3 = {version: "0.2.0"}; // semver
d3 = {version: "0.3.0"}; // semver

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

@ -413,6 +413,22 @@ function d3_selection(groups) {
});
};
groups.sort = function(comparator) {
comparator = d3_comparator.apply(this, arguments);
for (var j = 0, m = groups.length; j < m; j++) {
var group = groups[j];
group.sort(comparator);
for (var i = 1, n = group.length, prev = group[0]; i < n; i++) {
var node = group[i];
if (node) {
if (prev) prev.parentNode.insertBefore(node, prev.nextSibling);
prev = node;
}
}
}
return groups;
};
// TODO namespaced event listeners to allow multiples
groups.on = function(type, listener) {
type = "on" + type;
@ -446,3 +462,18 @@ function d3_selection_join(key) {
dataKey: function(data) { return data[key]; }
};
}
function d3_comparator(comparator) {
if (!arguments.length) comparator = d3_ascending;
return function(a, b) {
return comparator(a && a.__data__, b && b.__data__);
};
}
function d3_ascending(a, b) {
return a < b ? -1 : a > b ? 1 : 0;
}
function d3_descending(a, b) {
return a < b ? 1 : a > b ? -1 : 0;
}