Alguém com um momento para ajudar um iniciante com DiplayFields?

Eai galera, iniciei essa semana no desenvolvimento para Fluig e estou com uma dúvida para ocultar um campo em uma atividade específica.

Segue código:

<div class="panel panel-primary">
<div class="panel-heading">
	<h3 class="panel-title"><i class="fluigicon fluigicon-import icon-md"></i> Retorno Agência</h3>
</div>

<div class="panel-body">

	<div class="row">
		<div class="form-group col-md-12">
    		<label for="obsAG">Observações</label>
    		<textarea rows="6" name="obsAG" id="obsAG" placeholder="Deixe aqui suas observações, se necessário." class="form-control"></textarea>
		</div>
	</div>
</div>
</div>

Quero ocultar esse campo na primeira atividade do meu processo. Vi sobre o DisplayFields, porém não consegui implementar ele com sucesso. Alguém pode me passar uma explicação de como posso fazer?

1 curtida

Primeiro você precisa saber se está na atividade específica usando a função getValue("WKNumState").

Você pode desabilitar um campo usando a função form.setEnabled, mas para ocultar você utilizará a função form.setVisibleById.

Então você precisa dar um id para quem quer ocultar (no seu caso pode ser a div row ou a div form-group). Vamos assumir que vamos ocultar a row inteira e demos o id observacoesRow para ela.

/**
 * Define os campos que serão ocultados, desabilitados e seus valores iniciais
 *
 * Função executada antes de exibir o formulário.
 *
 * @param {FormController} form
 * @param {customHTML} customHTML
 */
function displayFields(form, customHTML) {
    var indiceAtividadeEspecifica = 5; // Precisa ver no diagrama qual é o ID da atividade
    var activity = parseInt(getValue("WKNumState"));

    if (activity == indiceAtividadeEspecifica) {
        form.setVisibleById("observacoesRow", false);
    }
}

Primeiro, obrigado pelo retorno.
Vamos lá

Verifiquei a ID da atividade no diagrama e adicionei a ID na div row, ficando dessa maneira:

	<div class="row" id="observacoesRow">
		<div class="form-group col-md-12">
    		<label for="obsAG">Observações</label>
    		<textarea rows="6" name="obsAG" id="obsAG" placeholder="Deixe aqui suas observações, se necessário." class="form-control"></textarea>
		</div>
	</div>

Porém ainda não ocultou o campo, onde poderia estar o erro no meu código?

Posta a sua função displayFields.

Você a criou na pasta events do formulário né?

Segue o DisplayFields, pelo que eu vi alí a pasta events está normal

Como é na Atividade Inicial pode ter uma particularidade que eu resolvi melhorando o IF em alguns processos.

if (form.getFormMode() == "ADD" || activity == indiceAtividadeEspecifica)) {
    form.setVisibleById("observacoesRow", false);
}

Assim ele oculta pra quando estiver adicionando um novo registro. Já percebi que o formulário tem umas particularidades quando é uma adição.

Normalmente eu mando ocultar todos os itens que tem mudança no tempo e mando exibir somente nas atividades corretas.

2 curtidas

Bruno, deu certo. Muito obrigado

Tenho mais uma dúvida aqui: Um dos campos que eu ocultei é obrigatório, porém em outra atividade do processo e não deixa eu passar para a próxima. É no DisplayFields que acerto isso também?

A parte de validações a gente faz no validateForm. Nele você pode validar em qual atividade está (igual ao feito na displayFields) pra determinar a obrigatoriedade.

1 curtida

Entendi, novamente muito obrigado pela ajuda Bruno