Forums

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

Update Story Points field based on select list

M Vijay Kumar
Contributor
November 7, 2019

Hi Team, 

We have a single select field ( T-Shirt Size) and based on the size selected 'Story point' Field must be updated automatically. 

if it S then it should be 1, M is 2 and L is 3 and so on. Can this be done using Script Runner. 

Please do let us know.

2 answers

1 accepted

Suggest an answer

Log in or Sign up to answer
0 votes
Answer accepted
Antoine Berry
Community Champion
November 7, 2019

Hi @M Vijay Kumar ,

I would suggest to use behaviours, it would make things visual for your users. Make story points read only, and use this script for the select list (update the ids) : 

import com.atlassian.jira.component.ComponentAccessor

int
selectListId = 12503
def selectList = getFieldById("customfield_" + selectListId)
def selectListValue = selectList.getValue()

int storyPointsId = 10002
def storyPoints = getFieldById("customfield_" + storyPointsId)

def customFieldManager = ComponentAccessor.getCustomFieldManager()
def storyPointsValue

switch(selectListValue){
case "S": storyPointsValue = 1; break;
case "M": storyPointsValue = 2; break;
case "L": storyPointsValue = 3; break;
default: storyPointsValue = underlyingIssue?.getCustomFieldValue(customFieldManager.getCustomFieldObject(storyPointsId))
}

storyPoints.setFormValue(storyPointsValue)

Antoine

M Vijay Kumar
Contributor
November 8, 2019

Thanks Antoine, It worked perfectly. 

Like Antoine Berry likes this
0 votes
Leo
Community Champion
November 7, 2019

Hi @M Vijay Kumar ,

Yes you can

1. If you want only during creation you can go with script runner post-function 

2. if you want even during Edit action as well you can consider scriptrunner listener for "Issue created and Issue Updated" events.

below snippet may help you, BTW I haven't tested you may need to correct something 

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
import com.atlassian.jira.issue.ModifiedValue

def changeHolder = new DefaultIssueChangeHolder();
def tShirt = ComponentAccessor.customFieldManager.getCustomFieldObjectByName("T-Shirt Size")
def story = ComponentAccessor.customFieldManager.getCustomFieldObjectByName("Story Point")
def myIssue = event.issue

String size = myIssue.getCustomFieldValue(tShirt) as String
def point = null
if(size){
if(size == "S"){
point = 1
}else if(size == "M"){
point = 2
}else{
point = 3
}
}
if(point){
story.updateValue(null, myIssue, new ModifiedValue(myIssue.getCustomFieldValue(story),point), changeHolder)
}

 

BR,

Leo

TAGS
AUG Leaders

Atlassian Community Events