"sorts null nodes at the end of the selection": function() {
      var span = d3.selectAll("div").selectAll("span"), nulls = 0;
      d3.select(span[0][0]).remove();
      span[0][0] = null;
      span.sort(function(a, b) { if ((a === null) || (b === null)) ++nulls; return a - b; });
      assert.equal(nulls, 0);

      assert.isNull(span[0][3]);
      assert.domNull(span[0][0].previousSibling);
      assert.domEqual(span[0][1], span[0][0].nextSibling);
      assert.domEqual(span[0][0], span[0][1].previousSibling);
      assert.domEqual(span[0][2], span[0][1].nextSibling);
      assert.domEqual(span[0][1], span[0][2].previousSibling);
      assert.domNull(span[0][2].nextSibling);
      assert.deepEqual(span[0].slice(0, -1).map(data), [3, 10, 21]);

      for (var i = 1; i < 4; ++i) {
        var d = span[i].parentNode.__data__;
        assert.domNull(span[i][0].previousSibling);
        assert.domEqual(span[i][1], span[i][0].nextSibling);
        assert.domEqual(span[i][0], span[i][1].previousSibling);
        assert.domEqual(span[i][2], span[i][1].nextSibling);
        assert.domEqual(span[i][1], span[i][2].previousSibling);
        assert.domEqual(span[i][3], span[i][2].nextSibling);
        assert.domEqual(span[i][2], span[i][3].previousSibling);
        assert.domNull(span[i][3].nextSibling);
        assert.deepEqual(span[i].map(data), [1, 2 + d, 10, 20 + d].sort(d3.ascending));
      }
    },
Пример #2
0
 "sorts elements by natural order": function(span) {
   span.sort();
   assert.domNull(span[0][0].previousSibling);
   assert.domEqual(span[0][1].previousSibling, span[0][0]);
   assert.domEqual(span[0][2].previousSibling, span[0][1]);
   assert.domEqual(span[0][3].previousSibling, span[0][2]);
   assert.domNull(span[0][3].nextSibling);
 },
Пример #3
0
 "orders elements by data": function(div) {
   div = div.data([1, 10, 20, 2], String).order();
   assert.domNull(div[0][0].previousSibling);
   assert.domEqual(div[0][1].previousSibling, div[0][0]);
   assert.domEqual(div[0][2].previousSibling, div[0][1]);
   assert.domEqual(div[0][3].previousSibling, div[0][2]);
   assert.domNull(div[0][3].nextSibling);
 },
 "ignores null nodes": function(div) {
   div.html("");
   var some = d3.selectAll("div");
   some[0][1] = null;
   var span = some.insert("span");
   assert.equal(span[0].length, 2);
   assert.equal(span[0][0].tagName, "SPAN");
   assert.domNull(span[0][1]);
   assert.domEqual(span[0][0].parentNode, div[0][0]);
   assert.domEqual(div[0][0].lastChild, span[0][0]);
   assert.domNull(div[0][1].lastChild);
 },
Пример #5
0
 "treats null nodes as null data": function(span) {
   var some = d3.selectAll("div:first-child span"), nulls = false;
   some[0][0] = null;
   some.sort(function(a, b) { if ((a === null) || (b === null)) ++nulls; return a - b; });
   assert.isTrue(nulls > 0);
   assert.domNull(span[0][0].previousSibling);
   assert.deepEqual(some[0].slice(1).map(data), [3, 10, 21]);
 },
 "ignores null nodes": function(body) {
   body.html("").insert("div");
   var div = body.selectAll("div").data(d3.range(3)).enter().insert("div");
   assert.equal(div.length, 1);
   assert.equal(div[0].length, 3);
   assert.domNull(div[0][0]);
   assert.domEqual(div[0][1].parentNode, document.body);
   assert.domEqual(div[0][2].parentNode, document.body);
 },
