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: []})
-
-