This article is also available in:
Introducción

La visibilidad por script permite configurar visibilidades dinámicas para los campos del formulario. Así, puedes definir si ciertos campos deben ser requeridos, editables, solo lecutra u ocultos en base al valor de otro campo o a la decisión tomada en cierta tarea.

Funciones disponibles
Flokzu ofrece las siguientes funciones para utilizar en los scripts:

Flokzu.setHidden( [[campo]] ); //Oculta un campo
Flokzu.setRequired( [[campo]] ); //Establece al campo como obligatorio/requerido
Flokzu.setEditable( [[campo]] ); //Establece al campo como editable
Flokzu.setReadOnly([[campo]]): //Establece al campo como Solo Lectura
Flokzu.setFieldValue( [[campo]] , "valor" ); //Establece ese "valor" al campo
Flokzu.getFieldValue( [[campo]] ); //Obtiene el valor de un campo
Flokzu.getAllColumnValues( [[campo::columna]] ); //Obtiene todos los valores de una columna de una tabla.
Flokzu.onChange( [[campo]] , función); //Cuando el valor de un campo cambia, la función es ejecutada.
Flokzu.onTableChange( [[campo::columna]], función); //Cuando el valor de una columna cambia, la función es ejecutada.
Flokzu.onInit(función); //La función es ejecutada cuando el formulario es iniciado (por ejemplo cuando la página es cargada).
Flokzu.onAction(función) //La función es ejecutada cuando un botón de decisión es clickeado (por ejemplo: decisión tomada). El valor del botón es guardado en el segundo parámetro de la función).
Flokzu.error( [[campo]] , "mensaje" ); //Si el campo genera cumple la condición del error, el correspondiente mensaje será mostrado.
Flokzu.currentUser(); //Retorna el correo electrónico del usuario logueado.
Flokzu.getFieldByName( "nombreCampo" ); //Retorna el id del campo en base a su nombre.

Los nombres de los campos y botones deben ser escritos en la misma forma en que se muestran en el formulario, respetando mayúsculas, minúsculas, espacios y caracteres especiales que se hayan utilizado.

Acerca del desarrollo de scripts en Flokzu

Para conocer más acerca de la API JavaScript que ofrece Flokzu, los métodos disponibles y las bases de la metodología de desarrollo de los mismos, debes revisar este post .

Metodología para el desarrollo de scripts de visibilidad

Salvo las funciones de la API de Flokzu y la forma especial de referenciar los campos utilizanado [[ ]], el resto del código es JavaScript y se rige por las reglas de desarrollo Javascript.

Un script de visibilidad es básicamente un conjunto de funciones que determina bajo qué condiciones hay que modificar la visibilidad de un campo.

Además, cada función debe suscribirse al campo que quiere "escuchar" para que al cambiar el valor de ese campo, se ejecute la función automáticamente. Si una función debe ejecutarse ni bien se abre la instancia de proceso (ej.: para ocultar un campo), además deberá suscribirse mediante el método Flokzu.onInit.

REGLA: Para poder modificar la visibilidad de un campo en tiempo real, dependiendo de otros campos, el campo cuya visibilidad cambiará dinámicamente debe estar configurado como editable en el proceso (para la tarea que tenga el script). Caso contrario, por más que se modifique la visibilidad por script no se comportará adecuadamente.

Estructura del script

1) Escribir todas las funciones necesarias para configurar la visibilidad dinámica.
Para definir una función debes escribir:
function nombreFuncion(){ ... contenido de la función ... }

2) Suscribir las funciones a los campos correspondientes y/o al evento de inicialización. Las suscripciones deben estar dejabo de la definición de la función.

//Suscribirse a un campo para ejecutar una función
Flokzu.onChange( [[nombre campo]] , nombreFuncion );

//Suscribirse al evento de inicio
Flokzu.onInit(nombreFuncion);

¿Dónde situar el script?

1) Durante la creación o edición del proceso debes hacer clic en el botón de Visibilidad y Scripts que se encuentra en la pestaña Formulario.



2) Dentro del pop-up de visibilidad debes hacer clic en la pestaña Scripts y luego seleccionar la tarea donde quieres que el script se ejecute.
Por último, pones el script allí y Flokzu lo evaluará si todo está correcto te dejará continuar. Si hay algún error Flokzu te notificará de la ubicación del error.



Los scripts pueden ser aplicados en la tarea de inicio, como también en las intermedias o en los estados finales.

-Master Script- El script que se defina allí será embebido en todas las tareas activas del proceso (no estados finales). Esto es muy útil cuando hay un comportamiento que debe ser aplicado en todas las etapas del proceso.




Ejemplos

Ejemplo según valor de un campo

En este ejemplo, tenemos un campo combo manual llamado "Estado Civil" y cuando un usuario selecciona la opción "Otro", se mostrará el campo "Por favor especifique" (requerido). En caso contrario ese campo estará oculto.

En primer lugar definimos la siguiente función:

//Function maritalStatus para evaluar el contenido del campo "Estado Civil"
function maritalStatus(){
if ( Flokzu.getFieldValue( [[Estado Civil]] ) == "Otro" ){
//Establecemos el campo como requerido
Flokzu.setRequired( [[Por favor especifique]] );
} else {
// En cualquier otro caso, el campo será oculto
Flokzu.setHidden( [[Por favor especifique]] );
}
};

Luego es necesario suscribir a la función al campo correspondiente:

//Debemos "escuchar" el campo "Estado Civil" y cuando cambie ejecutar la funcion.
Flokzu.onChange( [[Estado Civil]] , maritalStatus);

//Dado que el campo "Estado Civil" estará editable (por REGLA), queremos que ni bien se abra la instancia de proceso, si el valor no es "Otro", quede oculto. Por eso hay que suscribir a la función al evento de inicio.
Flokzu.onInit( maritalStatus );


Resultado final




Ejemplo según botón seleccionado

A veces la visibilidad de un campo dependerá de la decisión tomada. Por ejemplo, si se decide rechazar una solicitud podemos establecer que el campo "Motivo de rechazo" sea obligatorio. En cambio, si se aprueba ese campo estará oculto.
En ese caso la función tiene 2 parámetros que pueden ser utilizados para consultar que decisión (botón) se ha elegido:

function test(msg,boton){
if(boton== "Rechazar"){
Flokzu.setRequired([[Motivo de Rechazo]]);
}
else{
Flokzu.setHidden([[Motivo de Rechazo]]);
}
}

Flokzu.onAction(test);
¿Este artículo te resultó útil?
Cancelar
¡Gracias!