dannyman.toldme.com


JIRA

JIRA: Require User Time Tracking

Link: http://dannyman.toldme.com/2011/12/01/jira-jython-validator-enforce-time-spent/

Time tracking in JIRA is a nice feature, but we have to get people to do it. My initial attempts to enforce time tracking ran into trouble, but I was able to develop a Jython Validator to hook on to transitions to the Resolved state. Now it is mandatory for our users to log time worked before they can resolve an issue:

# -*- coding: UTF-8 -*-
import com.atlassian.jira.issue.worklog.Worklog
from com.atlassian.jira import ComponentManager
 
# Time Already Logged
timespent = issue.getTimeSpent()
# Time Logged via current screen
try:
    timelogged = dict(issue.getModifiedFields())['worklog']
except:
    timelogged = False
 
# Duplicate Issue?  It is as good as logged!
resolution = issue.getResolution()
if resolution['name'] == "Duplicate":
    timelogged = True
if resolution['name'] == "Self Corrected":
    timelogged = True
 
# Nagios likes to close tickets, but doesn't get paid
user = ComponentManager.getInstance().getJiraAuthenticationContext().getUser()
if user.getName() == "nagios":
    timelogged = True
 
if timespent < = 0 and timelogged == False:
    result = False
    description = "Please log the time you spent on this ticket."

2012-01-24 Update: the script now contains additional logic, which exempts the nagios user from enforcement and allows resolution of duplicated or self-correcting issues which may not require time tracking. Hopefully this example is useful to somebody.

2 Comments


JIRA, Sundry, Technology

JavaScript Hack: Hide an Element on a Page

Link: http://dannyman.toldme.com/2011/10/25/javascript-hack-hide-an-element-on-a-page/

JIRA is an issue tracking system that is really flexible, but sometimes presents irritatingly arbitrary limitations.

I have been working on a screen which uses multiple tabs. The tabs are there to make it easier for the user to find the fields they want to edit, without scrolling through a single long, complex issue. But every tab has a Comment field rendered on it, which makes things confusing, and makes each tab look like it needs scrolling.

So, just remove the Comment field from the Screen, right? No, it isn’t in there. So, can I remove Comment via the Field Configuration Scheme? No, it is mandatory. Damn your arbitrary limitation, JIRA!

Anyway, I don’t normally speak JavaScript, but I managed to gin up the following snippet to paste into a Field description which appears in the screen I wanted to tweak. It finds the element containing the Comment, and sets its style display attribute to none. As the page loads, the Comment box is rendered, but once the page load completes, the Comment box disappears.

<script type="text/javascript">
function hideCommentField() {
        var elements = document.getElementsByClassName('field-group aui-field-wikiedit');
        elements[0].style.display = 'none';
}
// http://stackoverflow.com/questions/807878/javascript-that-executes-after-page-load
if(window.attachEvent) {
    window.attachEvent('onload', hideCommentField);
} else {
    if(window.onload) {
        var curronload = window.onload;
        var newonload = function() {
            curronload();
            hideCommentField();
        };
        window.onload = newonload;
    } else {
        window.onload = hideCommentField;
    }
}
</script>

It is ugly, but effective. Also, it is helpful for me to learn JavaScript!

PS: Thanks for the Guidance, Ed Burns!

1 Comment


doodles, JIRA, Technical, Technology

TICKET. OR. GTFO.

Link: http://dannyman.toldme.com/2011/08/17/ticket-or-gtfo/

I do not know the provenance of the source material, and can make no claims of intellectual property rights here. TinEye finds 550 similar images.

1 Comment


Site Archive