OLD | NEW |
1 // | 1 // |
2 // Copyright 2014 Google Inc. All rights reserved. | 2 // Copyright 2014 Google Inc. All rights reserved. |
3 // | 3 // |
4 // Use of this source code is governed by a BSD-style | 4 // Use of this source code is governed by a BSD-style |
5 // license that can be found in the LICENSE file or at | 5 // license that can be found in the LICENSE file or at |
6 // https://developers.google.com/open-source/licenses/bsd | 6 // https://developers.google.com/open-source/licenses/bsd |
7 // | 7 // |
8 part of charted.core.scales; | 8 part of charted.core.scales; |
9 | 9 |
10 class _OrdinalScale implements OrdinalScale { | 10 class _OrdinalScale implements OrdinalScale { |
(...skipping 21 matching lines...) Expand all Loading... |
32 if (!_index.containsKey(value)) { | 32 if (!_index.containsKey(value)) { |
33 _index[value] = domain.length; | 33 _index[value] = domain.length; |
34 _domain.add(value); | 34 _domain.add(value); |
35 } | 35 } |
36 return _range.isNotEmpty | 36 return _range.isNotEmpty |
37 ? _range.elementAt(_index[value] % _range.length) | 37 ? _range.elementAt(_index[value] % _range.length) |
38 : 0; | 38 : 0; |
39 } | 39 } |
40 | 40 |
41 @override | 41 @override |
42 dynamic invert(num value) { | 42 dynamic invert(value) { |
43 int position = _range.indexOf(value); | 43 int position = _range.indexOf(value); |
44 return position > -1 && position < _domain.length | 44 return position > -1 && position < _domain.length |
45 ? _domain[position] | 45 ? _domain[position] |
46 : null; | 46 : null; |
47 } | 47 } |
48 | 48 |
49 @override | 49 @override |
50 set domain(Iterable values) { | 50 set domain(Iterable values) { |
51 _domain = []; | 51 _domain = []; |
52 _index.clear(); | 52 _index.clear(); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
87 @override | 87 @override |
88 void rangeRoundBands(Iterable range, | 88 void rangeRoundBands(Iterable range, |
89 [double padding = 0.0, double outerPadding]) => | 89 [double padding = 0.0, double outerPadding]) => |
90 _setRangeRoundBands( | 90 _setRangeRoundBands( |
91 this, range, padding, outerPadding == null ? padding : outerPadding); | 91 this, range, padding, outerPadding == null ? padding : outerPadding); |
92 | 92 |
93 @override | 93 @override |
94 num get rangeBand => _rangeBand; | 94 num get rangeBand => _rangeBand; |
95 | 95 |
96 @override | 96 @override |
97 FormatFunction createTickFormatter([String format]) => identityFunction; | 97 FormatFunction createTickFormatter([String format]) => |
| 98 (String s) => identityFunction/*<String>*/(s); |
98 | 99 |
99 @override | 100 @override |
100 Iterable get ticks => _domain; | 101 Iterable get ticks => _domain; |
101 | 102 |
102 @override | 103 @override |
103 OrdinalScale clone() => new _OrdinalScale._clone(this); | 104 OrdinalScale clone() => new _OrdinalScale._clone(this); |
104 | 105 |
105 List _steps(start, step) => | 106 List _steps(start, step) => |
106 new Range(domain.length).map((num i) => start + step * i).toList(); | 107 new Range(domain.length).map((num i) => start + step * i).toList(); |
107 | 108 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
146 if (scale.domain.isNotEmpty) { | 147 if (scale.domain.isNotEmpty) { |
147 scale._reset(scale); | 148 scale._reset(scale); |
148 } | 149 } |
149 } | 150 } |
150 | 151 |
151 static void _setRangeRoundBands(_OrdinalScale scale, Iterable range, | 152 static void _setRangeRoundBands(_OrdinalScale scale, Iterable range, |
152 double padding, double outerPadding) { | 153 double padding, double outerPadding) { |
153 scale._reset = (_OrdinalScale s) { | 154 scale._reset = (_OrdinalScale s) { |
154 var start = range.first, | 155 var start = range.first, |
155 stop = range.last, | 156 stop = range.last, |
156 step = ((stop - start) / | 157 step = |
157 (s.domain.length - padding + 2 * outerPadding)).floor(), | 158 ((stop - start) / (s.domain.length - padding + 2 * outerPadding)) |
| 159 .floor(), |
158 error = stop - start - (s.domain.length - padding) * step; | 160 error = stop - start - (s.domain.length - padding) * step; |
159 | 161 |
160 s._range = s._steps(start + (error / 2).round(), step); | 162 s._range = s._steps(start + (error / 2).round(), step); |
161 s._rangeBand = (step * (1 - padding)).round(); | 163 s._rangeBand = (step * (1 - padding)).round(); |
162 s._rangeExtent = new Extent(start, stop); | 164 s._rangeExtent = new Extent(start, stop); |
163 }; | 165 }; |
164 if (scale.domain.isNotEmpty) { | 166 if (scale.domain.isNotEmpty) { |
165 scale._reset(scale); | 167 scale._reset(scale); |
166 } | 168 } |
167 } | 169 } |
168 | 170 |
169 // | 171 // |
170 // Properties that are valid only on quantitative scales. | 172 // Properties that are valid only on quantitative scales. |
171 // | 173 // |
172 | 174 |
173 bool clamp; | 175 bool clamp; |
174 bool nice; | 176 bool nice; |
175 bool rounded; | 177 bool rounded; |
176 int ticksCount; | 178 int ticksCount; |
177 } | 179 } |
OLD | NEW |