Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Ajustes gerais de pequenos erros.

...

Bloco de código
languagejs
form.getValue("nome-do-campo")

Exemplo:

Bloco de código
languagejs
function afterSaveNew(form) {
  log.info("Colaborador de abertura: " + form.getValue("RNC_colab_abertura"));
}

...

Bloco de código
languagejs
form.setValue(“nome-do-campo”, “valor”);

Exemplo:

Bloco de código
languagejs
function displayFields(form, customHTML) {
   if ( form.getFormMode() == “MOD” ) {
     form.setValue('RNC_colab_abertura', new java.lang.Integer(1));
   }
}

Ainda no evento displayFields é possível utilizar três métodos de forma independente ou conjunta para alterar a forma de como é apresentada a renderização do formulário, eliminar linhas de um formulário filho e ocultar os botões “Imprimir” e “Imprimir em nova Janela”.

  • Para visualizar o formulário no formato original com os campos desabilitados, deve-se utilizar o método setShowDisabledFields.
  • Para habilitar ou desabilitar o botão de excluir nas linhas do formulário filho, que por padrão é habilitado, deve-se utilizar o método setHideDeleteButton.
  • Para ocultar o os botões Imprimir Imprimir em nova Janela, deve-se utilizar o método setHidePrintLink.



Exemplo de visualização sem a utilização dos métodos:

Exemplo de utilização dos métodos métodos setShowDisabledFields e setHidePrintLink:

Bloco de código
languagejs
function displayFields(form, customHTML) {
   form.setShowDisabledFields(true);
   form.setHidePrintLink(true);
}

Exemplo de visualização sem a utilização do método setHideDeleteButton:

comdelete.png

Exemplo de utilização do método método setHideDeleteButton:

Bloco de código
languagejs
function displayFields(form, customHTML) {
   form.setHideDeleteButton(false);
}

Exemplo de utilização dos métodos setVisible e setVisibleById:

Bloco de código
languagejs
function displayFields(form, customHTML) { 
   form.setVisible("campoA", false);
   form.setVisibleById("linha___1", false);
}

...

Para que os dados sejam carregados e apresentados em tela, principalmente em dispositivos mobile, é necessário chamar as funções que irão carregá-los dentro de uma estrutura de read.

