Adding rowspan tests to tablesorting & make it more stable
authorLeo Koppelkamm <diebuche@users.mediawiki.org>
Thu, 23 Jun 2011 08:31:00 +0000 (08:31 +0000)
committerLeo Koppelkamm <diebuche@users.mediawiki.org>
Thu, 23 Jun 2011 08:31:00 +0000 (08:31 +0000)
resources/jquery/jquery.tablesorter.js
tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js

index 808cf6b..75c2520 100644 (file)
                                        var cell = $( this );
                                        var next = cell.parent().nextAll();
                                        for ( var i = 0; i < rowSpan - 1; i++ ) {
-                                               next.eq(0).find( 'td' ).eq( this.cellIndex ).before( cell.clone() );
+                                               var td = next.eq( i ).find( 'td' );
+                                               if ( !td.length ) {
+                                                       next.eq( i ).append( cell.clone() );
+                                               } else if ( this.cellIndex == 0 ) {
+                                                       td.eq( this.cellIndex ).before( cell.clone() );
+                                               } else {
+                                                       td.eq( this.cellIndex - 1 ).after( cell.clone() );
+                                               }
                                        }
                                });
                        }
index e9c075b..e96898c 100644 (file)
@@ -292,7 +292,21 @@ tableTest(
        }
 );
 
+var planetsRowspan  =[["Earth","6051.8"], jupiter, ["Mars","6051.8"], mercury, saturn, venus];
 
+tableTest(
+       'Basic planet table: Same value for multiple rows via rowspan',
+       header,
+       planets,
+       planetsRowspan,
+       function( $table ) {
+               //Quick&Dirty mod
+               $table.find('tr:eq(3) td:eq(1), tr:eq(4) td:eq(1)').remove();
+               $table.find('tr:eq(2) td:eq(1)').attr('rowspan', '3');
+               $table.tablesorter();
+               $table.find('.headerSort:eq(0)').click();
+       }
+);