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); |
101 Stream<SelectEvent<pb.Request>> get onSelectionChange => | 101 Stream<SelectEvent<pb.Request>> get onSelectionChange => |
102 _selectionChanges.stream; | 102 _selectionChanges.stream; |
103 | 103 |
104 void render(DashboardModel model) { | 104 void render(DashboardModel model) { |
105 _runButton.render("Run", model.canRun); | 105 _runButton.render("Run", model.canRun); |
106 _selectAllButton.render("Select All", true); | 106 _selectAllButton.render("Select All", true); |
107 _selectNoneButton.render("Select None", true); | 107 _selectNoneButton.render("Select None", true); |
108 if (!model.latest.hasStatus() || model.latest.status == pb.Status.DONE) { | 108 if (!model.latest.hasStatus() || model.latest.status == pb.Status.DONE) { |
109 _status.render(""); | 109 _status.render(""); |
110 } else { | 110 } else { |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
169 _selected.elt, | 169 _selected.elt, |
170 _summary.elt, | 170 _summary.elt, |
171 _baseline.elt, | 171 _baseline.elt, |
172 _median.elt, | 172 _median.elt, |
173 _max.elt, | 173 _max.elt, |
174 _count.elt, | 174 _count.elt, |
175 _units.elt | 175 _units.elt |
176 ]); | 176 ]); |
177 } | 177 } |
178 | 178 |
179 void render(Row row, pb.Report r, | 179 void render( |
180 EventSink<SelectEvent<pb.Request>> rowSelected) { | 180 Row row, pb.Report r, EventSink<SelectEvent<pb.Request>> rowSelected) { |
181 var b = row.benchmark; | 181 var b = row.benchmark; |
182 var response = row.findResponse(r); | 182 var response = row.findResponse(r); |
183 _selected.render(row.selected, item: row.request, sink: rowSelected); | 183 _selected.render(row.selected, item: row.request, sink: rowSelected); |
184 _summary.render(b.summary); | 184 _summary.render(b.summary); |
185 _baseline.render(b.measureSample(row.baseline)); | 185 _baseline.render(b.measureSample(row.baseline)); |
186 _median.render(b.measureSample(b.medianSample(response))); | 186 _median.render(b.measureSample(b.medianSample(response))); |
187 _max.render(b.measureSample(b.maxSample(response))); | 187 _max.render(b.measureSample(b.maxSample(response))); |
188 _count.render(response == null ? "0" : "${response.samples.length}"); | 188 _count.render(response == null ? "0" : "${response.samples.length}"); |
189 _units.render(row.benchmark.measureSampleUnits); | 189 _units.render(row.benchmark.measureSampleUnits); |
190 } | 190 } |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
228 new HeadingElement.h2()..text = "Report data as JSON:", | 228 new HeadingElement.h2()..text = "Report data as JSON:", |
229 new PreElement()..text = json | 229 new PreElement()..text = json |
230 ]); | 230 ]); |
231 _rendered = json; | 231 _rendered = json; |
232 } | 232 } |
233 } | 233 } |
234 | 234 |
235 /// A menu of selectable text items. | 235 /// A menu of selectable text items. |
236 class _Menu { | 236 class _Menu { |
237 final SelectElement elt; | 237 final SelectElement elt; |
238 final _changes = new StreamController.broadcast(); | 238 final _changes = new StreamController<String>.broadcast(); |
239 final _options = new List<_MenuOption>(); | 239 final _options = new List<_MenuOption>(); |
240 | 240 |
241 _Menu(this.elt) { | 241 _Menu(this.elt) { |
242 elt.onChange.listen((e) => _changes.add(elt.value)); | 242 elt.onChange.listen((e) => _changes.add(elt.value)); |
243 } | 243 } |
244 | 244 |
245 Stream<String> get onChange => _changes.stream; | 245 Stream<String> get onChange => _changes.stream; |
246 | 246 |
247 void render(List<String> items, String selected) { | 247 void render(List<String> items, String selected) { |
248 var it = items.iterator; | 248 var it = items.iterator; |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
335 | 335 |
336 void render(bool checked, {EventSink<SelectEvent<T>> sink, T item}) { | 336 void render(bool checked, {EventSink<SelectEvent<T>> sink, T item}) { |
337 if (_renderedChecked != checked) { | 337 if (_renderedChecked != checked) { |
338 elt.checked = checked; | 338 elt.checked = checked; |
339 _renderedChecked = checked; | 339 _renderedChecked = checked; |
340 } | 340 } |
341 _item = item; | 341 _item = item; |
342 _sink = sink; | 342 _sink = sink; |
343 } | 343 } |
344 } | 344 } |
OLD | NEW |