Artículos sobre: Desarrolladores
Este artículo también está disponible en:

Visibilidad y obligatoriedad de campos por script

Introducción



Flokzu brinda una variedad de funciones que puedes emplear en tus scripts para personalizar la visibilidad de los campos. A continuación, encontrarás una lista de ejemplos de códigos para diversas acciones:


Funciones disponibles


Flokzu ofrece una serie de funciones que puedes utilizar en tus scripts para configurar la visibilidad de los campos:

*Ocultar un campo: Flokzu.setHiddren([[campo]])

*Establecer un campo como obligatorio: Flokzu.setRequired([[campo]])

*Establecer un campo como editable: Flokzu.setEditable([[campo]])

*Establecer un campo como de solo lectura: Flokzu.setReadOnly([[campo]])

*Setearle un valor a un campo: Flokzu.setFieldValue( [[campo]] , "valor" )

*Obtener el valor de un campo: Flokzu.getFieldValue([[campo]])

*Obtener todos las entradas de una columna de una tabla: Flokzu.getAllColumnValues([[campo::columna]])

*Ejecutar una función cuando se modifica el valor de un campo: Flokzu.onChange([[campo]] , función);

*Ejecutar una función cuando se modifica una entrada de un campo tabla: Flokzu.onTableChange([[campo::columna]], función);

*Ejecutar una función cuando se abre una instancia de proceso: Flokzu.onInit(función);

*Ejecuta una función cuando un usuario toma una decisión (botón seleccionado): Flokzu.onAction(función); La decisión tomada es guardada en el segundo parámetro de la función.

*Mostrar un mensaje de error en un campo: Flokzu.error([[campo]] , "mensaje");

*Obtener el correo electrónico del usuario logueado: Flokzu.currentUser();

*Obtener el id de un campo a partir de su nombre: Flokzu.getFieldByName("nombreCampo");


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 obtener más información sobre 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);

Actualizado el: 22/01/2024

¿Este artículo te resultó útil?

Comparte tu opinión

Cancelar

¡Gracias!