Index: wikibits.js =================================================================== --- wikibits.js (revision 40285) +++ wikibits.js (working copy) @@ -618,6 +618,8 @@ sortfn = ts_sort_currency; if (itm.match(/^[\d.,]+\%?$/)) sortfn = ts_sort_numeric; + if (itm.match(/^[\d\.\,]+\s*[\/]\s*[\d\.\,]+$/)) + sortfn = ts_sort_fraction; var reverse = (span.getAttribute("sortdir") == 'down'); @@ -729,6 +731,29 @@ return (aa != bb ? aa - bb : a[2] - b[2]); } +function ts_sort_fraction(a, b) { + a[1] = a[1].replace(/\s+/g, ''); + b[1] = b[1].replace(/\s+/g, ''); + var aa1 = a[1].match(/^[\d\.\,]+[\/]/)[0].replace(/[\/]/, ''); + var aa2 = a[1].match(/[\/][\d\.\,]+$/)[0].replace(/[\/]/, ''); + var bb1 = b[1].match(/^[\d\.\,]+[\/]/)[0].replace(/[\/]/, ''); + var bb2 = b[1].match(/[\/][\d\.\,]+$/)[0].replace(/[\/]/, ''); + if (ts_europeandate == true) { + aa1 = aa1.replace(/\./g, ''); + aa2 = aa2.replace(/\./g, ''); + bb1 = bb1.replace(/\./g, ''); + bb2 = bb2.replace(/\./g, ''); + } else { + aa1 = aa1.replace(/\,/g, ''); + aa2 = aa2.replace(/\,/g, ''); + bb1 = bb1.replace(/\,/g, ''); + bb2 = bb2.replace(/\,/g, ''); + } + var aa = parseFloat(aa1) / parseFloat(aa2); + var bb = parseFloat(bb1) / parseFloat(bb2); + return (aa != bb ? aa - bb : a[2] - b[2]); +} + function ts_sort_caseinsensitive(a,b) { var aa = a[1].toLowerCase(); var bb = b[1].toLowerCase();