Skip to content

Commit

Permalink
Fix d3#771 for singleton ordinal domains.
Browse files Browse the repository at this point in the history
  • Loading branch information
mbostock committed Aug 16, 2012
1 parent b0686e2 commit 05da7af
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 6 deletions.
2 changes: 1 addition & 1 deletion d3.v2.js
Original file line number Diff line number Diff line change
Expand Up @@ -2483,7 +2483,7 @@
};
scale.rangePoints = function(x, padding) {
if (arguments.length < 2) padding = 0;
var start = x[0], stop = x[1], step = (stop - start) / (domain.length - 1 + padding);
var start = x[0], stop = x[1], step = (stop - start) / (Math.max(1, domain.length - 1) + padding);
range = steps(domain.length < 2 ? (start + stop) / 2 : start + step * padding / 2, step);
rangeBand = 0;
ranger = {
Expand Down
8 changes: 4 additions & 4 deletions d3.v2.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion src/scale/ordinal.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ function d3_scale_ordinal(domain, ranger) {
if (arguments.length < 2) padding = 0;
var start = x[0],
stop = x[1],
step = (stop - start) / (domain.length - 1 + padding);
step = (stop - start) / (Math.max(1, domain.length - 1) + padding);
range = steps(domain.length < 2 ? (start + stop) / 2 : start + step * padding / 2, step);
rangeBand = 0;
ranger = {t: "rangePoints", a: arguments};
Expand Down
5 changes: 5 additions & 0 deletions test/scale/ordinal-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,11 @@ suite.addBatch({
assert.deepEqual(x.range(), [30, 60, 90]);
assert.equal(x.rangeBand(), 0);
},
"correctly handles singleton domains": function(ordinal) {
var x = ordinal().domain(["a"]).rangePoints([0, 120]);
assert.deepEqual(x.range(), [60]);
assert.equal(x.rangeBand(), 0);
},
"can be set to a descending range": function(ordinal) {
var x = ordinal().domain(["a", "b", "c"]).rangePoints([120, 0]);
assert.deepEqual(x.range(), [120, 60,0]);
Expand Down

0 comments on commit 05da7af

Please sign in to comment.