OLD | NEW |
---|---|
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 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. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library protoc.benchmark.html_view; | 5 library protoc.benchmark.html_view; |
6 | 6 |
7 import 'dart:async' show Stream, StreamController, EventSink; | 7 import 'dart:async' show Stream, StreamController, EventSink; |
8 import 'dart:html'; | 8 import 'dart:html'; |
9 | 9 |
10 import 'generated/benchmark.pb.dart' as pb; | 10 import 'generated/benchmark.pb.dart' as pb; |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
66 this._runButton, | 66 this._runButton, |
67 this._selectAllButton, | 67 this._selectAllButton, |
68 this._selectNoneButton, | 68 this._selectNoneButton, |
69 this._status, | 69 this._status, |
70 this._envElt, | 70 this._envElt, |
71 this._menu, | 71 this._menu, |
72 this._responseTable, | 72 this._responseTable, |
73 this._jsonView); | 73 this._jsonView); |
74 | 74 |
75 factory DashboardView() { | 75 factory DashboardView() { |
76 var elt = _template.clone(true); | 76 Element elt = _template.clone(true); |
77 find(String q) => elt.querySelector(q); | 77 find(String q) => elt.querySelector(q); |
78 _Button button(q) => new _Button(find(q)); | 78 _Button button(q) => new _Button(find(q)); |
79 label(q) => new _Label(find(q)); | 79 label(q) => new _Label(find(q)); |
80 menu(q) => new _Menu(find(q)); | 80 menu(q) => new _Menu(find(q)); |
81 json(q) => new _JsonView(find(q)); | 81 json(q) => new _JsonView(find(q)); |
82 return new DashboardView._raw( | 82 return new DashboardView._raw( |
83 elt, | 83 elt, |
84 button('.dv-run') | 84 button('.dv-run') |
85 ..elt.style.color = "#FFFFFF" | 85 ..elt.style.color = "#FFFFFF" |
86 ..elt.style.backgroundColor = "rgb(209, 72, 64)", | 86 ..elt.style.backgroundColor = "rgb(209, 72, 64)", |
87 button('.dv-select-all'), | 87 button('.dv-select-all'), |
88 button('.dv-select-none'), | 88 button('.dv-select-none'), |
89 label('.dv-status'), | 89 label('.dv-status'), |
90 find('.dv-env'), | 90 find('.dv-env'), |
91 menu('.dv-menu'), | 91 menu('.dv-menu'), |
92 find('.dv-table'), | 92 find('.dv-table'), |
93 json('.dv-json')); | 93 json('.dv-json')); |
94 } | 94 } |
95 | 95 |
96 Stream get onRunButtonClick => _runButton.onClick; | 96 Stream get onRunButtonClick => _runButton.onClick; |
97 Stream get onSelectAllClick => _selectAllButton.onClick; | 97 Stream get onSelectAllClick => _selectAllButton.onClick; |
98 Stream get onSelectNoneClick => _selectNoneButton.onClick; | 98 Stream get onSelectNoneClick => _selectNoneButton.onClick; |
99 Stream<String> get onMenuChange => | 99 Stream<String> get onMenuChange => |
100 _menu.onChange.map((item) => item == noBaseline ? null : item); | 100 _menu.onChange.map((item) => item == noBaseline ? null : item) |
vsm
2016/03/23 17:20:24
Stream.map is a generic method. Strong mode will
Leaf
2016/03/23 18:09:59
I don't understand why inference is failing here.
skybrian
2016/03/23 18:34:17
I'm using Atom with an SDK built at HEAD. I think
skybrian
2016/04/01 02:00:15
It works now. Reverted.
| |
101 as Stream<String>; | |
101 Stream<SelectEvent<pb.Request>> get onSelectionChange => | 102 Stream<SelectEvent<pb.Request>> get onSelectionChange => |
102 _selectionChanges.stream; | 103 _selectionChanges.stream; |
103 | 104 |
104 void render(DashboardModel model) { | 105 void render(DashboardModel model) { |
105 _runButton.render("Run", model.canRun); | 106 _runButton.render("Run", model.canRun); |
106 _selectAllButton.render("Select All", true); | 107 _selectAllButton.render("Select All", true); |
107 _selectNoneButton.render("Select None", true); | 108 _selectNoneButton.render("Select None", true); |
108 if (!model.latest.hasStatus() || model.latest.status == pb.Status.DONE) { | 109 if (!model.latest.hasStatus() || model.latest.status == pb.Status.DONE) { |
109 _status.render(""); | 110 _status.render(""); |
110 } else { | 111 } else { |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
169 _selected.elt, | 170 _selected.elt, |
170 _summary.elt, | 171 _summary.elt, |
171 _baseline.elt, | 172 _baseline.elt, |
172 _median.elt, | 173 _median.elt, |
173 _max.elt, | 174 _max.elt, |
174 _count.elt, | 175 _count.elt, |
175 _units.elt | 176 _units.elt |
176 ]); | 177 ]); |
177 } | 178 } |
178 | 179 |
179 void render(Row row, pb.Report r, | 180 void render( |
180 EventSink<SelectEvent<pb.Request>> rowSelected) { | 181 Row row, pb.Report r, EventSink<SelectEvent<pb.Request>> rowSelected) { |
181 var b = row.benchmark; | 182 var b = row.benchmark; |
182 var response = row.findResponse(r); | 183 var response = row.findResponse(r); |
183 _selected.render(row.selected, item: row.request, sink: rowSelected); | 184 _selected.render(row.selected, item: row.request, sink: rowSelected); |
184 _summary.render(b.summary); | 185 _summary.render(b.summary); |
185 _baseline.render(b.measureSample(row.baseline)); | 186 _baseline.render(b.measureSample(row.baseline)); |
186 _median.render(b.measureSample(b.medianSample(response))); | 187 _median.render(b.measureSample(b.medianSample(response))); |
187 _max.render(b.measureSample(b.maxSample(response))); | 188 _max.render(b.measureSample(b.maxSample(response))); |
188 _count.render(response == null ? "0" : "${response.samples.length}"); | 189 _count.render(response == null ? "0" : "${response.samples.length}"); |
189 _units.render(row.benchmark.measureSampleUnits); | 190 _units.render(row.benchmark.measureSampleUnits); |
190 } | 191 } |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
235 /// A menu of selectable text items. | 236 /// A menu of selectable text items. |
236 class _Menu { | 237 class _Menu { |
237 final SelectElement elt; | 238 final SelectElement elt; |
238 final _changes = new StreamController.broadcast(); | 239 final _changes = new StreamController.broadcast(); |
239 final _options = new List<_MenuOption>(); | 240 final _options = new List<_MenuOption>(); |
240 | 241 |
241 _Menu(this.elt) { | 242 _Menu(this.elt) { |
242 elt.onChange.listen((e) => _changes.add(elt.value)); | 243 elt.onChange.listen((e) => _changes.add(elt.value)); |
243 } | 244 } |
244 | 245 |
245 Stream<String> get onChange => _changes.stream; | 246 Stream<String> get onChange => _changes.stream as Stream<String>; |
vsm
2016/03/23 17:20:24
This will fail at runtime if the runtime type of _
Leaf
2016/03/23 18:09:59
Agreed.
skybrian
2016/04/01 02:00:15
Done
| |
246 | 247 |
247 void render(List<String> items, String selected) { | 248 void render(List<String> items, String selected) { |
248 var it = items.iterator; | 249 var it = items.iterator; |
249 | 250 |
250 // Update existing items | 251 // Update existing items |
251 for (var opt in _options) { | 252 for (var opt in _options) { |
252 var hasNext = it.moveNext(); | 253 var hasNext = it.moveNext(); |
253 assert(hasNext); // assume menu never shrinks | 254 assert(hasNext); // assume menu never shrinks |
254 opt.render(it.current, it.current == selected); | 255 opt.render(it.current, it.current == selected); |
255 } | 256 } |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
335 | 336 |
336 void render(bool checked, {EventSink<SelectEvent<T>> sink, T item}) { | 337 void render(bool checked, {EventSink<SelectEvent<T>> sink, T item}) { |
337 if (_renderedChecked != checked) { | 338 if (_renderedChecked != checked) { |
338 elt.checked = checked; | 339 elt.checked = checked; |
339 _renderedChecked = checked; | 340 _renderedChecked = checked; |
340 } | 341 } |
341 _item = item; | 342 _item = item; |
342 _sink = sink; | 343 _sink = sink; |
343 } | 344 } |
344 } | 345 } |
OLD | NEW |