Allow tickFormat to be specified as a constant.

This was basically supported already, but there was a slight bug in the truthy
check for tickFormat. Now we check for null rather than falsiness.
This commit is contained in:
Mike Bostock 2011-08-24 16:11:28 -07:00
Родитель 4e96a35b66
Коммит ba2a68bb94
4 изменённых файлов: 33 добавлений и 21 удалений

2
d3.js поставляемый
Просмотреть файл

@ -3506,7 +3506,7 @@ d3.svg.axis = function() {
// Ticks.
var ticks = scale.ticks.apply(scale, tickArguments_),
tickFormat = tickFormat_ || scale.tickFormat.apply(scale, tickArguments_);
tickFormat = tickFormat_ == null ? scale.tickFormat.apply(scale, tickArguments_) : tickFormat_;
// Minor ticks.
var subticks = d3_svg_axisSubdivide(scale, ticks, tickSubdivide),

2
d3.min.js поставляемый

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -15,7 +15,7 @@ d3.svg.axis = function() {
// Ticks.
var ticks = scale.ticks.apply(scale, tickArguments_),
tickFormat = tickFormat_ || scale.tickFormat.apply(scale, tickArguments_);
tickFormat = tickFormat_ == null ? scale.tickFormat.apply(scale, tickArguments_) : tickFormat_;
// Minor ticks.
var subticks = d3_svg_axisSubdivide(scale, ticks, tickSubdivide),

Просмотреть файл

@ -191,6 +191,24 @@ suite.addBatch({
assert.equal(aa[0][0], b);
assert.equal(aa[0][1], 42);
},
"passes any arguments to the scale's tickFormat function": function(axis) {
var b = {},
x = d3.scale.linear(),
a = axis().scale(x).ticks(b, 42),
g = d3.select("body").html("").append("svg:g"),
aa = [];
x.tickFormat = function() {
aa.push(arguments);
return String;
};
g.call(a);
assert.equal(aa.length, 1);
assert.equal(aa[0].length, 2);
assert.equal(aa[0][0], b);
assert.equal(aa[0][1], 42);
},
"affects the generated ticks": function(axis) {
var a = axis().ticks(20),
g = d3.select("body").html("").append("svg:g").call(a),
@ -240,29 +258,23 @@ suite.addBatch({
var t = g.selectAll("g text");
assert.equal(t.text(), "foo-0");
},
"passes any arguments to the scale's tick format function": function(axis) {
var b = {},
x = d3.scale.linear(),
a = axis().scale(x).ticks(b, 42),
g = d3.select("body").html("").append("svg:g"),
aa = [];
x.tickFormat = function() {
aa.push(arguments);
return String;
};
g.call(a);
assert.equal(aa.length, 1);
assert.equal(aa[0].length, 2);
assert.equal(aa[0][0], b);
assert.equal(aa[0][1], 42);
},
"affects the generated tick labels": function(axis) {
var a = axis().tickFormat(d3.format("+.2%")),
g = d3.select("body").html("").append("svg:g").call(a),
t = g.selectAll("g text");
assert.equal(t.text(), "+0.00%");
},
"can be set to a constant": function(axis) {
var a = axis().tickFormat("I'm a tick!"),
g = d3.select("body").html("").append("svg:g").call(a),
t = g.selectAll("g text");
assert.equal(t.text(), "I'm a tick!");
},
"can be set to a falsey constant": function(axis) {
var a = axis().tickFormat(""),
g = d3.select("body").html("").append("svg:g").call(a),
t = g.selectAll("g text");
assert.equal(t.text(), "");
}
},