1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-28 01:52:01 +08:00

opt inner.go

This commit is contained in:
shaoying 2021-01-29 23:14:41 +08:00
parent ed653d7ae3
commit dd822acf8a
7 changed files with 78 additions and 40 deletions

View File

@ -529,9 +529,9 @@ Volcanos("onlayout", {help: "页面布局", list: [], _init: function(can) {
{type: "td", list: [
{type: "tr", list: [{type: "tr", list: [
{view: ["content", "td"], list: [{view: ["content"]}]},
{view: ["profile", "td"], list: [{view: ["profile"]}]},
{view: ["profile", "td"], list: [{view: ["profile"], style: {display: "none"}}]},
]}]},
{view: ["display", "tr"], list: [{view: ["display"]}]}
{view: ["display", "tr"], list: [{view: ["display"], style: {display: "none"}}]}
]}
] }])
},
@ -548,7 +548,7 @@ Volcanos("onlayout", {help: "页面布局", list: [], _init: function(can) {
display: function(can, target) { target = target || can._target
return can.page.Appends(can, target, [{view: ["layout", "table"], list: [
{type: "tr", list: [{view: "content"}]},
{type: "tr", list: [{view: "display"}]},
{type: "tr", list: [{view: "display", style: {display: "none"}}]},
]}])
},
})

View File

@ -210,17 +210,17 @@ fieldset>form.option>div.item.textarea {
clear:both;
}
fieldset>div.action>div.item {
fieldset div.action>div.item {
float:left; margin-right:3px;
height:25px; vertical-align:middle;
}
fieldset>div.action>div.item.space {
fieldset div.action>div.item.space {
width:10px;
}
fieldset>div.action>div.item label {
fieldset div.action>div.item label {
display:none;
}
fieldset>div.action>div.item select {
fieldset div.action>div.item select {
height:25px; font-size:14px;
}
@ -231,6 +231,9 @@ fieldset>div.status>div.item>label {
font-size:10px; color:gray;
}
fieldset div.output {
clear:both;
}
fieldset>div.output td.project {
background-color:#435f8c8c;
}

View File

@ -12,9 +12,11 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg)
})
},
_plugin: function(can, river, storm, sub, item) {
sub.run = function(event, cmds, cb) { var msg = sub.request(event)
var toast = msg.Option("_toast") && can.user.toast(can, msg.Option("_toast"), "", 1000000)
return can.run(event, (can.onengine[cmds[0]]? []: [river, storm, item.id||item.index||item.key+"."+item.name]).concat(cmds), function(msg) {
typeof cb == "function" && cb(msg)
toast && toast.Close(), typeof cb == "function" && cb(msg)
})
}, can._plugins = (can._plugins||[]).concat([sub])

View File

@ -6,13 +6,25 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb,
can.page.Modify(can, can.ui.content, {style: {"min-width": can.Conf("width")-170}})
can.page.Modify(can, can.ui.display, {style: {display: "none"}})
var ui = can.page.Append(can, can.ui.display, [
{view: "action"}, {view: "output"},
]); can.ui.output = ui.output
can.onappend._action(can, ["关闭", "清空", "运行"], ui.action, {
"关闭": function(event) { can.onmotion.hidden(can, can.ui.display) },
"清空": function(event) { can.onmotion.clear(can, can.ui.output) },
"运行": function(event) { can.onaction["运行"](event, can) },
})
msg.Option({path: can.Option("path"), file: can.Option("file"), line: can.Option("line")||1})
can.tabview = can.tabview || {}, can.tabview[can.Option("path")+can.Option("file")] = msg
can.onimport.tabview(can, msg.Option("path"), msg.Option("file"), msg.Option("line")||1)
can.onimport.project(can, msg.Option("path"))
typeof cb == "function" && cb(msg)
can.onimport._search(can, target)
can.onimport._favor(can, target)
},
_search: function(can, target) {
var ui = can.page.Append(can, target, [
{view: "search", style: {display: "none"}, list: [
{view: "action", list: [
@ -21,15 +33,27 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb,
}], value: "main", onfocus: function(event) { event.target.setSelectionRange(0, -1) }},
{button: ["搜索", function(event) { can.onaction.searchLine(event, can, ui.word.value) }]},
{button: ["返回", function(event) { can.onaction["返回"](event, can) }]},
{button: ["关闭", function(event) { can.onaction.searchShow(event, can) }]},
{button: ["关闭", function(event) { can.onaction["搜索"](event, can) }]},
]},
{view: "tags", style: {"max-height": 160}},
]},
]); can.core.Copy(can.ui, ui, "search", "word", "tags")
},
_favor: function(can, target) {
can.onappend.plugin(can, {index: "web.code.favor"}, function(sub) {
sub.run = function(event, cmds, cb) {
can.run(event, ["action", "favor"].concat(cmds), cb, true)
}, can.ui.favor = sub
sub.Select = function(line) {
line.path == can.Option("path") && can.onimport.tabview(can, line.path, line.file, line.line)
}
can.onmotion.hidden(sub, sub._target)
}, target)
},
project: function(can, path) { can.Option({path: path})
var msg = can.request({}, {dir_root: path, dir_deep: true})
can.run(msg._event, ["action", "dir", "./"], function(msg) {
can.run(msg._event, ["./"], function(msg) {
can.onmotion.clear(can, can.ui.project)
can.onappend.tree(can, msg.Table(), "path", "/", function(event, item) {
can.onimport.tabview(can, path, item.path)
@ -42,10 +66,11 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb,
can._msg = can.tabview[path+file]
can.Option({path: path, file: file, line: line||parseInt(can._msg.Option("line"))||1})
can._msg.Option("line", can.Option("line"))
return can.onsyntax._init(can, can._msg), typeof cb == "function" && cb()
}
can.run({}, ["action", "render", can.base.Ext(file||path), file, path], function(msg) {
can.run({}, [path, file], function(msg) {
msg.Option({path: path, file: file, line: line||1})
can.tabview[path+file] = msg
@ -62,7 +87,7 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb,
}, ["/plugin/local/code/inner.css"])
Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"], _init: function(can, msg) {
// caches save
can.file && can.core.List(["content", "profile", "display"], function(item) { can.page.Cache(can.file, can.ui[item], {
can.file && can.core.List(["content", "profile", "output"], function(item) { can.page.Cache(can.file, can.ui[item], {
scrollTop: can.ui.content.scrollTop, current: can.current, max: can.max,
}) })
@ -72,9 +97,9 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"],
// caches load
can.onmotion.select(can, can._action, "div.file", msg._tab)
var cache = false; can.core.List(["content", "profile", "display"], function(item) {
var cache = false; can.core.List(["content", "profile", "output"], function(item) {
var p = can.page.Cache(can.file, can.ui[item]); if (p != undefined && !cache) { cache = true
can.onaction.selectLine(can, p.current.line)
can.onaction.selectLine(can, parseInt(msg.Option("line")))
can.ui.content.scrollTo(0, p.scrollTop)
can.max = p.max
}
@ -116,14 +141,23 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"],
return p.line? p.line(can, line): line
},
})
Volcanos("onaction", {help: "控件交互", list: [],
Volcanos("onaction", {help: "控件交互", list: ["项目", "运行", "搜索"],
"返回": function(event, can) {
var last = can.history.pop(); last = can.history.pop()
last && can.onimport.tabview(can, last.path, last.file, last.line)
can.Status("跳转数", can.history.length)
},
project: function(event, can) { can.onmotion.toggle(can, can.ui.project) },
searchShow: function(event, can) { can.onmotion.toggle(can, can.ui.search) },
"运行": function(event, can) {
var msg = can.request(event, {_toast: "运行中..."})
can.run(event, ["action", "engine", can.parse, can.Option("file"), can.Option("path")], function(msg) {
can.onappend.table(can, msg, function(value, key, index) { return {text: [value, "td"]} }, can.ui.output||can.ui.display)
can.onappend.board(can, msg.Result(), can.ui.output||can.ui.display)
can.page.Modify(can, can.ui.display, {style: {display: "block"}})
}, true)
},
"项目": function(event, can) { can.onmotion.toggle(can, can.ui.project) },
"搜索": function(event, can) { can.onmotion.toggle(can, can.ui.search) },
"收藏": function(event, can) { can.onmotion.toggle(can, can.ui.favor._target) },
appendLine: function(can, value) {
var ui = can.page.Append(can, can.ui.content, [{type: "tr", list: [
@ -201,8 +235,8 @@ Volcanos("onaction", {help: "控件交互", list: [],
can.page.Modify(can, can.ui.search, {style: {display: ""}})
value = can.ui.word.value = value || can.ui.word.value || "main"
var toast = can.user.toast(can, "搜索中...", value, 1000000)
can.run(event, ["action", "search", can.parse, value, can.Option("path")], function(msg) { toast.Close()
var msg = can.request(event, {_toast: "搜索中..."})
can.run(event, ["action", "search", can.parse, value, can.Option("path")], function(msg) {
can.onmotion.clear(can, can.ui.tags)
can.onappend.table(can, msg, function(value, key, index, line) {
@ -247,7 +281,8 @@ Volcanos("onaction", {help: "控件交互", list: [],
{_input: "text", name: "name", value: "@key"},
], function(event, button, meta, list) {
can.run(event, [
"favor", "topic", meta.topic||"some",
"action", "favor",
"action", "insert", "topic", meta.topic||"some",
"type", can.parse, "name", meta.name||"some", "text", value,
"path", can.Option("path"), "file", can.Option("file"), "line", can.Option("line"),
], function(msg) {

View File

@ -28,12 +28,13 @@ Volcanos("onimport", {help: "导入数据", list: [], _merge: function(can, sub)
}},
]); can.core.Copy(can.ui, ui, "current", "command")
var ui = can.page.Append(can, can.ui.display, [
var ui = can.page.Appends(can, can.ui.display, [
{view: "action", list: [
{input: ["cmd", function(event) {
can.onkeymap.parse(event, can, "command")
}], value: "", onfocus: function(event) {
event.target.setSelectionRange(0, -1)
can.onkeymap._command(can)
}},
{button: ["执行", function(event) {
can.onkeymap.command.Enter(event, can, can.ui.cmd.value)
@ -86,8 +87,8 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert"
},
_engine: {
e: function(event, can, line, ls) { can.onimport.tabview(can, can.Option("path"), ls[1]) },
p: function(event, can) { can.onaction.project(event, can) },
q: function(event, can) { can.onaction.display(event, can) },
p: function(event, can) { can.onaction["项目"](event, can) },
q: function(event, can) { can.onmotion.hidden(can, can.ui.display) },
w: function(event, can) { can.onaction.save(event, can) },
},
@ -121,17 +122,19 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert"
Escape: function(event, can) { can.onkeymap._normal(can) },
Enter: function(event, can) { can.onmotion.hidden(can, can.ui.command)
can.page.Modify(can, can.ui.display, {style: {display: "block"}})
var line = can.ui.command.value || can.ui.cmd.value
can.ui.cmd.value = line, can.ui.cmd.focus()
can.ui.cmd.setSelectionRange(0, -1)
can.ui.command.value = ""
can.onmotion.clear(can, can.ui.output)
var line = can.ui.command.value || can.ui.cmd.value ; var ls = can.core.Split(line, " ", ",")
var ls = can.core.Split(line, " ", ",")
var cb = can.onkeymap._engine[ls[0]]; if (typeof cb == "function") {
can.onmotion.hidden(can, can.ui.display)
can.onkeymap._normal(can)
cb(event, can, line, ls)
} else {
can.onkeymap._remote(event, can, line, ["action", "command"].concat(ls))
can.onkeymap._remote(event, can, line, ["action", "command", "run"].concat(ls))
}
},
jk: function(event, can) { can.keylist = can.keylist.slice(0, -1)
@ -162,15 +165,9 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert"
},
j: function(event, can) {
can.onaction.selectLine(can, can.current.next())
// var pos = can.current.offset()+can.current.window()-can.ui.current.offsetTop; if (pos < 5*can.current.height()) {
// can.current.scroll(0, can.current.height())
// }
},
k: function(event, can) {
can.onaction.selectLine(can, can.current.prev())
// var pos = can.ui.current.offsetTop-can.current.offset(); if (pos < can.current.height()*5) {
// can.current.scroll(0, -can.current.height())
// }
},
gg: function(event, can, count) { count = count || 1
@ -291,14 +288,11 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert"
can.onaction.rerankLine(can)
},
})
Volcanos("onaction", {help: "控件交互", list: [],
display: function(event, can) { can.onmotion.toggle(can, can.ui.display) },
save: function(event, can) {
var msg = can.request(event); msg.Option("content", can.onexport.content(can))
Volcanos("onaction", {help: "控件交互", list: ["项目", "搜索", "收藏"],
save: function(event, can) { var msg = can.request(event, {content: can.onexport.content(can)})
can.run(event, ["action", "save", can.parse, can.Option("file"), can.Option("path")], function(msg) {
can.user.toast(can, "保存成功")
}, true)
},
})
Volcanos("onexport", {help: "导出数据", list: ["文件数", "模式", "按键", "解析器", "文件名", "当前行", "跳转数", "标签数"]})
Volcanos("onexport", {help: "导出数据", list: ["文件数", "模式", "按键", "解析器", "文件名", "当前行", "跳转数"]})

View File

@ -47,9 +47,10 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf,
Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg, list, cb, target) {
},
change: function(event, can, name, value, cb) {
can.page.Select(can, can._option, "input.args", function(input) {
return can.page.Select(can, can._option, "input.args", function(input) {
if (input.name == name && value != input.value) { input.value = value
var data = input.dataset || {}; data.action == "auto" && can.run(event, can.Pack(), cb)
return input
}
})
},

View File

@ -20,7 +20,10 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
key == "value"? can.core.List(array, function(item, index) { msg.Option(item.key, item.value) }): msg.Option(line)
return can.run(event, ["action", target.name], function(msg) { can.run() }, true)
}
can.sup.onaction.change(event, can.sup, key, value, function(msg) { can.onimport._init(can, msg) })
if (can.sup.onaction.change(event, can.sup, key, value, function(msg) { can.onimport._init(can, msg) }).length > 0) { return }
can.sup.Select && can.sup.Select(line)
}, ondblclick: function(event) {
can.onmotion.modify(can, event.target, function(event, value, old) {