Carnet Web de Bastien Jaillot

jQuery tablesorter : tri par taille de fichier

Note publiée le .

jQuery est très simple à utiliser et est très extensible.

En témoigne le nombre interminable de plugin qui existe pour cette librairie jQuery. Celui dont je vais parler ici-même concerne le tri par javaascript de tableaux. J'utilise depuis quelque temps tablesorter qui fonctionne parfaitement. Ce plugin est lui-même éxtensible.

On peut en effet ajouter des fonctions de tri. Comme par exemple la taille de fichier en français ; octet / kilo-octet / méga-octet etc. Le contenu à trier est donc sous la forme 3.2 Ko, 1.1 Mo etc.

Pour ce tri j'ai trouvé une version "anglophone" de la taille de fichiers en bytes (Kb, Mb etc.). Je l'ai 'adapté' (traduit serait plus juste) et voici : (voir la suite du billet)

$.tablesorter.addParser({
	id: 'filesize',
	is: function(s) {
		return s.match( new RegExp( /[0-9]+(\.[0-9]+)?\ (Ko|o|Go|Mo|To)/ ) );
	},
	format: function(s) {
		var suf = s.match( new RegExp( /(Ko|o|Go|Mo|To)$/ ) )[1];
		var num = parseFloat( s.match( new RegExp( /^[0-9]+(\.[0-9]+)?/ ) )[0] );

		switch( suf ) {
			case 'Ko':
			num = num * 1024;
			break;
			case 'Mo':
			num = num * 1024 * 1024;
			break;
			case 'Go':
			num = num * 1024 * 1024 * 1024;
			break;
			case 'To':
			num = num * 1024 * 1024 * 1024 * 1024;
			break;
		}
		return $.tablesorter.formatFloat(num);
	},
	type: 'numeric' 
});

$("table.tablesorter").tablesorter({
	widgets: ['zebra'], 
	headers: {
		3: { // 3 is the nb of my column
			sorter:'filesize'
		}},
	});
});