Fix propagation of parentNode & parentData.

This commit is contained in:
Michael Bostock 2010-10-24 14:03:12 -07:00
Родитель 27dbb5a0fa
Коммит 99d1840275
5 изменённых файлов: 71 добавлений и 41 удалений

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

@ -818,6 +818,7 @@ d3.ordinal = function() {
return scale;
};
var d3_root = d3_selection([[document]]);
d3_root[0].parentNode = document.documentElement;
// TODO fast singleton implementation!
d3.select = function(query) {
return typeof query == "string"
@ -968,6 +969,16 @@ function d3_selection(groups) {
}
}
enterNodes.parentNode
= updateNodes.parentNode
= exitNodes.parentNode
= group.parentNode;
enterNodes.parentData
= updateNodes.parentData
= exitNodes.parentData
= group.parentData;
enter.push(enterNodes);
update.push(updateNodes);
exit.push(exitNodes);

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

@ -1,35 +1,35 @@
if(!Date.now)Date.now=function(){return+new Date};if(!Object.create)Object.create=function(F){function D(){}D.prototype=F;return new D};
(function(F){function D(){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 c=b[f];if(c.listener==e){c.on=false;b=b.slice(0,f).concat(b.slice(f+1));break}}return a};a.dispatch=function(){for(var e=b,f=0,c=e.length;f<c;f++){var d=e[f];d.on&&d.listener.apply(this,arguments)}};return a}function N(a){return function(b){return 1-a(1-b)}}function O(a){return function(b){return 0.5*
(b<0.5?a(2*b):2-a(2-2*b))}}function R(a){return a}function G(a){return function(b){return Math.pow(b,a)}}function S(a){return 1-Math.cos(a*Math.PI/2)}function T(a){return a?Math.pow(2,10*(a-1))-0.0010:0}function U(a){return 1-Math.sqrt(1-a*a)}function V(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 W(a){return{nodeKey:function(b){return b.getAttribute(a)},dataKey:function(b){return b[a]}}}function H(a){var b,
e,f,c,d;if(c=/([a-z]+)\((.*)\)/i.exec(a)){d=c[2].split(",");switch(c[1]){case "hsl":return P(parseFloat(d[0]),parseFloat(d[1])/100,parseFloat(d[2])/100);case "rgb":return{r:I(d[0]),g:I(d[1]),b:I(d[2])}}}if(c=B[a])return c;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 P(a,
b,e){function f(h){if(h>360)h-=360;else if(h<0)h+=360;if(h<60)return c+(d-c)*h/60;if(h<180)return d;if(h<240)return c+(d-c)*(240-h)/60;return c}var c,d;a%=360;if(a<0)a+=360;b=b<0?0:b>1?1:b;e=e<0?0:e>1?1:e;d=e<=0.5?e*(1+b):e+b-e*b;c=2*e-d;return{r:Math.round(f(a+120)*255),g:Math.round(f(a)*255),b:Math.round(f(a-120)*255)}}function I(a){var b=parseFloat(a);return a.charAt(a.length-1)=="%"?Math.round(b*2.55):b}function A(a){function b(c){for(var d=[],h,i,g,m,o=0,r=a.length;o<r;o++){g=a[o];d.push(h=[]);
if(!Date.now)Date.now=function(){return+new Date};if(!Object.create)Object.create=function(G){function D(){}D.prototype=G;return new D};
(function(G){function D(){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 c=b[f];if(c.listener==e){c.on=false;b=b.slice(0,f).concat(b.slice(f+1));break}}return a};a.dispatch=function(){for(var e=b,f=0,c=e.length;f<c;f++){var d=e[f];d.on&&d.listener.apply(this,arguments)}};return a}function N(a){return function(b){return 1-a(1-b)}}function O(a){return function(b){return 0.5*
(b<0.5?a(2*b):2-a(2-2*b))}}function R(a){return a}function H(a){return function(b){return Math.pow(b,a)}}function S(a){return 1-Math.cos(a*Math.PI/2)}function T(a){return a?Math.pow(2,10*(a-1))-0.0010:0}function U(a){return 1-Math.sqrt(1-a*a)}function V(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 W(a){return{nodeKey:function(b){return b.getAttribute(a)},dataKey:function(b){return b[a]}}}function I(a){var b,
e,f,c,d;if(c=/([a-z]+)\((.*)\)/i.exec(a)){d=c[2].split(",");switch(c[1]){case "hsl":return P(parseFloat(d[0]),parseFloat(d[1])/100,parseFloat(d[2])/100);case "rgb":return{r:J(d[0]),g:J(d[1]),b:J(d[2])}}}if(c=B[a])return c;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 P(a,
b,e){function f(h){if(h>360)h-=360;else if(h<0)h+=360;if(h<60)return c+(d-c)*h/60;if(h<180)return d;if(h<240)return c+(d-c)*(240-h)/60;return c}var c,d;a%=360;if(a<0)a+=360;b=b<0?0:b>1?1:b;e=e<0?0:e>1?1:e;d=e<=0.5?e*(1+b):e+b-e*b;c=2*e-d;return{r:Math.round(f(a+120)*255),g:Math.round(f(a)*255),b:Math.round(f(a-120)*255)}}function J(a){var b=parseFloat(a);return a.charAt(a.length-1)=="%"?Math.round(b*2.55):b}function A(a){function b(c){for(var d=[],h,i,g,m,o=0,r=a.length;o<r;o++){g=a[o];d.push(h=[]);
h.parentNode=g.parentNode;h.parentData=g.parentData;for(var p=0,t=g.length;p<t;p++)if(m=g[p]){h.push(i=c(m));if(i)i.__data__=m.__data__}else h.push(null)}return A(d)}function e(c){for(var d=[],h,i,g,m=0,o=a.length;m<o;m++){i=a[m];for(var r=0,p=i.length;r<p;r++)if(g=i[r]){d.push(h=c(g));h.parentNode=g;h.parentData=g.__data__}}return A(d)}function f(c){for(var d=0,h=a.length;d<h;d++)for(var i=a[d],g=0,m=i.length;g<m;g++){var o=i[g];if(o)return c.call(o,o.__data__,g)}return null}a.select=function(c){return b(function(d){return d.querySelector(c)})};
a.selectAll=function(c){return e(function(d){d=d.querySelectorAll(c);return Array.prototype.slice.call(d)})};a.data=function(c,d){function h(t,k){function n(X){return t.parentNode.appendChild(X)}var j=0,q=t.length,x=k.length,u=Math.min(q,x),w=Math.max(q,x),y=[],v=[],s=[],z,C;if(d){u={};w=[];var E;for(j=0;j<q;j++){u[E=d.nodeKey(z=t[j])]=z;w.push(E)}for(j=0;j<x;j++){if(z=u[E=d.dataKey(C=k[j])]){z.__data__=C;y[j]=z;v[j]=s[j]=null}else{v[j]={appendChild:n,__data__:C};y[j]=s[j]=null}delete u[E]}for(j=
0;j<q;j++)if(w[j]in u)s[j]=t[j]}else{for(;j<u;j++){z=t[j];C=k[j];if(z){z.__data__=C;y[j]=z;v[j]=s[j]=null}else{v[j]={appendChild:n,__data__:C};y[j]=s[j]=null}}for(;j<x;j++){v[j]={appendChild:n,__data__:k[j]};y[j]=s[j]=null}for(;j<w;j++){s[j]=t[j];v[j]=y[j]=null}}o.push(v);r.push(y);p.push(s)}var i=-1,g=a.length,m,o=[],r=[],p=[];if(typeof d=="string")d=W(d);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=A(r);i.enter=function(t){return A(o).append(t)};
i.exit=function(){return A(p)};return i};a.each=function(c){for(var d=0,h=a.length;d<h;d++)for(var i=a[d],g=0,m=i.length;g<m;g++){var o=i[g];o&&c.call(o,o.__data__,g)}return a};a.attr=function(c,d){function h(){this.removeAttribute(c)}function i(){this.removeAttributeNS(c.space,c.local)}function g(){this.setAttribute(c,d)}function m(){this.setAttributeNS(c.space,c.local,d)}function o(){var p=d.apply(this,arguments);p==null?this.removeAttribute(c):this.setAttribute(c,p)}function r(){var p=d.apply(this,
arguments);p==null?this.removeAttributeNS(c.space,c.local):this.setAttributeNS(c.space,c.local,p)}c=l.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(d==null?c.local?i:h:typeof d=="function"?c.local?r:o:c.local?m:g)};a.style=function(c,d,h){function i(){this.style.removeProperty(c)}function g(){this.style.setProperty(c,d,h)}function m(){var o=d.apply(this,arguments);o==null?this.style.removeProperty(c):
this.style.setProperty(c,o,h)}if(arguments.length<3)h=null;if(arguments.length<2)return f(function(){return window.getComputedStyle(this,null).getPropertyValue(c)});return a.each(d==null?i:typeof d=="function"?m:g)};a.text=function(c){function d(){this.appendChild(document.createTextNode(c))}function h(){var i=c.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 c==null?a:a.each(typeof c=="function"?h:d)};a.html=function(c){function d(){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:d)};a.append=function(c){function d(i){return i.appendChild(document.createElement(c))}function h(i){return i.appendChild(document.createElementNS(c.space,c.local))}c=l.ns.qualify(c);return b(c.local?h:d)};a.remove=function(){return b(function(c){var d=
c.parentNode;d.removeChild(c);return d})};a.on=function(c,d){c="on"+c;return a.each(function(h,i){this[c]=function(g){l.event=g;try{d.call(this,h,i)}finally{l.event=null}}})};a.transition=function(){return J(a)};return a}function J(a){function b(){h=setInterval(e,24)}function e(){var k=Date.now()-i,n=true,j=-1;a.each(function(){if(m[++j]!=2){var q=(k-o[j])/r[j];if(q>=1)q=1;else{n=false;if(q<0)return;if(!m[j]){m[j]=1;g.start.dispatch.apply(this,arguments)}}var x=t(q),u;for(u in c)c[u].call(this,x,
j);if(q==1){m[j]=2;g.end.dispatch.apply(this,arguments)}}});n&&clearInterval(h)}var f={},c={},d=setTimeout(b,1),h,i=Date.now(),g=l.dispatch("start","end"),m=[],o=[],r=[],p,t=l.ease("cubic-in-out");f.delay=function(k){var n=Infinity,j=-1;if(typeof k=="function")a.each(function(){var q=o[++j]=+k.apply(this,arguments);if(q<n)n=q});else{n=+k;a.each(function(){o[++j]=n})}clearTimeout(d);d=setTimeout(b,n);return f};f.duration=function(k){var n=-1;if(typeof k=="function"){p=0;a.each(function(){var j=r[++n]=
+k.apply(this,arguments);if(j>p)p=j})}else{p=+k;a.each(function(){r[++n]=p})}return f};f.ease=function(k){t=typeof k=="string"?l.ease(k):k;return f};f.attrTween=function(k,n){function j(v,s){w[++y]=n.call(this,v,s,this.getAttribute(k))}function q(v,s){w[++y]=n.call(this,v,s,this.getAttributeNS(k.space,k.local))}function x(v,s){this.setAttribute(k,w[s](v))}function u(v,s){this.setAttributeNS(k.space,k.local,w[s](v))}var w=[],y=-1;k=l.ns.qualify(k);a.each(k.local?q:j);c["attr."+k]=k.local?u:x;return f};
f.attr=function(k,n){return f.attrTween(k,Q(n))};f.styleTween=function(k,n,j){var q=[],x=-1;a.each(function(u,w){q[++x]=n.call(this,u,w,window.getComputedStyle(this,null).getPropertyValue(k))});c["style."+k]=function(u,w){this.style.setProperty(k,q[w](u),j)};return f};f.style=function(k,n,j){return f.styleTween(k,Q(n),j)};f.select=function(k){var n;k=J(a.select(k)).ease(t);n=-1;k.delay(function(){return o[++n]});n=-1;k.duration(function(){return r[++n]});return k};f.selectAll=function(k){var n;k=
J(a.selectAll(k)).ease(t);n=-1;k.delay(function(j,q){return o[q?n:++n]});n=-1;k.duration(function(j,q){return r[q?n:++n]});return k};f.each=function(k,n){g[k].add(n);return f};return f.delay(0).duration(250)}function Q(a){return typeof a=="function"?function(b,e,f){return l.interpolate(f,a.call(this,b,e))}:function(b,e,f){return l.interpolate(f,a)}}var l=F.d3={};l.version="0.1.0";l.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=[],c=-1,d;if(e<0)for(;(d=a+e*++c)>b;)f.push(d);else for(;(d=a+e*++c)<b;)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 b=a.indexOf(":");return b<0?a:{space:l.ns.prefix[a.substring(0,b)],local:a.substring(b+1)}}};l.dispatch=function(){for(var a={},b,e=0,f=arguments.length;e<f;e++){b=arguments[e];
a[b]=D(b)}return a};var Y=G(2),Z=G(3),$={linear:function(){return R},poly:G,quad:function(){return Y},cubic:function(){return Z},sin:function(){return S},exp:function(){return T},circle:function(){return U},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 V}},
aa={"in":function(a){return a},out:N,"in-out":O,"out-int":function(a){return O(N(a))}};l.ease=function(a){var b=a.indexOf("-"),e=b>=0?a.substring(0,b):a;b=b>=0?a.substring(b+1):"in";return aa[b]($[e].apply(null,Array.prototype.slice.call(arguments,1)))};l.event=null;l.interpolate=function(a,b){if(typeof b=="number")return l.interpolateNumber(+a,b);if(typeof b=="string")return b in B||/^(#|rgb\(|hsl\()/.test(b)?l.interpolateRgb(String(a),b):l.interpolateString(String(a),b);if(b instanceof Array)return l.interpolateArray(a,
b);return l.interpolateObject(a,b)};l.interpolateNumber=function(a,b){b-=a;return function(e){return a+b*e}};l.interpolateString=function(a,b){var e,f,c=0,d=[],h=[],i,g;for(f=0;e=K.exec(b);++f){e.index&&d.push(b.substring(c,e.index));h.push({i:d.length,x:e[0]});d.push(null);c=K.lastIndex}c<b.length&&d.push(b.substring(c));f=0;for(i=h.length;(e=K.exec(a))&&f<i;++f){g=h[f];if(g.x==e[0]){if(g.i)if(d[g.i+1]==null){d[g.i-1]+=g.x;d.splice(g.i,1);for(e=f+1;e<i;++e)h[e].i--}else{d[g.i-1]+=g.x+d[g.i+1];d.splice(g.i,
2);for(e=f+1;e<i;++e)h[e].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(e=f+1;e<i;++e)h[e].i--}h.splice(f,1);i--;f--}else g.x=l.interpolateNumber(parseFloat(e[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 b};return function(m){for(f=0;f<i;++f)d[(g=h[f]).i]=g.x(m);return d.join("")}};l.interpolateRgb=function(a,b){a=H(a);b=H(b);var e=
a.r,f=a.g,c=a.b,d=b.r-e,h=b.g-f,i=b.b-c;return function(g){return"rgb("+Math.round(e+d*g)+","+Math.round(f+h*g)+","+Math.round(c+i*g)+")"}};l.interpolateArray=function(a,b){var e=[],f=[],c=a.length,d=b.length,h=Math.min(a.length,b.length),i;for(i=0;i<h;++i)e.push(l.interpolate(a[i],b[i]));for(;i<c;++i)f[i]=a[i];for(;i<d;++i)f[i]=b[i];return function(g){for(i=0;i<h;++i)f[i]=e[i](g);return f}};l.interpolateObject=function(a,b){var e={},f={},c;for(c in a)if(c in b)e[c]=(c in ba||/\bcolor\b/.test(c)?
l.interpolateRgb:l.interpolate)(a[c],b[c]);else f[c]=a[c];for(c in b)c in a||(f[c]=b[c]);return function(d){for(c in e)f[c]=e[c](d);return f}};var K=/[-+]?(?:\d+\.\d+|\d+\.|\.\d+|\d+)(?:[eE][-]?\d+)?/g,ba={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"},L;for(L in B)B[L]=H(B[L]);l.hsl=function(a,b,e){a=P(a,b,e);return"rgb("+a.r+","+a.g+","+a.b+")"};l.linear=function(){function a(g){return i((g-e)*h)}function b(g){var m=Math.min(e,f),o=Math.max(e,f),r=o-m,p=Math.pow(10,Math.floor(Math.log(r/g)/Math.LN10));g=g/(r/p);if(g<=0.15)p*=10;else if(g<=0.35)p*=5;else if(g<=0.75)p*=2;return{start:Math.ceil(m/p)*p,stop:Math.floor(o/p)*p+p*0.5,step:p}}var e=0,f=1,c=0,d=1,h=1/(f-e),i=
l.interpolate(c,d);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,d];c=g[0];d=g[1];i=l.interpolate(c,d);return a};a.ticks=function(g){g=b(g);return l.range(g.start,g.stop,g.step)};a.tickFormat=function(g){var m=Math.max(0,-Math.floor(Math.log(b(g).step)/Math.LN10+0.01));return function(o){return o.toFixed(m)}};return a};l.log=function(){function a(e){return b(Math.log(e))}
var b=l.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};l.pow=function(){function a(h){return Math.pow(h,c)}function b(h){return Math.pow(h,d)}function e(h){return f(a(h))}var f=l.linear(),c=1,d=1/c;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 c;var i=e.domain();c=h;d=1/h;return e.domain(i)};return e};l.sqrt=function(){return l.pow().exponent(0.5)};l.ordinal=function(){function a(d){d=d in e?e[d]:e[d]=b.push(d)-1;return f[d%f.length]}var b=[],e={},f=[],c=0;a.domain=function(d){if(!arguments.length)return b;b=d;e={};for(var h=-1,i=-1,g=b.length;++h<g;){d=b[h];d in e||(e[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],m=(g-i)/(b.length-1+h);f=b.length==1?[(i+g)/2]:l.range(i+m*h/2,g+m/2,m);c=0;return a};a.rangeBands=function(d,h){if(arguments.length<2)h=0;var i=d[0],g=d[1],m=(g-i)/(b.length+h);f=l.range(i+m*h,g,m);c=m*(1-h);return a};a.rangeBand=function(){return c};return a};var M=A([[document]]);l.select=function(a){return typeof a=="string"?M.select(a):A([[a]])};l.selectAll=
function(a){return typeof a=="string"?M.selectAll(a):A([Array.prototype.slice.call(a)])};l.transition=function(){return M.transition()}})(this);
a.selectAll=function(c){return e(function(d){d=d.querySelectorAll(c);return Array.prototype.slice.call(d)})};a.data=function(c,d){function h(t,k){function n(X){return t.parentNode.appendChild(X)}var j=0,q=t.length,y=k.length,v=Math.min(q,y),w=Math.max(q,y),x=[],u=[],s=[],z,C;if(d){v={};w=[];var E;for(j=0;j<q;j++){v[E=d.nodeKey(z=t[j])]=z;w.push(E)}for(j=0;j<y;j++){if(z=v[E=d.dataKey(C=k[j])]){z.__data__=C;x[j]=z;u[j]=s[j]=null}else{u[j]={appendChild:n,__data__:C};x[j]=s[j]=null}delete v[E]}for(j=
0;j<q;j++)if(w[j]in v)s[j]=t[j]}else{for(;j<v;j++){z=t[j];C=k[j];if(z){z.__data__=C;x[j]=z;u[j]=s[j]=null}else{u[j]={appendChild:n,__data__:C};x[j]=s[j]=null}}for(;j<y;j++){u[j]={appendChild:n,__data__:k[j]};x[j]=s[j]=null}for(;j<w;j++){s[j]=t[j];u[j]=x[j]=null}}u.parentNode=x.parentNode=s.parentNode=t.parentNode;u.parentData=x.parentData=s.parentData=t.parentData;o.push(u);r.push(x);p.push(s)}var i=-1,g=a.length,m,o=[],r=[],p=[];if(typeof d=="string")d=W(d);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=A(r);i.enter=function(t){return A(o).append(t)};i.exit=function(){return A(p)};return i};a.each=function(c){for(var d=0,h=a.length;d<h;d++)for(var i=a[d],g=0,m=i.length;g<m;g++){var o=i[g];o&&c.call(o,o.__data__,g)}return a};a.attr=function(c,d){function h(){this.removeAttribute(c)}function i(){this.removeAttributeNS(c.space,c.local)}function g(){this.setAttribute(c,d)}function m(){this.setAttributeNS(c.space,c.local,d)}function o(){var p=
d.apply(this,arguments);p==null?this.removeAttribute(c):this.setAttribute(c,p)}function r(){var p=d.apply(this,arguments);p==null?this.removeAttributeNS(c.space,c.local):this.setAttributeNS(c.space,c.local,p)}c=l.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(d==null?c.local?i:h:typeof d=="function"?c.local?r:o:c.local?m:g)};a.style=function(c,d,h){function i(){this.style.removeProperty(c)}
function g(){this.style.setProperty(c,d,h)}function m(){var o=d.apply(this,arguments);o==null?this.style.removeProperty(c):this.style.setProperty(c,o,h)}if(arguments.length<3)h=null;if(arguments.length<2)return f(function(){return window.getComputedStyle(this,null).getPropertyValue(c)});return a.each(d==null?i:typeof d=="function"?m:g)};a.text=function(c){function d(){this.appendChild(document.createTextNode(c))}function h(){var i=c.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 c==null?a:a.each(typeof c=="function"?h:d)};a.html=function(c){function d(){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:d)};a.append=function(c){function d(i){return i.appendChild(document.createElement(c))}function h(i){return i.appendChild(document.createElementNS(c.space,
c.local))}c=l.ns.qualify(c);return b(c.local?h:d)};a.remove=function(){return b(function(c){var d=c.parentNode;d.removeChild(c);return d})};a.on=function(c,d){c="on"+c;return a.each(function(h,i){this[c]=function(g){l.event=g;try{d.call(this,h,i)}finally{l.event=null}}})};a.transition=function(){return K(a)};return a}function K(a){function b(){h=setInterval(e,24)}function e(){var k=Date.now()-i,n=true,j=-1;a.each(function(){if(m[++j]!=2){var q=(k-o[j])/r[j];if(q>=1)q=1;else{n=false;if(q<0)return;
if(!m[j]){m[j]=1;g.start.dispatch.apply(this,arguments)}}var y=t(q),v;for(v in c)c[v].call(this,y,j);if(q==1){m[j]=2;g.end.dispatch.apply(this,arguments)}}});n&&clearInterval(h)}var f={},c={},d=setTimeout(b,1),h,i=Date.now(),g=l.dispatch("start","end"),m=[],o=[],r=[],p,t=l.ease("cubic-in-out");f.delay=function(k){var n=Infinity,j=-1;if(typeof k=="function")a.each(function(){var q=o[++j]=+k.apply(this,arguments);if(q<n)n=q});else{n=+k;a.each(function(){o[++j]=n})}clearTimeout(d);d=setTimeout(b,n);
return f};f.duration=function(k){var n=-1;if(typeof k=="function"){p=0;a.each(function(){var j=r[++n]=+k.apply(this,arguments);if(j>p)p=j})}else{p=+k;a.each(function(){r[++n]=p})}return f};f.ease=function(k){t=typeof k=="string"?l.ease(k):k;return f};f.attrTween=function(k,n){function j(u,s){w[++x]=n.call(this,u,s,this.getAttribute(k))}function q(u,s){w[++x]=n.call(this,u,s,this.getAttributeNS(k.space,k.local))}function y(u,s){this.setAttribute(k,w[s](u))}function v(u,s){this.setAttributeNS(k.space,
k.local,w[s](u))}var w=[],x=-1;k=l.ns.qualify(k);a.each(k.local?q:j);c["attr."+k]=k.local?v:y;return f};f.attr=function(k,n){return f.attrTween(k,Q(n))};f.styleTween=function(k,n,j){var q=[],y=-1;a.each(function(v,w){q[++y]=n.call(this,v,w,window.getComputedStyle(this,null).getPropertyValue(k))});c["style."+k]=function(v,w){this.style.setProperty(k,q[w](v),j)};return f};f.style=function(k,n,j){return f.styleTween(k,Q(n),j)};f.select=function(k){var n;k=K(a.select(k)).ease(t);n=-1;k.delay(function(){return o[++n]});
n=-1;k.duration(function(){return r[++n]});return k};f.selectAll=function(k){var n;k=K(a.selectAll(k)).ease(t);n=-1;k.delay(function(j,q){return o[q?n:++n]});n=-1;k.duration(function(j,q){return r[q?n:++n]});return k};f.each=function(k,n){g[k].add(n);return f};return f.delay(0).duration(250)}function Q(a){return typeof a=="function"?function(b,e,f){return l.interpolate(f,a.call(this,b,e))}:function(b,e,f){return l.interpolate(f,a)}}var l=G.d3={};l.version="0.1.0";l.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=[],c=-1,d;if(e<0)for(;(d=a+e*++c)>b;)f.push(d);else for(;(d=a+e*++c)<b;)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 b=a.indexOf(":");return b<0?a:{space:l.ns.prefix[a.substring(0,b)],local:a.substring(b+1)}}};l.dispatch=
function(){for(var a={},b,e=0,f=arguments.length;e<f;e++){b=arguments[e];a[b]=D(b)}return a};var Y=H(2),Z=H(3),$={linear:function(){return R},poly:H,quad:function(){return Y},cubic:function(){return Z},sin:function(){return S},exp:function(){return T},circle:function(){return U},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 V}},aa={"in":function(a){return a},out:N,"in-out":O,"out-int":function(a){return O(N(a))}};l.ease=function(a){var b=a.indexOf("-"),e=b>=0?a.substring(0,b):a;b=b>=0?a.substring(b+1):"in";return aa[b]($[e].apply(null,Array.prototype.slice.call(arguments,1)))};l.event=null;l.interpolate=function(a,b){if(typeof b=="number")return l.interpolateNumber(+a,b);if(typeof b=="string")return b in B||/^(#|rgb\(|hsl\()/.test(b)?l.interpolateRgb(String(a),
b):l.interpolateString(String(a),b);if(b instanceof Array)return l.interpolateArray(a,b);return l.interpolateObject(a,b)};l.interpolateNumber=function(a,b){b-=a;return function(e){return a+b*e}};l.interpolateString=function(a,b){var e,f,c=0,d=[],h=[],i,g;for(f=0;e=L.exec(b);++f){e.index&&d.push(b.substring(c,e.index));h.push({i:d.length,x:e[0]});d.push(null);c=L.lastIndex}c<b.length&&d.push(b.substring(c));f=0;for(i=h.length;(e=L.exec(a))&&f<i;++f){g=h[f];if(g.x==e[0]){if(g.i)if(d[g.i+1]==null){d[g.i-
1]+=g.x;d.splice(g.i,1);for(e=f+1;e<i;++e)h[e].i--}else{d[g.i-1]+=g.x+d[g.i+1];d.splice(g.i,2);for(e=f+1;e<i;++e)h[e].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(e=f+1;e<i;++e)h[e].i--}h.splice(f,1);i--;f--}else g.x=l.interpolateNumber(parseFloat(e[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 b};return function(m){for(f=0;f<i;++f)d[(g=
h[f]).i]=g.x(m);return d.join("")}};l.interpolateRgb=function(a,b){a=I(a);b=I(b);var e=a.r,f=a.g,c=a.b,d=b.r-e,h=b.g-f,i=b.b-c;return function(g){return"rgb("+Math.round(e+d*g)+","+Math.round(f+h*g)+","+Math.round(c+i*g)+")"}};l.interpolateArray=function(a,b){var e=[],f=[],c=a.length,d=b.length,h=Math.min(a.length,b.length),i;for(i=0;i<h;++i)e.push(l.interpolate(a[i],b[i]));for(;i<c;++i)f[i]=a[i];for(;i<d;++i)f[i]=b[i];return function(g){for(i=0;i<h;++i)f[i]=e[i](g);return f}};l.interpolateObject=
function(a,b){var e={},f={},c;for(c in a)if(c in b)e[c]=(c in ba||/\bcolor\b/.test(c)?l.interpolateRgb:l.interpolate)(a[c],b[c]);else f[c]=a[c];for(c in b)c in a||(f[c]=b[c]);return function(d){for(c in e)f[c]=e[c](d);return f}};var L=/[-+]?(?:\d+\.\d+|\d+\.|\.\d+|\d+)(?:[eE][-]?\d+)?/g,ba={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"},M;for(M in B)B[M]=I(B[M]);l.hsl=function(a,b,e){a=P(a,b,e);return"rgb("+a.r+","+a.g+","+a.b+")"};l.linear=function(){function a(g){return i((g-e)*h)}function b(g){var m=Math.min(e,f),o=Math.max(e,f),r=o-m,p=Math.pow(10,Math.floor(Math.log(r/g)/Math.LN10));g=g/(r/p);if(g<=0.15)p*=10;else if(g<=0.35)p*=5;else if(g<=
0.75)p*=2;return{start:Math.ceil(m/p)*p,stop:Math.floor(o/p)*p+p*0.5,step:p}}var e=0,f=1,c=0,d=1,h=1/(f-e),i=l.interpolate(c,d);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,d];c=g[0];d=g[1];i=l.interpolate(c,d);return a};a.ticks=function(g){g=b(g);return l.range(g.start,g.stop,g.step)};a.tickFormat=function(g){var m=Math.max(0,-Math.floor(Math.log(b(g).step)/Math.LN10+
0.01));return function(o){return o.toFixed(m)}};return a};l.log=function(){function a(e){return b(Math.log(e))}var b=l.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};l.pow=function(){function a(h){return Math.pow(h,c)}function b(h){return Math.pow(h,d)}function e(h){return f(a(h))}var f=
l.linear(),c=1,d=1/c;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 c;var i=e.domain();c=h;d=1/h;return e.domain(i)};return e};l.sqrt=function(){return l.pow().exponent(0.5)};l.ordinal=function(){function a(d){d=d in e?e[d]:e[d]=b.push(d)-1;return f[d%f.length]}var b=[],e={},
f=[],c=0;a.domain=function(d){if(!arguments.length)return b;b=d;e={};for(var h=-1,i=-1,g=b.length;++h<g;){d=b[h];d in e||(e[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],m=(g-i)/(b.length-1+h);f=b.length==1?[(i+g)/2]:l.range(i+m*h/2,g+m/2,m);c=0;return a};a.rangeBands=function(d,h){if(arguments.length<2)h=0;var i=d[0],g=d[1],m=(g-i)/(b.length+h);f=l.range(i+m*h,g,m);c=m*(1-h);return a};a.rangeBand=
function(){return c};return a};var F=A([[document]]);F[0].parentNode=document.documentElement;l.select=function(a){return typeof a=="string"?F.select(a):A([[a]])};l.selectAll=function(a){return typeof a=="string"?F.selectAll(a):A([Array.prototype.slice.call(a)])};l.transition=function(){return F.transition()}})(this);

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

@ -4,15 +4,23 @@
<script type="text/javascript" src="../../d3.js"></script>
</head>
<body>
<b></b>
<b></b>
<span></span>
<span></span>
<script type="text/javascript">
d3.select("body")
.selectAll("b")
.select("i")
.data(["Bold", "italic."])
.enter("i")
var s = d3.select("body")
.selectAll("span")
.data("The test passed, hooray!".split(/\b/));
// Add missing <span>s.
s.enter("span")
.append("b")
.text(function(d) { return d; });
// Add missing <b>s.
s.selectAll("b")
.data(function(d) { return [d]; })
.enter("b")
.text(function(d) { return d; });
</script>

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

@ -1 +1,2 @@
var d3_root = d3_selection([[document]]);
d3_root[0].parentNode = document.documentElement;

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

@ -137,6 +137,16 @@ function d3_selection(groups) {
}
}
enterNodes.parentNode
= updateNodes.parentNode
= exitNodes.parentNode
= group.parentNode;
enterNodes.parentData
= updateNodes.parentData
= exitNodes.parentData
= group.parentData;
enter.push(enterNodes);
update.push(updateNodes);
exit.push(exitNodes);