Bibliothèque de tables administratives capables de se construire elles-mêmes, sur la base de leurs données d'entrée. Prend en charge la pagination côté client et serveur ; recherche côté client et serveur ; vues de filtres personnalisés ; menu automatique pour masquer les colonnes et prise en charge des outils personnalisés. Fonctionnalité d'exportation côté client vers : formats csv, json, xml, Excel xlsx (à l'aide du plugin).
Les démos suivantes sont disponibles en ligne :
Notez comment les filtres sont automatiquement conservés lors de l'actualisation de la page. Par exemple, en utilisant la fonction de recherche ou en changeant de page dans l'une des démos HTML riches, puis en appuyant sur F5. Lors de la recherche, notez comment l'algorithme de recherche côté client trie également les résultats par pertinence (nombre d'occurrences, ordre des propriétés qui génèrent une correspondance).
NB : toutes ces démos sont des tables fixes : des tables qui ont toutes les informations chargées en mémoire, paginées et filtrées côté client. Pour voir des exemples de tables paginées à l'aide de requêtes AJAX (côté serveur), consultez la documentation dédiée et le serveur de développement fourni dans le référentiel.
La bibliothèque KingTable peut être installée à l'aide de npm.
npm install kingtable
Les modules peuvent ensuite être importés en utilisant la syntaxe CommonJS :
var KingTable = require ( "kingtable" )
var KingTableUtils = require ( "kingtable/utils" )
Ou la syntaxe d'importation ES6 :
import KingTable from "kingtable"
import KingTableUtils from "kingtable/utils"
La bibliothèque KingTable peut être utilisée en téléchargeant et en utilisant des fichiers de distribution, dans le dossier dist
.
< script src =" kingtable.js " > </ script >
La version précédente de la bibliothèque KingTable est disponible sur : https://github.com/RobertoPrevato/jQuery-KingTable.
Reportez-vous à la page wiki. Une liste complète des options possibles est disponible dans la page Options dédiée.
Voici un tableau répertoriant les fonctionnalités ajoutées à KingTable 2.0.
Fonctionnalité | Description |
---|---|
Code source ES6 | Code source ES6, la bibliothèque est transpilée vers ES5 pour distribution. |
Code source testé unitairement | Le code source est intégré aux tâches Gulp, Karma, Jasmine pour les tests unitaires. Plus de 300 tests - encore à développer ! |
Dépendances supprimées | Dépendance supprimée de jQuery, Lodash, I.js, R.js. |
Exceptions améliorées | Les exceptions générées incluent un lien vers le wiki GitHub avec des instructions détaillées. |
Logique améliorée pour récupérer les données | Permet de choisir entre la méthode HTTP GET (filtres dans la chaîne de requête) ou la méthode HTTP POST (filtres sous forme de données JSON POST). |
Cache LRU | Mécanisme de mise en cache le moins récemment utilisé pour mettre en cache les n dernières pages par filtres, afin de réduire le nombre de requêtes AJAX. |
Logique de récupération des données de table | Permet de définir des fonctions qui renvoient les données nécessaires au rendu du tableau lui-même (par exemple, dictionnaires pour les vues de filtres personnalisés) |
Mise en cache des filtres | Les filtres pour chaque table sont mis en cache à l'aide du stockage côté client (configurable), de sorte qu'ils sont conservés lors de l'actualisation de la page. |
Tri CS amélioré | Les chaînes qui peuvent être triées comme des nombres (comme "25%", "25,40 EUR", "217°") sont automatiquement analysées comme des nombres lors du tri. |
Tri CS amélioré | Tri côté client par plusieurs propriétés. |
Recherche CS améliorée | La fonctionnalité de recherche côté client a été améliorée : la recherche fonctionne dans les représentations sous forme de chaînes de dates, de nombres et d'autres chaînes formatées dépendantes de la culture. |
Prise en charge améliorée des gestionnaires d'événements | Les gestionnaires d'événements personnalisés reçoivent automatiquement l'élément cliqué en tant que paramètre, le cas échéant. |
Prise en charge améliorée des boutons personnalisés | Il est désormais possible de configurer des champs supplémentaires (tels que des boutons) à afficher pour chaque élément. |
Prise en charge améliorée des autres médias | Prise en charge des applications console NodeJS et du rendu des tableaux HTML pour les corps des e-mails envoyés à l'aide de NodeJS. |
La bibliothèque KingTable implémente deux modes de travail :
Et prend en charge les collections optimisées et simples. Reportez-vous à la page wiki dédiée pour plus d'informations.
Une table fixe affiche une collection qui ne nécessite pas de pagination côté serveur, mais qui peut néanmoins bénéficier d'une pagination côté client. Lorsque l'on travaille sur des applications, il arrive souvent d'avoir affaire à des collections qui ne sont pas destinées à s'agrandir avec le temps et qui sont de petite taille. Par exemple, un tableau des catégories dans un site de commerce électronique pour vendre des vêtements, ou un tableau des rôles des utilisateurs dans la plupart des applications. Dans ces cas-là, il est judicieux de restituer des collections entières aux clients. Il existe deux manières de définir une KingTable fixe :
var table = new KingTable ( {
data : [ { ... } , { ... } , { ... } ]
} ) ;
//or... code the server side to return an array of items (instead of an object describing a paginated set of results)
var table = new KingTable ( {
element : document . getElementById ( "my-table" ) ,
url : "/api/categories"
} ) ;
Les tables fixes effectuent la recherche et la pagination côté client.
Un tableau normal affiche une collection qui nécessite une pagination côté serveur, car elle est censée croître avec le temps. Cela est vrai dans la plupart des cas, par exemple dans les tableaux de produits et de clients d’un site e-commerce.
var table = new KingTable ( {
url : "/api/profiles"
} ) ;
Lors de la réception d'une réponse AJAX, une table normale s'attend à recevoir la structure suivante :
{
subset : [ array ] , // array of items that respect the given filters
total : [ number ] // the total count of items that respect the given filters; excluding the pagination: for example 13000
}
La bibliothèque KingTable comprend un certain nombre de fonctionnalités pour améliorer la convivialité, à la fois pour l'utilisateur final et pour les programmeurs utilisant la bibliothèque :
sessionStorage
configurable, localStorage
ou objet compatible) et conservés lors de l'actualisation de la page - les filtres sont collectés par URL et, si possible, par identifiant de tablePour plus d’informations, reportez-vous à la page wiki dédiée.
Pour des informations complètes, reportez-vous à la page wiki dédiée. La bibliothèque KingTable inclut une logique pour implémenter la localisation côté client, qui est utilisée pour afficher les noms propres des boutons (actualisation, numéro de page, résultats par page, etc.).
Veuillez vous référer à la page wiki dédiée pour obtenir des instructions sur la façon d'intégrer votre projet et avec le code côté serveur.