// ==UserScript== // @name 摹客增强插件 // @namespace https://greasyfork.org/zh-CN/scripts/429346 // @version 0.1.9 // @description 增强项目导航菜单,设置默认手型工具(按h键可切换) // @author Wilson // @match https://app.mockplus.cn/app/*/* // @icon https://app.mockplus.cn/favicon.ico // @require https://cdn.jsdelivr.net/npm/jquery@3.2.1/dist/jquery.min.js // @grant GM_xmlhttpRequest // @downloadURL https://update.greasyfork.icu/scripts/429346/%E6%91%B9%E5%AE%A2%E5%A2%9E%E5%BC%BA%E6%8F%92%E4%BB%B6.user.js // @updateURL https://update.greasyfork.icu/scripts/429346/%E6%91%B9%E5%AE%A2%E5%A2%9E%E5%BC%BA%E6%8F%92%E4%BB%B6.meta.js // ==/UserScript== (function() { 'use strict'; //http请求 function httpRequest(url, fn, method, data, header) { method = method || "get"; data = data || ""; header = header || {}; GM_xmlhttpRequest({ method: method, url: url, data: data, headers: header, onload: function(res){ if(res.status === 200){ //console.log('sucess',method,url); if(fn) fn(res); }else{ console.log('error',method,url); console.log(res); if(fn) fn(null); } }, onerror : function(err){ console.log('error',method,url); console.log(err); if(fn) fn(null); } }); } $('#app').on("DOMNodeInserted", function(event){ if(!event || !event.target || !event.target.className) return; let className = event.target.className || ""; //app-container app-header if(className == "app-container" || className == "app-header"){ httpRequest("https://app.mockplus.cn/api/v1/user/info", function(info){ if(info && info.response){ info = JSON.parse(info.response); if(info.code != 0){ console.log('error', info.message,catUrl, info); return; } let defaultIDocTeamID = info.payload.defaultIDocTeamID; let catUrl = "https://app.mockplus.cn/api/v1/app/allAppAndAppSet/"+defaultIDocTeamID+"?needArchivedApp=true&source=all&needAppSet=true&rnd="+Math.random(); httpRequest(catUrl, function(res){ if(res && res.response){ //get menu list let data = JSON.parse(res.response); // console.log(11111,catUrl,data); if(data.code != 0){ console.log('error', data.message,catUrl,data); return; } data = data.payload.apps; //按访问时间倒序 data.sort(function(x, y) { return new Date(y['accessedAt']).getTime() - new Date(x['accessedAt']).getTime()}); //console.log(data, 222); //menu setTimeout(function(){ //设置默认手型工具 let movehand = document.querySelector(".icon-_artboard_movehand"); movehand.click(); //绑定h按键 document.addEventListener("keypress", function(event){ if (event.keyCode == 104){ movehand.click(); } }, false); //获取项目菜单 let appsetUrl = "https://app.mockplus.cn/team/"+defaultIDocTeamID+"/AppSet/"; let list = ""; for(let i in data){ let item = data[i]; let href = location.href.replace(/\/app\/.+\//i, '/app/'+item._id+'/'); let subarrow = ''; let submenu = ''; if(item.isAppSet) { href = appsetUrl + item._id; subarrow = ``; //子菜单 let submenulist=''; let subs = item.children; //按访问时间倒序 subs.sort(function(x, y) { return new Date(y['accessedAt']).getTime() - new Date(x['accessedAt']).getTime()}); //console.log(subs); for(let j in subs){ let sub = subs[j]; let subhref = location.href.replace(/\/app\/.+\//i, '/app/'+sub._id+'/'); submenulist += '