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 | 8 |
9 part of charted.charts; | 9 part of charted.charts; |
10 | 10 |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
64 yDimensionVals = []; | 64 yDimensionVals = []; |
65 for (var row in area.data.rows) { | 65 for (var row in area.data.rows) { |
66 xDimensionVals.add(row.elementAt(xDimensionIndex)); | 66 xDimensionVals.add(row.elementAt(xDimensionIndex)); |
67 yDimensionVals.add(row.elementAt(yDimensionIndex)); | 67 yDimensionVals.add(row.elementAt(yDimensionIndex)); |
68 } | 68 } |
69 | 69 |
70 var group = _group.selectAll('.measure-group').data(columns); | 70 var group = _group.selectAll('.measure-group').data(columns); |
71 group.enter.append('g')..classed('measure-group'); | 71 group.enter.append('g')..classed('measure-group'); |
72 group.each((d, i, e) { | 72 group.each((d, i, e) { |
73 e.style.setProperty('fill', color(i)); | 73 e.style.setProperty('fill', color(i)); |
74 e.attributes['data-column'] = series.measures.elementAt(i); | 74 e.attributes['data-column'] = series.measures.elementAt(i).toString(); |
75 }); | 75 }); |
76 group.exit.remove(); | 76 group.exit.remove(); |
77 | 77 |
78 var measures = | 78 var measures = |
79 group.selectAll('.bubble').dataWithCallback((d, i, e) => columns[i]); | 79 group.selectAll('.bubble').dataWithCallback((d, i, e) => columns[i]); |
80 | 80 |
81 measures.enter.append('circle')..classed('bubble'); | 81 measures.enter.append('circle')..classed('bubble'); |
82 measures.each((d, i, e) { | 82 measures.each((d, i, e) { |
83 e.attributes | 83 e.attributes |
84 ..['transform'] = 'translate(' | 84 ..['transform'] = 'translate(' |
85 '${xDimensionScale.scale(xDimensionVals[i])},' | 85 '${xDimensionScale.scale(xDimensionVals[i])},' |
86 '${yDimensionScale.scale(yDimensionVals[i])})' | 86 '${yDimensionScale.scale(yDimensionVals[i])})' |
87 ..['r'] = '${bubbleRadiusScale.scale(d) * bubbleRadiusFactor}' | 87 ..['r'] = '${bubbleRadiusScale.scale(d) * bubbleRadiusFactor}' |
88 ..['data-row'] = i; | 88 ..['data-row'] = i.toString(); |
89 }); | 89 }); |
90 measures.exit.remove(); | 90 measures.exit.remove(); |
91 handleStateChanges([]); | 91 handleStateChanges([]); |
92 } | 92 } |
93 | 93 |
94 @override | 94 @override |
95 void dispose() { | 95 void dispose() { |
96 if (_group == null) return; | 96 if (_group == null) return; |
97 _group.selectAll('.row-group').remove(); | 97 _group.selectAll('.row-group').remove(); |
98 } | 98 } |
99 | 99 |
100 @override | 100 @override |
101 double get bandInnerPadding => 1.0; | 101 double get bandInnerPadding => 1.0; |
102 | 102 |
103 @override | 103 @override |
104 double get bandOuterPadding => | 104 double get bandOuterPadding => |
105 area.theme.getDimensionAxisTheme().axisOuterPadding; | 105 area.theme.getDimensionAxisTheme().axisOuterPadding; |
106 | 106 |
107 @override | 107 @override |
108 Extent get extent { | 108 Extent get extent { |
109 assert(series != null && area != null); | 109 assert(series != null && area != null); |
110 var rows = area.data.rows, max = rows[0][series.measures.first], min = max; | 110 var rows = area.data.rows, |
| 111 max = rows.first[series.measures.first], |
| 112 min = max; |
111 | 113 |
112 rows.forEach((row) { | 114 rows.forEach((row) { |
113 series.measures.forEach((idx) { | 115 series.measures.forEach((idx) { |
114 if (row[idx] > max) max = row[idx]; | 116 if (row[idx] > max) max = row[idx]; |
115 if (row[idx] < min) min = row[idx]; | 117 if (row[idx] < min) min = row[idx]; |
116 }); | 118 }); |
117 }); | 119 }); |
118 return new Extent(min, max); | 120 return new Extent(min, max); |
119 } | 121 } |
120 | 122 |
(...skipping 20 matching lines...) Expand all Loading... |
141 } | 143 } |
142 | 144 |
143 void _event(StreamController controller, data, int index, Element e) { | 145 void _event(StreamController controller, data, int index, Element e) { |
144 if (controller == null) return; | 146 if (controller == null) return; |
145 var rowStr = e.parent.dataset['row']; | 147 var rowStr = e.parent.dataset['row']; |
146 var row = rowStr != null ? int.parse(rowStr) : null; | 148 var row = rowStr != null ? int.parse(rowStr) : null; |
147 controller.add(new DefaultChartEventImpl( | 149 controller.add(new DefaultChartEventImpl( |
148 _scope.event, area, series, row, index, data)); | 150 _scope.event, area, series, row, index, data)); |
149 } | 151 } |
150 } | 152 } |
OLD | NEW |