Add sorting methods from the DataTables sorting plug-ins page

Code updated to use $.extend - a bit cleaner
pull/2/head
Allan Jardine 13 years ago
parent 7d26f1a918
commit 0bba914d8b

BIN
sorting/.DS_Store vendored

Binary file not shown.

@ -0,0 +1,23 @@
/**
* Sort on the 'alt' tag of images in a column. This is particularly useful if
* you have a column of images (ticks and crosses for example) and you want to
* control the sorting using the alt tag.
* @name Alt string
* @author <i>Jumpy</i>
*/
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
"alt-string-asc": function( a, b ) {
var x = a.match(/alt="(.*?)"/)[1].toLowerCase();
var y = b.match(/alt="(.*?)"/)[1].toLowerCase();
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
},
"alt-string-desc": function(a,b) {
var x = a.match(/alt="(.*?)"/)[1].toLowerCase();
var y = b.match(/alt="(.*?)"/)[1].toLowerCase();
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
}
} );

@ -0,0 +1,24 @@
/**
* Often a list of data which has titles in it (books, albums etc) will have
* the word "the" at the start of some individual titles, which you don't want
* to include in your sorting order. This plug-in will strip the word "the"
* from the start of a string and sort on what is left.
* @name Anti-"the"
* @author <a href="http://sprymedia.co.uk">Allan Jardine</a>
*/
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
"anti-the-asc": function ( a, b ) {
var x = a.replace(/^the /i, "");
var y = b.replace(/^the /i, "");
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
},
"anti-the-desc": function ( a, b ) {
var x = a.replace(/^the /i, "");
var y = b.replace(/^the /i, "");
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
}
} );

@ -0,0 +1,31 @@
/**
* This plug-in will provide numeric sorting for currency columns (either
* detected automatically with the currency type detection plug-in or set
* manually) while taking account of the currency symbol ($ or £ by default).
* @name Currency
* @author <a href="http://sprymedia.co.uk">Allan Jardine</a>
*/
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
"currency-asc": function ( a, b ) {
/* Remove any formatting */
var x = a == "-" ? 0 : a.replace( /[^\d\-\.]/g, "" );
var y = b == "-" ? 0 : b.replace( /[^\d\-\.]/g, "" );
/* Parse and return */
x = parseFloat( x );
y = parseFloat( y );
return x - y;
},
"currency-desc": function ( a, b ) {
var x = a == "-" ? 0 : a.replace( /[^\d\-\.]/g, "" );
var y = b == "-" ? 0 : b.replace( /[^\d\-\.]/g, "" );
x = parseFloat( x );
y = parseFloat( y );
return y - x;
}
} );

@ -0,0 +1,15 @@
/**
* Read information from a column of checkboxes (input elements with type
* checkbox) and return an array to use as a basis for sorting.
* @name Checkbox data source
* @author <a href="http://sprymedia.co.uk">Allan Jardine</a>
*/
$.fn.dataTableExt.afnSortData['dom-checkbox'] = function ( oSettings, iColumn )
{
var aData = [];
$( 'td:eq('+iColumn+') input', oSettings.oApi._fnGetTrNodes(oSettings) ).each( function () {
aData.push( this.checked==true ? "1" : "0" );
} );
return aData;
};

@ -0,0 +1,15 @@
/**
* Read information from a column of select (drop down) menus and return an
* array to use as a basis for sorting.
* @name Select menu data source
* @author <a href="http://sprymedia.co.uk">Allan Jardine</a>
*/
$.fn.dataTableExt.afnSortData['dom-select'] = function ( oSettings, iColumn )
{
var aData = [];
$( 'td:eq('+iColumn+') select', oSettings.oApi._fnGetTrNodes(oSettings) ).each( function () {
aData.push( $(this).val() );
} );
return aData;
};

@ -0,0 +1,15 @@
/**
* Read information from a column of input (type text) elements and return an
* array to use as a basis for sorting.
* @name Input element data source
* @author <a href="http://sprymedia.co.uk">Allan Jardine</a>
*/
$.fn.dataTableExt.afnSortData['dom-text'] = function ( oSettings, iColumn )
{
var aData = [];
$( 'td:eq('+iColumn+') input', oSettings.oApi._fnGetTrNodes(oSettings) ).each( function () {
aData.push( this.value );
} );
return aData;
};

