forked from x/volcanos
opt some
This commit is contained in:
parent
032086531e
commit
1019455633
9
frame.js
9
frame.js
@ -91,7 +91,8 @@ Volcanos(chat.ONENGINE, {help: "搜索引擎", _init: function(can, meta, list,
|
||||
|
||||
plugin: shy("添加插件", function(can, name, command) {
|
||||
if (can.base.isObject(name)) {
|
||||
return can.core.Item(name, function(key, value) { name.hasOwnProperty(key) && can.onengine.plugin(can, key, value) })
|
||||
return can.core.Item(name, function(key, value) {
|
||||
name.hasOwnProperty(key) && can.base.isFunc(value) && can.onengine.plugin(can, key, value) })
|
||||
}
|
||||
name = can.base.trimPrefix(name, "can.")
|
||||
var type = html.TEXT; command.list = can.core.List(command.list, function(item) {
|
||||
@ -540,6 +541,12 @@ Volcanos(chat.ONLAYOUT, {help: "页面布局", _init: function(can, target) { ta
|
||||
Volcanos(chat.ONMOTION, {help: "动态特效", _init: function(can, target) {
|
||||
window.addEventListener(html.ORIENTATIONCHANGE, function(event) { can.onengine.signal(can, html.ORIENTATIONCHANGE) })
|
||||
can.onmotion.float.auto(can, target)
|
||||
target.onclick = function(event) {
|
||||
if (can.page.tagis(["input", "select", "textarea"], event.target)) { return }
|
||||
can.page.Select(can, target, can.page.Keys("div.float", "fieldset.float"), function(item) {
|
||||
can.page.Remove(can, item)
|
||||
})
|
||||
}
|
||||
},
|
||||
float: {_hash: {},
|
||||
del: function(can, key) {
|
||||
|
@ -93,7 +93,8 @@ body>div.toast div.progress div.current { background-color:red; height:10px; }
|
||||
body>div.toast div.action { display:block; }
|
||||
|
||||
body>div.carte { padding:0; }
|
||||
body>div.carte div.item { padding:3px 12px; }
|
||||
body>div.carte div.item { background-color:#0e3369b3; padding:3px 12px; }
|
||||
body>div.carte div.item:hover { background-color:cornflowerblue; }
|
||||
body>div.input div.item { float:left; }
|
||||
body>div.input div.content { overflow:auto; }
|
||||
body>div.input td { padding:5px; }
|
||||
@ -196,6 +197,7 @@ body.white.simple div.output.card input[type=button]:hover { box-shadow:2px 2px
|
||||
body.white.simple div.output.card input[type=button] { box-shadow:2px 2px 6px 1px gray; color:white; }
|
||||
body.white.simple div.output.card input[type=button] { background-color:#0152d9; font-size:0.8rem; padding:5px 10px; border:none; border-radius:5px; }
|
||||
body.white.simple>div.carte { background-color:white; border:solid 1px #e7e7e7; }
|
||||
body.white.simple>div.carte div.item { background-color:white; }
|
||||
body.white.simple>div.carte div.item { font-size:1rem; color:black; }
|
||||
body.white.simple>div.carte div.item:hover { background-color:#0152d9; }
|
||||
body.white.simple input[type=button] { background-color:#0152d9; border:none; border-radius:5px; box-shadow:2px 2px 6px 1px gray; }
|
||||
|
@ -53,7 +53,6 @@ body.white.simple fieldset.inner>div.output div.content td.text span.string { co
|
||||
body.white.simple fieldset.inner>div.output div.content td.text span.function { color:#795e26; }
|
||||
body.white.simple fieldset.inner>div.output div.content td.text span.keyword { color:blue; }
|
||||
|
||||
body.mobile fieldset.inner.float legend { height:38px; }
|
||||
body.mobile fieldset.inner>form.option input[name=file] { width:90px; }
|
||||
body.mobile fieldset.plugin.inner div.action { display:none; }
|
||||
body.mobile.landscape fieldset.plugin.inner div.action { display:contents; }
|
||||
|
@ -4,6 +4,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
||||
can.tabview = can.tabview||{}, can.history = can.history||[], can.toolkit = {}, can.extentions = {}
|
||||
can.profile_size = {}, can.display_size = {}
|
||||
|
||||
can.onengine.plugin(can, can.onplugin)
|
||||
can.onmotion.clear(can), can.onlayout.profile(can)
|
||||
can.page.styleWidth(can, can.ui.project, 180)
|
||||
can.onimport._project(can, can.ui.project)
|
||||
@ -17,9 +18,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
||||
case "cmd": can.onimport._tabs(can) // no break
|
||||
case "full": // no break
|
||||
default: if (can.ConfHeight() < 320) { can.ConfHeight(320) }
|
||||
can.onimport.project(can, paths), can.onengine.plugin(can, can.onplugin)
|
||||
can.user.isMobile && !can.user.isLandscape() && can.onmotion.hidden(can, can.ui.project)
|
||||
|
||||
can.onimport.project(can, paths), can.user.isMobile && !can.user.isLandscape() && can.onmotion.hidden(can, can.ui.project)
|
||||
can.onimport._toolkit(can, can.ui.toolkit), can.onimport._session(can, msg, function() {
|
||||
files.length > 1 && can.onmotion.delay(can, function() { can.core.Next(files.slice(1), function(file, next) {
|
||||
can.onimport.tabview(can, can.Option(nfs.PATH), file, can.Option(nfs.LINE), next)
|
||||
@ -73,7 +72,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
||||
},
|
||||
_keydown: function(can) { can.onkeymap._build(can)
|
||||
can.isCmdMode() && can.onengine.listen(can, chat.ONKEYDOWN, function(event) {
|
||||
can._key_list = can.onkeymap._parse(event, can, "plugin", can._key_list, can.ui.content)
|
||||
can._key_list = can.onkeymap._parse(event, can, mdb.PLUGIN, can._key_list, can.ui.content)
|
||||
})
|
||||
},
|
||||
_session: function(can, msg) {
|
||||
@ -132,14 +131,21 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
||||
project: function(can, path) {
|
||||
can.onimport.zone(can, [
|
||||
{name: "source", _init: function(view) { var total = 0
|
||||
var ui = can.onimport.zone(can, can.core.List(path, function(path) { return {name: path, _init: function(view) {
|
||||
function show(view) {
|
||||
can.run(can.request({}, {dir_root: path, dir_deep: true}), [ice.PWD], function(msg) { var list = msg.Table()
|
||||
can.core.List(list, function(item) { if (can.Option(nfs.FILE).indexOf(item.path) == 0) { item.expand = true } })
|
||||
can.onimport.tree(can, list, nfs.PATH, ice.PS, function(event, item) {
|
||||
can.onimport.tabview(can, path, item.path) // 显示文件
|
||||
}, view), can.Status("文件数", total += msg.Length())
|
||||
}, true)
|
||||
}} }), view); can.onmotion.delay(can, function() { view.previousSibling.innerHTML = "" })
|
||||
}
|
||||
if (path.length == 1) {
|
||||
show(view)
|
||||
} else {
|
||||
var ui = can.onimport.zone(can, can.core.List(path, function(path) { return {name: path, _init: function(view) {
|
||||
show(view)
|
||||
}} }), view); can.onmotion.delay(can, function() { view.previousSibling.innerHTML = "" })
|
||||
}
|
||||
}},
|
||||
{name: "module", _init: function(view) {
|
||||
can.runAction(can.request({}, {fields: ctx.INDEX}), ctx.COMMAND, [mdb.SEARCH, ctx.COMMAND], function(msg) {
|
||||
@ -149,12 +155,17 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
||||
})
|
||||
}},
|
||||
{name: "plugin", _init: function(view) {
|
||||
can.onimport.tree(can, can.core.Item(can.onengine.plugin.meta, function(key) { return {index: key} }), ctx.INDEX, ice.PT, function(event, item) {
|
||||
can.onimport.tabview(can, can.Option(nfs.PATH), item.index, ctx.INDEX) // 显示插件
|
||||
can.onimport.tree(can, can.core.Item(can.onengine.plugin.meta, function(key) { return {index: can.base.trimPrefix(key, "can.")} }), ctx.INDEX, ice.PT, function(event, item) {
|
||||
can.onimport.tabview(can, can.Option(nfs.PATH), can.core.Keys("can", item.index), ctx.INDEX) // 显示插件
|
||||
}, view)
|
||||
}},
|
||||
], can.ui.project)
|
||||
},
|
||||
history: function(can, push) {
|
||||
can.base.Eq(push, can.history[can.history.length-1]) || can.history.push(push)
|
||||
can.Status("跳转数", can.history.length)
|
||||
return push
|
||||
},
|
||||
tabview: function(can, path, file, line, cb, skip, skip2) { var key = can.onexport.keys(can, file, path)
|
||||
if (can.isCmdMode()) { location.hash = file+ice.FS+(line||1) }
|
||||
if (!skip && can.tabview[key]) { can.isCmdMode() && can.user.title(path+file)
|
||||
@ -163,8 +174,10 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
||||
return can._msg.Option(can.Option()), can.onsyntax._init(can, can._msg, cb, skip2)
|
||||
}
|
||||
|
||||
can.onimport.history(can, {path: path, file: file, line: line})
|
||||
function show(msg) { var skip2 = skip; can.tabview[key] = msg
|
||||
msg._tab = can.onimport.tabs(can, [{name: file.split(msg.Option(nfs.LINE) == ctx.INDEX? ice.PT: ice.PS).pop(), text: file}], function(event, meta) {
|
||||
msg._tab = event.target
|
||||
can.onimport.tabview(can, path, file, msg.Option(nfs.LINE), cb, false, skip2), cb = null, skip2 = false
|
||||
}, function(item) { delete(can.tabview[key]) }, can.ui._tabs, function(item) {})
|
||||
}
|
||||
@ -237,7 +250,9 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
||||
},
|
||||
}, [""])
|
||||
Volcanos(chat.ONPLUGIN, {help: "注册插件",
|
||||
"code.inner.keymap": shy("按键", {}, ["mode", "key", ice.LIST, ice.BACK], function(msg, cmds) {
|
||||
"local": shy("按键", {}, ["mode", "key", ice.LIST, ice.BACK], function(msg, cmds) {
|
||||
}),
|
||||
"code.inner.keymap": shy("按键", {}, ["mode", "key", ice.LIST, ice.BACK], function(can, msg, cmds) {
|
||||
can.core.Item(can.onkeymap._mode, function(mode, value) {
|
||||
(!cmds[0] || cmds[0] == mode) && can.core.Item(value, function(key, func) {
|
||||
if (cmds[0] == mode && cmds[1] == key) {
|
||||
@ -286,6 +301,9 @@ Volcanos(chat.ONSYNTAX, {help: "语法高亮", list: ["keyword", "prefix", "line
|
||||
can.page.style(can, sub._output, html.MAX_HEIGHT, sub.ConfHeight(can.ui.content.offsetHeight-2*html.ACTION_HEIGHT))
|
||||
can.page.style(can, sub._output, html.MAX_WIDTH, sub.ConfWidth(can.ui.content.offsetWidth))
|
||||
can.onmotion.delay(can, function() { sub.Focus() }), can.base.isFunc(cb) && cb()
|
||||
sub.onaction.close = function() {
|
||||
can.onaction.back({}, can), msg._tab._close()
|
||||
}
|
||||
}) }
|
||||
|
||||
function init(p) {
|
||||
@ -484,11 +502,9 @@ Volcanos(chat.ONACTION, {help: "控件交互", list: ["搜索", "打开", "添
|
||||
}
|
||||
}
|
||||
|
||||
var push = {path: can.Option(nfs.PATH), file: can.Option(nfs.FILE), line: can.Option(nfs.LINE), text: can.current.text()}
|
||||
can.base.Eq({path: push.path, file: push.file, line: push.line}, can.history[can.history.length-1]) || can.history.push(push)
|
||||
can.Status("跳转数", can.history.length)
|
||||
can.onaction._selectLine(event, can)
|
||||
var push = can.onimport.history(can, {path: can.Option(nfs.PATH), file: can.Option(nfs.FILE), line: can.Option(nfs.LINE), text: can.current.text()})
|
||||
if (can.isCmdMode()) { location.hash = push.file+","+(push.line||1) }
|
||||
can.onaction._selectLine(event, can)
|
||||
})
|
||||
},
|
||||
_selectLine: function(event, can) { },
|
||||
|
@ -61,7 +61,9 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
||||
can.onmotion.toggle(can, item, name.innerText.indexOf(event.target.value) > -1)
|
||||
})
|
||||
})
|
||||
}, _init: function(item) {
|
||||
}, onclick: function(event) {
|
||||
can.onmotion.focus(can, event.target)
|
||||
},_init: function(item) {
|
||||
can.onmotion.delay(can, function() {
|
||||
can.page.styleWidth(can, item, item.parentNode.parentNode.parentNode.offsetWidth-32)
|
||||
})
|
||||
@ -96,9 +98,9 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
||||
can.base.isFunc(cb) && cb(event, meta)
|
||||
}, _init: function(item) { const OVER = "over"
|
||||
function close(item) { var next = item.nextSibling||item.previousSibling
|
||||
item._close(item) || can.page.Remove(can, item), next && next.click()
|
||||
can.base.isFunc(cbs) && cbs(item._meta) || can.page.Remove(can, item), next && next.click()
|
||||
}
|
||||
can.page.Modify(can, item, {draggable: true, _close: cbs,
|
||||
can.page.Modify(can, item, {draggable: true, _close: function() { close(item) }, _meta: meta,
|
||||
onmouseenter: function(event) {
|
||||
can.user.carte(event, can, kit.Dict(
|
||||
"close tab", function(event) { close(item) },
|
||||
|
Loading…
x
Reference in New Issue
Block a user