O xGrid é um grid robusto, possui inúmeras funcionalidades, com uma alta performance. É um componente desenvolvido apenas com javascript sem uso de bibliotecas externas.
- Carregar os dados através de um objeto JSON.
- Pesquisar com mecanismo de paginação.
- Redimensionar tamanho das colunas.
- Vincular campos do formulário com os dados do grid.
- Ordenação dos dados.
- Diversas possibilidade de filtragem dos dados.
- Totalizar valores de uma coluna.
- É possível vincular botões (inserir,alterar,deletar,salvar, cancelar, entre outros).
- Fácil inserção, alteração e remoção de dados
- Dentre outras funcionalidades...
Clone o repositório em um diretório local.
git clone git@github.com:dffrancisco/xGridV2.git
Em seu html declare o css:
<link rel="stylesheet" href="./xGridV2.css">
Para usar o xGrid você deve chamá-lo em seu arquivo .js através de import.
import xGridV2 from './xGridV2';
É necessário um elemento no seu html com um id ou classe para usar na instância do xGrid.
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<title>xGrid v2.0</title>
<link rel="stylesheet" href="./xGridV2.css">
</head>
<body>
<div id="pnGrid"></div>
<script src="./xGridV2.js"></script>
<script src="example.js" type="module"></script>
</body>
</html>
No javascript iremos instanciar o objeto da seguinte forma:
const grid = new xGridV2.create({
el: '#pnGrid'
})
grid.source(json);
O xGrid vem com 4 estilos de temas que podem ser informado dentro do create, os temas são:
Gray | Dark |
---|---|
x-grayV2 | x-darkV2 |
Opacity | White |
---|---|
x-opaciteV2 | x-whiteV2 |
Create é responsável por instanciar o xGrid. Recebe um objeto como parâmetro que pode ter as seguintes propriedades passadas:
Propriedade | Descrição | Tipo | Default |
---|---|---|---|
el | Id ou classe do elemento onde será instanciado o xGrid. (Obrigatório) | String | |
source | Dados que irão popular o grid. | Array of Object (JSON) | [empty] |
width | Largura do grid. | Numeric | |
height | Altura do grid. | Numeric | |
heightLine | Altura da linha do grid. | Numeric | 30 |
setFocus | Inicia o grid focado na linha informada. | Numeric | |
theme | Informe a classe do tema que deseja utilizar. Lista de temas disponíves acima. | String | x-grayV2 |
title | Visibilidade da barra de título | Boolean | true |
count | Visibilidade do contador/índice na primeira coluna. | Boolean | false |
multiSelect | Possibilita a seleção de múltiplas colunas ao segurar a tecla CTRL. | Boolean | false |
onSelectLine | Define uma função que será executada ao selecionar alguma linha. Callback retorna os dados da linha selecionada. |
Function (Callback) |
|
click | Define uma função que será executada ao clicar em alguma linha. Callback retorna os dados da linha selecionada. |
Function (Callback) |
|
dblClick | Define uma função que será executada ao dar um duplo clique em alguma linha. Callback retorna os dados da linha selecionada. |
Function (Callback) |
|
enter | Define uma função que será executada ao pressionar enter em alguma linha. Callback retorna os dados da linha selecionada. |
Function (Callback) |
|
keySelectUp | Define um array com teclas que ao serem pressionadas (individualmente) irão selecionar uma linha acima. | Array of Integer | |
keySelectDown | Define um array com teclas que ao serem pressionadas (individualmente) irão selecionar uma linha abaixo. | Array of Integer |
onKeyDown | Armazena funções que executam determinada ação ao pressionar uma tecla desejada na linha do grid. As funções possuem dois parâmetros de callback: O primeiro retorna todos os campos e valores daquela linha. O segundo retorna o evento keydown do DOM. |
Object | |
const grid = new xGridV2.create({ onKeyDown: { 70: (ln,e) => { alert('Letra F pressionada'); }, 'ctrl+13': (ln,e) => { alert('CTRL + Enter pressionado'); }, }, }) A chave do objeto deve ser o keyCode da tecla que deseja monitorar. Pode combinar as palavras ctrl, alt e shift com um sinal de '+' . |
Compare | Armazena funções que serão utilizadas em uma ou mais colunas para editar seu conteúdo. As funções possuem um parâmetro de callback que retorna todas as colunas e seus valores, e uma propriedade value que retorna o valor da coluna que está sendo executada a função. |
Object | |
const grid = new xGridV2.create({ compare: { 'joinName': (r) => { return r.firstName + r.lastName; }, }, columns: { 'name' : {dataField: 'firstName', compare: 'joinName'}, } }) |
Columns | Define as colunas que serão apresentadas no grid e como será personalizado os dados daquela coluna. Caso não seja informado o componente irá considerar todas as colunas que vierem nos dados que serão adicionados ao grid. |
Object | |||||||||||||||||||||||||||||||||||||
const grid = new xGridV2.create({ columns: { 'First Name': { propriedades }, 'Last Name': { propriedades } } }) columns: {Name: {dataField: 'NAME', width: '100%'},} A chave das columns serão usadas como título das colunas no grid.
|
Filter | Define regras que serão utilizadas no filtro interno do grid quando executar o método filter. | Object | |||||||||||||||||
grid = new xGridV2.create({ filter: { filterBegin: false, fieldByField: {conditional: 'OR'}, concat: { fields: [], conditional: 'OR' } }, })
|
query | Configura o componente para uma pesquisa com paginação. | Object | |||||||||||||
grid = new xGridV2.create({ query: { endScroll: 0.1, execute: async (r) => { let result = await fetch('https://www.googleapis.com/books/v1/volumes ?q=' + r.param.desc + '&startIndex=' + r.offset + '&maxResults=' + r.param.maxItem ) .then(response => { return response.json(); }) grid.querySourceAdd(result.items); } } }) ** Ao usar o query iniciar a busca dos dados com o método queryOpen() . A função chamada em execute quando processada tem que adicionar os dados no grid através do método querySourceAdd() .
|
sideBySide | Possibilita vincular as colunas do grid com os elementos do formulário (input, checkbox, textarea, etc..). | Object | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const grid = new xGridV2({ sideBySide: { el: '#myForm' } })O vínculo só é feito se o name dos elementos (input, etc..) for igual ao dataField de columns.
|
Esses métodos serão utilizados no grid instanciado. Ex.:
grid.deleteLine(1);
Método | Parâmetro | Descrição |
---|---|---|
source | source: Array of Object | Preenche o grid com os dados passados via parâmetro. |
sourceAdd | source: Array of Object | Insere os dados passados via parâmetro no grid. |
dataSource | nenhum | Retorna os dados da linha selecionada. Caso nenhuma linha tenha sido selecionada, retorna false. |
dataSource | field: String | Retorna o valor da coluna informada por parâmetro na linha selecionada. |
dataSource | field: String value: String |
Altera o valor da coluna informada pelo valor passado, na linha selecionada. |
data | nenhum | Retorna todos os dados armazenados no grid. |
getColumns | nenhum | Retorna as informações da propriedade 'columns' do grid. |
getCompare | nenhum | Retorna as informações da propriedade 'compare' do grid. |
focus | numLine: Integer | Foca na linha informada. Primeira linha iniciada por 0. |
disable | callback: Function (Optional) |
Desabilita o grid, executa a função callback caso tenha sido passada. |
enable | callback: Function (Optional) |
Habilita o grid, executa a função callback caso tenha sido passada. |
clear | callback: Function (Optional) |
Apaga os dados do grid (visual). Os dados permanecem armazendados no grid. Executa a função callback caso tenha sido passada. |
load | nenhum | Mostra uma mensagem de loading no grid. |
load | text: String | Mostra a mensagem fornecida como um loading no grid. |
load | text: String, callback: Function |
Mostra a mensagem fornecida como um loading no grid. Executa a função callback fornecida. |
closeLoad | callback: Function (Optional) |
Oculta a mensagem de loading do grid. Executa a função callback caso tenha sido passada. |
getIndex | nenhum | Retorna o índice da linha atual. A primeira linha se inicia com 0. |
deleteLine | index: Integer (Optional) |
Deleta a linha informada, caso não informe a linha, será deletado a linha selecionada. Essa função tem como retorno os dados da linha deletada. |
insertLine | param: Object | Insere uma linha com os dados passados no final do grid. |
sumDataField | field: String | Retorna a soma total da coluna informada. |
queryOpen | param: Object, callback: Function (Optional) |
Faz uma consulta inicial com base na propriedade query. As demais consultas são feitas com paginação através da query. Executa uma função callback caso tenha sido fornecida. (query) |
querySourceAdd | source: Array of Object | Adiciona os dados passados no grid. (query) |
focusField | name: String | Foca em um campo específico do formulário. (sideBySide) |
filter | filter: String, callback: Function (Optional) |
Pesquisa e filtra no grid o texto passado. A pesquisa obedece a condição informada na propriedade filter. Executa uma função callback caso tenha sido fornecida, essa função callback têm como parâmetro de retorno a quantidade de linhas encontradas. (filter) |
filter | filter: Object, callback: Function (Optional) |
Pesquisa nas colunas informadas os respectivos valores informados. Ex.:grid.filter({name: 'Robert' lastName: 'Drummond'}) A pesquisa obedece a condição informada na propriedade filter. Executa uma função callback caso tenha sido fornecida, essa função callback têm como parâmetro de retorno a quantidade de linhas encontradas. (filter) |
setFilterBegin | filterBegin: Boolean | Altera a propriedade filterBegin do filter. (filter) |
setFilterConditional | conditional: String | Altera a propriedade conditional do filter. (filter) |
disableBtnsSaveCancel | disable: Boolean | Desabilita/Habilita os botões salvar e cancelar de acordo com a informação passada. (frame) |
disableFieldsSideBySide | disable: Boolean | Desabilita/Habilita os campos do formulário. (sideBySide) |
getElementSideBySideJson | toUpperCase: Boolean, empty: Boolean |
Retorna os valores dos campos do formulário no formato JSON. (sideBySide) |
getDiffTwoJson | toUpperCase: Boolean | Retorna um objeto contendo os valores antigos e novos dos campos alterados no formulário. {objOld: [name: 'Robert'], objNew: [name: 'Roberty']}
(sideBySide)
|
clearElementSideBySide | nenhum | Limpa os campos do formulário. (sideBySide) |
headHTML: String (Optional) | Imprime os dados do grid. É possível passar um cabeçalho para impressão via parâmetro. | |
getDuplicityAll | nenhum | Chama a função execute de duplicity dos fields informados. Essa função retorna uma Promise |
showMessageDuplicity | text: String | Mostra uma mensagem de alerta! |
setKeySelectUp | keyCode: Integer | Adiciona a opção de selecionar a linha acima com a tecla informada. |
setKeySelectDown | keyCode: Integer | Adiciona a opção de selecionar a linha abaixo com a tecla informada. |