From ded4c85207a67d52057d16e33a8ce4921bfe7333 Mon Sep 17 00:00:00 2001 From: shylinux Date: Sun, 25 Sep 2022 16:46:56 +0800 Subject: [PATCH] opt some --- frame.js | 5 +++-- panel/action.css | 3 +-- panel/action.js | 19 ++++++++++++++----- plugin/local/code/xterm.js | 2 +- plugin/table.js | 1 + 5 files changed, 20 insertions(+), 10 deletions(-) diff --git a/frame.js b/frame.js index d0752e74..3019121a 100644 --- a/frame.js +++ b/frame.js @@ -655,9 +655,10 @@ Volcanos(chat.ONMOTION, {help: "动态特效", _init: function(can, target) { clear: function(can, target) { return can.page.Modify(can, target||can._output, ""), true }, cache: function(can, next) { var list = can.base.Obj(can.core.List(arguments).slice(2), [can._output]) - can.core.List(list, function(item) { item._cache_key && can.page.Cache(item._cache_key, item, item.scrollTop+1) }) + can.core.List(list, function(item) { item && item._cache_key && can.page.Cache(item._cache_key, item, item.scrollTop+1) }) var key = next(can._cache_data = can._cache_data||{}); if (!key) { return } - return can.core.List(list, function(item) { var pos = can.page.Cache(item._cache_key = key, item) + return can.core.List(list, function(item) { if (!item) { return } + var pos = can.page.Cache(item._cache_key = key, item) if (pos) { item.scrollTo && item.scrollTo(0, pos-1); return item } }).length > 0 }, diff --git a/panel/action.css b/panel/action.css index 72729d84..cb8535e4 100644 --- a/panel/action.css +++ b/panel/action.css @@ -14,9 +14,8 @@ fieldset.Action.grid>div.output fieldset.plugin>div.output { overflow:auto; } fieldset.Action>div.action div.tabview { font-size:1.1rem; padding:5px; height:21px; } fieldset.Action>div.action div.tabview.select { background:#6495ed63; } fieldset.Action>div.action div.tabview:hover { background:#6495ed63; } -fieldset.Action.tabview>div.action { display:block; } fieldset.Action.tabview>div.output>fieldset>legend { display:none; } -fieldset.Action.tabview>div.output fieldset.plugin { display:none; overflow:auto; padding:0; } +fieldset.Action.tabview>div.output fieldset.plugin { display:none; overflow:auto; padding:0; margin:10px 0; } fieldset.Action.tabview>div.output fieldset.plugin.select { display:block; } fieldset.Action.tabview>div.output fieldset.plugin>form.option { display:none; } fieldset.Action.tabview>div.output fieldset.plugin>div.action { display:none; } diff --git a/panel/action.js b/panel/action.js index a681d97e..c76bd9db 100644 --- a/panel/action.js +++ b/panel/action.js @@ -1,4 +1,5 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg) { + can.onimport._menu(can, msg), can.onkeymap._init(can) can.onaction.layout(can, can.misc.SearchOrConf(can, chat.LAYOUT)||Volcanos.meta.args.layout, true) var river = can.Conf(chat.RIVER), storm = can.Conf(chat.STORM) can.onmotion.clear(can), can.core.Next(msg.Table(), function(item, next) { @@ -10,7 +11,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg) { can.onimport._plugin(can, river, storm, sub, meta), skip || next() }) }, function() { - can.onimport._menu(can, msg), can.onkeymap._init(can) + // can.onimport._menu(can, msg), can.onkeymap._init(can) }) }, _plugin: function(can, river, storm, sub, meta) { sub._target._meta = meta @@ -24,11 +25,18 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg) { can.onmotion.select(can, can._output, html.FIELDSET_PLUGIN, sub._target) can.onmotion.select(can, can._action, html.DIV_TABS, event.target) }, onmouseenter: sub._legend.onmouseenter, ondblclick: sub._legend.onclick}]).first + sub._header_tabs = can.page.Append(can, can._header_tabs, [{view: [html.TABS, html.DIV, meta.name], onclick: function(event) { + can.onmotion.select(can, can._output, html.FIELDSET_PLUGIN, sub._target) + can.onmotion.select(can, can._header_tabs, html.DIV_TABS, event.target) + }, onmouseenter: sub._legend.onmouseenter, ondblclick: sub._legend.onclick}]).first }, _menu: function(can, msg) { if (can.user.mod.isPod || can.user.isMobile) { return } can.setHeaderMenu(can.base.Obj(msg.Option(chat.MENUS), can.Conf(chat.MENUS)||can.onaction._menus), function(event, button, list) { can.core.CallFunc([can.onaction, list[0]], [can, button]) }) + can.page.Select(can, can._root.Header._output, "action", function(target) { + can._header_tabs = can.page.Append(can, target, [{view: "tabs", style: {padding: 0, "padding-left": "40px"}}]).first + }) }, _share: function(can, share) { share && can.run({}, [web.SHARE, share], function(msg) { msg.Length() == 1 && can.onengine.signal(can, chat.ONACTION_CMD) @@ -193,6 +201,7 @@ Volcanos(chat.ONACTION, {help: "交互操作", _init: function(can, cb, target) onkeydown: function(can, msg) { var event = msg._event if (event.ctrlKey && event.key >= "1" && event.key <= "9") { can.onmotion.select(can, can._action, html.DIV_TABS, parseInt(event.key)-1), can.onmotion.select(can, can._output, html.FIELDSET_PLUGIN, parseInt(event.key)-1) + can.onmotion.select(can, can._header_tabs, html.DIV_TABS, parseInt(event.key)-1), can.onmotion.select(can, can._output, html.FIELDSET_PLUGIN, parseInt(event.key)-1) } }, onsearch: function(can, msg, word) { @@ -202,7 +211,7 @@ Volcanos(chat.ONACTION, {help: "交互操作", _init: function(can, cb, target) onstorm_select: function(can, msg, river, storm) { if (can.onmotion.cache(can, function() { return can.core.Keys(can.Conf(chat.RIVER, river), can.Conf(chat.STORM, storm)) - }, can._action, can._output)) { + }, can._header_tabs, can._action, can._output)) { var conf = can.core.Value(can._root, can.core.Keys(chat.RIVER, river, chat.STORM, storm))||{} return can.onaction.layout(can, can.misc.SearchOrConf(can, chat.LAYOUT)||Volcanos.meta.args.layout||conf.layout, true) } @@ -239,6 +248,7 @@ Volcanos(chat.ONACTION, {help: "交互操作", _init: function(can, cb, target) can.page.ClassList.del(can, can._target, can.Conf(chat.LAYOUT)); if (button == ice.AUTO) { button = "" } can.page.ClassList.add(can, can._target, can.Conf(chat.LAYOUT, button)), can.onlayout._init(can) can.onmotion.toggle(can, can._root.River._target, true), can.onmotion.toggle(can, can._root.Footer._target, true), can.onlayout._init(can) + can.onmotion.hidden(can, can._header_tabs) var cb = can.onlayout[button]; if (can.base.isFunc(cb)? cb(can, silent): (can.getActionSize(function(height, width) { can.ConfHeight(can.base.Min(200, height-3*html.ACTION_HEIGHT-4*html.PLUGIN_MARGIN-200)), can.ConfWidth(width-4*html.PLUGIN_MARGIN) @@ -278,13 +288,12 @@ Volcanos(chat.ONLAYOUT, {help: "导出数据", }) }, tabview: function(can) { + can.onmotion.toggle(can, can._header_tabs, true) can.onmotion.hidden(can, can._root.River._target), can.onmotion.hidden(can, can._root.Footer._target), can.onlayout._init(can) can.onmotion.delay(can, function() { can.onmotion.select(can, can._action, html.DIV_TABS, 0), can.onmotion.select(can, can._output, html.FIELDSET_PLUGIN, 0) }) - can.getActionSize(function(height, width) { - can.ConfHeight(height-2*html.PLUGIN_MARGIN), can.ConfWidth(width-2*html.PLUGIN_MARGIN) - }) + can.getActionSize(function(height, width) { can.ConfHeight(height-2*html.PLUGIN_MARGIN), can.ConfWidth(width) }) }, tabs: function(can) { can.onmotion.select(can, can._action, html.DIV_TABS, 0), can.onmotion.select(can, can._output, html.FIELDSET_PLUGIN, 0) diff --git a/plugin/local/code/xterm.js b/plugin/local/code/xterm.js index b6fb2b8f..585ae022 100644 --- a/plugin/local/code/xterm.js +++ b/plugin/local/code/xterm.js @@ -31,7 +31,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb) { c }) Volcanos(chat.ONLAYOUT, {help: "界面布局", _init: function(can) { - can.page.style(can, can._output, html.HEIGHT, can.ConfHeight()+10, html.WIDTH, can.ConfWidth()+20, html.MAX_WIDTH, "") + can.page.style(can, can._output, html.HEIGHT, can.ConfHeight()+20, html.WIDTH, can.ConfWidth()+20, html.MAX_WIDTH, "") can.onmotion.delay(can, function() { can.page.style(can, can._output, html.HEIGHT, "", html.WIDTH, "") }, 500) can._current && can._current._fit.fit(), can.onexport.term(can) }, diff --git a/plugin/table.js b/plugin/table.js index 161e3704..e6e08aee 100644 --- a/plugin/table.js +++ b/plugin/table.js @@ -29,6 +29,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar }, title: function(can, title) { can._legend.innerHTML = title, can.sup && can.sup._tabs && (can.sup._tabs.innerHTML = title) + can.sup && can.sup._header_tabs && (can.sup._header_tabs.innerHTML = title) }, zone: function(can, list, target) { var color = [""] return can.page.Append(can, target, can.core.List(list, function(zone, index) { can.base.isString(zone) && (zone = {name: zone}); return zone && {view: html.ZONE+" "+zone.name, list: [