j-DataTable
BETA: Tato složka je zaměřena na seznamování SPA a serveru.
- Podporuje stránku
- Systém
bootstrap - Podporuje sortizaci
- Podporuje vertikální/horizontální scrolling
- Odpovědnost
- Podporuje tmavý režim
Data-source musí obsahovat:
{
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
}Konfigurace:
- Pluralizace
pluralizepages {String}pro stránky (volitelné, výchozí:# pages,# page,# pages,# pages) - Pluralizace
pluralizeitems {String}pro položky (volitelné, výchozí:# items,# item,# items,# items) height {Number/String}Výška sítě, podporované hodnoty:auto(přesněji řečeno) - novéfluid,parentneboNUMBERjako výška neboselectorpro jQuery.closest()- NEW minimální výška sítě
minheight {Number}, pracuje s výškoufluidaauto(předvolený:300) - NEW
parent {String}selektor pro možnost výškyauto(předvolený:window) margin {Number}je vrcholová hranice pro výšku (volitelná, výchozí:0)click {String}odkaz nafunction(row, grid, row_el), je spuštěn, pokud uživatel klikne na řádek- Každý zvolený řádek
highlight {Boolean}(poclick) bude zdůrazněn (podle předvolby:false) unhighlight {Boolean}umožňujeundo highlightingvybraného řádku (podmínkou:true)checked {String}pathna proměnnou nebo cestu kfunction(rows, grid)se provede, pokud uživatel vybral/kontroloval některé řádkyautoselect {Boolean}umožňuje automaticky vybírat první řádek v síti, provádíEXEC(config.click), předvolený:falseexec {String}odkaz nafunction(type, page, sort)pouze pro serverové operace (vypouští třídění a filtrování klienta), podporované typy:refreshnebopagechanged {String}pathna proměnnou nebo cestu kfunction(rows, grid)se provádí, pokud uživatel změnil některé řádkydblclick {String}odkaz na metodufunction(row, grid, row_el), je spuštěn, pokud uživatel klikne na řádeknoborder {Boolean}může deaktivovat hranice kolem sítě (předvolené:false)- Standardní šířka
colwidth {Number}pro sloupce (default:150) editable {String}odkaz nafunction(opt)když uživatel provádí úpravucontextmenu {String}odkaz nafunction(e, grid)když uživatel zvyšuje kontext menu
Kolonové vlastnosti:
name {String}- název pole v řádném objektutext {String}sloupec, text s.fa fa-homebude fontAwesome ikonawidth {Number}Široká šířka sloupce (volitelná, výchozí)config.colwidth)align {String}může býtcenterneboright(volitelné, výchozí:left)template {String}může být šablona Tangular a model je celým předmětem řádkusort {Boolean}umožňuje srovnání (volitelné, předběžné:false)format {String/Number}lze použít pro datum a čísla (počet desítek) pole (volitelné), např.dd.MM.yyyycurrency {String}měnový formát, stačí přidat měnuclass {String}volitelný, přizpůsobený název třídyempty {String/Boolean}volitelně, může přepsat prázdnou hodnotu s hodnotou definovanou v prázdném poli (hodnotatruepoužívá hodnotu---jako předvolenou hodnotu)type {String}je volitelný, může obsahovat typ údajů (boolean,datenebonumber) pro poleeditable {Boolean}umožňuje úpravu
Metody:
component.redrawrow(row_object/index)redraws řádek nebo NEW: nahrazuje +redrawsrow_objectnovýmnew_object_rowcomponent.clear()vyčistí všechny změnycomponent.select(row)vybererowmusí být stejný objekt jako v datovém zdrojicomponent.rebind(columnsdeclaration)- Metoda odráží schéma- NEW:
component.reload()provádíconfig.execs aktuálním filtrem a řadou - NEW:
component.empty()empties všechny řádky
Dobré vědět:
SET('link.to.data', data, 'noscroll')-> typnoscrollznemožňuje resetování
Jak rozšiřovat třídu řádku?
- Podívejte se na
{{ if activeZpůsob, jak rozšířit třídu řádku přidánímdg-active-classPokud jeactiveBude platný
[
'{{ if active }} dg-active-class{{ fi }}',
{ name: 'name', text: 'Name', width: 200 },
// other columns ...
]Použijte ji s <ui-component name="datatable">Pokud je součástka ještě nezačleněna, jComponent Stáhnout ji na první použití z adresy DEF.fallback a) The Componentator CDN dle předvolby. autor: Peter Širka. zdroj: Componentator Výrobce je autorizován, MIT licence.
<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>