Hi Guys,
I am not a coder so I need some help here.
We are on Jira 8.5.x. We have a requirement. There are two select list custom fields.
Suppose Field1and Field2.
If I am selecting "A" from Field1 then Field2 should show these options: "Value1", "Value2"
And if I am selecting "B" from Field1 then Field2 should show: "Value3", "Value4"
I tried and created the below code but it is not working.
"
import com.atlassian.jira.component.ComponentAccessor
import static com.atlassian.jira.issue.IssueFieldConstants.RESOLUTION
def customFieldManager = ComponentAccessor.customFieldManager
def optionsManager = ComponentAccessor.optionsManager
def Field2 = getFieldById("customfield_10500")
def Field1 = getFieldById("fieldchanged")
def Field2Value = customFieldManager.getCustomFieldObject("customfield_10500")
def Field1Value = Field1.getValue()
def options = optionsManager.getOptions(Field2Value)[0]
if (Field1.value == "UC") {
def allowedField2 = options.findAll { it.value in ["Value1", "Value2"] }
Field2Value.setFieldOptions(allowedField2)
} else if ((Field1.value == "DevOps")) {
def allowedField2 = options.findAll { it.value in ["Value3", "Value4"] }
Field2Value.setFieldOptions(allowedField2)
}
"
Hi @durga_panda
I applied your script to my local environment but there are some error messages, and I didn’t check the reason causing them.
Here's my sample script that should fulfill your requirement:
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.CustomFieldManager
def Field1 = getFieldById("customfield_10200") // parent select list 1
def Field2 = getFieldById("customfield_10500")// child select list 2 (Depending Field1's value)
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def optionsManager = ComponentAccessor.getOptionsManager()
def customField = customFieldManager.getCustomFieldObject(Field2.getFieldId())
def config = customField.getRelevantConfig(getIssueContext())
def options = optionsManager.getOptions(config)
Map fieldOptions1 = [:]
fieldOptions1.put ("-1", "None")
fieldOptions1.putAll (["1":"A1","2":"A2"])
Map fieldOptions2 = [:]
fieldOptions2.put ("-1", "None")
fieldOptions2.putAll (["4":"B1","5":"B2"])
String Value1 = (String) Field1.getValue() //check the parent select list value
if (Value1 == "A") //if the value is A
{
Field2.setFieldOptions(fieldOptions1)
}
else if (Value1 == "B") //if the value is B
{ Field2.setFieldOptions(fieldOptions2)
}
Could you please give it a try and let me know if it works for you?
HI @Lih Yao Tiong
Thank you for this code. This code did not gave me any error however it is not working for me.
maybe I am doing something wrong.
Map fieldOptions1 = [:]
fieldOptions1.put ("-1", "None")
fieldOptions1.putAll (["1":"A1","2":"A2"])
can you please help me if i am understanding below correctly? is it
fieldOptions1.putAll (["Option_ID1":"Option_value1","Option_ID2":"Option_Value2"])
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi @durga_panda
Glad to know it works for you now:) Yes, it's just like the ID, key for the option's value.
I hope it resolves your queries.
Could you please mark it as an accepted answer, please?
It might be helping those looking for the solution.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I was actually pasing this into initliazer, instead code on field behaviour worked. Below is my version of code which is working too
import com.atlassian.jira.component.ComponentAccessor;
import com.onresolve.jira.groovy.user.FieldBehaviours;
import groovy.transform.BaseScript;
@BaseScript FieldBehaviours fieldBehaviours;
def customFieldManager = ComponentAccessor.getCustomFieldManager();
def optionsManager = ComponentAccessor.getOptionsManager();
def Field2 = customFieldManager.getCustomFieldObject("customfield_10500")
def Field2_config = Field2.getRelevantConfig(getIssueContext());
def Field2_options = optionsManager.getOptions(Field2_config);
def Field2field = getFieldById("customfield_11111");
def Field1field = getFieldById("customfield_22222");
def Field1Value = Field1field.getValue()
def AllowedValue = [ ]
if (Field1Value == "Value1"){
AllowedValue = ["X1", "X2", "X3"]
} else if (Field1Value == "Value2"){
AllowedValue = ["A1", "A2", "A3"]
Field2field.setFieldOptions(Field2_options.findAll{it.value in (AllowedValue)})
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.
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.