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.