1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-25 16:58:06 +08:00
This commit is contained in:
shylinux 2020-06-04 06:59:50 +08:00
parent a8485b8ecd
commit 207c4306a8
6 changed files with 57 additions and 21 deletions

View File

@ -5,7 +5,7 @@ Volcanos("onengine", { _init: function(can, meta, list, cb, target) {
can.core.Next(meta.panes, function(item, next) {
can.onappend._init(can, item, meta.libs.concat(item.list), function(pane) {
pane.Conf(item), pane.run = function(event, cmds, cb) {
(can.onengine[cmds[0]]||can.onengine[meta.main.engine])(event, can, pane.request(event), pane, cmds, cb);
return (can.onengine[cmds[0]]||can.onengine[meta.main.engine])(event, can, pane.request(event), pane, cmds, cb)
}, can[item.name] = pane, next();
}, can._target);
}, function() { can.onlayout._init(can, meta, list, function() {
@ -42,7 +42,7 @@ Volcanos("onengine", { _init: function(can, meta, list, cb, target) {
fun && (sub = mod, mod = fun, key = value, fun = mod[value])
}); if (!sub || !mod || !fun) { console.info("not found", chain); return }
typeof fun == "function" && fun(sub, msg, cmds.slice(2), cb, sub._target)
return typeof fun == "function" && fun(sub, msg, cmds.slice(2), cb, sub._target)
},
engine: function(event, can, msg, pane, cmds, cb) { if (!can.onengine) { return false }
switch (pane._name) {
@ -192,7 +192,7 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) {
var last = sub._history[sub._history.length-1]
!can.core.Eq(last, cmds) && cmds[0] != "action" && sub._history.push(cmds)
run(event, cmds, cb, silent)
return run(event, cmds, cb, silent)
}
// 添加事件
@ -210,7 +210,7 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) {
})
var count = 0
function run(event, cmds, cb, silent) { sub.run(event, cmds, function(msg) {
function run(event, cmds, cb, silent) { return sub.run(event, cmds, function(msg) {
sub.Status("ncmd", sub._history.length+"/"+count++)
if (silent) { typeof cb == "function" && cb(msg); return }
@ -225,7 +225,7 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) {
}, Volcanos.meta.libs.concat(["/frame.js", display]), function(table) { table.Conf(sub.Conf())
table.onimport && table.onimport._init && table.onimport._init(table, msg, msg.result||[], function() {}, output)
table.run = function(event, cmds, cb, silent) { cmds = cmds || []
run(event, cmds, cb, silent)
return run(event, cmds, cb, silent)
}
// 工具栏
@ -384,6 +384,10 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) {
can.page.Modify(can, can._carte, {style: {display: "none"}})
}}]).last
meta = meta||can.ondetail||{}, cb = cb||function(ev, item, meta) {
(can.ondetail[item]||can.onaction[item])(event, can)
}
can.page.Appends(can, can._carte, can.core.List(list, function(item) {
return {view: ["item"], list: [typeof item == "string"? {text: [item], click: function(event) {
typeof cb == "function" && cb(event, item, meta)
@ -399,12 +403,19 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) {
}], value: src[item[0]]||""}]}
}))
var pos = {position: "absolute", display: "block", left: event.x, top: event.y}
if (document.body.clientWidth - event.x < 60) {
var pos = {display: "block", right: event.x, top: event.y}
}
pos.left += "px"; pos.top += "px";
var ls = can._follow.split(".")
console.log(ls.length, can)
var left = (ls.length > 2) && can.run({}, ["search", can._follow.split(".")[1]+".onexport.left"]) || 0
var top = (ls.length == 3) && can.run({}, ["search", can._follow.split(".")[1]+".onexport.top"]) || 0
var top = (ls.length > 3)? event.y: top
var pos = {position: "absolute", display: "block", left: event.x-left, top: event.y-top}
// if (document.body.clientWidth - event.x < 60) {
// var pos = {display: "block", right: event.x, top: event.y}
// }
can.page.Modify(can, can._carte, {style: pos})
console.log("carte ", can._carte.offsetLeft, "output", can._carte.parentNode.offsetLeft)
event.stopPropagation()
event.preventDefault()

View File

@ -93,6 +93,9 @@ fieldset>div.action>div.item>input {
fieldset>div.action>div.item>input:hover {
background:gray;
}
fieldset>div.action>div.item.space {
width:10px;
}
fieldset>div.status>div.item {
float:left;
padding:4px;
@ -178,6 +181,7 @@ div.carte {
background:black;
border:solid 2px red;
position:absolute;
z-index:10;
}
div.carte div.item {
padding:0 5px;

View File

@ -92,7 +92,7 @@ Volcanos("core", {help: "核心模块",
if (left == "") {
left = list[i], space = false, begin = i+1
} else if (left == list[i]) {
res.push({text: list.slice(begin, i), type: "string", left: left})
res.push({text: list.slice(begin, i), type: "string", left: left, right: left})
left = "", space = true, begin = i+1
}
} else if (sups[list[i]]) {
@ -117,7 +117,11 @@ Volcanos("core", {help: "核心模块",
}
// 末尾单词
if (begin < list.length) { res.push(list.slice(begin)) }
if (left != "") {
res.push({text: list.slice(begin), type: "string", left: left, right: ""})
} else if (begin < list.length) {
res.push(list.slice(begin))
}
return res
}),

View File

@ -36,6 +36,8 @@ Volcanos("page", {help: "网页模块",
"width": true, "height": true,
"max-height": true,
"margin-left": true,
"left": true,
"top": true,
}
if (size[sub] && (typeof value == "number" || !value.endsWith("px"))) {
value += "px"

View File

@ -42,11 +42,12 @@ Volcanos("onexport", {help: "导出数据", list: [], _init: function(can, msg,
can.Conf("action", value.name)
// console.log(event, sub, msg)
// 插件回调
can.run(event, [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.onappend.toast(can, "执行成功", value.name, 2000);
typeof cb == "function" && cb(msg)
}, silent);
}, silent)
}
sub._target.oncontextmenu = function(event) {
can.onappend.carte(can, can.ondetail, can.ondetail.list, function(event, item, meta) {
@ -60,5 +61,11 @@ Volcanos("onexport", {help: "导出数据", list: [], _init: function(can, msg,
key: function(can, msg) { msg.Option("active", can.Conf("action"))
can.core.Item(can.Conf("active"), msg.Option)
},
left: function(can) {
return can._target.offsetLeft
},
top: function(can) {
return can._target.offsetTop
},
})

View File

@ -52,6 +52,7 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb,
tabview: function(can, path, name) {
can.Option("path", path)
can.Option("name", name)
can.Option("key", "")
if (can.tabview[path+name]) { return can.onsyntax._init(can, can.tabview[path+name]) }
can.run({}, [path, name], function(msg) {
@ -60,6 +61,9 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb,
can.page.Append(can, can._action, [{view: ["file", "div", name], onclick: function(event) {
can.onsyntax._init(can, msg)
}, oncontextmenu: function(event) {
can.onappend.carte(can, null, ["保存", "运行"])
}}]), can.onsyntax._init(can, can.tabview[path+name] = msg)
}, true)
},
@ -132,7 +136,7 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"],
switch (item.type) {
case "space": return text
case "string": return wrap("string", item.left+text+item.left)
case "string": return wrap("string", item.left+text+item.right)
default: return wrap(key, text)
}
}).join(""))
@ -190,7 +194,7 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"],
"require": "keyword",
},
prefix: {"#": "comment"},
suffix: {"{": "comment"},
suffix: {"\x7B": "comment"},
line: function(can, line) { return line },
},
vim: {
@ -203,6 +207,10 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"],
},
shy: {
profile: true,
keyword: {
"chapter": "keyword",
"label": "keyword",
},
split: {},
line: function(can, line) { return line },
},
@ -561,7 +569,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
},
@ -610,17 +618,17 @@ Volcanos("onaction", {help: "控件交互", list: ["项目", "上传", "保存",
"项目": 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) { 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, msg) { 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, "历史") },
})
Volcanos("ondetail", {help: "菜单交互", list: ["删除行", "合并行", "插入行", "添加行", "追加行"],
"删除行": function(event, can, msg) {