@ -0,0 +1,60 @@
/**
* Similar to the Date (dd/mm/YY) data sorting plug-in, this plug-in offers
* additional flexibility with support for spaces between the values and
* either . or / notation for the separators.
* @name Date (dd . mm[ . YYYY])
* @author <a href="http://galjot.si/">Robert Sedovšek</a>
*/
(function(){
function calculate_date(date) {
var date = date.replace(" ", "");
if (date.indexOf('.') > 0) {
/*date a, format dd.mn.(yyyy) ; (year is optional)*/
var eu_date = date.split('.');
} else {
/*date a, format dd/mn/(yyyy) ; (year is optional)*/
var eu_date = date.split('/');
}
/*year (optional)*/
if (eu_date[2]) {
var year = eu_date[2];
} else {
var year = 0;
}
/*month*/
var month = eu_date[1];
if (month.length == 1) {
month = 0+month;
}
/*day*/
var day = eu_date[0];
if (day.length == 1) {
day = 0+day;
}
return (year + month + day) * 1;
}
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
"date-eu-asc": function ( a, b ) {
x = calculate_date(a);
y = calculate_date(b);
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
},
"date-eu-desc": function ( a, b ) {
x = calculate_date(a);
y = calculate_date(b);
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
}
} );
}());

@ -0,0 +1,54 @@
/**
* This plug-in will provide date sorting for the "dd/mm/YYY hh:ii:ss"
* formatting, which is common in France and other European countries. It can
* also be quickly adapted for other formatting as required. Furthermore, this
* date sorting plug-in allows for empty values in the column.
* @name Date (dd/mm/YYY hh:ii:ss)
* @author <a href="http://coolforest.net/">Ronan Guilloux</a>
*/
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
"date-euro-asc": function ( a, b ) {
if ($.trim(a) != '') {
var frDatea = $.trim(a).split(' ');
var frTimea = frDatea[1].split(':');
var frDatea2 = frDatea[0].split('/');
var x = (frDatea2[2] + frDatea2[1] + frDatea2[0] + frTimea[0] + frTimea[1] + frTimea[2]) * 1;
} else {
var x = 10000000000000; // = l'an 1000 ...
}
if ($.trim(b) != '') {
var frDateb = $.trim(b).split(' ');
var frTimeb = frDateb[1].split(':');
frDateb = frDateb[0].split('/');
var y = (frDateb[2] + frDateb[1] + frDateb[0] + frTimeb[0] + frTimeb[1] + frTimeb[2]) * 1;
} else {
var y = 10000000000000;
}
var z = ((x < y) ? -1 : ((x > y) ? 1 : 0));
return z;
},
"date-euro-desc": function ( a, b ) {
if ($.trim(a) != '') {
var frDatea = $.trim(a).split(' ');
var frTimea = frDatea[1].split(':');
var frDatea2 = frDatea[0].split('/');
var x = (frDatea2[2] + frDatea2[1] + frDatea2[0] + frTimea[0] + frTimea[1] + frTimea[2]) * 1;
} else {
var x = 10000000000000;
}
if ($.trim(b) != '') {
var frDateb = $.trim(b).split(' ');
var frTimeb = frDateb[1].split(':');
frDateb = frDateb[0].split('/');
var y = (frDateb[2] + frDateb[1] + frDateb[0] + frTimeb[0] + frTimeb[1] + frTimeb[2]) * 1;
} else {
var y = 10000000000000;
}
var z = ((x < y) ? 1 : ((x > y) ? -1 : 0));
return z;
}
} );

@ -0,0 +1,32 @@
/**
* DataTables internal date sorting replies on Date.parse() which is part of
* the Javascript language, but you may wish to sort on dates which is doesn't
* recognise. The following is a plug-in for sorting dates in the format
* dd/mm/yy.
*
* An automatic type detection plug-in is available for this sorting plug-in.
* @name Date (dd/mm/YY)
* @author Andy McMaster
*/
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
"date-uk-asc": function ( a, b ) {
var ukDatea = a.split('/');
var ukDateb = b.split('/');
var x = (ukDatea[2] + ukDatea[1] + ukDatea[0]) * 1;
var y = (ukDateb[2] + ukDateb[1] + ukDateb[0]) * 1;
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
},
"date-uk-desc": function ( a, b ) {
var ukDatea = a.split('/');
var ukDateb = b.split('/');
var x = (ukDatea[2] + ukDatea[1] + ukDatea[0]) * 1;
var y = (ukDateb[2] + ukDateb[1] + ukDateb[0]) * 1;
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
}
} );

@ -0,0 +1,38 @@
/**
* Sort by priority through an enumerated list. In this case the words 'High',
* 'Medium' and 'Low' are used and thus sorted in priority order. This works
* by converting the works to a numerical value and then sorting based on that
* value.
* @name enum
* @author <a href="http://sprymedia.co.uk">Allan Jardine</a>
*/
(function() {
function priority( a ) {
// Add / alter the switch statement below to match your enum list
switch( a ) {
case "High": return 1;
case "Medium": return 2;
case "Low": return 3;
default: return 4;
}
}
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
"enum-asc": function ( a, b ) {
var x = priority( a );
var y = priority( b );
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
},
"enum-desc": function ( a, b ) {
var x = priority( a );
var y = priority( b );
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
}
} );
}());

