Hi there,
I am building up a JIRA - support project for different Atlassian Tools (JIRA, Confluence, HipChat). Depending on the selected component (either JIRA, Confluence or HipChat), different customfields shall be either "visible & required" or "invisible & optional" in the create process.
Case 1 - Initial situation:
- Field "Business Unit" = Hidden
- Field "JIRA Project Concerned" = Hidden
Case 2 - Component "JIRA" being selected:
- Field "JIRA Project Concerned" = Visible and mandatory
Case 3 - Component "Confluence" being selected:
- Field "Business Unit" = Visible and mandatory
Case 4 - Component "HipChat" being selected:
_Shall be handled as case 1_ (both fields invisible and optional)
In my opinion this is a standard case for the behaviours plugin, but after several hours and a lot of code changes, I ended up with following code, which simply does not work for us:
import com.atlassian.jira.bc.project.component.ProjectComponent
FormField components = getFieldByName ("Component/s") // id for Component
FormField BusinessUnit = getFieldById ("customfield_10572") // id for "Business Unit"
FormField JiraProjectConcerned = getFieldById ("customfield_10100") // id for "Jira Project concerned""
String component = components.getValue()
if (component == 17850) {
JiraProjectConcerned.setHidden(false)
}
else {
JiraProjectConcerned.setHidden(true)
}
Furthermore I optionally tried using following code in the initialiser script:
BusinessUnit.setHidden(true)
BusinessUnit.setRequired(false)
JiraProjectConcerned.setHidden(true)
JiraProjectConcerned.setRequired(false)
The result of the first snipplet is always that field "JIRA Project concerned" is hidden and will never show up, so the else-case seems to always true.
As mentioned it took me already a lot of time, being non code-savvy, so I'd be more than grateful to have any concrete hints into the right direction.
Thanks and best regards
Kai
PS: Already had an intense look into the documentation of the plugin at Adaptavist and in following questions here:
@Jamie Echlin (Adaptavist) solved my question with this comment/link:
That particular example is covered here: https://scriptrunner.adaptavist.com/latest/jira/recipes/behaviours/select-list-other.html
So thanks a million once again, Jamie!
Dear team,
In my Jira project's create screen, need to make LOCATION field mandatory only if Component/s Field's drop down value is "Cloud Test Lines" is selected..
Please help me with script or steps detail as I am a new bee to Jira.. It will be great help if you people direct me to get it solved immediately.
-
Anusha
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Kai
You can try something like this.
import com.atlassian.jira.bc.project.component.ProjectComponentImpl
def components = getFieldById("components") // id for Component
def JiraProjectConcerned = getFieldById ("customfield_10200") // id for "Jira Project concerned""
def component = components.getValue()
ProjectComponentImpl componentImpl = component[0]
if (componentImpl?.getName()?.equals('17850')) {
JiraProjectConcerned.setRequired(false)
}
else {
JiraProjectConcerned.setRequired(true)
}
Please let me know if this works for you
Regards
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Thanos,
first: Thanks a million for pointing us into the correct direction!
With your script example above, I finally got it working 90% of our requirement, using this script:
import com.atlassian.jira.bc.project.component.ProjectComponentImpl
def components = getFieldById("components") // id for Component
def JiraProjectConcerned = getFieldById ("customfield_10100") // id for "Jira Project concerned"
def BusinessUnit = getFieldById ("customfield_10572") // id for "BusinessUnit"
def component = components.getValue()
ProjectComponentImpl componentImpl = component[0]
if (componentImpl?.getName()?.equals('JIRA')) {
JiraProjectConcerned.setRequired(true)
BusinessUnit.setHidden(true)
}
else if (componentImpl?.getName()?.equals('Confluence')) {
BusinessUnit.setRequired(true)
JiraProjectConcerned.setHidden(true)
}
else if (componentImpl?.getName()?.equals('Hipchat')) {
JiraProjectConcerned.setRequired(false)
BusinessUnit.setRequired(false)
JiraProjectConcerned.setHidden(true)
BusinessUnit.setHidden(true)
}
The only missing thing here is that instead of removing fields ("JIRA Project concerned", "Business Unit") when a certain component is chosen, I wanted to remove the fields initially and then want to show them, once a certain component is chosen. My assumption was using the initialiser function for this, but it simply does not work. Any hint here for me?
Thanks a lot —
Cheers
Kai
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
If you want to show them when a component is chosen, you have to add the script to the component field, not initialiser.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Jamie, first of all thanks a lot for the best plugin available in Marketplace: Script Runner. We're using it for more than three years now, and - since three days - acquired a paid license ;) The above mentioned script is currently entirely attached in the "Component/s"-field and as stated I have following situation: as is: ------- 1.) Initially both fields ("Business Unit"/"JIRA Project concerned") are shown. 2.) Once a component (e.g. "JIRA") is entered the field not used ("Business Unit") DISAPPEARS. to be: -------- 1.) Initially both fields ("Business Unit"/"JIRA Project concerned") are NOT shown. 2.) Once a component (e.g. "JIRA") is entered the field used ("JIRA Project concerned") APPEARS. Is this doable? What I need to change in this script? Cheers Kai
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I'm also wanting to use Behaviours to control the visibility of other fields, depending on the value in a select box. I haven't yet tried to script it, but will be trying later today.
So if anyone has a solution or pointer for this problem, I'd be grateful. If I can get it working, I'll post my solution here as well.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
That particular example is covered here: https://scriptrunner.adaptavist.com/latest/jira/recipes/behaviours/select-list-other.html
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.
Hi Team,
I too have a similar kind of Issue, could you please help me?
I want to make Custom Field (Software) mandatory upon Component value as "software". I have tried followng code, but it didn't work:
import com.atlassian.jira.bc.project.component.ProjectComponentImpl
def components = getFieldById("components") // id for Component
def Software = getFieldById("Software") // id for "Software""
def component = components.getValue()
ProjectComponentImpl componentImpl = component[0]
if (componentImpl?.getName()?.equals('software')) {
Software.setRequired(true)
}
else {
Software.setRequired(false)
}
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.