DisplayFields - script não funciona

Pessoal, conheço pouco de JS e estou iniciando no desenvolvimento para Fluig. Tenho uma questão que não estou compreendendo e gostaria do apoio. É o seguinte, copiei um script de exemplo da internet onde retorna a data atual, executando ele pelo console funciona ok, mas ao incorporá-lo no meu formulário (criei um arquivo js na raiz do formulário) e referenciá-lo no formulário, ao chamar a função no evento displayFields, recebo o erro: "Erro ao executar o evento displayFields não foi implementado para o fichário x versão y".

Segue trechos do código:

Referências no formulário:

...

function dataAtual() { var data = new Date(); var dia = data.getDate(); var mes = data.getMonth() + 1; var ano = data.getFullYear();

dia = (dia<=9 ? "0"+dia : dia); mes = (mes<=9 ? "0"+mes : mes);

var newData = dia+"/"+mes+"/"+ano;

return newData; }

function displayFields(form, customHTML){ var hoje = dataAtual(); console.log(hoje); }

Acho que o problema de quebra ocorria pelo console.log. Os eventos rodam no lado servidor e não no browser. Você deve trocar por log.info.
Para ver a mensagem é necessário baixar o log do servidor. Painel de controle → Controle de Log

Olá.

Caso a função dataAtual não esteja no arquivo displayFields.js, ela não será chamada.

Eu costumo colocar dentro da própria função displayFields a formatação de data e hora.


    // Buscar a data e hora atual
    var data   = new Date();
    var dia    = data.getDate();
    var mes    = data.getMonth() + 1;
    var ano    = data.getFullYear();
    var hora   = data.getHours();
    var min    = data.getMinutes();
    var seg    = data.getSeconds();

    if(dia < 10) {dia = "0" + dia;}
    if(mes < 10) {mes = "0" + mes;}
    if(hora < 10){hora = "0" + hora;}
    if(min < 10) {min = "0" + min;}
    if(seg < 10) {seg = "0" + seg;}

    dataHoje = dia+ '/' +mes+ '/' +ano+' - '+hora+ ':' +min;

Dessa forma tenho a variável dataHoje formatada e pronta pra colocar em um input do form.


    form.setValue("txtDataSolicitacao", dataHoje);

Anderson, desde já obrigado meu caro, funcionou, no entanto sabe se há alguma forma de reproveitar a função ? Ou toda vez será necessário ter que incorporá-la no evento de cada formulário ?

Edgard se a resposta resolveu seu problema não esqueça de marcar como resolvido.

Edgard, eu sempre incluo esse trecho nos meus fontes pois é chato ficar criando formas para reaproveitar funções simples como essa. Abraço.

Pelo que entendi todos os arquivos dos eventos são convertidos em Java e executados dentro do Fluig ao invés do Navegador, por isso não tem como reaproveitar.

No máximo dá pra aproveitar o parâmetro customHTML para inserir funções que serão executadas no navegador. Por exemplo eu tenho funções que desabilitam e ocultam vários itens do meu formulário em um arquivo form.js, o qual referenciei no meu formulário com a tag script.

Aí no displayFields.js eu faço isso:


displayFields(form, customHTML) {
    var activity = getValue('WKNumState');

    if (activity == 1 || activity == 0) {
        customHTML.append('<script>trataItensAtividadeInicial();</script>');
    }
}

Mas não é possível declarar a função no arquivo que será executado no navegador para reaproveitá-la nos eventos justamente por ter sido convertida pra Java.

Fluig é chato justamente por isso de ficar reescrevendo tudo.