Description
Cette bibliothèque permet de trier par colonne un tableau comme le fait par exemple une application Excel. Elle est contenu dans un fichier unique JavaScript «tinysort.js» développé par Ron Valstar (Sjeiti). Elle ne nécessite pas l'utilisation de jQuery, mais on peut le combiner avec afin de minimiser le nombre de lignes de code nécessaires à son utilisation.
La fonction «tinysort»
Cette fonction permet de relier la balise HTML à la bibliothèque de triage.
Syntaxe
function tinysort(NodeList); |
function tinysort(NodeList,option); |
Paramètres
Nom | Description | |
---|---|---|
NodeList | Ce paramètre permet d'indiquer la liste de noeud où est situé la balise à trier. | |
option | Ce paramètre permet d'indiquer les options : | |
Options | Description | |
selector | Cette option permet d'indiquer le sélecteur CSS de l'élément à trier. | |
order | Cette option permet d'indiquer l'ordre du tri à appliquer : asc (ascendant), desc (descendant) ou rand (aléatoire). | |
attr | Cette option permet d'indiquer l'ordre de la valeur d'attribut. | |
data | Cette option permet d'indiquer l'ordre de la donnée d'attribut. | |
place | Cette option permet d'indiquer l'emplacement des éléments à ordonner dans le respect des éléments désordonnées. | |
useVal | Cette option permet d'indiquer la valeur d'élément dans le texte. | |
cases | Cette option permet d'indiquer s'il faut distinguer les minuscules et les majuscules dans le tri (true) ou non (false). | |
forceStrings | Cette option permet d'indiquer s'il faut trier en fonction selon des chaines de caractères (true) ou des nombres (false). | |
ignoreDashes | Cette option permet d'indiquer s'il faut ignorer le tiret quand une vérification par nombre est effectué. | |
sortFunction | Cette option permet d'indiquer une fonction utilisateur à utiliser pour le tri. | |
useFlex | Cette option permet d'indiquer si un parent est présent et qu'il affiche un Flex alors la commande se fait par le CSS au lien du DOM. | |
emptyEnd | Cette option permet d'indiquer qu'il faut trier les valeurs vides à la fin plutôt qu'au début de la liste. |
Exemple
Voici un exemple montrant comment faire trier un tableau en cliquant sur le titre des colonnes :
- <html>
- <head>
- <script type="text/javascript" src="tinysort/tinysort.js"></script>
- <style>
- #ListCoder th { cursor:hand; }
- </style>
- </head>
- <body>
- <table id="ListCoder">
- <tr>
- <th>Cin</th>
- <th>WorkGroupId</th>
- <th>Name_EN</th>
- <th>Name_FR</th>
- <th>Description</th>
- <th>Status</th>
- </tr>
- <tr>
- <td>000</td>
- <td>0000023901</td>
- <td>Coder</td>
- <td>Développement</td>
- <td>Groupe de programmeur effectuant de la recherche et développement (R&D).</td>
- <td>A</td>
- </tr>
- <tr>
- <td>000</td>
- <td>0000023902</td>
- <td>Maintenance</td>
- <td>Maintenance</td>
- <td>Groupe maintenant les divers services réseaux, implantant les développements, maintenant l'état actuel du matériel et administrant les accès.</td>
- <td>A</td>
- </tr>
- <tr>
- <td>000</td>
- <td>0000023903</td>
- <td>Direction</td>
- <td>Direction</td>
- <td>Direction Groupe de travail s'occupant des divers orientations à prendre sur les projets et les produits.</td>
- <td>I</td>
- </tr>
- <tr>
- <td>075</td>
- <td>0000000068</td>
- <td>Test</td>
- <td>Teste</td>
- <td>Groupe désigné pour le contrôle de la Qualité</td>
- <td>A</td>
- </tr>
- </table>
- <script type="text/javascript">
- var table = document.getElementById('ListCoder');
- table.addEventListener('click',function(e){
- var tableHeader = e.target,order;
- if(tableHeader.nodeName == 'TD') return;
- while (tableHeader.nodeName!=='TH') tableHeader = tableHeader.parentNode;
- order = tableHeader.getAttribute('data-order')==='asc'?'desc':'asc';
- tableHeader.setAttribute('data-order',order);
- tinysort(table.querySelectorAll('tr'),{ selector:'td:nth-child('+(Array.prototype.indexOf.call(table.querySelectorAll('th'),tableHeader)+1)+')',order: order});
- });
- </script>
- </body>
- </html>
on obtiendra le résultat suivant :
Dernière mise à jour : Mercredi, le 28 octobre 2015