Como estender a interação showVariables de um layout
Todo relatório no Sistema UNUM é, na verdade, um processo com interactions e activities pré-definidas, de acordo com a seguinte estrutura básica:
interaction showVariables
interaction run
interaction writeLayout
Existem ainda outras interações auxiliares responsáveis pelo envio de e-mail, exportação do layout para texto, dentre outras.
Nesse artigo, iremos compreender como estender a interação showVariables, que é primeira interação chamada ao ser aberto um relatório, e que é responsável pela montagem da grade de variáveis visando a execução do layout.
Um caso prático:
this.help = 'Esse layout mostra como é possível estender a interação "showVariables"
para, por exemplo, alterar os botões ou escrever um texto antes da
grade principal.';
var fld = vars.field("variavelA", "integer");
fld.help = '.';
fld = vars.field("variavelB", "integer");
fld.help = '.';
fld = vars.field("variavelC", "integer");
fld.help = '.';
this.interaction( 'showVariables', function () {
var label = this.label(this.help + "<br><br>");
label.write();
inherited();
this.visibleActions = ['run', 'NovaAção', 'printTxt', 'sendReport', 'export'];
});
this.activity("run", function () {
});
this.interaction("writeLayout", function () {
this.write('resultado');
});
this.activity('NovaAção', function () {
throw new Error('Ação nova executada com sucesso!');
});
O trecho de código destacado em vermelho, mostra a definição (opcional) da interaction showVariables.
1 - Observe que primeiro estamos escrevendo um label com um texto obtido da propriedade help do layout.
var label = this.label(this.help + "<br><br>");
label.write();
2 - Em seguida, a instrução 'inherited();' se encarrega de executar o que por padrão a interação em questão faz: que é escrever a grade de variáveis e definir as ações padrão. Se essa instrução não for executada, a grade de variáveis não será escrita.
inherited();
3 - Por fim, estamos redefinindo as ações que essa interação irá apresentar, acrescentando às ações já existentes, uma nova ação chamada 'NovaAção':
this.visibleActions = ['run', 'NovaAção', 'printTxt', 'sendReport', 'export'];
É importante atentar para os nomes das ações pré-definidas pelo SimpleLayout. São elas:
run
printTxt
sendReport
export