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