jquery.tablesorter: References ignored in sortkey.
authormadd <Matthias_K2@gmx.de>
Sun, 22 Apr 2018 13:52:03 +0000 (15:52 +0200)
committerTheDJ <hartman.wiki@gmail.com>
Mon, 23 Apr 2018 13:29:42 +0000 (13:29 +0000)
Text in elements with class='reference' excluded for sorting.

Bug: T29745
Change-Id: If3969c00cbb7a74362fe85f4cad361da488526d5

resources/src/jquery/jquery.tablesorter.js
tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js

index 8aa22a8..e9d5a91 100644 (file)
                }
                return $.makeArray( node.childNodes ).map( function ( elem ) {
                        if ( elem.nodeType === Node.ELEMENT_NODE ) {
-                               return getElementSortKey( elem );
+                               if ( $( elem ).hasClass( 'reference' ) ) {
+                                       return null;
+                               } else {
+                                       return getElementSortKey( elem );
+                               }
                        }
                        return $.text( elem );
                } ).join( '' );
index 23ef26f..74caf5c 100644 (file)
                        'detectParserForColumn() detect parser.id "number" for second column'
                );
        } );
+       QUnit.test( 'T29745 - References ignored in sortkey', function ( assert ) {
+               var $table, parsers;
+               $table = $(
+                       '<table class="sortable">' +
+                               '<tr><th>A</th></tr>' +
+                               '<tr><td>10</td></tr>' +
+                               '<tr><td>2<sup class="reference"><a href="#cite_note-1">[1]</a></sup></td></tr>' +
+                               '</table>'
+               );
+               $table.tablesorter();
+               $table.find( '.headerSort:eq(0)' ).click();
+
+               assert.deepEqual(
+                       tableExtract( $table ),
+                       [
+                               [ '2[1]' ],
+                               [ '10' ]
+                       ],
+                       'References ignored in sortkey'
+               );
+
+               parsers = $table.data( 'tablesorter' ).config.parsers;
+               assert.equal(
+                       parsers[ 0 ].id,
+                       'number',
+                       'detectParserForColumn() detect parser.id "number"'
+               );
+       } );
 
 }( jQuery, mediaWiki ) );