NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name JIRA My Transition Button
// @version 1.1
// @description Add transition buttons for JIRA
// @license MIT
// @author zhuojun
// @icon https://www.google.com/s2/favicons?domain=tampermonkey.net
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @require https://greasyfork.org/scripts/6250-waitforkeyelements/code/waitForKeyElements.js?version=23756
// @grant GM_xmlhttpRequest
// @match https://*/secure/RapidBoard.*
// @namespace https://greasyfork.org/users/770429
// ==/UserScript==
var issueUrl = document.location.origin + "/rest/api/latest/issue/"
waitForKeyElements(
".ghx-swimlane-header",
addButtons
)
function addButtons(jNode) {
console.log("Test")
var issuekey = jNode[0].getAttribute("data-issue-key")
// GM_xmlhttpRequest({
// method: 'GET',
// url: issueUrl + issuekey,
// onload: function (res) {
// if (res.status == 200) {
// var resContent = JSON.parse(res.responseText);
// jNode[0].children[0].children[3].children[0].innerText = resContent.fields.status.name
// }
// }
// });
GM_xmlhttpRequest({
method: 'GET',
url: issueUrl + issuekey + "/transitions",
onload: function (res) {
if (res.status == 200) {
var text = res.responseText;
var json = JSON.parse(text);
json.transitions.forEach(function (transition) {
var button = document.createElement('button');
button.setAttribute('id', 'test' + issuekey + transition.name);
button.setAttribute("class", "aui-button " + issuekey);
button.setAttribute('data-issue-key', issuekey);
button.setAttribute('transition', transition.name);
button.style = "margin-left:2px";
var span = document.createElement('span');
span.innerText = transition.name;
button.appendChild(span);
button.onclick = function () {
console.log(issuekey + transition.name)
window.event.cancelBubble = true;
var data = {
"transition": {
"id": transition.id
}
};
GM_xmlhttpRequest({
method: "POST",
headers: {
'Accept': 'application/json',
"Content-Type": "application/json",
"User-Agent": "lolol"
},
url: issueUrl + issuekey + "/transitions",
dataType: 'json',
contentType: 'application/json',
overrideMimeType: 'application/json',
data: JSON.stringify(data),
onload: function (response) {
console.log(response);
if (response.status == 204) {
var buttons = jNode[0].getElementsByClassName(issuekey);
while(buttons.length != 0) {
buttons[0].remove();
}
jNode[0].children[0].children[3].children[0].innerText = transition.to.name
addButtons(jNode);
//document.getElementsByClassName("aui-nav-selected")[0].children[0].click()
}
}
})
};
jNode[0].children[0].appendChild(button)
})
}
}
})
}