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

Side by Side Diff: runtime/observatory/lib/src/app/view_model.dart

Issue 928833003: Add Function based profile tree (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 9 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
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 part of app; 5 part of app;
6 6
7 abstract class TableTreeRow extends Observable { 7 abstract class TableTreeRow extends Observable {
8 static const arrowRight = '\u2192'; 8 static const arrowRight = '\u2192';
9 static const arrowDownRight = '\u21b3'; 9 static const arrowDownRight = '\u21b3';
10 // Number of pixels each subtree is indented. 10 // Number of pixels each subtree is indented.
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 } 58 }
59 59
60 void _buildRow() { 60 void _buildRow() {
61 _tr = new TableRowElement(); 61 _tr = new TableRowElement();
62 for (var i = 0; i < tree.columnCount; i++) { 62 for (var i = 0; i < tree.columnCount; i++) {
63 var cell = _tr.insertCell(-1); 63 var cell = _tr.insertCell(-1);
64 cell.classes.add(_backgroundColorClassForRow()); 64 cell.classes.add(_backgroundColorClassForRow());
65 tableColumns.add(cell); 65 tableColumns.add(cell);
66 } 66 }
67 var firstColumn = tableColumns[0]; 67 var firstColumn = tableColumns[0];
68 var columnContainer = new DivElement();
69 columnContainer.classes.add('flex-row');
68 _expander = new SpanElement(); 70 _expander = new SpanElement();
69 _expander.style.display = 'inline-block'; 71 _expander.style.display = 'inline-block';
72 _expander.style.display = 'inline-block';
70 _expander.style.minWidth = '1.5em'; 73 _expander.style.minWidth = '1.5em';
71 _expander.onClick.listen(onClick); 74 _expander.onClick.listen(onClick);
72 firstColumn.children.add(_expander); 75 columnContainer.children.add(_expander);
73 firstColumn.style.paddingLeft = '${depth * subtreeIndent}px'; 76 firstColumn.style.paddingLeft = '${depth * subtreeIndent}px';
77 firstColumn.children.add(columnContainer);
74 updateExpanderView(); 78 updateExpanderView();
75 } 79 }
76 80
77 void updateExpanderView() { 81 void updateExpanderView() {
78 if (_expander == null) { 82 if (_expander == null) {
79 return; 83 return;
80 } 84 }
81 if (!hasChildren()) { 85 if (!hasChildren()) {
82 _expander.style.visibility = 'hidden'; 86 _expander.style.visibility = 'hidden';
83 _expander.style.cursor = 'auto'; 87 _expander.style.cursor = 'auto';
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 } 132 }
129 133
130 class TableTree extends Observable { 134 class TableTree extends Observable {
131 final TableSectionElement tableBody; 135 final TableSectionElement tableBody;
132 final List<TableTreeRow> rows = []; 136 final List<TableTreeRow> rows = [];
133 final int columnCount; 137 final int columnCount;
134 138
135 /// Create a table tree with column [headers]. 139 /// Create a table tree with column [headers].
136 TableTree(this.tableBody, this.columnCount); 140 TableTree(this.tableBody, this.columnCount);
137 141
142 void clear() {
143 tableBody.children.clear();
144 rows.clear();
145 }
146
138 /// Initialize the table tree with the list of root children. 147 /// Initialize the table tree with the list of root children.
139 void initialize(TableTreeRow root) { 148 void initialize(TableTreeRow root) {
140 tableBody.children.clear(); 149 clear();
141 rows.clear();
142 root.onShow(); 150 root.onShow();
143 rows.addAll(root.children); 151 rows.addAll(root.children);
144 for (var i = 0; i < rows.length; i++) { 152 for (var i = 0; i < rows.length; i++) {
145 rows[i].onShow(); 153 rows[i].onShow();
146 tableBody.children.add(rows[i].tr); 154 tableBody.children.add(rows[i].tr);
147 } 155 }
148 } 156 }
149 157
150 /// Toggle expansion of row in tree. 158 /// Toggle expansion of row in tree.
151 void toggle(TableTreeRow row) { 159 void toggle(TableTreeRow row) {
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 return b.compareTo(a); 248 return b.compareTo(a);
241 } 249 }
242 250
243 int _sortFuncAscending(int i, int j) { 251 int _sortFuncAscending(int i, int j) {
244 var a = getSortKeyFor(i, _sortColumnIndex); 252 var a = getSortKeyFor(i, _sortColumnIndex);
245 var b = getSortKeyFor(j, _sortColumnIndex); 253 var b = getSortKeyFor(j, _sortColumnIndex);
246 return a.compareTo(b); 254 return a.compareTo(b);
247 } 255 }
248 256
249 void sort() { 257 void sort() {
250 Stopwatch sw = new Stopwatch()..start();
251 assert(_sortColumnIndex >= 0); 258 assert(_sortColumnIndex >= 0);
252 assert(_sortColumnIndex < columns.length); 259 assert(_sortColumnIndex < columns.length);
253 if (_sortDescending) { 260 if (_sortDescending) {
254 sortedRows.sort(_sortFuncDescending); 261 sortedRows.sort(_sortFuncDescending);
255 } else { 262 } else {
256 sortedRows.sort(_sortFuncAscending); 263 sortedRows.sort(_sortFuncAscending);
257 } 264 }
258 } 265 }
259 266
260 void clearRows() { 267 void clearRows() {
(...skipping 22 matching lines...) Expand all
283 if (column != _sortColumnIndex) { 290 if (column != _sortColumnIndex) {
284 return columns[column].label + '\u2003'; 291 return columns[column].label + '\u2003';
285 } 292 }
286 return columns[column].label + (_sortDescending ? arrowUp : arrowDown); 293 return columns[column].label + (_sortDescending ? arrowUp : arrowDown);
287 } 294 }
288 295
289 dynamic getValue(int row, int column) { 296 dynamic getValue(int row, int column) {
290 return rows[row].values[column]; 297 return rows[row].values[column];
291 } 298 }
292 } 299 }
OLDNEW
« no previous file with comments | « runtime/observatory/lib/src/app/utils.dart ('k') | runtime/observatory/lib/src/cpu_profile/cpu_profile.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698