I m trying to show th total time a issue has been in open state. For that I m using a scripted field
and a modified script :
import com.atlassian.core.util.DateUtils import com.atlassian.jira.ComponentManager import com.atlassian.jira.issue.history.ChangeItemBean def componentManager = ComponentManager.getInstance() def changeHistoryManager = componentManager.getChangeHistoryManager() def inProgressName = "Open" def rt = [0] changeHistoryManager.getChangeItemsForField (issue, "status").reverse().each {ChangeItemBean item -> def timeDiff = System.currentTimeMillis() - item.created.getTime() if (item.fromString == inProgressName) { rt << -timeDiff } if (item.toString == inProgressName){ rt << timeDiff } } // NOTE: doesn't show anything if less than 60 seconds DateUtils.getDurationString(Math.round(rt.sum() / 1000))
That's just example code, not really production quality. It doesn't work if the status you are interested in is the first one.
I just made an edit - https://gist.github.com/jechlin/10928320
Is there a way to get total time since creation but not closed? I really wouldn't want to have to add up all the time between transitions as I would not know each transition it goes through.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Isn't "<<" a bit-operator? I don't think that works with collections/arrays. Try this instead:
rt.add(timeDiff)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
<< is overridden for collections in groovy.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Boris,
no that doesn t help scripted field still shows 0m.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I think the problem is that you should use item.created.getTime()
com.atlassian.jira.issue.history.ChangeItemBean.getCreated() returns java.sql.Timestamp so you should call getTime() to get milliseconds.
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.