You've been invited into the Kudos (beta program) private group. Chat with others in the program, or give feedback to Atlassian.
View groupJoin the community to find out what other Atlassian users are discussing, debating and creating.
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 @Tiong Lih Yao
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.
Connect with like-minded Atlassian users at free events near you!
Find an eventConnect with like-minded Atlassian users at free events near you!
Unfortunately there are no Community Events near you at the moment.
Host an eventYou're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.