| OLD | NEW |
| 1 // Copyright (c) 2017 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2017 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 Coverage.CoverageListView = class extends UI.VBox { | 5 Coverage.CoverageListView = class extends UI.VBox { |
| 6 constructor() { | 6 constructor() { |
| 7 super(true); | 7 super(true); |
| 8 this.registerRequiredCSS('coverage/coverageListView.css'); | 8 this.registerRequiredCSS('coverage/coverageListView.css'); |
| 9 var columns = [ | 9 var columns = [ |
| 10 {id: 'url', title: Common.UIString('URL'), width: '300px', fixedWidth: fal
se, sortable: true}, | 10 {id: 'url', title: Common.UIString('URL'), width: '300px', fixedWidth: fal
se, sortable: true}, |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 this._dataGrid.element.classList.add('flex-auto'); | 32 this._dataGrid.element.classList.add('flex-auto'); |
| 33 this._dataGrid.element.addEventListener('dblclick', this._onDoubleClick.bind
(this), false); | 33 this._dataGrid.element.addEventListener('dblclick', this._onDoubleClick.bind
(this), false); |
| 34 this._dataGrid.element.addEventListener('keydown', this._onKeyDown.bind(this
), false); | 34 this._dataGrid.element.addEventListener('keydown', this._onKeyDown.bind(this
), false); |
| 35 this._dataGrid.addEventListener(DataGrid.DataGrid.Events.SortingChanged, thi
s._sortingChanged, this); | 35 this._dataGrid.addEventListener(DataGrid.DataGrid.Events.SortingChanged, thi
s._sortingChanged, this); |
| 36 | 36 |
| 37 var dataGridWidget = this._dataGrid.asWidget(); | 37 var dataGridWidget = this._dataGrid.asWidget(); |
| 38 dataGridWidget.show(this.contentElement); | 38 dataGridWidget.show(this.contentElement); |
| 39 } | 39 } |
| 40 | 40 |
| 41 /** | 41 /** |
| 42 * @param {!Array<!Coverage.CoverageInfo>} coverageInfo | 42 * @param {!Array<!Coverage.URLCoverageInfo>} coverageInfo |
| 43 */ | 43 */ |
| 44 update(coverageInfo) { | 44 update(coverageInfo) { |
| 45 var maxSize = coverageInfo.reduce((acc, entry) => Math.max(acc, entry.size),
0); | 45 var maxSize = coverageInfo.reduce((acc, entry) => Math.max(acc, entry.size()
), 0); |
| 46 var rootNode = this._dataGrid.rootNode(); | 46 var rootNode = this._dataGrid.rootNode(); |
| 47 rootNode.removeChildren(); | 47 rootNode.removeChildren(); |
| 48 for (var entry of coverageInfo) | 48 for (var entry of coverageInfo) |
| 49 rootNode.appendChild(new Coverage.CoverageListView.GridNode(entry, maxSize
)); | 49 rootNode.appendChild(new Coverage.CoverageListView.GridNode(entry, maxSize
)); |
| 50 this._sortingChanged(); | 50 this._sortingChanged(); |
| 51 } | 51 } |
| 52 | 52 |
| 53 /** | 53 /** |
| 54 * @param {!Event} event | 54 * @param {!Event} event |
| 55 */ | 55 */ |
| (...skipping 14 matching lines...) Expand all Loading... |
| 70 this._revealSourceForNode(this._dataGrid.selectedNode); | 70 this._revealSourceForNode(this._dataGrid.selectedNode); |
| 71 } | 71 } |
| 72 | 72 |
| 73 /** | 73 /** |
| 74 * @param {?DataGrid.DataGridNode} node | 74 * @param {?DataGrid.DataGridNode} node |
| 75 */ | 75 */ |
| 76 _revealSourceForNode(node) { | 76 _revealSourceForNode(node) { |
| 77 if (!node) | 77 if (!node) |
| 78 return; | 78 return; |
| 79 var coverageInfo = /** @type {!Coverage.CoverageListView.GridNode} */ (node)
._coverageInfo; | 79 var coverageInfo = /** @type {!Coverage.CoverageListView.GridNode} */ (node)
._coverageInfo; |
| 80 var url = coverageInfo.contentProvider.contentURL(); | 80 var sourceCode = Workspace.workspace.uiSourceCodeForURL(coverageInfo.url()); |
| 81 var sourceCode = Workspace.workspace.uiSourceCodeForURL(url); | |
| 82 if (!sourceCode) | 81 if (!sourceCode) |
| 83 return; | 82 return; |
| 84 Common.Revealer.reveal(sourceCode); | 83 Common.Revealer.reveal(sourceCode); |
| 85 } | 84 } |
| 86 | 85 |
| 87 _sortingChanged() { | 86 _sortingChanged() { |
| 88 var columnId = this._dataGrid.sortColumnId(); | 87 var columnId = this._dataGrid.sortColumnId(); |
| 89 if (!columnId) | 88 if (!columnId) |
| 90 return; | 89 return; |
| 91 var sortFunction; | 90 var sortFunction; |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 124 /** | 123 /** |
| 125 * @param {string} fieldName | 124 * @param {string} fieldName |
| 126 * @param {!DataGrid.DataGridNode} a | 125 * @param {!DataGrid.DataGridNode} a |
| 127 * @param {!DataGrid.DataGridNode} b | 126 * @param {!DataGrid.DataGridNode} b |
| 128 * @return {number} | 127 * @return {number} |
| 129 */ | 128 */ |
| 130 function compareNumericField(fieldName, a, b) { | 129 function compareNumericField(fieldName, a, b) { |
| 131 var nodeA = /** @type {!Coverage.CoverageListView.GridNode} */ (a); | 130 var nodeA = /** @type {!Coverage.CoverageListView.GridNode} */ (a); |
| 132 var nodeB = /** @type {!Coverage.CoverageListView.GridNode} */ (b); | 131 var nodeB = /** @type {!Coverage.CoverageListView.GridNode} */ (b); |
| 133 | 132 |
| 134 return nodeA._coverageInfo[fieldName] - nodeB._coverageInfo[fieldName]; | 133 return nodeA._coverageInfo[fieldName]() - nodeB._coverageInfo[fieldName]()
; |
| 135 } | 134 } |
| 136 } | 135 } |
| 137 | 136 |
| 138 /** | 137 /** |
| 139 * @param {!Coverage.CoverageType} type | 138 * @param {!Coverage.CoverageType} type |
| 140 */ | 139 */ |
| 141 static _typeToString(type) { | 140 static _typeToString(type) { |
| 142 var types = []; | 141 var types = []; |
| 143 if (type & Coverage.CoverageType.CSS) | 142 if (type & Coverage.CoverageType.CSS) |
| 144 types.push(Common.UIString('CSS')); | 143 types.push(Common.UIString('CSS')); |
| 145 if (type & Coverage.CoverageType.JavaScript) | 144 if (type & Coverage.CoverageType.JavaScript) |
| 146 types.push(Common.UIString('JS')); | 145 types.push(Common.UIString('JS')); |
| 147 return types.join('+'); | 146 return types.join('+'); |
| 148 } | 147 } |
| 149 }; | 148 }; |
| 150 | 149 |
| 151 Coverage.CoverageListView.GridNode = class extends DataGrid.SortableDataGridNode
{ | 150 Coverage.CoverageListView.GridNode = class extends DataGrid.SortableDataGridNode
{ |
| 152 /** | 151 /** |
| 153 * @param {!Coverage.CoverageInfo} coverageInfo | 152 * @param {!Coverage.URLCoverageInfo} coverageInfo |
| 154 * @param {number} maxSize | 153 * @param {number} maxSize |
| 155 */ | 154 */ |
| 156 constructor(coverageInfo, maxSize) { | 155 constructor(coverageInfo, maxSize) { |
| 157 super(); | 156 super(); |
| 158 this._coverageInfo = coverageInfo; | 157 this._coverageInfo = coverageInfo; |
| 159 this._url = coverageInfo.contentProvider.contentURL(); | 158 this._url = coverageInfo.url(); |
| 160 this._displayURL = new Common.ParsedURL(this._url).displayName; | 159 this._displayURL = new Common.ParsedURL(this._url).displayName; |
| 161 this._maxSize = maxSize; | 160 this._maxSize = maxSize; |
| 162 } | 161 } |
| 163 | 162 |
| 164 /** | 163 /** |
| 165 * @override | 164 * @override |
| 166 * @param {string} columnId | 165 * @param {string} columnId |
| 167 * @return {!Element} | 166 * @return {!Element} |
| 168 */ | 167 */ |
| 169 createCell(columnId) { | 168 createCell(columnId) { |
| 170 var cell = this.createTD(columnId); | 169 var cell = this.createTD(columnId); |
| 171 switch (columnId) { | 170 switch (columnId) { |
| 172 case 'url': | 171 case 'url': |
| 173 cell.title = this._url; | 172 cell.title = this._url; |
| 174 var outer = cell.createChild('div', 'url-outer'); | 173 var outer = cell.createChild('div', 'url-outer'); |
| 175 var prefix = outer.createChild('div', 'url-prefix'); | 174 var prefix = outer.createChild('div', 'url-prefix'); |
| 176 var suffix = outer.createChild('div', 'url-suffix'); | 175 var suffix = outer.createChild('div', 'url-suffix'); |
| 177 var splitURL = /^(.*)(\/[^/]*)$/.exec(this._url); | 176 var splitURL = /^(.*)(\/[^/]*)$/.exec(this._url); |
| 178 prefix.textContent = splitURL ? splitURL[1] : this._url; | 177 prefix.textContent = splitURL ? splitURL[1] : this._url; |
| 179 suffix.textContent = splitURL ? splitURL[2] : ''; | 178 suffix.textContent = splitURL ? splitURL[2] : ''; |
| 180 break; | 179 break; |
| 181 case 'type': | 180 case 'type': |
| 182 cell.textContent = Coverage.CoverageListView._typeToString(this._coverag
eInfo.type); | 181 cell.textContent = Coverage.CoverageListView._typeToString(this._coverag
eInfo.type()); |
| 183 break; | 182 break; |
| 184 case 'size': | 183 case 'size': |
| 185 cell.classList.add('numeric-column'); | 184 cell.classList.add('numeric-column'); |
| 186 cell.textContent = Number.withThousandsSeparator(this._coverageInfo.size
|| 0); | 185 cell.textContent = Number.withThousandsSeparator(this._coverageInfo.size
() || 0); |
| 187 break; | 186 break; |
| 188 case 'unusedSize': | 187 case 'unusedSize': |
| 189 cell.classList.add('numeric-column'); | 188 cell.classList.add('numeric-column'); |
| 190 cell.textContent = Number.withThousandsSeparator(this._coverageInfo.unus
edSize || 0); | 189 cell.textContent = Number.withThousandsSeparator(this._coverageInfo.unus
edSize() || 0); |
| 191 if (this._coverageInfo.size) | 190 if (this._coverageInfo.size()) |
| 192 cell.title = Math.round(100 * this._coverageInfo.unusedSize / this._co
verageInfo.size) + '%'; | 191 cell.title = Math.round(100 * this._coverageInfo.unusedSize() / this._
coverageInfo.size()) + '%'; |
| 193 break; | 192 break; |
| 194 case 'bars': | 193 case 'bars': |
| 195 var barContainer = cell.createChild('div', 'bar-container'); | 194 var barContainer = cell.createChild('div', 'bar-container'); |
| 196 var unusedSizeBar = barContainer.createChild('div', 'bar bar-unused-size
'); | 195 var unusedSizeBar = barContainer.createChild('div', 'bar bar-unused-size
'); |
| 197 unusedSizeBar.style.width = Math.ceil(100 * this._coverageInfo.unusedSiz
e / this._maxSize) + '%'; | 196 unusedSizeBar.style.width = Math.ceil(100 * this._coverageInfo.unusedSiz
e() / this._maxSize) + '%'; |
| 198 var usedSizeBar = barContainer.createChild('div', 'bar bar-used-size'); | 197 var usedSizeBar = barContainer.createChild('div', 'bar bar-used-size'); |
| 199 usedSizeBar.style.width = Math.ceil(100 * this._coverageInfo.usedSize /
this._maxSize) + '%'; | 198 usedSizeBar.style.width = Math.ceil(100 * this._coverageInfo.usedSize()
/ this._maxSize) + '%'; |
| 200 var sizeBar = barContainer.createChild('div', 'bar bar-slack-size'); | 199 var sizeBar = barContainer.createChild('div', 'bar bar-slack-size'); |
| 201 var slackSize = this._coverageInfo.size - this._coverageInfo.unusedSize
- this._coverageInfo.usedSize; | 200 var slackSize = this._coverageInfo.size() - this._coverageInfo.unusedSiz
e() - this._coverageInfo.usedSize(); |
| 202 sizeBar.style.width = Math.ceil(100 * slackSize / this._maxSize) + '%'; | 201 sizeBar.style.width = Math.ceil(100 * slackSize / this._maxSize) + '%'; |
| 203 } | 202 } |
| 204 return cell; | 203 return cell; |
| 205 } | 204 } |
| 206 }; | 205 }; |
| OLD | NEW |