-
Notifications
You must be signed in to change notification settings - Fork 3
/
jiralib.js
87 lines (74 loc) · 3.18 KB
/
jiralib.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
// ==UserScript==
// @name JIRA lib
// @namespace napali.boardriders
// @version 22.5.4.0
// @description let's ticket better
// @author Benjamin Delichere
// @match https://jira.boardriders.com/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=boardriders.com
// @grant none
// @copyright Benjamin Delichere
// @license X11 (MIT)
// ==/UserScript==
(function(){
/**
This function adds buttons that will appear on the "Create Issue" modal window that
can be used to insert a "feature" or "bug" template into the description field.
*/
function setupDescriptionTemplateButtons() {
var createIssuePageOpen = $("H2").text() == 'Create Issue' || $('#jira-dialog2__heading').text() == 'Create Issue';
var ticketDescription = $('#description-wiki-edit');
var btnFeatureExists = $('#btnFeature').length > 0;
var selectAllFeatureExists = $('#custom_selectAllFeature').length > 0;
if (createIssuePageOpen && !btnFeatureExists) {
ticketDescription.find('.aui-navgroup .aui-nav')
.append("<li style='margin-left: .3rem;border-left: 1px solid #dfe1e5;'></li>")
.append("<li><button id='btnFeature' class='aui-button aui-button-link' style='margin-left:.3rem;'>add feature template</button></li>")
.append("<li><button id='btnBug' class='aui-button aui-button-link' style='margin-left:.6rem;'>add bug template</button></li>");
$('#btnFeature').on('click', function (e) {
e.preventDefault();
ticketDescription.find('textarea').val(`{panel:title=GENERAL REQUIREMENTS}
TBD
{panel}
{panel:title=TECHNICAL DESIGN}
The design that the developer is going to implement should be here.
DEV to fill in.
{panel}
{panel:title=METADATA / CONTENT / DEPLOYMENT}
Any metadata needed for this ticket should be defined here.
Deployment instructions should be here too.
DEV to fill in.
{panel}
`);
return false;
});
$('#btnBug').on('click', function (e) {
e.preventDefault();
ticketDescription.find('textarea').val(`{panel:title=ISSUE}
TBD
{panel}
{panel:title=ANALYSIS}
TBD
{panel}
{panel:title=RESOLUTION}
TBD
{panel}`);
return false;
});
}
if (createIssuePageOpen && !selectAllFeatureExists) {
// hardcoded to the brands field - could be probably also something which identifies checkbox lists dynamically...
var selectallFeature = $('<div id="custom_selectAllFeature"><button type="button" class="aui-button aui-button-link js-select-all">select all</button></div>');
$('#customfield_10200').append(selectallFeature);
selectallFeature.find('.js-select-all').click(function () {
$(this).closest('.group').find('input.checkbox').prop('checked', true);
});
}
}
var realST = window.setTimeout
window.setTimeout = function(fn,delay) {
setupDescriptionTemplateButtons();
$('time.livestamp').each(function(){$(this).text($(this).parent()[0].title);});
return realST(fn,delay);
};
})();