parent
d6d99b4617
commit
0024c10eaa
@ -0,0 +1,113 @@
|
|||||||
|
/**
|
||||||
|
* When sorting values in a DataTable you might want to sort any 'novalue'
|
||||||
|
* pattern as max or min value in a column (e.g. '-' treat as -1000 or 1000).
|
||||||
|
*
|
||||||
|
* This is very useful if You want to sort incomplete data, there is no
|
||||||
|
* data available for each entry in a column (e.g. Recovered for covid-19).
|
||||||
|
*
|
||||||
|
* If You do not have data, You can set the 'novalue' pattern to '-' or
|
||||||
|
* any other pattern and set exact column to treat this 'novalue' pattern
|
||||||
|
* as the max value (sethigh) or the min value (setlow).
|
||||||
|
*
|
||||||
|
* @name novalue.js
|
||||||
|
* @summary Sort any "novalue" pattern as max or min (e.g. '-' treat as -1000 or 1000).
|
||||||
|
* @author Darek L https://github.com/dprojects
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* gTable = $('#covid-table').DataTable({
|
||||||
|
* "orderClasses": true,
|
||||||
|
* "responsive": true,
|
||||||
|
* "columnDefs": [ { "type": "sethigh", "targets": [2, ,3, 4, 7, 8] },
|
||||||
|
* { "type": "setlow", "targets": [5, 6] } ]
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* To change order later:
|
||||||
|
*
|
||||||
|
* gTable.order([8, 'asc'],[6, 'desc']).draw();
|
||||||
|
*
|
||||||
|
* Keep in mind there must be "desc" in this case not "dsc".
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set novalue pattern below if You want other.
|
||||||
|
* For example:
|
||||||
|
*
|
||||||
|
* var novalue = 'N/A';
|
||||||
|
* var novalue = 'no value';
|
||||||
|
* var novalue = 'empty';
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
var novalue = '-';
|
||||||
|
|
||||||
|
$.extend( $.fn.dataTableExt.oSort, {
|
||||||
|
|
||||||
|
"sethigh-asc": function ( a, b ) {
|
||||||
|
|
||||||
|
let x = a;
|
||||||
|
let y = b;
|
||||||
|
|
||||||
|
if (x == novalue && y != novalue) { return 1; }
|
||||||
|
else if (x != novalue && y == novalue) { return -1; }
|
||||||
|
else if (x == novalue && y == novalue) { return 0; }
|
||||||
|
else if (x != novalue && y != novalue) {
|
||||||
|
|
||||||
|
x = parseFloat(a);
|
||||||
|
y = parseFloat(b);
|
||||||
|
|
||||||
|
return ( (x < y) ? -1 : ( (x > y) ? 1 : 0 ) );
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sethigh-desc": function ( a, b ) {
|
||||||
|
|
||||||
|
let x = a;
|
||||||
|
let y = b;
|
||||||
|
|
||||||
|
if (x == novalue && y != novalue) { return -1; }
|
||||||
|
else if (x != novalue && y == novalue) { return 1; }
|
||||||
|
else if (x == novalue && y == novalue) { return 0; }
|
||||||
|
else if (x != novalue && y != novalue) {
|
||||||
|
|
||||||
|
x = parseFloat(a);
|
||||||
|
y = parseFloat(b);
|
||||||
|
|
||||||
|
return ( (x < y) ? 1 : ( (x > y) ? -1 : 0 ) );
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"setlow-asc": function ( a, b ) {
|
||||||
|
|
||||||
|
let x = a;
|
||||||
|
let y = b;
|
||||||
|
|
||||||
|
if (x == novalue && y != novalue) { return -1; }
|
||||||
|
else if (x != novalue && y == novalue) { return 1; }
|
||||||
|
else if (x == novalue && y == novalue) { return 0; }
|
||||||
|
else if (x != novalue && y != novalue) {
|
||||||
|
|
||||||
|
x = parseFloat(a);
|
||||||
|
y = parseFloat(b);
|
||||||
|
|
||||||
|
return ( (x < y) ? -1 : ( (x > y) ? 1 : 0 ) );
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"setlow-desc": function ( a, b ) {
|
||||||
|
|
||||||
|
let x = a;
|
||||||
|
let y = b;
|
||||||
|
|
||||||
|
if (x == novalue && y != novalue) { return 1; }
|
||||||
|
else if (x != novalue && y == novalue) { return -1; }
|
||||||
|
else if (x == novalue && y == novalue) { return 0; }
|
||||||
|
else if (x != novalue && y != novalue) {
|
||||||
|
|
||||||
|
x = parseFloat(a);
|
||||||
|
y = parseFloat(b);
|
||||||
|
|
||||||
|
return ( (x < y) ? 1 : ( (x > y) ? -1 : 0 ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
Loading…
Reference in new issue