Index: packages/charted/lib/core/scales/ordinal_scale.dart |
diff --git a/packages/charted/lib/core/scales/ordinal_scale.dart b/packages/charted/lib/core/scales/ordinal_scale.dart |
index 695f951b5dcd9ad72fb9bbd92f9cc9d8a8955e1c..dc9e7de61e03b511951bb89674033d78ebf3ef7b 100644 |
--- a/packages/charted/lib/core/scales/ordinal_scale.dart |
+++ b/packages/charted/lib/core/scales/ordinal_scale.dart |
@@ -19,8 +19,8 @@ class _OrdinalScale implements OrdinalScale { |
_OrdinalScale(); |
_OrdinalScale._clone(_OrdinalScale source) |
- : _domain = source._domain, |
- _range = source._range, |
+ : _domain = new List.from(source._domain), |
+ _range = new List.from(source._range), |
_reset = source._reset, |
_rangeExtent = source._rangeExtent, |
_rangeBand = source._rangeBand { |
@@ -120,11 +120,12 @@ class _OrdinalScale implements OrdinalScale { |
scale._reset = (_OrdinalScale s) { |
var start = range.first, |
stop = range.last, |
- step = (stop - start) / (s.domain.length - 1 + padding); |
+ step = s.domain.length > 1 |
+ ? (stop - start - 2 * padding) / (s.domain.length - 1) |
+ : 0; |
s._range = s._steps( |
- s.domain.length < 2 ? (start + stop) / 2 : start + step * padding / 2, |
- step); |
+ s.domain.length < 2 ? (start + stop) / 2 : start + padding, step); |
s._rangeBand = 0; |
s._rangeExtent = new Extent(start, stop); |
}; |
@@ -138,7 +139,10 @@ class _OrdinalScale implements OrdinalScale { |
scale._reset = (_OrdinalScale s) { |
var start = range.first, |
stop = range.last, |
- step = (stop - start) / s.domain.length - padding + 2 * outerPadding; |
+ step = (stop - start - 2 * outerPadding) / |
+ (s.domain.length > 1 |
+ ? (s.domain.length - padding) |
+ : 1); |
s._range = s._steps(start + step * outerPadding, step); |
s._rangeBand = step * (1 - padding); |
@@ -155,11 +159,12 @@ class _OrdinalScale implements OrdinalScale { |
var start = range.first, |
stop = range.last, |
step = |
- ((stop - start) / (s.domain.length - padding + 2 * outerPadding)) |
- .floor(), |
- error = stop - start - (s.domain.length - padding) * step; |
+ ((stop - start - 2 * outerPadding) / |
+ (s.domain.length > 1 |
+ ? (s.domain.length - padding) |
+ : 1)).floor(); |
- s._range = s._steps(start + (error / 2).round(), step); |
+ s._range = s._steps(start + outerPadding, step); |
s._rangeBand = (step * (1 - padding)).round(); |
s._rangeExtent = new Extent(start, stop); |
}; |
@@ -171,9 +176,9 @@ class _OrdinalScale implements OrdinalScale { |
// |
// Properties that are valid only on quantitative scales. |
// |
- |
bool clamp; |
bool nice; |
bool rounded; |
int ticksCount; |
+ int forcedTicksCount; |
} |