Edição em Lote/Batch
Introdução
Esta funcionalidade foi criada para permitir que usuários manipulem registros em massa, economizando tempo e esforço em tarefas de edição repetitivas.
Ao invés de editar cada registro de forma individual, podemos selecionar quais registros queremos editar e faze-lo de uma só vez, alem disso, podemos acessar os registros de outras tabelas que estão relacionadas ao registro da tabela principal e editar, inserir, clonar ou mesmo deleta-los(em todo caso apenas a edição poderá ser feita em lote).
Por padrão todas as tabelas do CRUD podem ser editadas através da edição em lote( exceto as tabelas AUTO ), podemos fazer isso passando o nome da tabela como parâmetro na rota /batch
ou configurando um link de acesso que irá aparecer nos registros do CRUD da tabela que especificarmos.
Acesso
Configurando ícone/link CRUD
As vantagens de utilizar esta forma é que facilita bastante acessar a edição em lote através dos registros do CRUD, para isso devemos fazer a seguinte configuração
- Acessar a tabela no nfs_core_ds_tabela_campo;
- Criar um campo do tipo LINK
- Adicionar na coluna opção da tabela que desejamos adicionar o link para edição em lote a seguinte configuração:
type:GET_URL;popup:1;url:batch/mo_boletim/;v1:SEQ_DB;icon:fa fa-th-list
Exemplo de Configuração
Configuração do campo para exibição do link em uma tabela de Boletim
INSERT INTO nfs_core_ds_tabela_campo(TABELA_NOME, NOME, SEQ, SYS, SEND_XMOVA, GRID, GRID_MOBILE, DESCRICAO, DESCRICAO_RESUMIDA, TIPO, OBRIGATORIO, TAMANHO, TAMANHO_DECIMAL, MASCARA, INSERT_UPDATE, DISABLED, HINT, LINK, VALIDACAO, OPCOES, VALOR_DEFAULT, VALIDACAO_VIEW, FILTRO_VIEW, TOOLTIP_MESSAGE, PROPERTIES)
VALUES('BOLETIM_MAQUINA', 'LINK_EDICAO_LOTE', NULL, 0, 1, 1, 1, 'Edição em lote', 'Edição em lote', 'LINK', NULL, NULL, NULL, NULL, 'IU', '0', NULL, NULL, NULL, 'type:GET_URL;popup:1;url:batch/boletim_maquina/;v1:SEQ_DB;icon:fa fa-th-list', NULL, NULL, NULL, NULL, NULL);
Feito isso os ícones para edição em lote serão exibidos quando acessarmos o CRUD novamente, como no exemplo abaixo:
Acesso sem configuração
Este é o acesso mais pratico, não necessita de configuração alguma, para faze-lo basta acessarmos o recurso batch na url do nosso ambiente, passando a / (barra) e em seguida o nome da tabela que desejamos acessar, desta forma: /batch/tabela
Quando não passamos nenhum SEQ_DB, a tela de edição em lote abrira no modo "em branco" para podermos inserir um novo registro nesta tabela.
Agora se passarmos um SEQ_DB, a tela de edição em lote ira abrir o registro da tabela que possui esse SEQ_DB, definir a tabela como principal e por fim, irá trazer as tabelas relacionadas a tabela principal e seus registros:
Estrutura do componente
A ideia é que a edição em lote sirva como uma especie de "canivete suíço" quando se trata da manipulação dos registros das tabelas, onde podemos usar a maior parte das ações sem precisar abrir uma infinidade uma infinidade de abas no navegador.
Para dominarmos o seu uso, vamos apresentar um pouco mais sobre a sua estrutura e ações possíveis.
Tabela Mestre(Master)
Esta é a tabela que possui o registro principal o qual os registros das sub-tabelas do componente farão vinculo.
Caso seja acessado sem utilizar o SeqDb registro, será aberto o componente no modo de registro em branco.
Legendas:
- Titulo do componente de edição em lote:
EDIÇÂO EM LOTE {DESCRIÇÂO DA TABELA MESTRE}
; - Tab atual, esta ficará marcada com um tom de cinza mais escuro;
- Outras tabs disponíveis;
- Descrição da tabela seguida pelos botões de ação "Novo Registro Mestre" e "Recarregar registros" sucessivamente;
- Pesquisa geral: pesquisa em todas as colunas da tabela;
- Filtro por coluna: Filtra os itens de acordo com a pesquisa feita nos inputs relacionados a cada coluna;
- Registro da tabela, sendo a sua primeira coluna, ações disponíveis para aquele registro.
Ao clicarmos no botão "Novo Registro Mestre", iremos abrir a tela de registro em branco.
Tabela Secundaria
Possui basicamente a mesma estrutura da tabela mestre - link aki, porem, com duas pequenas diferenças:
- Possui um contador de registros selecionados após a descrição da tabela e o botão "Novo registro" irá abrir um modal para que possamos criar este novo registro - link aki;
- Caixa de seleção para selecionarmos quais registros desejamos editar.
Registro em Branco
Esta tela possui apenas o componente de Modal com os campos para criarmos um novo registro da tabela Mestre.
- Titulo do Modal;
- Formulário para criação do registro;
- Botão de ação para persistir as alterações.
Como utilizar
Edição de registros:
Mestre
Para editarmos o nosso registro principal basta acessar a tela de edição em lote e clicar em cima do unico registro que estará disponivel:
Feito isso o modal de edição irá aparecer na tela:
Agora basta inserirmos os dados que queremos alterar e clicar em confirmar para persistir as alterações.
Secundarios
Para editarmos registros secundários, devemos acessar a tabela destes registros através das abas na edição em lote, feito isso, selecionamos quais registros queremos editar e por fim clicamos em cima de qualquer um dos registros, novamente o modal de edição irá surgir, porem ao persistir as mudanças as alterações serão aplicadas em todos os registros marcados como selecionados:
Inserção de registros:
Mestre
Para inserirmos um novo registro "Mestre":
- Acessar a tabela principal através das abas na edição em lote;
- Clicar no botão "Novo Registro Mestre" - isto fará com que pagina de inserção de registro em branco sejá aberta
- Na pagina que abriu, inserimos os dados do registro;
- Clicamos em confirmar para persistir as alterações;
- Caso a inserção seja concluída com sucesso, o usuário será redirecionada para tela de edição em lote do novo registro.
Secundários
Para inserirmos novos registros secundários:
- Acessar a tabela secundaria através das abas na edição em lote;
- Clicamos no botão "Novo Registro" - o modal para inserção dos dados do registro irá aparecer;
- Inserimos os dados e clicamos em confirmar para persistir as alterações.
Caso tudo ocorra bem, uma mensagem de sucesso ira aparecer na tela e a lista de registros será atualizada.
Clonagem:
- Clique no ícone de clonagem de registro que fica na coluna de ações do registro;
- Confirme a ação;
- Uma mensagem de sucesso será exibida caso de certo;
- A lista será atualizada com o novo registro.
Deletando registros:
- Clique no ícone de "X" que fica na coluna de ações do registro;
- Confirme a ação;
- Uma mensagem de sucesso será exibida caso de certo;
- A lista será atualizada com o registro removido.
A clonagem e exclusão de registros só são possiveis em tabelas secundarias {.is-warning}
Configurações adicionais
Algumas configurações extras podem ser feitas para tratar alguns comportamentos do nosso componente de edição em lote, essas configurações devem ser adicionadas dentro da propriedade batch no nfs_core_ds_tabela da nossa tabela mestre:
/** Valor padrão deve ser um objeto vazio*/
{
"batch": {}
}
Batch é o nome interno do componente de edição em lotes e significa 'Lote', na área de T.I este termo tambem pode ser associado a um conjunto de comandos executados em lote(sequencialmente) por arquivos .bat ou .cmd. {.is-info}
Não exibir tabelas secundarias especificas:
Para remover alguma tabela que não queremos exibir na edição em lote, podemos utilizar a propriedade ignoreTables na nossa configuração do batch, sendo seu valor um array onde podemos passar quais serão as tabelas que serão ignoradas:
{
"batch": {
"ignoreTables":["APONTAMENTO_MO_MENSAGEM", "MO_APT_EQP"]
}
}
Exibir campos do sistema(SYS = 1)
Para adicionar um campo que não esta sendo exibido na tela de visualização, temos que adicionar na configuração do batch a propriedade displaySystemFields, a qual possui a seguinte estrutura:
/** Exibir o campo para todas as tabelas que o tiverem */
{
"batch":{
"displaySystemFields": {
"CAMPO":[]
}
}
}
/** Exibir o campo em tabelas especificas */
{
"batch":{
"displaySystemFields": {
"CAMPO":["TABELA1","TABELA2"]
}
}
}
Configurações de exibição: Lista/Edição/Inserção
Podemos configurar quais campos desejamos exibir em cada etapa do processo de edição em lote, para isso devemos primeiramente adicionar a propriedade customTableConfig na nossa configuração do batch e assim definirmos qual a tabela que desejamos fazer as configurações:
{
"batch":{
"customTableConfig":{
"MINHA_TABELA":{}
}
}
}
Lista de Registros
{
"batch":{
"customTableConfig":{
"MO_APT":{
"DISPLAY_FIELDS":[
"INI_DH",
"FIM_DH",
"INI_FIM_DIFF_STR",
"EFETIVO_FUNCIONARIO",
"OPERADOR",
"FUNCAO",
"OPER_GRUPO",
"OPER",
"INTERFERENCIA",
"TP_INTERFERENCIA",
"OBSERVACAO_INTERFERENCIA",
"FOLHA_TAREFA"
]
}
}
}
}
Modal de edição de registros
{
"batch":{
"customTableConfig":{
"MO_APT":{
"DISPLAY_FIELDS":[
"INI_DH",
"FIM_DH",
"INI_FIM_DIFF_STR",
"EFETIVO_FUNCIONARIO",
"OPERADOR",
"FUNCAO",
"OPER_GRUPO",
"OPER",
"INTERFERENCIA",
"TP_INTERFERENCIA",
"OBSERVACAO_INTERFERENCIA",
"FOLHA_TAREFA"
]
}
}
}
}
Modal de inserção de registros
{
"batch":{
"customTableConfig":{
"MO_APT":{
"INSERTABLE_FIELDS":[
"INI_DH",
"EFETIVO_FUNCIONARIO",
"OPERADOR",
"SEQ_DB_DEVICE_MASTER",
"SEQ_DB_DEVICE"
]
}
}
}
}
Exemplo de configuração completa
{
"batch":{
"ignoreTables":[
"APONTAMENTO_MO_MENSAGEM"
],
"displaySystemFields":{
"INI_FIM_DIFF_STR":[
"MO_APT"
]
},
"customTableConfig":{
"MO_APT":{
"DISPLAY_FIELDS":[
"INI_DH",
"FIM_DH",
"INI_FIM_DIFF_STR",
"EFETIVO_FUNCIONARIO",
"OPERADOR",
"FUNCAO",
"OPER_GRUPO",
"OPER",
"INTERFERENCIA",
"TP_INTERFERENCIA",
"OBSERVACAO_INTERFERENCIA",
"FOLHA_TAREFA"
],
"EDITABLE_FIELDS":[
"INI_DH",
"INI_FIM_DIFF_STR",
"EFETIVO_FUNCIONARIO",
"OPERADOR",
"FUNCAO",
"OPER_GRUPO",
"OPER",
"INTERFERENCIA",
"TP_INTERFERENCIA",
"OBSERVACAO_INTERFERENCIA",
"FOLHA_TAREFA",
"PROJETO",
"TIPO_APONTAMENTO",
"FOLHA_TAREFA2"
],
"INSERTABLE_FIELDS":[
"INI_DH",
"EFETIVO_FUNCIONARIO",
"OPERADOR",
"SEQ_DB_DEVICE_MASTER",
"SEQ_DB_DEVICE"
]
}
}
}
}