| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 /* Counter accessor for Name Node. */ | 5 /* Counter accessor for Name Node. */ |
| 6 function getCounterNameFromCounterNode(node) { | 6 function getCounterNameFromCounterNode(node) { |
| 7 return node.childNodes[1]; | 7 return node.childNodes[1]; |
| 8 } | 8 } |
| 9 | 9 |
| 10 /* Counter accessor for Value Node. */ | 10 /* Counter accessor for Value Node. */ |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 78 function removeNullValues() { | 78 function removeNullValues() { |
| 79 var nodes = document.getElementsByName('counter'); | 79 var nodes = document.getElementsByName('counter'); |
| 80 for (var i = nodes.length - 1; i >= 0; i--) { | 80 for (var i = nodes.length - 1; i >= 0; i--) { |
| 81 var node = nodes[i]; | 81 var node = nodes[i]; |
| 82 var value = getCounterValueFromCounterNode(node).innerHTML; | 82 var value = getCounterValueFromCounterNode(node).innerHTML; |
| 83 if (value == 'null') | 83 if (value == 'null') |
| 84 node.parentNode.removeChild(node); | 84 node.parentNode.removeChild(node); |
| 85 } | 85 } |
| 86 var nodes = document.getElementsByName('timer'); | 86 var nodes = document.getElementsByName('timer'); |
| 87 for (var i = 0, node; node = nodes[i]; i++) { | 87 for (var i = 0, node; node = nodes[i]; i++) { |
| 88 var value_node = getTimerValueFromTimerNode(node); | 88 var valueNode = getTimerValueFromTimerNode(node); |
| 89 if (value_node.innerHTML == 'null') | 89 if (valueNode.innerHTML == 'null') |
| 90 value_node.innerHTML = ''; | 90 valueNode.innerHTML = ''; |
| 91 } | 91 } |
| 92 } | 92 } |
| 93 | 93 |
| 94 /* Compute the average time for timers */ | 94 /* Compute the average time for timers */ |
| 95 function computeTimes() { | 95 function computeTimes() { |
| 96 var nodes = document.getElementsByName('timer'); | 96 var nodes = document.getElementsByName('timer'); |
| 97 for (var i = 0, node; node = nodes[i]; i++) { | 97 for (var i = 0, node; node = nodes[i]; i++) { |
| 98 var count = getTimerValueFromTimerNode(node).innerHTML; | 98 var count = getTimerValueFromTimerNode(node).innerHTML; |
| 99 if (count.length > 0) { | 99 if (count.length > 0) { |
| 100 var time = getTimerTimeFromTimerNode(node).innerHTML; | 100 var time = getTimerTimeFromTimerNode(node).innerHTML; |
| 101 var avg = getTimerAvgTimeFromTimerNode(node); | 101 var avg = getTimerAvgTimeFromTimerNode(node); |
| 102 avg.innerHTML = Math.round(time / count * 100) / 100; | 102 avg.innerHTML = Math.round(time / count * 100) / 100; |
| 103 } | 103 } |
| 104 } | 104 } |
| 105 } | 105 } |
| 106 | 106 |
| 107 /* All the work we do onload. */ | 107 /* All the work we do onload. */ |
| 108 function onLoadWork() { | 108 function onLoadWork() { |
| 109 // This is the javascript code that processes the template: | 109 // This is the javascript code that processes the template: |
| 110 var input = new JsEvalContext(templateData); | 110 var input = new JsEvalContext(templateData); |
| 111 var output = $('t'); | 111 var output = $('t'); |
| 112 jstProcess(input, output); | 112 jstProcess(input, output); |
| 113 | 113 |
| 114 // Add handlers to dynamically created HTML elements. | 114 // Add handlers to dynamically created HTML elements. |
| 115 var elements = document.getElementsByName('string-sort'); | 115 var elements = document.getElementsByName('string-sort'); |
| 116 for (var i = 0; i < elements.length; ++i) | 116 for (var i = 0; i < elements.length; ++i) |
| 117 elements[i].onclick = function() { sort_table('string'); }; | 117 elements[i].onclick = function() { sortTable('string'); }; |
| 118 | 118 |
| 119 elements = document.getElementsByName('number-sort'); | 119 elements = document.getElementsByName('number-sort'); |
| 120 for (i = 0; i < elements.length; ++i) | 120 for (i = 0; i < elements.length; ++i) |
| 121 elements[i].onclick = function() { sort_table('number'); }; | 121 elements[i].onclick = function() { sortTable('number'); }; |
| 122 | 122 |
| 123 doColor(); | 123 doColor(); |
| 124 removeNullValues(); | 124 removeNullValues(); |
| 125 computeTimes(); | 125 computeTimes(); |
| 126 | 126 |
| 127 var filter = $('filter'); | 127 var filter = $('filter'); |
| 128 filter.onkeyup = doFilter; | 128 filter.onkeyup = doFilter; |
| 129 filter.focus(); | 129 filter.focus(); |
| 130 } | 130 } |
| 131 | 131 |
| 132 // The function should only be used as the event handler | 132 // The function should only be used as the event handler |
| 133 // on a table cell element. To use it, put it in a <td> element: | 133 // on a table cell element. To use it, put it in a <td> element: |
| 134 // <td onclick="sort('string')" ...> | 134 // <td onclick="sort('string')" ...> |
| 135 // | 135 // |
| 136 // The function sorts rows after the row with onclick event handler. | 136 // The function sorts rows after the row with onclick event handler. |
| 137 // | 137 // |
| 138 // type: the data type, 'string', 'number' | 138 // type: the data type, 'string', 'number' |
| 139 function sort_table(type) { | 139 function sortTable(type) { |
| 140 var cell = event.target; | 140 var cell = event.target; |
| 141 var cnum = cell.cellIndex; | 141 var cnum = cell.cellIndex; |
| 142 | 142 |
| 143 var row = cell.parentNode; | 143 var row = cell.parentNode; |
| 144 var start_index = row.rowIndex + 1; | 144 var startIndex = row.rowIndex + 1; |
| 145 | 145 |
| 146 var tbody = row.parentNode; | 146 var tbody = row.parentNode; |
| 147 var table = tbody.parentNode; | 147 var table = tbody.parentNode; |
| 148 | 148 |
| 149 var rows = new Array(); | 149 var rows = new Array(); |
| 150 | 150 |
| 151 var indexes = new Array(); | 151 var indexes = new Array(); |
| 152 // skip the first row | 152 // skip the first row |
| 153 for (var i = start_index; i < table.rows.length; i++) | 153 for (var i = startIndex; i < table.rows.length; i++) |
| 154 rows.push(table.rows[i]); | 154 rows.push(table.rows[i]); |
| 155 | 155 |
| 156 // a, b are strings | 156 // a, b are strings |
| 157 function compare_strings(a, b) { | 157 function compareStrings(a, b) { |
| 158 if (a == b) return 0; | 158 if (a == b) return 0; |
| 159 if (a < b) return -1; | 159 if (a < b) return -1; |
| 160 return 1; | 160 return 1; |
| 161 } | 161 } |
| 162 | 162 |
| 163 // a, b are numbers | 163 // a, b are numbers |
| 164 function compare_numbers(a, b) { | 164 function compareNumbers(a, b) { |
| 165 var x = isNaN(a) ? 0 : a; | 165 var x = isNaN(a) ? 0 : a; |
| 166 var y = isNaN(b) ? 0 : b; | 166 var y = isNaN(b) ? 0 : b; |
| 167 return x - y; | 167 return x - y; |
| 168 } | 168 } |
| 169 | 169 |
| 170 var sort_func; | 170 var sortFunc; |
| 171 if (type === 'string') { | 171 if (type === 'string') { |
| 172 sort_func = function(a, b) { | 172 sortFunc = function(a, b) { |
| 173 var x = a.cells[cnum].innerText; | 173 var x = a.cells[cnum].innerText; |
| 174 var y = b.cells[cnum].innerText; | 174 var y = b.cells[cnum].innerText; |
| 175 return compare_strings(x, y); | 175 return compareStrings(x, y); |
| 176 }; | 176 }; |
| 177 | 177 |
| 178 } else if (type === 'number') { | 178 } else if (type === 'number') { |
| 179 sort_func = function(a, b) { | 179 sortFunc = function(a, b) { |
| 180 var x = parseFloat(a.cells[cnum].innerText); | 180 var x = parseFloat(a.cells[cnum].innerText); |
| 181 var y = parseFloat(b.cells[cnum].innerText); | 181 var y = parseFloat(b.cells[cnum].innerText); |
| 182 return compare_numbers(x, y); | 182 return compareNumbers(x, y); |
| 183 }; | 183 }; |
| 184 } | 184 } |
| 185 | 185 |
| 186 rows.sort(sort_func); | 186 rows.sort(sortFunc); |
| 187 | 187 |
| 188 // change tables | 188 // change tables |
| 189 if (cell._reverse) { | 189 if (cell._reverse) { |
| 190 for (var i = rows.length - 1; i >= 0; i--) | 190 for (var i = rows.length - 1; i >= 0; i--) |
| 191 tbody.appendChild(rows[i]); | 191 tbody.appendChild(rows[i]); |
| 192 cell._reverse = false; | 192 cell._reverse = false; |
| 193 } else { | 193 } else { |
| 194 for (var i = 0; i < rows.length; i++) | 194 for (var i = 0; i < rows.length; i++) |
| 195 tbody.appendChild(rows[i]); | 195 tbody.appendChild(rows[i]); |
| 196 cell._reverse = true; | 196 cell._reverse = true; |
| 197 } | 197 } |
| 198 } | 198 } |
| 199 | 199 |
| 200 document.addEventListener('DOMContentLoaded', onLoadWork); | 200 document.addEventListener('DOMContentLoaded', onLoadWork); |
| OLD | NEW |