j-DataTable
BETA : ce composant est destiné au listing SPA et côté serveur.
- prend en charge la pagination
- système de grille
bootstrapnécessaire - prend en charge le tri
- prend en charge le défilement vertical/horizontal
- réactif
- prend en charge le mode sombre
Data-source doit contenir :
{
cols: [{ name: 'id', ... }], // optional, can be defined inline in HTML
items: [{ name: 'Row 1' }, { name: 'Row 2' }, ...] // items
page: 1, // current pages
pages: 30, // count of pages
limit: 5, // items limit per page
count: 150 // count of items in DB
}Configuration :
- Pluralisation
pluralizepages {String}pour les pages (facultatif, par défaut :# pages,# page,# pages,# pages) - Pluralisation
pluralizeitems {String}pour les éléments (facultatif, par défaut :# items,# item,# items,# items) height {Number/String}hauteur de la grille, valeurs prises en charge :auto(par défaut), NEWfluid,parentouNUMBERcomme hauteur ouselectorpour jQuery.closest()- NOUVEAU
minheight {Number}hauteur minimale de grille, fonctionne avec les hauteursfluidetauto(par défaut :300) - NOUVEAU Sélecteur
parent {String}pour option hauteurauto(par défaut :window) margin {Number}une marge supérieure pour la hauteur (facultatif, par défaut :0)click {String}un lien versfunction(row, grid, row_el), il est exécuté si l'utilisateur clique sur une lignehighlight {Boolean}chaque ligne sélectionnée (aprèsclick) sera mise en surbrillance (par défaut :false)unhighlight {Boolean}activeundo highlightingde la ligne sélectionnée (par défaut :true)checked {String}pathvers une variable ou un chemin versfunction(rows, grid)est exécuté si l'utilisateur a sélectionné/coché certaines lignesautoselect {Boolean}permet la sélection automatique de la première ligne de la grille, il exécuteEXEC(config.click), par défaut :falseexec {String}un lien versfunction(type, page, sort)pour les opérations côté serveur uniquement (il désactive le tri et le filtrage côté client), types pris en charge :refreshoupagechanged {String}pathvers une variable ou un chemin versfunction(rows, grid)est exécuté si l'utilisateur a modifié certaines lignesdblclick {String}un lien vers la méthodefunction(row, grid, row_el), elle est exécutée si l'utilisateur double-clique sur une lignenoborder {Boolean}peut désactiver une bordure autour de la grille (par défaut :false)colwidth {Number}une largeur par défaut pour les colonnes (par défaut :150)editable {String}un lien versfunction(opt)lorsque l'utilisateur effectue une éditioncontextmenu {String}un lien versfunction(e, grid)lorsque l'utilisateur ouvre le menu contextuel
Propriétés de la colonne :
name {String}un nom de champ dans l'objet lignetext {String}une étiquette de colonne, le texte avec.fa fa-homeaffichera l'icône FontAwesomewidth {Number}une largeur de colonne (facultatif,config.colwidthpar défaut)align {String}peut êtrecenterouright(facultatif, par défaut :left)template {String}peut être un modèle Tangular et le modèle est l'objet entier de la lignesort {Boolean}permet le tri (facultatif, par défaut :false)format {String/Number}peut être utilisé pour le champ de date et de nombres (nombre de décimales) (facultatif), par ex.dd.MM.yyyycurrency {String}un formateur de devises, ajoutez simplement une deviseclass {String}facultatif, un nom de classe de colonne personnaliséempty {String/Boolean}facultatif, peut réécrire la valeur vide avec la valeur définie dans le champ vide (la valeurtrueutilise---comme valeur par défaut)type {String}facultatif, peut contenir un type de données (boolean,dateounumber) pour le champeditable {Boolean}permet l'édition
Méthodes :
component.redrawrow(row_object/index)redessine la ligne ou NEW : remplace+redessinerow_objectpar un nouveaunew_object_rowcomponent.clear()efface toutes les modificationscomponent.select(row)sélectionnerowqui doit être le même objet que dans la source de donnéescomponent.rebind(columnsdeclaration)la méthode relie le schéma- NEW :
component.reload()exécuteconfig.execavec le filtre et le tri actuels - NEW :
component.empty()vide toutes les lignes
Bon à savoir :
- Le type
SET('link.to.data', data, 'noscroll')-->noscrolldésactive la réinitialisation du défilement
Comment étendre une classe de ligne ?
- regardez la ligne
{{ if active, elle étend une classe de ligne en ajoutantdg-active-classsi leactivesera valide
[
'{{ if active }} dg-active-class{{ fi }}',
{ name: 'name', text: 'Name', width: 200 },
// other columns ...
]Utilisez-le avec <ui-component name="datatable">. Lorsque le composant n'est pas encore chargé, jComponent le télécharge lors de la première utilisation depuis l'adresse dans DEF.fallback (le CDN Componentator par défaut). Auteur : Peter Širka. Source : le référentiel de composants Componentator, licence MIT.
<div style="width:500px;height:400px">
<ui-component name="datatable" path="data" config="highlight:1;exec:paginate;editable:editable;checked:checked;margin:22">
<script type="text/html">
[
{ name: 'name', text: 'Opportunity name', width: 200, sort: 1, editable: 1 },
{ name: 'value', text: 'Value', width: 100, sort: 1, type: 'number', format: 2 },
{ name: 'status', text: 'Status', width: 100, editable: 1 },
{ name: 'owner', text: 'Owner', width: 200 },
{ name: 'newsletter', text: 'Newsletter', width: 100, type: 'boolean' },
{ name: 'date', text: 'Date', width: 200, sort: 1, type: 'date', format: 'yyyy-MM-dd' }
]
</script>
</ui-component>
</div>
<script>
function checked(rows) {
console.log(rows);
}
function editable(opt) {
// opt.row
// opt.col
// opt.value
// opt.next(NEW_VALUE);
opt.next(opt.value + ' (modified)');
}
function paginate(type, page, sort) {
console.log('Page:', page, 'sort:', sort);
}
var data = {};
data.items = [];
data.pages = 53;
data.page = 3;
// data.cols.push({ name: 'name', text: 'Opportunity name', width: 200, sort: true });
// data.cols.push({ name: 'value', text: 'Value', width: 100, sort: true });
// data.cols.push({ name: 'status', text: 'Status', width: 100 });
// data.cols.push({ name: 'owner', text: 'Owner', width: 200 });
// data.cols.push({ name: 'date', text: 'Date', width: 200, sort: true });
for (var i = 0; i < 50; i++)
data.items.push({ name: GUID(20), value: Math.random() * 1000 >> 0, status: GUID(10), owner: 'Peter Širka', newsletter: i % 3 === 0, date: NOW });
</script>