Пример #7
0
require("../env");var vows=require("vows"),assert=require("assert"),suite=vows.describe("selection.order");suite.addBatch({"selectAll(div)":{topic:function(){return d3.select("body").html("").selectAll("div").data([1,2,10,20]).enter().append("div").attr("id",String)},"orders elements by data":function(e){e=e.data([1,10,20,2],String).order(),assert.domNull(e[0][0].previousSibling),assert.domEqual(e[0][1].previousSibling,e[0][0]),assert.domEqual(e[0][2].previousSibling,e[0][1]),assert.domEqual(e[0][3].previousSibling,e[0][2]),assert.domNull(e[0][3].nextSibling)},"returns the current selection":function(e){e=d3.select("body"),assert.isTrue(e.order()===e)}}}),suite.export(module)
require("../env");var vows=require("vows"),assert=require("assert"),suite=vows.describe("selection.append");suite.addBatch({"select(body)":{topic:function(){return d3.select("body").html("")},"appends an HTML element":function(a){var b=a.append("div");assert.equal(b[0][0].tagName,"DIV"),assert.isNull(b[0][0].namespaceURI),assert.isTrue(b[0][0].parentNode===document.body),assert.isTrue(b[0][0]===document.body.lastChild)},"appends an SVG element":function(a){var b=a.append("svg:svg");assert.equal(b[0][0].tagName,"SVG"),assert.equal(b[0][0].namespaceURI,"http://www.w3.org/2000/svg"),assert.isTrue(b[0][0].parentNode===document.body),assert.isTrue(b[0][0]===document.body.lastChild)},"propagates data to new element":function(a){var b=new Object,c=a.data([b]).append("div");assert.strictEqual(c[0][0].__data__,b)},"returns a new selection":function(a){assert.isFalse(a.append("div")===a)},"inherits namespace from parent node":function(a){var b=a.append("svg:svg").append("g");assert.equal(b[0][0].namespaceURI,"http://www.w3.org/2000/svg")}}}),suite.addBatch({"selectAll(div)":{topic:function(){return d3.select("body").html("").selectAll("div").data(d3.range(2)).enter().append("div")},"appends an HTML element":function(a){var b=a.append("span");assert.equal(b[0].length,2),assert.equal(b[0][0].tagName,"SPAN"),assert.equal(b[0][1].tagName,"SPAN"),assert.isNull(b[0][0].namespaceURI),assert.isNull(b[0][1].namespaceURI),assert.isTrue(b[0][0].parentNode===a[0][0]),assert.isTrue(b[0][1].parentNode===a[0][1]),assert.isTrue(a[0][0].lastChild===b[0][0]),assert.isTrue(a[0][1].lastChild===b[0][1])},"appends an SVG element":function(a){var b=a.append("svg:svg");assert.equal(b[0].length,2),assert.equal(b[0][0].tagName,"SVG"),assert.equal(b[0][1].tagName,"SVG"),assert.equal(b[0][0].namespaceURI,"http://www.w3.org/2000/svg"),assert.equal(b[0][1].namespaceURI,"http://www.w3.org/2000/svg"),assert.isTrue(b[0][0].parentNode===a[0][0]),assert.isTrue(b[0][1].parentNode===a[0][1]),assert.isTrue(a[0][0].lastChild===b[0][0]),assert.isTrue(a[0][1].lastChild===b[0][1])},"ignores null nodes":function(a){a.html("");var b=d3.selectAll("div");b[0][1]=null;var c=b.append("span");assert.equal(c[0].length,2),assert.equal(c[0][0].tagName,"SPAN"),assert.isNull(c[0][1]),assert.isTrue(c[0][0].parentNode===a[0][0]),assert.isTrue(a[0][0].lastChild===c[0][0]),assert.isNull(a[0][1].lastChild)},"propagates data to new elements":function(a){var b=new Object,c=new Object,d=a.data([b,c]).append("span");assert.strictEqual(d[0][0].__data__,b),assert.strictEqual(d[0][1].__data__,c)},"returns a new selection":function(a){assert.isFalse(a.append("div")===a)}}}),suite.addBatch({"selectAll(div).data(…).enter()":{topic:function(){return d3.select("body")},"appends to the parent node":function(a){var b=a.html("").selectAll("div").data(d3.range(2)).enter().append("div");assert.equal(b.length,1),assert.equal(b[0].length,2),assert.domEqual(b[0][0].parentNode,document.body),assert.domEqual(b[0][1].parentNode,document.body)},"propagates data to new elements":function(a){var b=new Object,c=new Object,d=a.html("").selectAll("div").data([b,c]).enter().append("div");assert.strictEqual(d[0][0].__data__,b),assert.strictEqual(d[0][1].__data__,c)},"ignores null nodes":function(a){a.html("").append("div");var b=a.selectAll("div").data(d3.range(3)).enter().append("div");assert.equal(b.length,1),assert.equal(b[0].length,3),assert.domNull(b[0][0]),assert.domEqual(b[0][1].parentNode,document.body),assert.domEqual(b[0][2].parentNode,document.body)}}}),suite.export(module)
function data(a){return a.__data__}require("../env");var vows=require("vows"),assert=require("assert"),suite=vows.describe("selection.sort");suite.addBatch({"selectAll(div).selectAll(span)":{topic:function(){return d3.select("body").html("").selectAll("div").data([1,2,10,20]).enter().append("div").selectAll("span").data(function(a){return[20+a,2+a,10,1]}).enter().append("span")},"sorts elements by natural order":function(a){a.sort(),assert.domNull(a[0][0].previousSibling),assert.domEqual(a[0][1].previousSibling,a[0][0]),assert.domEqual(a[0][2].previousSibling,a[0][1]),assert.domEqual(a[0][3].previousSibling,a[0][2]),assert.domNull(a[0][3].nextSibling)},"sorts each group independently":function(a){a.sort(d3.descending),assert.deepEqual(a[0].map(data),[21,10,3,1]),assert.deepEqual(a[1].map(data),[22,10,4,1]),assert.deepEqual(a[2].map(data),[30,12,10,1]),assert.deepEqual(a[3].map(data),[40,22,10,1])},"sorts using the specified comparator":function(a){a.sort(function(a,b){return d3.ascending(a+"",b+"")}),assert.deepEqual(a[0].map(data),[1,10,21,3]),assert.deepEqual(a[1].map(data),[1,10,22,4]),assert.deepEqual(a[2].map(data),[1,10,12,30]),assert.deepEqual(a[3].map(data),[1,10,22,40])},"treats null nodes as null data":function(a){var b=d3.selectAll("div:first-child span"),c=!1;b[0][0]=null,b.sort(function(a,b){return(a===null||b===null)&&++c,a-b}),assert.isTrue(c>0),assert.domNull(a[0][0].previousSibling),assert.deepEqual(b[0].slice(1).map(data),[3,10,21])},"returns the current selection":function(a){a=d3.select("body"),assert.isTrue(a.sort()===a)}}}),suite.export(module)
Пример #10
0
function data(e){return e.__data__}require("../env");var vows=require("vows"),assert=require("assert"),suite=vows.describe("selection.sort");suite.addBatch({"selectAll(div).selectAll(span)":{topic:function(){return d3.select("body").html("").selectAll("div").data([1,2,10,20]).enter().append("div").selectAll("span").data(function(e){return[20+e,2+e,10,1]}).enter().append("span")},"sorts elements by natural order":function(e){e.sort(),assert.domNull(e[0][0].previousSibling),assert.domEqual(e[0][1].previousSibling,e[0][0]),assert.domEqual(e[0][2].previousSibling,e[0][1]),assert.domEqual(e[0][3].previousSibling,e[0][2]),assert.domNull(e[0][3].nextSibling)},"sorts each group independently":function(e){e.sort(d3.descending),assert.deepEqual(e[0].map(data),[21,10,3,1]),assert.deepEqual(e[1].map(data),[22,10,4,1]),assert.deepEqual(e[2].map(data),[30,12,10,1]),assert.deepEqual(e[3].map(data),[40,22,10,1])},"sorts using the specified comparator":function(e){e.sort(function(e,t){return d3.ascending(e+"",t+"")}),assert.deepEqual(e[0].map(data),[1,10,21,3]),assert.deepEqual(e[1].map(data),[1,10,22,4]),assert.deepEqual(e[2].map(data),[1,10,12,30]),assert.deepEqual(e[3].map(data),[1,10,22,40])},"treats null nodes as null data":function(e){var t=d3.selectAll("div:first-child span"),n=!1;t[0][0]=null,t.sort(function(e,t){return(e===null||t===null)&&++n,e-t}),assert.isTrue(n>0),assert.domNull(e[0][0].previousSibling),assert.deepEqual(t[0].slice(1).map(data),[3,10,21])},"returns the current selection":function(e){e=d3.select("body"),assert.isTrue(e.sort()===e)}}}),suite.export(module)