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.core.Next(meta.panes, function(item, next) {
can.onappend._init(can, item, meta.libs.concat(item.list), function(pane) { can.onappend._init(can, item, meta.libs.concat(item.list), function(pane) {
pane.Conf(item), pane.run = function(event, cmds, cb) { 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[item.name] = pane, next();
}, can._target); }, can._target);
}, function() { can.onlayout._init(can, meta, list, function() { }, 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]) fun && (sub = mod, mod = fun, key = value, fun = mod[value])
}); if (!sub || !mod || !fun) { console.info("not found", chain); return } }); 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 } engine: function(event, can, msg, pane, cmds, cb) { if (!can.onengine) { return false }
switch (pane._name) { 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] var last = sub._history[sub._history.length-1]
!can.core.Eq(last, cmds) && cmds[0] != "action" && sub._history.push(cmds) !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 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++) sub.Status("ncmd", sub._history.length+"/"+count++)
if (silent) { typeof cb == "function" && cb(msg); return } 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()) }, 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.onimport && table.onimport._init && table.onimport._init(table, msg, msg.result||[], function() {}, output)
table.run = function(event, cmds, cb, silent) { cmds = cmds || [] 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"}}) can.page.Modify(can, can._carte, {style: {display: "none"}})
}}]).last }}]).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) { can.page.Appends(can, can._carte, can.core.List(list, function(item) {
return {view: ["item"], list: [typeof item == "string"? {text: [item], click: function(event) { return {view: ["item"], list: [typeof item == "string"? {text: [item], click: function(event) {
typeof cb == "function" && cb(event, item, meta) 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]]||""}]} }], value: src[item[0]]||""}]}
})) }))
var pos = {position: "absolute", display: "block", left: event.x, top: event.y}
if (document.body.clientWidth - event.x < 60) { var ls = can._follow.split(".")
var pos = {display: "block", right: event.x, top: event.y}
} console.log(ls.length, can)
pos.left += "px"; pos.top += "px"; 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}) can.page.Modify(can, can._carte, {style: pos})
console.log("carte ", can._carte.offsetLeft, "output", can._carte.parentNode.offsetLeft)
event.stopPropagation() event.stopPropagation()
event.preventDefault() event.preventDefault()

View File

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

View File

@ -92,7 +92,7 @@ Volcanos("core", {help: "核心模块",
if (left == "") { if (left == "") {
left = list[i], space = false, begin = i+1 left = list[i], space = false, begin = i+1
} else if (left == list[i]) { } 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 left = "", space = true, begin = i+1
} }
} else if (sups[list[i]]) { } 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 return res
}), }),

View File

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

View File

@ -42,11 +42,12 @@ Volcanos("onexport", {help: "导出数据", list: [], _init: function(can, msg,
can.Conf("action", value.name) can.Conf("action", value.name)
// console.log(event, sub, msg) // 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.run(msg._event, ["search", "Footer.onaction.ncmd"]);
can.onappend.toast(can, "执行成功", value.name, 2000); can.onappend.toast(can, "执行成功", value.name, 2000);
typeof cb == "function" && cb(msg) typeof cb == "function" && cb(msg)
}, silent); }, silent)
} }
sub._target.oncontextmenu = function(event) { sub._target.oncontextmenu = function(event) {
can.onappend.carte(can, can.ondetail, can.ondetail.list, function(event, item, meta) { 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")) key: function(can, msg) { msg.Option("active", can.Conf("action"))
can.core.Item(can.Conf("active"), msg.Option) 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) { tabview: function(can, path, name) {
can.Option("path", path) can.Option("path", path)
can.Option("name", name) can.Option("name", name)
can.Option("key", "")
if (can.tabview[path+name]) { return can.onsyntax._init(can, can.tabview[path+name]) } if (can.tabview[path+name]) { return can.onsyntax._init(can, can.tabview[path+name]) }
can.run({}, [path, name], function(msg) { 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.page.Append(can, can._action, [{view: ["file", "div", name], onclick: function(event) {
can.onsyntax._init(can, msg) can.onsyntax._init(can, msg)
}, oncontextmenu: function(event) {
can.onappend.carte(can, null, ["保存", "运行"])
}}]), can.onsyntax._init(can, can.tabview[path+name] = msg) }}]), can.onsyntax._init(can, can.tabview[path+name] = msg)
}, true) }, true)
}, },
@ -132,7 +136,7 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"],
switch (item.type) { switch (item.type) {
case "space": return text 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) default: return wrap(key, text)
} }
}).join("")) }).join(""))
@ -190,7 +194,7 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"],
"require": "keyword", "require": "keyword",
}, },
prefix: {"#": "comment"}, prefix: {"#": "comment"},
suffix: {"{": "comment"}, suffix: {"\x7B": "comment"},
line: function(can, line) { return line }, line: function(can, line) { return line },
}, },
vim: { vim: {
@ -203,6 +207,10 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"],
}, },
shy: { shy: {
profile: true, profile: true,
keyword: {
"chapter": "keyword",
"label": "keyword",
},
split: {}, split: {},
line: function(can, line) { return line }, 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) 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
}, },
@ -610,17 +618,17 @@ Volcanos("onaction", {help: "控件交互", list: ["项目", "上传", "保存",
"项目": function(event, can, msg) { can.onlayout.project(can) }, "项目": function(event, can, msg) { can.onlayout.project(can) },
"上传": function(event, can, msg) { can.onappend.upload(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) { 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, msg) { var sub = can.request(event)
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, 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: ["删除行", "合并行", "插入行", "添加行", "追加行"], Volcanos("ondetail", {help: "菜单交互", list: ["删除行", "合并行", "插入行", "添加行", "追加行"],
"删除行": function(event, can, msg) { "删除行": function(event, can, msg) {