issue-tools

get the ticket title

// ==UserScript==
// @name         issue-tools
// @namespace    http://tampermonkey.net/
// @version      0.6
// @description  get the ticket title
// @author       simpleyzh
// @match        https://wonder.atlassian.net/browse/**
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// ==/UserScript==

(function () {
    'use strict';
    const text = "{issue_numbers} {title}"

    waitElementLoaded("css-1gd7hga", (els) => {
        console.log("els============>");
        console.log(els);
        let numberStr = "";
        for (let i = 2; i < els.length && i < 4; i++) {
            let issue_number
            if (i == els.length - 1) {
                issue_number = els[i].innerHTML;
            } else {
                let number = els[i].innerHTML;
                if (isNaN(Number(number.substring(number.lastIndexOf('-') + 1)))) continue;
                issue_number = number
            }

            numberStr += issue_number;
            if (i == 2 ) {
                numberStr += '/'
            }
        }
        let title = document.getElementsByClassName("_1mouidpf _1dyz4jg8 _1p1dglyw _11c8nf1z _syaz1fxt")[0].innerHTML;
        console.log("title => " + title);


        let header =document.getElementsByClassName("_1reoewfl _18m9ewfl _1e0c1txw _16jlidpf")[0];
        if (!header) {
            console.log("header not found")
        }

        var para = document.createElement("button");
        para.setAttribute("style", "text;padding-left: 10px; font-size:17px;color:#a0006b;cursor: pointer;background-color: #008cba8a;border-radius: 4px;border: 0px;");
        para.innerText = "cpoy";
        para.addEventListener("click", () => { copyText(text.replace("{issue_numbers}", numberStr).replace("{title}", title)) });

        let input = document.createElement("input");
        input.setAttribute("id", "copy-board");
        input.setAttribute("style", "position: absolute;top: 0;left: 0;opacity: 0;z-index: -10;");
        para.appendChild(input);

        header.appendChild(para);
    }, 3);

    function copyText(value) {
        let input = document.getElementById("copy-board");
        input.value = value;
        input.select(); // 选中文本
        document.execCommand("copy"); // 执行浏览器复制命令
        console.log("复制成功, value => " + value)
    }

    // Your code here...

    function waitElementLoaded(cName, func) {
        var count = 0;
        let timer = setInterval(() => {
            console.log("==========================");
            count++;
            if (count > 50) {
                clearInterval(timer);
            }
            let element = document.getElementsByClassName(cName);
            if (element) {
                clearInterval(timer);
                func(element);
            }
        }, 1500);
    }
})();