您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Can extract Jira Issues from GitLab after you enable the plugin jira-issue-tracker
当前为
// ==UserScript== // @name GitLab Jira Issue extractor // @namespace http://tampermonkey.net/ // @version 0.1 // @description Can extract Jira Issues from GitLab after you enable the plugin jira-issue-tracker // @author tanglei.me // @match *://*/* // @require http://code.jquery.com/jquery-latest.min.js // @grant GM_xmlhttpRequest // ==/UserScript== // replace your gitlab url to @match var hasExact = false; String.prototype.format = function () { var args = arguments; return this.replace(/\{(\d+)\}/g, function (m, n) { return args[n]; }); }; function getTitle(issueId, url) { var details = GM_xmlhttpRequest({ method:"GET", url:url, onload: function (res) { var text = res.responseText; var dom = $(text); var titleNode = dom[124]; var titleText = ""; if (titleNode.nodeName == 'TITLE') { titleText = titleNode.innerText; } else { // if not the 124th one for (var node of dom) { if (node.nodeName == 'TITILE') { titleText = node.innerText; } } } //console.log("issueId:" + issueId + ", title: " + titleText); var title = titleText.trim(); var end = titleText.lastIndexOf('-'); if (end > 0) { title = titleText.substring(0, end).trim(); } var nodeId = "JIRA-ISSUE-" + issueId; $("#"+nodeId).append(", " + title); } }); } (function() { 'use strict'; var btn = ''; var mrClass = '.merge-request-details > .detail-page-description'; var diffClass = '.commits-compare-btn'; var resultBtnDom = ".not.exist.class"; if ($(mrClass).length > 0) { resultBtnDom = $(mrClass); btn = '<div style="display:block"><button id="extractBtn" class="btn btn-success" style="margin-left:0px;">Extract Issues</button></div><hr/>'; } else if ($(diffClass).length > 0) { resultBtnDom = $(diffClass).parent(); btn = '<div style="display:block"><button id="extractBtn" class="btn btn-success" style="margin-left:20px;">Extract Issues</button></div><hr/>'; } else { return; } var resultDiv = '<ul id="jira-issue-extractor-result"></ul>' resultBtnDom.append(btn + resultDiv); $('#extractBtn').click(function() { if (hasExact === true) return; var issues = new Map(); $('[data-external-issue]').map(function() { var link = $(this).attr('href'); var issueId = this.text; issues.set(issueId, {'link': link, 'issue_id': issueId}); }); var uniqueItems = []; issues.forEach(function(obj) { getTitle(obj.issue_id, obj.link); uniqueItems += '<li><a href="{0}" id="JIRA-ISSUE-{1}">{0}</a></li>'.format(obj.link, obj.issue_id); }); uniqueItems += "<hr/>" console.log("uniqueItems:" + uniqueItems); // $('textarea').val(uniqueItems); if (hasExact === false) { $('#jira-issue-extractor-result').append(uniqueItems); hasExact = true; $('#extractBtn').prop('disabled', true); } }); })();