From c113a9a64dc8519ef82ea851ed620994f5860bf4 Mon Sep 17 00:00:00 2001 From: shaoying Date: Sat, 6 Jun 2020 22:22:30 +0800 Subject: [PATCH] opt some --- frame.js | 109 ++++++++++++++++++++++---------------- index.css | 2 +- lib/page.js | 1 + pane/Action.js | 1 + plugin/inner.css | 1 + plugin/inner.js | 29 ++++------ plugin/local/team/plan.js | 7 +-- 7 files changed, 79 insertions(+), 71 deletions(-) diff --git a/frame.js b/frame.js index 968b532c..41e7a334 100644 --- a/frame.js +++ b/frame.js @@ -64,27 +64,34 @@ Volcanos("onengine", { _init: function(can, meta, list, cb, target) { typeof cb == "function" && cb(msg) return true case "Action": - var river = can.onengine.river[cmds[0]||can.user.Search(can, "river")]; - var storm = river && river.storm[cmds[1]||can.user.Search(can, "storm")]; - var action = storm && storm.action[cmds[2]]; + var river = can.onengine.river[cmds[0]] + var storm = river && river.storm[cmds[1]] + var action = storm && storm.action && storm.action[cmds[2]] if (!storm) { break } if (cmds.length == 2) { + if (storm.index) { + can.misc.Run(event, can, {names: pane._name}, [river.name, storm.name, "index"].concat(storm.index), cb) + return true + } + can.core.List(storm.action, function(value) { - msg.Push("name", value.name||""); - msg.Push("help", value.help||""); - msg.Push("pod", value.pod||""); - msg.Push("group", value.group||""); - msg.Push("index", value.index||""); - msg.Push("args", value.args||"[]"); - msg.Push("inputs", JSON.stringify(value.inputs||[])); - msg.Push("feature", JSON.stringify(value.feature||{})); + msg.Push("name", value.name||"") + msg.Push("help", value.help||"") + msg.Push("pod", value.pod||"") + msg.Push("group", value.group||"") + msg.Push("index", value.index||"") + msg.Push("args", value.args||"[]") + msg.Push("inputs", JSON.stringify(value.inputs||[])) + msg.Push("feature", JSON.stringify(value.feature||{})) }) typeof cb == "function" && cb(msg); - } else if (action.engine) { - action.engine(event, can, msg, pane, cmds, cb); - } else { + } else if (action && action.engine) { + action.engine(event, can, msg, pane, cmds, cb) + } else if (action) { msg.Option("group", action.group) msg.Option("index", action.index) return false + } else { + return false } return true } @@ -103,19 +110,10 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { var action = can.page.Select(can, field, "div.action")[0]; var output = can.page.Select(can, field, "div.output")[0]; var status = can.page.Select(can, field, "div.status")[0]; + var feature = can.base.Obj(meta.feature) can.page.ClassList.add(can, field, feature.style||"") - - legend && (legend.onclick = function(event) { var msg = can.request(event) - can.core.List(["share", "pod"], function(key) { var value = can.user.Search(can, key) - value != undefined && msg.Option(key, can.user.Search(key)) - }) - can.core.List(["River", "Storm", "Action"], function(item) { - can.run(event, ["search", item+".onexport.key"]) - }) - var args = {}; can.core.List(msg.option, function(key) { args[key] = msg.Option(key) }) - location.href = can.user.Share(can, args, true) - }) + can.onappend._legend(can, legend) // 添加插件 var sub = Volcanos(meta.name, { _help: meta.name, _target: field, @@ -185,7 +183,7 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { } // 解析参数 - cmds = cmds && cmds.length > 0? cmds: can.page.Select(can, option, "input.args", function(item) { + cmds = cmds && cmds.length > 0? cmds: can.page.Select(can, option, "input.args,select.args", function(item) { return item.name && item.value || "" }); for (var i = cmds.length-1; i >= 0; i--) { if (!cmds[i]) { cmds.pop() } else { break } @@ -232,27 +230,10 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { return run(event, cmds, cb, silent) } - // 工具栏 - action.innerHTML = "", table.onaction && can.core.List(table.onaction.list, function(item) { - item === ""? can.page.Append(can, action, [{view: "item space"}]): - typeof item == "string"? can.onappend.input(can, action, "input", {type: "button", value: item, onclick: function(event) { - table.onaction[item](event, table, msg) - }}): item.length > 0? can.onappend.input(can, action, "input", {type: "select", values: item.slice(1), name: item[0], onchange: function(event) { - table.onaction[item[0]](event, table, msg, item[event.target.selectedIndex+1]) - }}): typeof item == "object" && can.onappend.input(can, action, "input", item) - }) - - // 上下文 - table.ondetail && table.ondetail.list && table.ondetail.list.length > 0 && (table._target.oncontextmenu = function(event) { - can.onappend.carte(sub, table.ondetail||{}, msg["_detail"] || sub.Conf("detail"), function(ev, item, meta) { - (table.ondetail[item]||table.onaction[item])(event, table, msg) - }) - }) - - // 状态条 - status.innerHTML = "", table.onexport && can.core.List(table.onexport.list, function(item) { - can.page.Append(can, status, [{view: "item "+item, title: item, list: [{text: [item+": ", "label"]}, {text: ["", "span"]}]}]) - }) + // 交互控件 + can.onappend._action(table, action) + can.onappend._detail(table, msg, msg["_detail"] || sub.Conf("detail"), output) + can.onappend._status(table, status) sub.Status("ncmd", sub._history.length+"/"+count) }) sub._outputs.push(table) @@ -260,6 +241,40 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { }); cb(sub); }, + _legend: function(can, legend) { + legend && (legend.onclick = function(event) { var msg = can.request(event) + can.core.List(["share", "pod"], function(key) { var value = can.user.Search(can, key) + value != undefined && msg.Option(key, can.user.Search(key)) + }) + can.core.List(["River", "Storm", "Action"], function(item) { + can.run(event, ["search", item+".onexport.key"]) + }) + var args = {}; can.core.List(msg.option, function(key) { args[key] = msg.Option(key) }) + location.href = can.user.Share(can, args, true) + }) + }, + _action: function(can, action) { // [string [class item...] {}] + action.innerHTML = "", can.onaction && can.core.List(can.onaction.list, function(item) { + item === ""? can.page.Append(can, action, [{view: "item space"}]): + typeof item == "string"? can.onappend.input(can, action, "input", {type: "button", value: item, onclick: function(event) { + (can.onaction[item] || can.onkeymap && can.onkeymap._remote)(event, can, item) + }}): item.length > 0? can.onappend.input(can, action, "input", {type: "select", values: item.slice(1), name: item[0], onchange: function(event) { + can.onaction[item[0]](event, can, msg, item[event.target.selectedIndex+1]) + }}): typeof item == "object" && can.onappend.input(can, action, "input", item) + }) + }, + _detail: function(can, msg, list, target) { + can.ondetail && can.ondetail.list && can.ondetail.list.length > 0 && (target.oncontextmenu = function(event) { + can.onappend.carte(can, can.ondetail||{}, list, function(ev, item, meta) { + (can.ondetail[item] || can.onaction[item] || can.onkeymap && can.onkeymap._remote)(event, can, item) + }) + }) + }, + _status: function(can, status) { + status.innerHTML = "", can.onexport && can.core.List(can.onexport.list, function(item) { + can.page.Append(can, status, [{view: "item "+item, title: item, list: [{text: [item+": ", "label"]}, {text: ["", "span"]}]}]) + }) + }, item: function(can, target, type, item, cb, cbs) { var ui = can.page.Append(can, target, [{view: [type, "div", item.nick||item.name], oncontextmenu: function(event) { cbs(event, ui.item) }, click: function(event) { diff --git a/index.css b/index.css index 84833969..dfd26255 100644 --- a/index.css +++ b/index.css @@ -140,7 +140,7 @@ fieldset div.code { padding:10px; overflow:auto; border:solid 3px green; - max-height:640px; + /* max-height:640px; */ } fieldset table { diff --git a/lib/page.js b/lib/page.js index c3b72b2e..03dc2a43 100644 --- a/lib/page.js +++ b/lib/page.js @@ -325,6 +325,7 @@ var page = Volcanos("page", {help: "网页模块", if (text.startsWith("http")) {return ""+text+""} text = text.replace(/\033\[31m/g, "") text = text.replace(/\033\[32m/g, "") + text = text.replace(/\033\[33m/g, "") text = text.replace(/\033\[36m/g, "") text = text.replace(/\033\[1m/g, "") text = text.replace(/\033\[0m/g, "") diff --git a/pane/Action.js b/pane/Action.js index bf2e4bf0..7d9533c2 100644 --- a/pane/Action.js +++ b/pane/Action.js @@ -43,6 +43,7 @@ Volcanos("onexport", {help: "导出数据", list: [], _init: function(can, msg, // console.log(event, sub, msg) // 插件回调 // + msg.Option("index", value.index) return can.run(event, can.onengine[cmds[0]]? cmds: [river, storm, index].concat(cmds), function(msg) { can.run(msg._event, ["search", "Footer.onaction.ncmd"]); can.onappend.toast(can, "执行成功", value.name, 2000); diff --git a/plugin/inner.css b/plugin/inner.css index 334b159d..6e4402a9 100644 --- a/plugin/inner.css +++ b/plugin/inner.css @@ -50,6 +50,7 @@ fieldset.editor>div.output div.preview>div.item:hover { } fieldset.editor>div.output div.preview>div.item.select { background-color:red; + height:20px; border:solid 1px yellow; } fieldset.editor>div.output div.content { font-size:16px; font-family:monospace; diff --git a/plugin/inner.js b/plugin/inner.js index 0583c741..88a91bdb 100644 --- a/plugin/inner.js +++ b/plugin/inner.js @@ -421,11 +421,11 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert" _normal: function(can) { can.onkeymap._mode(can, "normal") }, _insert: function(can) { can.onkeymap._mode(can, "insert") }, - _remote: function(event, can, key, arg) { can.ui.display.innerHTML = "", can.ui.profile.innerHTML = "" + _remote: function(event, can, key, arg, cb) { can.ui.display.innerHTML = "", can.ui.profile.innerHTML = "" var p = can.onsyntax[can.parse] can.display = p && p.profile && can.ui.profile || can.ui.display var msg = can.request(event); msg.Option("content", can.onexport.content(can)) - can.run(event, arg||["action", key, can.Option("path"), can.Option("name")], function(msg) { + can.run(event, arg||["action", key, can.Option("path"), can.Option("name")], cb||function(msg) { if (msg.key && msg.time && msg.key.length != msg.time.length) { msg.key && (msg.key = msg.key.slice(2)) } @@ -590,7 +590,7 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert" }, }, }) -Volcanos("onaction", {help: "控件交互", list: ["", "项目", "", "上传", "保存", "运行", "日志", "", "提交", "历史", "记录", "复盘", "", "收藏", "列表"], +Volcanos("onaction", {help: "控件交互", list: ["", "项目", "", "上传", "保存", "运行", "日志", "", "提交", "历史", "记录", "复盘", "", "收藏", "列表", "搜索", "推荐"], modifyLine: function(can, target, value) { var p = can.onsyntax.parse(can, value) typeof p == "object"? can.page.Appends(can, target, [p]): target.innerHTML = p }, @@ -636,21 +636,15 @@ Volcanos("onaction", {help: "控件交互", list: ["", "项目", "", "上传", " return target }, - "项目": function(event, can, msg) { can.onlayout.project(can) }, - "上传": function(event, can, msg) { can.onappend.upload(can) }, - "保存": function(event, can, msg) { can.onkeymap._remote(event, can, "保存") }, - "运行": function(event, can, msg) { can.onkeymap._remote(event, can, "运行") }, - "日志": function(event, can, msg) { can.onkeymap._remote(event, can, "日志") }, - "记录": function(event, can, msg) { var sub = can.request(event) + "项目": function(event, can) { can.onlayout.project(can) }, + "上传": function(event, can) { can.onappend.upload(can) }, + "搜索": function(event, can) { can.onkeymap._remote(event, can, "搜索", ["action", "find", "vim.history", "", "id", "type", "name", "text"]) }, + "记录": function(event, can) { var sub = can.request(event) can.core.Item(can.Option(), sub.Option) sub.Option("display", can.display.innerText) can.onkeymap._remote(event, can, "记录", ["action", "记录"]) }, - "复盘": function(event, can, msg) { can.onkeymap._remote(event, can, "复盘") }, - - "提交": function(event, can, msg) { can.onkeymap._remote(event, can, "提交") }, - "历史": function(event, can, msg) { can.onkeymap._remote(event, can, "历史") }, - "收藏": function(event, can, msg) { + "收藏": function(event, can) { chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) { chrome.tabs.sendMessage(tabs[0].id, { action: "copy" }, function (response) { var win = chrome.extension.getBackgroundPage(); @@ -661,11 +655,11 @@ Volcanos("onaction", {help: "控件交互", list: ["", "项目", "", "上传", " }) }) }, - "列表": function(event, can, msg) { can.onkeymap._remote(event, can, "收藏", ["action", "favor", "url.favor"]) }, + "列表": function(event, can) { can.onkeymap._remote(event, can, "收藏", ["action", "favor", "url.favor"]) }, }) -Volcanos("ondetail", {help: "菜单交互", list: ["删除行", "合并行", "插入行", "添加行", "追加行"], +Volcanos("ondetail", {help: "菜单交互", list: ["保存", "运行", "提交", "记录", "删除行", "合并行", "插入行", "添加行", "追加行"], "删除行": function(event, can, msg) { - can.onaction.delteLine(can, can.current) + can.onaction.deleteLine(can, can.current) }, "合并行": function(event, can, msg) { can.onaction.mergeLine(can, can.current) @@ -684,7 +678,6 @@ Volcanos("onlayout", {help: "页面布局", list: [], _init: function(can) { can.onlayout.project(can) can.onlayout.project(can) }, - project: function(can) { var hide = can.ui.project.style.display == "none" var width = 80, height = 480; can.page.Modify(can, can.ui.project, {style: {width: width, "max-height": height, display: hide? "": "none"}}) diff --git a/plugin/local/team/plan.js b/plugin/local/team/plan.js index a51cc40b..8a75c027 100644 --- a/plugin/local/team/plan.js +++ b/plugin/local/team/plan.js @@ -1,6 +1,5 @@ -Volcanos("onimport", {help: "导入数据", list: [], - init: function(can, msg, cb, output, action, option) {output.innerHTML = ""; - var table = can.page.AppendTable(can, output, msg, msg.append); +Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { can._target.innerHTML = "" + var table = can.onappend.table(can, target, "table", msg) table.onclick = function(event) {switch (event.target.tagName) { case "SPAN": case "TD": @@ -125,5 +124,3 @@ Volcanos("ondetail", {help: "组件详情", list: ["开始", "完成", "取消"] }) Volcanos("onexport", {help: "导出数据", list: []}) - -