d3c3-rails 0.1.0 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/app/assets/javascripts/d3c3_rails.js +0 -2
- data/app/assets/javascripts/d3c3_rails/{c3-0.3.0.js → c3-0.4.10.js} +2005 -1074
- data/app/assets/javascripts/d3c3_rails/{d3-3.4.11.js → d3-3.5.0.js} +554 -361
- data/app/assets/stylesheets/d3c3_rails.css.scss +1 -0
- data/app/assets/stylesheets/d3c3_rails/c3.css.scss +158 -0
- data/lib/d3c3-rails/version.rb +1 -1
- metadata +6 -6
- data/app/assets/stylesheets/d3c3_rails.css +0 -3
- data/app/assets/stylesheets/d3c3_rails/c3-0.3.0.css +0 -203
@@ -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;
|
@@ -78,35 +96,42 @@
|
|
78
96
|
}
|
79
97
|
return [ a, c ];
|
80
98
|
};
|
99
|
+
function d3_number(x) {
|
100
|
+
return x === null ? NaN : +x;
|
101
|
+
}
|
102
|
+
function d3_numeric(x) {
|
103
|
+
return !isNaN(x);
|
104
|
+
}
|
81
105
|
d3.sum = function(array, f) {
|
82
106
|
var s = 0, n = array.length, a, i = -1;
|
83
107
|
if (arguments.length === 1) {
|
84
|
-
while (++i < n) if (
|
108
|
+
while (++i < n) if (d3_numeric(a = +array[i])) s += a;
|
85
109
|
} else {
|
86
|
-
while (++i < n) if (
|
110
|
+
while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;
|
87
111
|
}
|
88
112
|
return s;
|
89
113
|
};
|
90
|
-
function d3_number(x) {
|
91
|
-
return x != null && !isNaN(x);
|
92
|
-
}
|
93
114
|
d3.mean = function(array, f) {
|
94
115
|
var s = 0, n = array.length, a, i = -1, j = n;
|
95
116
|
if (arguments.length === 1) {
|
96
|
-
while (++i < n) if (
|
117
|
+
while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;
|
97
118
|
} else {
|
98
|
-
while (++i < n) if (
|
119
|
+
while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;
|
99
120
|
}
|
100
|
-
|
121
|
+
if (j) return s / j;
|
101
122
|
};
|
102
123
|
d3.quantile = function(values, p) {
|
103
124
|
var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;
|
104
125
|
return e ? v + e * (values[h] - v) : v;
|
105
126
|
};
|
106
127
|
d3.median = function(array, f) {
|
107
|
-
|
108
|
-
|
109
|
-
|
128
|
+
var numbers = [], n = array.length, a, i = -1;
|
129
|
+
if (arguments.length === 1) {
|
130
|
+
while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);
|
131
|
+
} else {
|
132
|
+
while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);
|
133
|
+
}
|
134
|
+
if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);
|
110
135
|
};
|
111
136
|
function d3_bisector(compare) {
|
112
137
|
return {
|
@@ -138,11 +163,15 @@
|
|
138
163
|
return d3_ascending(f(d), x);
|
139
164
|
} : f);
|
140
165
|
};
|
141
|
-
d3.shuffle = function(array) {
|
142
|
-
|
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;
|
143
172
|
while (m) {
|
144
173
|
i = Math.random() * m-- | 0;
|
145
|
-
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;
|
146
175
|
}
|
147
176
|
return array;
|
148
177
|
};
|
@@ -223,80 +252,84 @@
|
|
223
252
|
return k;
|
224
253
|
}
|
225
254
|
function d3_class(ctor, properties) {
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
});
|
232
|
-
}
|
233
|
-
} catch (e) {
|
234
|
-
ctor.prototype = properties;
|
255
|
+
for (var key in properties) {
|
256
|
+
Object.defineProperty(ctor.prototype, key, {
|
257
|
+
value: properties[key],
|
258
|
+
enumerable: false
|
259
|
+
});
|
235
260
|
}
|
236
261
|
}
|
237
|
-
d3.map = function(object) {
|
262
|
+
d3.map = function(object, f) {
|
238
263
|
var map = new d3_Map();
|
239
|
-
if (object instanceof d3_Map)
|
240
|
-
|
241
|
-
|
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
|
+
}
|
242
274
|
return map;
|
243
275
|
};
|
244
|
-
function d3_Map() {
|
276
|
+
function d3_Map() {
|
277
|
+
this._ = Object.create(null);
|
278
|
+
}
|
279
|
+
var d3_map_proto = "__proto__", d3_map_zero = "\x00";
|
245
280
|
d3_class(d3_Map, {
|
246
281
|
has: d3_map_has,
|
247
282
|
get: function(key) {
|
248
|
-
return this[
|
283
|
+
return this._[d3_map_escape(key)];
|
249
284
|
},
|
250
285
|
set: function(key, value) {
|
251
|
-
return this[
|
286
|
+
return this._[d3_map_escape(key)] = value;
|
252
287
|
},
|
253
288
|
remove: d3_map_remove,
|
254
289
|
keys: d3_map_keys,
|
255
290
|
values: function() {
|
256
291
|
var values = [];
|
257
|
-
this.
|
258
|
-
values.push(value);
|
259
|
-
});
|
292
|
+
for (var key in this._) values.push(this._[key]);
|
260
293
|
return values;
|
261
294
|
},
|
262
295
|
entries: function() {
|
263
296
|
var entries = [];
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
value: value
|
268
|
-
});
|
297
|
+
for (var key in this._) entries.push({
|
298
|
+
key: d3_map_unescape(key),
|
299
|
+
value: this._[key]
|
269
300
|
});
|
270
301
|
return entries;
|
271
302
|
},
|
272
303
|
size: d3_map_size,
|
273
304
|
empty: d3_map_empty,
|
274
305
|
forEach: function(f) {
|
275
|
-
for (var key in this
|
306
|
+
for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);
|
276
307
|
}
|
277
308
|
});
|
278
|
-
|
309
|
+
function d3_map_escape(key) {
|
310
|
+
return (key += "") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;
|
311
|
+
}
|
312
|
+
function d3_map_unescape(key) {
|
313
|
+
return (key += "")[0] === d3_map_zero ? key.slice(1) : key;
|
314
|
+
}
|
279
315
|
function d3_map_has(key) {
|
280
|
-
return
|
316
|
+
return d3_map_escape(key) in this._;
|
281
317
|
}
|
282
318
|
function d3_map_remove(key) {
|
283
|
-
key =
|
284
|
-
return key in this && delete this[key];
|
319
|
+
return (key = d3_map_escape(key)) in this._ && delete this._[key];
|
285
320
|
}
|
286
321
|
function d3_map_keys() {
|
287
322
|
var keys = [];
|
288
|
-
this.
|
289
|
-
keys.push(key);
|
290
|
-
});
|
323
|
+
for (var key in this._) keys.push(d3_map_unescape(key));
|
291
324
|
return keys;
|
292
325
|
}
|
293
326
|
function d3_map_size() {
|
294
327
|
var size = 0;
|
295
|
-
for (var key in this
|
328
|
+
for (var key in this._) ++size;
|
296
329
|
return size;
|
297
330
|
}
|
298
331
|
function d3_map_empty() {
|
299
|
-
for (var key in this
|
332
|
+
for (var key in this._) return false;
|
300
333
|
return true;
|
301
334
|
}
|
302
335
|
d3.nest = function() {
|
@@ -367,22 +400,21 @@
|
|
367
400
|
if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);
|
368
401
|
return set;
|
369
402
|
};
|
370
|
-
function d3_Set() {
|
403
|
+
function d3_Set() {
|
404
|
+
this._ = Object.create(null);
|
405
|
+
}
|
371
406
|
d3_class(d3_Set, {
|
372
407
|
has: d3_map_has,
|
373
|
-
add: function(
|
374
|
-
this[
|
375
|
-
return
|
376
|
-
},
|
377
|
-
remove: function(value) {
|
378
|
-
value = d3_map_prefix + value;
|
379
|
-
return value in this && delete this[value];
|
408
|
+
add: function(key) {
|
409
|
+
this._[d3_map_escape(key += "")] = true;
|
410
|
+
return key;
|
380
411
|
},
|
412
|
+
remove: d3_map_remove,
|
381
413
|
values: d3_map_keys,
|
382
414
|
size: d3_map_size,
|
383
415
|
empty: d3_map_empty,
|
384
416
|
forEach: function(f) {
|
385
|
-
for (var
|
417
|
+
for (var key in this._) f.call(this, d3_map_unescape(key));
|
386
418
|
}
|
387
419
|
});
|
388
420
|
d3.behavior = {};
|
@@ -399,7 +431,7 @@
|
|
399
431
|
}
|
400
432
|
function d3_vendorSymbol(object, name) {
|
401
433
|
if (name in object) return name;
|
402
|
-
name = name.charAt(0).toUpperCase() + name.
|
434
|
+
name = name.charAt(0).toUpperCase() + name.slice(1);
|
403
435
|
for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {
|
404
436
|
var prefixName = d3_vendorPrefixes[i] + name;
|
405
437
|
if (prefixName in object) return prefixName;
|
@@ -416,8 +448,8 @@
|
|
416
448
|
d3_dispatch.prototype.on = function(type, listener) {
|
417
449
|
var i = type.indexOf("."), name = "";
|
418
450
|
if (i >= 0) {
|
419
|
-
name = type.
|
420
|
-
type = type.
|
451
|
+
name = type.slice(i + 1);
|
452
|
+
type = type.slice(0, i);
|
421
453
|
}
|
422
454
|
if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);
|
423
455
|
if (arguments.length === 2) {
|
@@ -558,8 +590,8 @@
|
|
558
590
|
qualify: function(name) {
|
559
591
|
var i = name.indexOf(":"), prefix = name;
|
560
592
|
if (i >= 0) {
|
561
|
-
prefix = name.
|
562
|
-
name = name.
|
593
|
+
prefix = name.slice(0, i);
|
594
|
+
name = name.slice(i + 1);
|
563
595
|
}
|
564
596
|
return d3_nsPrefix.hasOwnProperty(prefix) ? {
|
565
597
|
space: d3_nsPrefix[prefix],
|
@@ -743,11 +775,12 @@
|
|
743
775
|
});
|
744
776
|
};
|
745
777
|
d3_selectionPrototype.remove = function() {
|
746
|
-
return this.each(
|
747
|
-
var parent = this.parentNode;
|
748
|
-
if (parent) parent.removeChild(this);
|
749
|
-
});
|
778
|
+
return this.each(d3_selectionRemove);
|
750
779
|
};
|
780
|
+
function d3_selectionRemove() {
|
781
|
+
var parent = this.parentNode;
|
782
|
+
if (parent) parent.removeChild(this);
|
783
|
+
}
|
751
784
|
d3_selectionPrototype.data = function(value, key) {
|
752
785
|
var i = -1, n = this.length, group, node;
|
753
786
|
if (!arguments.length) {
|
@@ -762,29 +795,26 @@
|
|
762
795
|
function bind(group, groupData) {
|
763
796
|
var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;
|
764
797
|
if (key) {
|
765
|
-
var nodeByKeyValue = new d3_Map(),
|
798
|
+
var nodeByKeyValue = new d3_Map(), keyValues = new Array(n), keyValue;
|
766
799
|
for (i = -1; ++i < n; ) {
|
767
|
-
keyValue = key.call(node = group[i], node.__data__, i)
|
768
|
-
if (nodeByKeyValue.has(keyValue)) {
|
800
|
+
if (nodeByKeyValue.has(keyValue = key.call(node = group[i], node.__data__, i))) {
|
769
801
|
exitNodes[i] = node;
|
770
802
|
} else {
|
771
803
|
nodeByKeyValue.set(keyValue, node);
|
772
804
|
}
|
773
|
-
keyValues
|
805
|
+
keyValues[i] = keyValue;
|
774
806
|
}
|
775
807
|
for (i = -1; ++i < m; ) {
|
776
|
-
keyValue = key.call(groupData, nodeData = groupData[i], i)
|
777
|
-
|
808
|
+
if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {
|
809
|
+
enterNodes[i] = d3_selection_dataNode(nodeData);
|
810
|
+
} else if (node !== true) {
|
778
811
|
updateNodes[i] = node;
|
779
812
|
node.__data__ = nodeData;
|
780
|
-
} else if (!dataByKeyValue.has(keyValue)) {
|
781
|
-
enterNodes[i] = d3_selection_dataNode(nodeData);
|
782
813
|
}
|
783
|
-
|
784
|
-
nodeByKeyValue.remove(keyValue);
|
814
|
+
nodeByKeyValue.set(keyValue, true);
|
785
815
|
}
|
786
816
|
for (i = -1; ++i < n; ) {
|
787
|
-
if (nodeByKeyValue.
|
817
|
+
if (nodeByKeyValue.get(keyValues[i]) !== true) {
|
788
818
|
exitNodes[i] = group[i];
|
789
819
|
}
|
790
820
|
}
|
@@ -911,7 +941,7 @@
|
|
911
941
|
};
|
912
942
|
d3_selectionPrototype.size = function() {
|
913
943
|
var n = 0;
|
914
|
-
this
|
944
|
+
d3_selection_each(this, function() {
|
915
945
|
++n;
|
916
946
|
});
|
917
947
|
return n;
|
@@ -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) {
|
@@ -1008,7 +1042,7 @@
|
|
1008
1042
|
};
|
1009
1043
|
function d3_selection_on(type, listener, capture) {
|
1010
1044
|
var name = "__on" + type, i = type.indexOf("."), wrap = d3_selection_onListener;
|
1011
|
-
if (i > 0) type = type.
|
1045
|
+
if (i > 0) type = type.slice(0, i);
|
1012
1046
|
var filter = d3_selection_onFilters.get(type);
|
1013
1047
|
if (filter) type = filter, wrap = d3_selection_onFilter;
|
1014
1048
|
function onRemove() {
|
@@ -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();
|
@@ -1116,13 +1150,13 @@
|
|
1116
1150
|
var rect = container.getBoundingClientRect();
|
1117
1151
|
return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];
|
1118
1152
|
}
|
1119
|
-
d3.
|
1120
|
-
if (arguments.length <
|
1121
|
-
|
1122
|
-
|
1123
|
-
|
1124
|
-
|
1125
|
-
}
|
1153
|
+
d3.touch = function(container, touches, identifier) {
|
1154
|
+
if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;
|
1155
|
+
if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {
|
1156
|
+
if ((touch = touches[i]).identifier === identifier) {
|
1157
|
+
return d3_mousePoint(container, touch);
|
1158
|
+
}
|
1159
|
+
}
|
1126
1160
|
};
|
1127
1161
|
d3.behavior.drag = function() {
|
1128
1162
|
var event = d3_eventDispatch(drag, "drag", "dragstart", "dragend"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_behavior_dragMouseSubject, "mousemove", "mouseup"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_behavior_dragTouchSubject, "touchmove", "touchend");
|
@@ -1182,7 +1216,15 @@
|
|
1182
1216
|
function d3_behavior_dragMouseSubject() {
|
1183
1217
|
return d3_window;
|
1184
1218
|
}
|
1185
|
-
|
1219
|
+
d3.touches = function(container, touches) {
|
1220
|
+
if (arguments.length < 2) touches = d3_eventSource().touches;
|
1221
|
+
return touches ? d3_array(touches).map(function(touch) {
|
1222
|
+
var point = d3_mousePoint(container, touch);
|
1223
|
+
point.identifier = touch.identifier;
|
1224
|
+
return point;
|
1225
|
+
}) : [];
|
1226
|
+
};
|
1227
|
+
var ε = 1e-6, ε2 = ε * ε, π = Math.PI, τ = 2 * π, τε = τ - ε, halfπ = π / 2, d3_radians = π / 180, d3_degrees = 180 / π;
|
1186
1228
|
function d3_sgn(x) {
|
1187
1229
|
return x > 0 ? 1 : x < 0 ? -1 : 0;
|
1188
1230
|
}
|
@@ -1227,7 +1269,7 @@
|
|
1227
1269
|
x: 0,
|
1228
1270
|
y: 0,
|
1229
1271
|
k: 1
|
1230
|
-
}, 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;
|
1231
1273
|
function zoom(g) {
|
1232
1274
|
g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + ".zoom", mousewheeled).on("dblclick.zoom", dblclicked).on(touchstart, touchstarted);
|
1233
1275
|
}
|
@@ -1243,7 +1285,7 @@
|
|
1243
1285
|
};
|
1244
1286
|
zoomstarted(dispatch);
|
1245
1287
|
}).tween("zoom:zoom", function() {
|
1246
|
-
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 ]);
|
1247
1289
|
return function(t) {
|
1248
1290
|
var l = i(t), k = dx / l[2];
|
1249
1291
|
this.__chart__ = view = {
|
@@ -1253,6 +1295,8 @@
|
|
1253
1295
|
};
|
1254
1296
|
zoomed(dispatch);
|
1255
1297
|
};
|
1298
|
+
}).each("interrupt.zoom", function() {
|
1299
|
+
zoomended(dispatch);
|
1256
1300
|
}).each("end.zoom", function() {
|
1257
1301
|
zoomended(dispatch);
|
1258
1302
|
});
|
@@ -1299,6 +1343,11 @@
|
|
1299
1343
|
size = _ && [ +_[0], +_[1] ];
|
1300
1344
|
return zoom;
|
1301
1345
|
};
|
1346
|
+
zoom.duration = function(_) {
|
1347
|
+
if (!arguments.length) return duration;
|
1348
|
+
duration = +_;
|
1349
|
+
return zoom;
|
1350
|
+
};
|
1302
1351
|
zoom.x = function(z) {
|
1303
1352
|
if (!arguments.length) return x1;
|
1304
1353
|
x1 = z;
|
@@ -1335,6 +1384,18 @@
|
|
1335
1384
|
view.x += p[0] - l[0];
|
1336
1385
|
view.y += p[1] - l[1];
|
1337
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
|
+
}
|
1338
1399
|
function rescale() {
|
1339
1400
|
if (x1) x1.domain(x0.range().map(function(x) {
|
1340
1401
|
return (x - view.x) / view.k;
|
@@ -1344,7 +1405,7 @@
|
|
1344
1405
|
}).map(y0.invert));
|
1345
1406
|
}
|
1346
1407
|
function zoomstarted(dispatch) {
|
1347
|
-
dispatch({
|
1408
|
+
if (!zooming++) dispatch({
|
1348
1409
|
type: "zoomstart"
|
1349
1410
|
});
|
1350
1411
|
}
|
@@ -1357,13 +1418,14 @@
|
|
1357
1418
|
});
|
1358
1419
|
}
|
1359
1420
|
function zoomended(dispatch) {
|
1360
|
-
dispatch({
|
1421
|
+
if (!--zooming) dispatch({
|
1361
1422
|
type: "zoomend"
|
1362
1423
|
});
|
1424
|
+
center0 = null;
|
1363
1425
|
}
|
1364
1426
|
function mousedowned() {
|
1365
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();
|
1366
|
-
d3_selection_interrupt
|
1428
|
+
d3_selection_interrupt(that);
|
1367
1429
|
zoomstarted(dispatch);
|
1368
1430
|
function moved() {
|
1369
1431
|
dragged = 1;
|
@@ -1377,10 +1439,10 @@
|
|
1377
1439
|
}
|
1378
1440
|
}
|
1379
1441
|
function touchstarted() {
|
1380
|
-
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)
|
1381
|
-
d3_selection_interrupt.call(that);
|
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();
|
1382
1443
|
started();
|
1383
1444
|
zoomstarted(dispatch);
|
1445
|
+
subject.on(mousedown, null).on(touchstart, started);
|
1384
1446
|
function relocate() {
|
1385
1447
|
var touches = d3.touches(that);
|
1386
1448
|
scale0 = view.k;
|
@@ -1400,11 +1462,9 @@
|
|
1400
1462
|
var touches = relocate(), now = Date.now();
|
1401
1463
|
if (touches.length === 1) {
|
1402
1464
|
if (now - touchtime < 500) {
|
1403
|
-
var p = touches[0]
|
1404
|
-
|
1405
|
-
translateTo(p, l);
|
1465
|
+
var p = touches[0];
|
1466
|
+
zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);
|
1406
1467
|
d3_eventPreventDefault();
|
1407
|
-
zoomed(dispatch);
|
1408
1468
|
}
|
1409
1469
|
touchtime = now;
|
1410
1470
|
} else if (touches.length > 1) {
|
@@ -1414,6 +1474,7 @@
|
|
1414
1474
|
}
|
1415
1475
|
function moved() {
|
1416
1476
|
var touches = d3.touches(that), p0, l0, p1, l1;
|
1477
|
+
d3_selection_interrupt(that);
|
1417
1478
|
for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {
|
1418
1479
|
p1 = touches[i];
|
1419
1480
|
if (l1 = locations0[p1.identifier]) {
|
@@ -1450,7 +1511,7 @@
|
|
1450
1511
|
function mousewheeled() {
|
1451
1512
|
var dispatch = event.of(this, arguments);
|
1452
1513
|
if (mousewheelTimer) clearTimeout(mousewheelTimer); else translate0 = location(center0 = center || d3.mouse(this)),
|
1453
|
-
d3_selection_interrupt
|
1514
|
+
d3_selection_interrupt(this), zoomstarted(dispatch);
|
1454
1515
|
mousewheelTimer = setTimeout(function() {
|
1455
1516
|
mousewheelTimer = null;
|
1456
1517
|
zoomended(dispatch);
|
@@ -1461,12 +1522,8 @@
|
|
1461
1522
|
zoomed(dispatch);
|
1462
1523
|
}
|
1463
1524
|
function dblclicked() {
|
1464
|
-
var
|
1465
|
-
|
1466
|
-
scaleTo(Math.pow(2, d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1));
|
1467
|
-
translateTo(p, l);
|
1468
|
-
zoomed(dispatch);
|
1469
|
-
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);
|
1470
1527
|
}
|
1471
1528
|
return d3.rebind(zoom, event, "on");
|
1472
1529
|
};
|
@@ -1539,7 +1596,7 @@
|
|
1539
1596
|
}
|
1540
1597
|
d3.lab = d3_lab;
|
1541
1598
|
function d3_lab(l, a, b) {
|
1542
|
-
return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.
|
1599
|
+
return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l) : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b) : new d3_lab(l, a, b);
|
1543
1600
|
}
|
1544
1601
|
var d3_lab_K = 18;
|
1545
1602
|
var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;
|
@@ -1623,7 +1680,7 @@
|
|
1623
1680
|
}
|
1624
1681
|
}
|
1625
1682
|
if (color = d3_rgb_names.get(format)) return rgb(color.r, color.g, color.b);
|
1626
|
-
if (format != null && format.charAt(0) === "#" && !isNaN(color = parseInt(format.
|
1683
|
+
if (format != null && format.charAt(0) === "#" && !isNaN(color = parseInt(format.slice(1), 16))) {
|
1627
1684
|
if (format.length === 4) {
|
1628
1685
|
r = (color & 3840) >> 4;
|
1629
1686
|
r = r >> 4 | r;
|
@@ -1842,7 +1899,7 @@
|
|
1842
1899
|
};
|
1843
1900
|
function respond() {
|
1844
1901
|
var status = request.status, result;
|
1845
|
-
if (!status && request
|
1902
|
+
if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {
|
1846
1903
|
try {
|
1847
1904
|
result = response.call(xhr, request);
|
1848
1905
|
} catch (e) {
|
@@ -1914,6 +1971,10 @@
|
|
1914
1971
|
callback(error == null ? request : null);
|
1915
1972
|
} : callback;
|
1916
1973
|
}
|
1974
|
+
function d3_xhrHasResponse(request) {
|
1975
|
+
var type = request.responseType;
|
1976
|
+
return type && type !== "text" ? request.response : request.responseText;
|
1977
|
+
}
|
1917
1978
|
d3.dsv = function(delimiter, mimeType) {
|
1918
1979
|
var reFormat = new RegExp('["' + delimiter + "\n]"), delimiterCode = delimiter.charCodeAt(0);
|
1919
1980
|
function dsv(url, row, callback) {
|
@@ -1966,7 +2027,7 @@
|
|
1966
2027
|
} else if (c === 10) {
|
1967
2028
|
eol = true;
|
1968
2029
|
}
|
1969
|
-
return text.
|
2030
|
+
return text.slice(j + 1, i).replace(/""/g, '"');
|
1970
2031
|
}
|
1971
2032
|
while (I < N) {
|
1972
2033
|
var c = text.charCodeAt(I++), k = 1;
|
@@ -1974,9 +2035,9 @@
|
|
1974
2035
|
eol = true;
|
1975
2036
|
if (text.charCodeAt(I) === 10) ++I, ++k;
|
1976
2037
|
} else if (c !== delimiterCode) continue;
|
1977
|
-
return text.
|
2038
|
+
return text.slice(j, I - k);
|
1978
2039
|
}
|
1979
|
-
return text.
|
2040
|
+
return text.slice(j);
|
1980
2041
|
}
|
1981
2042
|
while ((t = token()) !== EOF) {
|
1982
2043
|
var a = [];
|
@@ -1984,7 +2045,7 @@
|
|
1984
2045
|
a.push(t);
|
1985
2046
|
t = token();
|
1986
2047
|
}
|
1987
|
-
if (f &&
|
2048
|
+
if (f && (a = f(a, n++)) == null) continue;
|
1988
2049
|
rows.push(a);
|
1989
2050
|
}
|
1990
2051
|
return rows;
|
@@ -2018,14 +2079,6 @@
|
|
2018
2079
|
};
|
2019
2080
|
d3.csv = d3.dsv(",", "text/csv");
|
2020
2081
|
d3.tsv = d3.dsv(" ", "text/tab-separated-values");
|
2021
|
-
d3.touch = function(container, touches, identifier) {
|
2022
|
-
if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;
|
2023
|
-
if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {
|
2024
|
-
if ((touch = touches[i]).identifier === identifier) {
|
2025
|
-
return d3_mousePoint(container, touch);
|
2026
|
-
}
|
2027
|
-
}
|
2028
|
-
};
|
2029
2082
|
var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_active, d3_timer_frame = d3_window[d3_vendorSymbol(d3_window, "requestAnimationFrame")] || function(callback) {
|
2030
2083
|
setTimeout(callback, 17);
|
2031
2084
|
};
|
@@ -2115,21 +2168,22 @@
|
|
2115
2168
|
};
|
2116
2169
|
}
|
2117
2170
|
function d3_locale_numberFormat(locale) {
|
2118
|
-
var locale_decimal = locale.decimal, locale_thousands = locale.thousands, locale_grouping = locale.grouping, locale_currency = locale.currency, formatGroup = locale_grouping ? function(value) {
|
2119
|
-
var i = value.length, t = [], j = 0, g = locale_grouping[0];
|
2171
|
+
var locale_decimal = locale.decimal, locale_thousands = locale.thousands, locale_grouping = locale.grouping, locale_currency = locale.currency, formatGroup = locale_grouping && locale_thousands ? function(value, width) {
|
2172
|
+
var i = value.length, t = [], j = 0, g = locale_grouping[0], length = 0;
|
2120
2173
|
while (i > 0 && g > 0) {
|
2174
|
+
if (length + g + 1 > width) g = Math.max(1, width - length);
|
2121
2175
|
t.push(value.substring(i -= g, i + g));
|
2176
|
+
if ((length += g + 1) > width) break;
|
2122
2177
|
g = locale_grouping[j = (j + 1) % locale_grouping.length];
|
2123
2178
|
}
|
2124
2179
|
return t.reverse().join(locale_thousands);
|
2125
2180
|
} : d3_identity;
|
2126
2181
|
return function(specifier) {
|
2127
|
-
var match = d3_format_re.exec(specifier), fill = match[1] || " ", align = match[2] || ">", sign = match[3] || "", symbol = match[4] || "", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, prefix = "", suffix = "", integer = false;
|
2182
|
+
var match = d3_format_re.exec(specifier), fill = match[1] || " ", align = match[2] || ">", sign = match[3] || "-", symbol = match[4] || "", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, prefix = "", suffix = "", integer = false, exponent = true;
|
2128
2183
|
if (precision) precision = +precision.substring(1);
|
2129
2184
|
if (zfill || fill === "0" && align === "=") {
|
2130
2185
|
zfill = fill = "0";
|
2131
2186
|
align = "=";
|
2132
|
-
if (comma) width -= Math.floor((width - 1) / 4);
|
2133
2187
|
}
|
2134
2188
|
switch (type) {
|
2135
2189
|
case "n":
|
@@ -2156,6 +2210,8 @@
|
|
2156
2210
|
if (symbol === "#") prefix = "0" + type.toLowerCase();
|
2157
2211
|
|
2158
2212
|
case "c":
|
2213
|
+
exponent = false;
|
2214
|
+
|
2159
2215
|
case "d":
|
2160
2216
|
integer = true;
|
2161
2217
|
precision = 0;
|
@@ -2176,7 +2232,7 @@
|
|
2176
2232
|
return function(value) {
|
2177
2233
|
var fullSuffix = suffix;
|
2178
2234
|
if (integer && value % 1) return "";
|
2179
|
-
var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, "-") : sign;
|
2235
|
+
var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, "-") : sign === "-" ? "" : sign;
|
2180
2236
|
if (scale < 0) {
|
2181
2237
|
var unit = d3.formatPrefix(value, precision);
|
2182
2238
|
value = unit.scale(value);
|
@@ -2185,10 +2241,17 @@
|
|
2185
2241
|
value *= scale;
|
2186
2242
|
}
|
2187
2243
|
value = type(value, precision);
|
2188
|
-
var i = value.lastIndexOf("."), before
|
2189
|
-
if (
|
2244
|
+
var i = value.lastIndexOf("."), before, after;
|
2245
|
+
if (i < 0) {
|
2246
|
+
var j = exponent ? value.lastIndexOf("e") : -1;
|
2247
|
+
if (j < 0) before = value, after = ""; else before = value.substring(0, j), after = value.substring(j);
|
2248
|
+
} else {
|
2249
|
+
before = value.substring(0, i);
|
2250
|
+
after = locale_decimal + value.substring(i + 1);
|
2251
|
+
}
|
2252
|
+
if (!zfill && comma) before = formatGroup(before, Infinity);
|
2190
2253
|
var length = prefix.length + before.length + after.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : "";
|
2191
|
-
if (zcomma) before = formatGroup(padding + before);
|
2254
|
+
if (zcomma) before = formatGroup(padding + before, padding.length ? width - after.length : Infinity);
|
2192
2255
|
negative += prefix;
|
2193
2256
|
value = before + after;
|
2194
2257
|
return (align === "<" ? negative + value + padding : align === ">" ? padding + negative + value : align === "^" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + fullSuffix;
|
@@ -2411,14 +2474,14 @@
|
|
2411
2474
|
var string = [], i = -1, j = 0, c, p, f;
|
2412
2475
|
while (++i < n) {
|
2413
2476
|
if (template.charCodeAt(i) === 37) {
|
2414
|
-
string.push(template.
|
2477
|
+
string.push(template.slice(j, i));
|
2415
2478
|
if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i);
|
2416
2479
|
if (f = d3_time_formats[c]) c = f(date, p == null ? c === "e" ? " " : "0" : p);
|
2417
2480
|
string.push(c);
|
2418
2481
|
j = i + 1;
|
2419
2482
|
}
|
2420
2483
|
}
|
2421
|
-
string.push(template.
|
2484
|
+
string.push(template.slice(j, i));
|
2422
2485
|
return string.join("");
|
2423
2486
|
}
|
2424
2487
|
format.parse = function(string) {
|
@@ -2439,7 +2502,7 @@
|
|
2439
2502
|
date.setFullYear(d.y, 0, 1);
|
2440
2503
|
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);
|
2441
2504
|
} else date.setFullYear(d.y, d.m, d.d);
|
2442
|
-
date.setHours(d.H +
|
2505
|
+
date.setHours(d.H + (d.Z / 100 | 0), d.M + d.Z % 100, d.S, d.L);
|
2443
2506
|
return localZ ? date._ : date;
|
2444
2507
|
};
|
2445
2508
|
format.toString = function() {
|
@@ -2585,22 +2648,22 @@
|
|
2585
2648
|
};
|
2586
2649
|
function d3_time_parseWeekdayAbbrev(date, string, i) {
|
2587
2650
|
d3_time_dayAbbrevRe.lastIndex = 0;
|
2588
|
-
var n = d3_time_dayAbbrevRe.exec(string.
|
2651
|
+
var n = d3_time_dayAbbrevRe.exec(string.slice(i));
|
2589
2652
|
return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;
|
2590
2653
|
}
|
2591
2654
|
function d3_time_parseWeekday(date, string, i) {
|
2592
2655
|
d3_time_dayRe.lastIndex = 0;
|
2593
|
-
var n = d3_time_dayRe.exec(string.
|
2656
|
+
var n = d3_time_dayRe.exec(string.slice(i));
|
2594
2657
|
return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;
|
2595
2658
|
}
|
2596
2659
|
function d3_time_parseMonthAbbrev(date, string, i) {
|
2597
2660
|
d3_time_monthAbbrevRe.lastIndex = 0;
|
2598
|
-
var n = d3_time_monthAbbrevRe.exec(string.
|
2661
|
+
var n = d3_time_monthAbbrevRe.exec(string.slice(i));
|
2599
2662
|
return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;
|
2600
2663
|
}
|
2601
2664
|
function d3_time_parseMonth(date, string, i) {
|
2602
2665
|
d3_time_monthRe.lastIndex = 0;
|
2603
|
-
var n = d3_time_monthRe.exec(string.
|
2666
|
+
var n = d3_time_monthRe.exec(string.slice(i));
|
2604
2667
|
return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;
|
2605
2668
|
}
|
2606
2669
|
function d3_time_parseLocaleFull(date, string, i) {
|
@@ -2613,7 +2676,7 @@
|
|
2613
2676
|
return d3_time_parse(date, d3_time_formats.X.toString(), string, i);
|
2614
2677
|
}
|
2615
2678
|
function d3_time_parseAmPm(date, string, i) {
|
2616
|
-
var n = d3_time_periodLookup.get(string.
|
2679
|
+
var n = d3_time_periodLookup.get(string.slice(i, i += 2).toLowerCase());
|
2617
2680
|
return n == null ? -1 : (date.p = n, i);
|
2618
2681
|
}
|
2619
2682
|
return d3_time_format;
|
@@ -2637,31 +2700,31 @@
|
|
2637
2700
|
}
|
2638
2701
|
function d3_time_parseWeekdayNumber(date, string, i) {
|
2639
2702
|
d3_time_numberRe.lastIndex = 0;
|
2640
|
-
var n = d3_time_numberRe.exec(string.
|
2703
|
+
var n = d3_time_numberRe.exec(string.slice(i, i + 1));
|
2641
2704
|
return n ? (date.w = +n[0], i + n[0].length) : -1;
|
2642
2705
|
}
|
2643
2706
|
function d3_time_parseWeekNumberSunday(date, string, i) {
|
2644
2707
|
d3_time_numberRe.lastIndex = 0;
|
2645
|
-
var n = d3_time_numberRe.exec(string.
|
2708
|
+
var n = d3_time_numberRe.exec(string.slice(i));
|
2646
2709
|
return n ? (date.U = +n[0], i + n[0].length) : -1;
|
2647
2710
|
}
|
2648
2711
|
function d3_time_parseWeekNumberMonday(date, string, i) {
|
2649
2712
|
d3_time_numberRe.lastIndex = 0;
|
2650
|
-
var n = d3_time_numberRe.exec(string.
|
2713
|
+
var n = d3_time_numberRe.exec(string.slice(i));
|
2651
2714
|
return n ? (date.W = +n[0], i + n[0].length) : -1;
|
2652
2715
|
}
|
2653
2716
|
function d3_time_parseFullYear(date, string, i) {
|
2654
2717
|
d3_time_numberRe.lastIndex = 0;
|
2655
|
-
var n = d3_time_numberRe.exec(string.
|
2718
|
+
var n = d3_time_numberRe.exec(string.slice(i, i + 4));
|
2656
2719
|
return n ? (date.y = +n[0], i + n[0].length) : -1;
|
2657
2720
|
}
|
2658
2721
|
function d3_time_parseYear(date, string, i) {
|
2659
2722
|
d3_time_numberRe.lastIndex = 0;
|
2660
|
-
var n = d3_time_numberRe.exec(string.
|
2723
|
+
var n = d3_time_numberRe.exec(string.slice(i, i + 2));
|
2661
2724
|
return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;
|
2662
2725
|
}
|
2663
2726
|
function d3_time_parseZone(date, string, i) {
|
2664
|
-
return /^[+-]\d{4}$/.test(string = string.
|
2727
|
+
return /^[+-]\d{4}$/.test(string = string.slice(i, i + 5)) ? (date.Z = -string,
|
2665
2728
|
i + 5) : -1;
|
2666
2729
|
}
|
2667
2730
|
function d3_time_expandYear(d) {
|
@@ -2669,46 +2732,46 @@
|
|
2669
2732
|
}
|
2670
2733
|
function d3_time_parseMonthNumber(date, string, i) {
|
2671
2734
|
d3_time_numberRe.lastIndex = 0;
|
2672
|
-
var n = d3_time_numberRe.exec(string.
|
2735
|
+
var n = d3_time_numberRe.exec(string.slice(i, i + 2));
|
2673
2736
|
return n ? (date.m = n[0] - 1, i + n[0].length) : -1;
|
2674
2737
|
}
|
2675
2738
|
function d3_time_parseDay(date, string, i) {
|
2676
2739
|
d3_time_numberRe.lastIndex = 0;
|
2677
|
-
var n = d3_time_numberRe.exec(string.
|
2740
|
+
var n = d3_time_numberRe.exec(string.slice(i, i + 2));
|
2678
2741
|
return n ? (date.d = +n[0], i + n[0].length) : -1;
|
2679
2742
|
}
|
2680
2743
|
function d3_time_parseDayOfYear(date, string, i) {
|
2681
2744
|
d3_time_numberRe.lastIndex = 0;
|
2682
|
-
var n = d3_time_numberRe.exec(string.
|
2745
|
+
var n = d3_time_numberRe.exec(string.slice(i, i + 3));
|
2683
2746
|
return n ? (date.j = +n[0], i + n[0].length) : -1;
|
2684
2747
|
}
|
2685
2748
|
function d3_time_parseHour24(date, string, i) {
|
2686
2749
|
d3_time_numberRe.lastIndex = 0;
|
2687
|
-
var n = d3_time_numberRe.exec(string.
|
2750
|
+
var n = d3_time_numberRe.exec(string.slice(i, i + 2));
|
2688
2751
|
return n ? (date.H = +n[0], i + n[0].length) : -1;
|
2689
2752
|
}
|
2690
2753
|
function d3_time_parseMinutes(date, string, i) {
|
2691
2754
|
d3_time_numberRe.lastIndex = 0;
|
2692
|
-
var n = d3_time_numberRe.exec(string.
|
2755
|
+
var n = d3_time_numberRe.exec(string.slice(i, i + 2));
|
2693
2756
|
return n ? (date.M = +n[0], i + n[0].length) : -1;
|
2694
2757
|
}
|
2695
2758
|
function d3_time_parseSeconds(date, string, i) {
|
2696
2759
|
d3_time_numberRe.lastIndex = 0;
|
2697
|
-
var n = d3_time_numberRe.exec(string.
|
2760
|
+
var n = d3_time_numberRe.exec(string.slice(i, i + 2));
|
2698
2761
|
return n ? (date.S = +n[0], i + n[0].length) : -1;
|
2699
2762
|
}
|
2700
2763
|
function d3_time_parseMilliseconds(date, string, i) {
|
2701
2764
|
d3_time_numberRe.lastIndex = 0;
|
2702
|
-
var n = d3_time_numberRe.exec(string.
|
2765
|
+
var n = d3_time_numberRe.exec(string.slice(i, i + 3));
|
2703
2766
|
return n ? (date.L = +n[0], i + n[0].length) : -1;
|
2704
2767
|
}
|
2705
2768
|
function d3_time_zone(d) {
|
2706
|
-
var z = d.getTimezoneOffset(), zs = z > 0 ? "-" : "+", zh =
|
2769
|
+
var z = d.getTimezoneOffset(), zs = z > 0 ? "-" : "+", zh = abs(z) / 60 | 0, zm = abs(z) % 60;
|
2707
2770
|
return zs + d3_time_formatPad(zh, "0", 2) + d3_time_formatPad(zm, "0", 2);
|
2708
2771
|
}
|
2709
2772
|
function d3_time_parseLiteralPercent(date, string, i) {
|
2710
2773
|
d3_time_percentRe.lastIndex = 0;
|
2711
|
-
var n = d3_time_percentRe.exec(string.
|
2774
|
+
var n = d3_time_percentRe.exec(string.slice(i, i + 1));
|
2712
2775
|
return n ? i + n[0].length : -1;
|
2713
2776
|
}
|
2714
2777
|
function d3_time_formatMulti(formats) {
|
@@ -3116,6 +3179,15 @@
|
|
3116
3179
|
d3_geo_centroidPointXYZ(x0, y0, z0);
|
3117
3180
|
}
|
3118
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
|
+
}
|
3119
3191
|
function d3_true() {
|
3120
3192
|
return true;
|
3121
3193
|
}
|
@@ -3316,35 +3388,6 @@
|
|
3316
3388
|
function d3_geo_clipSort(a, b) {
|
3317
3389
|
return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);
|
3318
3390
|
}
|
3319
|
-
function d3_geo_pointInPolygon(point, polygon) {
|
3320
|
-
var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0;
|
3321
|
-
d3_geo_areaRingSum.reset();
|
3322
|
-
for (var i = 0, n = polygon.length; i < n; ++i) {
|
3323
|
-
var ring = polygon[i], m = ring.length;
|
3324
|
-
if (!m) continue;
|
3325
|
-
var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1;
|
3326
|
-
while (true) {
|
3327
|
-
if (j === m) j = 0;
|
3328
|
-
point = ring[j];
|
3329
|
-
var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, antimeridian = adλ > π, k = sinφ0 * sinφ;
|
3330
|
-
d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));
|
3331
|
-
polarAngle += antimeridian ? dλ + sdλ * τ : dλ;
|
3332
|
-
if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {
|
3333
|
-
var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));
|
3334
|
-
d3_geo_cartesianNormalize(arc);
|
3335
|
-
var intersection = d3_geo_cartesianCross(meridianNormal, arc);
|
3336
|
-
d3_geo_cartesianNormalize(intersection);
|
3337
|
-
var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);
|
3338
|
-
if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {
|
3339
|
-
winding += antimeridian ^ dλ >= 0 ? 1 : -1;
|
3340
|
-
}
|
3341
|
-
}
|
3342
|
-
if (!j++) break;
|
3343
|
-
λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;
|
3344
|
-
}
|
3345
|
-
}
|
3346
|
-
return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < 0) ^ winding & 1;
|
3347
|
-
}
|
3348
3391
|
var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [ -π, -π / 2 ]);
|
3349
3392
|
function d3_geo_clipAntimeridianLine(listener) {
|
3350
3393
|
var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean;
|
@@ -3412,6 +3455,35 @@
|
|
3412
3455
|
listener.point(to[0], to[1]);
|
3413
3456
|
}
|
3414
3457
|
}
|
3458
|
+
function d3_geo_pointInPolygon(point, polygon) {
|
3459
|
+
var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0;
|
3460
|
+
d3_geo_areaRingSum.reset();
|
3461
|
+
for (var i = 0, n = polygon.length; i < n; ++i) {
|
3462
|
+
var ring = polygon[i], m = ring.length;
|
3463
|
+
if (!m) continue;
|
3464
|
+
var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1;
|
3465
|
+
while (true) {
|
3466
|
+
if (j === m) j = 0;
|
3467
|
+
point = ring[j];
|
3468
|
+
var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, antimeridian = adλ > π, k = sinφ0 * sinφ;
|
3469
|
+
d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));
|
3470
|
+
polarAngle += antimeridian ? dλ + sdλ * τ : dλ;
|
3471
|
+
if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {
|
3472
|
+
var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));
|
3473
|
+
d3_geo_cartesianNormalize(arc);
|
3474
|
+
var intersection = d3_geo_cartesianCross(meridianNormal, arc);
|
3475
|
+
d3_geo_cartesianNormalize(intersection);
|
3476
|
+
var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);
|
3477
|
+
if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {
|
3478
|
+
winding += antimeridian ^ dλ >= 0 ? 1 : -1;
|
3479
|
+
}
|
3480
|
+
}
|
3481
|
+
if (!j++) break;
|
3482
|
+
λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;
|
3483
|
+
}
|
3484
|
+
}
|
3485
|
+
return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < 0) ^ winding & 1;
|
3486
|
+
}
|
3415
3487
|
function d3_geo_clipCircle(radius) {
|
3416
3488
|
var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);
|
3417
3489
|
return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -π, radius - π ]);
|
@@ -3714,15 +3786,6 @@
|
|
3714
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];
|
3715
3787
|
}
|
3716
3788
|
}
|
3717
|
-
function d3_geo_compose(a, b) {
|
3718
|
-
function compose(x, y) {
|
3719
|
-
return x = a(x, y), b(x[0], x[1]);
|
3720
|
-
}
|
3721
|
-
if (a.invert && b.invert) compose.invert = function(x, y) {
|
3722
|
-
return x = b.invert(x, y), x && a.invert(x[0], x[1]);
|
3723
|
-
};
|
3724
|
-
return compose;
|
3725
|
-
}
|
3726
3789
|
function d3_geo_conic(projectAt) {
|
3727
3790
|
var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1);
|
3728
3791
|
p.parallels = function(_) {
|
@@ -3994,7 +4057,7 @@
|
|
3994
4057
|
result: d3_noop
|
3995
4058
|
};
|
3996
4059
|
function point(x, y) {
|
3997
|
-
context.moveTo(x, y);
|
4060
|
+
context.moveTo(x + pointRadius, y);
|
3998
4061
|
context.arc(x, y, pointRadius, 0, τ);
|
3999
4062
|
}
|
4000
4063
|
function pointLineStart(x, y) {
|
@@ -5502,11 +5565,11 @@
|
|
5502
5565
|
}
|
5503
5566
|
}
|
5504
5567
|
function insertChild(n, d, x, y, x1, y1, x2, y2) {
|
5505
|
-
var
|
5568
|
+
var xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym, i = below << 1 | right;
|
5506
5569
|
n.leaf = false;
|
5507
5570
|
n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());
|
5508
|
-
if (right) x1 =
|
5509
|
-
if (
|
5571
|
+
if (right) x1 = xm; else x2 = xm;
|
5572
|
+
if (below) y1 = ym; else y2 = ym;
|
5510
5573
|
insert(n, d, x, y, x1, y1, x2, y2);
|
5511
5574
|
}
|
5512
5575
|
var root = d3_geom_quadtreeNode();
|
@@ -5516,6 +5579,9 @@
|
|
5516
5579
|
root.visit = function(f) {
|
5517
5580
|
d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);
|
5518
5581
|
};
|
5582
|
+
root.find = function(point) {
|
5583
|
+
return d3_geom_quadtreeFind(root, point[0], point[1], x1_, y1_, x2_, y2_);
|
5584
|
+
};
|
5519
5585
|
i = -1;
|
5520
5586
|
if (x1 == null) {
|
5521
5587
|
while (++i < n) {
|
@@ -5569,6 +5635,42 @@
|
|
5569
5635
|
if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);
|
5570
5636
|
}
|
5571
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
|
+
}
|
5572
5674
|
d3.interpolateRgb = d3_interpolateRgb;
|
5573
5675
|
function d3_interpolateRgb(a, b) {
|
5574
5676
|
a = d3.rgb(a);
|
@@ -5600,9 +5702,9 @@
|
|
5600
5702
|
}
|
5601
5703
|
d3.interpolateNumber = d3_interpolateNumber;
|
5602
5704
|
function d3_interpolateNumber(a, b) {
|
5603
|
-
|
5705
|
+
a = +a, b = +b;
|
5604
5706
|
return function(t) {
|
5605
|
-
return a + b * t;
|
5707
|
+
return a * (1 - t) + b * t;
|
5606
5708
|
};
|
5607
5709
|
}
|
5608
5710
|
d3.interpolateString = d3_interpolateString;
|
@@ -5611,7 +5713,7 @@
|
|
5611
5713
|
a = a + "", b = b + "";
|
5612
5714
|
while ((am = d3_interpolate_numberA.exec(a)) && (bm = d3_interpolate_numberB.exec(b))) {
|
5613
5715
|
if ((bs = bm.index) > bi) {
|
5614
|
-
bs = b.
|
5716
|
+
bs = b.slice(bi, bs);
|
5615
5717
|
if (s[i]) s[i] += bs; else s[++i] = bs;
|
5616
5718
|
}
|
5617
5719
|
if ((am = am[0]) === (bm = bm[0])) {
|
@@ -5626,7 +5728,7 @@
|
|
5626
5728
|
bi = d3_interpolate_numberB.lastIndex;
|
5627
5729
|
}
|
5628
5730
|
if (bi < b.length) {
|
5629
|
-
bs = b.
|
5731
|
+
bs = b.slice(bi);
|
5630
5732
|
if (s[i]) s[i] += bs; else s[++i] = bs;
|
5631
5733
|
}
|
5632
5734
|
return s.length < 2 ? q[0] ? (b = q[0].x, function(t) {
|
@@ -5696,7 +5798,7 @@
|
|
5696
5798
|
}
|
5697
5799
|
});
|
5698
5800
|
d3.ease = function(name) {
|
5699
|
-
var i = name.indexOf("-"), t = i >= 0 ? name.
|
5801
|
+
var i = name.indexOf("-"), t = i >= 0 ? name.slice(0, i) : name, m = i >= 0 ? name.slice(i + 1) : "in";
|
5700
5802
|
t = d3_ease.get(t) || d3_ease_default;
|
5701
5803
|
m = d3_ease_mode.get(m) || d3_identity;
|
5702
5804
|
return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));
|
@@ -5901,15 +6003,15 @@
|
|
5901
6003
|
};
|
5902
6004
|
}
|
5903
6005
|
function d3_uninterpolateNumber(a, b) {
|
5904
|
-
b = b
|
6006
|
+
b = (b -= a = +a) || 1 / b;
|
5905
6007
|
return function(x) {
|
5906
|
-
return (x - a)
|
6008
|
+
return (x - a) / b;
|
5907
6009
|
};
|
5908
6010
|
}
|
5909
6011
|
function d3_uninterpolateClamp(a, b) {
|
5910
|
-
b = b
|
6012
|
+
b = (b -= a = +a) || 1 / b;
|
5911
6013
|
return function(x) {
|
5912
|
-
return Math.max(0, Math.min(1, (x - a)
|
6014
|
+
return Math.max(0, Math.min(1, (x - a) / b));
|
5913
6015
|
};
|
5914
6016
|
}
|
5915
6017
|
d3.layout = {};
|
@@ -6460,49 +6562,50 @@
|
|
6460
6562
|
return d3_layout_hierarchyRebind(partition, hierarchy);
|
6461
6563
|
};
|
6462
6564
|
d3.layout.pie = function() {
|
6463
|
-
var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle =
|
6565
|
+
var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ, padAngle = 0;
|
6464
6566
|
function pie(data) {
|
6465
|
-
var values = data.map(function(d, i) {
|
6567
|
+
var n = data.length, values = data.map(function(d, i) {
|
6466
6568
|
return +value.call(pie, d, i);
|
6467
|
-
});
|
6468
|
-
var a = +(typeof startAngle === "function" ? startAngle.apply(this, arguments) : startAngle);
|
6469
|
-
var k = ((typeof endAngle === "function" ? endAngle.apply(this, arguments) : endAngle) - a) / d3.sum(values);
|
6470
|
-
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;
|
6471
6570
|
if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {
|
6472
6571
|
return values[j] - values[i];
|
6473
6572
|
} : function(i, j) {
|
6474
6573
|
return sort(data[i], data[j]);
|
6475
6574
|
});
|
6476
|
-
var arcs = [];
|
6477
6575
|
index.forEach(function(i) {
|
6478
|
-
var d;
|
6479
6576
|
arcs[i] = {
|
6480
6577
|
data: data[i],
|
6481
|
-
value:
|
6578
|
+
value: v = values[i],
|
6482
6579
|
startAngle: a,
|
6483
|
-
endAngle: a +=
|
6580
|
+
endAngle: a += v * k + pa,
|
6581
|
+
padAngle: p
|
6484
6582
|
};
|
6485
6583
|
});
|
6486
6584
|
return arcs;
|
6487
6585
|
}
|
6488
|
-
pie.value = function(
|
6586
|
+
pie.value = function(_) {
|
6489
6587
|
if (!arguments.length) return value;
|
6490
|
-
value =
|
6588
|
+
value = _;
|
6491
6589
|
return pie;
|
6492
6590
|
};
|
6493
|
-
pie.sort = function(
|
6591
|
+
pie.sort = function(_) {
|
6494
6592
|
if (!arguments.length) return sort;
|
6495
|
-
sort =
|
6593
|
+
sort = _;
|
6496
6594
|
return pie;
|
6497
6595
|
};
|
6498
|
-
pie.startAngle = function(
|
6596
|
+
pie.startAngle = function(_) {
|
6499
6597
|
if (!arguments.length) return startAngle;
|
6500
|
-
startAngle =
|
6598
|
+
startAngle = _;
|
6501
6599
|
return pie;
|
6502
6600
|
};
|
6503
|
-
pie.endAngle = function(
|
6601
|
+
pie.endAngle = function(_) {
|
6504
6602
|
if (!arguments.length) return endAngle;
|
6505
|
-
endAngle =
|
6603
|
+
endAngle = _;
|
6604
|
+
return pie;
|
6605
|
+
};
|
6606
|
+
pie.padAngle = function(_) {
|
6607
|
+
if (!arguments.length) return padAngle;
|
6608
|
+
padAngle = _;
|
6506
6609
|
return pie;
|
6507
6610
|
};
|
6508
6611
|
return pie;
|
@@ -6511,6 +6614,7 @@
|
|
6511
6614
|
d3.layout.stack = function() {
|
6512
6615
|
var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;
|
6513
6616
|
function stack(data, index) {
|
6617
|
+
if (!(n = data.length)) return data;
|
6514
6618
|
var series = data.map(function(d, i) {
|
6515
6619
|
return values.call(stack, d, i);
|
6516
6620
|
});
|
@@ -6523,7 +6627,7 @@
|
|
6523
6627
|
series = d3.permute(series, orders);
|
6524
6628
|
points = d3.permute(points, orders);
|
6525
6629
|
var offsets = offset.call(stack, points, index);
|
6526
|
-
var
|
6630
|
+
var m = series[0].length, n, i, j, o;
|
6527
6631
|
for (j = 0; j < m; ++j) {
|
6528
6632
|
out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);
|
6529
6633
|
for (i = 1; i < n; ++i) {
|
@@ -7600,8 +7704,9 @@
|
|
7600
7704
|
};
|
7601
7705
|
scale.rangePoints = function(x, padding) {
|
7602
7706
|
if (arguments.length < 2) padding = 0;
|
7603
|
-
var start = x[0], stop = x[1], step =
|
7604
|
-
|
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);
|
7605
7710
|
rangeBand = 0;
|
7606
7711
|
ranger = {
|
7607
7712
|
t: "rangePoints",
|
@@ -7609,6 +7714,18 @@
|
|
7609
7714
|
};
|
7610
7715
|
return scale;
|
7611
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
|
+
};
|
7612
7729
|
scale.rangeBands = function(x, padding, outerPadding) {
|
7613
7730
|
if (arguments.length < 2) padding = 0;
|
7614
7731
|
if (arguments.length < 3) outerPadding = padding;
|
@@ -7625,8 +7742,8 @@
|
|
7625
7742
|
scale.rangeRoundBands = function(x, padding, outerPadding) {
|
7626
7743
|
if (arguments.length < 2) padding = 0;
|
7627
7744
|
if (arguments.length < 3) outerPadding = padding;
|
7628
|
-
var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding))
|
7629
|
-
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);
|
7630
7747
|
if (reverse) range.reverse();
|
7631
7748
|
rangeBand = Math.round(step * (1 - padding));
|
7632
7749
|
ranger = {
|
@@ -7678,7 +7795,7 @@
|
|
7678
7795
|
}
|
7679
7796
|
scale.domain = function(x) {
|
7680
7797
|
if (!arguments.length) return domain;
|
7681
|
-
domain = x.
|
7798
|
+
domain = x.map(d3_number).filter(d3_numeric).sort(d3_ascending);
|
7682
7799
|
return rescale();
|
7683
7800
|
};
|
7684
7801
|
scale.range = function(x) {
|
@@ -7783,12 +7900,86 @@
|
|
7783
7900
|
return identity;
|
7784
7901
|
}
|
7785
7902
|
d3.svg = {};
|
7903
|
+
function d3_zero() {
|
7904
|
+
return 0;
|
7905
|
+
}
|
7786
7906
|
d3.svg.arc = function() {
|
7787
|
-
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;
|
7788
7908
|
function arc() {
|
7789
|
-
var r0 = innerRadius.apply(this, arguments), r1 = outerRadius.apply(this, arguments), a0 = startAngle.apply(this, arguments)
|
7790
|
-
|
7791
|
-
|
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;
|
7792
7983
|
}
|
7793
7984
|
arc.innerRadius = function(v) {
|
7794
7985
|
if (!arguments.length) return innerRadius;
|
@@ -7800,6 +7991,16 @@
|
|
7800
7991
|
outerRadius = d3_functor(v);
|
7801
7992
|
return arc;
|
7802
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
|
+
};
|
7803
8004
|
arc.startAngle = function(v) {
|
7804
8005
|
if (!arguments.length) return startAngle;
|
7805
8006
|
startAngle = d3_functor(v);
|
@@ -7810,13 +8011,18 @@
|
|
7810
8011
|
endAngle = d3_functor(v);
|
7811
8012
|
return arc;
|
7812
8013
|
};
|
8014
|
+
arc.padAngle = function(v) {
|
8015
|
+
if (!arguments.length) return padAngle;
|
8016
|
+
padAngle = d3_functor(v);
|
8017
|
+
return arc;
|
8018
|
+
};
|
7813
8019
|
arc.centroid = function() {
|
7814
|
-
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π;
|
7815
8021
|
return [ Math.cos(a) * r, Math.sin(a) * r ];
|
7816
8022
|
};
|
7817
8023
|
return arc;
|
7818
8024
|
};
|
7819
|
-
var
|
8025
|
+
var d3_svg_arcAuto = "auto";
|
7820
8026
|
function d3_svg_arcInnerRadius(d) {
|
7821
8027
|
return d.innerRadius;
|
7822
8028
|
}
|
@@ -7829,6 +8035,17 @@
|
|
7829
8035
|
function d3_svg_arcEndAngle(d) {
|
7830
8036
|
return d.endAngle;
|
7831
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
|
+
}
|
7832
8049
|
function d3_svg_line(projection) {
|
7833
8050
|
var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;
|
7834
8051
|
function line(data) {
|
@@ -7919,7 +8136,7 @@
|
|
7919
8136
|
return path.join("");
|
7920
8137
|
}
|
7921
8138
|
function d3_svg_lineCardinalOpen(points, tension) {
|
7922
|
-
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));
|
7923
8140
|
}
|
7924
8141
|
function d3_svg_lineCardinalClosed(points, tension) {
|
7925
8142
|
return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite((points.push(points[0]),
|
@@ -8089,7 +8306,7 @@
|
|
8089
8306
|
while (++i < n) {
|
8090
8307
|
point = points[i];
|
8091
8308
|
r = point[0];
|
8092
|
-
a = point[1]
|
8309
|
+
a = point[1] - halfπ;
|
8093
8310
|
point[0] = r * Math.cos(a);
|
8094
8311
|
point[1] = r * Math.sin(a);
|
8095
8312
|
}
|
@@ -8190,7 +8407,7 @@
|
|
8190
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";
|
8191
8408
|
}
|
8192
8409
|
function subgroup(self, f, d, i) {
|
8193
|
-
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π;
|
8194
8411
|
return {
|
8195
8412
|
r: r,
|
8196
8413
|
a0: a0,
|
@@ -8280,7 +8497,7 @@
|
|
8280
8497
|
};
|
8281
8498
|
function d3_svg_diagonalRadialProjection(projection) {
|
8282
8499
|
return function() {
|
8283
|
-
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π;
|
8284
8501
|
return [ r * Math.cos(a), r * Math.sin(a) ];
|
8285
8502
|
};
|
8286
8503
|
}
|
@@ -8336,8 +8553,9 @@
|
|
8336
8553
|
});
|
8337
8554
|
d3.svg.symbolTypes = d3_svg_symbols.keys();
|
8338
8555
|
var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);
|
8339
|
-
function d3_transition(groups, id) {
|
8556
|
+
function d3_transition(groups, namespace, id) {
|
8340
8557
|
d3_subclass(groups, d3_transitionPrototype);
|
8558
|
+
groups.namespace = namespace;
|
8341
8559
|
groups.id = id;
|
8342
8560
|
return groups;
|
8343
8561
|
}
|
@@ -8351,39 +8569,39 @@
|
|
8351
8569
|
};
|
8352
8570
|
d3.transition.prototype = d3_transitionPrototype;
|
8353
8571
|
d3_transitionPrototype.select = function(selector) {
|
8354
|
-
var id = this.id, subgroups = [], subgroup, subnode, node;
|
8572
|
+
var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnode, node;
|
8355
8573
|
selector = d3_selection_selector(selector);
|
8356
8574
|
for (var j = -1, m = this.length; ++j < m; ) {
|
8357
8575
|
subgroups.push(subgroup = []);
|
8358
8576
|
for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
|
8359
8577
|
if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {
|
8360
8578
|
if ("__data__" in node) subnode.__data__ = node.__data__;
|
8361
|
-
d3_transitionNode(subnode, i, id, node
|
8579
|
+
d3_transitionNode(subnode, i, ns, id, node[ns][id]);
|
8362
8580
|
subgroup.push(subnode);
|
8363
8581
|
} else {
|
8364
8582
|
subgroup.push(null);
|
8365
8583
|
}
|
8366
8584
|
}
|
8367
8585
|
}
|
8368
|
-
return d3_transition(subgroups, id);
|
8586
|
+
return d3_transition(subgroups, ns, id);
|
8369
8587
|
};
|
8370
8588
|
d3_transitionPrototype.selectAll = function(selector) {
|
8371
|
-
var id = this.id, subgroups = [], subgroup, subnodes, node, subnode, transition;
|
8589
|
+
var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnodes, node, subnode, transition;
|
8372
8590
|
selector = d3_selection_selectorAll(selector);
|
8373
8591
|
for (var j = -1, m = this.length; ++j < m; ) {
|
8374
8592
|
for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
|
8375
8593
|
if (node = group[i]) {
|
8376
|
-
transition = node
|
8594
|
+
transition = node[ns][id];
|
8377
8595
|
subnodes = selector.call(node, node.__data__, i, j);
|
8378
8596
|
subgroups.push(subgroup = []);
|
8379
8597
|
for (var k = -1, o = subnodes.length; ++k < o; ) {
|
8380
|
-
if (subnode = subnodes[k]) d3_transitionNode(subnode, k, id, transition);
|
8598
|
+
if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);
|
8381
8599
|
subgroup.push(subnode);
|
8382
8600
|
}
|
8383
8601
|
}
|
8384
8602
|
}
|
8385
8603
|
}
|
8386
|
-
return d3_transition(subgroups, id);
|
8604
|
+
return d3_transition(subgroups, ns, id);
|
8387
8605
|
};
|
8388
8606
|
d3_transitionPrototype.filter = function(filter) {
|
8389
8607
|
var subgroups = [], subgroup, group, node;
|
@@ -8396,23 +8614,23 @@
|
|
8396
8614
|
}
|
8397
8615
|
}
|
8398
8616
|
}
|
8399
|
-
return d3_transition(subgroups, this.id);
|
8617
|
+
return d3_transition(subgroups, this.namespace, this.id);
|
8400
8618
|
};
|
8401
8619
|
d3_transitionPrototype.tween = function(name, tween) {
|
8402
|
-
var id = this.id;
|
8403
|
-
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);
|
8404
8622
|
return d3_selection_each(this, tween == null ? function(node) {
|
8405
|
-
node
|
8623
|
+
node[ns][id].tween.remove(name);
|
8406
8624
|
} : function(node) {
|
8407
|
-
node
|
8625
|
+
node[ns][id].tween.set(name, tween);
|
8408
8626
|
});
|
8409
8627
|
};
|
8410
8628
|
function d3_transition_tween(groups, name, value, tween) {
|
8411
|
-
var id = groups.id;
|
8629
|
+
var id = groups.id, ns = groups.namespace;
|
8412
8630
|
return d3_selection_each(groups, typeof value === "function" ? function(node, i, j) {
|
8413
|
-
node
|
8631
|
+
node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j)));
|
8414
8632
|
} : (value = tween(value), function(node) {
|
8415
|
-
node
|
8633
|
+
node[ns][id].tween.set(name, value);
|
8416
8634
|
}));
|
8417
8635
|
}
|
8418
8636
|
d3_transitionPrototype.attr = function(nameNS, value) {
|
@@ -8504,73 +8722,81 @@
|
|
8504
8722
|
};
|
8505
8723
|
}
|
8506
8724
|
d3_transitionPrototype.remove = function() {
|
8725
|
+
var ns = this.namespace;
|
8507
8726
|
return this.each("end.transition", function() {
|
8508
8727
|
var p;
|
8509
|
-
if (this.
|
8728
|
+
if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);
|
8510
8729
|
});
|
8511
8730
|
};
|
8512
8731
|
d3_transitionPrototype.ease = function(value) {
|
8513
|
-
var id = this.id;
|
8514
|
-
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;
|
8515
8734
|
if (typeof value !== "function") value = d3.ease.apply(d3, arguments);
|
8516
8735
|
return d3_selection_each(this, function(node) {
|
8517
|
-
node
|
8736
|
+
node[ns][id].ease = value;
|
8518
8737
|
});
|
8519
8738
|
};
|
8520
8739
|
d3_transitionPrototype.delay = function(value) {
|
8521
|
-
var id = this.id;
|
8522
|
-
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;
|
8523
8742
|
return d3_selection_each(this, typeof value === "function" ? function(node, i, j) {
|
8524
|
-
node
|
8743
|
+
node[ns][id].delay = +value.call(node, node.__data__, i, j);
|
8525
8744
|
} : (value = +value, function(node) {
|
8526
|
-
node
|
8745
|
+
node[ns][id].delay = value;
|
8527
8746
|
}));
|
8528
8747
|
};
|
8529
8748
|
d3_transitionPrototype.duration = function(value) {
|
8530
|
-
var id = this.id;
|
8531
|
-
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;
|
8532
8751
|
return d3_selection_each(this, typeof value === "function" ? function(node, i, j) {
|
8533
|
-
node
|
8752
|
+
node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j));
|
8534
8753
|
} : (value = Math.max(1, value), function(node) {
|
8535
|
-
node
|
8754
|
+
node[ns][id].duration = value;
|
8536
8755
|
}));
|
8537
8756
|
};
|
8538
8757
|
d3_transitionPrototype.each = function(type, listener) {
|
8539
|
-
var id = this.id;
|
8758
|
+
var id = this.id, ns = this.namespace;
|
8540
8759
|
if (arguments.length < 2) {
|
8541
8760
|
var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;
|
8542
8761
|
d3_transitionInheritId = id;
|
8543
8762
|
d3_selection_each(this, function(node, i, j) {
|
8544
|
-
d3_transitionInherit = node
|
8763
|
+
d3_transitionInherit = node[ns][id];
|
8545
8764
|
type.call(node, node.__data__, i, j);
|
8546
8765
|
});
|
8547
8766
|
d3_transitionInherit = inherit;
|
8548
8767
|
d3_transitionInheritId = inheritId;
|
8549
8768
|
} else {
|
8550
8769
|
d3_selection_each(this, function(node) {
|
8551
|
-
var transition = node
|
8552
|
-
(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);
|
8553
8772
|
});
|
8554
8773
|
}
|
8555
8774
|
return this;
|
8556
8775
|
};
|
8557
8776
|
d3_transitionPrototype.transition = function() {
|
8558
|
-
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;
|
8559
8778
|
for (var j = 0, m = this.length; j < m; j++) {
|
8560
8779
|
subgroups.push(subgroup = []);
|
8561
8780
|
for (var group = this[j], i = 0, n = group.length; i < n; i++) {
|
8562
8781
|
if (node = group[i]) {
|
8563
|
-
transition =
|
8564
|
-
|
8565
|
-
|
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
|
+
});
|
8566
8789
|
}
|
8567
8790
|
subgroup.push(node);
|
8568
8791
|
}
|
8569
8792
|
}
|
8570
|
-
return d3_transition(subgroups, id1);
|
8793
|
+
return d3_transition(subgroups, ns, id1);
|
8571
8794
|
};
|
8572
|
-
function
|
8573
|
-
|
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] = {
|
8574
8800
|
active: 0,
|
8575
8801
|
count: 0
|
8576
8802
|
}), transition = lock[id];
|
@@ -8579,18 +8805,19 @@
|
|
8579
8805
|
transition = lock[id] = {
|
8580
8806
|
tween: new d3_Map(),
|
8581
8807
|
time: time,
|
8582
|
-
ease: inherit.ease,
|
8583
8808
|
delay: inherit.delay,
|
8584
|
-
duration: inherit.duration
|
8809
|
+
duration: inherit.duration,
|
8810
|
+
ease: inherit.ease
|
8585
8811
|
};
|
8812
|
+
inherit = null;
|
8586
8813
|
++lock.count;
|
8587
8814
|
d3.timer(function(elapsed) {
|
8588
|
-
var d = node.__data__,
|
8815
|
+
var d = node.__data__, delay = transition.delay, duration, ease, timer = d3_timer_active, tweened = [];
|
8589
8816
|
timer.t = delay + time;
|
8590
8817
|
if (delay <= elapsed) return start(elapsed - delay);
|
8591
8818
|
timer.c = start;
|
8592
8819
|
function start(elapsed) {
|
8593
|
-
if (lock.active > id) return stop();
|
8820
|
+
if (lock.active > id) return stop(false);
|
8594
8821
|
lock.active = id;
|
8595
8822
|
transition.event && transition.event.start.call(node, d, i);
|
8596
8823
|
transition.tween.forEach(function(key, value) {
|
@@ -8598,24 +8825,24 @@
|
|
8598
8825
|
tweened.push(value);
|
8599
8826
|
}
|
8600
8827
|
});
|
8828
|
+
ease = transition.ease;
|
8829
|
+
duration = transition.duration;
|
8601
8830
|
d3.timer(function() {
|
8602
8831
|
timer.c = tick(elapsed || 1) ? d3_true : tick;
|
8603
8832
|
return 1;
|
8604
8833
|
}, 0, time);
|
8605
8834
|
}
|
8606
8835
|
function tick(elapsed) {
|
8607
|
-
if (lock.active !== id) return stop();
|
8836
|
+
if (lock.active !== id) return stop(false);
|
8608
8837
|
var t = elapsed / duration, e = ease(t), n = tweened.length;
|
8609
8838
|
while (n > 0) {
|
8610
8839
|
tweened[--n].call(node, e);
|
8611
8840
|
}
|
8612
|
-
if (t >= 1)
|
8613
|
-
transition.event && transition.event.end.call(node, d, i);
|
8614
|
-
return stop();
|
8615
|
-
}
|
8841
|
+
if (t >= 1) return stop(true);
|
8616
8842
|
}
|
8617
|
-
function stop() {
|
8618
|
-
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];
|
8619
8846
|
return 1;
|
8620
8847
|
}
|
8621
8848
|
}, 0, time);
|
@@ -8627,61 +8854,25 @@
|
|
8627
8854
|
g.each(function() {
|
8628
8855
|
var g = d3.select(this);
|
8629
8856
|
var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy();
|
8630
|
-
var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(".tick").data(ticks, scale1), tickEnter = tick.enter().insert("g", ".domain").attr("class", "tick").style("opacity", ε), tickExit = d3.transition(tick.exit()).style("opacity", ε).remove(), tickUpdate = d3.transition(tick.order()).style("opacity", 1), tickTransform;
|
8857
|
+
var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(".tick").data(ticks, scale1), tickEnter = tick.enter().insert("g", ".domain").attr("class", "tick").style("opacity", ε), tickExit = d3.transition(tick.exit()).style("opacity", ε).remove(), tickUpdate = d3.transition(tick.order()).style("opacity", 1), tickSpacing = Math.max(innerTickSize, 0) + tickPadding, tickTransform;
|
8631
8858
|
var range = d3_scaleRange(scale1), path = g.selectAll(".domain").data([ 0 ]), pathUpdate = (path.enter().append("path").attr("class", "domain"),
|
8632
8859
|
d3.transition(path));
|
8633
8860
|
tickEnter.append("line");
|
8634
8861
|
tickEnter.append("text");
|
8635
|
-
var lineEnter = tickEnter.select("line"), lineUpdate = tickUpdate.select("line"), text = tick.select("text").text(tickFormat), textEnter = tickEnter.select("text"), textUpdate = tickUpdate.select("text");
|
8636
|
-
|
8637
|
-
|
8638
|
-
|
8639
|
-
|
8640
|
-
|
8641
|
-
|
8642
|
-
|
8643
|
-
|
8644
|
-
|
8645
|
-
|
8646
|
-
|
8647
|
-
|
8648
|
-
|
8649
|
-
case "top":
|
8650
|
-
{
|
8651
|
-
tickTransform = d3_svg_axisX;
|
8652
|
-
lineEnter.attr("y2", -innerTickSize);
|
8653
|
-
textEnter.attr("y", -(Math.max(innerTickSize, 0) + tickPadding));
|
8654
|
-
lineUpdate.attr("x2", 0).attr("y2", -innerTickSize);
|
8655
|
-
textUpdate.attr("x", 0).attr("y", -(Math.max(innerTickSize, 0) + tickPadding));
|
8656
|
-
text.attr("dy", "0em").style("text-anchor", "middle");
|
8657
|
-
pathUpdate.attr("d", "M" + range[0] + "," + -outerTickSize + "V0H" + range[1] + "V" + -outerTickSize);
|
8658
|
-
break;
|
8659
|
-
}
|
8660
|
-
|
8661
|
-
case "left":
|
8662
|
-
{
|
8663
|
-
tickTransform = d3_svg_axisY;
|
8664
|
-
lineEnter.attr("x2", -innerTickSize);
|
8665
|
-
textEnter.attr("x", -(Math.max(innerTickSize, 0) + tickPadding));
|
8666
|
-
lineUpdate.attr("x2", -innerTickSize).attr("y2", 0);
|
8667
|
-
textUpdate.attr("x", -(Math.max(innerTickSize, 0) + tickPadding)).attr("y", 0);
|
8668
|
-
text.attr("dy", ".32em").style("text-anchor", "end");
|
8669
|
-
pathUpdate.attr("d", "M" + -outerTickSize + "," + range[0] + "H0V" + range[1] + "H" + -outerTickSize);
|
8670
|
-
break;
|
8671
|
-
}
|
8672
|
-
|
8673
|
-
case "right":
|
8674
|
-
{
|
8675
|
-
tickTransform = d3_svg_axisY;
|
8676
|
-
lineEnter.attr("x2", innerTickSize);
|
8677
|
-
textEnter.attr("x", Math.max(innerTickSize, 0) + tickPadding);
|
8678
|
-
lineUpdate.attr("x2", innerTickSize).attr("y2", 0);
|
8679
|
-
textUpdate.attr("x", Math.max(innerTickSize, 0) + tickPadding).attr("y", 0);
|
8680
|
-
text.attr("dy", ".32em").style("text-anchor", "start");
|
8681
|
-
pathUpdate.attr("d", "M" + outerTickSize + "," + range[0] + "H0V" + range[1] + "H" + outerTickSize);
|
8682
|
-
break;
|
8683
|
-
}
|
8684
|
-
}
|
8862
|
+
var lineEnter = tickEnter.select("line"), lineUpdate = tickUpdate.select("line"), text = tick.select("text").text(tickFormat), textEnter = tickEnter.select("text"), textUpdate = tickUpdate.select("text"), sign = orient === "top" || orient === "left" ? -1 : 1, x1, x2, y1, y2;
|
8863
|
+
if (orient === "bottom" || orient === "top") {
|
8864
|
+
tickTransform = d3_svg_axisX, x1 = "x", y1 = "y", x2 = "x2", y2 = "y2";
|
8865
|
+
text.attr("dy", sign < 0 ? "0em" : ".71em").style("text-anchor", "middle");
|
8866
|
+
pathUpdate.attr("d", "M" + range[0] + "," + sign * outerTickSize + "V0H" + range[1] + "V" + sign * outerTickSize);
|
8867
|
+
} else {
|
8868
|
+
tickTransform = d3_svg_axisY, x1 = "y", y1 = "x", x2 = "y2", y2 = "x2";
|
8869
|
+
text.attr("dy", ".32em").style("text-anchor", sign < 0 ? "end" : "start");
|
8870
|
+
pathUpdate.attr("d", "M" + sign * outerTickSize + "," + range[0] + "H0V" + range[1] + "H" + sign * outerTickSize);
|
8871
|
+
}
|
8872
|
+
lineEnter.attr(y2, sign * innerTickSize);
|
8873
|
+
textEnter.attr(y1, sign * tickSpacing);
|
8874
|
+
lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize);
|
8875
|
+
textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing);
|
8685
8876
|
if (scale1.rangeBand) {
|
8686
8877
|
var x = scale1, dx = x.rangeBand() / 2;
|
8687
8878
|
scale0 = scale1 = function(d) {
|
@@ -8690,10 +8881,10 @@
|
|
8690
8881
|
} else if (scale0.rangeBand) {
|
8691
8882
|
scale0 = scale1;
|
8692
8883
|
} else {
|
8693
|
-
tickExit.call(tickTransform, scale1);
|
8884
|
+
tickExit.call(tickTransform, scale1, scale0);
|
8694
8885
|
}
|
8695
|
-
tickEnter.call(tickTransform, scale0);
|
8696
|
-
tickUpdate.call(tickTransform, scale1);
|
8886
|
+
tickEnter.call(tickTransform, scale0, scale1);
|
8887
|
+
tickUpdate.call(tickTransform, scale1, scale1);
|
8697
8888
|
});
|
8698
8889
|
}
|
8699
8890
|
axis.scale = function(x) {
|
@@ -8754,14 +8945,16 @@
|
|
8754
8945
|
bottom: 1,
|
8755
8946
|
left: 1
|
8756
8947
|
};
|
8757
|
-
function d3_svg_axisX(selection,
|
8948
|
+
function d3_svg_axisX(selection, x0, x1) {
|
8758
8949
|
selection.attr("transform", function(d) {
|
8759
|
-
|
8950
|
+
var v0 = x0(d);
|
8951
|
+
return "translate(" + (isFinite(v0) ? v0 : x1(d)) + ",0)";
|
8760
8952
|
});
|
8761
8953
|
}
|
8762
|
-
function d3_svg_axisY(selection,
|
8954
|
+
function d3_svg_axisY(selection, y0, y1) {
|
8763
8955
|
selection.attr("transform", function(d) {
|
8764
|
-
|
8956
|
+
var v0 = y0(d);
|
8957
|
+
return "translate(0," + (isFinite(v0) ? v0 : y1(d)) + ")";
|
8765
8958
|
});
|
8766
8959
|
}
|
8767
8960
|
d3.svg.brush = function() {
|