Jan
27

Tri sur les dates FR avec DataTables

Par défaut, avec le plugin JQuery DataTables, on ne peut pas trier sur des dates francaises JJ/MM/AAAA

Pour cela il faut modifier le fichier jquery.dataTables.js et ajouter dans _oExt.aTypes la function suivante :
ATTENTION, mettez la comme première fonction, car les fonctions sont traitées dans l’ordre, et il faut que dans le cas d’un date FR, ce soit bien le résultat de cette fonction qui soit pris en compte en premier, sinon la date serait détectée comme une date mais au format US

function ( sData )
{
 
	var reg=new RegExp("(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/(19|20|21)[0-9]{2}","g");
	if (sData.match(reg))
	{
 
		return 'uk_date';
	} else {
 
	}
	return null;
} ,

Cela correspond à la ligne 669 dans la version 1.6

Ensuite avant l’initialisation de votre datatable, vous devez ajouter ceci

$.fn.dataTableExt.oSort['uk_date-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));
};
 
$.fn.dataTableExt.oSort['uk_date-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));
};




4 Comments to “Tri sur les dates FR avec DataTables”

  • volt 3 juin 2011 à 14 h 36 min

    salut qu’est ce que vous voulez dire par  » Ensuite dans votre avant l’initialisation de votre datatable… » je pense qu’il y a eu une faute de frappe .

  • ch 7 octobre 2011 à 18 h 24 min

    Je viens de modifier le code pour avoir une date comme 05-08-2011 ainsi que 00-00-0000 !

    $.fn.dataTableExt.aTypes.unshift(
    function ( sData ) {
    	var reg=new RegExp("(0[0-9]|[12][0-9]|3[01])-(0[0-9]|1[012])-(00|19|20|21)[0-9]{2}","g");
    	if (sData.match(reg))
    	{ return 'uk_date';
    	} else { }
    	return null;
    	}
    );
    function CalculDate(d) {
    	var ukDate = d.split('-');
    	return (ukDate[2] + '-'+ ukDate[1] + '-'+ ukDate[0]) ;
    }
    $.fn.dataTableExt.oSort['uk_date-asc']  = function(a,b) { 
    	var x = CalculDate(a);
    	var y = CalculDate(b);
    	return ((x  y) ?  1 : 0));
    };
    $.fn.dataTableExt.oSort['uk_date-desc'] = function(a,b) {
    	var x = CalculDate(a);
    	var y = CalculDate(b);
    	return ((x  y) ?  -1 : 0));
    };

    a mettre juste devant $(document).ready(function(){…

  • ch 7 octobre 2011 à 18 h 29 min

    Le return est mal affiché ! Il doit être le même que dans le cadre au-dessus avec aussi le symbole plus grand ou plus petit à la place de <

  • Appo 7 octobre 2011 à 20 h 13 min

    Je n’ai pas bien compris, pourrais tu me donner ce qu’il doit y avoir dans le return ?

Poster un commentaire

Edito

Bienvenue sur Mémorandom.

Mémorandom est le blog de 2 développeurs web, Appo et Nico.

Vous y trouverez des informations sur différents domaines touchant de près ou de loin au développement web

Tutoriels Yii Framework

Nos derniers articles

Blogs Dev

Liens

Étiquettes