|
// ==UserScript== |
|
// @name Jira Copy Buttons |
|
// @namespace http://tampermonkey.net/ |
|
// @version 0.1 |
|
// @description Adds convenient buttons to the ticket detail view |
|
// @author Timo |
|
// @match https://tracker.seitenbau.net/* |
|
// @icon https://www.google.com/s2/favicons?domain=greasyfork.org |
|
// @grant none |
|
// ==/UserScript== |
|
|
|
(function() { |
|
'use strict'; |
|
|
|
const charReplaceMap = {'ä': 'ae', 'ü': 'ue', 'ö': 'oe', 'Ä': 'Ae', 'Ü': 'Ue', 'Ö': 'Oe', 'ß': 'ss', ' ': '_', ':': '', '\'': '', ',': '', '/': '', '.': '', '[': '', ']': ''}; |
|
|
|
function addButtons(header) { |
|
var issueKey = document.querySelector('#key-val').dataset.issueKey; |
|
var ticketTitle = header.innerText; |
|
|
|
var parentIssue = document.querySelector('#parent_issue_summary'); |
|
var issueKeys = (parentIssue != null) ? `${parentIssue.dataset.issueKey},${issueKey}` : issueKey; |
|
var fixedTitle = fixTitle(ticketTitle, charReplaceMap); |
|
|
|
header.parentElement.appendChild(createButton('#️', 'Nummer', issueKeys)); |
|
header.parentElement.appendChild(createButton('🔀', 'Branch Name', `feature/${issueKey}_${fixedTitle}`)); |
|
header.parentElement.appendChild(createButton('💬', 'Commit Template', `${issueKeys}: `)); |
|
header.parentElement.appendChild(createButton('📜', 'Release-Letter', `${issueKeys}: ${ticketTitle}`)); |
|
} |
|
|
|
function fixTitle(srcString, replaceMap) { |
|
let result = srcString; |
|
for (const [key, value] of Object.entries(replaceMap)) { |
|
result = result.replaceAll(key, value); |
|
} |
|
return result; |
|
} |
|
|
|
function createButton(label, title, copiedtext) { |
|
const btn = document.createElement('button'); |
|
btn.innerText = label; |
|
btn.title = title; |
|
btn.className = 'aui-button'; |
|
btn.addEventListener('click', () => { |
|
console.log(`${copiedtext} copied`); |
|
navigator.clipboard.writeText(copiedtext); |
|
}); |
|
return btn; |
|
} |
|
|
|
|
|
var timer = window.setInterval(function() { |
|
var header = document.querySelector('#summary-val'); |
|
if(header) { |
|
addButtons(header); |
|
window.clearInterval(timer); |
|
} |
|
}, 1000); |
|
})(); |