From 128e974b22881d81f4c1af7d175fe4d6f5fad45c Mon Sep 17 00:00:00 2001 From: fofolee Date: Fri, 15 Jan 2021 22:54:31 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=20quickpanel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/index.js | 115 ++++++++++++++++++++++++++++++++++------ src/index.html | 1 + src/logo/quickpanel.png | Bin 0 -> 4699 bytes 3 files changed, 99 insertions(+), 17 deletions(-) create mode 100644 src/logo/quickpanel.png diff --git a/src/assets/index.js b/src/assets/index.js index cd80057..669dec9 100644 --- a/src/assets/index.js +++ b/src/assets/index.js @@ -62,7 +62,7 @@ putDB({ cmd: cmd, program: program, scptarg: scptarg, customoptions: customoptions }, CFG_PREFIX + 'codeHistory') } // 初始化 - $("#options, #out").empty() + $("#options, #out, #quickpanel").empty() $('body').children(':not(#wrapper)').remove() $('body').css({overflow: 'hidden'}) if (handleEnter) document.removeEventListener('keydown', handleEnter) @@ -86,11 +86,15 @@ if (qcparser.single) qc = qcparser.qc } editCurrentCommand(qc, false) + } else if (code.slice(0,6) == 'panel_') { + utools.setExpendHeight(600) + let features = getPanelFeatures(payload) + showPanel(features) } else { // console.log(new Date().getTime() - window.startTime); $('body').css({overflow: 'auto'}) utools.setExpendHeight(0); - $("#options").hide(); + $("#options, #quickpanel").hide(); var db = getDB(QC_PREFIX + code), cmd = db.cmd; if (db.program == "custom") { @@ -597,11 +601,22 @@ ` } + let getCurrentFts = () => { + let features = utools.getFeatures() + let currentFts = [] + let quickpanels = [] + features.forEach(x => x.code.slice(0, 6) == 'panel_' ? quickpanels.push(decodeURI(x.code.slice(6))) : currentFts.push(x)) + return { + currentFts: currentFts, + quickpanels: quickpanels, + } + } + // 显示设置界面 let showOptions = (tag = "默认") => { $("#options").empty().fadeIn(); - var currentFts = utools.getFeatures(), - customFts = getAllQuickCommands(); + var currentFts = getCurrentFts().currentFts + var customFts = getAllQuickCommands() var allTags = ["默认"] var featureList = `
@@ -616,11 +631,16 @@ } }) featureList += `
` - var sidebar = ` - ` + var quickpanels = getCurrentFts().quickpanels + var sidebar = + `` var footer = `
清除数据
@@ -629,11 +649,14 @@
全部导出
查看帮助
分享中心
-
快捷面板
+
快捷面板
导入命令
新建命令
` $("#options").append(sidebar + featureList + footer) + if (tag != '默认' || tag != '未分类') { + if (quickpanels.includes(tag)) $('#addToPanel').css({ "filter": "none" }) + } checkSharedQc() } @@ -746,6 +769,33 @@ }) } + let getPanelFeatures = tag => { + let activedCode = utools.getFeatures().map(x => x.code) + let features = utoolsFull.db.allDocs('qc_key_').filter(x => { + if (!x.data.tags) return false + if (!x.data.tags.includes(tag)) return false + if (x.data.features.platform && !x.data.features.platform.includes(window.processPlatform)) return false + if (!activedCode.includes(x.data.features.code)) return false + return true + }) + return features + } + + let showPanel = features => { + let panel = '' + let n = 0 + features.forEach(p => { + if (n % 6 == 0) panel += '' + panel += `` + n += 1 + if (n % 6 == 0) panel +='' + }); + $('#quickpanel').html(panel + '
+ +
${p.data.features.explain}
+
').show() + } + let checkSharedQc = async () => { let localShares = getDB(CFG_PREFIX + 'sharedQcCounts')[window.processPlatform] || 0 let remoteShares = await getDocsFromYuQue() @@ -1039,9 +1089,34 @@ break; case 'clear': clearAll(); break; + case 'addToPanel': addToPanel() } }) + let addToPanel = () => { + let tag = $('.currentTag').text() + if (tag == '默认' || tag == '未分类') return quickcommand.showMessageBox('当前标签不支持', 'error') + let code = `panel_${encodeURI(tag)}` + if (!utoolsFull.removeFeature(code)) { + let features = getPanelFeatures(tag) + if (features.length == 0) return quickcommand.showMessageBox('快捷面板仅支持匹配模式为关键词的命令,当前标签不存在该类型命令或者该命令未启用', 'error', 8000) + let feature = { + code: code, + explain: `${tag}面板`, + cmds: [tag], + icon: "logo/quickpanel.png" + } + utoolsFull.setFeature(feature); + $('#addToPanel').css({ "filter": "none" }) + $('.currentTag').addClass('panelTag') + quickcommand.showMessageBox(`已为当前标签启动快捷面板
utools 中直接输入${tag}即可进入`, 'success', 5000) + } else { + $('#addToPanel').attr("style", "") + $('.currentTag').removeClass('panelTag') + quickcommand.showMessageBox("已取消当前标签的快捷面板") + } + } + let editCurrentCommand = async (data, animate = true) => { let features = data.features || {} let code = features.code @@ -1053,6 +1128,7 @@ fromShare: data.fromShare } if (data.tags && data.tags.includes("默认")) readonly = true + if($('#options').is(":empty")) showOptions() showCustomize(readonly); $('#customize').data('extraInfo', extraInfo) data.tags && $('#tags').val(data.tags).trigger('change') @@ -1802,14 +1878,14 @@ - 运 行 - 编码设置 + 运 行 + 编码设置 - 格式化 - - ?文档 + 格式化 + + ?文档 @@ -1818,7 +1894,7 @@ createEditor() $(".CodeMirror").addClass('CodeMirror-coderunner') $("#customize").css({ top: '0px', padding: '0px' }); - $("span.customscript > input").css({"height": "30px"}) + $("span.customscript > input").css({"height": "26px"}) var history = getDB(CFG_PREFIX + 'codeHistory') createProgramSelect2(140, true) if (file) { @@ -1937,6 +2013,11 @@ } }) + $("#quickpanel").on('click', 'img', function () { + let cmd = $(this).attr('cmd') + utools.redirect(cmd) + }) + Mousetrap.bind('ctrl+s', () => { SaveCurrentCommand() return false diff --git a/src/index.html b/src/index.html index ad56f7f..b236da6 100755 --- a/src/index.html +++ b/src/index.html @@ -22,6 +22,7 @@
+

         
     
diff --git a/src/logo/quickpanel.png b/src/logo/quickpanel.png new file mode 100644 index 0000000000000000000000000000000000000000..687f6d494028f3caf2185808695feff010d9c454 GIT binary patch literal 4699 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