@ -0,0 +1,41 @@
/**
* When dealing with computer file sizes, it is common to append a post fix
* such as KB, MB or GB to a string in order to easily denote the order of
* magnitude of the file size. This plug-in allows sorting to take these
* indicates of size into account. A counterpart type detection plug-in
* is also available.
* @name File size
* @author <i>anjibman</i>
*/
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
"file-size-asc": function ( a, b ) {
var x = a.substring(0,a.length - 2);
var y = b.substring(0,b.length - 2);
var x_unit = (a.substring(a.length - 2, a.length) == "MB" ?
1000 : (a.substring(a.length - 2, a.length) == "GB" ? 1000000 : 1));
var y_unit = (b.substring(b.length - 2, b.length) == "MB" ?
1000 : (b.substring(b.length - 2, b.length) == "GB" ? 1000000 : 1));
x = parseInt( x * x_unit );
y = parseInt( y * y_unit );
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
},
"file-size-desc": function ( a, b ) {
var x = a.substring(0,a.length - 2);
var y = b.substring(0,b.length - 2);
var x_unit = (a.substring(a.length - 2, a.length) == "MB" ?
1000 : (a.substring(a.length - 2, a.length) == "GB" ? 1000000 : 1));
var y_unit = (b.substring(b.length - 2, b.length) == "MB" ?
1000 : (b.substring(b.length - 2, b.length) == "GB" ? 1000000 : 1));
x = parseInt( x * x_unit);
y = parseInt( y * y_unit);
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
}
} );

@ -0,0 +1,62 @@
/**
* Sorts a column containing IP addresses in typical dot notation. This can
* be most useful when using DataTables for a networking application, and
* reporting information containing IP address. Also has a matching type
* detection plug-in for automatic type detection.
* @name IP addresses
* @author Brad Wasson
*/
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
"ip-address-asc": function ( a, b ) {
var m = a.split("."), x = "";
var n = b.split("."), y = "";
for(var i = 0; i < m.length; i++) {
var item = m[i];
if(item.length == 1) {
x += "00" + item;
} else if(item.length == 2) {
x += "0" + item;
} else {
x += item;
}
}
for(var i = 0; i < n.length; i++) {
var item = n[i];
if(item.length == 1) {
y += "00" + item;
} else if(item.length == 2) {
y += "0" + item;
} else {
y += item;
}
}
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
},
"ip-address-desc": function ( a, b ) {
var m = a.split("."), x = "";
var n = b.split("."), y = "";
for(var i = 0; i < m.length; i++) {
var item = m[i];
if(item.length == 1) {
x += "00" + item;
} else if (item.length == 2) {
x += "0" + item;
} else {
x += item;
}
}
for(var i = 0; i < n.length; i++) {
var item = n[i];
if(item.length == 1) {
y += "00" + item;
} else if (item.length == 2) {
y += "0" + item;
} else {
y += item;
}
}
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
}
} );

@ -0,0 +1,22 @@
/**
* Often a list of data which has titles in it (books, albums etc) will have
* the word "the" at the start of some individual titles, which you don't want
* to include in your sorting order. This plug-in will strip the word "the"
* from the start of a string and sort on what is left.
* @name Month / year sorting
* @author Michael Motek
*/
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
"monthYear-asc": function ( a, b ) {
a = new Date('01 '+a);
b = new Date('01 '+b);
return ((a < b) ? -1 : ((a > b) ? 1 : 0));
},
"monthYear-desc": function ( a, b ) {
a = new Date('01 '+a);
b = new Date('01 '+b);
return ((a < b) ? 1 : ((a > b) ? -1 : 0));
}
} );

