mirror of
https://shylinux.com/x/volcanos
synced 2025-04-26 01:04:06 +08:00
opt some
This commit is contained in:
parent
163d4e1504
commit
1f918afb98
10
frame.js
10
frame.js
@ -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) {
|
||||
|
@ -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) })
|
||||
})
|
||||
|
@ -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; }
|
||||
|
@ -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")
|
||||
|
@ -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) })
|
||||
}})
|
||||
|
@ -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])
|
||||
})
|
||||
},
|
||||
|
||||
|
@ -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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user