mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 16:58:06 +08:00
opt some
This commit is contained in:
parent
968159c995
commit
c113a9a64d
109
frame.js
109
frame.js
@ -64,27 +64,34 @@ Volcanos("onengine", { _init: function(can, meta, list, cb, target) {
|
|||||||
typeof cb == "function" && cb(msg)
|
typeof cb == "function" && cb(msg)
|
||||||
return true
|
return true
|
||||||
case "Action":
|
case "Action":
|
||||||
var river = can.onengine.river[cmds[0]||can.user.Search(can, "river")];
|
var river = can.onengine.river[cmds[0]]
|
||||||
var storm = river && river.storm[cmds[1]||can.user.Search(can, "storm")];
|
var storm = river && river.storm[cmds[1]]
|
||||||
var action = storm && storm.action[cmds[2]];
|
var action = storm && storm.action && storm.action[cmds[2]]
|
||||||
if (!storm) { break } if (cmds.length == 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) {
|
can.core.List(storm.action, function(value) {
|
||||||
msg.Push("name", value.name||"");
|
msg.Push("name", value.name||"")
|
||||||
msg.Push("help", value.help||"");
|
msg.Push("help", value.help||"")
|
||||||
msg.Push("pod", value.pod||"");
|
msg.Push("pod", value.pod||"")
|
||||||
msg.Push("group", value.group||"");
|
msg.Push("group", value.group||"")
|
||||||
msg.Push("index", value.index||"");
|
msg.Push("index", value.index||"")
|
||||||
msg.Push("args", value.args||"[]");
|
msg.Push("args", value.args||"[]")
|
||||||
msg.Push("inputs", JSON.stringify(value.inputs||[]));
|
msg.Push("inputs", JSON.stringify(value.inputs||[]))
|
||||||
msg.Push("feature", JSON.stringify(value.feature||{}));
|
msg.Push("feature", JSON.stringify(value.feature||{}))
|
||||||
})
|
})
|
||||||
typeof cb == "function" && cb(msg);
|
typeof cb == "function" && cb(msg);
|
||||||
} else if (action.engine) {
|
} else if (action && action.engine) {
|
||||||
action.engine(event, can, msg, pane, cmds, cb);
|
action.engine(event, can, msg, pane, cmds, cb)
|
||||||
} else {
|
} else if (action) {
|
||||||
msg.Option("group", action.group)
|
msg.Option("group", action.group)
|
||||||
msg.Option("index", action.index)
|
msg.Option("index", action.index)
|
||||||
return false
|
return false
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
}
|
}
|
||||||
return true
|
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 action = can.page.Select(can, field, "div.action")[0];
|
||||||
var output = can.page.Select(can, field, "div.output")[0];
|
var output = can.page.Select(can, field, "div.output")[0];
|
||||||
var status = can.page.Select(can, field, "div.status")[0];
|
var status = can.page.Select(can, field, "div.status")[0];
|
||||||
|
|
||||||
var feature = can.base.Obj(meta.feature)
|
var feature = can.base.Obj(meta.feature)
|
||||||
can.page.ClassList.add(can, field, feature.style||"")
|
can.page.ClassList.add(can, field, feature.style||"")
|
||||||
|
can.onappend._legend(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)
|
|
||||||
})
|
|
||||||
|
|
||||||
// 添加插件
|
// 添加插件
|
||||||
var sub = Volcanos(meta.name, { _help: meta.name, _target: field,
|
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 || ""
|
return item.name && item.value || ""
|
||||||
}); for (var i = cmds.length-1; i >= 0; i--) {
|
}); for (var i = cmds.length-1; i >= 0; i--) {
|
||||||
if (!cmds[i]) { cmds.pop() } else { break }
|
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)
|
return run(event, cmds, cb, silent)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 工具栏
|
// 交互控件
|
||||||
action.innerHTML = "", table.onaction && can.core.List(table.onaction.list, function(item) {
|
can.onappend._action(table, action)
|
||||||
item === ""? can.page.Append(can, action, [{view: "item space"}]):
|
can.onappend._detail(table, msg, msg["_detail"] || sub.Conf("detail"), output)
|
||||||
typeof item == "string"? can.onappend.input(can, action, "input", {type: "button", value: item, onclick: function(event) {
|
can.onappend._status(table, status)
|
||||||
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"]}]}])
|
|
||||||
})
|
|
||||||
sub.Status("ncmd", sub._history.length+"/"+count)
|
sub.Status("ncmd", sub._history.length+"/"+count)
|
||||||
})
|
})
|
||||||
sub._outputs.push(table)
|
sub._outputs.push(table)
|
||||||
@ -260,6 +241,40 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) {
|
|||||||
|
|
||||||
}); cb(sub);
|
}); 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) {
|
item: function(can, target, type, item, cb, cbs) {
|
||||||
var ui = can.page.Append(can, target, [{view: [type, "div", item.nick||item.name],
|
var ui = can.page.Append(can, target, [{view: [type, "div", item.nick||item.name],
|
||||||
oncontextmenu: function(event) { cbs(event, ui.item) }, click: function(event) {
|
oncontextmenu: function(event) { cbs(event, ui.item) }, click: function(event) {
|
||||||
|
@ -140,7 +140,7 @@ fieldset div.code {
|
|||||||
padding:10px;
|
padding:10px;
|
||||||
overflow:auto;
|
overflow:auto;
|
||||||
border:solid 3px green;
|
border:solid 3px green;
|
||||||
max-height:640px;
|
/* max-height:640px; */
|
||||||
}
|
}
|
||||||
|
|
||||||
fieldset table {
|
fieldset table {
|
||||||
|
@ -325,6 +325,7 @@ var page = Volcanos("page", {help: "网页模块",
|
|||||||
if (text.startsWith("http")) {return "<a href='"+text+"' target='_blank'>"+text+"</a>"}
|
if (text.startsWith("http")) {return "<a href='"+text+"' target='_blank'>"+text+"</a>"}
|
||||||
text = text.replace(/\033\[31m/g, "<span style='color:#f00'>")
|
text = text.replace(/\033\[31m/g, "<span style='color:#f00'>")
|
||||||
text = text.replace(/\033\[32m/g, "<span style='color:#0f0'>")
|
text = text.replace(/\033\[32m/g, "<span style='color:#0f0'>")
|
||||||
|
text = text.replace(/\033\[33m/g, "<span style='color:#ff0'>")
|
||||||
text = text.replace(/\033\[36m/g, "<span style='color:#0ff'>")
|
text = text.replace(/\033\[36m/g, "<span style='color:#0ff'>")
|
||||||
text = text.replace(/\033\[1m/g, "<span style='font-weight:bold'>")
|
text = text.replace(/\033\[1m/g, "<span style='font-weight:bold'>")
|
||||||
text = text.replace(/\033\[0m/g, "</span>")
|
text = text.replace(/\033\[0m/g, "</span>")
|
||||||
|
@ -43,6 +43,7 @@ Volcanos("onexport", {help: "导出数据", list: [], _init: function(can, msg,
|
|||||||
// console.log(event, sub, 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) {
|
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.run(msg._event, ["search", "Footer.onaction.ncmd"]);
|
||||||
can.onappend.toast(can, "执行成功", value.name, 2000);
|
can.onappend.toast(can, "执行成功", value.name, 2000);
|
||||||
|
@ -50,6 +50,7 @@ fieldset.editor>div.output div.preview>div.item:hover {
|
|||||||
}
|
}
|
||||||
fieldset.editor>div.output div.preview>div.item.select {
|
fieldset.editor>div.output div.preview>div.item.select {
|
||||||
background-color:red;
|
background-color:red;
|
||||||
|
height:20px; border:solid 1px yellow;
|
||||||
}
|
}
|
||||||
fieldset.editor>div.output div.content {
|
fieldset.editor>div.output div.content {
|
||||||
font-size:16px; font-family:monospace;
|
font-size:16px; font-family:monospace;
|
||||||
|
@ -421,11 +421,11 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert"
|
|||||||
_normal: function(can) { can.onkeymap._mode(can, "normal") },
|
_normal: function(can) { can.onkeymap._mode(can, "normal") },
|
||||||
_insert: function(can) { can.onkeymap._mode(can, "insert") },
|
_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]
|
var p = can.onsyntax[can.parse]
|
||||||
can.display = p && p.profile && can.ui.profile || can.ui.display
|
can.display = p && p.profile && can.ui.profile || can.ui.display
|
||||||
var msg = can.request(event); msg.Option("content", can.onexport.content(can))
|
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) {
|
if (msg.key && msg.time && msg.key.length != msg.time.length) {
|
||||||
msg.key && (msg.key = msg.key.slice(2))
|
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)
|
modifyLine: function(can, target, value) { var p = can.onsyntax.parse(can, value)
|
||||||
typeof p == "object"? can.page.Appends(can, target, [p]): target.innerHTML = p
|
typeof p == "object"? can.page.Appends(can, target, [p]): target.innerHTML = p
|
||||||
},
|
},
|
||||||
@ -636,21 +636,15 @@ Volcanos("onaction", {help: "控件交互", list: ["", "项目", "", "上传", "
|
|||||||
return target
|
return target
|
||||||
},
|
},
|
||||||
|
|
||||||
"项目": function(event, can, msg) { can.onlayout.project(can) },
|
"项目": function(event, can) { can.onlayout.project(can) },
|
||||||
"上传": function(event, can, msg) { can.onappend.upload(can) },
|
"上传": function(event, can) { can.onappend.upload(can) },
|
||||||
"保存": function(event, can, msg) { can.onkeymap._remote(event, can, "保存") },
|
"搜索": function(event, can) { can.onkeymap._remote(event, can, "搜索", ["action", "find", "vim.history", "", "id", "type", "name", "text"]) },
|
||||||
"运行": function(event, can, msg) { can.onkeymap._remote(event, can, "运行") },
|
"记录": function(event, can) { var sub = can.request(event)
|
||||||
"日志": function(event, can, msg) { can.onkeymap._remote(event, can, "日志") },
|
|
||||||
"记录": function(event, can, msg) { var sub = can.request(event)
|
|
||||||
can.core.Item(can.Option(), sub.Option)
|
can.core.Item(can.Option(), sub.Option)
|
||||||
sub.Option("display", can.display.innerText)
|
sub.Option("display", can.display.innerText)
|
||||||
can.onkeymap._remote(event, can, "记录", ["action", "记录"])
|
can.onkeymap._remote(event, can, "记录", ["action", "记录"])
|
||||||
},
|
},
|
||||||
"复盘": function(event, can, msg) { can.onkeymap._remote(event, can, "复盘") },
|
"收藏": function(event, can) {
|
||||||
|
|
||||||
"提交": function(event, can, msg) { can.onkeymap._remote(event, can, "提交") },
|
|
||||||
"历史": function(event, can, msg) { can.onkeymap._remote(event, can, "历史") },
|
|
||||||
"收藏": function(event, can, msg) {
|
|
||||||
chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
|
chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
|
||||||
chrome.tabs.sendMessage(tabs[0].id, { action: "copy" }, function (response) {
|
chrome.tabs.sendMessage(tabs[0].id, { action: "copy" }, function (response) {
|
||||||
var win = chrome.extension.getBackgroundPage();
|
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) {
|
"删除行": function(event, can, msg) {
|
||||||
can.onaction.delteLine(can, can.current)
|
can.onaction.deleteLine(can, can.current)
|
||||||
},
|
},
|
||||||
"合并行": function(event, can, msg) {
|
"合并行": function(event, can, msg) {
|
||||||
can.onaction.mergeLine(can, can.current)
|
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)
|
||||||
can.onlayout.project(can)
|
can.onlayout.project(can)
|
||||||
},
|
},
|
||||||
|
|
||||||
project: function(can) { var hide = can.ui.project.style.display == "none"
|
project: function(can) { var hide = can.ui.project.style.display == "none"
|
||||||
var width = 80, height = 480;
|
var width = 80, height = 480;
|
||||||
can.page.Modify(can, can.ui.project, {style: {width: width, "max-height": height, display: hide? "": "none"}})
|
can.page.Modify(can, can.ui.project, {style: {width: width, "max-height": height, display: hide? "": "none"}})
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
Volcanos("onimport", {help: "导入数据", list: [],
|
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { can._target.innerHTML = ""
|
||||||
init: function(can, msg, cb, output, action, option) {output.innerHTML = "";
|
var table = can.onappend.table(can, target, "table", msg)
|
||||||
var table = can.page.AppendTable(can, output, msg, msg.append);
|
|
||||||
table.onclick = function(event) {switch (event.target.tagName) {
|
table.onclick = function(event) {switch (event.target.tagName) {
|
||||||
case "SPAN":
|
case "SPAN":
|
||||||
case "TD":
|
case "TD":
|
||||||
@ -125,5 +124,3 @@ Volcanos("ondetail", {help: "组件详情", list: ["开始", "完成", "取消"]
|
|||||||
})
|
})
|
||||||
Volcanos("onexport", {help: "导出数据", list: []})
|
Volcanos("onexport", {help: "导出数据", list: []})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user