How to add default support for numeric-comma sorting?
How to add default support for numeric-comma sorting?
brunopgalvao
Posts: 2Questions: 0Answers: 0
Step 1:
extend dataTableExt.oSort with the following code:
[code]
$.extend($.fn.dataTableExt.oSort, {
"numeric-pre": function(a) {
a = (a === "-" || a === "") ? 0 : a.replace(/[^\d\-\.]/g, "");
return parseFloat(a);
},
"numeric-asc": function(a, b) {
return a - b;
},
"numeric-desc": function(a, b) {
return b - a;
}
});
[/code]
Step 2: extend dataTableExt.aTypes, add comma to sValidChars variable:
[code]
# Added comma to sValidChars
$.extend $.fn.dataTableExt.aTypes, [
/*
* Function: -
* Purpose: Check to see if a string is numeric
* Returns: string:'numeric' or null
* Inputs: mixed:sText - string to check
*/
function (sData) {
/* Allow zero length strings as a number */
if (typeof sData === 'number') {
return 'numeric';
}
else if (typeof sData !== 'string') {
return null;
}
var sValidFirstChars = "0123456789-";
var sValidChars = "0123456789.,";
var Char;
var bDecimal = false;
/* Check for a valid first char (no period and allow negatives) */
Char = sData.charAt(0);
if (sValidFirstChars.indexOf(Char) == -1) {
return null;
}
/* Check all the other characters are valid */
for (var i = 1; i < sData.length; i++) {
Char = sData.charAt(i);
if (sValidChars.indexOf(Char) == -1) {
return null;
}
/* Only allowed one decimal place... */
if (Char == ".") {
if (bDecimal) {
return null;
}
bDecimal = true;
}
}
return 'numeric';
},
/*
* Function: -
* Purpose: Check to see if a string is actually a formatted date
* Returns: string:'date' or null
* Inputs: string:sText - string to check
*/
function (sData) {
var iParse = Date.parse(sData);
if ((iParse !== null && !isNaN(iParse)) || (typeof sData === 'string' && sData.length === 0)) {
return 'date';
}
return null;
},
/*
* Function: -
* Purpose: Check to see if a string should be treated as an HTML string
* Returns: string:'html' or null
* Inputs: string:sText - string to check
*/
function (sData) {
if (typeof sData === 'string' && sData.indexOf('<') != -1 && sData.indexOf('>') != -1) {
return 'html';
}
return null;
}
]);
[/code]
http://stackoverflow.com/a/16129840/888737
extend dataTableExt.oSort with the following code:
[code]
$.extend($.fn.dataTableExt.oSort, {
"numeric-pre": function(a) {
a = (a === "-" || a === "") ? 0 : a.replace(/[^\d\-\.]/g, "");
return parseFloat(a);
},
"numeric-asc": function(a, b) {
return a - b;
},
"numeric-desc": function(a, b) {
return b - a;
}
});
[/code]
Step 2: extend dataTableExt.aTypes, add comma to sValidChars variable:
[code]
# Added comma to sValidChars
$.extend $.fn.dataTableExt.aTypes, [
/*
* Function: -
* Purpose: Check to see if a string is numeric
* Returns: string:'numeric' or null
* Inputs: mixed:sText - string to check
*/
function (sData) {
/* Allow zero length strings as a number */
if (typeof sData === 'number') {
return 'numeric';
}
else if (typeof sData !== 'string') {
return null;
}
var sValidFirstChars = "0123456789-";
var sValidChars = "0123456789.,";
var Char;
var bDecimal = false;
/* Check for a valid first char (no period and allow negatives) */
Char = sData.charAt(0);
if (sValidFirstChars.indexOf(Char) == -1) {
return null;
}
/* Check all the other characters are valid */
for (var i = 1; i < sData.length; i++) {
Char = sData.charAt(i);
if (sValidChars.indexOf(Char) == -1) {
return null;
}
/* Only allowed one decimal place... */
if (Char == ".") {
if (bDecimal) {
return null;
}
bDecimal = true;
}
}
return 'numeric';
},
/*
* Function: -
* Purpose: Check to see if a string is actually a formatted date
* Returns: string:'date' or null
* Inputs: string:sText - string to check
*/
function (sData) {
var iParse = Date.parse(sData);
if ((iParse !== null && !isNaN(iParse)) || (typeof sData === 'string' && sData.length === 0)) {
return 'date';
}
return null;
},
/*
* Function: -
* Purpose: Check to see if a string should be treated as an HTML string
* Returns: string:'html' or null
* Inputs: string:sText - string to check
*/
function (sData) {
if (typeof sData === 'string' && sData.indexOf('<') != -1 && sData.indexOf('>') != -1) {
return 'html';
}
return null;
}
]);
[/code]
http://stackoverflow.com/a/16129840/888737
This discussion has been closed.