Merge "jquery.tablesorter: use of expand-child class"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Tue, 13 Oct 2015 19:55:12 +0000 (19:55 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 13 Oct 2015 19:55:12 +0000 (19:55 +0000)
resources/src/jquery/jquery.tablesorter.js
tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js

index 69f8dd8..f8216c9 100644 (file)
 
        function detectParserForColumn( table, rows, column ) {
                var l = parsers.length,
+                       config = $( table ).data( 'tablesorter' ).config,
                        cellIndex,
                        nodeValue,
                        // Start with 1 because 0 is the fallback parser
                        needed = ( rows.length > 4 ) ? 5 : rows.length;
 
                while ( i < l ) {
-                       if ( rows[ rowIndex ] ) {
+                       // if this is a child row, continue to the next row (as buildCache())
+                       if ( rows[ rowIndex ] && !$( rows[ rowIndex ] ).hasClass( config.cssChildRow ) ) {
                                if ( rowIndex !== lastRowIndex ) {
                                        lastRowIndex = rowIndex;
                                        cellIndex = $( rows[ rowIndex ] ).data( 'columnToCell' )[ column ];
index 6805eab..b09bb28 100644 (file)
                        0,
                        'empty cell is sorted as number 0'
                );
+       } );
 
+       QUnit.test( 'bug T114721 - use of expand-child class', 2, function ( assert ) {
+               var $table, parsers;
+               $table = $(
+                       '<table class="sortable">' +
+                               '<tr><th>A</th><th>B</th></tr>' +
+                               '<tr><td>b</td><td>4</td></tr>' +
+                               '<tr class="expand-child"><td colspan="2">some text follow b</td></tr>' +
+                               '<tr><td>a</td><td>2</td></tr>' +
+                               '<tr class="expand-child"><td colspan="2">some text follow a</td></tr>' +
+                               '<tr class="expand-child"><td colspan="2">more text</td></tr>' +
+                               '</table>'
+               );
+               $table.tablesorter();
+               $table.find( '.headerSort:eq(0)' ).click();
+
+               assert.deepEqual(
+                       tableExtract( $table ),
+                       [
+                               [ 'a', '2' ],
+                               [ 'some text follow a' ],
+                               [ 'more text' ],
+                               [ 'b', '4' ],
+                               [ 'some text follow b' ]
+                       ],
+                       'row with expand-child class follow above row'
+               );
+
+               parsers = $table.data( 'tablesorter' ).config.parsers;
+               assert.equal(
+                       parsers[ 1 ].id,
+                       'number',
+                       'detectParserForColumn() detect parser.id "number" for second column'
+               );
        } );
+
 }( jQuery, mediaWiki ) );