home *** CD-ROM | disk | FTP | other *** search
/ Freelog 115 / FreelogNo115-MaiJuin2013.iso / Internet / AvantBrowser / asetup.exe / _data / webkit / chrome.dll / 0 / BINDATA / 509 < prev    next >
Encoding:
Text File  |  2013-04-03  |  5.5 KB  |  201 lines

  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
  3. // found in the LICENSE file.
  4.  
  5. /* Counter accessor for Name Node. */
  6. function getCounterNameFromCounterNode(node) {
  7.   return node.childNodes[1];
  8. }
  9.  
  10. /* Counter accessor for Value Node. */
  11. function getCounterValueFromCounterNode(node) {
  12.   return node.childNodes[3];
  13. }
  14.  
  15. /* Counter accessor for Delta Node. */
  16. function getCounterDeltaFromCounterNode(node) {
  17.   return node.childNodes[5];
  18. }
  19.  
  20. /* Timer accessor for Name Node. */
  21. function getTimerNameFromTimerNode(node) {
  22.   return node.childNodes[1];
  23. }
  24.  
  25. /* Timer accessor for Value Node. */
  26. function getTimerValueFromTimerNode(node) {
  27.   return node.childNodes[3];
  28. }
  29.  
  30. /* Timer accessor for Time Node. */
  31. function getTimerTimeFromTimerNode(node) {
  32.   return node.childNodes[5];
  33. }
  34.  
  35. /* Timer accessor for Average Time Node. */
  36. function getTimerAvgTimeFromTimerNode(node) {
  37.   return node.childNodes[7];
  38. }
  39.  
  40. /* Do the filter work.  Hide all nodes matching node.*/
  41. function filterMatching(text, nodelist, functionToGetNameNode) {
  42.   var showAll = text.length == 0;
  43.   for (var i = 0, node; node = nodelist[i]; i++) {
  44.     var name = functionToGetNameNode(node).innerHTML.toLowerCase();
  45.     if (showAll || name.indexOf(text) >= 0)
  46.       node.style.display = 'table-row';
  47.     else
  48.       node.style.display = 'none';
  49.   }
  50. }
  51.  
  52. /* Hides or shows counters based on the user's current filter selection. */
  53. function doFilter() {
  54.   var filter = $('filter');
  55.   var text = filter.value.toLowerCase();
  56.   var nodes = document.getElementsByName('counter');
  57.   filterMatching(text, nodes, getCounterNameFromCounterNode);
  58.   var nodes = document.getElementsByName('timer');
  59.   filterMatching(text, nodes, getTimerNameFromTimerNode);
  60. }
  61.  
  62. /* Colors the counters based on increasing or decreasing value. */
  63. function doColor() {
  64.   var nodes = document.getElementsByName('counter');
  65.   for (var i = 0, node; node = nodes[i]; i++) {
  66.     var child = getCounterDeltaFromCounterNode(node);
  67.     var delta = child.innerHTML;
  68.     if (delta > 0)
  69.       child.style.color = 'Green';
  70.     else if (delta == 0)
  71.       child.style.color = 'Black';
  72.     else
  73.       child.style.color = 'Red';
  74.   }
  75. }
  76.  
  77. /* Counters with no values are null. Remove them. */
  78. function removeNullValues() {
  79.   var nodes = document.getElementsByName('counter');
  80.   for (var i = nodes.length - 1; i >= 0; i--) {
  81.     var node = nodes[i];
  82.     var value = getCounterValueFromCounterNode(node).innerHTML;
  83.     if (value == 'null')
  84.       node.parentNode.removeChild(node);
  85.   }
  86.   var nodes = document.getElementsByName('timer');
  87.   for (var i = 0, node; node = nodes[i]; i++) {
  88.     var value_node = getTimerValueFromTimerNode(node);
  89.     if (value_node.innerHTML == 'null')
  90.       value_node.innerHTML = '';
  91.   }
  92. }
  93.  
  94. /* Compute the average time for timers */
  95. function computeTimes() {
  96.   var nodes = document.getElementsByName('timer');
  97.   for (var i = 0, node; node = nodes[i]; i++) {
  98.     var count = getTimerValueFromTimerNode(node).innerHTML;
  99.     if (count.length > 0) {
  100.       var time = getTimerTimeFromTimerNode(node).innerHTML;
  101.       var avg = getTimerAvgTimeFromTimerNode(node);
  102.       avg.innerHTML = Math.round(time / count * 100) / 100;
  103.     }
  104.   }
  105. }
  106.  
  107. /* All the work we do onload. */
  108. function onLoadWork() {
  109.   // This is the javascript code that processes the template:
  110.   var input = new JsEvalContext(templateData);
  111.   var output = $('t');
  112.   jstProcess(input, output);
  113.  
  114.   // Add handlers to dynamically created HTML elements.
  115.   var elements = document.getElementsByName('string-sort');
  116.   for (var i = 0; i < elements.length; ++i)
  117.     elements[i].onclick = function() { sort_table('string'); };
  118.  
  119.   elements = document.getElementsByName('number-sort');
  120.   for (i = 0; i < elements.length; ++i)
  121.     elements[i].onclick = function() { sort_table('number'); };
  122.  
  123.   doColor();
  124.   removeNullValues();
  125.   computeTimes();
  126.  
  127.   var filter = $('filter');
  128.   filter.onkeyup = doFilter;
  129.   filter.focus();
  130. }
  131.  
  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:
  134. //  <td onclick="sort('string')" ...>
  135. //
  136. // The function sorts rows after the row with onclick event handler.
  137. //
  138. // type: the data type, 'string', 'number'
  139. function sort_table(type) {
  140.   var cell = event.target;
  141.   var cnum = cell.cellIndex;
  142.  
  143.   var row = cell.parentNode;
  144.   var start_index = row.rowIndex + 1;
  145.  
  146.   var tbody = row.parentNode;
  147.   var table = tbody.parentNode;
  148.  
  149.   var rows = new Array();
  150.  
  151.   var indexes = new Array();
  152.   // skip the first row
  153.   for (var i = start_index; i < table.rows.length; i++)
  154.     rows.push(table.rows[i]);
  155.  
  156.   // a, b are strings
  157.   function compare_strings(a, b) {
  158.     if (a == b) return 0;
  159.     if (a < b) return -1;
  160.     return 1;
  161.   }
  162.  
  163.   // a, b are numbers
  164.   function compare_numbers(a, b) {
  165.     var x = isNaN(a) ? 0 : a;
  166.     var y = isNaN(b) ? 0 : b;
  167.     return x - y;
  168.   }
  169.  
  170.   var sort_func;
  171.   if (type === 'string') {
  172.     sort_func = function(a, b) {
  173.       var x = a.cells[cnum].innerText;
  174.       var y = b.cells[cnum].innerText;
  175.       return compare_strings(x, y);
  176.     };
  177.  
  178.   } else if (type === 'number') {
  179.     sort_func = function(a, b) {
  180.       var x = parseFloat(a.cells[cnum].innerText);
  181.       var y = parseFloat(b.cells[cnum].innerText);
  182.       return compare_numbers(x, y);
  183.     };
  184.   }
  185.  
  186.   rows.sort(sort_func);
  187.  
  188.   // change tables
  189.   if (cell._reverse) {
  190.     for (var i = rows.length - 1; i >= 0; i--)
  191.       tbody.appendChild(rows[i]);
  192.     cell._reverse = false;
  193.   } else {
  194.     for (var i = 0; i < rows.length; i++)
  195.       tbody.appendChild(rows[i]);
  196.     cell._reverse = true;
  197.   }
  198. }
  199.  
  200. document.addEventListener('DOMContentLoaded', onLoadWork);
  201.