j-DataGrid
Cette grille a été créée pour les applications à page unique et les applications d'entreprise.
- système de grille
bootstrapnécessaire - vous pouvez restituer plus de 30 000 lignes sans aucun problème
- prend en charge les colonnes glisser-déposer
- prend en charge le tri
- prend en charge le redimensionnement des colonnes
- prend en charge le défilement vertical/horizontal
- prend en charge les filtres
- prend en charge les cases à cocher
- barres de défilement personnalisées indépendantes du système d'exploitation
- réactif
- prend en charge le mode sombre
- Le filtre d'options de colonne IMPORTANT nécessite le composant
j-Directory
À FAIRE :
- multitri
- redimensionnement des colonnes pour les appareils tactiles
- réorganisation des colonnes pour les appareils tactiles
Data-source doit contenir :
{
schema: 'schema_id', // NEW: optional, DataGrid supports multiple schemas (it means: multiple declaration of columns)
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
}ou Array brut mais vous ne pouvez pas utiliser la pagination et les filtres externes :
[{ name: 'Row 1' }, { name: 'Row 2' }];Configuration :
filterlabel {String}un espace réservé par défaut pour tous les filtres (facultatif)rememberfilter {Boolean}avec true, il mémorise les filtres pour chaque schéma (par défaut :true)schema {String}un schéma par défaut (par défaut :default)- 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 grille, valeurs prises en charge :auto(par défaut), NEWfluid,parent(ouparent1,parent2) ouNUMBERcomme hauteur ouselectorpour jQuery.closest()minheight {Number}hauteur minimale de grille, fonctionne avec les hauteursfluidetauto(par défaut :200)- 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)boolean {String}a valeurs pour filtrer les valeurs booléennes (facultatif, par défaut :true|on|yes)resize {Boolean}permet le redimensionnement des colonnes (facultatif, par défaut :true)reorder {Boolean}permet de réorganiser les colonnes (facultatif, par défaut :true)sorting {Boolean}permet le tri (facultatif,truepar défaut)remember {Boolean}mémorise la réorganisation et le redimensionnement des colonnes (facultatif,truepar défaut)checkbox {Boolean}active les cases à cochercolwidth {Number}une largeur de colonne par défaut en pixels (facultatif,150par défaut)rowheight {Number}une hauteur de ligne par défaut en pixels (facultatif, par défaut :24) + cela dépend du CSSalignheader {String/Number}aligner pour l'en-têteright(ou2) oucenter(ou1) (facultatif, par défaut :left)alignfilter {String/Number}aligner pour l'entrée de filtreright(ou2) oucenter(ou1) (facultatif, par défaut :left)align {String/Number}aligner pour une valeur de colonneright(ou2) oucenter(ou1) (facultatif, par défaut :left)click {String}un lien vers un chemin oufunction(row, grid, row_el), un enregistrement sera attribué/exécuté si l'utilisateur clique sur une ligneclickid {String}un identifiant/nom de propriété pour le redessinage vers l'arrière (pour la surbrillance de la ligne précédente), par défaut :idhighlight {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 :falselimit {Number}une limite de cluster, par défaut :80numbering {Boolean},falsepar défaut en optionallowtitles {Boolean}, active les titres pour toutes les valeurs de ligne,falsepar défaut en optionbutton {String}un lien versfunction(btn_name, row, btn_element, event, name)est exécuté si l'utilisateur clique sur un bouton dans la ligneexec {String}un lien versfunction(type, filter, sort, page)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 lignes
change {String/Boolean}booléen permet l'édition interne ou la chaîne doit contenir unpathvers une variable ou le chemin versfunction(meta, next(meta))est exécuté si l'utilisateur double-clique sur une colonne (metapeut êtrenullsi la grille est actualisée) +next(null)remplace à nouveau le contenu précédentcolumns {String}un chemin vers la définition decolumns {Array}dblclick {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)clusterize {Boolean}peut désactiver le défilement groupé (par défaut :true)contextmenu {String}un lien versfunction(e, grid)lorsque l'utilisateur ouvre le menu contextuelautoformat {Boolean}active les types de formatage automatique tels queemail,phoneetnumber(par défaut :true)controls {Boolean}active les contrôles définis danscolumns(par défaut :true)hfunc {String}un lien vers la méthodefunction(el), elle est exécutée si l'utilisateur clique sur l'icône ajoutée à la toute première ligne d'en-tête. utile pour intégrer un autre composant avec DataGrid. par ex. j-filtre- Icône
hfuncicon {String}hfunc, par ex. maison, rouage, etc. pagination {Boolean}active/désactive la pagination (par défaut :true)config.execsera exécuté si la barre de défilement est à la fin, et vous pouvez utiliser comme réponse brutearrayde lignes
ovalue {String}une clé par défaut pour l'obtention devaluedepuiscolumn.options(par défaut :id)otext {String}une clé par défaut pour l'obtention detextdepuiscolumn.options(par défaut :name)
Propriétés de la colonne :
name {String}un nom de champ dans l'objet lignetext {String}une étiquette de colonne, le texte avec.ti ti-homeaffichera l'icône Totaltitle {String}une info-bulle de colonne (facultatif)width {Number}une largeur de colonne (facultatif,config.colwidthpar défaut)filter {String/Boolean}un espace réservé pour le filtre oubooleanpeut désactiver le filtre pour cette colonne (facultatif)filtervalue {Object}en option, une valeur de filtre prédéfinie (par défaut :undefined)filtertype {Number/String},1désactive la recherche intelligente (par défaut :0- cela signifie que la recherche intelligente est activée)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 lignesorting {Boolean}permet le tri (facultatif, par défaut :true)search {Boolean/String}truefiltrera une valeur en fonction du résultattemplateouStringpeut être un modèle Tangular qui sera utilisé comme valeur pour la rechercheformat {String/Number}peut être utilisé pour le champ de date et de nombres (nombre de décimales) (facultatif), par ex.dd.MM.yyyyhide {Boolean}cache une colonnelistcolumn {Boolean}par défaut : vrai, faux pour supprimer une colonne de la liste des colonneshidden {String}comme fonction fléchéecolumn => true--> la colonne sera masquée (par exemple pour restreindre l'utilisateur)options {Object Array}facultatif, un filtre personnalisé par exemple[{ text: 'yes', value: true }, { text: 'no', value: false }]ou {String}r lien vers la source de donnéesotext {String}en option, une clé pour le champtextdansoptions, par défautconfig.otextovalue {String}en option, une clé pour le champvaluedansoptions, par défautconfig.ovaluebuttonapply {String}en option, une étiquette pour le boutonApplyen colonnes, par défaut :Applyclass {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)min {Number}modifiable uniquement par min. valeur numériquemax {Number}modifiable uniquement un max. valeur numériquerequired {Boolean}modifiable uniquementdirsearch {String/Boolean}un espace réservé pour la recherchej-Directory, booléen avecfalsedésactivera la recherchetype {String}en option, peut contenir un type de données (string,boolean,date,number,email,phoneouurl) pour le champeditable {Boolean}permet l'éditioncurrency {String}un nom de devise (doit être défini dansDEF.currencies)editable {String}Un chemin versfunction(meta)modifiable personnalisé, important :meta.next(new_value)oumeta.cancel()colorize {Boolean}permet une colorisation de la valeurmonospace {Boolean}active le type de police monospace- NOUVEAU
raw {Boolean}active/désactive l'échappement HTML dans les filtres de colonnes (par défaut :false) - NOUVEAU
pair {Boolean}active/désactive l'appariement automatique des valeurs avec la configurationoptions(par défaut :false)
Contrôles de ligne (NOUVEAU) :
- peut être défini comme type de colonne
controls - doit définir la colonne
template(Tangular,rowest un modèle pour Tangular pour chaque ligne) - regarde l'exemple
- L'événement du bouton
clickest capturé dansconfig.button
Filtrage :
numbers: (1)numberrecherche un nombre exact, (2)number - numberest un intervalle entre les nombresstrings: (1)stringrecherche une chaîne exacte, (2)string1, string2, string3est un critère de recherche multipledates: (1) l'année2017recherche toutes les dates de cette année, (2)2017-02-12 - 2017-03-13--02.12.2017 - 13.03.2017est un intervalle entre les dates, (3)12-20 - 12-31--20.12 - 31.12un intervalle entre les dates de l'année en cours (4)2017-01 - 2018-05--01.2017 - 05.2018ou (5)-5 days---1 week---10 years
Méthodes :
component.redraw([reselect_again])peut redessiner les lignes (uniquement pour les modifications, si vous supprimez une ligne, vous devez mettre à jour l'ensemble du modèle)component.resetfilter()peut réinitialiser un filtrecomponent.exportrows(page_from or true from the current page, pages_count, callback(rows, internal_options), [reset_to_page or true for the current page])peut exporter des lignes avec un rendu côté serveurcomponent.appendrow(row_object, [scrolldown], [prepend])ajoute et rend la lignecomponent.redrawrow(row_object, [new_object_row])redessine la ligne ou NEW : remplace+redessinerow_objectpar un nouveaunew_object_rowcomponent.clear()efface toutes les modificationscomponent.select(row)sélectionnerowdoit être le même objet que dans la source de donnéescomponent.editcolumn(row_index, col_index)exécuteconfig.changeen interne (uniquement pour une utilisation avancée)component.applyfilter(obj)peut appliquer un filtre personnalisé{ name: 'Peter', age: '20 - 50' }component.resetcolumns()réinitialise les colonnescomponent.readfilter()renvoie un filtre actuelcomponent.rebind(schemaname__or__columnsdeclaration)la méthode relie le schémacomponent.reload()exécuteconfig.execavec le filtre et le tri actuelscomponent.empty()vide toutes les lignescomponent.redrawcolumns()redessine les colonnes sans les réinitialiser- NEW :
component.schema(name)modifie un schéma et actualise les données
Propriétés :
component.metarenvoie des méta-informations internes sur les filtres, les colonnes et les lignes
Bon à savoir :
NULL('link.to.data')évalueconfig.exec- 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 ...
]Schémas multiples :
<ui-component name="datagrid" path="obj">
<script type="text/plain" data-id="SCHEMA_A">
[
{ name: 'name', text: 'Name', width: 200 },
// ...
]
</script>
<script type="text/plain" data-id="SCHEMA_B">
[
{ name: 'price', text: 'Price', width: 100 },
// ...
]
</script>
</ui-component>
<script>
// Usage
var obj = {};
obj.schema = 'SCHEMA_A';
obj.items = [];
// Changing of schema
setTimeout(function() {
obj.schema = 'SCHEMA_B';
obj.items = [];
UPD('obj');
}, 5000);
</script>Utilisez-le avec <ui-component name="datagrid">. 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.
<ui-component name="LAZY directory"></ui-component>
<ui-component name="datagrid" path="items" config="margin:22;button:clicked">
<script type="text/plain">
[
{ name: 'name', text: 'Name', width: 200 },
{ name: 'price', text: 'Price', align: 1, alignfilter: 1 },
{ name: 'published', text: 'Public', align: 1, options: [{ name: 'yes', id: true }, { name: 'no', id: false }], type: 'boolean' },
{ name: 'description', text: 'Description', filter: 'Search in description' },
{ name: 'created', text: 'Created', template: '{{ created | format(\'dd.MM.yyyy\') }}', align: 2, alignfilter: 2, alignheader: 2 },
{ type: 'controls', template: '<button name="show"><i class="ti ti-search"></i><span>Show</span></button><button name="edit"><i class="ti ti-pencil"></i></button><button name="remove"><i class="ti ti-trash red"></i></button>' }
]
</script>
</ui-component>
<script>
var items = [];
for (var i = 1; i < 90; i++)
items.push({ name: '{0} Lorem ipsum dolor'.format(i), published: i % 5 !== 0, description: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consectetur, mollitia!', price: i + 100, created: new Date().add('-5 days') });
function clicked(btnname, row, button, e) {
console.log(btnname, row);
}
</script>