// ==UserScript== // @name 获取分支1.1 // @namespace http://tampermonkey.net/ // @version 1.1 // @description 创建bug、关闭bug等操作时,可以快速获取分支 // @author ydr // @match http://jira.meitu.com/* // @grant GM_xmlhttpRequest // @grant GM_setValue // @grant GM_getValue // @grant GM_deleteValue // @downloadURL none // ==/UserScript== (function () { 'use strict'; const refreshTime = 1000; //评论上的获取分支按钮 function addCommentButton() { // 生成获取分支对应输入框和按钮UI let $branch_span_comment = $('输入id:'); let $input_text = $(''); let $branch_btn_comment = $(''); let $last_branch_btn_comment = $(''); // 判断UI是否存在,存在则不再重复添加,不存在则添加到对应的位置 var is_btn = document.getElementById('get_branch_btn_comment'); if (!is_btn) { let $b = $branch_span_comment.append($input_text).append($branch_btn_comment).append($last_branch_btn_comment); $("#addcomment").after($b); } } //关闭jira时获取分支按钮 function closeJiraButton() { // 因点击关闭按钮时,弹窗元素需要等一会才弹出,所以这边设置了展示延迟 setTimeout(function () { // 生成获取分支对应输入框和按钮UI let $branch_span_close = $('输入id:'); let $input_text_close = $(''); let $branch_btn_close = $(''); let $last_branch_btn_close = $(''); // 判断UI是否存在,存在则不再重复添加,不存在则添加到对应的位置 var is_close_btn = document.getElementById('get_branch_btn_close'); if (!is_close_btn) { let $c = $branch_span_close.append($input_text_close).append($branch_btn_close).append($last_branch_btn_close); $("#issue-workflow-transition-submit").before($c); } }, 800); } //重新打开jira时获取分支按钮 function openJiraButton() { // 因点击重新打开按钮时,弹窗元素需要等一会才弹出,所以这边设置了展示延迟 setTimeout(function () { // 生成获取分支对应输入框和按钮UI let $branch_span_open = $('输入id:'); let $input_text_open = $(''); let $branch_btn_open = $('
'); let $last_branch_btn_open = $(''); // 判断UI是否存在,存在则不再重复添加,不存在则添加到对应的位置 var is_open_btn = document.getElementById('get_branch_btn_open'); if (!is_open_btn) { let $d = $branch_span_open.append($input_text_open).append($branch_btn_open).append($last_branch_btn_open); $("#issue-workflow-transition-submit").before($d); } }, 800); } // 创建jira时添加获取分支按钮 function addJiraButton() { //创建jira上的获取分支按钮 let $branch_span = $(''); let $branch_btn = $(''); let $a = $branch_span.append($branch_btn); $("#customfield_10303").after($a); let $last_branch_btn = $(''); $branch_span.append($last_branch_btn); } // 通过平台+build id,获取对应分支,并回调到对应的函数上 function get_branch(platform, build_id) { var url = ''; var branch = ''; var result = ''; // 获取iOS的分支 if (platform == 'iOS') { url = 'http://ios.meitu-int.com/ipa/mtxx/build/' + build_id; GM_xmlhttpRequest({ url: url, method: 'GET', onload: function (res) { if (res.status === 200) { // 通过正则匹配获取分支名称 var r = '(.*?)'; try { branch = res.responseText.match(r)[1]; } catch { branch = '未找到该包的分支'; } } else { branch = '未找到该包的分支'; } // 拼接成分支+build id并返回 result = branch + '#' + build_id; GM_setValue('branch_value', result); }, onerror: function (err) { result = '接口请求失败,建议重新关闭开启脚本再试试'; GM_setValue('branch_value', result); } }); } // 获取Android的分支 else if (platform == 'Android') { url = 'https://api-ci-data.meitu.city/ci/api/v2/build?project=Meitu&build=' + build_id; GM_xmlhttpRequest({ url: url, method: 'GET', onload: function (res) { if (res.status === 200) { // 通过正则匹配获取分支名称 var r = '"branch":"(.*?)"'; try { branch = res.responseText.match(r)[1]; } catch { branch = '未找到该包的分支'; } } else { console.log("失败"); branch = '未找到该包的分支'; } // 拼接成分支+build id并返回 // 拼接成分支+build id并返回 result = branch + '#' + build_id; console.log("Android分支:" + result); GM_setValue('branch_value', result); console.log("Android分支设置成功:" + result); }, onerror: function (err) { result = '接口请求失败,建议重新关闭开启脚本再试试'; GM_setValue('branch_value', result); console.log("error"); console.log(err); } }); } } // 当是jira域名时,才触发后续的操作,如果不是则不触发 if (location.href.indexOf('jira.meitu.com') > 0) { clearInterval(refreshTime); setInterval(function () { // 因创建jira入口较多,这边默认1s刷新一次 addJiraButton(); // 点击【备注】时,进行插入UI相关操作 $('#footer-comment-button').unbind("click").click(function () { addJiraButton(); // 评论位置加入icon var is_btn_comment = document.getElementById('get_branch_btn_comment'); // 如果不存在则添加 if (!is_btn_comment) { addCommentButton(); } }); // 点击【重新打开】时,进行插入UI相关操作 $('#action_id_31').unbind("click").click(function () { var is_btn_open = document.getElementById('get_branch_btn_open'); // 如果不存在则添加 if (!is_btn_open) { openJiraButton(); } }); // 点击【关闭问题】时,进行插入UI相关操作 $('#action_id_21').unbind("click").click(function () { console.log("点击几次"); //var is_btn_close_dialog = document.getElementById('workflow-transition-21-dialog'); var is_btn_close = document.getElementById('get_branch_btn_close'); // 如果不存在则添加 if (!is_btn_close) { closeJiraButton(); } }); // 评论入口,点击【获取分支】按钮时,获取对应分支 $("#get_branch_btn_comment").unbind("click").click(function () { // 获取bug页面的平台 var platform_text = $("#customfield_10301-val").text(); var platform = platform_text.replace(/(^\s*)|(\s*$)/g, ""); //去掉前后的空格 var input_build_id_comment = document.getElementById("build_id_comment").value; var build_id_comment = input_build_id_comment.replace(/[^0-9]/ig, ""); //只提取里面的数字,避免有空格之类的 var comment_text = $("#addcomment textarea[id='comment']").val(); // 判断平台是否正确,如果不正确则弹出弹窗提示,正确则调用回调函数 if (platform == '' || platform == "Web") { get_branch('Android', build_id_comment); setTimeout(function () { var value = GM_getValue('branch_value', '未找到历史记录'); var default_value = '未找到该包的分支'+"#"+build_id_comment if (value == default_value){ get_branch('iOS', build_id_comment); } setTimeout(function () { var value = GM_getValue('branch_value', '未找到历史记录'); document.getElementById('build_id_comment').value = value; var result_value = comment_text + value; $("#addcomment textarea[id='comment']").val(result_value); var e = document.getElementById("build_id_comment"); //对象是contents e.select(); //选择对象 (全选) document.execCommand("Copy"); //执行浏览器复制命令 $("#addcomment textarea[id='comment']").focus(); }, 500); }, 500); } else { get_branch(platform, build_id_comment); // 支持直接复制分支操作,设置了300ms的延迟,避免接口没来得及返回 setTimeout(function () { var value = GM_getValue('branch_value', '未找到历史记录'); document.getElementById('build_id_comment').value = value; var result_value = comment_text + value; $("#addcomment textarea[id='comment']").val(result_value); var e = document.getElementById("build_id_comment"); //对象是contents e.select(); //选择对象 (全选) document.execCommand("Copy"); //执行浏览器复制命令 $("#addcomment textarea[id='comment']").focus(); }, 500); } }) // 重新打开jira入口,点击【获取分支】按钮时,获取对应分支 $("#get_branch_btn_open").unbind("click").click(function () { // 获取bug页面的平台 var platform_text = $("#customfield_10301-val").text(); var platform = platform_text.replace(/(^\s*)|(\s*$)/g, ""); //去掉前后的空格 var open_text = $("#workflow-transition-31-dialog textarea[id='comment']").val(); console.log("jira上的平台:", platform); var input_build_id_open = document.getElementById("build_id_open").value; var build_id_open = input_build_id_open.replace(/[^0-9]/ig, ""); //只提取里面的数字,避免有空格之类的 // 判断平台是否正确,如果不正确则弹出弹窗提示,正确则调用回调函数 if (platform == '' || platform == "Web") { get_branch('Android', build_id_open); setTimeout(function () { var value = GM_getValue('branch_value', '未找到历史记录'); var default_value = '未找到该包的分支'+"#"+build_id_open if (value == default_value){ get_branch('iOS', build_id_open); } setTimeout(function () { var value = GM_getValue('branch_value', '未找到历史记录'); document.getElementById('build_id_open').value = value; var result_value = open_text + value; $("#workflow-transition-31-dialog textarea[id='comment']").val(result_value); var e = document.getElementById("build_id_open"); //对象是contents e.select(); //选择对象 (全选) document.execCommand("Copy"); //执行浏览器复制命令 $("#workflow-transition-31-dialog textarea[id='comment']").focus(); }, 500); }, 500); } else { get_branch(platform, build_id_open); setTimeout(function () { var value = GM_getValue('branch_value', '未找到历史记录'); console.log("重新打开jira获取的分支:",value); document.getElementById('build_id_open').value = value; var result_value = open_text + value; $("#workflow-transition-31-dialog textarea[id='comment']").val(result_value); var e = document.getElementById("build_id_open"); //对象是contents e.select(); //选择对象 (全选) document.execCommand("Copy"); //执行浏览器复制命令 $("#workflow-transition-31-dialog textarea[id='comment']").focus(); }, 500); } }) // 关闭jira入口,点击【获取分支】按钮时,获取对应分支 $("#get_branch_btn_close").unbind("click").click(function () { // 获取bug页面的平台 var platform_text = $("#customfield_10301-val").text(); var platform = platform_text.replace(/(^\s*)|(\s*$)/g, ""); //去掉前后的空格 console.log("jira上的平台:", platform); var close_text = $("#workflow-transition-21-dialog textarea[id='comment']").val(); console.log("有获取到吗?",close_text); var input_build_id_close = document.getElementById("build_id_close").value; var build_id_close = input_build_id_close.replace(/[^0-9]/ig, ""); //只提取里面的数字,避免有空格之类的 // 判断平台是否正确,如果不正确则弹出弹窗提示,正确则调用回调函数 if (platform == '' || platform == "Web") { get_branch('Android', build_id_close); setTimeout(function () { var value = GM_getValue('branch_value', '未找到历史记录'); var default_value = '未找到该包的分支'+"#"+build_id_close if (value == default_value){ get_branch('iOS', build_id_close); } setTimeout(function () { var value = GM_getValue('branch_value', '未找到历史记录'); var result_value = close_text + value; console.log("关闭jira获取的总文案:",result_value); $("#workflow-transition-21-dialog textarea[id='comment']").val(result_value); console.log("最终有执行到这边吗?",result_value); document.getElementById('build_id_close').value = value; var e = document.getElementById("build_id_close"); //对象是contents e.select(); //选择对象 (全选) document.execCommand("Copy"); //执行浏览器复制命令 $("#workflow-transition-21-dialog textarea[id='comment']").focus(); }, 500); }, 500); } else { get_branch(platform, build_id_close); setTimeout(function () { var value = GM_getValue('branch_value', '未找到历史记录'); var result_value = close_text + value; console.log("关闭jira获取的总文案:",result_value); $("#workflow-transition-21-dialog textarea[id='comment']").val(result_value); console.log("最终有执行到这边吗?",result_value); document.getElementById('build_id_close').value = value; var e = document.getElementById("build_id_close"); //对象是contents e.select(); //选择对象 (全选) document.execCommand("Copy"); //执行浏览器复制命令 $("#workflow-transition-21-dialog textarea[id='comment']").focus(); }, 500); } }) // 创建jira入口,点击【获取分支】按钮时,获取对应分支 $("#get_branch_btn").unbind("click").click(function () { //获取创建bug页面上的平台 var create_platform = ''; var platform_list = ['Android', 'iOS', 'Web']; let inputs = document.getElementsByName("customfield_10301"); // 遍历获取哪个平台是被选中的,从而根据平台去获取分支 for (var i = 0; i < inputs.length; i++) { if (inputs[i].checked) { // 选中则代表指向该平台 create_platform = platform_list[i] } }; var input_build_id = document.getElementById("customfield_10303").value; var build_id = input_build_id.replace(/[^0-9]/ig, ""); //只提取里面的数字,避免有空格之类的 if (create_platform == '' || create_platform == "Web") { get_branch('Android', build_id); setTimeout(function () { var value = GM_getValue('branch_value', '未找到历史记录'); var default_value = '未找到该包的分支'+"#"+build_id if (value == default_value){ get_branch('iOS', build_id); } setTimeout(function () { var value = GM_getValue('branch_value', '未找到历史记录'); console.log("创建jira获取的分支:",value); // 创建jira时的分支展示的地方 document.getElementById('customfield_10303').value = value; }, 500); }, 500); //alert("请选择Android或iOS平台"); } else { get_branch(create_platform, build_id); setTimeout(function () { var value = GM_getValue('branch_value', '未找到历史记录'); console.log("创建jira获取的分支:",value); // 创建jira时的分支展示的地方 document.getElementById('customfield_10303').value = value; }, 500); } }); // 创建bug获取上次分支按钮 $("#last_branch_btn").unbind("click").click(function () { var value = GM_getValue('branch_value', '未找到记录'); document.getElementById('customfield_10303').value = value; }); // 重新打开bug获取上次分支按钮 $("#last_branch_btn_open").unbind("click").click(function () { var value = GM_getValue('branch_value', '未找到记录'); var open_text = $("#workflow-transition-31-dialog textarea[id='comment']").val(); var result_value = open_text + value; $("#workflow-transition-31-dialog textarea[id='comment']").val(result_value); $("#workflow-transition-31-dialog textarea[id='comment']").focus(); }); // 关闭bug获取上次分支按钮 $("#last_branch_btn_close").unbind("click").click(function () { var value = GM_getValue('branch_value', '未找到记录'); var close_text = $("#workflow-transition-21-dialog textarea[id='comment']").val(); var result_value = close_text + value; $("#workflow-transition-21-dialog textarea[id='comment']").val(result_value); $("#workflow-transition-21-dialog textarea[id='comment']").focus(); }); // 评论bug获取上次分支按钮 $("#last_branch_btn_comment").unbind("click").click(function () { var value = GM_getValue('branch_value', '未找到记录'); var comment_text = $("#addcomment textarea[id='comment']").val(); var result_value = comment_text + value; $("#addcomment textarea[id='comment']").val(result_value); $("#addcomment textarea[id='comment']").focus(); }); }, refreshTime); } // Your code here... })();