Ajoute la possibilité de trier une table par un clic sur les titres des colonnes, ainsi que filtrer les données
{up table-sort}
LA TABLE{up table-sort}
- table_sort: Aucun argument
- col-type: mode de tri des colonnes. n=numerique, a=alphanum, i=alphanum case insensitive, d=date
- col-init: n° de la colonne triée au chargement et sens (asc, desc)
champs pour recherche
- placeholder = lang[en=Search;fr=Rechercher]: texte dans la zone recherche
- globalSearch: vide= recherche sur toutes les colonnes, sinon liste des colonnes (1,2,5)
Pagination
- pagination: nombre de lignes par pages ou 0 pour désactiver
- pagination-class: classe pour les boutons
- pagination-class-active: classe pour le bouton actif
Style CSS
- id: id genérée automatiquement par UP
- class: classe(s) ajoutées à la table
- style: style inline ajouté à la table
- css-head (base-css): style ajouté dans le HEAD de la page
paramétres JS
- sortable = 1: Activer le tri
- searchable = 1: Activer la recherche
Un exemple simple
Le résultat
Code | Département | Préfecture | Population |
---|---|---|---|
01 | Ain | bourg-en-Bresse | 631877 |
59 | Nord | Lille | 2605238 |
73 | Savoie | Chambéry | 428204 |
22 | Côtes d'Armor | Saint-Brieuc | 598357 |
La saisie avec TinyMCE
Il est difficile de faire plus simple : la table est incluse entre les shortcodes table-sort
D'un clic sur son titre, vous triez selon la colonne. Vous pouvez filtrer les lignes affichées en saisissant les critères dans la zone sous le titre de la colonne.
La seule obligation est d'avoir des titres dans une section THEAD.
Gérer l'ordre de tri
Vous avez sans doute remarqué que le tri de la colonne population est fait dans l'ordre alphanumérique et que la ville de Bourg-en-Bresse est après Saint-Brieuc.
Pour pallier à cela, nous allons indiquer le type des colonnes avec l'option col-type. 3 types de données sont gérés : a (alphanumérique-par défaut), i (alphanumérique non sensible min/maj) et n (numérique).
Dans l'exemple ci-dessous, le 2 premières colonnes sont alphanumériques, la troisième alphanumérique non sensible min/maj et la dernière numérique.
Code | Département | Préfecture | Population |
---|---|---|---|
01 | Ain | bourg-en-Bresse | 631877 |
59 | Nord | Lille | 2605238 |
73 | Savoie | Chambéry | 428204 |
22 | Côtes d'Armor | Saint-Brieuc | 598357 |
La saisie avec TinyMCE
L'option css-head permet de styler les éléments de la table. Pour mémoire #id sera remplacé par l'id de l'action afin de limiter la portée des règles CSS.
Avec pagination
Je vais profiter de cet exemple pour vous montrer plusieurs possibilités :
- limiter le nombre de lignes affichées avec la pagination
- faire une recherche globale sur tout ou partie des colonnes avec globalSearch
- utiliser une autre action de UP pour créer la table
- ajouter un comportement responsive
N° | Nom | Région | Préfecture | Superficie (km²) | Population | Densité (habitants/km2) |
---|---|---|---|---|---|---|
1 | Ain | Auvergne-Rhône-Alpes | Bourg-en-Bresse | 5762 | 631877 | 109,7 |
2 | Aisne | Hauts-de-France | Laon | 7369 | 538659 | 73,1 |
3 | Allier | Auvergne-Rhône-Alpes | Moulins | 7340 | 341613 | 46,5 |
4 | Alpes-de-Haute-Provence | Provence-Alpes-Côte d'Azur | Digne | 6925 | 161799 | 23,4 |
5 | Hautes-Alpes | Provence-Alpes-Côte d'Azur | Gap | 5549 | 140916 | 25,4 |
6 | Alpes-Maritimes | Provence-Alpes-Côte d'Azur | Nice | 4299 | 1082440 | 251,8 |
7 | Ardèche | Auvergne-Rhône-Alpes | Privas | 5529 | 324209 | 58,6 |
8 | Ardennes | Grand Est | Charleville-Mézières | 5229 | 277752 | 53,1 |
9 | Ariège | Occitanie | Foix | 4890 | 152499 | 31,2 |
10 | Aube | Grand Est | Troyes | 6004 | 309056 | 51,5 |
11 | Aude | Occitanie | Carcassonne | 6139 | 366957 | 59,8 |
12 | Aveyron | Occitanie | Rodez | 8735 | 279169 | 32 |
13 | Bouches-du-Rhône | Provence-Alpes-Côte d'Azur | Marseille | 5088 | 2016622 | 396,4 |
14 | Calvados | Normandie | Caen | 5548 | 693579 | 125 |
15 | Cantal | Auvergne-Rhône-Alpes | Aurillac | 5726 | 146219 | 25,5 |
16 | Charente | Nouvelle-Aquitaine | Angoulême | 5956 | 353613 | 59,4 |
17 | Charente-Maritime | Nouvelle-Aquitaine | La Rochelle | 6864 | 639938 | 93,2 |
18 | Cher | Centre-Val de Loire | Bourges | 7235 | 308992 | 42,7 |
19 | Corrèze | Nouvelle-Aquitaine | Tulle | 5857 | 241871 | 41,3 |
2A | Corse-du-Sud | Corse | Ajaccio | 4014 | 152730 | 38 |
2B | Haute-Corse | Corse | Bastia | 4666 | 174553 | 37,4 |
21 | Côte-d'Or | Bourgogne-Franche-Comté | Dijon | 8763 | 533147 | 60,8 |
22 | Côtes d'Armor | Bretagne | Saint-Brieuc | 6878 | 598357 | 87 |
23 | Creuse | Nouvelle-Aquitaine | Guéret | 5565 | 120365 | 21,6 |
24 | Dordogne | Nouvelle-Aquitaine | Périgueux | 9060 | 415417 | 45,9 |
25 | Doubs | Bourgogne-Franche-Comté | Besançon | 5233 | 536959 | 102,6 |
26 | Drôme | Auvergne-Rhône-Alpes | Valence | 6530 | 504637 | 77,3 |
27 | Eure | Normandie | Évreux | 6040 | 601948 | 99,7 |
28 | Eure-et-Loir | Centre-Val de Loire | Chartres | 5880 | 434035 | 73,8 |
29 | Finistère | Bretagne | Quimper | 6733 | 907796 | 134,8 |
30 | Gard | Occitanie | Nîmes | 5853 | 738189 | 126,1 |
31 | Haute-Garonne | Occitanie | Toulouse | 6309 | 1335103 | 211,6 |
32 | Gers | Occitanie | Auch | 6257 | 190932 | 30,5 |
33 | Gironde | Nouvelle-Aquitaine | Bordeaux | 9976 | 1548478 | 155,2 |
34 | Hérault | Occitanie | Montpellier | 6101 | 1120190 | 183,6 |
35 | Ille-et-Vilaine | Bretagne | Rennes | 6775 | 1042884 | 153,9 |
36 | Indre | Centre-Val de Loire | Châteauroux | 6791 | 224200 | 33 |
37 | Indre-et-Loire | Centre-Val de Loire | Tours | 6127 | 604966 | 98,7 |
38 | Isère | Auvergne-Rhône-Alpes | Grenoble | 7432 | 1251060 | 168,3 |
39 | Jura | Bourgogne-Franche-Comté | Lons-le-Saunier | 4999 | 260587 | 52,1 |
40 | Landes | Nouvelle-Aquitaine | Mont-de-Marsan | 9243 | 403234 | 43,6 |
41 | Loir-et-Cher | Centre-Val de Loire | Blois | 6343 | 333050 | 52,5 |
42 | Loire | Auvergne-Rhône-Alpes | Saint-Étienne | 4781 | 759411 | 158,9 |
43 | Haute-Loire | Auvergne-Rhône-Alpes | Le Puy-en-Velay | 4977 | 227034 | 45,6 |
44 | Loire-Atlantique | Pays de la Loire | Nantes | 6809 | 1365227 | 200,5 |
45 | Loiret | Centre-Val de Loire | Orléans | 6775 | 673349 | 99,4 |
46 | Lot | Occitanie | Cahors | 5217 | 173400 | 33,2 |
47 | Lot-et-Garonne | Nouvelle-Aquitaine | Agen | 5361 | 333417 | 62,2 |
48 | Lozère | Occitanie | Mende | 5167 | 76309 | 14,8 |
49 | Maine-et-Loire | Pays de la Loire | Angers | 7172 | 810186 | 113 |
50 | Manche | Normandie | Saint-Lô | 5938 | 499287 | 84,1 |
51 | Marne | Grand Est | Châlons-en-Champagne | 8162 | 572293 | 70,1 |
52 | Haute-Marne | Grand Est | Chaumont | 6211 | 179154 | 28,8 |
53 | Mayenne | Pays de la Loire | Laval | 5175 | 307940 | 59,5 |
54 | Meurthe-et-Moselle | Grand Est | Nancy | 5246 | 734403 | 140 |
55 | Meuse | Grand Est | Bar-le-Duc | 6211 | 190626 | 30,7 |
56 | Morbihan | Bretagne | Vannes | 6823 | 744813 | 109,2 |
57 | Moselle | Grand Est | Metz | 6216 | 1044486 | 168 |
58 | Nièvre | Bourgogne-Franche-Comté | Nevers | 6817 | 211747 | 31,1 |
59 | Nord | Hauts-de-France | Lille | 5743 | 2605238 | 453,7 |
60 | Oise | Hauts-de-France | Beauvais | 5860 | 821552 | 140,2 |
61 | Orne | Normandie | Alençon | 6103 | 286618 | 47 |
62 | Pas-de-Calais | Hauts-de-France | Arras | 6671 | 1472648 | 220,7 |
63 | Puy-de-Dôme | Auvergne-Rhône-Alpes | Clermont-Ferrand | 7970 | 647501 | 81,2 |
64 | Pyrénées-Atlantiques | Nouvelle-Aquitaine | Pau | 7645 | 670032 | 87,6 |
65 | Hautes-Pyrénées | Occitanie | Tarbes | 4464 | 228582 | 51,2 |
66 | Pyrénées-Orientales | Occitanie | Perpignan | 4116 | 471038 | 114,4 |
67 | Bas-Rhin | Grand Est | Strasbourg | 4755 | 1116658 | 234,8 |
68 | Haut-Rhin | Grand Est | Colmar | 3525 | 762607 | 216,3 |
69 | Rhône | Auvergne-Rhône-Alpes | Lyon | 3249 | 1821995 | 560,8 |
70 | Haute-Saône | Bourgogne-Franche-Comté | Vesoul | 5360 | 237706 | 44,3 |
71 | Saône-et-Loire | Bourgogne-Franche-Comté | Mâcon | 8575 | 555408 | 64,8 |
72 | Sarthe | Pays de la Loire | Le Mans | 6206 | 568445 | 91,6 |
73 | Savoie | Auvergne-Rhône-Alpes | Chambéry | 6028 | 428204 | 71 |
74 | Haute-Savoie | Auvergne-Rhône-Alpes | Annecy | 4388 | 793938 | 180,9 |
75 | Paris | Ile-de-France | Paris | 105 | 2206488 | 20934,4 |
76 | Seine-Maritime | Normandie | Rouen | 6278 | 1257699 | 200,3 |
77 | Seine-et-Marne | Ile-de-France | Melun | 5915 | 1390121 | 235 |
78 | Yvelines | Ile-de-France | Versailles | 2284 | 1427291 | 624,8 |
79 | Deux-Sèvres | Nouvelle-Aquitaine | Niort | 5999 | 374435 | 62,4 |
80 | Somme | Hauts-de-France | Amiens | 6170 | 571879 | 92,7 |
81 | Tarn | Occitanie | Albi | 5758 | 386543 | 67,1 |
82 | Tarn-et-Garonne | Occitanie | Montauban | 3718 | 255274 | 68,7 |
83 | Var | Provence-Alpes-Côte d'Azur | Toulon | 5973 | 1048652 | 175,6 |
84 | Vaucluse | Provence-Alpes-Côte d'Azur | Avignon | 3567 | 557548 | 156,3 |
85 | Vandée | Pays de la Loire | La Roche-sur-Yon | 6720 | 666714 | 99,2 |
86 | Vienne | Nouvelle-Aquitaine | Poitiers | 6990 | 434887 | 62,2 |
87 | Haute-Vienne | Nouvelle-Aquitaine | Limoges | 5520 | 375795 | 68,1 |
88 | Vosges | Grand Est | Épinal | 5874 | 372016 | 63,3 |
89 | Yonne | Bourgogne-Franche-Comté | Auxerre | 7427 | 340903 | 45,9 |
90 | Territoire de Belfort | Bourgogne-Franche-Comté | Belfort | 609 | 144483 | 237,1 |
91 | Essonne | Ile-de-France | Évry | 1804 | 1276233 | 707,3 |
92 | Hauts-de-Seine | Ile-de-France | Nanterre | 176 | 1601569 | 9120,6 |
93 | Seine-St-Denis | Ile-de-France | Bobigny | 236 | 1592663 | 6742,9 |
94 | Val-de-Marne | Ile-de-France | Créteil | 245 | 1372389 | 5601,6 |
95 | Val-D'Oise | Ile-de-France | Pontoise | 1246 | 1215390 | 975,5 |
971 | Guadeloupe | Guadeloupe | Basse-Terre | 1628 | 397990 | 244,4 |
972 | Martinique | Martinique | Fort-de-France | 1128 | 380877 | 337,7 |
973 | Guyane | Guyane | Cayenne | 83534 | 259865 | 3,1 |
974 | La Réunion | La Réunion | Saint-Denis | 2504 | 850727 | 339,8 |
976 | Mayotte | Mayotte | Dzaoudzi | 376 | 256518 | 682,2 |
Les shortcodes
{up table-fixe | col-left=1}
{up table-sort
| globalSearch=1,2,3,4
| col-init=1,asc
| pagination=15
| col-type=n-a-a-a-n-n-n
| css-head=#id th[text-align:center;vertical-align:middle] #id tr:hover [background: lightblue;]}
{up csv2table=departements-francais.csv
| model=green
| header=1
| col=C5-25-25-25-D10-D10-D10 }
{/up table-sort}
{/up table-fixe}
Les explications
- un premier shortcode pour rendre responsive la table. Un ascenseur horizontal sera ajouté et la première colonne restera toujours visible.
note: les autres actions table-by-columns, table-by-rows, table-flip sont incompatibles avec table-sort. - on ouvre le shortcode table-sort
- globalSearch est la liste des colonnes sur lesquelles va porter la recherche globale. ici, les 4 premières.
- au chargement, col-init demande de trier la table sur la 1ère colonne dans le sens ascendant. desc tri dans l'autre sens
- pagination limite le nombre de lignes à 15
- col-type est le type de données contenues dans les colonnes : numérique, alphanumérique, insensible min/maj
- css-head ajoute des règls pour centrer le titre des colonnes et pour colorer la ligne survolée par la souris. La 1ere colonne ne change pas de couleur car elle est définie par table-fixe.
- on utilise l'action col2csv pour remplir la table avec le contenu d'un fichier CSV
- model spécifie le style pour la table
- header=1 pour préciser que la 1ère ligne du fichier CSV contient les entêtes des colonnes
- col permet la gestion des largeur et justification des colonnes
- on ferme le shortcode table-sort
- on ferme le shortcode table-fixe
Pour styler les boutons, utilisez les options pagination-class & pagination-class-active
Pour désactiver la fonctionnalité de tri ou de recherche, il existe searchable=0 & sortable=0
Pour découvrir toutes les options disponibles, cliquer sur cette barre
{up table-sort}
LA TABLE{up table-sort}
- table_sort: Aucun argument
- col-type: mode de tri des colonnes. n=numerique, a=alphanum, i=alphanum case insensitive, d=date
- col-init: n° de la colonne triée au chargement et sens (asc, desc)
champs pour recherche
- placeholder = lang[en=Search;fr=Rechercher]: texte dans la zone recherche
- globalSearch: vide= recherche sur toutes les colonnes, sinon liste des colonnes (1,2,5)
Pagination
- pagination: nombre de lignes par pages ou 0 pour désactiver
- pagination-class: classe pour les boutons
- pagination-class-active: classe pour le bouton actif
Style CSS
- id: id genérée automatiquement par UP
- class: classe(s) ajoutées à la table
- style: style inline ajouté à la table
- css-head (base-css): style ajouté dans le HEAD de la page
paramétres JS
- sortable = 1: Activer le tri
- searchable = 1: Activer la recherche
upactionslist (2) addcsshead (1) flexauto (3) table-sort (3) div (2) table-fixe (1) csv2table (1) jcontent-info (1)