d3_rails 3.2.8 → 3.3.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/README.md +1 -1
- data/app/assets/javascripts/d3.js +562 -401
- data/app/assets/javascripts/d3.min.js +5 -5
- data/lib/d3_rails/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 276cdeda4d3639c73795696370dbf1bbfd337d4a
|
4
|
+
data.tar.gz: b6b760a77e864b953b71ef3627fce16844105b10
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e02d2edf7cdf5c601782a5b276076b76b22fb13c848ea47482fd9d085fa894042c23e6bdfa1ce2d6828429e5c553d6e1473c3beaa9f559f8088ce1a3336ff3c7
|
7
|
+
data.tar.gz: bb367294fd6b4e42a3810a905f4bd0bc39ce0fb90284336de0d4247a2b29dd25cb2178b62857bef16d1e57fd63b560d5d63622ad57f441ec02eff80b54f209d0
|
data/README.md
CHANGED
@@ -1,11 +1,23 @@
|
|
1
1
|
d3 = function() {
|
2
2
|
var d3 = {
|
3
|
-
version: "3.
|
3
|
+
version: "3.3.0"
|
4
4
|
};
|
5
5
|
if (!Date.now) Date.now = function() {
|
6
6
|
return +new Date();
|
7
7
|
};
|
8
|
+
var d3_arraySlice = [].slice, d3_array = function(list) {
|
9
|
+
return d3_arraySlice.call(list);
|
10
|
+
};
|
8
11
|
var d3_document = document, d3_documentElement = d3_document.documentElement, d3_window = window;
|
12
|
+
try {
|
13
|
+
d3_array(d3_documentElement.childNodes)[0].nodeType;
|
14
|
+
} catch (e) {
|
15
|
+
d3_array = function(list) {
|
16
|
+
var i = list.length, array = new Array(i);
|
17
|
+
while (i--) array[i] = list[i];
|
18
|
+
return array;
|
19
|
+
};
|
20
|
+
}
|
9
21
|
try {
|
10
22
|
d3_document.createElement("div").style.setProperty("opacity", 0, "");
|
11
23
|
} catch (error) {
|
@@ -135,6 +147,11 @@ d3 = function() {
|
|
135
147
|
while (i--) permutes[i] = array[indexes[i]];
|
136
148
|
return permutes;
|
137
149
|
};
|
150
|
+
d3.pairs = function(array) {
|
151
|
+
var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);
|
152
|
+
while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ];
|
153
|
+
return pairs;
|
154
|
+
};
|
138
155
|
d3.zip = function() {
|
139
156
|
if (!(n = arguments.length)) return [];
|
140
157
|
for (var i = -1, m = d3.min(arguments, d3_zipLength), zips = new Array(m); ++i < m; ) {
|
@@ -374,20 +391,6 @@ d3 = function() {
|
|
374
391
|
}
|
375
392
|
}
|
376
393
|
var d3_vendorPrefixes = [ "webkit", "ms", "moz", "Moz", "o", "O" ];
|
377
|
-
var d3_array = d3_arraySlice;
|
378
|
-
function d3_arrayCopy(pseudoarray) {
|
379
|
-
var i = pseudoarray.length, array = new Array(i);
|
380
|
-
while (i--) array[i] = pseudoarray[i];
|
381
|
-
return array;
|
382
|
-
}
|
383
|
-
function d3_arraySlice(pseudoarray) {
|
384
|
-
return Array.prototype.slice.call(pseudoarray);
|
385
|
-
}
|
386
|
-
try {
|
387
|
-
d3_array(d3_documentElement.childNodes)[0].nodeType;
|
388
|
-
} catch (e) {
|
389
|
-
d3_array = d3_arrayCopy;
|
390
|
-
}
|
391
394
|
function d3_noop() {}
|
392
395
|
d3.dispatch = function() {
|
393
396
|
var dispatch = new d3_dispatch(), i = -1, n = arguments.length;
|
@@ -940,22 +943,6 @@ d3 = function() {
|
|
940
943
|
return node;
|
941
944
|
};
|
942
945
|
}
|
943
|
-
d3_selectionPrototype.transition = function() {
|
944
|
-
var id = d3_transitionInheritId || ++d3_transitionId, subgroups = [], subgroup, node, transition = d3_transitionInherit || {
|
945
|
-
time: Date.now(),
|
946
|
-
ease: d3_ease_cubicInOut,
|
947
|
-
delay: 0,
|
948
|
-
duration: 250
|
949
|
-
};
|
950
|
-
for (var j = -1, m = this.length; ++j < m; ) {
|
951
|
-
subgroups.push(subgroup = []);
|
952
|
-
for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
|
953
|
-
if (node = group[i]) d3_transitionNode(node, i, id, transition);
|
954
|
-
subgroup.push(node);
|
955
|
-
}
|
956
|
-
}
|
957
|
-
return d3_transition(subgroups, id);
|
958
|
-
};
|
959
946
|
d3.select = function(node) {
|
960
947
|
var group = [ typeof node === "string" ? d3_select(node, d3_document) : node ];
|
961
948
|
group.parentNode = d3_documentElement;
|
@@ -1153,92 +1140,205 @@ d3 = function() {
|
|
1153
1140
|
};
|
1154
1141
|
return d3.rebind(drag, event, "on");
|
1155
1142
|
};
|
1156
|
-
|
1157
|
-
|
1158
|
-
|
1159
|
-
|
1143
|
+
var π = Math.PI, ε = 1e-6, ε2 = ε * ε, d3_radians = π / 180, d3_degrees = 180 / π;
|
1144
|
+
function d3_sgn(x) {
|
1145
|
+
return x > 0 ? 1 : x < 0 ? -1 : 0;
|
1146
|
+
}
|
1147
|
+
function d3_acos(x) {
|
1148
|
+
return x > 1 ? 0 : x < -1 ? π : Math.acos(x);
|
1149
|
+
}
|
1150
|
+
function d3_asin(x) {
|
1151
|
+
return x > 1 ? π / 2 : x < -1 ? -π / 2 : Math.asin(x);
|
1152
|
+
}
|
1153
|
+
function d3_sinh(x) {
|
1154
|
+
return (Math.exp(x) - Math.exp(-x)) / 2;
|
1155
|
+
}
|
1156
|
+
function d3_cosh(x) {
|
1157
|
+
return (Math.exp(x) + Math.exp(-x)) / 2;
|
1158
|
+
}
|
1159
|
+
function d3_tanh(x) {
|
1160
|
+
return d3_sinh(x) / d3_cosh(x);
|
1161
|
+
}
|
1162
|
+
function d3_haversin(x) {
|
1163
|
+
return (x = Math.sin(x / 2)) * x;
|
1164
|
+
}
|
1165
|
+
var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4;
|
1166
|
+
d3.interpolateZoom = function(p0, p1) {
|
1167
|
+
var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2];
|
1168
|
+
var dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1), dr = r1 - r0, S = (dr || Math.log(w1 / w0)) / ρ;
|
1169
|
+
function interpolate(t) {
|
1170
|
+
var s = t * S;
|
1171
|
+
if (dr) {
|
1172
|
+
var coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));
|
1173
|
+
return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ];
|
1174
|
+
}
|
1175
|
+
return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * s) ];
|
1160
1176
|
}
|
1161
|
-
|
1162
|
-
|
1163
|
-
|
1177
|
+
interpolate.duration = S * 1e3;
|
1178
|
+
return interpolate;
|
1179
|
+
};
|
1180
|
+
d3.behavior.zoom = function() {
|
1181
|
+
var view = {
|
1182
|
+
x: 0,
|
1183
|
+
y: 0,
|
1184
|
+
k: 1
|
1185
|
+
}, translate0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, mousedown = "mousedown.zoom", mousemove = "mousemove.zoom", mouseup = "mouseup.zoom", mousewheelTimer, touchstart = "touchstart.zoom", touchmove = "touchmove.zoom", touchend = "touchend.zoom", touchtime, event = d3_eventDispatch(zoom, "zoomstart", "zoom", "zoomend"), x0, x1, y0, y1;
|
1186
|
+
function zoom(g) {
|
1187
|
+
g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + ".zoom", mousewheeled).on(mousemove, mousewheelreset).on("dblclick.zoom", dblclicked).on(touchstart, touchstarted);
|
1188
|
+
}
|
1189
|
+
zoom.event = function(g) {
|
1190
|
+
g.each(function() {
|
1191
|
+
var event_ = event.of(this, arguments), view1 = view;
|
1192
|
+
if (d3_transitionInheritId) {
|
1193
|
+
d3.select(this).transition().each("start.zoom", function() {
|
1194
|
+
view = this.__chart__ || {
|
1195
|
+
x: 0,
|
1196
|
+
y: 0,
|
1197
|
+
k: 1
|
1198
|
+
};
|
1199
|
+
zoomstarted(event_);
|
1200
|
+
}).tween("zoom:zoom", function() {
|
1201
|
+
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 ]);
|
1202
|
+
return function(t) {
|
1203
|
+
var l = i(t), k = dx / l[2];
|
1204
|
+
this.__chart__ = view = {
|
1205
|
+
x: cx - l[0] * k,
|
1206
|
+
y: cy - l[1] * k,
|
1207
|
+
k: k
|
1208
|
+
};
|
1209
|
+
zoomed(event_);
|
1210
|
+
};
|
1211
|
+
}).each("end.zoom", function() {
|
1212
|
+
zoomended(event_);
|
1213
|
+
});
|
1214
|
+
} else {
|
1215
|
+
this.__chart__ = view;
|
1216
|
+
zoomstarted(event_);
|
1217
|
+
zoomed(event_);
|
1218
|
+
zoomended(event_);
|
1219
|
+
}
|
1220
|
+
});
|
1221
|
+
};
|
1222
|
+
zoom.translate = function(_) {
|
1223
|
+
if (!arguments.length) return [ view.x, view.y ];
|
1224
|
+
view = {
|
1225
|
+
x: +_[0],
|
1226
|
+
y: +_[1],
|
1227
|
+
k: view.k
|
1228
|
+
};
|
1164
1229
|
rescale();
|
1165
1230
|
return zoom;
|
1166
1231
|
};
|
1167
|
-
zoom.scale = function(
|
1168
|
-
if (!arguments.length) return
|
1169
|
-
|
1232
|
+
zoom.scale = function(_) {
|
1233
|
+
if (!arguments.length) return view.k;
|
1234
|
+
view = {
|
1235
|
+
x: view.x,
|
1236
|
+
y: view.y,
|
1237
|
+
k: +_
|
1238
|
+
};
|
1170
1239
|
rescale();
|
1171
1240
|
return zoom;
|
1172
1241
|
};
|
1173
|
-
zoom.scaleExtent = function(
|
1242
|
+
zoom.scaleExtent = function(_) {
|
1174
1243
|
if (!arguments.length) return scaleExtent;
|
1175
|
-
scaleExtent =
|
1244
|
+
scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ];
|
1245
|
+
return zoom;
|
1246
|
+
};
|
1247
|
+
zoom.center = function(_) {
|
1248
|
+
if (!arguments.length) return center;
|
1249
|
+
center = _ && [ +_[0], +_[1] ];
|
1250
|
+
return zoom;
|
1251
|
+
};
|
1252
|
+
zoom.size = function(_) {
|
1253
|
+
if (!arguments.length) return size;
|
1254
|
+
size = _ && [ +_[0], +_[1] ];
|
1176
1255
|
return zoom;
|
1177
1256
|
};
|
1178
1257
|
zoom.x = function(z) {
|
1179
1258
|
if (!arguments.length) return x1;
|
1180
1259
|
x1 = z;
|
1181
1260
|
x0 = z.copy();
|
1182
|
-
|
1183
|
-
|
1261
|
+
view = {
|
1262
|
+
x: 0,
|
1263
|
+
y: 0,
|
1264
|
+
k: 1
|
1265
|
+
};
|
1184
1266
|
return zoom;
|
1185
1267
|
};
|
1186
1268
|
zoom.y = function(z) {
|
1187
1269
|
if (!arguments.length) return y1;
|
1188
1270
|
y1 = z;
|
1189
1271
|
y0 = z.copy();
|
1190
|
-
|
1191
|
-
|
1272
|
+
view = {
|
1273
|
+
x: 0,
|
1274
|
+
y: 0,
|
1275
|
+
k: 1
|
1276
|
+
};
|
1192
1277
|
return zoom;
|
1193
1278
|
};
|
1194
1279
|
function location(p) {
|
1195
|
-
return [ (p[0] -
|
1280
|
+
return [ (p[0] - view.x) / view.k, (p[1] - view.y) / view.k ];
|
1196
1281
|
}
|
1197
1282
|
function point(l) {
|
1198
|
-
return [ l[0] *
|
1283
|
+
return [ l[0] * view.k + view.x, l[1] * view.k + view.y ];
|
1199
1284
|
}
|
1200
1285
|
function scaleTo(s) {
|
1201
|
-
|
1286
|
+
view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));
|
1202
1287
|
}
|
1203
1288
|
function translateTo(p, l) {
|
1204
1289
|
l = point(l);
|
1205
|
-
|
1206
|
-
|
1290
|
+
view.x += p[0] - l[0];
|
1291
|
+
view.y += p[1] - l[1];
|
1207
1292
|
}
|
1208
1293
|
function rescale() {
|
1209
1294
|
if (x1) x1.domain(x0.range().map(function(x) {
|
1210
|
-
return (x -
|
1295
|
+
return (x - view.x) / view.k;
|
1211
1296
|
}).map(x0.invert));
|
1212
1297
|
if (y1) y1.domain(y0.range().map(function(y) {
|
1213
|
-
return (y -
|
1298
|
+
return (y - view.y) / view.k;
|
1214
1299
|
}).map(y0.invert));
|
1215
1300
|
}
|
1216
|
-
function
|
1301
|
+
function zoomstarted(event) {
|
1302
|
+
event({
|
1303
|
+
type: "zoomstart"
|
1304
|
+
});
|
1305
|
+
}
|
1306
|
+
function zoomed(event) {
|
1217
1307
|
rescale();
|
1218
1308
|
event({
|
1219
1309
|
type: "zoom",
|
1220
|
-
scale:
|
1221
|
-
translate:
|
1310
|
+
scale: view.k,
|
1311
|
+
translate: [ view.x, view.y ]
|
1312
|
+
});
|
1313
|
+
}
|
1314
|
+
function zoomended(event) {
|
1315
|
+
event({
|
1316
|
+
type: "zoomend"
|
1222
1317
|
});
|
1223
1318
|
}
|
1224
1319
|
function mousedowned() {
|
1225
1320
|
var target = this, event_ = event.of(target, arguments), eventTarget = d3.event.target, dragged = 0, w = d3.select(d3_window).on(mousemove, moved).on(mouseup, ended), l = location(d3.mouse(target)), dragRestore = d3_event_dragSuppress();
|
1321
|
+
d3_selection_interrupt.call(target);
|
1322
|
+
zoomstarted(event_);
|
1226
1323
|
function moved() {
|
1227
1324
|
dragged = 1;
|
1228
1325
|
translateTo(d3.mouse(target), l);
|
1229
|
-
|
1326
|
+
zoomed(event_);
|
1230
1327
|
}
|
1231
1328
|
function ended() {
|
1232
1329
|
w.on(mousemove, d3_window === target ? mousewheelreset : null).on(mouseup, null);
|
1233
1330
|
dragRestore(dragged && d3.event.target === eventTarget);
|
1331
|
+
zoomended(event_);
|
1234
1332
|
}
|
1235
1333
|
}
|
1236
1334
|
function touchstarted() {
|
1237
1335
|
var target = this, event_ = event.of(target, arguments), locations0, distance0 = 0, scale0, w = d3.select(d3_window).on(touchmove, moved).on(touchend, ended), t = d3.select(target).on(mousedown, null).on(touchstart, started), dragRestore = d3_event_dragSuppress();
|
1336
|
+
d3_selection_interrupt.call(target);
|
1238
1337
|
started();
|
1338
|
+
zoomstarted(event_);
|
1239
1339
|
function relocate() {
|
1240
1340
|
var touches = d3.touches(target);
|
1241
|
-
scale0 =
|
1341
|
+
scale0 = view.k;
|
1242
1342
|
locations0 = {};
|
1243
1343
|
touches.forEach(function(t) {
|
1244
1344
|
locations0[t.identifier] = location(t);
|
@@ -1250,10 +1350,10 @@ d3 = function() {
|
|
1250
1350
|
if (touches.length === 1) {
|
1251
1351
|
if (now - touchtime < 500) {
|
1252
1352
|
var p = touches[0], l = locations0[p.identifier];
|
1253
|
-
scaleTo(
|
1353
|
+
scaleTo(view.k * 2);
|
1254
1354
|
translateTo(p, l);
|
1255
1355
|
d3_eventPreventDefault();
|
1256
|
-
|
1356
|
+
zoomed(event_);
|
1257
1357
|
}
|
1258
1358
|
touchtime = now;
|
1259
1359
|
} else if (touches.length > 1) {
|
@@ -1275,7 +1375,7 @@ d3 = function() {
|
|
1275
1375
|
}
|
1276
1376
|
touchtime = null;
|
1277
1377
|
translateTo(p0, l0);
|
1278
|
-
|
1378
|
+
zoomed(event_);
|
1279
1379
|
}
|
1280
1380
|
function ended() {
|
1281
1381
|
if (d3.event.touches.length) {
|
@@ -1284,24 +1384,35 @@ d3 = function() {
|
|
1284
1384
|
w.on(touchmove, null).on(touchend, null);
|
1285
1385
|
t.on(mousedown, mousedowned).on(touchstart, touchstarted);
|
1286
1386
|
dragRestore();
|
1387
|
+
zoomended(event_);
|
1287
1388
|
}
|
1288
1389
|
}
|
1289
1390
|
}
|
1290
1391
|
function mousewheeled() {
|
1392
|
+
var event_ = event.of(this, arguments);
|
1393
|
+
if (mousewheelTimer) clearTimeout(mousewheelTimer); else d3_selection_interrupt.call(this),
|
1394
|
+
zoomstarted(event_);
|
1395
|
+
mousewheelTimer = setTimeout(function() {
|
1396
|
+
mousewheelTimer = null;
|
1397
|
+
zoomended(event_);
|
1398
|
+
}, 50);
|
1291
1399
|
d3_eventPreventDefault();
|
1292
|
-
|
1293
|
-
|
1294
|
-
|
1295
|
-
|
1400
|
+
var point = center || d3.mouse(this);
|
1401
|
+
if (!translate0) translate0 = location(point);
|
1402
|
+
scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);
|
1403
|
+
translateTo(point, translate0);
|
1404
|
+
zoomed(event_);
|
1296
1405
|
}
|
1297
1406
|
function mousewheelreset() {
|
1298
1407
|
translate0 = null;
|
1299
1408
|
}
|
1300
1409
|
function dblclicked() {
|
1301
|
-
var p = d3.mouse(this), l = location(p), k = Math.log(
|
1410
|
+
var event_ = event.of(this, arguments), p = d3.mouse(this), l = location(p), k = Math.log(view.k) / Math.LN2;
|
1411
|
+
zoomstarted(event_);
|
1302
1412
|
scaleTo(Math.pow(2, d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1));
|
1303
1413
|
translateTo(p, l);
|
1304
|
-
|
1414
|
+
zoomed(event_);
|
1415
|
+
zoomended(event_);
|
1305
1416
|
}
|
1306
1417
|
return d3.rebind(zoom, event, "on");
|
1307
1418
|
};
|
@@ -1359,25 +1470,6 @@ d3 = function() {
|
|
1359
1470
|
}
|
1360
1471
|
return d3_rgb(vv(h + 120), vv(h), vv(h - 120));
|
1361
1472
|
}
|
1362
|
-
var π = Math.PI, ε = 1e-6, ε2 = ε * ε, d3_radians = π / 180, d3_degrees = 180 / π;
|
1363
|
-
function d3_sgn(x) {
|
1364
|
-
return x > 0 ? 1 : x < 0 ? -1 : 0;
|
1365
|
-
}
|
1366
|
-
function d3_acos(x) {
|
1367
|
-
return x > 1 ? 0 : x < -1 ? π : Math.acos(x);
|
1368
|
-
}
|
1369
|
-
function d3_asin(x) {
|
1370
|
-
return x > 1 ? π / 2 : x < -1 ? -π / 2 : Math.asin(x);
|
1371
|
-
}
|
1372
|
-
function d3_sinh(x) {
|
1373
|
-
return (Math.exp(x) - Math.exp(-x)) / 2;
|
1374
|
-
}
|
1375
|
-
function d3_cosh(x) {
|
1376
|
-
return (Math.exp(x) + Math.exp(-x)) / 2;
|
1377
|
-
}
|
1378
|
-
function d3_haversin(x) {
|
1379
|
-
return (x = Math.sin(x / 2)) * x;
|
1380
|
-
}
|
1381
1473
|
d3.hcl = function(h, c, l) {
|
1382
1474
|
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);
|
1383
1475
|
};
|
@@ -1719,7 +1811,7 @@ d3 = function() {
|
|
1719
1811
|
};
|
1720
1812
|
}
|
1721
1813
|
function d3_xhr(url, mimeType, response, callback) {
|
1722
|
-
var xhr = {}, dispatch = d3.dispatch("progress", "load", "error"), headers = {}, request = new XMLHttpRequest(), responseType = null;
|
1814
|
+
var xhr = {}, dispatch = d3.dispatch("beforesend", "progress", "load", "error"), headers = {}, request = new XMLHttpRequest(), responseType = null;
|
1723
1815
|
if (d3_window.XDomainRequest && !("withCredentials" in request) && /^(http(s)?:)?\/\//.test(url)) request = new XDomainRequest();
|
1724
1816
|
"onload" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {
|
1725
1817
|
request.readyState > 3 && respond();
|
@@ -1782,6 +1874,7 @@ d3 = function() {
|
|
1782
1874
|
if (callback != null) xhr.on("error", callback).on("load", function(request) {
|
1783
1875
|
callback(null, request);
|
1784
1876
|
});
|
1877
|
+
dispatch.beforesend.call(xhr, request);
|
1785
1878
|
request.send(data == null ? null : data);
|
1786
1879
|
return xhr;
|
1787
1880
|
};
|
@@ -2159,12 +2252,12 @@ d3 = function() {
|
|
2159
2252
|
listener.sphere();
|
2160
2253
|
},
|
2161
2254
|
Point: function(object, listener) {
|
2162
|
-
|
2163
|
-
listener.point(
|
2255
|
+
object = object.coordinates;
|
2256
|
+
listener.point(object[0], object[1], object[2]);
|
2164
2257
|
},
|
2165
2258
|
MultiPoint: function(object, listener) {
|
2166
|
-
var coordinates = object.coordinates, i = -1, n = coordinates.length
|
2167
|
-
while (++i < n)
|
2259
|
+
var coordinates = object.coordinates, i = -1, n = coordinates.length;
|
2260
|
+
while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]);
|
2168
2261
|
},
|
2169
2262
|
LineString: function(object, listener) {
|
2170
2263
|
d3_geo_streamLine(object.coordinates, listener, 0);
|
@@ -2188,7 +2281,7 @@ d3 = function() {
|
|
2188
2281
|
function d3_geo_streamLine(coordinates, listener, closed) {
|
2189
2282
|
var i = -1, n = coordinates.length - closed, coordinate;
|
2190
2283
|
listener.lineStart();
|
2191
|
-
while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1]);
|
2284
|
+
while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]);
|
2192
2285
|
listener.lineEnd();
|
2193
2286
|
}
|
2194
2287
|
function d3_geo_streamPolygon(coordinates, listener) {
|
@@ -2898,8 +2991,25 @@ d3 = function() {
|
|
2898
2991
|
return d3_geo_pointInPolygon(point, polygon);
|
2899
2992
|
}
|
2900
2993
|
}
|
2901
|
-
var
|
2902
|
-
function
|
2994
|
+
var d3_geo_clipExtentMAX = 1e9;
|
2995
|
+
d3.geo.clipExtent = function() {
|
2996
|
+
var x0, y0, x1, y1, stream, clip, clipExtent = {
|
2997
|
+
stream: function(output) {
|
2998
|
+
if (stream) stream.valid = false;
|
2999
|
+
stream = clip(output);
|
3000
|
+
stream.valid = true;
|
3001
|
+
return stream;
|
3002
|
+
},
|
3003
|
+
extent: function(_) {
|
3004
|
+
if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];
|
3005
|
+
clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]);
|
3006
|
+
if (stream) stream.valid = false, stream = null;
|
3007
|
+
return clipExtent;
|
3008
|
+
}
|
3009
|
+
};
|
3010
|
+
return clipExtent.extent([ [ 0, 0 ], [ 960, 500 ] ]);
|
3011
|
+
};
|
3012
|
+
function d3_geo_clipExtent(x0, y0, x1, y1) {
|
2903
3013
|
return function(listener) {
|
2904
3014
|
var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), segments, polygon, ring;
|
2905
3015
|
var clip = {
|
@@ -2981,8 +3091,8 @@ d3 = function() {
|
|
2981
3091
|
if (v_) listener.lineEnd();
|
2982
3092
|
}
|
2983
3093
|
function linePoint(x, y) {
|
2984
|
-
x = Math.max(-
|
2985
|
-
y = Math.max(-
|
3094
|
+
x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x));
|
3095
|
+
y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y));
|
2986
3096
|
var v = visible(x, y);
|
2987
3097
|
if (polygon) ring.push([ x, y ]);
|
2988
3098
|
if (first) {
|
@@ -3025,7 +3135,7 @@ d3 = function() {
|
|
3025
3135
|
function clipLine(a, b) {
|
3026
3136
|
var dx = b[0] - a[0], dy = b[1] - a[1], t = [ 0, 1 ];
|
3027
3137
|
if (Math.abs(dx) < ε && Math.abs(dy) < ε) return x0 <= a[0] && a[0] <= x1 && y0 <= a[1] && a[1] <= y1;
|
3028
|
-
if (
|
3138
|
+
if (d3_geo_clipExtentT(x0 - a[0], dx, t) && d3_geo_clipExtentT(a[0] - x1, -dx, t) && d3_geo_clipExtentT(y0 - a[1], dy, t) && d3_geo_clipExtentT(a[1] - y1, -dy, t)) {
|
3029
3139
|
if (t[1] < 1) {
|
3030
3140
|
b[0] = a[0] + t[1] * dx;
|
3031
3141
|
b[1] = a[1] + t[1] * dy;
|
@@ -3039,7 +3149,7 @@ d3 = function() {
|
|
3039
3149
|
return false;
|
3040
3150
|
}
|
3041
3151
|
}
|
3042
|
-
function
|
3152
|
+
function d3_geo_clipExtentT(num, denominator, t) {
|
3043
3153
|
if (Math.abs(denominator) < ε) return num <= 0;
|
3044
3154
|
var u = num / denominator;
|
3045
3155
|
if (denominator > 0) {
|
@@ -3418,6 +3528,38 @@ d3 = function() {
|
|
3418
3528
|
};
|
3419
3529
|
return resample;
|
3420
3530
|
}
|
3531
|
+
d3.geo.transform = function(methods) {
|
3532
|
+
return {
|
3533
|
+
stream: function(stream) {
|
3534
|
+
var transform = new d3_geo_transform(stream);
|
3535
|
+
for (var k in methods) transform[k] = methods[k];
|
3536
|
+
return transform;
|
3537
|
+
}
|
3538
|
+
};
|
3539
|
+
};
|
3540
|
+
function d3_geo_transform(stream) {
|
3541
|
+
this.stream = stream;
|
3542
|
+
}
|
3543
|
+
d3_geo_transform.prototype = {
|
3544
|
+
point: function(x, y) {
|
3545
|
+
this.stream.point(x, y);
|
3546
|
+
},
|
3547
|
+
sphere: function() {
|
3548
|
+
this.stream.sphere();
|
3549
|
+
},
|
3550
|
+
lineStart: function() {
|
3551
|
+
this.stream.lineStart();
|
3552
|
+
},
|
3553
|
+
lineEnd: function() {
|
3554
|
+
this.stream.lineEnd();
|
3555
|
+
},
|
3556
|
+
polygonStart: function() {
|
3557
|
+
this.stream.polygonStart();
|
3558
|
+
},
|
3559
|
+
polygonEnd: function() {
|
3560
|
+
this.stream.polygonEnd();
|
3561
|
+
}
|
3562
|
+
};
|
3421
3563
|
d3.geo.path = function() {
|
3422
3564
|
var pointRadius = 4.5, projection, context, projectStream, contextStream, cacheStream;
|
3423
3565
|
function path(object) {
|
@@ -3466,31 +3608,15 @@ d3 = function() {
|
|
3466
3608
|
return path.projection(d3.geo.albersUsa()).context(null);
|
3467
3609
|
};
|
3468
3610
|
function d3_geo_pathProjectStream(project) {
|
3469
|
-
var resample = d3_geo_resample(function(
|
3470
|
-
return project([
|
3611
|
+
var resample = d3_geo_resample(function(x, y) {
|
3612
|
+
return project([ x * d3_degrees, y * d3_degrees ]);
|
3471
3613
|
});
|
3472
3614
|
return function(stream) {
|
3473
|
-
stream = resample(stream);
|
3474
|
-
|
3475
|
-
point
|
3476
|
-
stream.point(λ * d3_radians, φ * d3_radians);
|
3477
|
-
},
|
3478
|
-
sphere: function() {
|
3479
|
-
stream.sphere();
|
3480
|
-
},
|
3481
|
-
lineStart: function() {
|
3482
|
-
stream.lineStart();
|
3483
|
-
},
|
3484
|
-
lineEnd: function() {
|
3485
|
-
stream.lineEnd();
|
3486
|
-
},
|
3487
|
-
polygonStart: function() {
|
3488
|
-
stream.polygonStart();
|
3489
|
-
},
|
3490
|
-
polygonEnd: function() {
|
3491
|
-
stream.polygonEnd();
|
3492
|
-
}
|
3615
|
+
var transform = new d3_geo_transform(stream = resample(stream));
|
3616
|
+
transform.point = function(x, y) {
|
3617
|
+
stream.point(x * d3_radians, y * d3_radians);
|
3493
3618
|
};
|
3619
|
+
return transform;
|
3494
3620
|
};
|
3495
3621
|
}
|
3496
3622
|
d3.geo.projection = d3_geo_projection;
|
@@ -3527,7 +3653,7 @@ d3 = function() {
|
|
3527
3653
|
projection.clipExtent = function(_) {
|
3528
3654
|
if (!arguments.length) return clipExtent;
|
3529
3655
|
clipExtent = _;
|
3530
|
-
postclip = _
|
3656
|
+
postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity;
|
3531
3657
|
return invalidate();
|
3532
3658
|
};
|
3533
3659
|
projection.scale = function(_) {
|
@@ -3563,10 +3689,7 @@ d3 = function() {
|
|
3563
3689
|
return invalidate();
|
3564
3690
|
}
|
3565
3691
|
function invalidate() {
|
3566
|
-
if (stream)
|
3567
|
-
stream.valid = false;
|
3568
|
-
stream = null;
|
3569
|
-
}
|
3692
|
+
if (stream) stream.valid = false, stream = null;
|
3570
3693
|
return projection;
|
3571
3694
|
}
|
3572
3695
|
return function() {
|
@@ -3576,27 +3699,12 @@ d3 = function() {
|
|
3576
3699
|
};
|
3577
3700
|
}
|
3578
3701
|
function d3_geo_projectionRadiansRotate(rotate, stream) {
|
3579
|
-
|
3580
|
-
|
3581
|
-
|
3582
|
-
|
3583
|
-
},
|
3584
|
-
sphere: function() {
|
3585
|
-
stream.sphere();
|
3586
|
-
},
|
3587
|
-
lineStart: function() {
|
3588
|
-
stream.lineStart();
|
3589
|
-
},
|
3590
|
-
lineEnd: function() {
|
3591
|
-
stream.lineEnd();
|
3592
|
-
},
|
3593
|
-
polygonStart: function() {
|
3594
|
-
stream.polygonStart();
|
3595
|
-
},
|
3596
|
-
polygonEnd: function() {
|
3597
|
-
stream.polygonEnd();
|
3598
|
-
}
|
3702
|
+
var transform = new d3_geo_transform(stream);
|
3703
|
+
transform.point = function(x, y) {
|
3704
|
+
y = rotate(x * d3_radians, y * d3_radians), x = y[0];
|
3705
|
+
stream.point(x > π ? x - 2 * π : x < -π ? x + 2 * π : x, y[1]);
|
3599
3706
|
};
|
3707
|
+
return transform;
|
3600
3708
|
}
|
3601
3709
|
function d3_geo_equirectangular(λ, φ) {
|
3602
3710
|
return [ λ, φ ];
|
@@ -6801,13 +6909,10 @@ d3 = function() {
|
|
6801
6909
|
return d3.rebind(scale, linear, "range", "rangeRound", "interpolate", "clamp");
|
6802
6910
|
}
|
6803
6911
|
function d3_scale_linearNice(domain, m) {
|
6804
|
-
return d3_scale_nice(domain, d3_scale_niceStep(
|
6805
|
-
}
|
6806
|
-
function d3_scale_linearNiceStep(domain) {
|
6807
|
-
var extent = d3_scaleExtent(domain), span = extent[1] - extent[0];
|
6808
|
-
return Math.pow(10, Math.round(Math.log(span) / Math.LN10) - 1);
|
6912
|
+
return d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));
|
6809
6913
|
}
|
6810
6914
|
function d3_scale_linearTickRange(domain, m) {
|
6915
|
+
if (m == null) m = 10;
|
6811
6916
|
var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;
|
6812
6917
|
if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;
|
6813
6918
|
extent[0] = Math.ceil(extent[0] / step) * step;
|
@@ -7479,6 +7584,29 @@ d3 = function() {
|
|
7479
7584
|
return arguments.length ? d3_transitionInheritId ? selection.transition() : selection : d3_selectionRoot.transition();
|
7480
7585
|
};
|
7481
7586
|
d3.transition.prototype = d3_transitionPrototype;
|
7587
|
+
d3_selectionPrototype.transition = function() {
|
7588
|
+
var id = d3_transitionInheritId || ++d3_transitionId, subgroups = [], subgroup, node, transition = d3_transitionInherit || {
|
7589
|
+
time: Date.now(),
|
7590
|
+
ease: d3_ease_cubicInOut,
|
7591
|
+
delay: 0,
|
7592
|
+
duration: 250
|
7593
|
+
};
|
7594
|
+
for (var j = -1, m = this.length; ++j < m; ) {
|
7595
|
+
subgroups.push(subgroup = []);
|
7596
|
+
for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
|
7597
|
+
if (node = group[i]) d3_transitionNode(node, i, id, transition);
|
7598
|
+
subgroup.push(node);
|
7599
|
+
}
|
7600
|
+
}
|
7601
|
+
return d3_transition(subgroups, id);
|
7602
|
+
};
|
7603
|
+
d3_selectionPrototype.interrupt = function() {
|
7604
|
+
return this.each(d3_selection_interrupt);
|
7605
|
+
};
|
7606
|
+
function d3_selection_interrupt() {
|
7607
|
+
var lock = this.__transition__;
|
7608
|
+
if (lock) ++lock.active;
|
7609
|
+
}
|
7482
7610
|
d3_transitionPrototype.select = function(selector) {
|
7483
7611
|
var id = this.id, subgroups = [], subgroup, subnode, node;
|
7484
7612
|
selector = d3_selection_selector(selector);
|
@@ -7635,7 +7763,7 @@ d3 = function() {
|
|
7635
7763
|
d3_transitionPrototype.remove = function() {
|
7636
7764
|
return this.each("end.transition", function() {
|
7637
7765
|
var p;
|
7638
|
-
if (
|
7766
|
+
if (this.__transition__.count < 2 && (p = this.parentNode)) p.removeChild(this);
|
7639
7767
|
});
|
7640
7768
|
};
|
7641
7769
|
d3_transitionPrototype.ease = function(value) {
|
@@ -7649,16 +7777,16 @@ d3 = function() {
|
|
7649
7777
|
d3_transitionPrototype.delay = function(value) {
|
7650
7778
|
var id = this.id;
|
7651
7779
|
return d3_selection_each(this, typeof value === "function" ? function(node, i, j) {
|
7652
|
-
node.__transition__[id].delay = value.call(node, node.__data__, i, j)
|
7653
|
-
} : (value
|
7780
|
+
node.__transition__[id].delay = +value.call(node, node.__data__, i, j);
|
7781
|
+
} : (value = +value, function(node) {
|
7654
7782
|
node.__transition__[id].delay = value;
|
7655
7783
|
}));
|
7656
7784
|
};
|
7657
7785
|
d3_transitionPrototype.duration = function(value) {
|
7658
7786
|
var id = this.id;
|
7659
7787
|
return d3_selection_each(this, typeof value === "function" ? function(node, i, j) {
|
7660
|
-
node.__transition__[id].duration = Math.max(1, value.call(node, node.__data__, i, j)
|
7661
|
-
} : (value = Math.max(1, value
|
7788
|
+
node.__transition__[id].duration = Math.max(1, value.call(node, node.__data__, i, j));
|
7789
|
+
} : (value = Math.max(1, value), function(node) {
|
7662
7790
|
node.__transition__[id].duration = value;
|
7663
7791
|
}));
|
7664
7792
|
};
|
@@ -7734,9 +7862,8 @@ d3 = function() {
|
|
7734
7862
|
tweened[--n].call(node, e);
|
7735
7863
|
}
|
7736
7864
|
if (t >= 1) {
|
7737
|
-
stop();
|
7738
7865
|
transition.event && transition.event.end.call(node, d, i);
|
7739
|
-
return
|
7866
|
+
return stop();
|
7740
7867
|
}
|
7741
7868
|
}
|
7742
7869
|
function stop() {
|
@@ -7747,13 +7874,11 @@ d3 = function() {
|
|
7747
7874
|
}
|
7748
7875
|
}
|
7749
7876
|
d3.svg.axis = function() {
|
7750
|
-
var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient,
|
7877
|
+
var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_;
|
7751
7878
|
function axis(g) {
|
7752
7879
|
g.each(function() {
|
7753
7880
|
var g = d3.select(this);
|
7754
|
-
var ticks = tickValues == null ? scale.ticks ? scale.ticks.apply(scale, tickArguments_) : scale.domain() : tickValues, tickFormat = tickFormat_ == null ? scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments_) :
|
7755
|
-
var subticks = d3_svg_axisSubdivide(scale, ticks, tickSubdivide), subtick = g.selectAll(".tick.minor").data(subticks, String), subtickEnter = subtick.enter().insert("line", ".tick").attr("class", "tick minor").style("opacity", 1e-6), subtickExit = d3.transition(subtick.exit()).style("opacity", 1e-6).remove(), subtickUpdate = d3.transition(subtick).style("opacity", 1);
|
7756
|
-
var tick = g.selectAll(".tick.major").data(ticks, String), tickEnter = tick.enter().insert("g", ".domain").attr("class", "tick major").style("opacity", 1e-6), tickExit = d3.transition(tick.exit()).style("opacity", 1e-6).remove(), tickUpdate = d3.transition(tick).style("opacity", 1), tickTransform;
|
7881
|
+
var ticks = tickValues == null ? scale.ticks ? scale.ticks.apply(scale, tickArguments_) : scale.domain() : tickValues, tickFormat = tickFormat_ == null ? scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(".tick.major").data(ticks, d3_identity), tickEnter = tick.enter().insert("g", ".domain").attr("class", "tick major").style("opacity", 1e-6), tickExit = d3.transition(tick.exit()).style("opacity", 1e-6).remove(), tickUpdate = d3.transition(tick).style("opacity", 1), tickTransform;
|
7757
7882
|
var range = d3_scaleRange(scale), path = g.selectAll(".domain").data([ 0 ]), pathUpdate = (path.enter().append("path").attr("class", "domain"),
|
7758
7883
|
d3.transition(path));
|
7759
7884
|
var scale1 = scale.copy(), scale0 = this.__chart__ || scale1;
|
@@ -7765,56 +7890,48 @@ d3 = function() {
|
|
7765
7890
|
case "bottom":
|
7766
7891
|
{
|
7767
7892
|
tickTransform = d3_svg_axisX;
|
7768
|
-
|
7769
|
-
|
7770
|
-
|
7771
|
-
|
7772
|
-
lineUpdate.attr("x2", 0).attr("y2", tickMajorSize);
|
7773
|
-
textUpdate.attr("x", 0).attr("y", Math.max(tickMajorSize, 0) + tickPadding);
|
7893
|
+
lineEnter.attr("y2", innerTickSize);
|
7894
|
+
textEnter.attr("y", Math.max(innerTickSize, 0) + tickPadding);
|
7895
|
+
lineUpdate.attr("x2", 0).attr("y2", innerTickSize);
|
7896
|
+
textUpdate.attr("x", 0).attr("y", Math.max(innerTickSize, 0) + tickPadding);
|
7774
7897
|
text.attr("dy", ".71em").style("text-anchor", "middle");
|
7775
|
-
pathUpdate.attr("d", "M" + range[0] + "," +
|
7898
|
+
pathUpdate.attr("d", "M" + range[0] + "," + outerTickSize + "V0H" + range[1] + "V" + outerTickSize);
|
7776
7899
|
break;
|
7777
7900
|
}
|
7778
7901
|
|
7779
7902
|
case "top":
|
7780
7903
|
{
|
7781
7904
|
tickTransform = d3_svg_axisX;
|
7782
|
-
|
7783
|
-
|
7784
|
-
|
7785
|
-
|
7786
|
-
lineUpdate.attr("x2", 0).attr("y2", -tickMajorSize);
|
7787
|
-
textUpdate.attr("x", 0).attr("y", -(Math.max(tickMajorSize, 0) + tickPadding));
|
7905
|
+
lineEnter.attr("y2", -innerTickSize);
|
7906
|
+
textEnter.attr("y", -(Math.max(innerTickSize, 0) + tickPadding));
|
7907
|
+
lineUpdate.attr("x2", 0).attr("y2", -innerTickSize);
|
7908
|
+
textUpdate.attr("x", 0).attr("y", -(Math.max(innerTickSize, 0) + tickPadding));
|
7788
7909
|
text.attr("dy", "0em").style("text-anchor", "middle");
|
7789
|
-
pathUpdate.attr("d", "M" + range[0] + "," + -
|
7910
|
+
pathUpdate.attr("d", "M" + range[0] + "," + -outerTickSize + "V0H" + range[1] + "V" + -outerTickSize);
|
7790
7911
|
break;
|
7791
7912
|
}
|
7792
7913
|
|
7793
7914
|
case "left":
|
7794
7915
|
{
|
7795
7916
|
tickTransform = d3_svg_axisY;
|
7796
|
-
|
7797
|
-
|
7798
|
-
|
7799
|
-
|
7800
|
-
lineUpdate.attr("x2", -tickMajorSize).attr("y2", 0);
|
7801
|
-
textUpdate.attr("x", -(Math.max(tickMajorSize, 0) + tickPadding)).attr("y", 0);
|
7917
|
+
lineEnter.attr("x2", -innerTickSize);
|
7918
|
+
textEnter.attr("x", -(Math.max(innerTickSize, 0) + tickPadding));
|
7919
|
+
lineUpdate.attr("x2", -innerTickSize).attr("y2", 0);
|
7920
|
+
textUpdate.attr("x", -(Math.max(innerTickSize, 0) + tickPadding)).attr("y", 0);
|
7802
7921
|
text.attr("dy", ".32em").style("text-anchor", "end");
|
7803
|
-
pathUpdate.attr("d", "M" + -
|
7922
|
+
pathUpdate.attr("d", "M" + -outerTickSize + "," + range[0] + "H0V" + range[1] + "H" + -outerTickSize);
|
7804
7923
|
break;
|
7805
7924
|
}
|
7806
7925
|
|
7807
7926
|
case "right":
|
7808
7927
|
{
|
7809
7928
|
tickTransform = d3_svg_axisY;
|
7810
|
-
|
7811
|
-
|
7812
|
-
|
7813
|
-
|
7814
|
-
lineUpdate.attr("x2", tickMajorSize).attr("y2", 0);
|
7815
|
-
textUpdate.attr("x", Math.max(tickMajorSize, 0) + tickPadding).attr("y", 0);
|
7929
|
+
lineEnter.attr("x2", innerTickSize);
|
7930
|
+
textEnter.attr("x", Math.max(innerTickSize, 0) + tickPadding);
|
7931
|
+
lineUpdate.attr("x2", innerTickSize).attr("y2", 0);
|
7932
|
+
textUpdate.attr("x", Math.max(innerTickSize, 0) + tickPadding).attr("y", 0);
|
7816
7933
|
text.attr("dy", ".32em").style("text-anchor", "start");
|
7817
|
-
pathUpdate.attr("d", "M" +
|
7934
|
+
pathUpdate.attr("d", "M" + outerTickSize + "," + range[0] + "H0V" + range[1] + "H" + outerTickSize);
|
7818
7935
|
break;
|
7819
7936
|
}
|
7820
7937
|
}
|
@@ -7828,9 +7945,6 @@ d3 = function() {
|
|
7828
7945
|
tickEnter.call(tickTransform, scale0);
|
7829
7946
|
tickUpdate.call(tickTransform, scale1);
|
7830
7947
|
tickExit.call(tickTransform, scale1);
|
7831
|
-
subtickEnter.call(tickTransform, scale0);
|
7832
|
-
subtickUpdate.call(tickTransform, scale1);
|
7833
|
-
subtickExit.call(tickTransform, scale1);
|
7834
7948
|
}
|
7835
7949
|
});
|
7836
7950
|
}
|
@@ -7859,12 +7973,21 @@ d3 = function() {
|
|
7859
7973
|
tickFormat_ = x;
|
7860
7974
|
return axis;
|
7861
7975
|
};
|
7862
|
-
axis.tickSize = function(x
|
7863
|
-
|
7864
|
-
|
7865
|
-
|
7866
|
-
|
7867
|
-
|
7976
|
+
axis.tickSize = function(x) {
|
7977
|
+
var n = arguments.length;
|
7978
|
+
if (!n) return innerTickSize;
|
7979
|
+
innerTickSize = +x;
|
7980
|
+
outerTickSize = +arguments[n - 1];
|
7981
|
+
return axis;
|
7982
|
+
};
|
7983
|
+
axis.innerTickSize = function(x) {
|
7984
|
+
if (!arguments.length) return innerTickSize;
|
7985
|
+
innerTickSize = +x;
|
7986
|
+
return axis;
|
7987
|
+
};
|
7988
|
+
axis.outerTickSize = function(x) {
|
7989
|
+
if (!arguments.length) return outerTickSize;
|
7990
|
+
outerTickSize = +x;
|
7868
7991
|
return axis;
|
7869
7992
|
};
|
7870
7993
|
axis.tickPadding = function(x) {
|
@@ -7872,10 +7995,8 @@ d3 = function() {
|
|
7872
7995
|
tickPadding = +x;
|
7873
7996
|
return axis;
|
7874
7997
|
};
|
7875
|
-
axis.tickSubdivide = function(
|
7876
|
-
|
7877
|
-
tickSubdivide = +x;
|
7878
|
-
return axis;
|
7998
|
+
axis.tickSubdivide = function() {
|
7999
|
+
return arguments.length && axis;
|
7879
8000
|
};
|
7880
8001
|
return axis;
|
7881
8002
|
};
|
@@ -7895,32 +8016,17 @@ d3 = function() {
|
|
7895
8016
|
return "translate(0," + y(d) + ")";
|
7896
8017
|
});
|
7897
8018
|
}
|
7898
|
-
function d3_svg_axisSubdivide(scale, ticks, m) {
|
7899
|
-
subticks = [];
|
7900
|
-
if (m && ticks.length > 1) {
|
7901
|
-
var extent = d3_scaleExtent(scale.domain()), subticks, i = -1, n = ticks.length, d = (ticks[1] - ticks[0]) / ++m, j, v;
|
7902
|
-
while (++i < n) {
|
7903
|
-
for (j = m; --j > 0; ) {
|
7904
|
-
if ((v = +ticks[i] - j * d) >= extent[0]) {
|
7905
|
-
subticks.push(v);
|
7906
|
-
}
|
7907
|
-
}
|
7908
|
-
}
|
7909
|
-
for (--i, j = 0; ++j < m && (v = +ticks[i] + j * d) < extent[1]; ) {
|
7910
|
-
subticks.push(v);
|
7911
|
-
}
|
7912
|
-
}
|
7913
|
-
return subticks;
|
7914
|
-
}
|
7915
8019
|
d3.svg.brush = function() {
|
7916
|
-
var event = d3_eventDispatch(brush, "brushstart", "brush", "brushend"), x = null, y = null,
|
8020
|
+
var event = d3_eventDispatch(brush, "brushstart", "brush", "brushend"), x = null, y = null, xExtent = [ 0, 0 ], yExtent = [ 0, 0 ], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0];
|
7917
8021
|
function brush(g) {
|
7918
8022
|
g.each(function() {
|
7919
|
-
var g = d3.select(this)
|
7920
|
-
g.
|
7921
|
-
|
7922
|
-
|
7923
|
-
|
8023
|
+
var g = d3.select(this).style("pointer-events", "all").style("-webkit-tap-highlight-color", "rgba(0,0,0,0)").on("mousedown.brush", brushstart).on("touchstart.brush", brushstart);
|
8024
|
+
var background = g.selectAll(".background").data([ 0 ]);
|
8025
|
+
background.enter().append("rect").attr("class", "background").style("visibility", "hidden").style("cursor", "crosshair");
|
8026
|
+
g.selectAll(".extent").data([ 0 ]).enter().append("rect").attr("class", "extent").style("cursor", "move");
|
8027
|
+
var resize = g.selectAll(".resize").data(resizes, d3_identity);
|
8028
|
+
resize.exit().remove();
|
8029
|
+
resize.enter().append("g").attr("class", function(d) {
|
7924
8030
|
return "resize " + d;
|
7925
8031
|
}).style("cursor", function(d) {
|
7926
8032
|
return d3_svg_brushCursor[d];
|
@@ -7929,33 +8035,87 @@ d3 = function() {
|
|
7929
8035
|
}).attr("y", function(d) {
|
7930
8036
|
return /^[ns]/.test(d) ? -3 : null;
|
7931
8037
|
}).attr("width", 6).attr("height", 6).style("visibility", "hidden");
|
7932
|
-
|
7933
|
-
|
8038
|
+
resize.style("display", brush.empty() ? "none" : null);
|
8039
|
+
var gUpdate = d3.transition(g), backgroundUpdate = d3.transition(background), range;
|
7934
8040
|
if (x) {
|
7935
|
-
|
7936
|
-
|
7937
|
-
redrawX(
|
8041
|
+
range = d3_scaleRange(x);
|
8042
|
+
backgroundUpdate.attr("x", range[0]).attr("width", range[1] - range[0]);
|
8043
|
+
redrawX(gUpdate);
|
7938
8044
|
}
|
7939
8045
|
if (y) {
|
7940
|
-
|
7941
|
-
|
7942
|
-
redrawY(
|
8046
|
+
range = d3_scaleRange(y);
|
8047
|
+
backgroundUpdate.attr("y", range[0]).attr("height", range[1] - range[0]);
|
8048
|
+
redrawY(gUpdate);
|
7943
8049
|
}
|
7944
|
-
redraw(
|
8050
|
+
redraw(gUpdate);
|
7945
8051
|
});
|
7946
8052
|
}
|
8053
|
+
brush.event = function(g) {
|
8054
|
+
g.each(function() {
|
8055
|
+
var event_ = event.of(this, arguments), extent1 = {
|
8056
|
+
x: xExtent,
|
8057
|
+
y: yExtent,
|
8058
|
+
i: xExtentDomain,
|
8059
|
+
j: yExtentDomain
|
8060
|
+
}, extent0 = this.__chart__ || extent1;
|
8061
|
+
this.__chart__ = extent1;
|
8062
|
+
if (d3_transitionInheritId) {
|
8063
|
+
d3.select(this).transition().each("start.brush", function() {
|
8064
|
+
xExtentDomain = extent0.i;
|
8065
|
+
yExtentDomain = extent0.j;
|
8066
|
+
xExtent = extent0.x;
|
8067
|
+
yExtent = extent0.y;
|
8068
|
+
event_({
|
8069
|
+
type: "brushstart"
|
8070
|
+
});
|
8071
|
+
}).tween("brush:brush", function() {
|
8072
|
+
var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y);
|
8073
|
+
xExtentDomain = yExtentDomain = null;
|
8074
|
+
return function(t) {
|
8075
|
+
xExtent = extent1.x = xi(t);
|
8076
|
+
yExtent = extent1.y = yi(t);
|
8077
|
+
event_({
|
8078
|
+
type: "brush",
|
8079
|
+
mode: "resize"
|
8080
|
+
});
|
8081
|
+
};
|
8082
|
+
}).each("end.brush", function() {
|
8083
|
+
xExtentDomain = extent1.i;
|
8084
|
+
yExtentDomain = extent1.j;
|
8085
|
+
event_({
|
8086
|
+
type: "brush",
|
8087
|
+
mode: "resize"
|
8088
|
+
});
|
8089
|
+
event_({
|
8090
|
+
type: "brushend"
|
8091
|
+
});
|
8092
|
+
});
|
8093
|
+
} else {
|
8094
|
+
event_({
|
8095
|
+
type: "brushstart"
|
8096
|
+
});
|
8097
|
+
event_({
|
8098
|
+
type: "brush",
|
8099
|
+
mode: "resize"
|
8100
|
+
});
|
8101
|
+
event_({
|
8102
|
+
type: "brushend"
|
8103
|
+
});
|
8104
|
+
}
|
8105
|
+
});
|
8106
|
+
};
|
7947
8107
|
function redraw(g) {
|
7948
8108
|
g.selectAll(".resize").attr("transform", function(d) {
|
7949
|
-
return "translate(" +
|
8109
|
+
return "translate(" + xExtent[+/e$/.test(d)] + "," + yExtent[+/^s/.test(d)] + ")";
|
7950
8110
|
});
|
7951
8111
|
}
|
7952
8112
|
function redrawX(g) {
|
7953
|
-
g.select(".extent").attr("x",
|
7954
|
-
g.selectAll(".extent,.n>rect,.s>rect").attr("width",
|
8113
|
+
g.select(".extent").attr("x", xExtent[0]);
|
8114
|
+
g.selectAll(".extent,.n>rect,.s>rect").attr("width", xExtent[1] - xExtent[0]);
|
7955
8115
|
}
|
7956
8116
|
function redrawY(g) {
|
7957
|
-
g.select(".extent").attr("y",
|
7958
|
-
g.selectAll(".extent,.e>rect,.w>rect").attr("height",
|
8117
|
+
g.select(".extent").attr("y", yExtent[0]);
|
8118
|
+
g.selectAll(".extent,.e>rect,.w>rect").attr("height", yExtent[1] - yExtent[0]);
|
7959
8119
|
}
|
7960
8120
|
function brushstart() {
|
7961
8121
|
var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed("extent"), dragRestore = d3_event_dragSuppress(), center, origin = mouse(), offset;
|
@@ -7965,14 +8125,15 @@ d3 = function() {
|
|
7965
8125
|
} else {
|
7966
8126
|
w.on("mousemove.brush", brushmove).on("mouseup.brush", brushend);
|
7967
8127
|
}
|
8128
|
+
g.interrupt().selectAll("*").interrupt();
|
7968
8129
|
if (dragging) {
|
7969
|
-
origin[0] =
|
7970
|
-
origin[1] =
|
8130
|
+
origin[0] = xExtent[0] - origin[0];
|
8131
|
+
origin[1] = yExtent[0] - origin[1];
|
7971
8132
|
} else if (resizing) {
|
7972
8133
|
var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);
|
7973
|
-
offset = [
|
7974
|
-
origin[0] =
|
7975
|
-
origin[1] =
|
8134
|
+
offset = [ xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1] ];
|
8135
|
+
origin[0] = xExtent[ex];
|
8136
|
+
origin[1] = yExtent[ey];
|
7976
8137
|
} else if (d3.event.altKey) center = origin.slice();
|
7977
8138
|
g.style("pointer-events", "none").selectAll(".resize").style("display", null);
|
7978
8139
|
d3.select("body").style("cursor", eventTarget.style("cursor"));
|
@@ -7988,8 +8149,8 @@ d3 = function() {
|
|
7988
8149
|
if (d3.event.keyCode == 32) {
|
7989
8150
|
if (!dragging) {
|
7990
8151
|
center = null;
|
7991
|
-
origin[0] -=
|
7992
|
-
origin[1] -=
|
8152
|
+
origin[0] -= xExtent[1];
|
8153
|
+
origin[1] -= yExtent[1];
|
7993
8154
|
dragging = 2;
|
7994
8155
|
}
|
7995
8156
|
d3_eventPreventDefault();
|
@@ -7997,8 +8158,8 @@ d3 = function() {
|
|
7997
8158
|
}
|
7998
8159
|
function keyup() {
|
7999
8160
|
if (d3.event.keyCode == 32 && dragging == 2) {
|
8000
|
-
origin[0] +=
|
8001
|
-
origin[1] +=
|
8161
|
+
origin[0] += xExtent[1];
|
8162
|
+
origin[1] += yExtent[1];
|
8002
8163
|
dragging = 0;
|
8003
8164
|
d3_eventPreventDefault();
|
8004
8165
|
}
|
@@ -8011,9 +8172,9 @@ d3 = function() {
|
|
8011
8172
|
}
|
8012
8173
|
if (!dragging) {
|
8013
8174
|
if (d3.event.altKey) {
|
8014
|
-
if (!center) center = [ (
|
8015
|
-
origin[0] =
|
8016
|
-
origin[1] =
|
8175
|
+
if (!center) center = [ (xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2 ];
|
8176
|
+
origin[0] = xExtent[+(point[0] < center[0])];
|
8177
|
+
origin[1] = yExtent[+(point[1] < center[1])];
|
8017
8178
|
} else center = null;
|
8018
8179
|
}
|
8019
8180
|
if (resizingX && move1(point, x, 0)) {
|
@@ -8033,12 +8194,12 @@ d3 = function() {
|
|
8033
8194
|
}
|
8034
8195
|
}
|
8035
8196
|
function move1(point, scale, i) {
|
8036
|
-
var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], size = extent[1]
|
8197
|
+
var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max;
|
8037
8198
|
if (dragging) {
|
8038
8199
|
r0 -= position;
|
8039
8200
|
r1 -= size + position;
|
8040
8201
|
}
|
8041
|
-
min =
|
8202
|
+
min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i];
|
8042
8203
|
if (dragging) {
|
8043
8204
|
max = (min += position) + size;
|
8044
8205
|
} else {
|
@@ -8050,10 +8211,10 @@ d3 = function() {
|
|
8050
8211
|
max = position;
|
8051
8212
|
}
|
8052
8213
|
}
|
8053
|
-
if (extent[0]
|
8054
|
-
|
8055
|
-
extent[0]
|
8056
|
-
extent[1]
|
8214
|
+
if (extent[0] != min || extent[1] != max) {
|
8215
|
+
if (i) yExtentDomain = null; else xExtentDomain = null;
|
8216
|
+
extent[0] = min;
|
8217
|
+
extent[1] = max;
|
8057
8218
|
return true;
|
8058
8219
|
}
|
8059
8220
|
}
|
@@ -8081,58 +8242,60 @@ d3 = function() {
|
|
8081
8242
|
return brush;
|
8082
8243
|
};
|
8083
8244
|
brush.clamp = function(z) {
|
8084
|
-
if (!arguments.length) return x && y ?
|
8085
|
-
if (x && y)
|
8245
|
+
if (!arguments.length) return x && y ? [ xClamp, yClamp ] : x ? xClamp : y ? yClamp : null;
|
8246
|
+
if (x && y) xClamp = !!z[0], yClamp = !!z[1]; else if (x) xClamp = !!z; else if (y) yClamp = !!z;
|
8086
8247
|
return brush;
|
8087
8248
|
};
|
8088
8249
|
brush.extent = function(z) {
|
8089
8250
|
var x0, x1, y0, y1, t;
|
8090
8251
|
if (!arguments.length) {
|
8091
|
-
z = extentDomain || extent;
|
8092
8252
|
if (x) {
|
8093
|
-
|
8094
|
-
|
8095
|
-
|
8253
|
+
if (xExtentDomain) {
|
8254
|
+
x0 = xExtentDomain[0], x1 = xExtentDomain[1];
|
8255
|
+
} else {
|
8256
|
+
x0 = xExtent[0], x1 = xExtent[1];
|
8096
8257
|
if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);
|
8097
8258
|
if (x1 < x0) t = x0, x0 = x1, x1 = t;
|
8098
8259
|
}
|
8099
8260
|
}
|
8100
8261
|
if (y) {
|
8101
|
-
|
8102
|
-
|
8103
|
-
|
8262
|
+
if (yExtentDomain) {
|
8263
|
+
y0 = yExtentDomain[0], y1 = yExtentDomain[1];
|
8264
|
+
} else {
|
8265
|
+
y0 = yExtent[0], y1 = yExtent[1];
|
8104
8266
|
if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);
|
8105
8267
|
if (y1 < y0) t = y0, y0 = y1, y1 = t;
|
8106
8268
|
}
|
8107
8269
|
}
|
8108
8270
|
return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ];
|
8109
8271
|
}
|
8110
|
-
extentDomain = [ [ 0, 0 ], [ 0, 0 ] ];
|
8111
8272
|
if (x) {
|
8112
8273
|
x0 = z[0], x1 = z[1];
|
8113
8274
|
if (y) x0 = x0[0], x1 = x1[0];
|
8114
|
-
|
8275
|
+
xExtentDomain = [ x0, x1 ];
|
8115
8276
|
if (x.invert) x0 = x(x0), x1 = x(x1);
|
8116
8277
|
if (x1 < x0) t = x0, x0 = x1, x1 = t;
|
8117
|
-
|
8278
|
+
if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [ x0, x1 ];
|
8118
8279
|
}
|
8119
8280
|
if (y) {
|
8120
8281
|
y0 = z[0], y1 = z[1];
|
8121
8282
|
if (x) y0 = y0[1], y1 = y1[1];
|
8122
|
-
|
8283
|
+
yExtentDomain = [ y0, y1 ];
|
8123
8284
|
if (y.invert) y0 = y(y0), y1 = y(y1);
|
8124
8285
|
if (y1 < y0) t = y0, y0 = y1, y1 = t;
|
8125
|
-
|
8286
|
+
if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [ y0, y1 ];
|
8126
8287
|
}
|
8127
8288
|
return brush;
|
8128
8289
|
};
|
8129
8290
|
brush.clear = function() {
|
8130
|
-
|
8131
|
-
|
8291
|
+
if (!brush.empty()) {
|
8292
|
+
xExtent = [ 0, 0 ], yExtent = [ 0, 0 ];
|
8293
|
+
xExtentDomain = yExtentDomain = null;
|
8294
|
+
}
|
8132
8295
|
return brush;
|
8133
8296
|
};
|
8134
8297
|
brush.empty = function() {
|
8135
|
-
return x &&
|
8298
|
+
return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1];
|
8136
8299
|
};
|
8137
8300
|
return d3.rebind(brush, event, "on");
|
8138
8301
|
};
|
@@ -8147,12 +8310,11 @@ d3 = function() {
|
|
8147
8310
|
sw: "nesw-resize"
|
8148
8311
|
};
|
8149
8312
|
var d3_svg_brushResizes = [ [ "n", "e", "s", "w", "nw", "ne", "se", "sw" ], [ "e", "w" ], [ "n", "s" ], [] ];
|
8150
|
-
d3.time = {};
|
8151
|
-
|
8152
|
-
function d3_time_utc() {
|
8313
|
+
var d3_time = d3.time = {}, d3_date = Date, d3_time_daySymbols = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ];
|
8314
|
+
function d3_date_utc() {
|
8153
8315
|
this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);
|
8154
8316
|
}
|
8155
|
-
|
8317
|
+
d3_date_utc.prototype = {
|
8156
8318
|
getDate: function() {
|
8157
8319
|
return this._.getUTCDate();
|
8158
8320
|
},
|
@@ -8223,11 +8385,11 @@ d3 = function() {
|
|
8223
8385
|
return date - d0 < d1 - date ? d0 : d1;
|
8224
8386
|
}
|
8225
8387
|
function ceil(date) {
|
8226
|
-
step(date = local(new
|
8388
|
+
step(date = local(new d3_date(date - 1)), 1);
|
8227
8389
|
return date;
|
8228
8390
|
}
|
8229
8391
|
function offset(date, k) {
|
8230
|
-
step(date = new
|
8392
|
+
step(date = new d3_date(+date), k);
|
8231
8393
|
return date;
|
8232
8394
|
}
|
8233
8395
|
function range(t0, t1, dt) {
|
@@ -8244,12 +8406,12 @@ d3 = function() {
|
|
8244
8406
|
}
|
8245
8407
|
function range_utc(t0, t1, dt) {
|
8246
8408
|
try {
|
8247
|
-
|
8248
|
-
var utc = new
|
8409
|
+
d3_date = d3_date_utc;
|
8410
|
+
var utc = new d3_date_utc();
|
8249
8411
|
utc._ = t0;
|
8250
8412
|
return range(utc, t1, dt);
|
8251
8413
|
} finally {
|
8252
|
-
|
8414
|
+
d3_date = Date;
|
8253
8415
|
}
|
8254
8416
|
}
|
8255
8417
|
local.floor = local;
|
@@ -8268,17 +8430,17 @@ d3 = function() {
|
|
8268
8430
|
function d3_time_interval_utc(method) {
|
8269
8431
|
return function(date, k) {
|
8270
8432
|
try {
|
8271
|
-
|
8272
|
-
var utc = new
|
8433
|
+
d3_date = d3_date_utc;
|
8434
|
+
var utc = new d3_date_utc();
|
8273
8435
|
utc._ = date;
|
8274
8436
|
return method(utc, k)._;
|
8275
8437
|
} finally {
|
8276
|
-
|
8438
|
+
d3_date = Date;
|
8277
8439
|
}
|
8278
8440
|
};
|
8279
8441
|
}
|
8280
|
-
|
8281
|
-
date =
|
8442
|
+
d3_time.year = d3_time_interval(function(date) {
|
8443
|
+
date = d3_time.day(date);
|
8282
8444
|
date.setMonth(0, 1);
|
8283
8445
|
return date;
|
8284
8446
|
}, function(date, offset) {
|
@@ -8286,10 +8448,10 @@ d3 = function() {
|
|
8286
8448
|
}, function(date) {
|
8287
8449
|
return date.getFullYear();
|
8288
8450
|
});
|
8289
|
-
|
8290
|
-
|
8291
|
-
|
8292
|
-
var day = new
|
8451
|
+
d3_time.years = d3_time.year.range;
|
8452
|
+
d3_time.years.utc = d3_time.year.utc.range;
|
8453
|
+
d3_time.day = d3_time_interval(function(date) {
|
8454
|
+
var day = new d3_date(2e3, 0);
|
8293
8455
|
day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());
|
8294
8456
|
return day;
|
8295
8457
|
}, function(date, offset) {
|
@@ -8297,36 +8459,37 @@ d3 = function() {
|
|
8297
8459
|
}, function(date) {
|
8298
8460
|
return date.getDate() - 1;
|
8299
8461
|
});
|
8300
|
-
|
8301
|
-
|
8302
|
-
|
8303
|
-
var year =
|
8462
|
+
d3_time.days = d3_time.day.range;
|
8463
|
+
d3_time.days.utc = d3_time.day.utc.range;
|
8464
|
+
d3_time.dayOfYear = function(date) {
|
8465
|
+
var year = d3_time.year(date);
|
8304
8466
|
return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);
|
8305
8467
|
};
|
8306
8468
|
d3_time_daySymbols.forEach(function(day, i) {
|
8307
8469
|
day = day.toLowerCase();
|
8308
8470
|
i = 7 - i;
|
8309
|
-
var interval =
|
8310
|
-
(date =
|
8471
|
+
var interval = d3_time[day] = d3_time_interval(function(date) {
|
8472
|
+
(date = d3_time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7);
|
8311
8473
|
return date;
|
8312
8474
|
}, function(date, offset) {
|
8313
8475
|
date.setDate(date.getDate() + Math.floor(offset) * 7);
|
8314
8476
|
}, function(date) {
|
8315
|
-
var day =
|
8316
|
-
return Math.floor((
|
8477
|
+
var day = d3_time.year(date).getDay();
|
8478
|
+
return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i);
|
8317
8479
|
});
|
8318
|
-
|
8319
|
-
|
8320
|
-
|
8321
|
-
var day =
|
8322
|
-
return Math.floor((
|
8480
|
+
d3_time[day + "s"] = interval.range;
|
8481
|
+
d3_time[day + "s"].utc = interval.utc.range;
|
8482
|
+
d3_time[day + "OfYear"] = function(date) {
|
8483
|
+
var day = d3_time.year(date).getDay();
|
8484
|
+
return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7);
|
8323
8485
|
};
|
8324
8486
|
});
|
8325
|
-
|
8326
|
-
|
8327
|
-
|
8328
|
-
|
8329
|
-
|
8487
|
+
d3_time.week = d3_time.sunday;
|
8488
|
+
d3_time.weeks = d3_time.sunday.range;
|
8489
|
+
d3_time.weeks.utc = d3_time.sunday.utc.range;
|
8490
|
+
d3_time.weekOfYear = d3_time.sundayOfYear;
|
8491
|
+
d3_time.format = d3_time_format;
|
8492
|
+
function d3_time_format(template) {
|
8330
8493
|
var n = template.length;
|
8331
8494
|
function format(date) {
|
8332
8495
|
var string = [], i = -1, j = 0, c, p, f;
|
@@ -8354,7 +8517,7 @@ d3 = function() {
|
|
8354
8517
|
}, i = d3_time_parse(d, template, string, 0);
|
8355
8518
|
if (i != string.length) return null;
|
8356
8519
|
if ("p" in d) d.H = d.H % 12 + d.p * 12;
|
8357
|
-
var date = new
|
8520
|
+
var date = new d3_date();
|
8358
8521
|
if ("j" in d) date.setFullYear(d.y, 0, d.j); else if ("w" in d && ("W" in d || "U" in d)) {
|
8359
8522
|
date.setFullYear(d.y, 0, 1);
|
8360
8523
|
date.setFullYear(d.y, 0, "W" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7);
|
@@ -8366,7 +8529,7 @@ d3 = function() {
|
|
8366
8529
|
return template;
|
8367
8530
|
};
|
8368
8531
|
return format;
|
8369
|
-
}
|
8532
|
+
}
|
8370
8533
|
function d3_time_parse(date, template, string, j) {
|
8371
8534
|
var c, p, i = 0, n = template.length, m = string.length;
|
8372
8535
|
while (i < n) {
|
@@ -8412,7 +8575,7 @@ d3 = function() {
|
|
8412
8575
|
B: function(d) {
|
8413
8576
|
return d3_time_months[d.getMonth()];
|
8414
8577
|
},
|
8415
|
-
c:
|
8578
|
+
c: d3_time_format(d3_time_formatDateTime),
|
8416
8579
|
d: function(d, p) {
|
8417
8580
|
return d3_time_formatPad(d.getDate(), p, 2);
|
8418
8581
|
},
|
@@ -8426,7 +8589,7 @@ d3 = function() {
|
|
8426
8589
|
return d3_time_formatPad(d.getHours() % 12 || 12, p, 2);
|
8427
8590
|
},
|
8428
8591
|
j: function(d, p) {
|
8429
|
-
return d3_time_formatPad(1 +
|
8592
|
+
return d3_time_formatPad(1 + d3_time.dayOfYear(d), p, 3);
|
8430
8593
|
},
|
8431
8594
|
L: function(d, p) {
|
8432
8595
|
return d3_time_formatPad(d.getMilliseconds(), p, 3);
|
@@ -8444,16 +8607,16 @@ d3 = function() {
|
|
8444
8607
|
return d3_time_formatPad(d.getSeconds(), p, 2);
|
8445
8608
|
},
|
8446
8609
|
U: function(d, p) {
|
8447
|
-
return d3_time_formatPad(
|
8610
|
+
return d3_time_formatPad(d3_time.sundayOfYear(d), p, 2);
|
8448
8611
|
},
|
8449
8612
|
w: function(d) {
|
8450
8613
|
return d.getDay();
|
8451
8614
|
},
|
8452
8615
|
W: function(d, p) {
|
8453
|
-
return d3_time_formatPad(
|
8616
|
+
return d3_time_formatPad(d3_time.mondayOfYear(d), p, 2);
|
8454
8617
|
},
|
8455
|
-
x:
|
8456
|
-
X:
|
8618
|
+
x: d3_time_format(d3_time_formatDate),
|
8619
|
+
X: d3_time_format(d3_time_formatTime),
|
8457
8620
|
y: function(d, p) {
|
8458
8621
|
return d3_time_formatPad(d.getFullYear() % 100, p, 2);
|
8459
8622
|
},
|
@@ -8600,32 +8763,33 @@ d3 = function() {
|
|
8600
8763
|
var n = d3_time_percentRe.exec(string.substring(i, i + 1));
|
8601
8764
|
return n ? i + n[0].length : -1;
|
8602
8765
|
}
|
8603
|
-
|
8604
|
-
|
8766
|
+
d3_time_format.utc = d3_time_formatUtc;
|
8767
|
+
function d3_time_formatUtc(template) {
|
8768
|
+
var local = d3_time_format(template);
|
8605
8769
|
function format(date) {
|
8606
8770
|
try {
|
8607
|
-
|
8608
|
-
var utc = new
|
8771
|
+
d3_date = d3_date_utc;
|
8772
|
+
var utc = new d3_date();
|
8609
8773
|
utc._ = date;
|
8610
8774
|
return local(utc);
|
8611
8775
|
} finally {
|
8612
|
-
|
8776
|
+
d3_date = Date;
|
8613
8777
|
}
|
8614
8778
|
}
|
8615
8779
|
format.parse = function(string) {
|
8616
8780
|
try {
|
8617
|
-
|
8781
|
+
d3_date = d3_date_utc;
|
8618
8782
|
var date = local.parse(string);
|
8619
8783
|
return date && date._;
|
8620
8784
|
} finally {
|
8621
|
-
|
8785
|
+
d3_date = Date;
|
8622
8786
|
}
|
8623
8787
|
};
|
8624
8788
|
format.toString = local.toString;
|
8625
8789
|
return format;
|
8626
|
-
}
|
8627
|
-
var d3_time_formatIso =
|
8628
|
-
|
8790
|
+
}
|
8791
|
+
var d3_time_formatIso = d3_time_formatUtc("%Y-%m-%dT%H:%M:%S.%LZ");
|
8792
|
+
d3_time_format.iso = Date.prototype.toISOString && +new Date("2000-01-01T00:00:00.000Z") ? d3_time_formatIsoNative : d3_time_formatIso;
|
8629
8793
|
function d3_time_formatIsoNative(date) {
|
8630
8794
|
return date.toISOString();
|
8631
8795
|
}
|
@@ -8634,36 +8798,36 @@ d3 = function() {
|
|
8634
8798
|
return isNaN(date) ? null : date;
|
8635
8799
|
};
|
8636
8800
|
d3_time_formatIsoNative.toString = d3_time_formatIso.toString;
|
8637
|
-
|
8638
|
-
return new
|
8801
|
+
d3_time.second = d3_time_interval(function(date) {
|
8802
|
+
return new d3_date(Math.floor(date / 1e3) * 1e3);
|
8639
8803
|
}, function(date, offset) {
|
8640
8804
|
date.setTime(date.getTime() + Math.floor(offset) * 1e3);
|
8641
8805
|
}, function(date) {
|
8642
8806
|
return date.getSeconds();
|
8643
8807
|
});
|
8644
|
-
|
8645
|
-
|
8646
|
-
|
8647
|
-
return new
|
8808
|
+
d3_time.seconds = d3_time.second.range;
|
8809
|
+
d3_time.seconds.utc = d3_time.second.utc.range;
|
8810
|
+
d3_time.minute = d3_time_interval(function(date) {
|
8811
|
+
return new d3_date(Math.floor(date / 6e4) * 6e4);
|
8648
8812
|
}, function(date, offset) {
|
8649
8813
|
date.setTime(date.getTime() + Math.floor(offset) * 6e4);
|
8650
8814
|
}, function(date) {
|
8651
8815
|
return date.getMinutes();
|
8652
8816
|
});
|
8653
|
-
|
8654
|
-
|
8655
|
-
|
8817
|
+
d3_time.minutes = d3_time.minute.range;
|
8818
|
+
d3_time.minutes.utc = d3_time.minute.utc.range;
|
8819
|
+
d3_time.hour = d3_time_interval(function(date) {
|
8656
8820
|
var timezone = date.getTimezoneOffset() / 60;
|
8657
|
-
return new
|
8821
|
+
return new d3_date((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);
|
8658
8822
|
}, function(date, offset) {
|
8659
8823
|
date.setTime(date.getTime() + Math.floor(offset) * 36e5);
|
8660
8824
|
}, function(date) {
|
8661
8825
|
return date.getHours();
|
8662
8826
|
});
|
8663
|
-
|
8664
|
-
|
8665
|
-
|
8666
|
-
date =
|
8827
|
+
d3_time.hours = d3_time.hour.range;
|
8828
|
+
d3_time.hours.utc = d3_time.hour.utc.range;
|
8829
|
+
d3_time.month = d3_time_interval(function(date) {
|
8830
|
+
date = d3_time.day(date);
|
8667
8831
|
date.setDate(1);
|
8668
8832
|
return date;
|
8669
8833
|
}, function(date, offset) {
|
@@ -8671,8 +8835,8 @@ d3 = function() {
|
|
8671
8835
|
}, function(date) {
|
8672
8836
|
return date.getMonth();
|
8673
8837
|
});
|
8674
|
-
|
8675
|
-
|
8838
|
+
d3_time.months = d3_time.month.range;
|
8839
|
+
d3_time.months.utc = d3_time.month.utc.range;
|
8676
8840
|
function d3_time_scale(linear, methods, format) {
|
8677
8841
|
function scale(x) {
|
8678
8842
|
return linear(x);
|
@@ -8685,21 +8849,35 @@ d3 = function() {
|
|
8685
8849
|
linear.domain(x);
|
8686
8850
|
return scale;
|
8687
8851
|
};
|
8688
|
-
|
8689
|
-
|
8852
|
+
function tickMethod(extent, count) {
|
8853
|
+
var span = extent[1] - extent[0], target = span / count, i = d3.bisect(d3_time_scaleSteps, target);
|
8854
|
+
return i == d3_time_scaleSteps.length ? [ methods.year, d3_scale_linearTickRange(extent.map(function(d) {
|
8855
|
+
return d / 31536e6;
|
8856
|
+
}), count)[2] ] : !i ? [ d3_time_scaleMilliseconds, d3_scale_linearTickRange(extent, count)[2] ] : methods[target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target ? i - 1 : i];
|
8857
|
+
}
|
8858
|
+
scale.nice = function(interval, skip) {
|
8859
|
+
var domain = scale.domain(), extent = d3_scaleExtent(domain), method = interval == null ? tickMethod(extent, 10) : typeof interval === "number" && tickMethod(extent, interval);
|
8860
|
+
if (method) interval = method[0], skip = method[1];
|
8861
|
+
function skipped(date) {
|
8862
|
+
return !isNaN(date) && !interval.range(date, d3_time_scaleDate(+date + 1), skip).length;
|
8863
|
+
}
|
8864
|
+
return scale.domain(d3_scale_nice(domain, skip > 1 ? {
|
8865
|
+
floor: function(date) {
|
8866
|
+
while (skipped(date = interval.floor(date))) date = d3_time_scaleDate(date - 1);
|
8867
|
+
return date;
|
8868
|
+
},
|
8869
|
+
ceil: function(date) {
|
8870
|
+
while (skipped(date = interval.ceil(date))) date = d3_time_scaleDate(+date + 1);
|
8871
|
+
return date;
|
8872
|
+
}
|
8873
|
+
} : interval));
|
8690
8874
|
};
|
8691
|
-
scale.ticks = function(
|
8692
|
-
var extent = d3_scaleExtent(scale.domain())
|
8693
|
-
|
8694
|
-
|
8695
|
-
|
8696
|
-
|
8697
|
-
if (target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target) --i;
|
8698
|
-
m = methods[i];
|
8699
|
-
k = m[1];
|
8700
|
-
m = m[0].range;
|
8701
|
-
}
|
8702
|
-
return m(extent[0], new Date(+extent[1] + 1), k);
|
8875
|
+
scale.ticks = function(interval, skip) {
|
8876
|
+
var extent = d3_scaleExtent(scale.domain()), method = interval == null ? tickMethod(extent, 10) : typeof interval === "number" ? tickMethod(extent, interval) : !interval.range && [ {
|
8877
|
+
range: interval
|
8878
|
+
}, skip ];
|
8879
|
+
if (method) interval = method[0], skip = method[1];
|
8880
|
+
return interval.range(extent[0], d3_time_scaleDate(+extent[1] + 1), skip);
|
8703
8881
|
};
|
8704
8882
|
scale.tickFormat = function() {
|
8705
8883
|
return format;
|
@@ -8719,71 +8897,54 @@ d3 = function() {
|
|
8719
8897
|
return f[0](date);
|
8720
8898
|
};
|
8721
8899
|
}
|
8722
|
-
function d3_time_scaleSetYear(y) {
|
8723
|
-
var d = new Date(y, 0, 1);
|
8724
|
-
d.setFullYear(y);
|
8725
|
-
return d;
|
8726
|
-
}
|
8727
|
-
function d3_time_scaleGetYear(d) {
|
8728
|
-
var y = d.getFullYear(), d0 = d3_time_scaleSetYear(y), d1 = d3_time_scaleSetYear(y + 1);
|
8729
|
-
return y + (d - d0) / (d1 - d0);
|
8730
|
-
}
|
8731
8900
|
var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ];
|
8732
|
-
var d3_time_scaleLocalMethods = [ [
|
8733
|
-
var d3_time_scaleLocalFormats = [ [
|
8901
|
+
var d3_time_scaleLocalMethods = [ [ d3_time.second, 1 ], [ d3_time.second, 5 ], [ d3_time.second, 15 ], [ d3_time.second, 30 ], [ d3_time.minute, 1 ], [ d3_time.minute, 5 ], [ d3_time.minute, 15 ], [ d3_time.minute, 30 ], [ d3_time.hour, 1 ], [ d3_time.hour, 3 ], [ d3_time.hour, 6 ], [ d3_time.hour, 12 ], [ d3_time.day, 1 ], [ d3_time.day, 2 ], [ d3_time.week, 1 ], [ d3_time.month, 1 ], [ d3_time.month, 3 ], [ d3_time.year, 1 ] ];
|
8902
|
+
var d3_time_scaleLocalFormats = [ [ d3_time_format("%Y"), d3_true ], [ d3_time_format("%B"), function(d) {
|
8734
8903
|
return d.getMonth();
|
8735
|
-
} ], [
|
8904
|
+
} ], [ d3_time_format("%b %d"), function(d) {
|
8736
8905
|
return d.getDate() != 1;
|
8737
|
-
} ], [
|
8906
|
+
} ], [ d3_time_format("%a %d"), function(d) {
|
8738
8907
|
return d.getDay() && d.getDate() != 1;
|
8739
|
-
} ], [
|
8908
|
+
} ], [ d3_time_format("%I %p"), function(d) {
|
8740
8909
|
return d.getHours();
|
8741
|
-
} ], [
|
8910
|
+
} ], [ d3_time_format("%I:%M"), function(d) {
|
8742
8911
|
return d.getMinutes();
|
8743
|
-
} ], [
|
8912
|
+
} ], [ d3_time_format(":%S"), function(d) {
|
8744
8913
|
return d.getSeconds();
|
8745
|
-
} ], [
|
8914
|
+
} ], [ d3_time_format(".%L"), function(d) {
|
8746
8915
|
return d.getMilliseconds();
|
8747
8916
|
} ] ];
|
8748
|
-
var
|
8749
|
-
d3_time_scaleLocalMethods.year =
|
8750
|
-
|
8751
|
-
};
|
8752
|
-
d3.time.scale = function() {
|
8917
|
+
var d3_time_scaleLocalFormat = d3_time_scaleFormat(d3_time_scaleLocalFormats);
|
8918
|
+
d3_time_scaleLocalMethods.year = d3_time.year;
|
8919
|
+
d3_time.scale = function() {
|
8753
8920
|
return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat);
|
8754
8921
|
};
|
8922
|
+
var d3_time_scaleMilliseconds = {
|
8923
|
+
range: function(start, stop, step) {
|
8924
|
+
return d3.range(+start, +stop, step).map(d3_time_scaleDate);
|
8925
|
+
}
|
8926
|
+
};
|
8755
8927
|
var d3_time_scaleUTCMethods = d3_time_scaleLocalMethods.map(function(m) {
|
8756
8928
|
return [ m[0].utc, m[1] ];
|
8757
8929
|
});
|
8758
|
-
var d3_time_scaleUTCFormats = [ [
|
8930
|
+
var d3_time_scaleUTCFormats = [ [ d3_time_formatUtc("%Y"), d3_true ], [ d3_time_formatUtc("%B"), function(d) {
|
8759
8931
|
return d.getUTCMonth();
|
8760
|
-
} ], [
|
8932
|
+
} ], [ d3_time_formatUtc("%b %d"), function(d) {
|
8761
8933
|
return d.getUTCDate() != 1;
|
8762
|
-
} ], [
|
8934
|
+
} ], [ d3_time_formatUtc("%a %d"), function(d) {
|
8763
8935
|
return d.getUTCDay() && d.getUTCDate() != 1;
|
8764
|
-
} ], [
|
8936
|
+
} ], [ d3_time_formatUtc("%I %p"), function(d) {
|
8765
8937
|
return d.getUTCHours();
|
8766
|
-
} ], [
|
8938
|
+
} ], [ d3_time_formatUtc("%I:%M"), function(d) {
|
8767
8939
|
return d.getUTCMinutes();
|
8768
|
-
} ], [
|
8940
|
+
} ], [ d3_time_formatUtc(":%S"), function(d) {
|
8769
8941
|
return d.getUTCSeconds();
|
8770
|
-
} ], [
|
8942
|
+
} ], [ d3_time_formatUtc(".%L"), function(d) {
|
8771
8943
|
return d.getUTCMilliseconds();
|
8772
8944
|
} ] ];
|
8773
8945
|
var d3_time_scaleUTCFormat = d3_time_scaleFormat(d3_time_scaleUTCFormats);
|
8774
|
-
|
8775
|
-
|
8776
|
-
d.setUTCFullYear(y);
|
8777
|
-
return d;
|
8778
|
-
}
|
8779
|
-
function d3_time_scaleUTCGetYear(d) {
|
8780
|
-
var y = d.getUTCFullYear(), d0 = d3_time_scaleUTCSetYear(y), d1 = d3_time_scaleUTCSetYear(y + 1);
|
8781
|
-
return y + (d - d0) / (d1 - d0);
|
8782
|
-
}
|
8783
|
-
d3_time_scaleUTCMethods.year = function(extent, m) {
|
8784
|
-
return d3_time_scaleLinear.domain(extent.map(d3_time_scaleUTCGetYear)).ticks(m).map(d3_time_scaleUTCSetYear);
|
8785
|
-
};
|
8786
|
-
d3.time.scale.utc = function() {
|
8946
|
+
d3_time_scaleUTCMethods.year = d3_time.year.utc;
|
8947
|
+
d3_time.scale.utc = function() {
|
8787
8948
|
return d3_time_scale(d3.scale.linear(), d3_time_scaleUTCMethods, d3_time_scaleUTCFormat);
|
8788
8949
|
};
|
8789
8950
|
d3.text = d3_xhrType(function(request) {
|