@ -0,0 +1,65 @@
/**
* Often a list of data which has titles in it (books, albums etc) will have
* the word "the" at the start of some individual titles, which you don't want
* to include in your sorting order. This plug-in will strip the word "the"
* from the start of a string and sort on what is left.
* @name Natural sorting
* @author <a href="http://www.overset.com/2008/09/01/javascript-natural-sort-algorithm/">Jim Palmer</a>
*/
(function() {
/*
* Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license
* Author: Jim Palmer (based on chunking idea from Dave Koelle)
* Contributors: Mike Grier (mgrier.com), Clint Priest, Kyle Adams, guillermo
* See: http://js-naturalsort.googlecode.com/svn/trunk/naturalSort.js
*/
function naturalSort (a, b) {
var re = /(^-?[0-9]+(\.?[0-9]*)[df]?e?[0-9]?$|^0x[0-9a-f]+$|[0-9]+)/gi,
sre = /(^[ ]*|[ ]*$)/g,
dre = /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,
hre = /^0x[0-9a-f]+$/i,
ore = /^0/,
// convert all to strings and trim()
x = a.toString().replace(sre, '') || '',
y = b.toString().replace(sre, '') || '',
// chunk/tokenize
xN = x.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'),
yN = y.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'),
// numeric, hex or date detection
xD = parseInt(x.match(hre)) || (xN.length != 1 && x.match(dre) && Date.parse(x)),
yD = parseInt(y.match(hre)) || xD && y.match(dre) && Date.parse(y) || null;
// first try and sort Hex codes or Dates
if (yD)
if ( xD < yD ) return -1;
else if ( xD > yD ) return 1;
// natural sorting through split numeric strings and default strings
for(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) {
// find floats not starting with '0', string or 0 if not defined (Clint Priest)
oFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0;
oFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0;
// handle numeric vs string comparison - number < string - (Kyle Adams)
if (isNaN(oFxNcL) !== isNaN(oFyNcL)) return (isNaN(oFxNcL)) ? 1 : -1;
// rely on string comparison if different types - i.e. '02' < 2 != '02' < '2'
else if (typeof oFxNcL !== typeof oFyNcL) {
oFxNcL += '';
oFyNcL += '';
}
if (oFxNcL < oFyNcL) return -1;
if (oFxNcL > oFyNcL) return 1;
}
return 0;
}
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
"natural-asc": function ( a, b ) {
return naturalSort(a,b);
},
"natural-desc": function ( a, b ) {
return naturalSort(a,b) * -1;
}
} );
}());

@ -0,0 +1,29 @@
/**
* This sorting plug-in allows for HTML tags with numeric data. With the 'html'
* type it will strip the HTML and then sorts by strings, with this type it
* strips the HTML and then sorts by numbers. Note also that this sorting
* plug-in has an equivalent type detection plug-in which can make integration
* easier.
* @name Numbers with HTML
* @author <a href="http://sprymedia.co.uk">Allan Jardine</a>
*/
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
"num-html-asc": function ( a, b ) {
var x = a.replace( /<.*?>/g, "" );
var y = b.replace( /<.*?>/g, "" );
x = parseFloat( x );
y = parseFloat( y );
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
},
"num-html-desc": function ( a, b ) {
var x = a.replace( /<.*?>/g, "" );
var y = b.replace( /<.*?>/g, "" );
x = parseFloat( x );
y = parseFloat( y );
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
}
} );

@ -0,0 +1,28 @@
/**
* It is not uncommon for non-English speaking countries to use a comma for a
* decimal place. This sorting plug-in shows how that can be taken account of in
* sorting by adding the type 'numeric-comma' to DataTables. A type detection
* plug-in for this sorting method is provided below.
* @name Commas for decimal place
* @author <a href="http://sprymedia.co.uk">Allan Jardine</a>
*/
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
"numeric-comma-asc": function ( a, b ) {
var x = (a == "-") ? 0 : a.replace( /,/, "." );
var y = (b == "-") ? 0 : b.replace( /,/, "." );
x = parseFloat( x );
y = parseFloat( y );
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
},
"numeric-comma-desc": function ( a, b ) {
var x = (a == "-") ? 0 : a.replace( /,/, "." );
var y = (b == "-") ? 0 : b.replace( /,/, "." );
x = parseFloat( x );
y = parseFloat( y );
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
}
} );

@ -0,0 +1,25 @@
/**
* Sort numeric data which has a percent sign with it.
* @name Percentage
* @author <a href="http://jonathanromley.org/">Jonathan Romley</a>
*/
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
"percent-asc": function ( a, b ) {
var x = (a == "-") ? 0 : a.replace( /%/, "" );
var y = (b == "-") ? 0 : b.replace( /%/, "" );
x = parseFloat( x );
y = parseFloat( y );
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
},
"percent-desc": function ( a, b ) {
var x = (a == "-") ? 0 : a.replace( /%/, "" );
var y = (b == "-") ? 0 : b.replace( /%/, "" );
x = parseFloat( x );
y = parseFloat( y );
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
}
} );

