Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(68)

Side by Side Diff: samples/total/client/ServerChart.dart

Issue 10635015: Delete proxy and total samples, which have bit-rotted. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « samples/total/client/SelectionManager.dart ('k') | samples/total/client/Spreadsheet.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 typedef void ImageCallback(String dataUrl);
6
7 /**
8 * A chart generated by the Google Chart API (see [http://code.google.com/apis/c hart/image/]).
9 */
10 class ServerChart extends Chart {
11 String _params;
12 Window _window;
13
14 /**
15 * Construct a [ServerChart] with a given parameter string containing any para meters
16 * specific to a given chart type.
17 */
18 ServerChart(this._window, this._params) : super() {
19 }
20
21 void addParameter(String param) {
22 _params += param;
23 }
24
25 // TODO: error handling
26 /**
27 * Request a chart from the Google Chart API server. The resulting chart will be
28 * passed as a parameter to the [callback] function as a data URI suitable to be
29 * added as the [:src:] attribute of an [:img:] element.
30 */
31 void render(ImageCallback callback) {
32 // Use a random chart ID to avoid browser caching
33 int random = (Math.random() * 1000000).toInt();
34 String url = "http://chart.googleapis.com/chart?chid=${random}";
35
36 XMLHttpRequest request = new XMLHttpRequest();
37 request.on.readyStateChange.add((Event event) {
38 if (request.readyState == XMLHttpRequest.DONE && request.status == 200) {
39 callback("data:image/png;base64,${StringUtils.base64Encode(request.respo nseText)}");
40 }
41 });
42
43 StringBuffer sb = new StringBuffer();
44 // Chart type and unique params
45 sb.add(_params);
46
47 // Chart size
48 sb.add("&chs=${width}x${height}");
49
50 // Chart title
51 if (title != null) {
52 sb.add("&chtt=${title}"); // TODO: escaping
53 }
54
55 // Chart margins
56 sb.add("&chma=5,50,5,5");
57
58 // Labels
59 sb.add("&chdl=");
60 for (int col = _firstCol; col <= _lastCol; col++) {
61 sb.add(_seriesLabels[col - _firstCol]);
62 if (col < _lastCol) {
63 sb.add("|");
64 }
65 }
66
67 // Data values
68 sb.add("&chd=t:");
69 bool needPipe = false;
70 for (int col = _firstCol; col <= _lastCol; col++) {
71 List<double> values = getSeries(col);
72 bool needComma = false;
73 for (int i = 0; i < values.length; i++) {
74 if (needPipe) {
75 sb.add("|");
76 needPipe = false;
77 }
78 if (needComma) {
79 sb.add(",");
80 }
81 sb.add(values[i].toString());
82 needComma = true;
83 }
84 needPipe = true;
85 }
86 String data = sb.toString();
87
88 request.open("POST", url, true, null, null);
89 request.setRequestHeader("Content-type", "text/plain");
90 request.overrideMimeType("text/plain; charset=x-user-defined");
91 print("Chart request: ${data}");
92 request.send(data);
93 }
94 }
95
96 class ServerXYChart extends ServerChart {
97 ServerXYChart(Window window, String params) : super(window, params) {
98 // Chart axes
99 addParameter("&chxt=x,y");
100 // Chart colors
101 addParameter("&chco=ff0000,00ff00,0000ff,ffff00,ff00ff,00ffff,000000");
102 }
103
104 void setData(CellRange range) {
105 super.setData(range);
106
107 // Axis ranges
108 addParameter("&chxr=0,${_firstRow},${_lastRow}|1,${_minValue},${_maxValue}") ;
109
110 // Data range
111 addParameter("&chds=${_minValue},${_maxValue}");
112 }
113 }
114
115 class ServerLineChart extends ServerXYChart {
116 ServerLineChart(Window window) : super(window, "cht=lc") {
117 // Chart colors
118 addParameter("&chco=ff0000,00ff00,0000ff,ffff00,ff00ff,00ffff,000000");
119 }
120 }
121
122 // TODO: horizontal charts require switched axes
123 //class ServerHorizontalGroupedBarChart extends ServerChart {
124 // ServerHorizontalGroupedBarChart(Window window, CellRange range)
125 // : super(window, range, "cht=bhg") { }
126 //}
127 //
128 //class ServerHorizontalStackedBarChart extends ServerChart {
129 // ServerHorizontalStackedBarChart(Window window, CellRange range)
130 // : super(window, range, "cht=bhs") { }
131 //}
132 //
133 //class ServerHorizontalOverlappedBarChart extends ServerChart {
134 // ServerHorizontalOverlappedBarChart(Window window, CellRange range)
135 // : super(window, range, "cht=bho") { }
136 //}
137
138 class ServerPieChart extends ServerChart {
139 ServerPieChart(Window window, String param) : super(window, param) { }
140
141 void setData(CellRange range) {
142 super.setData(range);
143
144 StringBuffer labels = new StringBuffer();
145 labels.add("&chl=");
146
147 for (int col = _range.minCorner.col; col <= _range.maxCorner.col; col++) {
148 List<double> data = getSeries(col);
149 for (int i = 0; i < data.length; i++) {
150 double value = data[i];
151 String v = StringUtils.twoDecimals(value);
152 if (i > 0) {
153 labels.add("|");
154 }
155 labels.add(v);
156 }
157 if (col < _range.maxCorner.col) {
158 labels.add("|");
159 }
160 }
161 addParameter(labels.toString());
162 }
163 }
164
165 class Server2DPieChart extends ServerPieChart {
166 Server2DPieChart(Window window) : super(window, "cht=p") { }
167 }
168
169 class Server3DPieChart extends ServerPieChart {
170 Server3DPieChart(Window window) : super(window, "cht=p3") {
171 height = (width / 2.5).toInt();
172 }
173 }
174
175 class ServerConcentricPieChart extends ServerPieChart {
176 ServerConcentricPieChart(Window window) : super(window, "cht=pc") { }
177 }
178
179 class ServerVerticalGroupedBarChart extends ServerXYChart {
180 ServerVerticalGroupedBarChart(Window window) : super(window, "cht=bvg&chbh=a") { }
181 }
182
183 class ServerVerticalStackedBarChart extends ServerXYChart {
184 ServerVerticalStackedBarChart(Window window) : super(window, "cht=bvs&chbh=a") { }
185 }
186
187 class ServerVerticalOverlappedBarChart extends ServerXYChart {
188 ServerVerticalOverlappedBarChart(Window window) : super(window, "cht=bvo&chbh= a") { }
189 }
OLDNEW
« no previous file with comments | « samples/total/client/SelectionManager.dart ('k') | samples/total/client/Spreadsheet.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698