Changeset 83902 in webkit


Ignore:
Timestamp:
Apr 14, 2011 3:22:11 PM (13 years ago)
Author:
ojan@chromium.org
Message:

2011-04-14 Ojan Vafai <ojan@chromium.org>

Reviewed by Tony Chang.

sort columns in the new json_results.html file
https://bugs.webkit.org/show_bug.cgi?id=58581

Also fix padding on TDs and the path to layout tests.

  • Scripts/webkitpy/layout_tests/layout_package/json_results.html:
Location:
trunk/Tools
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r83881 r83902  
     12011-04-14  Ojan Vafai  <ojan@chromium.org>
     2
     3        Reviewed by Tony Chang.
     4
     5        sort columns in the new json_results.html file
     6        https://bugs.webkit.org/show_bug.cgi?id=58581
     7
     8        Also fix padding on TDs and the path to layout tests.
     9
     10        * Scripts/webkitpy/layout_tests/layout_package/json_results.html:
     11
    1122011-04-14  Eric Seidel  <eric@webkit.org>
    213
  • trunk/Tools/Scripts/webkitpy/layout_tests/layout_package/json_results.html

    r83799 r83902  
    1414
    1515td {
    16     padding: 0 40px;
     16    padding: 0 4px;
    1717}
    1818
    1919th:empty, td:empty {
    2020    padding: 0;
     21}
     22
     23th {
     24    -webkit-user-select: none;
     25    -moz-user-select: none;
    2126}
    2227</style>
     
    5156
    5257// FIXME: Should this point to the local file instead? Should it dynamically figure out where to point?
    53 // FIXME: remove the version number from the URL if possible.
    54 var test_base_path = 'http://trac.webkit.org/export/76053/trunk/LayoutTests/';
     58var test_base_path = 'http://trac.webkit.org/browser/trunk/LayoutTests/';
    5559
    5660function resultLink(test_prefix, suffix, contents)
     
    5963}
    6064
    61 // FIXME: allow sorting the table by columns
    6265// FIXME: show expected/actual/diff contents inline in iframes
    6366// FIXME: allow zooming in on pixel diffs
     
    6871var hasImageFailures = false;
    6972
     73html += '<tbody>';
    7074for (var test in results.tests) {
    7175  var row = '<td><a href="' + test_base_path + test + '">' + test + '</a></td>';
     
    103107}
    104108
     109html += '</tbody></table>'
    105110document.write(html);
     111
     112function toArray(nodeList)
     113{
     114    return Array.prototype.slice.call(nodeList);
     115}
     116
     117function trim(string)
     118{
     119    return string.replace(/^[\s\xa0]+|[\s\xa0]+$/g, '');
     120}
     121
     122// Just a namespace for code management.
     123var TableSorter = {};
     124
     125TableSorter._forwardArrow = '<svg style="width:10px;height:10px"><polygon points="0,0 10,0 5,10" style="fill:#aaa"></svg>';
     126
     127TableSorter._backwardArrow = '<svg style="width:10px;height:10px"><polygon points="0,10 10,10 5,0" style="fill:#aaa"></svg>';
     128
     129TableSorter._sortedContents = function(header, arrow)
     130{
     131    return arrow + ' ' + trim(header.textContent) + ' ' + arrow;
     132}
     133
     134TableSorter._updateHeaderClassNames = function(newHeader)
     135{
     136    var sortHeader = document.querySelector('.sortHeader');
     137    if (sortHeader) {
     138        if (sortHeader == newHeader) {
     139            var isAlreadyReversed = sortHeader.classList.contains('reversed');
     140            if (isAlreadyReversed)
     141                sortHeader.classList.remove('reversed');
     142            else
     143                sortHeader.classList.add('reversed');
     144        } else {
     145            sortHeader.textContent = sortHeader.textContent;
     146            sortHeader.classList.remove('sortHeader');
     147            sortHeader.classList.remove('reversed');
     148        }
     149    }
     150
     151    newHeader.classList.add('sortHeader');
     152}
     153
     154TableSorter._sortRows = function(newHeader, reversed)
     155{
     156    var testsTable = document.querySelector('table');
     157    var headers = toArray(testsTable.querySelectorAll('th'));
     158    var sortColumn = headers.indexOf(newHeader);
     159
     160    var tbody = testsTable.querySelector('tbody');
     161    var rows = toArray(tbody.querySelectorAll('tr'));
     162
     163    rows.sort(function(a, b) {
     164        // Only need to support lexicographic sort for now.
     165        var aText = a.childNodes[sortColumn].textContent;
     166        var bText = b.childNodes[sortColumn].textContent;
     167        if (reversed)
     168            return aText < bText;
     169        else
     170            return bText < aText;
     171    });
     172
     173    for (var i = 0; i < rows.length; i++)
     174        tbody.appendChild(rows[i]);
     175}
     176
     177TableSorter.handleClick = function(e)
     178{
     179    var newHeader = e.target;
     180    if (newHeader.localName != 'th')
     181        return;
     182   
     183    TableSorter._updateHeaderClassNames(newHeader);
     184   
     185    var reversed = newHeader.classList.contains('reversed');
     186    var sortArrow = reversed ? TableSorter._backwardArrow : TableSorter._forwardArrow;
     187    newHeader.innerHTML = TableSorter._sortedContents(newHeader, sortArrow);
     188   
     189    TableSorter._sortRows(newHeader, reversed);
     190}
     191
     192document.querySelector('table').addEventListener('click', TableSorter.handleClick, false);
    106193
    107194if (!hasTextFailures)
Note: See TracChangeset for help on using the changeset viewer.