Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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

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);
caso seja necessário ocultar o link como no caso de um usuário read-only(apenas permissão de select na tabela) adicione o parâmetro: ;disabledReadOnly:true; ao final da configuração mostrada acima.

Feito isso os ícones para edição em lote serão exibidos quando acessarmos o CRUD novamente, como no exemplo abaixo: b227c55f51e25789f6c5c3359296de82.png

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 c24c0e6a86eb757b2f763f74daf0e3c8.png

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: 24eae3d5545d8ba9ade87d3950637074.png e8367de109e1a2e9310147effa1626f2.png

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.

5b1113782e84ce12ab2acc8dd3dd8af3.png

Legendas:

  1. Titulo do componente de edição em lote: EDIÇÂO EM LOTE {DESCRIÇÂO DA TABELA MESTRE};
  2. Tab atual, esta ficará marcada com um tom de cinza mais escuro;
  3. Outras tabs disponíveis;
  4. Descrição da tabela seguida pelos botões de ação "Novo Registro Mestre" e "Recarregar registros" sucessivamente;
  5. Pesquisa geral: pesquisa em todas as colunas da tabela;
  6. Filtro por coluna: Filtra os itens de acordo com a pesquisa feita nos inputs relacionados a cada coluna;
  7. 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

17e43b15a7d23f070f5e7139b4f0194d.png Possui basicamente a mesma estrutura da tabela mestre - link aki, porem, com duas pequenas diferenças:

  1. 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;
  2. 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. fd879a6826cc17769375a5b658b0a0db.png

  1. Titulo do Modal;
  2. Formulário para criação do registro;
  3. 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: 178663873a7e62e3d375a15ebaa87003.png

Feito isso o modal de edição irá aparecer na tela: f1bd21a810e9a2e0b63c140e74995f83.png

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: 6732ab280e32f6279199ed83696c6f4c.png

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. creation

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"
            ]
         }
      }
   }
}
{
   "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"
            ]
         }
      }
   }
}
{
   "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"
            ]
         }
      }
   }
}