j-DataGrid
Această rețea a fost creată pentru aplicații de o singură pagină și aplicații corporative.
- Sistemul de rețea
bootstrap - Puteți face mai mult de 30.000 de rânduri fără probleme
- Cuvânt cheie: drag & drop columns
- susținerea sortării
- susține recidivarea coloanelor
- susține scrollarea verticală/orizontală
- susține filtrele
- Suport pentru checkboxes
- Scrollbars independente pe OS
- Răspunsuri
- Modul întunecat - Dark Mode
- IMPORTANT opțiuni de column filtru necesită componentul
j-Directory
To-do:
- Multisortul
- Columne pentru dispozitivele de contact
- Reordinează coloanele pentru dispozitivele de atingere
_sursă de date trebuie să conțină:
{
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
}sau Array crud, dar nu puteți folosi paginație și filtre externe:
[{ name: 'Row 1' }, { name: 'Row 2' }];Configurarea:
filterlabel {String}este un locator standard pentru toate filtrele (opțional)rememberfilter {Boolean}cu adevărat se amintește de filtre pentru fiecare schemă (default:true)schema {String}este un schemă standard (default:default)- Pluralizare
pluralizepages {String}pentru pagini (opțional, standard:# pages,# page,# pages,# pages) - Pluralizare
pluralizeitems {String}pentru articole (opțional, standard:# items,# item,# items,# items) height {Number/String}Înălțimea rețelei, valorile susținute:auto(în mod implicit) - Nouafluid,parentsauparent1,parent2sauNUMBERÎnălțimea sauselectorpentru jQuery.closest()- Înălțimea minimă a rețelei
minheight {Number}, funcționează cu înălțimifluidșiauto(default:200) - Selectorul
parent {String}pentru opțiunea de înălțimeauto(default:window) margin {Number}este o marjă de înălțime (opțional, standard:0)boolean {String}este o valoare pentru filtrarea valorilor boolean (opțional, standard:true|on|yes)resize {Boolean}permite redimensionarea coloanelor (opțional, standard:true)reorder {Boolean}permite reordinea coloanelor (opțional, standard:true)sorting {Boolean}permite sortarea (opțional, standardtrue)remember {Boolean}reamintește coloanele de reordine și reîncărcare (opțional, standardtrue)checkbox {Boolean}permite cutii de controlcolwidth {Number}o lățime de coloană implicită în pixeli (opțional,150)rowheight {Number}este o înălțime de rând standard în pixeli (opțional, standard:24) + depinde de CSSalignheader {String/Number}Align pentru titlurightsau2saucentersau1(în mod opțional și în mod default)left)alignfilter {String/Number}Align pentru filtrul de intrarerightsau2saucentersau1(în mod opțional și în mod default)left)align {String/Number}Align pentru o valoare coloanărightsau2saucentersau1(în mod opțional și în mod default)left)click {String}un link la o cale saufunction(row, grid, row_el), un record va fi atribuit/executat dacă utilizatorul face clic pe o ratăclickid {String}un nume de identificator/proprietate pentru redragerea înapoi (pentru evidența din rândul anterior), standard:idhighlight {Boolean}fiecare rând selectat (dupăclick) va fi evidențiat (default:false)unhighlight {Boolean}permiteundo highlightingdin rândul selectat (default:true)checked {String}pathla o variabilă sau drumul cătrefunction(rows, grid)este executat dacă utilizatorul a selectat/a verificat anumite rânduriautoselect {Boolean}permite selectarea automată a primei rânduri în rețea, funcționeazăEXEC(config.click), standard:falselimit {Number}o limită de cluster, standard:80numbering {Boolean}, standard de preferințăfalseallowtitles {Boolean}, permite titlurile pentru toate valorile de rând, standardul opționalfalsebutton {String}un link lafunction(btn_name, row, btn_element, event, name)este executat dacă utilizatorul face clic pe un buton __ în rândexec {String}este un link lafunction(type, filter, sort, page)pentru operațiunile de server-side (acesta interzice sortarea și filtrarea client-side), tipuri susținute:refreshsaupagechanged {String}pathla o variabilă sau calea cătrefunction(rows, grid)este executată dacă utilizatorul a schimbat anumite rândurichange {String/Boolean}boolean permite editarea internă sau string trebuie să conțină unpathla o variabilă sau traseul cătrefunction(meta, next(meta))este executat dacă utilizatorul face dublu clic pe o coloană (metapoate finulldacă rețeaua este refrescată) +next(null)înlocuiește din nou conținutul anteriorcolumns {String}este o cale spre definițiacolumns {Array}dblclick {String}este un link la metodafunction(row, grid, row_el), se execută dacă utilizatorul face dublu clic pe o rîndănoborder {Boolean}poate dezactiva o graniță în jurul rețelei (default:false)clusterize {Boolean}poate dezactiva scrollarea clusterată (default:true)contextmenu {String}un link lafunction(e, grid)atunci când utilizatorul ridică meniul de contextautoformat {Boolean}permite tipuri de formate auto, cum ar fiemail,phoneșinumber(default:true)controls {Boolean}permite controlurile definite încolumns(default:true)hfunc {String}este un link la metodafunction(el), se execută dacă utilizatorul face clic pe pictura adăugată în prima linie de titlu. usefull pentru a integra un alt component cu DataGrid.hfuncicon {String}hfunc icon, cum ar fi acasă, cog etc.pagination {Boolean}permite/disabilizează paginarea (default:true)config.execva fi executat dacă scrollbarul este la capăt, și puteți folosi ca răspuns brutarrayde rânduri
ovalue {String}este o cheie standard pentru a obținevaluede lacolumn.options(default:id)otext {String}este o cheie standard pentru a obținetextde lacolumn.options(default:name)
Proprietăți coloană:
name {String}- un nume de câmp în obiectul de rândtext {String}este o etichetă coloană, textul cu.ti ti-homeva reprezenta iconul Totaltitle {String}un tip de instrumente coloană (opțional)width {Number}o lățime de coloană (opțional, standardconfig.colwidth)filter {String/Boolean}este un depozitar pentru filtrul saubooleanpoate dezactiva filtrul pentru această coloană (opțional)filtervalue {Object}opțional, o valoare de filtrat predefinită (default:undefined)filtertype {Number/String},1dezactivează căutarea inteligentă (default:0- înseamnă că este activată căutările inteligente)align {String}poate ficentersauright(opțional, standard:left)template {String}poate fi un șablon Tangular, iar modelul este întregul obiect al rânduluisorting {Boolean}permite sortarea (opțional, standard:true)search {Boolean/String}trueva filtra o valoare în funcție de rezultatultemplatesauStringpoate fi un șablon Tangular care va fi folosit ca valoare pentru căutareformat {String/Number}poate fi utilizat pentru date și numere (numărul de decimale) câmp (opțional), de exemplu,dd.MM.yyyyhide {Boolean}ascunde o coloanălistcolumn {Boolean}: adevărat, fals pentru îndepărtarea coloanei din lista coloanelorhidden {String}ca o funcție de steacolumn => true-> coloana va fi ascunsă (de exemplu, pentru restricționarea utilizatorului)options {Object Array}opțional, un filtr personalizat de exemplu[{ text: 'yes', value: true }, { text: 'no', value: false }]o {String}r link la sursa de dateotext {String}opțional, o cheie pentru câmpultextînoptions, standardconfig.otextovalue {String}opțional, o cheie pentru câmpulvalueînoptions, standardconfig.ovaluebuttonapply {String}opțional, etichetă pentru butonulApplyîn coloane, standard:Applyclass {String}opțional, un nume de clasă personalizatempty {String/Boolean}În cazul în care este posibilă redeschiderea valorii goale cu valoarea definită în câmpul gol (trueValoarea utilizării---ca o valoare defectuoasă)min {Number}editabil numai un număr min.max {Number}editabil numai o valoare max.required {Boolean}- numai editabildirsearch {String/Boolean}este un locator pentru căutareaj-Directory, boolean cufalseva dezactiva căutăriletype {String}opțional, poate conține un tip de date (string,boolean,date,number,email,phonesauurl) pentru câmpuleditable {Boolean}permite editareacurrency {String}este un nume de monedă (trebuie să fie definit înDEF.currencies)editable {String}Un drum cătrefunction(meta), important:meta.next(new_value)saumeta.cancel()colorize {Boolean}permite o colorare a valoriimonospace {Boolean}permite tipul de font monospace- NEW
raw {Boolean}permite/disabilizează scăderea HTML în filtre de coloană (default:false) - NEW
pair {Boolean}permite/disabilizează valoarea automată în combinație cu configurațiaoptions(default:false)
Războiul de control (NEW):
- poate fi definită ca tip de coloană
controls - trebuie definită coloana
template(Tangular,roweste un model pentru Tangular pentru fiecare rând) - Vezi exemplul
- butonul de eveniment
clickeste capturat laconfig.button
Filtrarea:
numbers: (1)numbercaută un număr exact, (2)number - numbereste un interval între cifrestrings: (1)stringcaută o linie exactă, (2)string1, string2, string3este un criteriu de căutare multiplădates• 1 an2017Caută toate datele din acest an (2)2017-02-12 - 2017-03-13--02.12.2017 - 13.03.2017este un interval între date, (3)12-20 - 12-31--20.12 - 31.12intervalul dintre datele din anul curent și (4)2017-01 - 2018-05--01.2017 - 05.2018sau (5)-5 days---1 week---10 years
Metode:
component.redraw([reselect_again])poate redrage din nou rândurile (numai pentru modificări, dacă veți elimina unele rânduri trebuie să actualizați întregul model)component.resetfilter()poate fi reîncărcat un filtrucomponent.exportrows(page_from or true from the current page, pages_count, callback(rows, internal_options), [reset_to_page or true for the current page])poate exporta rânduri cu rendering server-sidecomponent.appendrow(row_object, [scrolldown], [prepend])se încadrează și se înregistreazăcomponent.redrawrow(row_object, [new_object_row])redrage rând sau NEW: înlocuiește + redragerow_objectcu un nounew_object_rowcomponent.clear()clarifică toate modificărilecomponent.select(row)selecteazărowtrebuie să fie același obiect ca și în sursa de datecomponent.editcolumn(row_index, col_index)execută internconfig.change(numai pentru utilizare avansată)component.applyfilter(obj)poate aplica un filtr personalizat{ name: 'Peter', age: '20 - 50' }component.resetcolumns()columnăcomponent.readfilter()întoarce un filtru curentcomponent.rebind(schemaname__or__columnsdeclaration)- Metoda reflectă schemacomponent.reload()executăconfig.execcu filtrul curent și sortareacomponent.empty()Emptite toate rândurilecomponent.redrawcolumns()redraw coloane fără a le reinstala- NEW:
component.schema(name)modifică un schemă și refrescă datele
Proprietăți:
component.metareturnează informații interne despre filtre, coloane și rânduri
bine să știi:
NULL('link.to.data')Evaluareaconfig.execSET('link.to.data', data, 'noscroll')-> tipulnoscrollinterzice reinstalarea de scrolling
Cum să extindă o clasă de rând?
- Uitaţi-vă la
{{ if active }}Linea, extinde o clasă de rând prin adăugareadg-active-classÎn cazul în careactiveVa fi valabilă
[
'{{ if active }} dg-active-class{{ fi }}',
{ name: 'name', text: 'Name', width: 200 },
// other columns ...
]Scheme multiple:
<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>Utilizați-l cu <ui-component name="datagrid">Când componenta nu este încă încărcată, jComponent Descărcați-l la prima utilizare de la adresa DEF.fallback (în cazul Componentator Autor: Peter Širka. sursă: Componentator Componente de stocare, MIT licență.
<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>