4 MINDS

4MINDS Gestão de Conhecimento

DataTables jquery plugin date sort



Adicione isso no carregamento da página, após o plugin ser carregado

            function trim(str) {
                str = str.replace(/^\s+/, '');
                for (var i = str.length - 1; i >= 0; i--) {
                    if (/\S/.test(str.charAt(i))) {
                        str = str.substring(0, i + 1);
                        break;
                    }
                }
                return str;
            }
             
            jQuery.fn.dataTableExt.oSort['date-time-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]) * 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]) * 1;                    
                } else {
                    var y = 10000000000000;                   
                }
                var z = ((x < y) ? -1 : ((x > y) ? 1 : 0));
                return z;
            };
             
            jQuery.fn.dataTableExt.oSort['date-time-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]) * 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]) * 1;                    
                } else {
                    var y = 10000000000000;                   
                }                 
                var z = ((x < y) ? 1 : ((x > y) ? -1 : 0));                 
                return z;
            };     

Então, na criação do DataTable adicione no atributo aoColumns a ordenação para o index da colula.


"aoColumns": [ 
    { "sType": "date-time-html" },
    { "sType": "natural" },
]

Agora a primeira coluna será ordenada por data e hora