Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

Based on cascading field single select field values should display

Parsa Mounika November 4, 2022

Hi team,

There is one request from the customer that when we select option from one of the cascading field the values in another single select field should change. I tried with following script but it is not working and showing only external service to all the option can some one help me on this. "211948", "211949" are the single field values.
211948 - External Service
211949 - Internal Service

def ProductLineComptField = getFieldById(getFieldChanged())
def cfield = getFieldByName("Request Type")
Map mapValue = ProductLineComptField.getValue() as Map
def cascadevalue = mapValue.get(0).toString()
if(cascadevalue.equals("Testing Services")){
 cfield.setFormValue("211948");
 } else {
 cfield.setFormValue("211949");
}
switch (cascadevalue) {
case "Testing Services":
cfield.setFormValue("211948");
break
case "Local Consultancy Services":
cfield.setFormValue("211948");
break
case "Spatial Data Services":
cfield.setFormValue("211948");
break
case "RWT/ Quality Support":
cfield.setFormValue("211949");
break
case "Customer Escalation Support":
cfield.setFormValue("211949");
break
case "Support Data Normalization":
cfield.setFormValue("211949");
break
case "Data Analytics":
cfield.setFormValue("211949");
break
case "Support Data (Pre-) Processing and Ingestion":
cfield.setFormValue("211949");
break
case "Source Evaluation Support":
cfield.setFormValue("211949");
break
case "Release Support/TNM Support":
cfield.setFormValue("211949");
break
case "Media Observation Service":
cfield.setFormValue("211949");
break
case "Benchmarking":
cfield.setFormValue("211949");
break
default:
cfield.setFormValue("");
break
}

Regards,
Mounika

1 answer

0 votes
Sebastian Krzewiński
Community Champion
November 4, 2022

Hi @Parsa Mounika 

 

Try something like below. This is example for cascading field and one select field but you can easily modify it.

 

import com.atlassian.jira.component.ComponentAccessor
import com.onresolve.jira.groovy.user.FieldBehaviours
import groovy.transform.BaseScript

@BaseScript FieldBehaviours fieldBehaviours

def cascadingField = getFieldById("customfield_11822")
def selectField2 = getFieldById("customfield_18000")
Map cascadingFieldValue = cascadingField.getValue() as Map

def optionsManager = ComponentAccessor.getOptionsManager()
def selectField2Values = customFieldManager.getCustomFieldObject(Urzadzenie.getFieldId())
def selectField2Config = selectField2Values.getRelevantConfig(getIssueContext())
def selectField2Options = optionsManager.getOptions(selectField2Config)

if (cascadingFieldValue.get(1) == 'value1') {

selectField2.setFieldOptions(selectField2Options.findAll {
it.value in ["valueA"] })

}

else if (cascadingFieldValue.get(1) == 'value2') {

selectField2.setFieldOptions(selectField2Options.findAll {
it.value in ["valueB"] })
}
else {
selectField2.setFieldOptions(selectField2Options)

}

 

It works for me.

 

Regards,

Seba 

Parsa Mounika November 4, 2022

Hi @Sebastian Krzewiński

Thanks for the response.

I tried your script by doing some modifications I am getting an error in the link 

def selectField2Values = customFieldManager.getCustomFieldObject(Urzadzenie.getFieldId())
Can you help me on that.
cascading.PNG
Regards,
Mounika
Sebastian Krzewiński
Community Champion
November 4, 2022

I made a typo when I was changing code. Check code below:

import com.atlassian.jira.component.ComponentAccessor
import com.onresolve.jira.groovy.user.FieldBehaviours
import groovy.transform.BaseScript

@BaseScript FieldBehaviours fieldBehaviours

def cascadingField = getFieldById("customfield_11822")
def selectField2 = getFieldById("customfield_18000")
Map cascadingFieldValue = cascadingField.getValue() as Map

def optionsManager = ComponentAccessor.getOptionsManager()
def selectField2Values = customFieldManager.getCustomFieldObject(selectField2.getFieldId())
def selectField2Config = selectField2Values.getRelevantConfig(getIssueContext())
def selectField2Options = optionsManager.getOptions(selectField2Config)

if (cascadingFieldValue.get(1) == 'value1') {

selectField2.setFieldOptions(selectField2Options.findAll {
it.value in ["valueA"] })

}

else if (cascadingFieldValue.get(1) == 'value2') {

selectField2.setFieldOptions(selectField2Options.findAll {
it.value in ["valueB"] })
}
else {
selectField2.setFieldOptions(selectField2Options)

}

regards,

Seba 

Suggest an answer

Log in or Sign up to answer