j-DataGrid
Тази мрежа е създадена за еднократни приложения и корпоративни приложения.
- Необходима е система за
bootstrap - Можете да направите повече от 30 000 реда без никакви проблеми
- Поддръжка на Drag & Drop Columns
- Поддържат сортиране
- Поддържа рециклирането на колони
- Поддържа вертикално/хоризонтално скалиране
- Поддържа филтрите
- Подкрепа за проверка
- Скриншоти за независимост на OS
- Реакция
- Поддържат тъмния режим
- ВЪЗМОЖНО колона опции филтърът изисква
j-Directoryкомпонент
До-до:
- Многообразие
- Рециклиране на колони за допирни устройства
- Реорганизиране на колони за допирни устройства
Data-Source трябва да съдържа:
{
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
}или суров Array, но не можете да използвате страници и външни филтри:
[{ name: 'Row 1' }, { name: 'Row 2' }];Конфигуриране:
filterlabel {String}е стандартно местоположение за всички филтри (опционално)rememberfilter {Boolean}с истински той напомня филтри за всяка схема (предварително:true)schema {String}е стандартна схема (дефолт:default)- Плурализация на
pluralizepages {String}за страници (опционално, по подразбиране:# pages,# page,# pages,# pages) - Плурализация на
pluralizeitems {String}за елементи (опционално, по подразбиране:# items,# item,# items,# items) height {Number/String}Височина на мрежата, подкрепени стойности:auto(Предполага се, че е новоfluid,parentилиparent1,parent2илиNUMBERкато височина илиselectorза jQuery.closest()- Минимална височина на мрежата
minheight {Number}, работи с височинаfluidиauto(предварително:200) parent {String}селектор за опция за височинаauto(предварително:window)margin {Number}е най-високата маржа за височина (опционално, по подразбиране:0)boolean {String}стойности за филтриране на булеанни стойности (опционално, по подразбиране:true|on|yes)resize {Boolean}позволява рециклиране на колони (опционално, по подразбиране:true)reorder {Boolean}позволява презареждане на колони (опционално, по подразбиране:true)sorting {Boolean}позволява класиране (опционално, по подразбиранеtrue)remember {Boolean}напомня за реорганизиране и рециклиране на колони (опционално, по подразбиранеtrue)checkbox {Boolean}позволява проверкаcolwidth {Number}е стандартна ширина на колоната в пиксели (опционално, стандартно150)rowheight {Number}е стандартна височина на реда в пиксели (опционално:24) + зависи от CSSalignheader {String/Number}Анализ на заглавиетоrightили2илиcenterили1(Опционално и дефолтно)left)alignfilter {String/Number}Анализ на филтриранетоrightили2илиcenterили1(Опционално и дефолтно)left)align {String/Number}Анализ на стойността на колонатаrightили2илиcenterили1(Опционално и дефолтно)left)click {String}е връзка към пътят илиfunction(row, grid, row_el), записът ще бъде назначен/изпълнен, ако потребителят кликне върху редаclickid {String}идентификатор/име на имота за обратно редуциране (за предишния ред), по подразбиране:idhighlight {Boolean}всяка избрана линия (следclick) ще бъде подчертано (предварително:false)unhighlight {Boolean}позволяваundo highlightingот избрания ред (предварително:true)checked {String}pathкъм променлива или път къмfunction(rows, grid)се изпълнява, ако потребителят е избрал/проверил някои редовеautoselect {Boolean}позволява автоматично избиране на първия ред в мрежата, той изпълняваEXEC(config.click), по подразбиране:falselimit {Number}Ограничение на кластера, дефолт:80numbering {Boolean}, опционален дефолт наfalseallowtitles {Boolean}, позволява на заглавията за всички стойности на реда, опционален дефолтfalsebutton {String}връзката къмfunction(btn_name, row, btn_element, event, name)се изпълнява, ако потребителят щракне върху бутон ___ в редаexec {String}е връзка къмfunction(type, filter, sort, page)само за сървърни операции (отключва клавиатурата и филтрирането на клиента), поддържани типове:refreshилиpagechanged {String}pathкъм променлива или път къмfunction(rows, grid)се изпълнява, ако потребителят промени някои редовеchange {String/Boolean}Boolean позволява вътрешно редактиране или лентата трябва да съдържаpathкъм променлива или пътят къмfunction(meta, next(meta))се изпълнява, ако потребителят двойно кликне върху колона (metaможе да бъдеnullако мрежата е освежена) +next(null)замества предишното съдържание отновоcolumns {String}Пътят към дефиницията наcolumns {Array}dblclick {String}е връзка към метода наfunction(row, grid, row_el), тя се изпълнява, ако потребителят щракне двойно върху редаnoborder {Boolean}може да деактивира границата около мрежата (предварително:false)clusterize {Boolean}може да деактивира кластерирано скалиране (дефолт:true)contextmenu {String}е връзка къмfunction(e, grid)когато потребителят издига контекстното менюautoformat {Boolean}позволява автоматично форматиране на типове катоemail,phoneиnumber(предварително:true)controls {Boolean}позволява контроли, определени вcolumns(предварително:true)hfunc {String}е връзка към метода наfunction(el), тя се изпълнява, ако потребителят кликне върху иконата, добавена към много първия ред на заглавието. usefull да интегрира друг компонент с DataGrid. например j-филтърhfuncicon {String}hfunc икона, например къща, cog и т.н.pagination {Boolean}активира/изключва странициране (предварително:true)config.execще бъде изпълнен, ако скалбарът е в края, и можете да използвате като суров отговорarrayна редове
ovalue {String}е стандартна ключ за получаване наvalueотcolumn.options(предварително:id)otext {String}е стандартна ключ за получаване наtextотcolumn.options(предварително:name)
Колонни свойства:
name {String}е името на полето в редица обектиtext {String}е колона, текстът с.ti ti-homeще направи икона Totaltitle {String}е колона инструмент (опционално)width {Number}- ширина на колона (опционално, по подразбиранеconfig.colwidth)filter {String/Boolean}място за филтера илиbooleanможе да деактивира филтра за тази колона (опционално)filtervalue {Object}опция, предварително дефинирана стойност на филтра (предварително:undefined)filtertype {Number/String},1отключва интелигентното търсене (дефинирано:0- това означава, че е активиран интелигантен търсене)align {String}може да бъдеcenterилиright(опционално, по подразбиране:left)template {String}може да бъде шаблон на Tangular и моделът е целият предмет на редаsorting {Boolean}позволява класиране (опционално, по подразбиране:true)search {Boolean/String}trueще филтрира стойност в съответствие с резултата наtemplateилиStringможе да бъде шаблон за Tangular, който ще се използва като стойност за търсенеformat {String/Number}може да се използва за дата и числа (брояване на десетилетия) поле (опционално), напримерdd.MM.yyyyhide {Boolean}крие колонаlistcolumn {Boolean}: истински, фалшиви за премахване на колони от списъка с колониhidden {String}като стрела функцияcolumn => true-> колона ще бъде скрита (например за ограничаване на потребителя)options {Object Array}опционален, персонализиран филтър например[{ text: 'yes', value: true }, { text: 'no', value: false }]o {String}r връзка към източника на данниotext {String}опция, ключ за полетоtextвoptions, по подразбиранеconfig.otextovalue {String}опция, ключ за полетоvalueвoptions, по подразбиранеconfig.ovaluebuttonapply {String}опционално, етикет за бутонаApplyв колони, по подразбиране:Applyclass {String}опция, персонализирано име на класаempty {String/Boolean}опционално, може да се пренапише празна стойност с определената в празно поле стойност (trueизползва---като подразбираща стойност)min {Number}редактиран само минимална стойностmax {Number}редактираме само максималната стойност на числотоrequired {Boolean}- само за редактиранеdirsearch {String/Boolean}място за търсене наj-Directory, boolean сfalseще деактивира търсенетоtype {String}опция, може да съдържа тип данни (string,boolean,date,number,email,phoneилиurl) за полетоeditable {Boolean}позволява редактиранеcurrency {String}е валутно име (може да бъде определено вDEF.currencies)editable {String}Пътят към персонализираното редактиране наfunction(meta), важен:meta.next(new_value)илиmeta.cancel()colorize {Boolean}позволява цветна стойностmonospace {Boolean}позволява монопространствен шрифт- NEW
raw {Boolean}позволява/изключва изтичане на HTML в колони (предварително:false) - NEW
pair {Boolean}позволява/изключва автоматична стойност в комбинация с конфигурацията наoptions(предварително:false)
Контролът на релсите (NEW):
- Може да се дефинира като колона тип
controls - трябва да се определи колона
template(Tangular,rowе модел за Tangular за всеки ред) - Погледнете пример
- бутон
clickсъбитие е записано вconfig.button
Филтриране:
numbers: (1)numberтърси точен брой, (2)number - numberе интервал между числатаstrings: (1)stringтърси точна линия, (2)string1, string2, string3е многократен критерий за търсенеdates1 година2017Търсене на всички дати за тази година, (2)2017-02-12 - 2017-03-13--02.12.2017 - 13.03.2017е интервал между датите, (3)12-20 - 12-31--20.12 - 31.12интервал между датите в текущата година и (4)2017-01 - 2018-05--01.2017 - 05.2018или (5)-5 days---1 week---10 years
Методи:
component.redraw([reselect_again])може да редуцира редовете отново (само за модификации, ако изтриете някои редове, които трябва да актуализирате целия модел)component.resetfilter()може да презареди филтърcomponent.exportrows(page_from or true from the current page, pages_count, callback(rows, internal_options), [reset_to_page or true for the current page])може да експортира редове с сървърно-странен renderingcomponent.appendrow(row_object, [scrolldown], [prepend])приготвя и рендеcomponent.redrawrow(row_object, [new_object_row])редуцира ред или NEW: замества + редуците наrow_objectс новnew_object_rowcomponent.clear()разкрива всички промениcomponent.select(row)избираrowтрябва да бъде същият обект като в източника на данниcomponent.editcolumn(row_index, col_index)изпълняваconfig.changeвътрешно (само за напреднала употреба)component.applyfilter(obj)може да се прилага персонализиран филтър{ name: 'Peter', age: '20 - 50' }component.resetcolumns()пренасочва колониcomponent.readfilter()връща текущия филтърcomponent.rebind(schemaname__or__columnsdeclaration)Методът премахва схематаcomponent.reload()изпълняваconfig.execс текущия филтър и сортиранеcomponent.empty()емпити всички редовеcomponent.redrawcolumns()редуцира колони, без да ги пренарежда- NEW:
component.schema(name)променя схемата и освежава данните
Собственост:
component.metaвръща вътрешна мета информация за филтри, колони и редове
Добре е да се знае:
NULL('link.to.data')Оценкаconfig.execSET('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="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>Използвайте го с <ui-component name="datagrid">Когато компонентът все още не е зареден, jComponent Изтегляне на първия адрес в DEF.fallback (След това Componentator Източник: Питър Шерка Componentator Съставни съставки, лиценз на 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>