d3c3-rails 0.1.0 → 0.1.2
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 +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() {
|