A invocação dos métodos que irão popular o formulário deve estar contida dentro de uma chamada $(function(), garantindo assim o carregamento dos arquivos exigidos pelo formulário antes das funções.

Por exemplo, deseja-se carregar dados de produtos em um formulário. Para que isto ocorra, foi criada uma função loadProdutos() que irá preencher um grid inserido no formulário HTML. Neste caso a chamada desta função dentro do displayFields ficaria:

Bloco de código
languageactionscript3
customHTML.append('<script>');
customHTML.append('$(function(){');
customHTML.append("loadProdutos();");
customHTML.append('});');
customHTML.append('</script>');

...

Onde “true” habilita o campo e “false” desabilita o campo.

Exemplo:

Bloco de código
languagejs
 function enableFields(form) {
    if ( form.getFormMode() != 'ADD' ){   
        form.setEnabled("rnc_area",false);
        form.setEnabled("rnc_tipo_ocorrencia",false);
    }
}

...

Nota
titleFique atento!

Mesmo utilizando a função setEnable, ainda existe a possibilidade de algum usuário conseguir visualizar informações do campo formulário oculto, utilizando de recursos como a ferramenta de inspeção de código dos navegadores.

...

Ao proteger um campo desabilitado, ele não terá o seu valor alterado no registro de formulário. Para isso, informe o valor true para o parâmetro protect do método setEnabled conforme o exemplo abaixo:

...

Também é possível utilizar o método setEnhancedSecurityHiddenInputsmétodo setEnhancedSecurityHiddenInputs, que faz com que todos os campos desabilitados pelo método setEnabled fiquem protegidos:

Bloco de código
languagejs
function enableFields(form) { 
    if ( form.getFormMode() != 'ADD' ){   
		form.setEnhancedSecurityHiddenInputs(true); 
        form.setEnabled("rnc_cod_ocorrencia",false);
    }
}
Nota
titleAtenção!

O método setEnhancedSecurityHiddenInputs só protegerá campos desabilitados após a sua executação execução no evento.



inputFields

Esse evento é disparado no momento em que os dados do formulário são passados para a BO responsável por formulário do fluig. O evento recebe como parâmetro uma referência ao formulário da definição de formulário. Exemplo 

Exemplo:

Bloco de código
languagejs
function inputFields(form){
}
Nota
titleAtenção!

 Este evento pode ser usado para que as datas persistidas por formulários customizados sejam salvas corretamente. Hoje no sistema as datas salvas através de formulários pelo navegador Chrome são salvas com tem o padrão americano (yyyy-mm-dd), enquanto as datas nos demais navegadores são salvas com tem o padrão brasileiro (dd/mm/yyyy). Para empresas que utilizam múltiplos navegadores e querem que os dados de data estejam padronizados, recomendamos a utilização do evento inputFields com o seguinte trecho de código.

Bloco de código
languagejs
titleCódigo para Datas
function inputFields(form) { 

var regEx = /^\d{4}-\d{2}-\d{2}$/; 

if (form.getValue("dt_solicitacao").match(regEx)) { 
var split = form.getValue("dt_solicitacao").split('-'); 
form.setValue("dt_solicitacao", split[2] + '-' + split[1] + '-' + split[0]); 
} 

}

...

Esse evento pode ser executado em diferentes eventos das definições de formulário. Este evento não é implementado automaticamente na customização da definição de formulário. Exemplo 

Exemplo:

Bloco de código
languagejs
function setEnable() {
  log.info(“Teste de chamada de função”);
}
 
function displayFields(form, customHTML) {
  setEnable();
}

...

Informações

A partir da atualização fluig 1.5.10, para quebrar a linha na mensagem de validação deve ser utilizado o padrão \n.

Exemplo:

Bloco de código
languagejavascript
function validateForm(form) {
   if (form.getValue('RNC_colab_abertura') == null){
     throw "O colaborador de abertura não foi informado";
   }   
}  

...

É o último evento a ser disparado para o formulário. O evento recebe como parâmetro uma referência ao formulário da definição de formulário.

Exemplo:

Bloco de código
languagejs
function afterProcessing(form){
}

No contexto deste evento a variável form pode ser usada utilizada somente para consulta aos campos da definição de formulário, seus valores e estado de apresentação.

beforeProcessing

Esse evento é o primeiro a ser disparado. Ocorre antes de qualquer outro evento da definição de formulário. O evento recebe como parâmetro uma referência ao formulário da definição de formulário. 

Exemplo:

Bloco de código
languagejs
function beforeProcessing(form){
}

...

É executado quando o usuário pressiona o botão Movimentar antes de serem exibidas as opções de movimentação do formulário.

Nota
titleFique atento!

O beforeMovementeOptions possui eventos que são ativados somente na tela de movimentações workflow. Seus eventos precisam ser descritos dentro do próprio arquivo HTML do formulário.

...

numStatenúmero da atividade atualint
Propriedade
Descrição
Tipo


Exemplo de implementação:

Bloco de código
languagejs
<script>
var beforeMovementOptions = function(numState) {
console.log("_________________ beforeMovementOptions");
console.log("numState: " + numState);
console.log("valor campo: " + document.form.c7_total.value);
if (document.form.c7_total.value == '') {
throw ("Erro: nenhum valor selecionado!");
}
return true;
}
</script>


...

Ocorre antes da solicitação ser movimentada, após já ter sido selecionada a atividade destino , o usuário e demais informações necessárias à solicitação.

Nota
titleFique atento!

Ao utilizar o evento beforeSendValidate, o mesmo será executado apenas em solicitações de processos.

O beforeSendValidate possui eventos que são ativados somente na tela de movimentações workflow. Seus eventos precisam ser descritos dentro do próprio arquivo HTML do formulário.

...

Exemplos de implementação:

Bloco de código
languagejs
<script>
var beforeSendValidate = function(numState,nextState){
    console.log("-beforeSendValidate-");
    console.log("numState: " + numState);
    console.log("nextState: " + nextState); 
    throw("Erro Xyz");
}
</script>
Bloco de código
languagejs
<script>
var beforeSendValidate = function(numState,nextState){
    console.log("-beforeSendValidate-");
    console.log("numState: " + numState);
    console.log("nextState: " + nextState); 
    var isOk = confirm("Deseja realmente enviar o processo ?");
    return isOk;
 }
</script>


...

Para facilitar a manipulação dos dados em uma customização de formulário que faz uso da técnica Pai Filho, foram disponibilizados os métodos listados a seguir. Ambos são chamados a partir do objeto form que é passado como parâmetro nas funções de customização de formulários.


getChildrenFromTable

Esse evento retorna um mapa com todos os campos filhos de um Pai Filho a partir do seu tablename.


getChildrenIndexes

Esse evento retorna os índices dos registros (linhas) contidos em um Pai Filho a partir do seu tablename.


Exemplo:

Bloco de código
languagejava
themeEclipse
function validateForm(form){
    var indexes = form.getChildrenIndexes("tabledetailname");
    var total = 0;
    for (var i = 0; i < indexes.length; i++) {
        var fieldValue = parseInt(form.getValue("valor___" + indexes[i]));
        if (isNaN(fieldValue)){
            fieldValue = 0;
        } 
        total = total + fieldValue;
        log.info(total);
    }
    log.info(total);
    if (total < 100) {
        throw "Valor Total da requisição não pode ser inferior a 100";
    }
}



enableFields

Para utilizar o evento enableFields em um formulário Pai x Filho, é necessário ter o índice da linha a qual o campo a ser desabilitado pertence.

Uma forma de obter essa informação é através do método getChildrenIndexes conforme exemplo a seguir:

...