Groovy: show time this issue In-Progress status (Not Total)

How i can show up days count of last transition.
I dont need calculate total, this value should be refreshable and setted per new transition.

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 = "In Progress"

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

Can some one help me?

8 answers

This widget could not be displayed.

Can you elaborate on "How i can show up days count of last transition". Why did you post that code, is that what you have tried?

This widget could not be displayed.

Hi Jamie,
Yes, you right.
This code show me total days. But i'm needed to show up days according each transition to this status (not total).

For example (how this should work):
I changed my status from Open to In-Progress yesterday, and now i see 1 day,
I changed it status to on-hold, then i am again changed it to in-progress and now i see 1 min,

do you understand?

This widget could not be displayed.

You just want the time in the current status? Then you just need to subtract the first change item returned from the current date.

This widget could not be displayed.

Jamie, yes.
Could you add more details here, sorry but i dont know how realise it via groovy code, can you advise please?

This widget could not be displayed.

@Jamie Echlin [Adaptavist] Hi!
Please, clarify.

This widget could not be displayed.


import com.atlassian.jira.component.ComponentAccessor

def changeHistoryManager = ComponentAccessor.getChangeHistoryManager()
def items = changeHistoryManager.getChangeItemsForField (issue, "status").reverse()

if (items) {
    return ((new Date().time - items.first().created.time) / 1000) as Long
else {
    return ((new Date().time - issue.getCreated().time) / 1000) as Long

Searcher: Duration

Custom template:

#if ($value)
This widget could not be displayed.


something goes wrong...

 image2016-4-7 10:24:50.png

Change the searcher for the field to Duration, as I said in my answer. If you don't see Duration you might be using an older version, if so which one?

Current versiob is: v 3.1.4

Set the searcher for the field to None then, but it's best if you can upgrade so you can using the duration indexer. You didn't answer the question about whether it was there by the way.

Hi @Jamie Echlin [Adaptavist] 
I did what you recommended, so i can see now is that it is:$jiraDurationUtils.getFormattedDuration($value) 


This widget could not be displayed.

@Jamie Echlin [Adaptavist] hi!

I solve this via:

image2016-4-11 17:56:36.png 


And Searcher: 

image2016-4-11 17:56:58.png 

Can you help me a little bit?
Now current field show me a seconds, 

how i can convert it to time? (minutes/hours/days?)

getDurationString should return you a properly formatted duration... 

Best thing is to return a Long then use the template as I originally recommended. I don't think the search will work though. Try all this with no searcher.

 I'll tried this all with searcher "None" and with sting/long combinations:







It doesnt worked in JIRA 6.4.5 and Script Runner v 3.1.4

Nevertheless thank you @Jamie Echlin [Adaptavist].

Suggest an answer

Log in or Sign up to answer
Community showcase
Posted Tuesday in Jira

What modern development practices are at the heart of how your team delivers software?

Hey Community mates! Claire here from the Software Product Marketing team. We all know software development changes rapidly, and it's often tough to keep up. But from our research, we've found the h...

203 views 1 3
Join discussion

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you