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