diff --git a/frame.js b/frame.js index cca91ee3..580d3c2d 100644 --- a/frame.js +++ b/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) { diff --git a/page/index.css b/page/index.css index 0dee01c6..3baeba07 100644 --- a/page/index.css +++ b/page/index.css @@ -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; } diff --git a/plugin/local/code/inner.css b/plugin/local/code/inner.css index b36c9c99..68ea7747 100644 --- a/plugin/local/code/inner.css +++ b/plugin/local/code/inner.css @@ -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; } diff --git a/plugin/local/code/inner.js b/plugin/local/code/inner.js index b15a53fe..6c82017f 100644 --- a/plugin/local/code/inner.js +++ b/plugin/local/code/inner.js @@ -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) { }, diff --git a/plugin/table.js b/plugin/table.js index df1bad1b..ab7dc079 100644 --- a/plugin/table.js +++ b/plugin/table.js @@ -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) },