Hi.
I have been working on component field restriction. I was not able to find much documentation, so I want to share my final product for review.
// restrict components fields based on another single select field
import com.atlassian.jira.bc.project.component.ProjectComponentManager
import com.atlassian.jira.component.ComponentAccessor
import com.onresolve.jira.groovy.user.FieldBehaviours
import groovy.transform.BaseScript
import static com.atlassian.jira.issue.IssueFieldConstants.COMPONENTS
@BaseScript FieldBehaviours fieldBehaviours
def projectComponentManager = ComponentAccessor.getProjectComponentManager()
def components = projectComponentManager.findAllForProject(issueContext.projectObject.id)
def availableComponents = []
def issueTypeField = getFieldById(COMPONENTS)
def productField = getFieldByName("Product")
def productOption = productField.getValue() as String
if ( productOption == "Infinity Fabric") {
availableComponents.addAll(components.findAll { it.name in ["Application"] })
}
issueTypeField.setFieldOptions(availableComponents)
I am going to have multiple IF options. Can you suggest how to make it more elegant with an options map?
Thanks.
Anyway this script is working.
// restrict components fields based on another single select field
import com.atlassian.jira.bc.project.component.ProjectComponentManager
import com.atlassian.jira.component.ComponentAccessor
import com.onresolve.jira.groovy.user.FieldBehaviours
import groovy.transform.BaseScript
import static com.atlassian.jira.issue.IssueFieldConstants.COMPONENTS
@BaseScript FieldBehaviours fieldBehaviours
def projectComponentManager = ComponentAccessor.getProjectComponentManager()
def components = projectComponentManager.findAllForProject(issueContext.projectObject.id)
def availableComponents = []
def issueTypeField = getFieldById(COMPONENTS)
def productField = getFieldByName("Product")
def productOption = productField.getValue() as String
if ( productOption == "Infinity Fabric") {
availableComponents.addAll(components.findAll { it.name in ["Application"] })
}
issueTypeField.setFieldOptions(availableComponents)
availableComponents.addAll(components.findAll { it.name in ["Application"] })
Is 'Application' the name of a component?
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.