@ -0,0 +1,50 @@
/**
* Sorting in Javascript can be difficult to get right with non-Roman
* characters - for which special consideration must be made. This plug-in
* performs correct sorting on Persian characters.
* @name Persian
* @author <a href="http://www.afshinblog.com/">Afshin Mehrabani</a>
*/
(function(){
var persianSort = [ 'آ', 'ا', 'ب', 'پ', 'ت', 'ث', 'ج', 'چ', 'ح', 'خ', 'د', 'ذ', 'ر', 'ز', 'ژ',
'س', 'ش', 'ص', 'ط', 'ظ', 'ع', 'غ', 'ف', 'ق', 'ک', 'گ', 'ل', 'م', 'ن', 'و', 'ه', 'ی', 'ي' ];
function GetUniCode(source) {
source = $.trim(source);
result = '';
for (i = 0; i < source.length; i++) {
//Check and fix IE indexOf bug
if (!Array.indexOf) {
var index = jQuery.inArray(source.charAt(i), persianSort);
}else{
var index = persianSort.indexOf(source.charAt(i));
}
if (index < 0) {
index = source.charCodeAt(i);
}
if (index < 10)
index = '0' + index;
result += '00' + index;
}
return 'a' + result;
};
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
"pstring-asc": function ( a, b ) {
var x = GetUniCode(a.toLowerCase());
var y = GetUniCode(b.toLowerCase());
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
},
"pstring-desc": function ( a, b ) {
var x = GetUniCode(a.toLowerCase());
var y = GetUniCode(b.toLowerCase());
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
}
} );
}());

@ -0,0 +1,22 @@
/**
* This plug-in will treat numbers which are in scientific notation (for
* example 1E-10, 1.2E6 etc) and sort them numerically.
* @name Scientific notation sorting
* @author <a href="http://datatables.net/forums/profile/21757/nickschurch">Nick Schurch</a>
*/
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
"scientific-asc": function ( a, b ) {
var x = parseFloat(a);
var y = parseFloat(b);
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
},
"scientific-desc": function ( a, b ) {
var x = parseFloat(a);
var y = parseFloat(b);
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
}
} );

@ -0,0 +1,21 @@
/**
* Although DataTables' internal numeric sorting works no problem on negative
* numbers, it does not accept positively signed numbers. This plug-in will
* sort just such data numerically.
* @name Fully signed numbers sorting
* @author <a href="http://sprymedia.co.uk">Allan Jardine</a>
*/
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
"signed-num-asc": function ( a, b ) {
var x = (a=="-" || a==="") ? 0 : a.replace('+','')*1;
var y = (b=="-" || b==="") ? 0 : b.replace('+','')*1;
return x - y;
},
"signed-num-desc": function ( a, b ) {
var x = (a=="-" || a==="") ? 0 : a.replace('+','')*1;
var y = (b=="-" || b==="") ? 0 : b.replace('+','')*1;
return y - x;
}
} );

@ -0,0 +1,31 @@
/**
* An alternative to the formatted number sorting function above (particularly
* useful when considering localisation which uses dots/periods for 10^3
* separation rather than decimal places). Another method of overcoming it
* difficulties of sorting formatted numbers is to have the data to be sorted
* upon separate from the visual data. This sorting function pair will use the
* 'title' attribute of en empty span element (or anything else) to sort
* numerically (for example <span title="1000000"><span>1'000'000).
* @name Hidden title numeric sorting
* @author <a href="http://sprymedia.co.uk">Allan Jardine</a>
*/
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
"title-numeric-asc": function ( a, b ) {
var x = a.match(/title="*(-?[0-9\.]+)/)[1];
var y = b.match(/title="*(-?[0-9\.]+)/)[1];
x = parseFloat( x );
y = parseFloat( y );
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
},
"title-numeric-desc": function ( a, b ) {
var x = a.match(/title="*(-?[0-9\.]+)/)[1];
var y = b.match(/title="*(-?[0-9\.]+)/)[1];
x = parseFloat( x );
y = parseFloat( y );
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
}
} );

@ -0,0 +1,24 @@
/**
* Just like the "hidden title numeric sorting" plug-in, this sorting plug-in
* will take the information to be sorted on from the title attribute of a span
* element. The only difference is that it is string based sorting rather than
* numeric.
* @name Hidden title string sorting
* @author <a href="http://sprymedia.co.uk">Allan Jardine</a>
*/
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
"title-string-asc": function ( a, b ) {
var x = a.match(/title="(.*?)"/)[1].toLowerCase();
var y = b.match(/title="(.*?)"/)[1].toLowerCase();
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
},
"title-string-desc": function ( a, b ) {
var x = a.match(/title="(.*?)"/)[1].toLowerCase();
var y = b.match(/title="(.*?)"/)[1].toLowerCase();
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
}
} );
Loading…
Cancel
Save