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.