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:

  • uwi.field.DuplicateModes.NONE: o valor do campo não será duplicado.
  • uwi.field.DuplicateModes.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.
  • uwi.field.DuplicateModes.COPY_AND_SUFIX: 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 iName não recebam sufixo. Podemos fazer como no código abaixo:

Exemplo:

var grid = this.grid('Ambientes', connection.cloneLocalCacheByClass(-1892604132), -1892604132);

grid.onDefineFields.set(function (grid) {
  // grid.field('ToolbarItems') = field contendo a grade detalhe.
  var field = grid.field('ToolbarItems');
  field.duplicateMode = uwi.field.DuplicateModes.COPY;
  field.grid.onDefineFields(function (grid) {
    grid.field('iName').duplicateMode = uwi.field.DuplicateModes.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:

  • onBeforeDuplicate: Executado antes de iniciar o processo de duplicação do registro;
  • onAfterDuplicate: Executado ao terminar o processo de duplicação do registro;
var grid = this.grid('Ambientes', connection.cloneLocalCacheByClass(-1892604132), -1892604132);

grid.onDefineFields.set(function (grid) {
  // grid.field('ToolbarItems') = field contendo a grade detalhe.
  var field = grid.field('ToolbarItems');
  field.duplicateMode = uwi.field.DuplicateModes.COPY;
  field.grid.onDefineFields(function (grid) {
    grid.field('iName').duplicateMode = uwi.field.DuplicateModes.COPY;
  });
});

grid.onBeforeDuplicate.set(function(grid) {
  inherited(grid);
  grid.process.alert('Duplicando registros');
});

grid.onAfterDuplicate.set(function(grid) {
  inherited(grid);
  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:

var grid = this.grid('Ambientes', connection.cloneLocalCacheByClass(-1892604132), -1892604132);
grid.enableToggleKeyButton = false;
grid.write();

Botão de pendências

O botão de pendências na interface do sistema é 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:

uwi.config.pendingTaskUpdateTime = 10;
uwi.config.pendingTaskProcessKey = -1894835187;
uwi.config.onUpdateTaskCounter = function () {
  if (!session.notificacoesDoUsuario){
    session.notificacoesDoUsuario = new NotificacoesDoUsuario();
  }
  var contagem = session.notificacoesDoUsuario.contar();
  return contagem;
};

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.