Botões importantes

Botão “Duplicar registro” na grade

Devido a necessidade cada vez mais constante de se criar registros com base em outros, foi criado o botão “Duplicar registro” para todas as grades.

O comportamento

Por padrão o botão “Duplicar registro” irá duplicar todos os campos com exceção da grade e dos campo que possuam os nomes IKEY, CHAVE, IVERSION e VERSAO. Os campos de nome ICODE, CODIGO, INAME e TITULO serão duplicados por padrão com a adição do sufixo “+”.

Este comportamento pode ser alterado definindo a propriedade duplicateMode do campo. Esta propriedade pode receber os seguintes valores:

  • DuplicateMode.NONE: o valor do campo não será duplicado.
  • DuplicateMode.COPY: o valor do campo será duplicado integralmente, caso este campo seja uma grade os dados dela serão duplicados seguindo o comportamento padrão do botão.
  • DuplicateMode.COPY_ADDING_SUFFIX: o valor do campo será duplicado com a adição do sufixo “+”.

Alterando o comportamento

Suponhamos que queremos que uma grade detalhe tenha seus dados duplicados para um novo registro e que os items do seu campo “detailField” não recebam sufixo. Podemos fazer como no código abaixo:

Exemplo:

const DuplicateMode = require('@nginstack/web-framework/lib/classdef/DuplicateMode');
const CLASS_KEY = 12345;

const grid = this.grid('masterGrid', classes.getCachedDataSet(CLASS_KEY), CLASS_KEY);
grid.on('defineFields', function (evt) {
  const field = evt.grid.field('detailGrid');
  field.duplicateMode = DuplicateMode.COPY;
  field.grid.on('defineFields', function (evt) {
    evt.grid.field('detailField').duplicateMode = DuplicateMode.COPY;
  });
});

grid.write();

Alterando o comportamento via x-class

É possível informar que uma determinada classe não pode ter seus dados duplicados por padrão ara isso basta adicionar um x-class na classe desejada e definir a propriedade canDuplicate.

Exemplo: this.canDuplicate = false;

Os eventos

Há dois eventos que são executados a cada clique no botão “Duplicar registro” são eles:

  • beforeDuplicate: Executado antes de iniciar o processo de duplicação do registro;
  • afterDuplicate: Executado ao terminar o processo de duplicação do registro;
const DuplicateMode = require('@nginstack/web-framework/lib/classdef/DuplicateMode');
const CLASS_KEY = 12345;

const grid = this.grid('masterGrid', classes.getCachedDataSet(CLASS_KEY), CLASS_KEY);
grid.on('defineFields', function (evt) {
  const field = evt.grid.field('detailGrid');
  field.duplicateMode = DuplicateMode.COPY;
  field.grid.on('defineFields', function (evt) {
    evt.grid.field('detailField').duplicateMode = DuplicateMode.COPY;
  });
});

grid.on('beforeDuplicate', function(evt) {
  evt.grid.process.alert('Duplicando registros');
});

grid.on('afterDuplicate', function(evt) {
  evt.grid.process.alert('Registros duplicados com sucesso');
});
grid.write();

Botão “Mostrar/Ocultar” chaves na grade

Devido a necessidade de se saber rapidamente a chave de um determinado registro, foi criado o botão “Mostrar/Ocultar chaves” na grade.

Por padrão o botão “Mostrar/Ocultar chaves” está habilitado em todas as grades, podendo ser desabilitado pelo desenvolvedor.

O comportamento

Ao clicar no botão “Mostrar/Ocultar chaves” o comportamento visual do campo definido pelo desenvolvedor será sobreposto, permitindo ficar visível mesmo que tenha sido ocultado em um determinado modo de visão da grade.

Caso haja o desejo de não mostrar as chaves de uma determinada grade, foi criada a propriedade Grid. prototype.enableToggleKeyButton, esta permite desabilitar o botão.

Exemplo:

const CLASS_KEY = 12345;

const grid = this.grid('masterGrid', classes.getCachedDataSet(CLASS_KEY), CLASS_KEY);
grid.enableToggleKeyButton = false;
grid.write();

Botão de pendências

O botão de pendências no perfil do usuário é responsável por mostrar a contagem de pendências atribuídas ao usuário logado e abrir um processo quando clicado.

Configuração

As configurações do botão de pendências são:

  • uwi.config.pendingTaskProcessKey: Chave do processo que será executado ao clicar no botão de pendências da interface.
  • uwi.config.pendingTaskCountFunction: Função que calcula o total de pendências do usuário.
  • uwi.config.pendingTaskUpdateTime: Tempo em minutos em que o ambiente deve efetuar uma nova contagem do total de pendências do usuário. Se esta configuração não for definida será assumido o tempo de 5 minutos.

Exemplo:

__includeOnce('ufs:/uwi/config/config.js');

const PROCESS_KEY = 12345;

uwi.config.pendingTaskUpdateTime = 10;
uwi.config.pendingTaskProcessKey = PROCESS_KEY;
uwi.config.onUpdateTaskCounter = function () {
  const taskCounter = FakeTaskCounter.getInstance();
  return taskCounter.count();
};

Esta configuração deve ser efetuada na inicialização da sessão em um arquivo do tipo x-startup, caso contrário, o sistema não ativará o controle do botão.