https://www.mediawiki.org/wiki/Special:Code/MediaWiki/111884
Revision: 111884
Author: hartman
Date: 2012-02-19 19:56:56 +0000 (Sun, 19 Feb 2012)
Log Message:
-----------
Add support for sorting fractions in jquery.tablesorter
Fixes bug 15404
Modified Paths:
--------------
trunk/phase3/RELEASE-NOTES-1.20
trunk/phase3/resources/jquery/jquery.tablesorter.js
trunk/phase3/tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js
Modified: trunk/phase3/RELEASE-NOTES-1.20
===================================================================
--- trunk/phase3/RELEASE-NOTES-1.20 2012-02-19 19:47:27 UTC (rev 111883)
+++ trunk/phase3/RELEASE-NOTES-1.20 2012-02-19 19:56:56 UTC (rev 111884)
@@ -21,6 +21,7 @@
contentSub, ... The same div often also contains the class
mw-content-ltr/rtl.
* (bug 34475) Add support for IP/CIDR notation to tablesorter
* (bug 27619) Remove preference option to display broken links as link?
+* (bug 15404) Add support for sorting fractions in jquery.tablesorter
=== Bug fixes in 1.20 ===
* (bug 30245) Use the correct way to construct a log page title.
Modified: trunk/phase3/resources/jquery/jquery.tablesorter.js
===================================================================
--- trunk/phase3/resources/jquery/jquery.tablesorter.js 2012-02-19 19:47:27 UTC
(rev 111883)
+++ trunk/phase3/resources/jquery/jquery.tablesorter.js 2012-02-19 19:56:56 UTC
(rev 111884)
@@ -402,12 +402,13 @@
digits.push( $.escapeRE( localised[i] ) );
}
}
- var digitClass = '[' + digits.join( '', digits ) + ']';
+ ts.digitClass = '[' + digits.join( '', digits ) + ']';
// We allow a trailing percent sign, which we just strip. This
works fine
// if percents and regular numbers aren't being mixed.
ts.numberRegex = new RegExp("^(" +
"[-+\u2212]?[0-9][0-9,]*(\\.[0-9,]*)?(E[-+\u2212]?[0-9][0-9,]*)?" + //
Fortran-style scientific
- "|" + "[-+\u2212]?" + digitClass + "+[\\s\\xa0]*%?" + //
Generic localised
+ "|" + "[-+\u2212]?" + ts.digitClass + "+[\\s\\xa0]*%?" + //
Generic localised
+ "|([-+\u2212]?" + ts.digitClass + "+[\\s\\xa0]+)*" +
ts.digitClass + "+[\\s\\xa0]*[\\/][\\s\\xa0]*" + ts.digitClass + "+" + //
Fractions
")$", "i");
}
@@ -502,6 +503,9 @@
],
time: [
new RegExp(
/^(([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(am|pm)))$/)
+ ],
+ fractions: [
+ new RegExp( "^(?:([-+\u2212]?" + ts.digitClass
+ "+)[\\s\\xa0]+)*(" + ts.digitClass + "+)[\\s\\xa0]*[\\/][\\s\\xa0]*(" +
ts.digitClass + "+)" )
]
};
}
@@ -909,6 +913,19 @@
return $.tablesorter.numberRegex.test( $.trim( s ));
},
format: function( s ) {
+ var values = ts.rgx.fractions[0].exec($.trim(s));
+ if( values != null ) {
+ // A fraction
+ var retVal = 0;
+ var decimal =
$.tablesorter.formatDigit(values[2]) / $.tablesorter.formatDigit(values[3]);
+ if( values[1] != undefined ) {
+ retVal =
$.tablesorter.formatDigit(values[1]);
+ }
+ if( !isNaN(decimal) && isFinite(decimal) ) {
+ retVal += decimal;
+ }
+ return retVal;
+ }
return $.tablesorter.formatDigit(s);
},
type: 'numeric'
Modified:
trunk/phase3/tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js
===================================================================
--- trunk/phase3/tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js
2012-02-19 19:47:27 UTC (rev 111883)
+++ trunk/phase3/tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js
2012-02-19 19:56:56 UTC (rev 111884)
@@ -575,6 +575,47 @@
);
// TODO add numbers sorting tests for bug 8115 with a different language
+var fractions = [
+ [ '56' ],
+ [ '1 3/8' ],
+ [ '4 7/8' ],
+ [ '2,000 1/6' ],
+ [ '4 1/8' ],
+ [ '-4 1/8' ],
+ [ '−5 1/8' ],
+ [ '56 45/500' ],
+ [ '56 100/500' ],
+ [ '100 / 500' ]
+];
+var fractionsAsc = [
+ [ '−5 1/8' ],
+ [ '-4 1/8' ],
+ [ '100 / 500' ],
+ [ '1 3/8' ],
+ [ '4 1/8' ],
+ [ '4 7/8' ],
+ [ '56' ],
+ [ '56 45/500' ],
+ [ '56 100/500' ],
+ [ '2,000 1/6' ]
+];
+
+tableTest( 'sort fractional numbers in all sorts and forms (ascending)',
+ ['Fractional numbers'], fractions, fractionsAsc,
+ function( $table ) {
+ $table.tablesorter();
+ $table.find( '.headerSort:eq(0)' ).click();
+ }
+);
+
+tableTest( 'sort fractional numbers in all sorts and forms (descending)',
+ ['Fractional numbers'], fractions, reversed(fractionsAsc),
+ function( $table ) {
+ $table.tablesorter();
+ $table.find( '.headerSort:eq(0)' ).click().click();
+ }
+);
+
test( 'bug 32888 - Tables inside a tableheader cell', function() {
expect(2);
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs