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.
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.