d3_rails 3.4.13 → 3.5.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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/d3.js +354 -143
- data/app/assets/javascripts/d3.min.js +5 -5
- data/lib/d3_rails/version.rb +1 -1
- metadata +2 -3
- data/tasks/gem.thor +0 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a3c1b5612085cc931ddb1a304812dca6b03ab907
|
4
|
+
data.tar.gz: 24def8bb3a67b29435e956781aa8141b39d4632a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad5e60edf6504a84bf5135e3344599b5b4ab49dd2fae46cd992706f0d9f9d7646116b6857e2ddef30e749451d6bf880c8080f9a15a5bb87ce92d1fe7728b616d
|
7
|
+
data.tar.gz: 96203f6f6167d24980683526f6efaa141fa568d8351ec350b1a2c30bd740b612b42130b0aec9e4d26232b5c588c7dfa8a69d174287b7c6ebf607a0df3687480a
|
@@ -1,6 +1,6 @@
|
|
1
1
|
!function() {
|
2
2
|
var d3 = {
|
3
|
-
version: "3.
|
3
|
+
version: "3.5.0"
|
4
4
|
};
|
5
5
|
if (!Date.now) Date.now = function() {
|
6
6
|
return +new Date();
|
@@ -42,10 +42,16 @@
|
|
42
42
|
d3.min = function(array, f) {
|
43
43
|
var i = -1, n = array.length, a, b;
|
44
44
|
if (arguments.length === 1) {
|
45
|
-
while (++i < n
|
45
|
+
while (++i < n) if ((b = array[i]) != null && b >= b) {
|
46
|
+
a = b;
|
47
|
+
break;
|
48
|
+
}
|
46
49
|
while (++i < n) if ((b = array[i]) != null && a > b) a = b;
|
47
50
|
} else {
|
48
|
-
while (++i < n
|
51
|
+
while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {
|
52
|
+
a = b;
|
53
|
+
break;
|
54
|
+
}
|
49
55
|
while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;
|
50
56
|
}
|
51
57
|
return a;
|
@@ -53,10 +59,16 @@
|
|
53
59
|
d3.max = function(array, f) {
|
54
60
|
var i = -1, n = array.length, a, b;
|
55
61
|
if (arguments.length === 1) {
|
56
|
-
while (++i < n
|
62
|
+
while (++i < n) if ((b = array[i]) != null && b >= b) {
|
63
|
+
a = b;
|
64
|
+
break;
|
65
|
+
}
|
57
66
|
while (++i < n) if ((b = array[i]) != null && b > a) a = b;
|
58
67
|
} else {
|
59
|
-
while (++i < n
|
68
|
+
while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {
|
69
|
+
a = b;
|
70
|
+
break;
|
71
|
+
}
|
60
72
|
while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;
|
61
73
|
}
|
62
74
|
return a;
|
@@ -64,13 +76,19 @@
|
|
64
76
|
d3.extent = function(array, f) {
|
65
77
|
var i = -1, n = array.length, a, b, c;
|
66
78
|
if (arguments.length === 1) {
|
67
|
-
while (++i < n
|
79
|
+
while (++i < n) if ((b = array[i]) != null && b >= b) {
|
80
|
+
a = c = b;
|
81
|
+
break;
|
82
|
+
}
|
68
83
|
while (++i < n) if ((b = array[i]) != null) {
|
69
84
|
if (a > b) a = b;
|
70
85
|
if (c < b) c = b;
|
71
86
|
}
|
72
87
|
} else {
|
73
|
-
while (++i < n
|
88
|
+
while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {
|
89
|
+
a = c = b;
|
90
|
+
break;
|
91
|
+
}
|
74
92
|
while (++i < n) if ((b = f.call(array, array[i], i)) != null) {
|
75
93
|
if (a > b) a = b;
|
76
94
|
if (c < b) c = b;
|
@@ -100,7 +118,7 @@
|
|
100
118
|
} else {
|
101
119
|
while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;
|
102
120
|
}
|
103
|
-
|
121
|
+
if (j) return s / j;
|
104
122
|
};
|
105
123
|
d3.quantile = function(values, p) {
|
106
124
|
var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;
|
@@ -113,7 +131,7 @@
|
|
113
131
|
} else {
|
114
132
|
while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);
|
115
133
|
}
|
116
|
-
|
134
|
+
if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);
|
117
135
|
};
|
118
136
|
function d3_bisector(compare) {
|
119
137
|
return {
|
@@ -145,11 +163,15 @@
|
|
145
163
|
return d3_ascending(f(d), x);
|
146
164
|
} : f);
|
147
165
|
};
|
148
|
-
d3.shuffle = function(array) {
|
149
|
-
|
166
|
+
d3.shuffle = function(array, i0, i1) {
|
167
|
+
if ((m = arguments.length) < 3) {
|
168
|
+
i1 = array.length;
|
169
|
+
if (m < 2) i0 = 0;
|
170
|
+
}
|
171
|
+
var m = i1 - i0, t, i;
|
150
172
|
while (m) {
|
151
173
|
i = Math.random() * m-- | 0;
|
152
|
-
t = array[m], array[m] = array[i], array[i] = t;
|
174
|
+
t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;
|
153
175
|
}
|
154
176
|
return array;
|
155
177
|
};
|
@@ -237,11 +259,18 @@
|
|
237
259
|
});
|
238
260
|
}
|
239
261
|
}
|
240
|
-
d3.map = function(object) {
|
262
|
+
d3.map = function(object, f) {
|
241
263
|
var map = new d3_Map();
|
242
|
-
if (object instanceof d3_Map)
|
243
|
-
|
244
|
-
|
264
|
+
if (object instanceof d3_Map) {
|
265
|
+
object.forEach(function(key, value) {
|
266
|
+
map.set(key, value);
|
267
|
+
});
|
268
|
+
} else if (Array.isArray(object)) {
|
269
|
+
var i = -1, n = object.length, o;
|
270
|
+
if (arguments.length === 1) while (++i < n) map.set(i, object[i]); else while (++i < n) map.set(f.call(object, o = object[i], i), o);
|
271
|
+
} else {
|
272
|
+
for (var key in object) map.set(key, object[key]);
|
273
|
+
}
|
245
274
|
return map;
|
246
275
|
};
|
247
276
|
function d3_Map() {
|
@@ -746,11 +775,12 @@
|
|
746
775
|
});
|
747
776
|
};
|
748
777
|
d3_selectionPrototype.remove = function() {
|
749
|
-
return this.each(
|
750
|
-
var parent = this.parentNode;
|
751
|
-
if (parent) parent.removeChild(this);
|
752
|
-
});
|
778
|
+
return this.each(d3_selectionRemove);
|
753
779
|
};
|
780
|
+
function d3_selectionRemove() {
|
781
|
+
var parent = this.parentNode;
|
782
|
+
if (parent) parent.removeChild(this);
|
783
|
+
}
|
754
784
|
d3_selectionPrototype.data = function(value, key) {
|
755
785
|
var i = -1, n = this.length, group, node;
|
756
786
|
if (!arguments.length) {
|
@@ -959,8 +989,8 @@
|
|
959
989
|
return node;
|
960
990
|
};
|
961
991
|
}
|
962
|
-
d3_selectionPrototype.transition = function() {
|
963
|
-
var id = d3_transitionInheritId || ++d3_transitionId, subgroups = [], subgroup, node, transition = d3_transitionInherit || {
|
992
|
+
d3_selectionPrototype.transition = function(name) {
|
993
|
+
var id = d3_transitionInheritId || ++d3_transitionId, ns = d3_transitionNamespace(name), subgroups = [], subgroup, node, transition = d3_transitionInherit || {
|
964
994
|
time: Date.now(),
|
965
995
|
ease: d3_ease_cubicInOut,
|
966
996
|
delay: 0,
|
@@ -969,17 +999,21 @@
|
|
969
999
|
for (var j = -1, m = this.length; ++j < m; ) {
|
970
1000
|
subgroups.push(subgroup = []);
|
971
1001
|
for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
|
972
|
-
if (node = group[i]) d3_transitionNode(node, i, id, transition);
|
1002
|
+
if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);
|
973
1003
|
subgroup.push(node);
|
974
1004
|
}
|
975
1005
|
}
|
976
|
-
return d3_transition(subgroups, id);
|
1006
|
+
return d3_transition(subgroups, ns, id);
|
977
1007
|
};
|
978
|
-
d3_selectionPrototype.interrupt = function() {
|
979
|
-
|
1008
|
+
d3_selectionPrototype.interrupt = function(name) {
|
1009
|
+
var ns = d3_transitionNamespace(name);
|
1010
|
+
return this.each(function() {
|
1011
|
+
var lock = this[ns];
|
1012
|
+
if (lock) ++lock.active;
|
1013
|
+
});
|
980
1014
|
};
|
981
|
-
function d3_selection_interrupt() {
|
982
|
-
var lock =
|
1015
|
+
function d3_selection_interrupt(that) {
|
1016
|
+
var lock = that.__transition__;
|
983
1017
|
if (lock) ++lock.active;
|
984
1018
|
}
|
985
1019
|
d3.select = function(node) {
|
@@ -1075,9 +1109,9 @@
|
|
1075
1109
|
w.on(name, null);
|
1076
1110
|
if (d3_event_dragSelect) style[d3_event_dragSelect] = select;
|
1077
1111
|
if (suppressClick) {
|
1078
|
-
|
1112
|
+
var off = function() {
|
1079
1113
|
w.on(click, null);
|
1080
|
-
}
|
1114
|
+
};
|
1081
1115
|
w.on(click, function() {
|
1082
1116
|
d3_eventPreventDefault();
|
1083
1117
|
off();
|
@@ -1190,7 +1224,7 @@
|
|
1190
1224
|
return point;
|
1191
1225
|
}) : [];
|
1192
1226
|
};
|
1193
|
-
var π = Math.PI, τ = 2 * π, halfπ = π / 2,
|
1227
|
+
var ε = 1e-6, ε2 = ε * ε, π = Math.PI, τ = 2 * π, τε = τ - ε, halfπ = π / 2, d3_radians = π / 180, d3_degrees = 180 / π;
|
1194
1228
|
function d3_sgn(x) {
|
1195
1229
|
return x > 0 ? 1 : x < 0 ? -1 : 0;
|
1196
1230
|
}
|
@@ -1235,7 +1269,7 @@
|
|
1235
1269
|
x: 0,
|
1236
1270
|
y: 0,
|
1237
1271
|
k: 1
|
1238
|
-
}, translate0, center0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, mousedown = "mousedown.zoom", mousemove = "mousemove.zoom", mouseup = "mouseup.zoom", mousewheelTimer, touchstart = "touchstart.zoom", touchtime, event = d3_eventDispatch(zoom, "zoomstart", "zoom", "zoomend"), x0, x1, y0, y1;
|
1272
|
+
}, translate0, center0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, duration = 250, zooming = 0, mousedown = "mousedown.zoom", mousemove = "mousemove.zoom", mouseup = "mouseup.zoom", mousewheelTimer, touchstart = "touchstart.zoom", touchtime, event = d3_eventDispatch(zoom, "zoomstart", "zoom", "zoomend"), x0, x1, y0, y1;
|
1239
1273
|
function zoom(g) {
|
1240
1274
|
g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + ".zoom", mousewheeled).on("dblclick.zoom", dblclicked).on(touchstart, touchstarted);
|
1241
1275
|
}
|
@@ -1251,7 +1285,7 @@
|
|
1251
1285
|
};
|
1252
1286
|
zoomstarted(dispatch);
|
1253
1287
|
}).tween("zoom:zoom", function() {
|
1254
|
-
var dx = size[0], dy = size[1], cx = dx / 2, cy = dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]);
|
1288
|
+
var dx = size[0], dy = size[1], cx = center0 ? center0[0] : dx / 2, cy = center0 ? center0[1] : dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]);
|
1255
1289
|
return function(t) {
|
1256
1290
|
var l = i(t), k = dx / l[2];
|
1257
1291
|
this.__chart__ = view = {
|
@@ -1261,6 +1295,8 @@
|
|
1261
1295
|
};
|
1262
1296
|
zoomed(dispatch);
|
1263
1297
|
};
|
1298
|
+
}).each("interrupt.zoom", function() {
|
1299
|
+
zoomended(dispatch);
|
1264
1300
|
}).each("end.zoom", function() {
|
1265
1301
|
zoomended(dispatch);
|
1266
1302
|
});
|
@@ -1307,6 +1343,11 @@
|
|
1307
1343
|
size = _ && [ +_[0], +_[1] ];
|
1308
1344
|
return zoom;
|
1309
1345
|
};
|
1346
|
+
zoom.duration = function(_) {
|
1347
|
+
if (!arguments.length) return duration;
|
1348
|
+
duration = +_;
|
1349
|
+
return zoom;
|
1350
|
+
};
|
1310
1351
|
zoom.x = function(z) {
|
1311
1352
|
if (!arguments.length) return x1;
|
1312
1353
|
x1 = z;
|
@@ -1343,6 +1384,18 @@
|
|
1343
1384
|
view.x += p[0] - l[0];
|
1344
1385
|
view.y += p[1] - l[1];
|
1345
1386
|
}
|
1387
|
+
function zoomTo(that, p, l, k) {
|
1388
|
+
that.__chart__ = {
|
1389
|
+
x: view.x,
|
1390
|
+
y: view.y,
|
1391
|
+
k: view.k
|
1392
|
+
};
|
1393
|
+
scaleTo(Math.pow(2, k));
|
1394
|
+
translateTo(center0 = p, l);
|
1395
|
+
that = d3.select(that);
|
1396
|
+
if (duration > 0) that = that.transition().duration(duration);
|
1397
|
+
that.call(zoom.event);
|
1398
|
+
}
|
1346
1399
|
function rescale() {
|
1347
1400
|
if (x1) x1.domain(x0.range().map(function(x) {
|
1348
1401
|
return (x - view.x) / view.k;
|
@@ -1352,7 +1405,7 @@
|
|
1352
1405
|
}).map(y0.invert));
|
1353
1406
|
}
|
1354
1407
|
function zoomstarted(dispatch) {
|
1355
|
-
dispatch({
|
1408
|
+
if (!zooming++) dispatch({
|
1356
1409
|
type: "zoomstart"
|
1357
1410
|
});
|
1358
1411
|
}
|
@@ -1365,13 +1418,14 @@
|
|
1365
1418
|
});
|
1366
1419
|
}
|
1367
1420
|
function zoomended(dispatch) {
|
1368
|
-
dispatch({
|
1421
|
+
if (!--zooming) dispatch({
|
1369
1422
|
type: "zoomend"
|
1370
1423
|
});
|
1424
|
+
center0 = null;
|
1371
1425
|
}
|
1372
1426
|
function mousedowned() {
|
1373
1427
|
var that = this, target = d3.event.target, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress();
|
1374
|
-
d3_selection_interrupt
|
1428
|
+
d3_selection_interrupt(that);
|
1375
1429
|
zoomstarted(dispatch);
|
1376
1430
|
function moved() {
|
1377
1431
|
dragged = 1;
|
@@ -1386,7 +1440,6 @@
|
|
1386
1440
|
}
|
1387
1441
|
function touchstarted() {
|
1388
1442
|
var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = ".zoom-" + d3.event.changedTouches[0].identifier, touchmove = "touchmove" + zoomName, touchend = "touchend" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress();
|
1389
|
-
d3_selection_interrupt.call(that);
|
1390
1443
|
started();
|
1391
1444
|
zoomstarted(dispatch);
|
1392
1445
|
subject.on(mousedown, null).on(touchstart, started);
|
@@ -1409,11 +1462,9 @@
|
|
1409
1462
|
var touches = relocate(), now = Date.now();
|
1410
1463
|
if (touches.length === 1) {
|
1411
1464
|
if (now - touchtime < 500) {
|
1412
|
-
var p = touches[0]
|
1413
|
-
|
1414
|
-
translateTo(p, l);
|
1465
|
+
var p = touches[0];
|
1466
|
+
zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);
|
1415
1467
|
d3_eventPreventDefault();
|
1416
|
-
zoomed(dispatch);
|
1417
1468
|
}
|
1418
1469
|
touchtime = now;
|
1419
1470
|
} else if (touches.length > 1) {
|
@@ -1423,6 +1474,7 @@
|
|
1423
1474
|
}
|
1424
1475
|
function moved() {
|
1425
1476
|
var touches = d3.touches(that), p0, l0, p1, l1;
|
1477
|
+
d3_selection_interrupt(that);
|
1426
1478
|
for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {
|
1427
1479
|
p1 = touches[i];
|
1428
1480
|
if (l1 = locations0[p1.identifier]) {
|
@@ -1459,7 +1511,7 @@
|
|
1459
1511
|
function mousewheeled() {
|
1460
1512
|
var dispatch = event.of(this, arguments);
|
1461
1513
|
if (mousewheelTimer) clearTimeout(mousewheelTimer); else translate0 = location(center0 = center || d3.mouse(this)),
|
1462
|
-
d3_selection_interrupt
|
1514
|
+
d3_selection_interrupt(this), zoomstarted(dispatch);
|
1463
1515
|
mousewheelTimer = setTimeout(function() {
|
1464
1516
|
mousewheelTimer = null;
|
1465
1517
|
zoomended(dispatch);
|
@@ -1470,12 +1522,8 @@
|
|
1470
1522
|
zoomed(dispatch);
|
1471
1523
|
}
|
1472
1524
|
function dblclicked() {
|
1473
|
-
var
|
1474
|
-
|
1475
|
-
scaleTo(Math.pow(2, d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1));
|
1476
|
-
translateTo(p, l);
|
1477
|
-
zoomed(dispatch);
|
1478
|
-
zoomended(dispatch);
|
1525
|
+
var p = d3.mouse(this), k = Math.log(view.k) / Math.LN2;
|
1526
|
+
zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);
|
1479
1527
|
}
|
1480
1528
|
return d3.rebind(zoom, event, "on");
|
1481
1529
|
};
|
@@ -3131,6 +3179,15 @@
|
|
3131
3179
|
d3_geo_centroidPointXYZ(x0, y0, z0);
|
3132
3180
|
}
|
3133
3181
|
}
|
3182
|
+
function d3_geo_compose(a, b) {
|
3183
|
+
function compose(x, y) {
|
3184
|
+
return x = a(x, y), b(x[0], x[1]);
|
3185
|
+
}
|
3186
|
+
if (a.invert && b.invert) compose.invert = function(x, y) {
|
3187
|
+
return x = b.invert(x, y), x && a.invert(x[0], x[1]);
|
3188
|
+
};
|
3189
|
+
return compose;
|
3190
|
+
}
|
3134
3191
|
function d3_true() {
|
3135
3192
|
return true;
|
3136
3193
|
}
|
@@ -3729,15 +3786,6 @@
|
|
3729
3786
|
return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];
|
3730
3787
|
}
|
3731
3788
|
}
|
3732
|
-
function d3_geo_compose(a, b) {
|
3733
|
-
function compose(x, y) {
|
3734
|
-
return x = a(x, y), b(x[0], x[1]);
|
3735
|
-
}
|
3736
|
-
if (a.invert && b.invert) compose.invert = function(x, y) {
|
3737
|
-
return x = b.invert(x, y), x && a.invert(x[0], x[1]);
|
3738
|
-
};
|
3739
|
-
return compose;
|
3740
|
-
}
|
3741
3789
|
function d3_geo_conic(projectAt) {
|
3742
3790
|
var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1);
|
3743
3791
|
p.parallels = function(_) {
|
@@ -4009,7 +4057,7 @@
|
|
4009
4057
|
result: d3_noop
|
4010
4058
|
};
|
4011
4059
|
function point(x, y) {
|
4012
|
-
context.moveTo(x, y);
|
4060
|
+
context.moveTo(x + pointRadius, y);
|
4013
4061
|
context.arc(x, y, pointRadius, 0, τ);
|
4014
4062
|
}
|
4015
4063
|
function pointLineStart(x, y) {
|
@@ -5517,11 +5565,11 @@
|
|
5517
5565
|
}
|
5518
5566
|
}
|
5519
5567
|
function insertChild(n, d, x, y, x1, y1, x2, y2) {
|
5520
|
-
var
|
5568
|
+
var xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym, i = below << 1 | right;
|
5521
5569
|
n.leaf = false;
|
5522
5570
|
n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());
|
5523
|
-
if (right) x1 =
|
5524
|
-
if (
|
5571
|
+
if (right) x1 = xm; else x2 = xm;
|
5572
|
+
if (below) y1 = ym; else y2 = ym;
|
5525
5573
|
insert(n, d, x, y, x1, y1, x2, y2);
|
5526
5574
|
}
|
5527
5575
|
var root = d3_geom_quadtreeNode();
|
@@ -5531,6 +5579,9 @@
|
|
5531
5579
|
root.visit = function(f) {
|
5532
5580
|
d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);
|
5533
5581
|
};
|
5582
|
+
root.find = function(point) {
|
5583
|
+
return d3_geom_quadtreeFind(root, point[0], point[1], x1_, y1_, x2_, y2_);
|
5584
|
+
};
|
5534
5585
|
i = -1;
|
5535
5586
|
if (x1 == null) {
|
5536
5587
|
while (++i < n) {
|
@@ -5584,6 +5635,42 @@
|
|
5584
5635
|
if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);
|
5585
5636
|
}
|
5586
5637
|
}
|
5638
|
+
function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {
|
5639
|
+
var minDistance2 = Infinity, closestPoint;
|
5640
|
+
(function find(node, x1, y1, x2, y2) {
|
5641
|
+
if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return;
|
5642
|
+
if (point = node.point) {
|
5643
|
+
var point, dx = x - point[0], dy = y - point[1], distance2 = dx * dx + dy * dy;
|
5644
|
+
if (distance2 < minDistance2) {
|
5645
|
+
var distance = Math.sqrt(minDistance2 = distance2);
|
5646
|
+
x0 = x - distance, y0 = y - distance;
|
5647
|
+
x3 = x + distance, y3 = y + distance;
|
5648
|
+
closestPoint = point;
|
5649
|
+
}
|
5650
|
+
}
|
5651
|
+
var children = node.nodes, xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym;
|
5652
|
+
for (var i = below << 1 | right, j = i + 4; i < j; ++i) {
|
5653
|
+
if (node = children[i & 3]) switch (i & 3) {
|
5654
|
+
case 0:
|
5655
|
+
find(node, x1, y1, xm, ym);
|
5656
|
+
break;
|
5657
|
+
|
5658
|
+
case 1:
|
5659
|
+
find(node, xm, y1, x2, ym);
|
5660
|
+
break;
|
5661
|
+
|
5662
|
+
case 2:
|
5663
|
+
find(node, x1, ym, xm, y2);
|
5664
|
+
break;
|
5665
|
+
|
5666
|
+
case 3:
|
5667
|
+
find(node, xm, ym, x2, y2);
|
5668
|
+
break;
|
5669
|
+
}
|
5670
|
+
}
|
5671
|
+
})(root, x0, y0, x3, y3);
|
5672
|
+
return closestPoint;
|
5673
|
+
}
|
5587
5674
|
d3.interpolateRgb = d3_interpolateRgb;
|
5588
5675
|
function d3_interpolateRgb(a, b) {
|
5589
5676
|
a = d3.rgb(a);
|
@@ -6475,49 +6562,50 @@
|
|
6475
6562
|
return d3_layout_hierarchyRebind(partition, hierarchy);
|
6476
6563
|
};
|
6477
6564
|
d3.layout.pie = function() {
|
6478
|
-
var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle =
|
6565
|
+
var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ, padAngle = 0;
|
6479
6566
|
function pie(data) {
|
6480
|
-
var values = data.map(function(d, i) {
|
6567
|
+
var n = data.length, values = data.map(function(d, i) {
|
6481
6568
|
return +value.call(pie, d, i);
|
6482
|
-
});
|
6483
|
-
var a = +(typeof startAngle === "function" ? startAngle.apply(this, arguments) : startAngle);
|
6484
|
-
var k = ((typeof endAngle === "function" ? endAngle.apply(this, arguments) : endAngle) - a) / d3.sum(values);
|
6485
|
-
var index = d3.range(data.length);
|
6569
|
+
}), a = +(typeof startAngle === "function" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === "function" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === "function" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), k = (da - n * pa) / d3.sum(values), index = d3.range(n), arcs = [], v;
|
6486
6570
|
if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {
|
6487
6571
|
return values[j] - values[i];
|
6488
6572
|
} : function(i, j) {
|
6489
6573
|
return sort(data[i], data[j]);
|
6490
6574
|
});
|
6491
|
-
var arcs = [];
|
6492
6575
|
index.forEach(function(i) {
|
6493
|
-
var d;
|
6494
6576
|
arcs[i] = {
|
6495
6577
|
data: data[i],
|
6496
|
-
value:
|
6578
|
+
value: v = values[i],
|
6497
6579
|
startAngle: a,
|
6498
|
-
endAngle: a +=
|
6580
|
+
endAngle: a += v * k + pa,
|
6581
|
+
padAngle: p
|
6499
6582
|
};
|
6500
6583
|
});
|
6501
6584
|
return arcs;
|
6502
6585
|
}
|
6503
|
-
pie.value = function(
|
6586
|
+
pie.value = function(_) {
|
6504
6587
|
if (!arguments.length) return value;
|
6505
|
-
value =
|
6588
|
+
value = _;
|
6506
6589
|
return pie;
|
6507
6590
|
};
|
6508
|
-
pie.sort = function(
|
6591
|
+
pie.sort = function(_) {
|
6509
6592
|
if (!arguments.length) return sort;
|
6510
|
-
sort =
|
6593
|
+
sort = _;
|
6511
6594
|
return pie;
|
6512
6595
|
};
|
6513
|
-
pie.startAngle = function(
|
6596
|
+
pie.startAngle = function(_) {
|
6514
6597
|
if (!arguments.length) return startAngle;
|
6515
|
-
startAngle =
|
6598
|
+
startAngle = _;
|
6516
6599
|
return pie;
|
6517
6600
|
};
|
6518
|
-
pie.endAngle = function(
|
6601
|
+
pie.endAngle = function(_) {
|
6519
6602
|
if (!arguments.length) return endAngle;
|
6520
|
-
endAngle =
|
6603
|
+
endAngle = _;
|
6604
|
+
return pie;
|
6605
|
+
};
|
6606
|
+
pie.padAngle = function(_) {
|
6607
|
+
if (!arguments.length) return padAngle;
|
6608
|
+
padAngle = _;
|
6521
6609
|
return pie;
|
6522
6610
|
};
|
6523
6611
|
return pie;
|
@@ -7616,8 +7704,9 @@
|
|
7616
7704
|
};
|
7617
7705
|
scale.rangePoints = function(x, padding) {
|
7618
7706
|
if (arguments.length < 2) padding = 0;
|
7619
|
-
var start = x[0], stop = x[1], step =
|
7620
|
-
|
7707
|
+
var start = x[0], stop = x[1], step = domain.length < 2 ? (start = (start + stop) / 2,
|
7708
|
+
0) : (stop - start) / (domain.length - 1 + padding);
|
7709
|
+
range = steps(start + step * padding / 2, step);
|
7621
7710
|
rangeBand = 0;
|
7622
7711
|
ranger = {
|
7623
7712
|
t: "rangePoints",
|
@@ -7625,6 +7714,18 @@
|
|
7625
7714
|
};
|
7626
7715
|
return scale;
|
7627
7716
|
};
|
7717
|
+
scale.rangeRoundPoints = function(x, padding) {
|
7718
|
+
if (arguments.length < 2) padding = 0;
|
7719
|
+
var start = x[0], stop = x[1], step = domain.length < 2 ? (start = stop = Math.round((start + stop) / 2),
|
7720
|
+
0) : (stop - start) / (domain.length - 1 + padding) | 0;
|
7721
|
+
range = steps(start + Math.round(step * padding / 2 + (stop - start - (domain.length - 1 + padding) * step) / 2), step);
|
7722
|
+
rangeBand = 0;
|
7723
|
+
ranger = {
|
7724
|
+
t: "rangeRoundPoints",
|
7725
|
+
a: arguments
|
7726
|
+
};
|
7727
|
+
return scale;
|
7728
|
+
};
|
7628
7729
|
scale.rangeBands = function(x, padding, outerPadding) {
|
7629
7730
|
if (arguments.length < 2) padding = 0;
|
7630
7731
|
if (arguments.length < 3) outerPadding = padding;
|
@@ -7641,8 +7742,8 @@
|
|
7641
7742
|
scale.rangeRoundBands = function(x, padding, outerPadding) {
|
7642
7743
|
if (arguments.length < 2) padding = 0;
|
7643
7744
|
if (arguments.length < 3) outerPadding = padding;
|
7644
|
-
var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding))
|
7645
|
-
range = steps(start + Math.round(
|
7745
|
+
var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding));
|
7746
|
+
range = steps(start + Math.round((stop - start - (domain.length - padding) * step) / 2), step);
|
7646
7747
|
if (reverse) range.reverse();
|
7647
7748
|
rangeBand = Math.round(step * (1 - padding));
|
7648
7749
|
ranger = {
|
@@ -7799,12 +7900,86 @@
|
|
7799
7900
|
return identity;
|
7800
7901
|
}
|
7801
7902
|
d3.svg = {};
|
7903
|
+
function d3_zero() {
|
7904
|
+
return 0;
|
7905
|
+
}
|
7802
7906
|
d3.svg.arc = function() {
|
7803
|
-
var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;
|
7907
|
+
var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, cornerRadius = d3_zero, padRadius = d3_svg_arcAuto, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle, padAngle = d3_svg_arcPadAngle;
|
7804
7908
|
function arc() {
|
7805
|
-
var r0 = innerRadius.apply(this, arguments), r1 = outerRadius.apply(this, arguments), a0 = startAngle.apply(this, arguments)
|
7806
|
-
|
7807
|
-
|
7909
|
+
var r0 = Math.max(0, +innerRadius.apply(this, arguments)), r1 = Math.max(0, +outerRadius.apply(this, arguments)), a0 = startAngle.apply(this, arguments) - halfπ, a1 = endAngle.apply(this, arguments) - halfπ, da = Math.abs(a1 - a0), cw = a0 > a1 ? 0 : 1;
|
7910
|
+
if (r1 < r0) rc = r1, r1 = r0, r0 = rc;
|
7911
|
+
if (da >= τε) return circleSegment(r1, cw) + (r0 ? circleSegment(r0, 1 - cw) : "") + "Z";
|
7912
|
+
var rc, cr, rp, ap, p0 = 0, p1 = 0, x0, y0, x1, y1, x2, y2, x3, y3, path = [];
|
7913
|
+
if (ap = (+padAngle.apply(this, arguments) || 0) / 2) {
|
7914
|
+
rp = padRadius === d3_svg_arcAuto ? Math.sqrt(r0 * r0 + r1 * r1) : +padRadius.apply(this, arguments);
|
7915
|
+
if (!cw) p1 *= -1;
|
7916
|
+
if (r1) p1 = d3_asin(rp / r1 * Math.sin(ap));
|
7917
|
+
if (r0) p0 = d3_asin(rp / r0 * Math.sin(ap));
|
7918
|
+
}
|
7919
|
+
if (r1) {
|
7920
|
+
x0 = r1 * Math.cos(a0 + p1);
|
7921
|
+
y0 = r1 * Math.sin(a0 + p1);
|
7922
|
+
x1 = r1 * Math.cos(a1 - p1);
|
7923
|
+
y1 = r1 * Math.sin(a1 - p1);
|
7924
|
+
var l1 = Math.abs(a1 - a0 - 2 * p1) <= π ? 0 : 1;
|
7925
|
+
if (p1 && d3_svg_arcSweep(x0, y0, x1, y1) === cw ^ l1) {
|
7926
|
+
var h1 = (a0 + a1) / 2;
|
7927
|
+
x0 = r1 * Math.cos(h1);
|
7928
|
+
y0 = r1 * Math.sin(h1);
|
7929
|
+
x1 = y1 = null;
|
7930
|
+
}
|
7931
|
+
} else {
|
7932
|
+
x0 = y0 = 0;
|
7933
|
+
}
|
7934
|
+
if (r0) {
|
7935
|
+
x2 = r0 * Math.cos(a1 - p0);
|
7936
|
+
y2 = r0 * Math.sin(a1 - p0);
|
7937
|
+
x3 = r0 * Math.cos(a0 + p0);
|
7938
|
+
y3 = r0 * Math.sin(a0 + p0);
|
7939
|
+
var l0 = Math.abs(a0 - a1 + 2 * p0) <= π ? 0 : 1;
|
7940
|
+
if (p0 && d3_svg_arcSweep(x2, y2, x3, y3) === 1 - cw ^ l0) {
|
7941
|
+
var h0 = (a0 + a1) / 2;
|
7942
|
+
x2 = r0 * Math.cos(h0);
|
7943
|
+
y2 = r0 * Math.sin(h0);
|
7944
|
+
x3 = y3 = null;
|
7945
|
+
}
|
7946
|
+
} else {
|
7947
|
+
x2 = y2 = 0;
|
7948
|
+
}
|
7949
|
+
if ((rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) {
|
7950
|
+
cr = r0 < r1 ^ cw ? 0 : 1;
|
7951
|
+
var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);
|
7952
|
+
if (x1 != null) {
|
7953
|
+
var rc1 = Math.min(rc, (r1 - lc) / (kc + 1)), t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw);
|
7954
|
+
if (rc === rc1) {
|
7955
|
+
path.push("M", t30[0], "A", rc1, ",", rc1, " 0 0,", cr, " ", t30[1], "A", r1, ",", r1, " 0 ", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), ",", cw, " ", t12[1], "A", rc1, ",", rc1, " 0 0,", cr, " ", t12[0]);
|
7956
|
+
} else {
|
7957
|
+
path.push("M", t30[0], "A", rc1, ",", rc1, " 0 1,", cr, " ", t12[0]);
|
7958
|
+
}
|
7959
|
+
} else {
|
7960
|
+
path.push("M", x0, ",", y0);
|
7961
|
+
}
|
7962
|
+
if (x3 != null) {
|
7963
|
+
var rc0 = Math.min(rc, (r0 - lc) / (kc - 1)), t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw);
|
7964
|
+
if (rc === rc0) {
|
7965
|
+
path.push("L", t21[0], "A", rc0, ",", rc0, " 0 0,", cr, " ", t21[1], "A", r0, ",", r0, " 0 ", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), ",", 1 - cw, " ", t03[1], "A", rc0, ",", rc0, " 0 0,", cr, " ", t03[0]);
|
7966
|
+
} else {
|
7967
|
+
path.push("L", t21[0], "A", rc0, ",", rc0, " 0 0,", cr, " ", t03[0]);
|
7968
|
+
}
|
7969
|
+
} else {
|
7970
|
+
path.push("L", x2, ",", y2);
|
7971
|
+
}
|
7972
|
+
} else {
|
7973
|
+
path.push("M", x0, ",", y0);
|
7974
|
+
if (x1 != null) path.push("A", r1, ",", r1, " 0 ", l1, ",", cw, " ", x1, ",", y1);
|
7975
|
+
path.push("L", x2, ",", y2);
|
7976
|
+
if (x3 != null) path.push("A", r0, ",", r0, " 0 ", l0, ",", 1 - cw, " ", x3, ",", y3);
|
7977
|
+
}
|
7978
|
+
path.push("Z");
|
7979
|
+
return path.join("");
|
7980
|
+
}
|
7981
|
+
function circleSegment(r1, cw) {
|
7982
|
+
return "M0," + r1 + "A" + r1 + "," + r1 + " 0 1," + cw + " 0," + -r1 + "A" + r1 + "," + r1 + " 0 1," + cw + " 0," + r1;
|
7808
7983
|
}
|
7809
7984
|
arc.innerRadius = function(v) {
|
7810
7985
|
if (!arguments.length) return innerRadius;
|
@@ -7816,6 +7991,16 @@
|
|
7816
7991
|
outerRadius = d3_functor(v);
|
7817
7992
|
return arc;
|
7818
7993
|
};
|
7994
|
+
arc.cornerRadius = function(v) {
|
7995
|
+
if (!arguments.length) return cornerRadius;
|
7996
|
+
cornerRadius = d3_functor(v);
|
7997
|
+
return arc;
|
7998
|
+
};
|
7999
|
+
arc.padRadius = function(v) {
|
8000
|
+
if (!arguments.length) return padRadius;
|
8001
|
+
padRadius = v == d3_svg_arcAuto ? d3_svg_arcAuto : d3_functor(v);
|
8002
|
+
return arc;
|
8003
|
+
};
|
7819
8004
|
arc.startAngle = function(v) {
|
7820
8005
|
if (!arguments.length) return startAngle;
|
7821
8006
|
startAngle = d3_functor(v);
|
@@ -7826,13 +8011,18 @@
|
|
7826
8011
|
endAngle = d3_functor(v);
|
7827
8012
|
return arc;
|
7828
8013
|
};
|
8014
|
+
arc.padAngle = function(v) {
|
8015
|
+
if (!arguments.length) return padAngle;
|
8016
|
+
padAngle = d3_functor(v);
|
8017
|
+
return arc;
|
8018
|
+
};
|
7829
8019
|
arc.centroid = function() {
|
7830
|
-
var r = (innerRadius.apply(this, arguments) + outerRadius.apply(this, arguments)) / 2, a = (startAngle.apply(this, arguments) + endAngle.apply(this, arguments)) / 2
|
8020
|
+
var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - halfπ;
|
7831
8021
|
return [ Math.cos(a) * r, Math.sin(a) * r ];
|
7832
8022
|
};
|
7833
8023
|
return arc;
|
7834
8024
|
};
|
7835
|
-
var
|
8025
|
+
var d3_svg_arcAuto = "auto";
|
7836
8026
|
function d3_svg_arcInnerRadius(d) {
|
7837
8027
|
return d.innerRadius;
|
7838
8028
|
}
|
@@ -7845,6 +8035,17 @@
|
|
7845
8035
|
function d3_svg_arcEndAngle(d) {
|
7846
8036
|
return d.endAngle;
|
7847
8037
|
}
|
8038
|
+
function d3_svg_arcPadAngle(d) {
|
8039
|
+
return d && d.padAngle;
|
8040
|
+
}
|
8041
|
+
function d3_svg_arcSweep(x0, y0, x1, y1) {
|
8042
|
+
return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1;
|
8043
|
+
}
|
8044
|
+
function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {
|
8045
|
+
var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(r * r * d2 - D * D), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3;
|
8046
|
+
if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;
|
8047
|
+
return [ [ cx0 - ox, cy0 - oy ], [ cx0 * r1 / r, cy0 * r1 / r ] ];
|
8048
|
+
}
|
7848
8049
|
function d3_svg_line(projection) {
|
7849
8050
|
var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;
|
7850
8051
|
function line(data) {
|
@@ -7935,7 +8136,7 @@
|
|
7935
8136
|
return path.join("");
|
7936
8137
|
}
|
7937
8138
|
function d3_svg_lineCardinalOpen(points, tension) {
|
7938
|
-
return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1,
|
8139
|
+
return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension));
|
7939
8140
|
}
|
7940
8141
|
function d3_svg_lineCardinalClosed(points, tension) {
|
7941
8142
|
return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite((points.push(points[0]),
|
@@ -8105,7 +8306,7 @@
|
|
8105
8306
|
while (++i < n) {
|
8106
8307
|
point = points[i];
|
8107
8308
|
r = point[0];
|
8108
|
-
a = point[1]
|
8309
|
+
a = point[1] - halfπ;
|
8109
8310
|
point[0] = r * Math.cos(a);
|
8110
8311
|
point[1] = r * Math.sin(a);
|
8111
8312
|
}
|
@@ -8206,7 +8407,7 @@
|
|
8206
8407
|
return "M" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + "Z";
|
8207
8408
|
}
|
8208
8409
|
function subgroup(self, f, d, i) {
|
8209
|
-
var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i)
|
8410
|
+
var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) - halfπ, a1 = endAngle.call(self, subgroup, i) - halfπ;
|
8210
8411
|
return {
|
8211
8412
|
r: r,
|
8212
8413
|
a0: a0,
|
@@ -8296,7 +8497,7 @@
|
|
8296
8497
|
};
|
8297
8498
|
function d3_svg_diagonalRadialProjection(projection) {
|
8298
8499
|
return function() {
|
8299
|
-
var d = projection.apply(this, arguments), r = d[0], a = d[1]
|
8500
|
+
var d = projection.apply(this, arguments), r = d[0], a = d[1] - halfπ;
|
8300
8501
|
return [ r * Math.cos(a), r * Math.sin(a) ];
|
8301
8502
|
};
|
8302
8503
|
}
|
@@ -8352,8 +8553,9 @@
|
|
8352
8553
|
});
|
8353
8554
|
d3.svg.symbolTypes = d3_svg_symbols.keys();
|
8354
8555
|
var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);
|
8355
|
-
function d3_transition(groups, id) {
|
8556
|
+
function d3_transition(groups, namespace, id) {
|
8356
8557
|
d3_subclass(groups, d3_transitionPrototype);
|
8558
|
+
groups.namespace = namespace;
|
8357
8559
|
groups.id = id;
|
8358
8560
|
return groups;
|
8359
8561
|
}
|
@@ -8367,39 +8569,39 @@
|
|
8367
8569
|
};
|
8368
8570
|
d3.transition.prototype = d3_transitionPrototype;
|
8369
8571
|
d3_transitionPrototype.select = function(selector) {
|
8370
|
-
var id = this.id, subgroups = [], subgroup, subnode, node;
|
8572
|
+
var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnode, node;
|
8371
8573
|
selector = d3_selection_selector(selector);
|
8372
8574
|
for (var j = -1, m = this.length; ++j < m; ) {
|
8373
8575
|
subgroups.push(subgroup = []);
|
8374
8576
|
for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
|
8375
8577
|
if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {
|
8376
8578
|
if ("__data__" in node) subnode.__data__ = node.__data__;
|
8377
|
-
d3_transitionNode(subnode, i, id, node
|
8579
|
+
d3_transitionNode(subnode, i, ns, id, node[ns][id]);
|
8378
8580
|
subgroup.push(subnode);
|
8379
8581
|
} else {
|
8380
8582
|
subgroup.push(null);
|
8381
8583
|
}
|
8382
8584
|
}
|
8383
8585
|
}
|
8384
|
-
return d3_transition(subgroups, id);
|
8586
|
+
return d3_transition(subgroups, ns, id);
|
8385
8587
|
};
|
8386
8588
|
d3_transitionPrototype.selectAll = function(selector) {
|
8387
|
-
var id = this.id, subgroups = [], subgroup, subnodes, node, subnode, transition;
|
8589
|
+
var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnodes, node, subnode, transition;
|
8388
8590
|
selector = d3_selection_selectorAll(selector);
|
8389
8591
|
for (var j = -1, m = this.length; ++j < m; ) {
|
8390
8592
|
for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
|
8391
8593
|
if (node = group[i]) {
|
8392
|
-
transition = node
|
8594
|
+
transition = node[ns][id];
|
8393
8595
|
subnodes = selector.call(node, node.__data__, i, j);
|
8394
8596
|
subgroups.push(subgroup = []);
|
8395
8597
|
for (var k = -1, o = subnodes.length; ++k < o; ) {
|
8396
|
-
if (subnode = subnodes[k]) d3_transitionNode(subnode, k, id, transition);
|
8598
|
+
if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);
|
8397
8599
|
subgroup.push(subnode);
|
8398
8600
|
}
|
8399
8601
|
}
|
8400
8602
|
}
|
8401
8603
|
}
|
8402
|
-
return d3_transition(subgroups, id);
|
8604
|
+
return d3_transition(subgroups, ns, id);
|
8403
8605
|
};
|
8404
8606
|
d3_transitionPrototype.filter = function(filter) {
|
8405
8607
|
var subgroups = [], subgroup, group, node;
|
@@ -8412,23 +8614,23 @@
|
|
8412
8614
|
}
|
8413
8615
|
}
|
8414
8616
|
}
|
8415
|
-
return d3_transition(subgroups, this.id);
|
8617
|
+
return d3_transition(subgroups, this.namespace, this.id);
|
8416
8618
|
};
|
8417
8619
|
d3_transitionPrototype.tween = function(name, tween) {
|
8418
|
-
var id = this.id;
|
8419
|
-
if (arguments.length < 2) return this.node()
|
8620
|
+
var id = this.id, ns = this.namespace;
|
8621
|
+
if (arguments.length < 2) return this.node()[ns][id].tween.get(name);
|
8420
8622
|
return d3_selection_each(this, tween == null ? function(node) {
|
8421
|
-
node
|
8623
|
+
node[ns][id].tween.remove(name);
|
8422
8624
|
} : function(node) {
|
8423
|
-
node
|
8625
|
+
node[ns][id].tween.set(name, tween);
|
8424
8626
|
});
|
8425
8627
|
};
|
8426
8628
|
function d3_transition_tween(groups, name, value, tween) {
|
8427
|
-
var id = groups.id;
|
8629
|
+
var id = groups.id, ns = groups.namespace;
|
8428
8630
|
return d3_selection_each(groups, typeof value === "function" ? function(node, i, j) {
|
8429
|
-
node
|
8631
|
+
node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j)));
|
8430
8632
|
} : (value = tween(value), function(node) {
|
8431
|
-
node
|
8633
|
+
node[ns][id].tween.set(name, value);
|
8432
8634
|
}));
|
8433
8635
|
}
|
8434
8636
|
d3_transitionPrototype.attr = function(nameNS, value) {
|
@@ -8520,73 +8722,81 @@
|
|
8520
8722
|
};
|
8521
8723
|
}
|
8522
8724
|
d3_transitionPrototype.remove = function() {
|
8725
|
+
var ns = this.namespace;
|
8523
8726
|
return this.each("end.transition", function() {
|
8524
8727
|
var p;
|
8525
|
-
if (this.
|
8728
|
+
if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);
|
8526
8729
|
});
|
8527
8730
|
};
|
8528
8731
|
d3_transitionPrototype.ease = function(value) {
|
8529
|
-
var id = this.id;
|
8530
|
-
if (arguments.length < 1) return this.node()
|
8732
|
+
var id = this.id, ns = this.namespace;
|
8733
|
+
if (arguments.length < 1) return this.node()[ns][id].ease;
|
8531
8734
|
if (typeof value !== "function") value = d3.ease.apply(d3, arguments);
|
8532
8735
|
return d3_selection_each(this, function(node) {
|
8533
|
-
node
|
8736
|
+
node[ns][id].ease = value;
|
8534
8737
|
});
|
8535
8738
|
};
|
8536
8739
|
d3_transitionPrototype.delay = function(value) {
|
8537
|
-
var id = this.id;
|
8538
|
-
if (arguments.length < 1) return this.node()
|
8740
|
+
var id = this.id, ns = this.namespace;
|
8741
|
+
if (arguments.length < 1) return this.node()[ns][id].delay;
|
8539
8742
|
return d3_selection_each(this, typeof value === "function" ? function(node, i, j) {
|
8540
|
-
node
|
8743
|
+
node[ns][id].delay = +value.call(node, node.__data__, i, j);
|
8541
8744
|
} : (value = +value, function(node) {
|
8542
|
-
node
|
8745
|
+
node[ns][id].delay = value;
|
8543
8746
|
}));
|
8544
8747
|
};
|
8545
8748
|
d3_transitionPrototype.duration = function(value) {
|
8546
|
-
var id = this.id;
|
8547
|
-
if (arguments.length < 1) return this.node()
|
8749
|
+
var id = this.id, ns = this.namespace;
|
8750
|
+
if (arguments.length < 1) return this.node()[ns][id].duration;
|
8548
8751
|
return d3_selection_each(this, typeof value === "function" ? function(node, i, j) {
|
8549
|
-
node
|
8752
|
+
node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j));
|
8550
8753
|
} : (value = Math.max(1, value), function(node) {
|
8551
|
-
node
|
8754
|
+
node[ns][id].duration = value;
|
8552
8755
|
}));
|
8553
8756
|
};
|
8554
8757
|
d3_transitionPrototype.each = function(type, listener) {
|
8555
|
-
var id = this.id;
|
8758
|
+
var id = this.id, ns = this.namespace;
|
8556
8759
|
if (arguments.length < 2) {
|
8557
8760
|
var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;
|
8558
8761
|
d3_transitionInheritId = id;
|
8559
8762
|
d3_selection_each(this, function(node, i, j) {
|
8560
|
-
d3_transitionInherit = node
|
8763
|
+
d3_transitionInherit = node[ns][id];
|
8561
8764
|
type.call(node, node.__data__, i, j);
|
8562
8765
|
});
|
8563
8766
|
d3_transitionInherit = inherit;
|
8564
8767
|
d3_transitionInheritId = inheritId;
|
8565
8768
|
} else {
|
8566
8769
|
d3_selection_each(this, function(node) {
|
8567
|
-
var transition = node
|
8568
|
-
(transition.event || (transition.event = d3.dispatch("start", "end"))).on(type, listener);
|
8770
|
+
var transition = node[ns][id];
|
8771
|
+
(transition.event || (transition.event = d3.dispatch("start", "end", "interrupt"))).on(type, listener);
|
8569
8772
|
});
|
8570
8773
|
}
|
8571
8774
|
return this;
|
8572
8775
|
};
|
8573
8776
|
d3_transitionPrototype.transition = function() {
|
8574
|
-
var id0 = this.id, id1 = ++d3_transitionId, subgroups = [], subgroup, group, node, transition;
|
8777
|
+
var id0 = this.id, id1 = ++d3_transitionId, ns = this.namespace, subgroups = [], subgroup, group, node, transition;
|
8575
8778
|
for (var j = 0, m = this.length; j < m; j++) {
|
8576
8779
|
subgroups.push(subgroup = []);
|
8577
8780
|
for (var group = this[j], i = 0, n = group.length; i < n; i++) {
|
8578
8781
|
if (node = group[i]) {
|
8579
|
-
transition =
|
8580
|
-
|
8581
|
-
|
8782
|
+
transition = node[ns][id0];
|
8783
|
+
d3_transitionNode(node, i, ns, id1, {
|
8784
|
+
time: transition.time,
|
8785
|
+
ease: transition.ease,
|
8786
|
+
delay: transition.delay + transition.duration,
|
8787
|
+
duration: transition.duration
|
8788
|
+
});
|
8582
8789
|
}
|
8583
8790
|
subgroup.push(node);
|
8584
8791
|
}
|
8585
8792
|
}
|
8586
|
-
return d3_transition(subgroups, id1);
|
8793
|
+
return d3_transition(subgroups, ns, id1);
|
8587
8794
|
};
|
8588
|
-
function
|
8589
|
-
|
8795
|
+
function d3_transitionNamespace(name) {
|
8796
|
+
return name == null ? "__transition__" : "__transition_" + name + "__";
|
8797
|
+
}
|
8798
|
+
function d3_transitionNode(node, i, namespace, id, inherit) {
|
8799
|
+
var lock = node[namespace] || (node[namespace] = {
|
8590
8800
|
active: 0,
|
8591
8801
|
count: 0
|
8592
8802
|
}), transition = lock[id];
|
@@ -8595,18 +8805,19 @@
|
|
8595
8805
|
transition = lock[id] = {
|
8596
8806
|
tween: new d3_Map(),
|
8597
8807
|
time: time,
|
8598
|
-
ease: inherit.ease,
|
8599
8808
|
delay: inherit.delay,
|
8600
|
-
duration: inherit.duration
|
8809
|
+
duration: inherit.duration,
|
8810
|
+
ease: inherit.ease
|
8601
8811
|
};
|
8812
|
+
inherit = null;
|
8602
8813
|
++lock.count;
|
8603
8814
|
d3.timer(function(elapsed) {
|
8604
|
-
var d = node.__data__,
|
8815
|
+
var d = node.__data__, delay = transition.delay, duration, ease, timer = d3_timer_active, tweened = [];
|
8605
8816
|
timer.t = delay + time;
|
8606
8817
|
if (delay <= elapsed) return start(elapsed - delay);
|
8607
8818
|
timer.c = start;
|
8608
8819
|
function start(elapsed) {
|
8609
|
-
if (lock.active > id) return stop();
|
8820
|
+
if (lock.active > id) return stop(false);
|
8610
8821
|
lock.active = id;
|
8611
8822
|
transition.event && transition.event.start.call(node, d, i);
|
8612
8823
|
transition.tween.forEach(function(key, value) {
|
@@ -8614,24 +8825,24 @@
|
|
8614
8825
|
tweened.push(value);
|
8615
8826
|
}
|
8616
8827
|
});
|
8828
|
+
ease = transition.ease;
|
8829
|
+
duration = transition.duration;
|
8617
8830
|
d3.timer(function() {
|
8618
8831
|
timer.c = tick(elapsed || 1) ? d3_true : tick;
|
8619
8832
|
return 1;
|
8620
8833
|
}, 0, time);
|
8621
8834
|
}
|
8622
8835
|
function tick(elapsed) {
|
8623
|
-
if (lock.active !== id) return stop();
|
8836
|
+
if (lock.active !== id) return stop(false);
|
8624
8837
|
var t = elapsed / duration, e = ease(t), n = tweened.length;
|
8625
8838
|
while (n > 0) {
|
8626
8839
|
tweened[--n].call(node, e);
|
8627
8840
|
}
|
8628
|
-
if (t >= 1)
|
8629
|
-
transition.event && transition.event.end.call(node, d, i);
|
8630
|
-
return stop();
|
8631
|
-
}
|
8841
|
+
if (t >= 1) return stop(true);
|
8632
8842
|
}
|
8633
|
-
function stop() {
|
8634
|
-
if (
|
8843
|
+
function stop(end) {
|
8844
|
+
if (transition.event) transition.event[end ? "end" : "interrupt"].call(node, d, i);
|
8845
|
+
if (--lock.count) delete lock[id]; else delete node[namespace];
|
8635
8846
|
return 1;
|
8636
8847
|
}
|
8637
8848
|
}, 0, time);
|