j-DataTable
BETA: Acest component este vizat pentru SPA și listarea server-side.
- susținerea paginii
- Sistemul de rețea
bootstrap - susținerea sortării
- susține scrollarea verticală/orizontală
- Răspunsuri
- Modul întunecat - Dark Mode
_sursă de date trebuie să conțină:
{
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
}Configurarea:
- 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,parentsauNUMBERÎnălțimea sauselectorpentru jQuery.closest()- NEW
minheight {Number}înălțimea minimă a rețelei, funcționează cu înălțulfluidșiauto(default:300) - NEW
parent {String}selector pentru opțiunea de înălțimeauto(default:window) margin {Number}este o marjă de înălțime (opțional, standard:0)click {String}este un link lafunction(row, grid, row_el), se execută dacă utilizatorul face clic pe o liniehighlight {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:falseexec {String}este un link lafunction(type, page, sort)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ânduridblclick {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)colwidth {Number}este o lățime de bază pentru coloane (default:150)editable {String}un link lafunction(opt)atunci când utilizatorul efectuează editareacontextmenu {String}un link lafunction(e, grid)atunci când utilizatorul ridică meniul de context
Proprietăți coloană:
name {String}- un nume de câmp în obiectul de rândtext {String}este o etichetă coloană, textul cu.fa fa-homeva face iconul FontAwesomewidth {Number}o lățime de coloană (opțional, standardconfig.colwidth)align {String}poate ficentersauright(opțional, standard:left)template {String}poate fi un șablon Tangular, iar modelul este întregul obiect al rânduluisort {Boolean}permite sortarea (opțional, standard:false)format {String/Number}poate fi utilizat pentru date și numere (numărul de decimale) câmp (opțional), de exemplu,dd.MM.yyyycurrency {String}este un format de monedă, doar adăugați o monedaclass {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ă)type {String}opțional, poate conține un tip de date (boolean,datesaunumber) pentru câmpuleditable {Boolean}permite editarea
Metode:
component.redrawrow(row_object/index)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.rebind(columnsdeclaration)- Metoda reflectă schema- NEW:
component.reload()executăconfig.execcu filtrul curent și sortarea - NEW:
component.empty()empties toate rândurile
bine să știi:
SET('link.to.data', data, 'noscroll')-> tipulnoscrollinterzice reinstalarea de scrolling
Cum să extindă o clasă de rând?
- Uitaţi-vă la
{{ if activeLinea, 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 ...
]Utilizați-l cu <ui-component name="datatable">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ță.
<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>