Skip to content

Commit 9192c11

Browse files
committed
Fix d3#1431 - sort with null nodes.
1 parent c247e16 commit 9192c11

2 files changed

Lines changed: 7 additions & 7 deletions

File tree

src/selection/sort.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@ d3_selectionPrototype.sort = function(comparator) {
1010
function d3_selection_sortComparator(comparator) {
1111
if (!arguments.length) comparator = d3.ascending;
1212
return function(a, b) {
13-
return (!a - !b) || comparator(a.__data__, b.__data__);
13+
return a && b ? comparator(a.__data__, b.__data__) : !a - !b;
1414
};
1515
}

test/selection/sort-test.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,18 +44,18 @@ suite.addBatch({
4444
"sorts null nodes at the end of the selection": function(span) {
4545
var nulls = 0;
4646
span[0][0].parentNode.removeChild(span[0][0]);
47-
span[0][0] = null;
47+
span[0][2].parentNode.removeChild(span[0][2]);
48+
span[0][0] = span[0][2] = null;
4849
span.sort(function(a, b) { if ((a === null) || (b === null)) ++nulls; return a - b; });
4950
assert.equal(nulls, 0);
5051

51-
assert.isNull(span[0][3]);
52+
assert.domNull(span[0][2]);
53+
assert.domNull(span[0][3]);
5254
assert.domNull(span[0][0].previousSibling);
5355
assert.domEqual(span[0][1], span[0][0].nextSibling);
5456
assert.domEqual(span[0][0], span[0][1].previousSibling);
55-
assert.domEqual(span[0][2], span[0][1].nextSibling);
56-
assert.domEqual(span[0][1], span[0][2].previousSibling);
57-
assert.domNull(span[0][2].nextSibling);
58-
assert.deepEqual(span[0].slice(0, -1).map(data), [3, 10, 21]);
57+
assert.domNull(span[0][1].nextSibling);
58+
assert.deepEqual(span[0].slice(0, -2).map(data), [3, 21]);
5959

6060
for (var i = 1; i < 4; ++i) {
6161
var d = span[i].parentNode.__data__;

0 commit comments

Comments
 (0)