j-Grid
- se necesita sistema de rejilla
bootstrap
Fuente de datos debe contener:
{
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:
filter{Booleano} muestra un filtro (opcional, predeterminado:true)filterlabel{String} un marcador de posición predeterminado para todos los filtros (opcional)external{Booleano} es una fuente de datos externa (carga de datos dinámica) (opcional, predeterminado:false)pluralizepages{String} pluralización para páginas (opcional, predeterminado:# pages,# page,# pages,# pages)pluralizeitems{String} pluralización para elementos (opcional, predeterminado:# items,# item,# items,# items)exec{String} un enlace afunction(type, filter, sort, page), se evalúa si el grid realiza algunas operacionespadding{Número} relleno de altura (opcional, predeterminado:0)autosize{Booleano} habilita el tamaño automático de altura completa (opcional, predeterminadotrue)boolean{String} valores para filtrar valores booleanos (opcional, predeterminado:true|on|yes)pagination{Booleano} muestra el panel de paginación (opcional, predeterminado:false)init{Función} una función de inicio para, por ejemplo. columnas personalizadaschecked{Función} si las filas contendrán<input type="checkbox, esta función se evaluará cuando se marque la casilla de verificación
Propiedades de la columna:
name{String} un nombre de campo en el objetotext{String} una etiqueta de columnatitle{String} información sobre herramientas de columna (opcional)size{Número} un ancho de columna:1pequeño,2mediano,3grande,4muy grande (opcional, predeterminado1)size{Cadena} un ancho de columna en píxeles, el valor debe contenerpx, p.20pxfilter{String/Boolean} un marcador de posición para el filtro obooleanpuede desactivar el filtro para esta columna (opcional)format{Cadena/Número} para formatear valores (stringpara fecha,numberpara números)background{String} un color de fondo (opcional)align{String} puede sercenteroright(opcional, predeterminado:left)template{String} puede ser una plantilla Tangular y el modelo es el objeto completo de la filarender{Cadena/Función(valor, columna, fila)} una representación personalizada,stringse evalúa como una función de flechaheader{Cadena/Función(columna)} una representación personalizada del encabezado,stringse evalúa como una función de flechasort{Booleano} habilita la clasificación (opcional, predeterminado:true)class{String} clases adicionales para la columna, p.e.hidden-xssearch{Boolean/String}truefiltrará un valor según el resultadotemplateoStringpuede ser una plantilla Tangular que se utilizará como valor para la búsqueda.
Filtrado:
numbers: (1)numberbusca un número exacto, (2)number / numberes un intervalo entre númerosstrings: (1)stringbusca una cadena exacta, (2)string1, string2, string3es un criterio de búsqueda múltipledates: (1) año2017busca todas las fechas de este año, (2)2017-02-12 / 2017-03-13es un intervalo entre fechas, (3)20.12 / 31.12un intervalo entre fechas del año actual
Úselo con <ui-component name="grid">. Cuando el componente aún no está cargado, jComponent lo descarga en el primer uso desde la dirección en DEF.fallback (la CDN Componentator de forma predeterminada). Autor: Peter Širka. Fuente: repositorio de componentes Componentator, licencia MIT.
<style>
body{padding:50px;margin:0;background-color:#F0F0F0;font-family:Arial;height:100%;}
html{height:100%;}
</style>
<ui-component name="grid" path="griddata" config="exec:filtering">
<script type="text/plain">
[
{ name: 'name', text: 'Name', size: 2, render: 'n => n.toUpperCase()', filter: 'Search in name' },
{ name: 'price', text: 'Price', size: 1, format: 2, filter: 'Search in prices', align: 'right' },
{ name: 'description', text: 'Description', size: 3, filter: 'Search in description' },
{ name: 'created', text: 'Created', size: 1, filter: 'Search in dates', format: 'dd.MM.yyyy', align: 'center' }
]
</script>
</ui-component>
<script>
var griddata = { page: 1, count: 18, pages: 3, limit: 6, items: [] };
var items = griddata.items;
items.push({ name: '1 Lorem ipsum dolor.', description: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consectetur, mollitia!', price: 233, created: new Date().add('-5 days') });
items.push({ name: '2 Lorem ipsum dolor.', description: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consectetur, mollitia!', price: 122, created: new Date().add('-1 year') });
items.push({ name: '3 Lorem ipsum dolor.', description: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consectetur, mollitia!', price: 119, created: new Date().add('-1 month') });
items.push({ name: '4 Lorem ipsum dolor.', description: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consectetur, mollitia!', price: 35.34, created: new Date().add('-14 days') });
items.push({ name: '5 Lorem ipsum dolor.', description: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consectetur, mollitia!', price: 439.33, created: new Date().add('-5 hours') });
items.push({ name: '6 Lorem ipsum dolor.', description: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consectetur, mollitia!', price: 111.12, created: new Date().add('-349 minutes') });
// Auto-resize
$(window).on('resize', function() {
setTimeout2('resize', function() {
EMIT('resize');
}, 100);
});
function filtering(type, filter, sort, page) {
console.log(type, filter, sort, page);
}
</script>