您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
让工作更高效,让生活更美好!
当前为
// ==UserScript== // @name 阿里云效伴侣&WorkTile // @version 0.2.1 // @description 让工作更高效,让生活更美好! // @author Jack.Chan ([email protected]) // @namespace http://fulicat.com // @homepage https://greasyfork.org/zh-CN/scripts/444697 // @url https://greasyfork.org/zh-CN/scripts/444697-%E9%98%BF%E9%87%8C%E4%BA%91%E6%95%88%E4%BC%B4%E4%BE%A3-worktile // @license MIT // @match https://flow.aliyun.com/my* // @match https://flow.aliyun.com/all* // @match https://flow.aliyun.com/groups/* // @match https://flow.aliyun.com/pipelines/*/* // @icon https://img.alicdn.com/imgextra/i3/O1CN01TKugcB25GaoLOe5rA_!!6000000007499-55-tps-102-102.svg // @grant none // @run-at document-end // ==/UserScript== // @icon https://flow.aliyun.com/favicon.ico (function() { 'use strict'; function initStyle() { var $style = document.createElement('style'); $style.type = 'text/css'; $style.innerHTML = ` .worktile-task-url{ display: block; white-space: normal; word-break: break-all; padding: 2px; } .worktile-task-url p{ margin: 0; padding: 2px; } .run-param-config .next-dialog-body .variable-input:not(.next-focus) { border-width: 1px !important; } .tb-navigator-container .tb-navigator-nav-inner{ background-color: #e1f2ff !important; border-bottom: 1px solid #ddd; } .tb-common-sidebar-main-item.is-group-item .tb-common-sidebar-main-item-jsx{ left: 10px; width: 185px; } .next-collapse-panel.next-collapse-panel-hidden>.next-collapse-panel-content{ display: block !important; height: auto !important; opacity: 1 !important; } .tb-navigation-avatar img{ border: 2px solid #ffffff; box-shadow: 0 0 10px 8px #4caf50; } .next-dialog-header.has-worktile{ background-color: #e1f2ff !important; border-radius: 4px 4px 0 0 !important; } `; document.head.appendChild($style); } function doCopy(value, callback) { value = value === undefined || value === null ? '' : value; var $textarea = document.createElement('textarea'); $textarea.style.cssText = "position:absolute;left:-20px;top: -20px;width:0;height:0;opacity: 0;"; document.body.appendChild($textarea); $textarea.value = value; $textarea.select(); setTimeout(() => { document.execCommand('Copy'); document.body.removeChild($textarea); console.log('@copied:', value); if (typeof callback === 'function') { callback(value); } }, 150); } var isDialogHasBind = false; var isHistoryHasBind = false; function run() { var pipelinesId = 0; var paths = window.location.pathname.split('/'); // console.log('click.run:', paths); if (paths.length > 3 && !isNaN(paths[2])) { pipelinesId = paths[2]; var $dialog = document.querySelector('.next-dialog'); console.log('$dialog:', $dialog); var $dialogHeader = document.querySelector('.next-dialog-header'); var $Branch = document.querySelector('.next-input>input[value="Branch"]'); var $WorktileTask = document.querySelector('.next-input>input[id="WorktileTask"]'); var $BtnCancel = document.querySelector('.next-dialog-footer>button:nth-child(1)'); var $BtnRun = document.querySelector('.next-dialog-footer>button:nth-child(2)'); var $pageHistory = document.querySelector('.pipe-histories-container'); var isReady = $Branch && $WorktileTask && $BtnRun && $BtnRun?.innerText === '运行' && $BtnCancel; var isDialog = $Branch && $WorktileTask && $BtnRun && $BtnRun?.innerText === '运行' && $BtnCancel; var isHistory = /pipelines\/(\d+)\/history/.test(window.location.pathname); var $task; if (pipelinesId) { if (isDialog) { if ($dialogHeader) { $dialogHeader.classList.add('has-worktile'); } if (!isDialogHasBind) { if ($BtnRun) { $task = document.createElement('div'); $task.id = 'WorktileTaskURL'; $task.className = 'worktile-task-url'; $Branch.parentNode.parentNode.parentNode.appendChild($task); $task.addEventListener('dblclick', function(event) { event.preventDefault(); event.stopPropagation(); //doCopy($task.value); }, false); $WorktileTask.addEventListener('dblclick', function(event) { $WorktileTask.select(); }, false); $Branch.addEventListener('keydown', function(event) { if ($Branch.timer) { clearTimeout($Branch.timer); $Branch.timer = undefined; } }, false); $Branch.addEventListener('keyup', function(event) { if ($Branch.timer) { //clearTimeout($Branch.timer); //$Branch.timer = undefind; } var branch = this.value.trim(); var key = 'pipelinesId:'+ pipelinesId +':'+ branch; if (branch) { var task = window.localStorage.getItem(key) || ''; console.log('@hasTask', key, task); if (task) { $task.innerHTML = '<p>'+ task + '</p>' + (task ? '<a id="link-do-copy" href="#" style="user-select: none;">点击复制</a>' : ''); var $linkDoCopy = $task.querySelector('#link-do-copy'); $linkDoCopy.onclick = function(evt) { evt.preventDefault(); evt.stopPropagation(); doCopy(task, () => { $linkDoCopy.innerText = '复制成功'; setTimeout(() => { $linkDoCopy.innerText = '点击复制'; }, 1500); }); return false; } } else { $task.innerHTML = '<p><small style="user-select: none;color: red;">未找到关联需求/任务,请去Worktile查找或联系产品经理</small></p>'; } $task.value = task; } else { $task.value = ''; $task.innerHTML = ''; } }, false); $BtnCancel.addEventListener('click', function(event) { var branch = $Branch.value.trim(); var key = 'pipelinesId:'+ pipelinesId +':'+ branch; if (branch) { window.localStorage.removeItem(key); console.log('@removed', key); } }, false); $BtnRun.addEventListener('click', function(event) { var branch = $Branch.value.trim(); var task = $WorktileTask.value.trim(); var key = 'pipelinesId:'+ pipelinesId +':'+ branch; if (branch && task) { window.localStorage.setItem(key, task); console.log('@saved', key, task); } }, false); isDialogHasBind = true; } } console.log('DialogReady:pipelinesId:'+ pipelinesId, 'isDialogHasBind:'+ isDialogHasBind); } // 一键取消 历史流水线 if (isHistory) { if (!isHistoryHasBind && $pageHistory) { var $pageHistoryPager = $pageHistory.querySelector('.next-pagination'); var $btnCancelAll = document.createElement('button'); $btnCancelAll.setAttribute('type', 'button'); $btnCancelAll.setAttribute('class', 'next-btn next-medium next-btn-primary btn-cancel-all'); $btnCancelAll.style.cssText = 'margin-left: 15px;'; $btnCancelAll.innerText = '一键取消'; $btnCancelAll.addEventListener('click', function(event) { var currentPage = document.querySelector('.next-pagination-item.next-current').innerText; document.querySelectorAll('ul.action>li+li>button.isTwoToThreeCNCharBtn').forEach((item, index) => { ((btn) => { if (currentPage != '1' || (currentPage == '1' && index !== 0)) { console.log('click:', { currentPage, index }); btn.click(); } })(item, index); }); }, false); $pageHistoryPager.appendChild($btnCancelAll); isHistoryHasBind = true; } console.log('HistoryReady:pipelinesId:'+ pipelinesId, 'isHistoryHasBind:'+ isHistoryHasBind); } } } } function init() { var delay = 2000; document.body.addEventListener('mousedown', function(e) { var $yxdialog = document.querySelector('.yx-dialog'); if ($yxdialog) { delay = 600; } setTimeout(() => { run(); }, delay); }, false); setTimeout(() => { run(); }, delay); } if (document.contentType.startsWith('text/html')) { initStyle(); init(); } })();