OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 /** | 5 /** |
6 * @constructor | 6 * @constructor |
7 * @extends {WebInspector.VBox} | 7 * @extends {WebInspector.VBox} |
8 * @param {!WebInspector.TimelineModel} model | 8 * @param {!WebInspector.TimelineModel} model |
9 */ | 9 */ |
10 WebInspector.TimelineTreeView = function(model) | 10 WebInspector.TimelineTreeView = function(model) |
11 { | 11 { |
12 WebInspector.VBox.call(this); | 12 WebInspector.VBox.call(this); |
13 this.element.classList.add("timeline-tree-view"); | 13 this.element.classList.add("timeline-tree-view"); |
14 | 14 |
15 this._model = model; | 15 this._model = model; |
16 var columns = []; | 16 var columns = []; |
17 columns.push({id: "self", title: WebInspector.UIString("Self Time"), width:
"120px", sort: WebInspector.DataGrid.Order.Descending, sortable: true}); | 17 columns.push({id: "self", title: WebInspector.UIString("Self Time"), width:
"120px", sort: WebInspector.DataGrid.Order.Descending, sortable: true}); |
| 18 columns.push({id: "total", title: WebInspector.UIString("Total Time"), width
: "120px", sort: WebInspector.DataGrid.Order.Descending, sortable: true}); |
18 columns.push({id: "activity", title: WebInspector.UIString("Activity"), disc
losure: true, sortable: true}); | 19 columns.push({id: "activity", title: WebInspector.UIString("Activity"), disc
losure: true, sortable: true}); |
19 | 20 |
20 this._filters = [ | 21 this._filters = [ |
21 WebInspector.TimelineUIUtils.hiddenEventsFilter(), | 22 WebInspector.TimelineUIUtils.hiddenEventsFilter(), |
22 new WebInspector.ExcludeTopLevelFilter() | 23 new WebInspector.ExcludeTopLevelFilter() |
23 ]; | 24 ]; |
24 | 25 |
25 this._groupBySetting = WebInspector.settings.createSetting("timelineTreeGrou
pBy", WebInspector.TimelineTreeView.GroupBy.None); | 26 this._groupBySetting = WebInspector.settings.createSetting("timelineTreeGrou
pBy", WebInspector.TimelineTreeView.GroupBy.None); |
26 | 27 |
27 this.dataGrid = new WebInspector.SortableDataGrid(columns); | 28 this.dataGrid = new WebInspector.SortableDataGrid(columns); |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
90 /** | 91 /** |
91 * @param {string} id | 92 * @param {string} id |
92 * @return {!WebInspector.TimelineModel.ProfileTreeNode} | 93 * @return {!WebInspector.TimelineModel.ProfileTreeNode} |
93 */ | 94 */ |
94 function groupNodeById(id) | 95 function groupNodeById(id) |
95 { | 96 { |
96 var node = groupNodes.get(id); | 97 var node = groupNodes.get(id); |
97 if (!node) { | 98 if (!node) { |
98 node = new WebInspector.TimelineModel.ProfileTreeNode(); | 99 node = new WebInspector.TimelineModel.ProfileTreeNode(); |
99 node.name = id || WebInspector.UIString("(unknown)"); | 100 node.name = id || WebInspector.UIString("(unknown)"); |
| 101 node.selfTime = 0; |
100 node.totalTime = 0; | 102 node.totalTime = 0; |
101 groupNodes.set(id, node); | 103 groupNodes.set(id, node); |
102 } | 104 } |
103 return node; | 105 return node; |
104 } | 106 } |
105 | 107 |
106 /** | 108 /** |
107 * @return {?WebInspector.TimelineModel.ProfileTreeNode} | 109 * @return {?WebInspector.TimelineModel.ProfileTreeNode} |
108 */ | 110 */ |
109 function groupByNone() | 111 function groupByNone() |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
194 */ | 196 */ |
195 function compareField(field, a, b) | 197 function compareField(field, a, b) |
196 { | 198 { |
197 var nodeA = /** @type {!WebInspector.TimelineTreeView.GridNode} */ (
a); | 199 var nodeA = /** @type {!WebInspector.TimelineTreeView.GridNode} */ (
a); |
198 var nodeB = /** @type {!WebInspector.TimelineTreeView.GridNode} */ (
b); | 200 var nodeB = /** @type {!WebInspector.TimelineTreeView.GridNode} */ (
b); |
199 var valueA = nodeA._profileNode[field]; | 201 var valueA = nodeA._profileNode[field]; |
200 var valueB = nodeB._profileNode[field]; | 202 var valueB = nodeB._profileNode[field]; |
201 return valueA === valueB ? 0 : valueA > valueB ? 1 : -1; | 203 return valueA === valueB ? 0 : valueA > valueB ? 1 : -1; |
202 } | 204 } |
203 var field = { | 205 var field = { |
204 "self": "totalTime", | 206 "self": "selfTime", |
| 207 "total": "totalTime", |
205 "activity": "name" | 208 "activity": "name" |
206 }[columnIdentifier]; | 209 }[columnIdentifier]; |
207 this.dataGrid.sortNodes(compareField.bind(null, field), !this.dataGrid.i
sSortOrderAscending()); | 210 this.dataGrid.sortNodes(compareField.bind(null, field), !this.dataGrid.i
sSortOrderAscending()); |
208 }, | 211 }, |
209 | 212 |
210 __proto__: WebInspector.VBox.prototype | 213 __proto__: WebInspector.VBox.prototype |
211 } | 214 } |
212 | 215 |
213 /** | 216 /** |
214 * @param {!WebInspector.TracingModel.Event} event | 217 * @param {!WebInspector.TracingModel.Event} event |
(...skipping 30 matching lines...) Expand all Loading... |
245 * @return {string} | 248 * @return {string} |
246 */ | 249 */ |
247 function formatPercent(value) | 250 function formatPercent(value) |
248 { | 251 { |
249 return WebInspector.UIString("%.2f\u2009%%", value); | 252 return WebInspector.UIString("%.2f\u2009%%", value); |
250 } | 253 } |
251 | 254 |
252 this._populated = false; | 255 this._populated = false; |
253 this._profileNode = profileNode; | 256 this._profileNode = profileNode; |
254 this._totalTime = grandTotalTime; | 257 this._totalTime = grandTotalTime; |
255 var selfTime = profileNode.totalTime; | 258 var selfTime = profileNode.selfTime; |
256 var selfPercent = selfTime / grandTotalTime * 100; | 259 var selfPercent = selfTime / grandTotalTime * 100; |
| 260 var totalTime = profileNode.totalTime; |
| 261 var totalPercent = totalTime / grandTotalTime * 100; |
257 var data = { | 262 var data = { |
258 "activity": profileNode.name, | 263 "activity": profileNode.name, |
259 "self-percent": formatPercent(selfPercent), | 264 "self-percent": formatPercent(selfPercent), |
260 "self": formatMilliseconds(selfTime), | 265 "self": formatMilliseconds(selfTime), |
| 266 "total-percent": formatPercent(totalPercent), |
| 267 "total": formatMilliseconds(totalTime), |
261 }; | 268 }; |
262 var hasChildren = this._profileNode.children ? this._profileNode.children.si
ze > 0 : false; | 269 var hasChildren = this._profileNode.children ? this._profileNode.children.si
ze > 0 : false; |
263 WebInspector.SortableDataGridNode.call(this, data, hasChildren); | 270 WebInspector.SortableDataGridNode.call(this, data, hasChildren); |
264 } | 271 } |
265 | 272 |
266 WebInspector.TimelineTreeView.GridNode.prototype = { | 273 WebInspector.TimelineTreeView.GridNode.prototype = { |
267 /** | 274 /** |
268 * @override | 275 * @override |
269 * @param {string} columnIdentifier | 276 * @param {string} columnIdentifier |
270 * @return {!Element} | 277 * @return {!Element} |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
341 if (!this._profileNode.children) | 348 if (!this._profileNode.children) |
342 return; | 349 return; |
343 for (var node of this._profileNode.children.values()) { | 350 for (var node of this._profileNode.children.values()) { |
344 var gridNode = new WebInspector.TimelineTreeView.GridNode(node, this
._totalTime); | 351 var gridNode = new WebInspector.TimelineTreeView.GridNode(node, this
._totalTime); |
345 this.insertChildOrdered(gridNode); | 352 this.insertChildOrdered(gridNode); |
346 } | 353 } |
347 }, | 354 }, |
348 | 355 |
349 __proto__: WebInspector.SortableDataGridNode.prototype | 356 __proto__: WebInspector.SortableDataGridNode.prototype |
350 } | 357 } |
OLD | NEW |