Display only selective from dropdown

Arun September 12, 2019

I have a case where I need to make couple of field values from the drop down visible to  only 1 group and these should be hidden for other groups.

The first group can view all values but 2 should not be visible to rest of them

 

Please suggest 

 

 

2 answers

1 accepted

1 vote
Answer accepted
Leo
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
September 12, 2019

Hi @Arun,

 

You can achieve this through ScripRunner Behavior plugin, and below code will help you on the same

import com.onresolve.jira.groovy.user.FieldBehaviours
import com.onresolve.jira.groovy.user.FormField
import com.atlassian.jira.component.ComponentAccessor

//Get Relevant field and options manager
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def optionsManager = ComponentAccessor.getOptionsManager()
def groupManager = ComponentAccessor.getGroupManager()

//Get select list field and it's options
def selectList = getFieldByName("Field Nmae") //Field name which you want to restrict values
def customField = customFieldManager.getCustomFieldObject(selectList.getFieldId())
def config = customField.getRelevantConfig(getIssueContext())
def options = optionsManager.getOptions(config)

def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
String groupName = "YourGroup" //place the group here to validate

if (groupManager.getUsersInGroup(groupName).contains(user)) {
def optionsMap = options.findAll {
it.value in ["Value 1", "Value 2", "Value 3"] // list of options you want to show
}.collectEntries {
[
(it.optionId.toString()): it.value
]
}
selectList.setFieldOptions(optionsMap)
}
else{
def optionsMap = options.findAll {
it.value in ["Value 1"] // list of options you want to show
}.collectEntries {
[
(it.optionId.toString()): it.value
]
}
selectList.setFieldOptions(optionsMap)
}

 

BR,

Leo

Arun September 12, 2019

Please see below and correct me

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script69.groovy: 21: unexpected token: Review @ line 21, column 53.
, Iteration Test, State Code Review, UA
^

1 error

 

My inputs:

import com.onresolve.jira.groovy.user.FieldBehaviours
import com.onresolve.jira.groovy.user.FormField
import com.atlassian.jira.component.ComponentAccessor

//Get Relevant field and options manager
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def optionsManager = ComponentAccessor.getOptionsManager()
def groupManager = ComponentAccessor.getGroupManager()

//Get select list field and it's options
def selectList = getFieldByName(Phase) //Field name which you want to restrict values
def customField = customFieldManager.getCustomFieldObject(selectList.getFieldId())
def config = customField.getRelevantConfig(getIssueContext())
def options = optionsManager.getOptions(config)

def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
String groupName = VRIN //place the group here to validate

if (groupManager.getUsersInGroup(groupName).contains(user)) {
def optionsMap = options.findAll {
it.value in [ Unit Test , Iteration Test, State Code Review, UAT ] // list of options you want to show
}.collectEntries {
[
(it.optionId.toString()): it.value
]
}
selectList.setFieldOptions(optionsMap)
}
else{
def optionsMap = options.findAll {
it.value in [Unit Test, Iteration Test] // list of options you want to show
}.collectEntries {
[
(it.optionId.toString()): it.value
]
}
selectList.setFieldOptions(optionsMap)
}

Leo
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
September 12, 2019

Hey @Arun,

If this is your exact code, then you should try with "" in below places

1. def selectList = getFieldByName(Phase)

  >>def selectList = getFieldByName("Phase")

2. String groupName = VRIN

  >> String groupName = "VRIN"

it.value in [ Unit Test , Iteration Test, State Code Review, UAT ]

  >>it.value in [ "Unit Test" , "Iteration Test", "State Code Review", "UAT" ]

4. it.value in [Unit Test, Iteration Test]

  >> it.value in ["Unit Test", "Iteration Test"]

 

BR,

Leo

Arun September 13, 2019

Thanks Leo, I tired the quotes and got this below

No signature of method: org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.getFieldByName() is applicable for argument types: (java.lang.String) values: [Phase]

Please advise.

Arun

Leo
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
September 13, 2019

Hey Arun, Can you share me the screen shot of full script with error you are getting. attached my script with console

behavior-selectlist.png

Arun September 13, 2019

Goove Script.PNG

Leo
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
September 13, 2019

humm, it's weird. Are you trying this code in Behavior plugin? 

Arun September 13, 2019

I do not have Behavior plugin, ran it in Script console and also in Script Fragments where I was able to see the issue. Please advise.

Arun September 13, 2019

Adaptavist ScriptRunner for JIRA - Installed version: 5.5.7.1-jira8 

Leo
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
September 13, 2019

This explains the issue, the given code is written with behaviours module

And if I'm not wrong, Behaviours is one of the extensions of ScriptRunner, you'll find it under manage apps, attaching screenshot of the behaviour location

 

Create new Behaviour --> Add your Field --> Add given script in server side script(you'll find this option once you added field) --> Add mapping(map your project and issue types/ leave with all issue types if it's not for particular issue types)

 

behaviours-jira.png

Arun September 13, 2019

Great, this worked. Thank you Kindly!

Leo
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
September 13, 2019

Glad you achieved it :) 

Like Srikanth Ganipisetty likes this
sujata birajdar September 23, 2021

Hi Leo,

 

On JIRA cloud we do not have behaviours available, any idea you can give on how the same thing can be achieved in JIRA cloud.

0 votes
dsg_team January 6, 2022

can we have something similar based on Project role instead of Group member

Suggest an answer

Log in or Sign up to answer