Skip to content

Instantly share code, notes, and snippets.

@Faldrian
Created March 10, 2022 10:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Faldrian/1395f01ebd1d0af0e3d80f1bca763a59 to your computer and use it in GitHub Desktop.
Save Faldrian/1395f01ebd1d0af0e3d80f1bca763a59 to your computer and use it in GitHub Desktop.
Jira Copy Buttons
// ==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);
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment