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é?
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:
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”.