d3_rails 2.9.7 → 2.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.DS_Store +0 -0
- data/lib/.DS_Store +0 -0
- data/lib/d3_rails/version.rb +1 -1
- data/vendor/.DS_Store +0 -0
- data/vendor/assets/javascripts/d3.v2.js +467 -329
- data/vendor/assets/javascripts/d3.v2.min.js +4 -4
- metadata +8 -8
data/.DS_Store
CHANGED
Binary file
|
data/lib/.DS_Store
CHANGED
Binary file
|
data/lib/d3_rails/version.rb
CHANGED
data/vendor/.DS_Store
CHANGED
Binary file
|
@@ -11,7 +11,7 @@
|
|
11
11
|
};
|
12
12
|
}
|
13
13
|
d3 = {
|
14
|
-
version: "2.
|
14
|
+
version: "2.10.0"
|
15
15
|
};
|
16
16
|
function d3_class(ctor, properties) {
|
17
17
|
try {
|
@@ -183,9 +183,10 @@
|
|
183
183
|
return [ a, c ];
|
184
184
|
};
|
185
185
|
d3.random = {
|
186
|
-
normal: function(
|
187
|
-
|
188
|
-
if (
|
186
|
+
normal: function(µ, σ) {
|
187
|
+
var n = arguments.length;
|
188
|
+
if (n < 2) σ = 1;
|
189
|
+
if (n < 1) µ = 0;
|
189
190
|
return function() {
|
190
191
|
var x, y, r;
|
191
192
|
do {
|
@@ -193,7 +194,22 @@
|
|
193
194
|
y = Math.random() * 2 - 1;
|
194
195
|
r = x * x + y * y;
|
195
196
|
} while (!r || r > 1);
|
196
|
-
return
|
197
|
+
return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);
|
198
|
+
};
|
199
|
+
},
|
200
|
+
logNormal: function(µ, σ) {
|
201
|
+
var n = arguments.length;
|
202
|
+
if (n < 2) σ = 1;
|
203
|
+
if (n < 1) µ = 0;
|
204
|
+
var random = d3.random.normal();
|
205
|
+
return function() {
|
206
|
+
return Math.exp(µ + σ * random());
|
207
|
+
};
|
208
|
+
},
|
209
|
+
irwinHall: function(m) {
|
210
|
+
return function() {
|
211
|
+
for (var s = 0, j = 0; j < m; j++) s += Math.random();
|
212
|
+
return s / m;
|
197
213
|
};
|
198
214
|
}
|
199
215
|
};
|
@@ -373,7 +389,7 @@
|
|
373
389
|
return d == null;
|
374
390
|
}
|
375
391
|
function d3_collapse(s) {
|
376
|
-
return s.
|
392
|
+
return s.trim().replace(/\s+/g, " ");
|
377
393
|
}
|
378
394
|
d3.range = function(start, stop, step) {
|
379
395
|
if (arguments.length < 3) {
|
@@ -541,7 +557,7 @@
|
|
541
557
|
type = d3_format_types.get(type) || d3_format_typeDefault;
|
542
558
|
return function(value) {
|
543
559
|
if (integer && value % 1) return "";
|
544
|
-
var negative = value < 0 && (value = -value) ? "
|
560
|
+
var negative = value < 0 && (value = -value) ? "-" : sign;
|
545
561
|
if (scale < 0) {
|
546
562
|
var prefix = d3.formatPrefix(value, precision);
|
547
563
|
value = prefix.scale(value);
|
@@ -860,7 +876,6 @@
|
|
860
876
|
};
|
861
877
|
};
|
862
878
|
d3.interpolateTransform = function(a, b) {
|
863
|
-
if (n = d3_interpolateTransformSimilar(a, b)) return n;
|
864
879
|
var s = [], q = [], n, A = d3.transform(a), B = d3.transform(b), ta = A.translate, tb = B.translate, ra = A.rotate, rb = B.rotate, wa = A.skew, wb = B.skew, ka = A.scale, kb = B.scale;
|
865
880
|
if (ta[0] != tb[0] || ta[1] != tb[1]) {
|
866
881
|
s.push("translate(", null, ",", null, ")");
|
@@ -912,65 +927,6 @@
|
|
912
927
|
return s.join("");
|
913
928
|
};
|
914
929
|
};
|
915
|
-
var d3_interpolateTransformTypes = [ "", "", "translate", "scale", "rotate", "skewX", "skewY" ];
|
916
|
-
var d3_interpolateTransformSimilar = function(a, b) {
|
917
|
-
var ga = document.createElementNS(d3.ns.prefix.svg, "g"), gb = document.createElementNS(d3.ns.prefix.svg, "g");
|
918
|
-
return (d3_interpolateTransformSimilar = function(a, b) {
|
919
|
-
ga.setAttribute("transform", a);
|
920
|
-
gb.setAttribute("transform", b);
|
921
|
-
a = ga.transform.baseVal;
|
922
|
-
b = gb.transform.baseVal;
|
923
|
-
var sa = [], sb = [], i = -1, n = a.numberOfItems, m = b.numberOfItems, ta, tb, type;
|
924
|
-
if (m !== n) {
|
925
|
-
if (!m) b = d3_interpolateTransformIdentity(a); else if (!n) a = d3_interpolateTransformIdentity(b), n = m; else return;
|
926
|
-
} else if (!m) return;
|
927
|
-
while (++i < n) {
|
928
|
-
ta = a.getItem(i);
|
929
|
-
tb = b.getItem(i);
|
930
|
-
type = ta.type;
|
931
|
-
if (type !== tb.type || !type) return;
|
932
|
-
switch (type) {
|
933
|
-
case 1:
|
934
|
-
{
|
935
|
-
sa.push(new d3_transform(ta.matrix));
|
936
|
-
sb.push(new d3_transform(tb.matrix));
|
937
|
-
continue;
|
938
|
-
}
|
939
|
-
case 2:
|
940
|
-
{
|
941
|
-
ra = ta.matrix.e + "," + ta.matrix.f;
|
942
|
-
rb = tb.matrix.e + "," + tb.matrix.f;
|
943
|
-
break;
|
944
|
-
}
|
945
|
-
case 3:
|
946
|
-
{
|
947
|
-
ra = ta.matrix.a + "," + ta.matrix.d;
|
948
|
-
rb = tb.matrix.a + "," + tb.matrix.d;
|
949
|
-
break;
|
950
|
-
}
|
951
|
-
default:
|
952
|
-
{
|
953
|
-
ra = ta.angle;
|
954
|
-
rb = tb.angle;
|
955
|
-
}
|
956
|
-
}
|
957
|
-
sa.push(type = d3_interpolateTransformTypes[type], "(", ra, ")");
|
958
|
-
sb.push(type, "(", rb, ")");
|
959
|
-
}
|
960
|
-
return d3.interpolateString(sa.join(""), sb.join(""));
|
961
|
-
})(a, b);
|
962
|
-
};
|
963
|
-
function d3_interpolateTransformIdentity(a) {
|
964
|
-
return {
|
965
|
-
getItem: function(i) {
|
966
|
-
return {
|
967
|
-
type: a.getItem(i).type,
|
968
|
-
angle: 0,
|
969
|
-
matrix: d3_transformIdentity
|
970
|
-
};
|
971
|
-
}
|
972
|
-
};
|
973
|
-
}
|
974
930
|
d3.interpolateRgb = function(a, b) {
|
975
931
|
a = d3.rgb(a);
|
976
932
|
b = d3.rgb(b);
|
@@ -985,7 +941,24 @@
|
|
985
941
|
var h0 = a.h, s0 = a.s, l0 = a.l, h1 = b.h - h0, s1 = b.s - s0, l1 = b.l - l0;
|
986
942
|
if (h1 > 180) h1 -= 360; else if (h1 < -180) h1 += 360;
|
987
943
|
return function(t) {
|
988
|
-
return d3_hsl_rgb(h0 + h1 * t, s0 + s1 * t, l0 + l1 * t)
|
944
|
+
return d3_hsl_rgb(h0 + h1 * t, s0 + s1 * t, l0 + l1 * t) + "";
|
945
|
+
};
|
946
|
+
};
|
947
|
+
d3.interpolateLab = function(a, b) {
|
948
|
+
a = d3.lab(a);
|
949
|
+
b = d3.lab(b);
|
950
|
+
var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;
|
951
|
+
return function(t) {
|
952
|
+
return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + "";
|
953
|
+
};
|
954
|
+
};
|
955
|
+
d3.interpolateHcl = function(a, b) {
|
956
|
+
a = d3.hcl(a);
|
957
|
+
b = d3.hcl(b);
|
958
|
+
var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;
|
959
|
+
if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;
|
960
|
+
return function(t) {
|
961
|
+
return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + "";
|
989
962
|
};
|
990
963
|
};
|
991
964
|
d3.interpolateArray = function(a, b) {
|
@@ -1018,8 +991,8 @@
|
|
1018
991
|
};
|
1019
992
|
};
|
1020
993
|
var d3_interpolate_number = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g;
|
1021
|
-
function d3_interpolateByName(
|
1022
|
-
return
|
994
|
+
function d3_interpolateByName(name) {
|
995
|
+
return name == "transform" ? d3.interpolateTransform : d3.interpolate;
|
1023
996
|
}
|
1024
997
|
d3.interpolators = [ d3.interpolateObject, function(a, b) {
|
1025
998
|
return b instanceof Array && d3.interpolateArray(a, b);
|
@@ -1122,6 +1095,16 @@
|
|
1122
1095
|
}
|
1123
1096
|
return d3_hsl(h, s, l);
|
1124
1097
|
}
|
1098
|
+
function d3_rgb_lab(r, g, b) {
|
1099
|
+
r = d3_rgb_xyz(r);
|
1100
|
+
g = d3_rgb_xyz(g);
|
1101
|
+
b = d3_rgb_xyz(b);
|
1102
|
+
var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);
|
1103
|
+
return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));
|
1104
|
+
}
|
1105
|
+
function d3_rgb_xyz(r) {
|
1106
|
+
return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);
|
1107
|
+
}
|
1125
1108
|
function d3_rgb_parseNumber(c) {
|
1126
1109
|
var f = parseFloat(c);
|
1127
1110
|
return c.charAt(c.length - 1) === "%" ? Math.round(f * 2.55) : f;
|
@@ -1323,6 +1306,76 @@
|
|
1323
1306
|
}
|
1324
1307
|
return d3_rgb(vv(h + 120), vv(h), vv(h - 120));
|
1325
1308
|
}
|
1309
|
+
d3.hcl = function(h, c, l) {
|
1310
|
+
return arguments.length === 1 ? h instanceof d3_Hcl ? d3_hcl(h.h, h.c, h.l) : h instanceof d3_Lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : d3_hcl(+h, +c, +l);
|
1311
|
+
};
|
1312
|
+
function d3_hcl(h, c, l) {
|
1313
|
+
return new d3_Hcl(h, c, l);
|
1314
|
+
}
|
1315
|
+
function d3_Hcl(h, c, l) {
|
1316
|
+
this.h = h;
|
1317
|
+
this.c = c;
|
1318
|
+
this.l = l;
|
1319
|
+
}
|
1320
|
+
d3_Hcl.prototype.brighter = function(k) {
|
1321
|
+
return d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));
|
1322
|
+
};
|
1323
|
+
d3_Hcl.prototype.darker = function(k) {
|
1324
|
+
return d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));
|
1325
|
+
};
|
1326
|
+
d3_Hcl.prototype.rgb = function() {
|
1327
|
+
return d3_hcl_lab(this.h, this.c, this.l).rgb();
|
1328
|
+
};
|
1329
|
+
d3_Hcl.prototype.toString = function() {
|
1330
|
+
return this.rgb() + "";
|
1331
|
+
};
|
1332
|
+
function d3_hcl_lab(h, c, l) {
|
1333
|
+
return d3_lab(l, Math.cos(h *= Math.PI / 180) * c, Math.sin(h) * c);
|
1334
|
+
}
|
1335
|
+
d3.lab = function(l, a, b) {
|
1336
|
+
return arguments.length === 1 ? l instanceof d3_Lab ? d3_lab(l.l, l.a, l.b) : l instanceof d3_Hcl ? d3_hcl_lab(l.l, l.c, l.h) : d3_rgb_lab((l = d3.rgb(l)).r, l.g, l.b) : d3_lab(+l, +a, +b);
|
1337
|
+
};
|
1338
|
+
function d3_lab(l, a, b) {
|
1339
|
+
return new d3_Lab(l, a, b);
|
1340
|
+
}
|
1341
|
+
function d3_Lab(l, a, b) {
|
1342
|
+
this.l = l;
|
1343
|
+
this.a = a;
|
1344
|
+
this.b = b;
|
1345
|
+
}
|
1346
|
+
var d3_lab_K = 18;
|
1347
|
+
var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;
|
1348
|
+
d3_Lab.prototype.brighter = function(k) {
|
1349
|
+
return d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
|
1350
|
+
};
|
1351
|
+
d3_Lab.prototype.darker = function(k) {
|
1352
|
+
return d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
|
1353
|
+
};
|
1354
|
+
d3_Lab.prototype.rgb = function() {
|
1355
|
+
return d3_lab_rgb(this.l, this.a, this.b);
|
1356
|
+
};
|
1357
|
+
d3_Lab.prototype.toString = function() {
|
1358
|
+
return this.rgb() + "";
|
1359
|
+
};
|
1360
|
+
function d3_lab_rgb(l, a, b) {
|
1361
|
+
var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;
|
1362
|
+
x = d3_lab_xyz(x) * d3_lab_X;
|
1363
|
+
y = d3_lab_xyz(y) * d3_lab_Y;
|
1364
|
+
z = d3_lab_xyz(z) * d3_lab_Z;
|
1365
|
+
return d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));
|
1366
|
+
}
|
1367
|
+
function d3_lab_hcl(l, a, b) {
|
1368
|
+
return d3_hcl(Math.atan2(b, a) / Math.PI * 180, Math.sqrt(a * a + b * b), l);
|
1369
|
+
}
|
1370
|
+
function d3_lab_xyz(x) {
|
1371
|
+
return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;
|
1372
|
+
}
|
1373
|
+
function d3_xyz_lab(x) {
|
1374
|
+
return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;
|
1375
|
+
}
|
1376
|
+
function d3_xyz_rgb(r) {
|
1377
|
+
return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));
|
1378
|
+
}
|
1326
1379
|
function d3_selection(groups) {
|
1327
1380
|
d3_arraySubclass(groups, d3_selectionPrototype);
|
1328
1381
|
return groups;
|
@@ -1389,11 +1442,19 @@
|
|
1389
1442
|
};
|
1390
1443
|
}
|
1391
1444
|
d3_selectionPrototype.attr = function(name, value) {
|
1392
|
-
name = d3.ns.qualify(name);
|
1393
1445
|
if (arguments.length < 2) {
|
1394
|
-
|
1395
|
-
|
1446
|
+
if (typeof name === "string") {
|
1447
|
+
var node = this.node();
|
1448
|
+
name = d3.ns.qualify(name);
|
1449
|
+
return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);
|
1450
|
+
}
|
1451
|
+
for (value in name) this.each(d3_selection_attr(value, name[value]));
|
1452
|
+
return this;
|
1396
1453
|
}
|
1454
|
+
return this.each(d3_selection_attr(name, value));
|
1455
|
+
};
|
1456
|
+
function d3_selection_attr(name, value) {
|
1457
|
+
name = d3.ns.qualify(name);
|
1397
1458
|
function attrNull() {
|
1398
1459
|
this.removeAttribute(name);
|
1399
1460
|
}
|
@@ -1414,52 +1475,73 @@
|
|
1414
1475
|
var x = value.apply(this, arguments);
|
1415
1476
|
if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);
|
1416
1477
|
}
|
1417
|
-
return
|
1418
|
-
}
|
1478
|
+
return value == null ? name.local ? attrNullNS : attrNull : typeof value === "function" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;
|
1479
|
+
}
|
1419
1480
|
d3_selectionPrototype.classed = function(name, value) {
|
1420
|
-
|
1421
|
-
|
1422
|
-
|
1481
|
+
if (arguments.length < 2) {
|
1482
|
+
if (typeof name === "string") {
|
1483
|
+
var node = this.node(), n = (name = name.trim().split(/^|\s+/g)).length, i = -1;
|
1484
|
+
if (value = node.classList) {
|
1485
|
+
while (++i < n) if (!value.contains(name[i])) return false;
|
1486
|
+
} else {
|
1487
|
+
value = node.className;
|
1488
|
+
if (value.baseVal != null) value = value.baseVal;
|
1489
|
+
while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;
|
1490
|
+
}
|
1491
|
+
return true;
|
1492
|
+
}
|
1493
|
+
for (value in name) this.each(d3_selection_classed(value, name[value]));
|
1423
1494
|
return this;
|
1424
|
-
} else {
|
1425
|
-
while (++i < n) if (!d3_selection_classed.call(this, names[i])) return false;
|
1426
|
-
return true;
|
1427
1495
|
}
|
1496
|
+
return this.each(d3_selection_classed(name, value));
|
1428
1497
|
};
|
1498
|
+
function d3_selection_classedRe(name) {
|
1499
|
+
return new RegExp("(?:^|\\s+)" + d3.requote(name) + "(?:\\s+|$)", "g");
|
1500
|
+
}
|
1429
1501
|
function d3_selection_classed(name, value) {
|
1430
|
-
|
1431
|
-
|
1432
|
-
|
1433
|
-
|
1434
|
-
|
1435
|
-
re.lastIndex = 0;
|
1436
|
-
return re.test(c.baseVal != null ? c.baseVal : c);
|
1437
|
-
}
|
1438
|
-
function classedAdd() {
|
1439
|
-
if (c = this.classList) return c.add(name);
|
1440
|
-
var c = this.className, cb = c.baseVal != null, cv = cb ? c.baseVal : c;
|
1441
|
-
re.lastIndex = 0;
|
1442
|
-
if (!re.test(cv)) {
|
1443
|
-
cv = d3_collapse(cv + " " + name);
|
1444
|
-
if (cb) c.baseVal = cv; else this.className = cv;
|
1445
|
-
}
|
1446
|
-
}
|
1447
|
-
function classedRemove() {
|
1448
|
-
if (c = this.classList) return c.remove(name);
|
1449
|
-
var c = this.className, cb = c.baseVal != null, cv = cb ? c.baseVal : c;
|
1450
|
-
if (cv) {
|
1451
|
-
cv = d3_collapse(cv.replace(re, " "));
|
1452
|
-
if (cb) c.baseVal = cv; else this.className = cv;
|
1453
|
-
}
|
1502
|
+
name = name.trim().split(/\s+/).map(d3_selection_classedName);
|
1503
|
+
var n = name.length;
|
1504
|
+
function classedConstant() {
|
1505
|
+
var i = -1;
|
1506
|
+
while (++i < n) name[i](this, value);
|
1454
1507
|
}
|
1455
1508
|
function classedFunction() {
|
1456
|
-
|
1457
|
-
|
1458
|
-
|
1509
|
+
var i = -1, x = value.apply(this, arguments);
|
1510
|
+
while (++i < n) name[i](this, x);
|
1511
|
+
}
|
1512
|
+
return typeof value === "function" ? classedFunction : classedConstant;
|
1513
|
+
}
|
1514
|
+
function d3_selection_classedName(name) {
|
1515
|
+
var re = d3_selection_classedRe(name);
|
1516
|
+
return function(node, value) {
|
1517
|
+
if (c = node.classList) return value ? c.add(name) : c.remove(name);
|
1518
|
+
var c = node.className, cb = c.baseVal != null, cv = cb ? c.baseVal : c;
|
1519
|
+
if (value) {
|
1520
|
+
re.lastIndex = 0;
|
1521
|
+
if (!re.test(cv)) {
|
1522
|
+
cv = d3_collapse(cv + " " + name);
|
1523
|
+
if (cb) c.baseVal = cv; else node.className = cv;
|
1524
|
+
}
|
1525
|
+
} else if (cv) {
|
1526
|
+
cv = d3_collapse(cv.replace(re, " "));
|
1527
|
+
if (cb) c.baseVal = cv; else node.className = cv;
|
1528
|
+
}
|
1529
|
+
};
|
1459
1530
|
}
|
1460
1531
|
d3_selectionPrototype.style = function(name, value, priority) {
|
1461
|
-
|
1462
|
-
if (
|
1532
|
+
var n = arguments.length;
|
1533
|
+
if (n < 3) {
|
1534
|
+
if (typeof name !== "string") {
|
1535
|
+
if (n < 2) value = "";
|
1536
|
+
for (priority in name) this.each(d3_selection_style(priority, name[priority], value));
|
1537
|
+
return this;
|
1538
|
+
}
|
1539
|
+
if (n < 2) return window.getComputedStyle(this.node(), null).getPropertyValue(name);
|
1540
|
+
priority = "";
|
1541
|
+
}
|
1542
|
+
return this.each(d3_selection_style(name, value, priority));
|
1543
|
+
};
|
1544
|
+
function d3_selection_style(name, value, priority) {
|
1463
1545
|
function styleNull() {
|
1464
1546
|
this.style.removeProperty(name);
|
1465
1547
|
}
|
@@ -1470,10 +1552,17 @@
|
|
1470
1552
|
var x = value.apply(this, arguments);
|
1471
1553
|
if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);
|
1472
1554
|
}
|
1473
|
-
return
|
1474
|
-
}
|
1555
|
+
return value == null ? styleNull : typeof value === "function" ? styleFunction : styleConstant;
|
1556
|
+
}
|
1475
1557
|
d3_selectionPrototype.property = function(name, value) {
|
1476
|
-
if (arguments.length < 2)
|
1558
|
+
if (arguments.length < 2) {
|
1559
|
+
if (typeof name === "string") return this.node()[name];
|
1560
|
+
for (value in name) this.each(d3_selection_property(value, name[value]));
|
1561
|
+
return this;
|
1562
|
+
}
|
1563
|
+
return this.each(d3_selection_property(name, value));
|
1564
|
+
};
|
1565
|
+
function d3_selection_property(name, value) {
|
1477
1566
|
function propertyNull() {
|
1478
1567
|
delete this[name];
|
1479
1568
|
}
|
@@ -1484,8 +1573,8 @@
|
|
1484
1573
|
var x = value.apply(this, arguments);
|
1485
1574
|
if (x == null) delete this[name]; else this[name] = x;
|
1486
1575
|
}
|
1487
|
-
return
|
1488
|
-
}
|
1576
|
+
return value == null ? propertyNull : typeof value === "function" ? propertyFunction : propertyConstant;
|
1577
|
+
}
|
1489
1578
|
d3_selectionPrototype.text = function(value) {
|
1490
1579
|
return arguments.length < 1 ? this.node().textContent : this.each(typeof value === "function" ? function() {
|
1491
1580
|
var v = value.apply(this, arguments);
|
@@ -1669,21 +1758,34 @@
|
|
1669
1758
|
};
|
1670
1759
|
}
|
1671
1760
|
d3_selectionPrototype.on = function(type, listener, capture) {
|
1672
|
-
|
1761
|
+
var n = arguments.length;
|
1762
|
+
if (n < 3) {
|
1763
|
+
if (typeof type !== "string") {
|
1764
|
+
if (n < 2) listener = false;
|
1765
|
+
for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));
|
1766
|
+
return this;
|
1767
|
+
}
|
1768
|
+
if (n < 2) return (n = this.node()["__on" + type]) && n._;
|
1769
|
+
capture = false;
|
1770
|
+
}
|
1771
|
+
return this.each(d3_selection_on(type, listener, capture));
|
1772
|
+
};
|
1773
|
+
function d3_selection_on(type, listener, capture) {
|
1673
1774
|
var name = "__on" + type, i = type.indexOf(".");
|
1674
1775
|
if (i > 0) type = type.substring(0, i);
|
1675
|
-
|
1676
|
-
|
1677
|
-
|
1678
|
-
|
1679
|
-
|
1680
|
-
|
1681
|
-
|
1682
|
-
|
1683
|
-
|
1684
|
-
|
1685
|
-
|
1686
|
-
|
1776
|
+
function onRemove() {
|
1777
|
+
var wrapper = this[name];
|
1778
|
+
if (wrapper) {
|
1779
|
+
this.removeEventListener(type, wrapper, wrapper.$);
|
1780
|
+
delete this[name];
|
1781
|
+
}
|
1782
|
+
}
|
1783
|
+
function onAdd() {
|
1784
|
+
var node = this, args = arguments;
|
1785
|
+
onRemove.call(this);
|
1786
|
+
this.addEventListener(type, this[name] = wrapper, wrapper.$ = capture);
|
1787
|
+
wrapper._ = listener;
|
1788
|
+
function wrapper(e) {
|
1687
1789
|
var o = d3.event;
|
1688
1790
|
d3.event = e;
|
1689
1791
|
args[0] = node.__data__;
|
@@ -1693,8 +1795,9 @@
|
|
1693
1795
|
d3.event = o;
|
1694
1796
|
}
|
1695
1797
|
}
|
1696
|
-
}
|
1697
|
-
|
1798
|
+
}
|
1799
|
+
return listener ? onAdd : onRemove;
|
1800
|
+
}
|
1698
1801
|
d3_selectionPrototype.each = function(callback) {
|
1699
1802
|
return d3_selection_each(this, function(node, i, j) {
|
1700
1803
|
callback.call(node, node.__data__, i, j);
|
@@ -1836,21 +1939,6 @@
|
|
1836
1939
|
}, 0, time);
|
1837
1940
|
return groups;
|
1838
1941
|
}
|
1839
|
-
var d3_transitionRemove = {};
|
1840
|
-
function d3_transitionNull(d, i, a) {
|
1841
|
-
return a != "" && d3_transitionRemove;
|
1842
|
-
}
|
1843
|
-
function d3_transitionTween(name, b) {
|
1844
|
-
var interpolate = d3_interpolateByName(name);
|
1845
|
-
function transitionFunction(d, i, a) {
|
1846
|
-
var v = b.call(this, d, i);
|
1847
|
-
return v == null ? a != "" && d3_transitionRemove : a != v && interpolate(a, v);
|
1848
|
-
}
|
1849
|
-
function transitionString(d, i, a) {
|
1850
|
-
return a != b && interpolate(a, b);
|
1851
|
-
}
|
1852
|
-
return typeof b === "function" ? transitionFunction : b == null ? d3_transitionNull : (b += "", transitionString);
|
1853
|
-
}
|
1854
1942
|
var d3_transitionPrototype = [], d3_transitionNextId = 0, d3_transitionId = 0, d3_transitionDefaultDelay = 0, d3_transitionDefaultDuration = 250, d3_transitionDefaultEase = d3.ease("cubic-in-out"), d3_transitionDelay = d3_transitionDefaultDelay, d3_transitionDuration = d3_transitionDefaultDuration, d3_transitionEase = d3_transitionDefaultEase;
|
1855
1943
|
d3_transitionPrototype.call = d3_selectionPrototype.call;
|
1856
1944
|
d3.transition = function(selection) {
|
@@ -1911,33 +1999,45 @@
|
|
1911
1999
|
return d3_transition(subgroups, this.id, this.time).ease(this.ease());
|
1912
2000
|
};
|
1913
2001
|
d3_transitionPrototype.attr = function(name, value) {
|
1914
|
-
|
2002
|
+
if (arguments.length < 2) {
|
2003
|
+
for (value in name) this.attrTween(value, d3_tweenByName(name[value], value));
|
2004
|
+
return this;
|
2005
|
+
}
|
2006
|
+
return this.attrTween(name, d3_tweenByName(value, name));
|
1915
2007
|
};
|
1916
2008
|
d3_transitionPrototype.attrTween = function(nameNS, tween) {
|
1917
2009
|
var name = d3.ns.qualify(nameNS);
|
1918
2010
|
function attrTween(d, i) {
|
1919
2011
|
var f = tween.call(this, d, i, this.getAttribute(name));
|
1920
|
-
return f ===
|
2012
|
+
return f === d3_tweenRemove ? (this.removeAttribute(name), null) : f && function(t) {
|
1921
2013
|
this.setAttribute(name, f(t));
|
1922
2014
|
};
|
1923
2015
|
}
|
1924
2016
|
function attrTweenNS(d, i) {
|
1925
2017
|
var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));
|
1926
|
-
return f ===
|
2018
|
+
return f === d3_tweenRemove ? (this.removeAttributeNS(name.space, name.local), null) : f && function(t) {
|
1927
2019
|
this.setAttributeNS(name.space, name.local, f(t));
|
1928
2020
|
};
|
1929
2021
|
}
|
1930
2022
|
return this.tween("attr." + nameNS, name.local ? attrTweenNS : attrTween);
|
1931
2023
|
};
|
1932
2024
|
d3_transitionPrototype.style = function(name, value, priority) {
|
1933
|
-
|
1934
|
-
|
2025
|
+
var n = arguments.length;
|
2026
|
+
if (n < 3) {
|
2027
|
+
if (typeof name !== "string") {
|
2028
|
+
if (n < 2) value = "";
|
2029
|
+
for (priority in name) this.styleTween(priority, d3_tweenByName(name[priority], priority), value);
|
2030
|
+
return this;
|
2031
|
+
}
|
2032
|
+
priority = "";
|
2033
|
+
}
|
2034
|
+
return this.styleTween(name, d3_tweenByName(value, name), priority);
|
1935
2035
|
};
|
1936
2036
|
d3_transitionPrototype.styleTween = function(name, tween, priority) {
|
1937
2037
|
if (arguments.length < 3) priority = "";
|
1938
2038
|
return this.tween("style." + name, function(d, i) {
|
1939
2039
|
var f = tween.call(this, d, i, window.getComputedStyle(this, null).getPropertyValue(name));
|
1940
|
-
return f ===
|
2040
|
+
return f === d3_tweenRemove ? (this.style.removeProperty(name), null) : f && function(t) {
|
1941
2041
|
this.style.setProperty(name, f(t), priority);
|
1942
2042
|
};
|
1943
2043
|
});
|
@@ -1985,6 +2085,23 @@
|
|
1985
2085
|
d3_transitionPrototype.transition = function() {
|
1986
2086
|
return this.select(d3_this);
|
1987
2087
|
};
|
2088
|
+
d3.tween = function(b, interpolate) {
|
2089
|
+
function tweenFunction(d, i, a) {
|
2090
|
+
var v = b.call(this, d, i);
|
2091
|
+
return v == null ? a != "" && d3_tweenRemove : a != v && interpolate(a, v);
|
2092
|
+
}
|
2093
|
+
function tweenString(d, i, a) {
|
2094
|
+
return a != b && interpolate(a, b);
|
2095
|
+
}
|
2096
|
+
return typeof b === "function" ? tweenFunction : b == null ? d3_tweenNull : (b += "", tweenString);
|
2097
|
+
};
|
2098
|
+
var d3_tweenRemove = {};
|
2099
|
+
function d3_tweenNull(d, i, a) {
|
2100
|
+
return a != "" && d3_tweenRemove;
|
2101
|
+
}
|
2102
|
+
function d3_tweenByName(b, name) {
|
2103
|
+
return d3.tween(b, d3_interpolateByName(name));
|
2104
|
+
}
|
1988
2105
|
var d3_timer_queue = null, d3_timer_interval, d3_timer_timeout;
|
1989
2106
|
d3.timer = function(callback, delay, then) {
|
1990
2107
|
var found = false, t0, t1 = d3_timer_queue;
|
@@ -2104,15 +2221,10 @@
|
|
2104
2221
|
function d3_scale_nice(domain, nice) {
|
2105
2222
|
var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;
|
2106
2223
|
if (x1 < x0) {
|
2107
|
-
dx = i0;
|
2108
|
-
|
2109
|
-
|
2110
|
-
|
2111
|
-
x0 = x1;
|
2112
|
-
x1 = dx;
|
2113
|
-
}
|
2114
|
-
if (dx = x1 - x0) {
|
2115
|
-
nice = nice(dx);
|
2224
|
+
dx = i0, i0 = i1, i1 = dx;
|
2225
|
+
dx = x0, x0 = x1, x1 = dx;
|
2226
|
+
}
|
2227
|
+
if (nice = nice(x1 - x0)) {
|
2116
2228
|
domain[i0] = nice.floor(x0);
|
2117
2229
|
domain[i1] = nice.ceil(x1);
|
2118
2230
|
}
|
@@ -2181,7 +2293,7 @@
|
|
2181
2293
|
}
|
2182
2294
|
function d3_scale_linearNice(dx) {
|
2183
2295
|
dx = Math.pow(10, Math.round(Math.log(dx) / Math.LN10) - 1);
|
2184
|
-
return {
|
2296
|
+
return dx && {
|
2185
2297
|
floor: function(x) {
|
2186
2298
|
return Math.floor(x / dx) * dx;
|
2187
2299
|
},
|
@@ -2338,7 +2450,7 @@
|
|
2338
2450
|
d3.scale.ordinal = function() {
|
2339
2451
|
return d3_scale_ordinal([], {
|
2340
2452
|
t: "range",
|
2341
|
-
|
2453
|
+
a: [ [] ]
|
2342
2454
|
});
|
2343
2455
|
};
|
2344
2456
|
function d3_scale_ordinal(domain, ranger) {
|
@@ -2357,7 +2469,7 @@
|
|
2357
2469
|
index = new d3_Map;
|
2358
2470
|
var i = -1, n = x.length, xi;
|
2359
2471
|
while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));
|
2360
|
-
return scale[ranger.t](
|
2472
|
+
return scale[ranger.t].apply(scale, ranger.a);
|
2361
2473
|
};
|
2362
2474
|
scale.range = function(x) {
|
2363
2475
|
if (!arguments.length) return range;
|
@@ -2365,7 +2477,7 @@
|
|
2365
2477
|
rangeBand = 0;
|
2366
2478
|
ranger = {
|
2367
2479
|
t: "range",
|
2368
|
-
|
2480
|
+
a: arguments
|
2369
2481
|
};
|
2370
2482
|
return scale;
|
2371
2483
|
};
|
@@ -2376,34 +2488,33 @@
|
|
2376
2488
|
rangeBand = 0;
|
2377
2489
|
ranger = {
|
2378
2490
|
t: "rangePoints",
|
2379
|
-
|
2380
|
-
p: padding
|
2491
|
+
a: arguments
|
2381
2492
|
};
|
2382
2493
|
return scale;
|
2383
2494
|
};
|
2384
|
-
scale.rangeBands = function(x, padding) {
|
2495
|
+
scale.rangeBands = function(x, padding, outerPadding) {
|
2385
2496
|
if (arguments.length < 2) padding = 0;
|
2386
|
-
|
2387
|
-
|
2497
|
+
if (arguments.length < 3) outerPadding = padding;
|
2498
|
+
var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);
|
2499
|
+
range = steps(start + step * outerPadding, step);
|
2388
2500
|
if (reverse) range.reverse();
|
2389
2501
|
rangeBand = step * (1 - padding);
|
2390
2502
|
ranger = {
|
2391
2503
|
t: "rangeBands",
|
2392
|
-
|
2393
|
-
p: padding
|
2504
|
+
a: arguments
|
2394
2505
|
};
|
2395
2506
|
return scale;
|
2396
2507
|
};
|
2397
|
-
scale.rangeRoundBands = function(x, padding) {
|
2508
|
+
scale.rangeRoundBands = function(x, padding, outerPadding) {
|
2398
2509
|
if (arguments.length < 2) padding = 0;
|
2399
|
-
|
2510
|
+
if (arguments.length < 3) outerPadding = padding;
|
2511
|
+
var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding)), error = stop - start - (domain.length - padding) * step;
|
2400
2512
|
range = steps(start + Math.round(error / 2), step);
|
2401
2513
|
if (reverse) range.reverse();
|
2402
2514
|
rangeBand = Math.round(step * (1 - padding));
|
2403
2515
|
ranger = {
|
2404
2516
|
t: "rangeRoundBands",
|
2405
|
-
|
2406
|
-
p: padding
|
2517
|
+
a: arguments
|
2407
2518
|
};
|
2408
2519
|
return scale;
|
2409
2520
|
};
|
@@ -2411,7 +2522,7 @@
|
|
2411
2522
|
return rangeBand;
|
2412
2523
|
};
|
2413
2524
|
scale.rangeExtent = function() {
|
2414
|
-
return d3_scaleExtent(ranger.
|
2525
|
+
return d3_scaleExtent(ranger.a[0]);
|
2415
2526
|
};
|
2416
2527
|
scale.copy = function() {
|
2417
2528
|
return d3_scale_ordinal(domain, ranger);
|
@@ -2498,6 +2609,28 @@
|
|
2498
2609
|
};
|
2499
2610
|
return rescale();
|
2500
2611
|
}
|
2612
|
+
d3.scale.threshold = function() {
|
2613
|
+
return d3_scale_threshold([ .5 ], [ 0, 1 ]);
|
2614
|
+
};
|
2615
|
+
function d3_scale_threshold(domain, range) {
|
2616
|
+
function scale(x) {
|
2617
|
+
return range[d3.bisect(domain, x)];
|
2618
|
+
}
|
2619
|
+
scale.domain = function(_) {
|
2620
|
+
if (!arguments.length) return domain;
|
2621
|
+
domain = _;
|
2622
|
+
return scale;
|
2623
|
+
};
|
2624
|
+
scale.range = function(_) {
|
2625
|
+
if (!arguments.length) return range;
|
2626
|
+
range = _;
|
2627
|
+
return scale;
|
2628
|
+
};
|
2629
|
+
scale.copy = function() {
|
2630
|
+
return d3_scale_threshold(domain, range);
|
2631
|
+
};
|
2632
|
+
return scale;
|
2633
|
+
}
|
2501
2634
|
d3.scale.identity = function() {
|
2502
2635
|
return d3_scale_identity([ 0, 1 ]);
|
2503
2636
|
};
|
@@ -2569,11 +2702,11 @@
|
|
2569
2702
|
return d.endAngle;
|
2570
2703
|
}
|
2571
2704
|
function d3_svg_line(projection) {
|
2572
|
-
var x = d3_svg_lineX, y = d3_svg_lineY, defined = d3_true, interpolate =
|
2705
|
+
var x = d3_svg_lineX, y = d3_svg_lineY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;
|
2573
2706
|
function line(data) {
|
2574
2707
|
var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);
|
2575
2708
|
function segment() {
|
2576
|
-
segments.push("M",
|
2709
|
+
segments.push("M", interpolate(projection(points), tension));
|
2577
2710
|
}
|
2578
2711
|
while (++i < n) {
|
2579
2712
|
if (defined.call(this, d = data[i], i)) {
|
@@ -2602,9 +2735,8 @@
|
|
2602
2735
|
return line;
|
2603
2736
|
};
|
2604
2737
|
line.interpolate = function(_) {
|
2605
|
-
if (!arguments.length) return
|
2606
|
-
if (
|
2607
|
-
interpolator = d3_svg_lineInterpolators.get(interpolate = _);
|
2738
|
+
if (!arguments.length) return interpolateKey;
|
2739
|
+
if (typeof _ === "function") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;
|
2608
2740
|
return line;
|
2609
2741
|
};
|
2610
2742
|
line.tension = function(_) {
|
@@ -2623,7 +2755,6 @@
|
|
2623
2755
|
function d3_svg_lineY(d) {
|
2624
2756
|
return d[1];
|
2625
2757
|
}
|
2626
|
-
var d3_svg_lineInterpolatorDefault = "linear";
|
2627
2758
|
var d3_svg_lineInterpolators = d3.map({
|
2628
2759
|
linear: d3_svg_lineLinear,
|
2629
2760
|
"linear-closed": d3_svg_lineLinearClosed,
|
@@ -2638,6 +2769,10 @@
|
|
2638
2769
|
"cardinal-closed": d3_svg_lineCardinalClosed,
|
2639
2770
|
monotone: d3_svg_lineMonotone
|
2640
2771
|
});
|
2772
|
+
d3_svg_lineInterpolators.forEach(function(key, value) {
|
2773
|
+
value.key = key;
|
2774
|
+
value.closed = /-closed$/.test(key);
|
2775
|
+
});
|
2641
2776
|
function d3_svg_lineLinear(points) {
|
2642
2777
|
return points.join("L");
|
2643
2778
|
}
|
@@ -2787,7 +2922,7 @@
|
|
2787
2922
|
function d3_svg_lineFiniteDifferences(points) {
|
2788
2923
|
var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);
|
2789
2924
|
while (++i < j) {
|
2790
|
-
m[i] = d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]));
|
2925
|
+
m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;
|
2791
2926
|
}
|
2792
2927
|
m[i] = d;
|
2793
2928
|
return m;
|
@@ -2837,7 +2972,7 @@
|
|
2837
2972
|
return points;
|
2838
2973
|
}
|
2839
2974
|
function d3_svg_area(projection) {
|
2840
|
-
var x0 = d3_svg_lineX, x1 = d3_svg_lineX, y0 = 0, y1 = d3_svg_lineY, defined = d3_true, interpolate =
|
2975
|
+
var x0 = d3_svg_lineX, x1 = d3_svg_lineX, y0 = 0, y1 = d3_svg_lineY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = "L", tension = .7;
|
2841
2976
|
function area(data) {
|
2842
2977
|
var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {
|
2843
2978
|
return x;
|
@@ -2845,7 +2980,7 @@
|
|
2845
2980
|
return y;
|
2846
2981
|
} : d3_functor(y1), x, y;
|
2847
2982
|
function segment() {
|
2848
|
-
segments.push("M",
|
2983
|
+
segments.push("M", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), "Z");
|
2849
2984
|
}
|
2850
2985
|
while (++i < n) {
|
2851
2986
|
if (defined.call(this, d = data[i], i)) {
|
@@ -2896,11 +3031,10 @@
|
|
2896
3031
|
return area;
|
2897
3032
|
};
|
2898
3033
|
area.interpolate = function(_) {
|
2899
|
-
if (!arguments.length) return
|
2900
|
-
if (
|
2901
|
-
|
2902
|
-
|
2903
|
-
L = /-closed$/.test(_) ? "M" : "L";
|
3034
|
+
if (!arguments.length) return interpolateKey;
|
3035
|
+
if (typeof _ === "function") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;
|
3036
|
+
interpolateReverse = interpolate.reverse || interpolate;
|
3037
|
+
L = interpolate.closed ? "M" : "L";
|
2904
3038
|
return area;
|
2905
3039
|
};
|
2906
3040
|
area.tension = function(_) {
|
@@ -2913,7 +3047,7 @@
|
|
2913
3047
|
d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;
|
2914
3048
|
d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;
|
2915
3049
|
d3.svg.area = function() {
|
2916
|
-
return d3_svg_area(
|
3050
|
+
return d3_svg_area(d3_identity);
|
2917
3051
|
};
|
2918
3052
|
d3.svg.area.radial = function() {
|
2919
3053
|
var area = d3_svg_area(d3_svg_lineRadial);
|
@@ -4474,14 +4608,28 @@
|
|
4474
4608
|
}
|
4475
4609
|
var d3_layout_hierarchyInline = false;
|
4476
4610
|
d3.layout.pack = function() {
|
4477
|
-
var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), size = [ 1, 1 ];
|
4611
|
+
var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ];
|
4478
4612
|
function pack(d, i) {
|
4479
4613
|
var nodes = hierarchy.call(this, d, i), root = nodes[0];
|
4480
4614
|
root.x = 0;
|
4481
4615
|
root.y = 0;
|
4482
|
-
|
4483
|
-
|
4484
|
-
|
4616
|
+
d3_layout_treeVisitAfter(root, function(d) {
|
4617
|
+
d.r = Math.sqrt(d.value);
|
4618
|
+
});
|
4619
|
+
d3_layout_treeVisitAfter(root, d3_layout_packSiblings);
|
4620
|
+
var w = size[0], h = size[1], k = Math.max(2 * root.r / w, 2 * root.r / h);
|
4621
|
+
if (padding > 0) {
|
4622
|
+
var dr = padding * k / 2;
|
4623
|
+
d3_layout_treeVisitAfter(root, function(d) {
|
4624
|
+
d.r += dr;
|
4625
|
+
});
|
4626
|
+
d3_layout_treeVisitAfter(root, d3_layout_packSiblings);
|
4627
|
+
d3_layout_treeVisitAfter(root, function(d) {
|
4628
|
+
d.r -= dr;
|
4629
|
+
});
|
4630
|
+
k = Math.max(2 * root.r / w, 2 * root.r / h);
|
4631
|
+
}
|
4632
|
+
d3_layout_packTransform(root, w / 2, h / 2, 1 / k);
|
4485
4633
|
return nodes;
|
4486
4634
|
}
|
4487
4635
|
pack.size = function(x) {
|
@@ -4489,6 +4637,11 @@
|
|
4489
4637
|
size = x;
|
4490
4638
|
return pack;
|
4491
4639
|
};
|
4640
|
+
pack.padding = function(_) {
|
4641
|
+
if (!arguments.length) return padding;
|
4642
|
+
padding = +_;
|
4643
|
+
return pack;
|
4644
|
+
};
|
4492
4645
|
return d3_layout_hierarchyRebind(pack, hierarchy);
|
4493
4646
|
};
|
4494
4647
|
function d3_layout_packSort(a, b) {
|
@@ -4509,8 +4662,9 @@
|
|
4509
4662
|
var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;
|
4510
4663
|
return dr * dr - dx * dx - dy * dy > .001;
|
4511
4664
|
}
|
4512
|
-
function
|
4513
|
-
|
4665
|
+
function d3_layout_packSiblings(node) {
|
4666
|
+
if (!(nodes = node.children) || !(n = nodes.length)) return;
|
4667
|
+
var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;
|
4514
4668
|
function bound(node) {
|
4515
4669
|
xMin = Math.min(node.x - node.r, xMin);
|
4516
4670
|
xMax = Math.max(node.x + node.r, xMax);
|
@@ -4535,7 +4689,7 @@
|
|
4535
4689
|
a._pack_prev = c;
|
4536
4690
|
d3_layout_packInsert(c, b);
|
4537
4691
|
b = a._pack_next;
|
4538
|
-
for (
|
4692
|
+
for (i = 3; i < n; i++) {
|
4539
4693
|
d3_layout_packPlace(a, b, c = nodes[i]);
|
4540
4694
|
var isect = 0, s1 = 1, s2 = 1;
|
4541
4695
|
for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {
|
@@ -4563,14 +4717,14 @@
|
|
4563
4717
|
}
|
4564
4718
|
}
|
4565
4719
|
var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;
|
4566
|
-
for (
|
4567
|
-
|
4568
|
-
|
4569
|
-
|
4570
|
-
cr = Math.max(cr,
|
4720
|
+
for (i = 0; i < n; i++) {
|
4721
|
+
c = nodes[i];
|
4722
|
+
c.x -= cx;
|
4723
|
+
c.y -= cy;
|
4724
|
+
cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));
|
4571
4725
|
}
|
4726
|
+
node.r = cr;
|
4572
4727
|
nodes.forEach(d3_layout_packUnlink);
|
4573
|
-
return cr;
|
4574
4728
|
}
|
4575
4729
|
function d3_layout_packLink(node) {
|
4576
4730
|
node._pack_next = node._pack_prev = node;
|
@@ -4579,15 +4733,6 @@
|
|
4579
4733
|
delete node._pack_next;
|
4580
4734
|
delete node._pack_prev;
|
4581
4735
|
}
|
4582
|
-
function d3_layout_packTree(node) {
|
4583
|
-
var children = node.children;
|
4584
|
-
if (children && children.length) {
|
4585
|
-
children.forEach(d3_layout_packTree);
|
4586
|
-
node.r = d3_layout_packCircle(children);
|
4587
|
-
} else {
|
4588
|
-
node.r = Math.sqrt(node.value);
|
4589
|
-
}
|
4590
|
-
}
|
4591
4736
|
function d3_layout_packTransform(node, x, y, k) {
|
4592
4737
|
var children = node.children;
|
4593
4738
|
node.x = x += k * node.x;
|
@@ -5001,80 +5146,86 @@
|
|
5001
5146
|
dy: dy
|
5002
5147
|
};
|
5003
5148
|
}
|
5004
|
-
|
5005
|
-
|
5006
|
-
|
5007
|
-
|
5008
|
-
|
5009
|
-
|
5010
|
-
|
5011
|
-
|
5012
|
-
|
5013
|
-
|
5014
|
-
|
5015
|
-
|
5016
|
-
|
5017
|
-
|
5018
|
-
|
5019
|
-
|
5020
|
-
|
5021
|
-
|
5022
|
-
|
5023
|
-
|
5024
|
-
|
5025
|
-
|
5026
|
-
|
5027
|
-
|
5028
|
-
|
5029
|
-
|
5030
|
-
|
5031
|
-
|
5032
|
-
|
5033
|
-
var
|
5034
|
-
|
5035
|
-
|
5036
|
-
|
5037
|
-
i
|
5149
|
+
function d3_dsv(delimiter, mimeType) {
|
5150
|
+
var reParse = new RegExp("\r\n|[" + delimiter + "\r\n]", "g"), reFormat = new RegExp('["' + delimiter + "\n]"), delimiterCode = delimiter.charCodeAt(0);
|
5151
|
+
function dsv(url, callback) {
|
5152
|
+
d3.text(url, mimeType, function(text) {
|
5153
|
+
callback(text && dsv.parse(text));
|
5154
|
+
});
|
5155
|
+
}
|
5156
|
+
dsv.parse = function(text) {
|
5157
|
+
var header;
|
5158
|
+
return dsv.parseRows(text, function(row, i) {
|
5159
|
+
if (i) {
|
5160
|
+
var o = {}, j = -1, m = header.length;
|
5161
|
+
while (++j < m) o[header[j]] = row[j];
|
5162
|
+
return o;
|
5163
|
+
} else {
|
5164
|
+
header = row;
|
5165
|
+
return null;
|
5166
|
+
}
|
5167
|
+
});
|
5168
|
+
};
|
5169
|
+
dsv.parseRows = function(text, f) {
|
5170
|
+
var EOL = {}, EOF = {}, rows = [], n = 0, t, eol;
|
5171
|
+
reParse.lastIndex = 0;
|
5172
|
+
function token() {
|
5173
|
+
if (reParse.lastIndex >= text.length) return EOF;
|
5174
|
+
if (eol) {
|
5175
|
+
eol = false;
|
5176
|
+
return EOL;
|
5177
|
+
}
|
5178
|
+
var j = reParse.lastIndex;
|
5179
|
+
if (text.charCodeAt(j) === 34) {
|
5180
|
+
var i = j;
|
5181
|
+
while (i++ < text.length) {
|
5182
|
+
if (text.charCodeAt(i) === 34) {
|
5183
|
+
if (text.charCodeAt(i + 1) !== 34) break;
|
5184
|
+
i++;
|
5185
|
+
}
|
5186
|
+
}
|
5187
|
+
reParse.lastIndex = i + 2;
|
5188
|
+
var c = text.charCodeAt(i + 1);
|
5189
|
+
if (c === 13) {
|
5190
|
+
eol = true;
|
5191
|
+
if (text.charCodeAt(i + 2) === 10) reParse.lastIndex++;
|
5192
|
+
} else if (c === 10) {
|
5193
|
+
eol = true;
|
5038
5194
|
}
|
5195
|
+
return text.substring(j + 1, i).replace(/""/g, '"');
|
5039
5196
|
}
|
5040
|
-
|
5041
|
-
|
5042
|
-
|
5043
|
-
|
5044
|
-
if (text.charCodeAt(i + 2) === 10) re.lastIndex++;
|
5045
|
-
} else if (c === 10) {
|
5046
|
-
eol = true;
|
5197
|
+
var m = reParse.exec(text);
|
5198
|
+
if (m) {
|
5199
|
+
eol = m[0].charCodeAt(0) !== delimiterCode;
|
5200
|
+
return text.substring(j, m.index);
|
5047
5201
|
}
|
5048
|
-
|
5049
|
-
|
5050
|
-
|
5051
|
-
|
5052
|
-
|
5053
|
-
|
5202
|
+
reParse.lastIndex = text.length;
|
5203
|
+
return text.substring(j);
|
5204
|
+
}
|
5205
|
+
while ((t = token()) !== EOF) {
|
5206
|
+
var a = [];
|
5207
|
+
while (t !== EOL && t !== EOF) {
|
5208
|
+
a.push(t);
|
5209
|
+
t = token();
|
5210
|
+
}
|
5211
|
+
if (f && !(a = f(a, n++))) continue;
|
5212
|
+
rows.push(a);
|
5054
5213
|
}
|
5055
|
-
|
5056
|
-
|
5214
|
+
return rows;
|
5215
|
+
};
|
5216
|
+
dsv.format = function(rows) {
|
5217
|
+
return rows.map(formatRow).join("\n");
|
5218
|
+
};
|
5219
|
+
function formatRow(row) {
|
5220
|
+
return row.map(formatValue).join(delimiter);
|
5057
5221
|
}
|
5058
|
-
|
5059
|
-
|
5060
|
-
while (t !== EOL && t !== EOF) {
|
5061
|
-
a.push(t);
|
5062
|
-
t = token();
|
5063
|
-
}
|
5064
|
-
if (f && !(a = f(a, n++))) continue;
|
5065
|
-
rows.push(a);
|
5222
|
+
function formatValue(text) {
|
5223
|
+
return reFormat.test(text) ? '"' + text.replace(/\"/g, '""') + '"' : text;
|
5066
5224
|
}
|
5067
|
-
return
|
5068
|
-
};
|
5069
|
-
d3.csv.format = function(rows) {
|
5070
|
-
return rows.map(d3_csv_formatRow).join("\n");
|
5071
|
-
};
|
5072
|
-
function d3_csv_formatRow(row) {
|
5073
|
-
return row.map(d3_csv_formatValue).join(",");
|
5074
|
-
}
|
5075
|
-
function d3_csv_formatValue(text) {
|
5076
|
-
return /[",\n]/.test(text) ? '"' + text.replace(/\"/g, '""') + '"' : text;
|
5225
|
+
return dsv;
|
5077
5226
|
}
|
5227
|
+
d3.csv = d3_dsv(",", "text/csv");
|
5228
|
+
d3.tsv = d3_dsv("\t", "text/tab-separated-values");
|
5078
5229
|
d3.geo = {};
|
5079
5230
|
var d3_geo_radians = Math.PI / 180;
|
5080
5231
|
d3.geo.azimuthal = function() {
|
@@ -6273,7 +6424,7 @@
|
|
6273
6424
|
};
|
6274
6425
|
}
|
6275
6426
|
d3.time = {};
|
6276
|
-
var d3_time = Date;
|
6427
|
+
var d3_time = Date, d3_time_daySymbols = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ];
|
6277
6428
|
function d3_time_utc() {
|
6278
6429
|
this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);
|
6279
6430
|
}
|
@@ -6340,6 +6491,11 @@
|
|
6340
6491
|
}
|
6341
6492
|
};
|
6342
6493
|
var d3_time_prototype = Date.prototype;
|
6494
|
+
var d3_time_formatDateTime = "%a %b %e %H:%M:%S %Y", d3_time_formatDate = "%m/%d/%y", d3_time_formatTime = "%H:%M:%S";
|
6495
|
+
var d3_time_days = d3_time_daySymbols, d3_time_dayAbbreviations = d3_time_days.map(d3_time_formatAbbreviate), d3_time_months = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ], d3_time_monthAbbreviations = d3_time_months.map(d3_time_formatAbbreviate);
|
6496
|
+
function d3_time_formatAbbreviate(name) {
|
6497
|
+
return name.substring(0, 3);
|
6498
|
+
}
|
6343
6499
|
d3.time.format = function(template) {
|
6344
6500
|
var n = template.length;
|
6345
6501
|
function format(date) {
|
@@ -6389,21 +6545,30 @@
|
|
6389
6545
|
}
|
6390
6546
|
return j;
|
6391
6547
|
}
|
6548
|
+
function d3_time_formatRe(names) {
|
6549
|
+
return new RegExp("^(?:" + names.map(d3.requote).join("|") + ")", "i");
|
6550
|
+
}
|
6551
|
+
function d3_time_formatLookup(names) {
|
6552
|
+
var map = new d3_Map, i = -1, n = names.length;
|
6553
|
+
while (++i < n) map.set(names[i].toLowerCase(), i);
|
6554
|
+
return map;
|
6555
|
+
}
|
6392
6556
|
var d3_time_zfill2 = d3.format("02d"), d3_time_zfill3 = d3.format("03d"), d3_time_zfill4 = d3.format("04d"), d3_time_sfill2 = d3.format("2d");
|
6557
|
+
var d3_time_dayRe = d3_time_formatRe(d3_time_days), d3_time_dayAbbrevRe = d3_time_formatRe(d3_time_dayAbbreviations), d3_time_monthRe = d3_time_formatRe(d3_time_months), d3_time_monthLookup = d3_time_formatLookup(d3_time_months), d3_time_monthAbbrevRe = d3_time_formatRe(d3_time_monthAbbreviations), d3_time_monthAbbrevLookup = d3_time_formatLookup(d3_time_monthAbbreviations);
|
6393
6558
|
var d3_time_formats = {
|
6394
6559
|
a: function(d) {
|
6395
|
-
return
|
6560
|
+
return d3_time_dayAbbreviations[d.getDay()];
|
6396
6561
|
},
|
6397
6562
|
A: function(d) {
|
6398
|
-
return
|
6563
|
+
return d3_time_days[d.getDay()];
|
6399
6564
|
},
|
6400
6565
|
b: function(d) {
|
6401
|
-
return
|
6566
|
+
return d3_time_monthAbbreviations[d.getMonth()];
|
6402
6567
|
},
|
6403
6568
|
B: function(d) {
|
6404
6569
|
return d3_time_months[d.getMonth()];
|
6405
6570
|
},
|
6406
|
-
c: d3.time.format(
|
6571
|
+
c: d3.time.format(d3_time_formatDateTime),
|
6407
6572
|
d: function(d) {
|
6408
6573
|
return d3_time_zfill2(d.getDate());
|
6409
6574
|
},
|
@@ -6443,8 +6608,8 @@
|
|
6443
6608
|
W: function(d) {
|
6444
6609
|
return d3_time_zfill2(d3.time.mondayOfYear(d));
|
6445
6610
|
},
|
6446
|
-
x: d3.time.format(
|
6447
|
-
X: d3.time.format(
|
6611
|
+
x: d3.time.format(d3_time_formatDate),
|
6612
|
+
X: d3.time.format(d3_time_formatTime),
|
6448
6613
|
y: function(d) {
|
6449
6614
|
return d3_time_zfill2(d.getFullYear() % 100);
|
6450
6615
|
},
|
@@ -6477,53 +6642,25 @@
|
|
6477
6642
|
Y: d3_time_parseFullYear
|
6478
6643
|
};
|
6479
6644
|
function d3_time_parseWeekdayAbbrev(date, string, i) {
|
6480
|
-
|
6645
|
+
d3_time_dayAbbrevRe.lastIndex = 0;
|
6646
|
+
var n = d3_time_dayAbbrevRe.exec(string.substring(i));
|
6647
|
+
return n ? i += n[0].length : -1;
|
6481
6648
|
}
|
6482
6649
|
function d3_time_parseWeekday(date, string, i) {
|
6483
|
-
|
6484
|
-
var n =
|
6650
|
+
d3_time_dayRe.lastIndex = 0;
|
6651
|
+
var n = d3_time_dayRe.exec(string.substring(i));
|
6485
6652
|
return n ? i += n[0].length : -1;
|
6486
6653
|
}
|
6487
|
-
var d3_time_weekdayAbbrevRe = /^(?:sun|mon|tue|wed|thu|fri|sat)/i, d3_time_weekdayRe = /^(?:Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday)/i, d3_time_weekdays = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ];
|
6488
6654
|
function d3_time_parseMonthAbbrev(date, string, i) {
|
6489
|
-
|
6490
|
-
|
6491
|
-
|
6492
|
-
|
6493
|
-
jan: 0,
|
6494
|
-
feb: 1,
|
6495
|
-
mar: 2,
|
6496
|
-
apr: 3,
|
6497
|
-
may: 4,
|
6498
|
-
jun: 5,
|
6499
|
-
jul: 6,
|
6500
|
-
aug: 7,
|
6501
|
-
sep: 8,
|
6502
|
-
oct: 9,
|
6503
|
-
nov: 10,
|
6504
|
-
dec: 11
|
6505
|
-
});
|
6655
|
+
d3_time_monthAbbrevRe.lastIndex = 0;
|
6656
|
+
var n = d3_time_monthAbbrevRe.exec(string.substring(i));
|
6657
|
+
return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i += n[0].length) : -1;
|
6658
|
+
}
|
6506
6659
|
function d3_time_parseMonth(date, string, i) {
|
6507
6660
|
d3_time_monthRe.lastIndex = 0;
|
6508
|
-
var n = d3_time_monthRe.exec(string.substring(i
|
6661
|
+
var n = d3_time_monthRe.exec(string.substring(i));
|
6509
6662
|
return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i += n[0].length) : -1;
|
6510
6663
|
}
|
6511
|
-
var d3_time_monthRe = /^(?:January|February|March|April|May|June|July|August|September|October|November|December)/ig;
|
6512
|
-
var d3_time_monthLookup = d3.map({
|
6513
|
-
january: 0,
|
6514
|
-
february: 1,
|
6515
|
-
march: 2,
|
6516
|
-
april: 3,
|
6517
|
-
may: 4,
|
6518
|
-
june: 5,
|
6519
|
-
july: 6,
|
6520
|
-
august: 7,
|
6521
|
-
september: 8,
|
6522
|
-
october: 9,
|
6523
|
-
november: 10,
|
6524
|
-
december: 11
|
6525
|
-
});
|
6526
|
-
var d3_time_months = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];
|
6527
6664
|
function d3_time_parseLocaleFull(date, string, i) {
|
6528
6665
|
return d3_time_parse(date, d3_time_formats.c.toString(), string, i);
|
6529
6666
|
}
|
@@ -6576,7 +6713,7 @@
|
|
6576
6713
|
var n = d3_time_numberRe.exec(string.substring(i, i + 3));
|
6577
6714
|
return n ? (date.L = +n[0], i += n[0].length) : -1;
|
6578
6715
|
}
|
6579
|
-
var d3_time_numberRe =
|
6716
|
+
var d3_time_numberRe = /^\s*\d+/;
|
6580
6717
|
function d3_time_parseAmPm(date, string, i) {
|
6581
6718
|
var n = d3_time_amPmLookup.get(string.substring(i, i += 2).toLowerCase());
|
6582
6719
|
return n == null ? -1 : (date.p = n, i);
|
@@ -6726,7 +6863,7 @@
|
|
6726
6863
|
var year = d3.time.year(date);
|
6727
6864
|
return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);
|
6728
6865
|
};
|
6729
|
-
|
6866
|
+
d3_time_daySymbols.forEach(function(day, i) {
|
6730
6867
|
day = day.toLowerCase();
|
6731
6868
|
i = 7 - i;
|
6732
6869
|
var interval = d3.time[day] = d3_time_interval(function(date) {
|
@@ -6784,8 +6921,9 @@
|
|
6784
6921
|
return scale;
|
6785
6922
|
};
|
6786
6923
|
scale.nice = function(m) {
|
6787
|
-
|
6788
|
-
|
6924
|
+
return scale.domain(d3_scale_nice(scale.domain(), function() {
|
6925
|
+
return m;
|
6926
|
+
}));
|
6789
6927
|
};
|
6790
6928
|
scale.ticks = function(m, k) {
|
6791
6929
|
var extent = d3_time_scaleExtent(scale.domain());
|