Just wondering if there is any script I can use in Behaviours or script runner which allow me to hide show required fields depending upon selected options in select custom field.
For more details:
Have two Select fields:
Group name and Type
Depending upon these two values, I have behaviour set up to show and hide fields.
But the issue is there are some required fields which are not required in other selected options and that don’t let me create the issue.
If there is any way I can make the fields required as well as hide them that would be great!!
Here is the code:
import com.onresolve.scriptrunner.runner.rest.common.CustomEndpointDelegate
import com.atlassian.jira.component.ComponentAccessor
import groovy.json.JsonBuilder
import groovy.transform.BaseScript
import groovyx.net.http.ContentType
import groovyx.net.http.HTTPBuilder
import groovyx.net.http.Method
import javax.ws.rs.core.MultivaluedMap
import javax.ws.rs.core.Response
import com.onresolve.jira.groovy.user.FieldBehaviours
import com.onresolve.jira.groovy.user.FormField
def Linkedissues = getFieldById("customfield_13310")
def Assignee = getFieldById("customfield_13310")
def Reporter = getFieldById("customfield_13310")
def FixVersion = getFieldById("customfield_13310")
def ApproximateEffort = getFieldById("customfield_13609")
def RequirementImpact = getFieldById("customfield_14796")
def DecisionDueDate = getFieldById("customfield_14594")
def AffectedProducts = getFieldById("customfield_14794")
def AffectedConstellations = getFieldById("customfield_14595")
def AffectedCustomers = getFieldById("customfield_14596")
def RiskofDefect = getFieldById("customfield_14795")
def Riskoffix = getFieldById("customfield_14605")
def Action = getFieldById("customfield_14797")
def Reason = getFieldById("customfield_14599")
def Impact = getFieldById("customfield_14791")
def CostImpact = getFieldById("customfield_14792")
def RiskImpact = getFieldById("customfield_14793")
def DocumentWorkInstructions = getFieldById("customfield_14601")
def Type = getFieldById("customfield_14593")
def selectedOption = Type.getValue() as String
log.debug "Selected option: $selectedOption"
if (selectedOption == "Defect") {
//DecisionDueDate.setRequired(true)
DecisionDueDate.setHidden(false)
//AffectedProducts.setRequired(true)
AffectedProducts.setHidden(false)
//AffectedConstellations.setRequired(true)
AffectedConstellations.setHidden(false)
//AffectedCustomers.setRequired(true)
AffectedCustomers.setHidden(false)
//RiskofDefect.setRequired(true)
RiskofDefect.setHidden(false)
//Riskoffix.setRequired(true)
Riskoffix.setHidden(false)
//RequirementImpact.setRequired(true)
RequirementImpact.setHidden(false)
}
else {
if(DecisionDueDate.value || AffectedProducts.value || AffectedConstellations.value || AffectedCustomers.value || RiskofDefect.value || Riskoffix.value || RequirementImpact.value)
{
DecisionDueDate.setFormValue(null)
AffectedProducts.setFormValue(null)
AffectedConstellations.setFormValue(null)
AffectedCustomers.setFormValue(null)
RiskofDefect.setFormValue(null)
Riskoffix.setFormValue(null)
RequirementImpact.setFormValue(null)
}
ApproximateEffort.setHidden(true)
ApproximateEffort.setRequired(false)
DecisionDueDate.setHidden(true)
DecisionDueDate.setRequired(false)
AffectedProducts.setHidden(true)
AffectedProducts.setRequired(false)
AffectedConstellations.setHidden(true)
AffectedConstellations.setRequired(false)
AffectedCustomers.setHidden(true)
AffectedCustomers.setRequired(false)
RiskofDefect.setHidden(true)
RiskofDefect.setRequired(false)
Riskoffix.setHidden(true)
Riskoffix.setRequired(false)
RequirementImpact.setHidden(true)
RequirementImpact.setRequired(false)
}
if (selectedOption == "Scope Change") {
Linkedissues.setHidden(false)
//Linkedissues.setRequired(true)
Assignee.setHidden(false)
//Assignee.setRequired(true)
Reporter.setHidden(false)
//Reporter.setRequired(true)
//ApproximateEffort.setHidden(!selectedOption).setRequired(true)
DecisionDueDate.setHidden(false)
//DecisionDueDate.setRequired(true)
Action.setHidden(false)
//Action.setRequired(true)
Reason.setHidden(false)
//Reason.setRequired(true)
Impact.setHidden(false)
CostImpact.setHidden(false)
RiskImpact.setHidden(false)
}
else {
if(Linkedissues.value || FixVersion.value || ApproximateEffort.value || DecisionDueDate.value || Action.value || Reason.value || Impact.value || CostImpact.value|| RiskImpact.value || Assignee.value || Reporter.value)
{
Linkedissues.setFormValue(null)
Assignee.setFormValue(null)
Reporter.setFormValue(null)
//ApproximateEffort.setFormValue(null)
DecisionDueDate.setFormValue(null)
Action.setFormValue(null)
Reason.setFormValue(null)
Impact.setFormValue(null)
CostImpact.setFormValue(null)
RiskImpact.setFormValue(null)
FixVersion.setFormValue(null)
}
Linkedissues.setHidden(true)
Assignee.setHidden(true)
Reporter.setHidden(true)
//ApproximateEffort.setHidden(true)
DecisionDueDate.setHidden(true)
Action.setHidden(true)
Action.setRequired(false)
Reason.setHidden(true)
Reason.setRequired(false)
Impact.setHidden(true)
CostImpact.setHidden(true)
RiskImpact.setHidden(true)
FixVersion.setHidden(true)
}
if (selectedOption == "Process") {
Linkedissues.setHidden(false)
Assignee.setHidden(false)
Reporter.setHidden(false)
ApproximateEffort.setHidden(false)
DecisionDueDate.setHidden(false)
DocumentWorkInstructions.setHidden(false)
}
else {
if(Linkedissues.value || FixVersion.value || ApproximateEffort.value || DecisionDueDate.value || DocumentWorkInstructions.value || Assignee.value || Reporter.value)
{
Linkedissues.setFormValue(null)
Assignee.setFormValue(null)
Reporter.setFormValue(null)
ApproximateEffort.setFormValue(null)
DecisionDueDate.setFormValue(null)
DocumentWorkInstructions.setFormValue(null)
FixVersion.setFormValue(null)
}
Linkedissues.setHidden(true)
Assignee.setHidden(true)
Reporter.setHidden(true)
ApproximateEffort.setHidden(true)
DecisionDueDate.setHidden(true)
DocumentWorkInstructions.setHidden(true)
FixVersion.setHidden(true)
}
Hello @Jyoti Karwal
Where do you place this script?
Hi Mark,
I placed this Script in Behaviour Plugin, serverside scripting.
Thanks !
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Yes! Do you put it in Initialiser function or attached to a field? Can you provide screenshot of configuration?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.