es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Hacer que los campos sean obligatorios según el valor de otro campo – Groovy

Estoy tratando de crear un comportamiento en Jira que verifica si un campo (“Call #1”) no está vacío y, si es así, hace que otros dos campos sean obligatorios.
Esto fue escrito en ScriptRunner (Groovy)

import com.onresolve.jira.groovy.user.FieldBehaviours
import com.onresolve.jira.groovy.user.FormField
import com.atlassian.jira.component.ComponentAccessor

def customFieldManager = ComponentAccessor.getCustomFieldManager()
def optionsManager = ComponentAccessor.getOptionsManager()

// Obtener el campo Call #1
FormField call1 = getFieldByName('Call #1')

// Obtener el campo Role #1
FormField role1 = getFieldByName('Role #1')

// Obtener el campo Call result #1
FormField callResult1 = getFieldByName('Call result #1')

if (call1.getValue() != null) {
   role1.setRequired(true)
   callResult1.setRequired(true)
}

No estoy seguro de por qué, pero está haciendo que tanto los campos “Role #1” como “result #1” sean obligatorios desde el principio, incluso si “Call #1” está vacío. ¿Alguien sabe por qué?

Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema con el script proporcionado es que marca los campos “Rol #1” y “Resultado de la llamada #1” como obligatorios en función de la presencia de un valor en el campo “Llamada #1” en cualquier momento. Por lo tanto, incluso si inicialmente no hay ningún valor en el campo “Llamada #1”, el script marcará los otros campos como obligatorios cuando se renderice el formulario.

    Para solucionar este problema, el script solo debe marcar los otros campos como obligatorios cuando se proporcione un valor para “Llamada #1”. Una forma de lograr esto es agregar una comprobación de un valor vacío en “Llamada #1” antes de establecer el indicador “required” para los otros campos.

    Aquí hay una versión actualizada del script que implementa esta solución:

    import com.onresolve.jira.groovy.user.FieldBehaviours
    import com.onresolve.jira.groovy.user.FormField
    import com.atlassian.jira.component.ComponentAccessor
    
    def customFieldManager = ComponentAccessor.getCustomFieldManager()
    def optionsManager = ComponentAccessor.getOptionsManager()
    
    // Obtener el campo Llamada #1
    FormField call1 = getFieldByName('Llamada #1') 
    
    // Obtener el campo Rol #1
    FormField role1 = getFieldByName('Rol #1') 
    
    // Obtener el campo Resultado de la llamada #1
    FormField callResult1 = getFieldByName('Resultado de la llamada #1') 
    
    if (call1.getValue() != null && !call1.getValue().toString().isEmpty())
    {
       role1.setRequired(true)   
       callResult1.setRequired(true)
    }
    else
    {
       role1.setRequired(false)   
       callResult1.setRequired(false)
    }
    

    Este script actualizado primero verifica si el campo “Llamada #1” tiene un valor que no sea nulo ni vacío. Si esta condición es verdadera, establece el indicador “required” para los otros campos. De lo contrario, restablece el indicador “required” para estos campos como falso. Con este cambio, los otros campos solo deben ser obligatorios cuando se proporcione un valor para “Llamada #1”.

Comments are closed.