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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.