1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-26 01:04:06 +08:00
This commit is contained in:
shaoying 2022-10-04 08:28:59 +08:00
parent 163d4e1504
commit 1f918afb98
7 changed files with 26 additions and 40 deletions

View File

@ -539,12 +539,8 @@ Volcanos(chat.ONLAYOUT, {help: "页面布局", _init: function(can, target) { ta
var rect = event.target == document.body? {left: window.innerWidth/2, top: 200, right: window.innerWidth/2, bottom: 200}: event.target.getBoundingClientRect()
var layout = right? {left: rect.right, top: rect.top}: {left: rect.left, top: rect.bottom}
can.getActionSize(function(left, top, width, height) { left = left||0, top = top||0
if (layout.top+target.offsetHeight > window.innerHeight) {
layout.top = "", layout.bottom = right? html.ACTION_HEIGHT: window.innerHeight-rect.top
}
if (layout.left+target.offsetWidth > left+width) {
layout.left = "", layout.right = 0
}
if (layout.top+target.offsetHeight > window.innerHeight) { layout.top = "", layout.bottom = window.innerHeight-top-height, layout.left += rect.width }
if (layout.left+target.offsetWidth > window.innerWidth) { layout.left = "", layout.right = 0 }
})
return can.onmotion.move(can, target, layout), layout
},
@ -669,7 +665,7 @@ Volcanos(chat.ONMOTION, {help: "动态特效", _init: function(can, target) {
delay: function(can, cb, interval) { can.core.Timer(interval||30, cb) },
delayLong: function(can, cb, interval) { can.core.Timer(interval||300, cb) },
focus: function(can, target) { if (!target) { return }
target.setSelectionRange && target.setSelectionRange(0, -1), target.focus()
target.focus(), target.setSelectionRange && target.setSelectionRange(0, target.value.length)
},
share: function(event, can, input, args) { var _args = args
return can.user.input(event, can, input, function(args) {

View File

@ -296,9 +296,6 @@ Volcanos("user", {help: "用户操作", info: {}, agent: {
})}]}, {view: html.ACTION},
]}])
var layout = can.onlayout.figure(event, can, ui._target)
can.page.ClassList.add(can, ui._target, chat.FLOAT)
var action = can.onappend._action(can, button||[html.SUBMIT, html.CANCEL], ui.action, {
focus: function(event) { can.page.Select(can, ui.first, html.INPUT_ARGS)[0].focus() },
cancel: function(event) { can.page.Remove(can, ui._target) },
@ -321,6 +318,7 @@ Volcanos("user", {help: "用户操作", info: {}, agent: {
})
if (button === true) { return action.submit(event, can, "submit"), action }
can.page.ClassList.add(can, ui._target, chat.FLOAT); var layout = can.onlayout.figure(event, can, ui._target)
can.page.Select(can, ui._target, html.INPUT_ARGS, function(item, index) {
index == 0 && can.onmotion.delay(can, function() { can.onmotion.focus(can, item) })
})

View File

@ -32,14 +32,14 @@ fieldset.inner.float>div.status { display:none; }
fieldset.inner>div.output td.content>div.tabs { display:none; }
fieldset.inner>div.output td.content>div.path { display:none; }
fieldset.inner div.output fieldset.toolkit { position:relative; bottom:0px; right:0px; }
fieldset.inner div.output fieldset.toolkit { position:absolute; bottom:0px; right:0px; }
fieldset.inner>div.output fieldset.toolkit>div.output>fieldset { display:none; }
fieldset.inner>div.output fieldset.toolkit>div.output>fieldset.select { background-color:#0e3369b3; color:white; display:block; z-index:10; }
fieldset.inner>div.output fieldset.toolkit>div.output fieldset { display:none; }
fieldset.inner>div.output fieldset.toolkit>div.output fieldset.select { background-color:#0e3369b3; color:white; display:block; z-index:10; }
fieldset.inner div.output fieldset.toolkit>div.output { position:unset; }
fieldset>div.output>fieldset.plug { position:absolute; bottom:0px; right:0px; }
fieldset>div.output>fieldset.plug { position:inherit; bottom:0px; right:0px; }
fieldset>div.output>fieldset.plug { display:none; }
fieldset>div.output>fieldset.plug.select { background-color:#0e3369b3; color:white; display:block; z-index:10; }
fieldset>div.status legend { float:right; height:30px; }

View File

@ -101,8 +101,9 @@ Volcanos(chat.ONSYNTAX, {help: "语法高亮", _init: function(can, msg, cb) {
src: can.misc.MergePodCmd(can, {pod: can.Option(nfs.FILE)}), height: can.ui.content.offsetHeight-4, width: can.ui.content.offsetWidth}], can.ui._content))
}
can.onimport.layout(can)
return can.onimport.plug(can, {index: msg.Option(ctx.INDEX), args: can.Option(nfs.PATH) == ctx.COMMAND && can.Option(nfs.LINE) != ctx.INDEX? [can.Option(nfs.LINE)]: []}, can.ui._content, function(sub) {
sub.onimport.size(sub, sub.ConfHeight(can.ui.content.offsetHeight-2*html.ACTION_HEIGHT), sub.ConfWidth(can.ui.content.offsetWidth), true)
sub.onimport.size(sub, sub.ConfHeight(can.ui.content.offsetHeight-3*html.ACTION_HEIGHT+sub.onexport.statusHeight(sub)), sub.ConfWidth(can.ui.content.offsetWidth), true)
msg._plugin = sub, can.base.isFunc(cb) && cb(msg._content = can.ui._content), can.onmotion.delay(can, function() { sub.Focus() })
sub.onaction.close = function() { can.onaction.back(can), msg._tab._close() }
sub.onimport._open = function(sub, msg, _arg) { var url = can.base.ParseURL(_arg), ls = url.origin.split("/chat/pod/")
@ -280,7 +281,7 @@ Volcanos(chat.ONACTION, {help: "控件交互", _trans: {link: "链接", width: "
},
"打开": function(event, can) {
can.user.input(can.request(event, {paths: can.sup.paths.join(ice.FS)}), can, [nfs.FILE], function(list) {
if (list[0].indexOf("line:") == 0) { return can.onaction.selectLine(can, parseInt(can.core.Split(list[0], ice.DF, ice.DF)[1])) }
if (list[0].indexOf("line:") == 0) { return can.onaction.selectLine(can, parseInt(can.core.Split(list[0], ice.DF, ice.DF)[1])), can.current.scroll(can.current.scroll()-4) }
can.core.List(can.sup.paths, function(path) { if (list[0].indexOf(path) == 0) { can.onimport.tabview(can, path, list[0].slice(path.length)) } })
})
},
@ -380,7 +381,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
var hash = location.hash; can.tabview[can.onexport.keys(can)] = msg
can.onimport.tabview(can, can.Option(nfs.PATH), can.Option(nfs.FILE), can.Option(nfs.LINE), function() {
if (can.isCmdMode() && hash) { var args = can.core.Split(decodeURIComponent(hash).slice(1))
can.onmotion.delay(can, function() { can.onimport.tabview(can, args[args.length-3]||can.Option(nfs.PATH), args[args.length-2]||can.Option(nfs.FILE), args[args.length-1]) })
can.onmotion.delay(can, function() { can.onimport.tabview(can, args[args.length-3]||can.Option(nfs.PATH), args[args.length-2]||can.Option(nfs.FILE), args[args.length-1]) }, 30)
}
}), can.base.isFunc(cb) && cb(msg)
},
@ -415,7 +416,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
can.page.styleHeight(can, can.ui.content, content_height-(can.ui.content != can.ui._content? 4: 0))
can.page.styleHeight(can, can.ui.project, height)
var sub = can.ui.content._plugin; sub && sub.onimport.size(content_height-2*html.ACTION_HEIGHT, content_width, true)
var sub = can.ui.content._plugin; sub && sub.onimport.size(sub, content_height-3*html.ACTION_HEIGHT+sub.onexport.statusHeight(sub), content_width, true)
can.page.Select(can, can.ui.profile, html.IFRAME, function(iframe) { can.page.Modify(can, iframe, {height: profile_height-html.ACTION_HEIGHT-4, width: profile_width}) })
},
toolkit: function(can, meta, cb) { meta.msg = true
@ -430,13 +431,14 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
can.onmotion.select(can, can.ui.toolkit.output, html.FIELDSET, sub._target), sub.Focus()
can.onmotion.select(can, can._status, html.LEGEND, event.target)
if (meta.msg == true) { meta.msg = false, sub.Update() }
}, sub._legend.onmouseenter = null, can.base.isFunc(cb) && cb(sub)
}, sub._legend.onmouseenter = null
sub.onaction.close = sub.select = function() { return sub._legend.click(), sub }
can.base.isFunc(cb) && cb(sub)
})
},
exts: function(can, url, cb) {
can.require([url], function() {}, function(can, name, sub) { sub._init(can, can.base.ParseURL(sub._path), function(sub) {
can.extentions[url.split("?")[0]] = sub, can.base.isFunc(cb) && cb(sub)
can.require([url], function() {}, function(can, name, sub) { name == chat.ONIMPORT && sub._init(can, can.base.ParseURL(sub._path), function(sub) {
can.extentions[url.split("?")[0]] = sub, can.base.isFunc(cb)? cb(sub): sub.select()
}) })
},
sess: function(can, sess, cb) { sess = sess||can.user.localStorage(can, "web.code.inner.sess")

View File

@ -26,7 +26,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, args, cb) {
{type: html.BUTTON, name: cli.MAKE},
{type: html.BUTTON, name: "history"},
{type: html.BUTTON, name: "last", _trans: "返回"},
], function(msg, cmds, cb) { if (can.misc.runAction(can, msg, cmds, cb, kit.Dict(
], function(can, msg, cmds, cb) { if (can.misc.runAction(can, msg, cmds, cb, kit.Dict(
"history", function(cmds) {
can.core.List(can.history, function(item) {
msg.Push(nfs.FILE, item.file)
@ -51,8 +51,5 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, args, cb) {
},
"last", function(cmds) { history.pop(), show(history.pop()) },
))) { return } can.run(msg, cmds, function(msg) { show(msg) }, true) }))
can.onimport.toolkit(can, {index: SEARCH}, function(sub) {
can.ui.search = sub, can.base.isFunc(cb) && cb(sub)
can.ui.search._show = show
})
can.onimport.toolkit(can, {index: SEARCH}, function(sub) { can.ui.search = sub, can.ui.search._show = show, can.base.isFunc(cb) && cb(sub) })
}})

View File

@ -83,23 +83,16 @@ Volcanos(chat.ONKEYMAP, {help: "键盘交互",
can.page.styleClass(can, can.ui.current, ["current", can.mode]), value
can.page.styleClass(can, can.ui.complete, [code.COMPLETE, can.mode]), value
},
_plugin: function(event, can) { can.onkeymap._model(can, "plugin")
can.ui.current.blur()
},
_normal: function(event, can) { can.onkeymap._model(can, "normal")
can.ui.current.focus()
},
_insert: function(event, can) { can.onkeymap._model(can, "insert")
can.ui.current.focus(), can.ui.content.scrollLeft -= 10000
event && can.onkeymap.prevent(event)
},
_plugin: function(event, can) { can.onkeymap._model(can, "plugin"), can.ui.current.blur() },
_normal: function(event, can) { can.onkeymap._model(can, "normal"), can.ui.current.focus() },
_insert: function(event, can) { can.onkeymap._model(can, "insert"), can.ui.current.focus(), event && can.onkeymap.prevent(event) },
_mode: {
plugin: {
t: shy("添加命令", function(event, can) { can.onaction["添加"](event, can) }),
p: shy("添加插件", function(event, can) { can.onaction["插件"](event, can) }),
e: shy("添加扩展", function(event, can) { can.onaction["扩展"](event, can) }),
g: shy("搜索", function(event, can) { can.onaction["搜索"](event, can) }),
g: shy("搜索", function(event, can) { can.onimport.exts(can, "inner/search.js") }),
i: shy("插入模式", function(event, can) { can.onkeymap._insert(event, can) }),
n: shy("命令模式", function(event, can) { can.onkeymap._normal(event, can) }),
@ -270,8 +263,8 @@ Volcanos(chat.ONACTION, {help: "控件交互",
})
},
autogen: function(event, can, button) { can.onaction._runs(event, can, button, function(msg) {
can.onimport.tabview(can, can.Option(nfs.PATH), msg.Option(cli.MAIN), "", function() {
can.onimport.tabview(can, can.Option(nfs.PATH), msg.Option(nfs.FILE), "", function() {
can.onimport.tabview(can, msg.Option(nfs.PATH), msg.Option(cli.MAIN), "", function() {
can.onimport.tabview(can, msg.Option(nfs.PATH), msg.Option(nfs.FILE), "", function() {
can.ui.source.refresh()
})
}, true)
@ -306,10 +299,10 @@ Volcanos(chat.ONACTION, {help: "控件交互",
can.onimport.toolkit(can, {index: list[0]}, function(sub) { can.toolkit[list[0]] = sub.select() })
})
},
"扩展": function(event, can) {
"扩展": function(event, can) { can.request(event, {action: "extension"})
can.user.input(event, can, ["url"], function(list) {
var sub = can.extentions[list[0]]; if (sub) { sub.select(); return }
can.onimport.exts(can, list[0], function(sub) { can.extentions[list[0]] = sub.select() })
can.onimport.exts(can, list[0])
})
},

View File

@ -47,7 +47,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
"折叠": function() { can.page.Select(can, zone._target, html.DIV_LIST, function(item) { can.onmotion.toggle(can, item, false) }) },
"展开": function() { can.page.Select(can, zone._target, html.DIV_LIST, function(item) { can.onmotion.toggle(can, item, true) }) },
"刷新": function() { can.onmotion.clear(can, zone._target), zone._init(zone._target) },
}, ["折叠", "展开", "刷新"])
}, ["刷新", "折叠", "展开"])
}},
{view: html.ACTION, _init: function(target) { zone._action = target
can.onappend._action(can, [{input: html.TEXT, placeholder: "search", onkeyup: function(event) {