j-DataTable
BETA: este componente está destinado a SPA y listado del lado del servidor.
- soporta paginación
- se necesita sistema de rejilla
bootstrap - admite clasificación
- admite desplazamiento vertical/horizontal
- receptivo
- admite modo oscuro
Fuente de datos debe contener:
{
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
}Configuración:
pluralizepages {String}pluralización de páginas (opcional, predeterminado:# pages,# page,# pages,# pages)pluralizeitems {String}pluralización de elementos (opcional, predeterminado:# items,# item,# items,# items)height {Number/String}altura de la cuadrícula, valores admitidos:auto(predeterminado), NEWfluid,parentoNUMBERcomo altura oselectorpara jQuery.closest()- NEW
minheight {Number}altura mínima de la rejilla, funciona con alturafluidyauto(predeterminado:300) - NEW
parent {String}selector para la opción de alturaauto(predeterminado:window) margin {Number}un margen superior para la altura (opcional, predeterminado:0)click {String}un enlace afunction(row, grid, row_el), se ejecuta si el usuario hace clic en una filahighlight {Boolean}cada fila seleccionada (después declick) se resaltará (predeterminado:false)unhighlight {Boolean}habilitaundo highlightingde la fila seleccionada (predeterminado:true)checked {String}patha una variable o ruta afunction(rows, grid)se ejecuta si el usuario seleccionó/marcó algunas filasautoselect {Boolean}habilita la selección automática de la primera fila en la cuadrícula, realizaEXEC(config.click), predeterminado:falseexec {String}un enlace afunction(type, page, sort)solo para operaciones del lado del servidor (deshabilita la clasificación y el filtrado del lado del cliente), tipos admitidos:refreshopagechanged {String}patha una variable o ruta afunction(rows, grid)se ejecuta si el usuario cambió algunas filasdblclick {String}un enlace al métodofunction(row, grid, row_el), se ejecuta si el usuario hace doble clic en una filanoborder {Boolean}puede desactivar un borde alrededor de la cuadrícula (predeterminado:false)colwidth {Number}un ancho predeterminado para columnas (predeterminado:150)editable {String}un enlace afunction(opt)cuando el usuario realiza la edicióncontextmenu {String}un enlace afunction(e, grid)cuando el usuario abre el menú contextual
Propiedades de la columna:
name {String}un nombre de campo en el objeto de filatext {String}una etiqueta de columna, el texto con.fa fa-homerepresentará el ícono FontAwesomewidth {Number}un ancho de columna (opcional, predeterminadoconfig.colwidth)align {String}puede sercenteroright(opcional, predeterminado:left)template {String}puede ser una plantilla Tangular y el modelo es el objeto completo de la fila.sort {Boolean}habilita la clasificación (opcional, predeterminado:false)format {String/Number}se puede utilizar para el campo de fecha y números (recuento de decimales) (opcional), p.dd.MM.yyyycurrency {String}un formateador de moneda, solo agregue una monedaclass {String}opcional, un nombre de clase de columna personalizadoempty {String/Boolean}opcional, puede reescribir el valor vacío con el valor definido en el campo vacío (el valortrueusa---como valor predeterminado)type {String}opcional, puede contener un tipo de datos (boolean,dateonumber) para el campoeditable {Boolean}permite editar
Métodos:
component.redrawrow(row_object/index)vuelve a dibujar la fila o NEW: reemplaza+redibujarow_objectcon un nuevonew_object_rowcomponent.clear()borra todos los cambioscomponent.select(row)seleccionarowdebe ser el mismo objeto que en la fuente de datoscomponent.rebind(columnsdeclaration)el método vuelve a vincular el esquema- NUEVO:
component.reload()ejecutaconfig.execcon el filtro y la clasificación actuales - NEW:
component.empty()vacía todas las filas
Es bueno saberlo:
SET('link.to.data', data, 'noscroll')--> El tiponoscrolldesactiva el reinicio del desplazamiento
¿Cómo extender una clase de fila?
- mire la línea
{{ if active, extiende una clase de fila agregandodg-active-classsiactiveserá válida
[
'{{ if active }} dg-active-class{{ fi }}',
{ name: 'name', text: 'Name', width: 200 },
// other columns ...
]Úselo con <ui-component name="datatable">. Cuando el componente aún no está cargado, jComponent lo descarga en el primer uso desde la dirección en DEF.fallback (el CDN Componentator de forma predeterminada). Autor: Peter Širka. Fuente: repositorio de componentes Componentator, licencia 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>