Skip to content

Commit fbcb028

Browse files
committed
Merge branch 'release'
2 parents 5bae5f4 + f21d6b8 commit fbcb028

12 files changed

Lines changed: 86 additions & 42 deletions

File tree

d3.js

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ try {
1010
d3_style_setProperty.call(this, name, value + "", priority);
1111
};
1212
}
13-
d3 = {version: "2.7.1"}; // semver
13+
d3 = {version: "2.7.2"}; // semver
1414
var d3_array = d3_arraySlice; // conversion for NodeLists
1515

1616
function d3_arrayCopy(pseudoarray) {
@@ -1777,7 +1777,7 @@ d3_selectionPrototype.order = function() {
17771777
for (var j = -1, m = this.length; ++j < m;) {
17781778
for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0;) {
17791779
if (node = group[i]) {
1780-
if (next) next.parentNode.insertBefore(node, next);
1780+
if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);
17811781
next = node;
17821782
}
17831783
}
@@ -2578,11 +2578,11 @@ function d3_scale_log(linear, log) {
25782578
var d3_scale_logFormat = d3.format(".0e");
25792579

25802580
function d3_scale_logp(x) {
2581-
return Math.log(x) / Math.LN10;
2581+
return Math.log(x < 0 ? 0 : x) / Math.LN10;
25822582
}
25832583

25842584
function d3_scale_logn(x) {
2585-
return -Math.log(-x) / Math.LN10;
2585+
return -Math.log(x > 0 ? 0 : -x) / Math.LN10;
25862586
}
25872587

25882588
d3_scale_logp.pow = function(x) {
@@ -3855,31 +3855,43 @@ d3.svg.axis = function() {
38553855
switch (orient) {
38563856
case "bottom": {
38573857
tickTransform = d3_svg_axisX;
3858+
subtickEnter.attr("y2", tickMinorSize);
38583859
subtickUpdate.attr("x2", 0).attr("y2", tickMinorSize);
3860+
tickEnter.select("line").attr("y2", tickMajorSize);
3861+
tickEnter.select("text").attr("y", Math.max(tickMajorSize, 0) + tickPadding);
38593862
tickUpdate.select("line").attr("x2", 0).attr("y2", tickMajorSize);
38603863
tickUpdate.select("text").attr("x", 0).attr("y", Math.max(tickMajorSize, 0) + tickPadding).attr("dy", ".71em").attr("text-anchor", "middle");
38613864
pathUpdate.attr("d", "M" + range[0] + "," + tickEndSize + "V0H" + range[1] + "V" + tickEndSize);
38623865
break;
38633866
}
38643867
case "top": {
38653868
tickTransform = d3_svg_axisX;
3869+
subtickEnter.attr("y2", -tickMinorSize);
38663870
subtickUpdate.attr("x2", 0).attr("y2", -tickMinorSize);
3871+
tickEnter.select("line").attr("y2", -tickMajorSize);
3872+
tickEnter.select("text").attr("y", -(Math.max(tickMajorSize, 0) + tickPadding));
38673873
tickUpdate.select("line").attr("x2", 0).attr("y2", -tickMajorSize);
38683874
tickUpdate.select("text").attr("x", 0).attr("y", -(Math.max(tickMajorSize, 0) + tickPadding)).attr("dy", "0em").attr("text-anchor", "middle");
38693875
pathUpdate.attr("d", "M" + range[0] + "," + -tickEndSize + "V0H" + range[1] + "V" + -tickEndSize);
38703876
break;
38713877
}
38723878
case "left": {
38733879
tickTransform = d3_svg_axisY;
3880+
subtickEnter.attr("x2", -tickMinorSize);
38743881
subtickUpdate.attr("x2", -tickMinorSize).attr("y2", 0);
3882+
tickEnter.select("line").attr("x2", -tickMajorSize);
3883+
tickEnter.select("text").attr("x", -(Math.max(tickMajorSize, 0) + tickPadding));
38753884
tickUpdate.select("line").attr("x2", -tickMajorSize).attr("y2", 0);
38763885
tickUpdate.select("text").attr("x", -(Math.max(tickMajorSize, 0) + tickPadding)).attr("y", 0).attr("dy", ".32em").attr("text-anchor", "end");
38773886
pathUpdate.attr("d", "M" + -tickEndSize + "," + range[0] + "H0V" + range[1] + "H" + -tickEndSize);
38783887
break;
38793888
}
38803889
case "right": {
38813890
tickTransform = d3_svg_axisY;
3891+
subtickEnter.attr("x2", tickMinorSize);
38823892
subtickUpdate.attr("x2", tickMinorSize).attr("y2", 0);
3893+
tickEnter.select("line").attr("x2", tickMajorSize);
3894+
tickEnter.select("text").attr("x", Math.max(tickMajorSize, 0) + tickPadding);
38833895
tickUpdate.select("line").attr("x2", tickMajorSize).attr("y2", 0);
38843896
tickUpdate.select("text").attr("x", Math.max(tickMajorSize, 0) + tickPadding).attr("y", 0).attr("dy", ".32em").attr("text-anchor", "start");
38853897
pathUpdate.attr("d", "M" + tickEndSize + "," + range[0] + "H0V" + range[1] + "H" + tickEndSize);

d3.layout.js

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1203,7 +1203,7 @@ function d3_layout_packIntersects(a, b) {
12031203
var dx = b.x - a.x,
12041204
dy = b.y - a.y,
12051205
dr = a.r + b.r;
1206-
return (dr * dr - dx * dx - dy * dy) > .001; // within epsilon
1206+
return dr * dr - dx * dx - dy * dy > .001; // within epsilon
12071207
}
12081208

12091209
function d3_layout_packCircle(nodes) {
@@ -1262,28 +1262,20 @@ function d3_layout_packCircle(nodes) {
12621262
if (isect == 1) {
12631263
for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {
12641264
if (d3_layout_packIntersects(k, c)) {
1265-
if (s2 < s1) {
1266-
isect = -1;
1267-
j = k;
1268-
}
12691265
break;
12701266
}
12711267
}
12721268
}
12731269

12741270
// Update node chain.
1275-
if (isect == 0) {
1271+
if (isect) {
1272+
if (s1 < s2 || (s1 == s2 && b.r < a.r)) d3_layout_packSplice(a, b = j);
1273+
else d3_layout_packSplice(a = k, b);
1274+
i--;
1275+
} else {
12761276
d3_layout_packInsert(a, c);
12771277
b = c;
12781278
bound(c);
1279-
} else if (isect > 0) {
1280-
d3_layout_packSplice(a, j);
1281-
b = j;
1282-
i--;
1283-
} else { // isect < 0
1284-
d3_layout_packSplice(j, b);
1285-
a = j;
1286-
i--;
12871279
}
12881280
}
12891281
}

d3.layout.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

d3.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "d3",
3-
"version": "2.7.1",
3+
"version": "2.7.2",
44
"description": "A small, free JavaScript library for manipulating documents based on data.",
55
"keywords": [
66
"dom",

src/core/core.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
d3 = {version: "2.7.1"}; // semver
1+
d3 = {version: "2.7.2"}; // semver

src/core/selection-order.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ d3_selectionPrototype.order = function() {
22
for (var j = -1, m = this.length; ++j < m;) {
33
for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0;) {
44
if (node = group[i]) {
5-
if (next) next.parentNode.insertBefore(node, next);
5+
if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);
66
next = node;
77
}
88
}

src/layout/pack.js

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ function d3_layout_packIntersects(a, b) {
5050
var dx = b.x - a.x,
5151
dy = b.y - a.y,
5252
dr = a.r + b.r;
53-
return (dr * dr - dx * dx - dy * dy) > .001; // within epsilon
53+
return dr * dr - dx * dx - dy * dy > .001; // within epsilon
5454
}
5555

5656
function d3_layout_packCircle(nodes) {
@@ -109,28 +109,20 @@ function d3_layout_packCircle(nodes) {
109109
if (isect == 1) {
110110
for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {
111111
if (d3_layout_packIntersects(k, c)) {
112-
if (s2 < s1) {
113-
isect = -1;
114-
j = k;
115-
}
116112
break;
117113
}
118114
}
119115
}
120116

121117
// Update node chain.
122-
if (isect == 0) {
118+
if (isect) {
119+
if (s1 < s2 || (s1 == s2 && b.r < a.r)) d3_layout_packSplice(a, b = j);
120+
else d3_layout_packSplice(a = k, b);
121+
i--;
122+
} else {
123123
d3_layout_packInsert(a, c);
124124
b = c;
125125
bound(c);
126-
} else if (isect > 0) {
127-
d3_layout_packSplice(a, j);
128-
b = j;
129-
i--;
130-
} else { // isect < 0
131-
d3_layout_packSplice(j, b);
132-
a = j;
133-
i--;
134126
}
135127
}
136128
}

src/scale/log.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,11 @@ function d3_scale_log(linear, log) {
6969
var d3_scale_logFormat = d3.format(".0e");
7070

7171
function d3_scale_logp(x) {
72-
return Math.log(x) / Math.LN10;
72+
return Math.log(x < 0 ? 0 : x) / Math.LN10;
7373
}
7474

7575
function d3_scale_logn(x) {
76-
return -Math.log(-x) / Math.LN10;
76+
return -Math.log(x > 0 ? 0 : -x) / Math.LN10;
7777
}
7878

7979
d3_scale_logp.pow = function(x) {

src/svg/axis.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,31 +63,43 @@ d3.svg.axis = function() {
6363
switch (orient) {
6464
case "bottom": {
6565
tickTransform = d3_svg_axisX;
66+
subtickEnter.attr("y2", tickMinorSize);
6667
subtickUpdate.attr("x2", 0).attr("y2", tickMinorSize);
68+
tickEnter.select("line").attr("y2", tickMajorSize);
69+
tickEnter.select("text").attr("y", Math.max(tickMajorSize, 0) + tickPadding);
6770
tickUpdate.select("line").attr("x2", 0).attr("y2", tickMajorSize);
6871
tickUpdate.select("text").attr("x", 0).attr("y", Math.max(tickMajorSize, 0) + tickPadding).attr("dy", ".71em").attr("text-anchor", "middle");
6972
pathUpdate.attr("d", "M" + range[0] + "," + tickEndSize + "V0H" + range[1] + "V" + tickEndSize);
7073
break;
7174
}
7275
case "top": {
7376
tickTransform = d3_svg_axisX;
77+
subtickEnter.attr("y2", -tickMinorSize);
7478
subtickUpdate.attr("x2", 0).attr("y2", -tickMinorSize);
79+
tickEnter.select("line").attr("y2", -tickMajorSize);
80+
tickEnter.select("text").attr("y", -(Math.max(tickMajorSize, 0) + tickPadding));
7581
tickUpdate.select("line").attr("x2", 0).attr("y2", -tickMajorSize);
7682
tickUpdate.select("text").attr("x", 0).attr("y", -(Math.max(tickMajorSize, 0) + tickPadding)).attr("dy", "0em").attr("text-anchor", "middle");
7783
pathUpdate.attr("d", "M" + range[0] + "," + -tickEndSize + "V0H" + range[1] + "V" + -tickEndSize);
7884
break;
7985
}
8086
case "left": {
8187
tickTransform = d3_svg_axisY;
88+
subtickEnter.attr("x2", -tickMinorSize);
8289
subtickUpdate.attr("x2", -tickMinorSize).attr("y2", 0);
90+
tickEnter.select("line").attr("x2", -tickMajorSize);
91+
tickEnter.select("text").attr("x", -(Math.max(tickMajorSize, 0) + tickPadding));
8392
tickUpdate.select("line").attr("x2", -tickMajorSize).attr("y2", 0);
8493
tickUpdate.select("text").attr("x", -(Math.max(tickMajorSize, 0) + tickPadding)).attr("y", 0).attr("dy", ".32em").attr("text-anchor", "end");
8594
pathUpdate.attr("d", "M" + -tickEndSize + "," + range[0] + "H0V" + range[1] + "H" + -tickEndSize);
8695
break;
8796
}
8897
case "right": {
8998
tickTransform = d3_svg_axisY;
99+
subtickEnter.attr("x2", tickMinorSize);
90100
subtickUpdate.attr("x2", tickMinorSize).attr("y2", 0);
101+
tickEnter.select("line").attr("x2", tickMajorSize);
102+
tickEnter.select("text").attr("x", Math.max(tickMajorSize, 0) + tickPadding);
91103
tickUpdate.select("line").attr("x2", tickMajorSize).attr("y2", 0);
92104
tickUpdate.select("text").attr("x", Math.max(tickMajorSize, 0) + tickPadding).attr("y", 0).attr("dy", ".32em").attr("text-anchor", "start");
93105
pathUpdate.attr("d", "M" + tickEndSize + "," + range[0] + "H0V" + range[1] + "H" + tickEndSize);

0 commit comments

Comments
 (0)