j-DataTable
BETA: Този компонент е насочен към SPA и списък на сървъра.
- Поддържа страница
- Необходима е система за
bootstrap - Поддържат сортиране
- Поддържа вертикално/хоризонтално скалиране
- Реакция
- Поддържат тъмния режим
Data-Source трябва да съдържа:
{
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
}Конфигуриране:
- Плурализация на
pluralizepages {String}за страници (опционално, по подразбиране:# pages,# page,# pages,# pages) - Плурализация на
pluralizeitems {String}за елементи (опционално, по подразбиране:# items,# item,# items,# items) height {Number/String}Височина на мрежата, подкрепени стойности:auto(Предполага се, че е новоfluid,parentилиNUMBERкато височина илиselectorза jQuery.closest()- NEW
minheight {Number}минимална височина на мрежата, работи сfluidиautoвисочина (предварително:300) - NEW
parent {String}селектор за опция за височинаauto(предварително:window) margin {Number}е най-високата маржа за височина (опционално, по подразбиране:0)click {String}е връзката къмfunction(row, grid, row_el), тя се изпълнява, ако потребителят кликне върху редаhighlight {Boolean}всяка избрана линия (следclick) ще бъде подчертано (предварително:false)unhighlight {Boolean}позволяваundo highlightingот избрания ред (предварително:true)checked {String}pathкъм променлива или път къмfunction(rows, grid)се изпълнява, ако потребителят е избрал/проверил някои редовеautoselect {Boolean}позволява автоматично избиране на първия ред в мрежата, той изпълняваEXEC(config.click), по подразбиране:falseexec {String}е връзка къмfunction(type, page, sort)само за сървърни операции (отключва клавиатурата и филтрирането на клиента), поддържани типове:refreshилиpagechanged {String}pathкъм променлива или път къмfunction(rows, grid)се изпълнява, ако потребителят промени някои редовеdblclick {String}е връзка към метода наfunction(row, grid, row_el), тя се изпълнява, ако потребителят щракне двойно върху редаnoborder {Boolean}може да деактивира границата около мрежата (предварително:false)colwidth {Number}- стандартна ширина за колони (дефолт:150)editable {String}е връзка къмfunction(opt)когато потребителят извършва редактиранеcontextmenu {String}е връзка къмfunction(e, grid)когато потребителят издига контекстното меню
Колонни свойства:
name {String}е името на полето в редица обектиtext {String}е колона, текстът с.fa fa-homeще направи FontAwesome иконаwidth {Number}- ширина на колона (опционално, по подразбиранеconfig.colwidth)align {String}може да бъдеcenterилиright(опционално, по подразбиране:left)template {String}може да бъде шаблон на Tangular и моделът е целият предмет на редаsort {Boolean}позволява класиране (опционално, по подразбиране:false)format {String/Number}може да се използва за дата и числа (брояване на десетилетия) поле (опционално), напримерdd.MM.yyyycurrency {String}е валутен формат, просто добавете валутаclass {String}опция, персонализирано име на класаempty {String/Boolean}опционално, може да се пренапише празна стойност с определената в празно поле стойност (trueизползва---като подразбираща стойност)type {String}опционално, може да съдържа тип данни (boolean,dateилиnumber) за полетоeditable {Boolean}позволява редактиране
Методи:
component.redrawrow(row_object/index)редуцира ред или NEW: замества + редуците наrow_objectс новnew_object_rowcomponent.clear()разкрива всички промениcomponent.select(row)избираrowтрябва да бъде същият обект като в източника на данниcomponent.rebind(columnsdeclaration)Методът премахва схемата- NEW:
component.reload()изпълняваconfig.execс текущия филтър и сортиране - NEW:
component.empty()empties всички редове
Добре е да се знае:
SET('link.to.data', data, 'noscroll')-> типnoscrollпрекъсва рестаурацията на скалпа
Как да разширим класа?
- Погледнете линията
{{ if active, тя разширява класа на реда, като добавятеdg-active-classакоactiveе валиден
[
'{{ if active }} dg-active-class{{ fi }}',
{ name: 'name', text: 'Name', width: 200 },
// other columns ...
]Използвайте го с <ui-component name="datatable">Когато компонентът все още не е зареден, jComponent Изтегляне на първия адрес в DEF.fallback (След това Componentator Източник: Питър Шерка Componentator Съставни съставки, лиценз на 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>