Skip to main content
Example scripts
arrow icon
To homepage
Jira
Data centre icon
Data Center

Show Assignee History on Issue Details Page

Created 1 year ago, Updated 2 month(s) ago
App in script
ScriptRunner For Jira
ScriptRunner For Jira
by Adaptavist
Compatibility
compatibility bullet
Jira (8.0 - 8.14)
compatibility bullet
ScriptRunner For Jira (6.18.0)
Language |
groovy
import com.atlassian.jira.avatar.AvatarService
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.config.properties.APKeys
import com.atlassian.jira.issue.Issue
import groovy.xml.MarkupBuilder

import java.time.format.DateTimeFormatter
import static com.atlassian.jira.issue.IssueFieldConstants.ASSIGNEE

// the upper limited on the assignees to be displayed
final historyDepth = 5

def issue = context.issue as Issue
def counter = 0

def baseUrl = ComponentAccessor.applicationProperties.getString(APKeys.JIRA_BASEURL)
def avatarService = ComponentAccessor.getComponent(AvatarService)
def loggedInUser = ComponentAccessor.jiraAuthenticationContext.loggedInUser

new MarkupBuilder(writer).table {
    ComponentAccessor.changeHistoryManager.getChangeHistories(issue).reverseEach {
        def changeItems = it.changeItems

        if (changeItems.field.first() == ASSIGNEE && changeItems.newstring.first() && counter < historyDepth) {
            def user = ComponentAccessor.userManager.getUserByKey(changeItems.newvalue[0] as String)
            def format = DateTimeFormatter.ofPattern('dd/MMM/yyyy')
            def date = it.timePerformed.toLocalDateTime().toLocalDate()

            tr {
                td(
                    style: 'width: 90px;', date.format(format)
                )
                td(
                    class: 'jira-user-name user-hover jira-user-avatar jira-user-avatar-small',
                    rel: 'admin', 'id': 'project-vignette_admin',
                    style: 'margin: 1px 0px 1px 0px; height: 24px;',
                    href: "$baseUrl/secure/ViewProfile.jspa?name=$user.name"
                ) {
                    span(
                        class: 'aui-avatar aui-avatar-small'
                    ) {
                        span(
                            class: 'aui-avatar-inner'
                        ) {
                            img(
                                src: avatarService.getAvatarURL(loggedInUser, user),
                                alt: user.name
                            )
                        }
                    }
                }
                td(
                    user.displayName
                )
            }
        }

        counter++
    }
}
Having an issue with this script?
Report it here