// ==UserScript==
// @name Atlassian Jira Add Copy Title Action
// @namespace chancetop
// @version 0.0.6
// @description Copy issue code & title .
// @author Neal Xu
// @match https://wonder.atlassian.net/browse/*
// @grant none
// @downloadURL https://update.greasyfork.icu/scripts/418426/Atlassian%20Jira%20Add%20Copy%20Title%20Action.user.js
// @updateURL https://update.greasyfork.icu/scripts/418426/Atlassian%20Jira%20Add%20Copy%20Title%20Action.meta.js
// ==/UserScript==
(function() {
'use strict';
// Your code here...
var executeCount = 0;
var autoAddInterval = setInterval(addCopyBtn, 1000);
function addCopyBtn(){
//simple handle
if(executeCount++ > 10) {
clearInterval(autoAddInterval);
}
if(document.querySelector('#jira-issue-header-actions > div > div div.neal_copy_btn') != null) return;
let groupContainer = document.querySelector('#jira-issue-header-actions > div > div');
//clone node
let copyBtnDiv = document.createElement("div");
copyBtnDiv.innerHTML = '
'
copyBtnDiv.onclick = function(){
let currentIssue = document.querySelector('#jira-issue-header > div > div > div > div div[data-test-id="issue.views.issue-base.foundation.breadcrumbs.breadcrumb-current-issue-container"] a').innerText;
let parentIssue = document.querySelector('#jira-issue-header > div > div > div > div div[data-test-id="issue.views.issue-base.foundation.breadcrumbs.breadcrumb-parent-issue-container"] span');
let title = document.querySelector('#jira-frontend > div > div > div h1[data-test-id="issue.views.issue-base.foundation.summary.heading"]').innerText;
let content = (parentIssue? parentIssue.innerText + ' / ' : '') + currentIssue + ' ' + title;
copyText(content);
}
groupContainer.appendChild(copyBtnDiv);
}
function copyText(content){
let fakeElem = document.createElement('textarea');
// Move element out of screen horizontally
fakeElem.style.position = 'absolute';
fakeElem.style.left = '-9999px';
fakeElem.style.fontSize = '12pt';
// Reset box model
fakeElem.style.border = '0';
fakeElem.style.padding = '0';
fakeElem.style.margin = '0';
fakeElem.setAttribute('readonly', '');
fakeElem.value = content;
document.body.appendChild(fakeElem);
fakeElem.select();
document.execCommand('copy');
}
})();