From 3150661c27a751df2b7d25f53d5f2592365131c5 Mon Sep 17 00:00:00 2001 From: MatthiasDD Date: Sat, 10 Oct 2015 23:20:51 +0200 Subject: [PATCH] jquery.tablesorter: use of expand-child class Rows with class expand-child are now skipped in detectParserForColumn(). This is necessary after change I5180296. Add a test for expand-child class. Bug: T114721 Change-Id: I88a01208889fbb461b1f42855ed6494d479440fa --- resources/src/jquery/jquery.tablesorter.js | 4 ++- .../jquery/jquery.tablesorter.test.js | 35 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/resources/src/jquery/jquery.tablesorter.js b/resources/src/jquery/jquery.tablesorter.js index 0eefae6c90..4a785882ce 100644 --- a/resources/src/jquery/jquery.tablesorter.js +++ b/resources/src/jquery/jquery.tablesorter.js @@ -107,6 +107,7 @@ 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 @@ -118,7 +119,8 @@ 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 ]; diff --git a/tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js b/tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js index 6805eabc23..b09bb2825b 100644 --- a/tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js +++ b/tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js @@ -1423,6 +1423,41 @@ 0, 'empty cell is sorted as number 0' ); + } ); + QUnit.test( 'bug T114721 - use of expand-child class', 2, function ( assert ) { + var $table, parsers; + $table = $( + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
AB
b4
some text follow b
a2
some text follow a
more text
' + ); + $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 ) ); -- 2.20.1