From 77b8d8c649d104dedf41c0a24a1c79dee4efb0a1 Mon Sep 17 00:00:00 2001 From: shylinux Date: Fri, 12 May 2023 00:02:51 +0800 Subject: [PATCH] opt some --- frame.js | 13 ++++++++++--- index.css | 9 +++++---- panel/header.js | 3 ++- plugin/input/key.js | 3 +-- plugin/local/code/inner.css | 2 +- plugin/local/code/vimer.js | 6 ++---- proto.js | 13 ++++++------- 7 files changed, 27 insertions(+), 22 deletions(-) diff --git a/frame.js b/frame.js index b403b3f2..ce14977b 100644 --- a/frame.js +++ b/frame.js @@ -30,6 +30,7 @@ Volcanos(chat.ONENGINE, {_init: function(can, meta, list, cb, target) { can.requ } can.onengine.signal(panel, chat.ONREMOTE, can.request({}, {_follow: panel._follow, _msg: msg, _cmds: cmds})) var names = msg.Option(chat._NAMES)||panel._names||((can.Conf("iceberg")||Volcanos.meta.iceberg)+panel._name) if (!can.misc.CookieSessid(can) && can.user.info.sessid) { msg.Option(ice.MSG_SESSID, can.user.info.sessid) } + msg.Option(ice.MSG_LANGUAGE, can.user.info.language||"") if (msg.Option("log.trace") == ice.TRUE) { debugger } can.misc.Run(event, can, {names: names, daemon: msg[ice.MSG_DAEMON]}, cmds, function(msg) { toast && toast.close(), toast = true if (msg.Option("log.trace") == ice.TRUE) { debugger } @@ -382,7 +383,8 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) { }, select: function(can, select, item) { var carte return can.page.Append(can, select.parentNode, [{type: html.INPUT, data: {className: html.SELECT, type: html.BUTTON, name: item.name, value: item.value||item.values[0], title: item.name}, onclick: function(event) { var target = event.target - if (carte) { return carte.close(), carte = null } carte = can.user.carte(event, can, {}, item.values, function(event, button) { carte = null; if (target.value == button) { return } + if (carte) { return carte.close(), carte = null } carte = can.user.carte(event, can, {}, item.values, function(event, button) { + carte.close(), carte = null; if (target.value == button) { return } target.value = button, select.value = button, select.onchange && select.onchange({target: select}) }); can.onappend.style(can, [html.SELECT, item.name], carte._target), can.page.style(can, carte._target, html.MIN_WIDTH, event.target.offsetWidth) }, _init: function(target) { can.page.style(can, target, html.WIDTH, select.offsetWidth+10), can.onappend.style(can, html.HIDE, select) }}, {icon: mdb.SELECT}]) @@ -676,7 +678,10 @@ Volcanos(chat.ONMOTION, {_init: function(can, target) { }, move: function(can, target, layout) { layout && can.page.style(can, target, layout), can.onmotion.resize(can, target, function() {}) }, resize: function(can, target, cb, top) { var begin, action - target.onclick = function() { can.onkeymap.prevent(event) } + target.onclick = function(event) { + if (can.page.tagis(event.target, html.INPUT)) { return } + can.onkeymap.prevent(event) + } target.onmousedown = function(event) { for (var _target = event.target; _target; _target = _target.parentNode) { if (_target == target) { break } if (can.page.tagis(_target, html.INPUT, html.TEXTAREA, html.TR)) { return } @@ -687,7 +692,9 @@ Volcanos(chat.ONMOTION, {_init: function(can, target) { window._mousemove = target.onmousemove }, target.onmouseup = function(event) { begin = null, delete(window._mousemove) } target.onmousemove = function(event) { - if (begin) { can.onkeymap.prevent(event) + if (begin) { + can.onkeymap.prevent(event) + if (!window._mousemove) { return begin = null } switch (action) { case "left": can.page.style(can, target, html.LEFT, can.base.Min(begin.left + event.x - begin.x, 0, window.innerWidth-target.offsetWidth)) diff --git a/index.css b/index.css index b9e4eac7..6dbe025e 100644 --- a/index.css +++ b/index.css @@ -15,15 +15,16 @@ table.content thead { position:sticky; top:2px; } table.content th { padding:2px 5px; } table.content td { padding:2px 5px; } table.content.action th:last-child { position:sticky; right:2px; } -table.content.action td:last-child { max-width:200px; position:sticky; right:2px; } +table.content.action td:last-child { position:sticky; right:2px; } +// table.content.action td:last-child { max-width:200px; position:sticky; right:2px; } h1 { text-align:center; margin:20px 0; } h2 { margin:20px 0; } h3 { margin:20px 0; } ul { padding-left:40px; margin:20px 0; } hr, td.hr { border-bottom:gray dashed 1px; margin:5px; } img { margin-bottom:-8px; } /* fieldset */ fieldset>legend { margin-right:10px; } -fieldset>form.option>div.item { margin-right:10px; } +fieldset>form.option>div.item { margin-right:10px; height:32px; } fieldset>form.option>div.item.select>input { min-width:80px; } -fieldset>div.action>div.item { margin-right:10px; } +fieldset>div.action>div.item { margin-right:10px; height:32px; } fieldset.input>legend { display:none; } fieldset.input.key div.action { display:none; } fieldset.input.key div.status { display:block; position:sticky; bottom:0; } @@ -211,7 +212,7 @@ div.output.card>div.item.stop { color:gray; } div.output.card>div.item { padding:10px; border:#e7e7e7 solid 1px; margin:10px; width:320px; float:left; } div.output.card>div.item>div.title { font-size:1.2rem; font-weight:bold; padding:10px; border-bottom:solid 1px #e7e7e7; } div.output.card>div.item>div.content { padding:10px; height:70px; } -div.output.card>div.item>div.action { text-align:right; width:100%; } +div.output.card>div.item>div.action { text-align:right; width:100%; display:flex; } div.output.card>div.item>div.action>input { margin-right:5px; } /* display */ fieldset.panel>legend { display:none; } diff --git a/panel/header.js b/panel/header.js index 7769f578..4dc15cb8 100644 --- a/panel/header.js +++ b/panel/header.js @@ -15,7 +15,8 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { }) }, _avatar: function(can, msg) { can.user.isExtension || can.user.isLocalFile || can.page.Modify(can, "div.state.avatar>img", {src: can.onexport.avatar(can)}) }, _background: function(can, msg) { if (can.user.isExtension || can.user.isLocalFile) { return } - window.parent == window? can.onlayout.background(can, can.onexport.background(can)): can.page.style(can, document.body, html.BACKGROUND_COLOR, "transparent") + can.onlayout.background(can, can.onexport.background(can)) + // window.parent == window? can.onlayout.background(can, can.onexport.background(can)): can.page.style(can, document.body, html.BACKGROUND_COLOR, "transparent") }, _search: function(can, msg, target) { can._search = can.onappend.input(can, {type: html.TEXT, name: mdb.SEARCH, onkeydown: function(event) { can.onkeymap.input(event, can) diff --git a/plugin/input/key.js b/plugin/input/key.js index 0f23ef97..9d3f9d8e 100644 --- a/plugin/input/key.js +++ b/plugin/input/key.js @@ -4,8 +4,7 @@ Volcanos(chat.ONFIGURE, {key: { can._show(can, msg, cb, target, name) }) }, _show: function(can, msg, cb, target, name) { if (msg.Length() == 0 || msg.Length() == 1 && msg.Append(name) == target.value && target.value != "") { return can.onmotion.hidden(can) } - if (can.base.isIn(msg.append[msg.append.length-1], ctx.ACTION, "cb")) { msg.append = msg.append.slice(0, -1) } - var list = {} + if (can.base.isIn(msg.append[msg.append.length-1], ctx.ACTION, "cb")) { msg.append = msg.append.slice(0, -1) } var list = {} can.onmotion.clear(can), can.onappend.table(can, msg, function(value, key, index, item) { value = item[key] if (msg.append.length == 1 && index < 100 && list[value]) { return } list[value] = true return {text: [value, html.TD, value == ""? html.HR: ""], style: msg.append && msg.append.length == 1? kit.Dict(html.MIN_WIDTH, target.offsetWidth-16): {}, onclick: function(event) { diff --git a/plugin/local/code/inner.css b/plugin/local/code/inner.css index f2e8088b..9704998e 100644 --- a/plugin/local/code/inner.css +++ b/plugin/local/code/inner.css @@ -19,7 +19,7 @@ fieldset.inner>div.output>div.project div.zone>div.item span.icon { font-size:20 fieldset.inner>div.output>div.project div.zone:hover>div.item span.icon { display:block; } fieldset.inner>div.output>div.project>div.zone>div.item span.icon { font-size:22px; line-height:32px; } fieldset.inner>div.output>div.project>div.zone div.action>div.item { padding-right:0; width:100%; } -fieldset.inner>div.output>div.project>div.zone div.action>div.item>input { width:100%; } +fieldset.inner>div.output>div.project>div.zone div.action>div.item>input { width:calc(100% - 5px); } fieldset.inner>div.output>div.project>div.zone div.action>div.item>span.delete { top:3px; right:5px; } fieldset.inner>div.output>div.project>div.zone fieldset.plug { position:static; } fieldset.inner>div.output>div.layout>div.tabs { font-family:monospace; font-size:14px; display:none; } diff --git a/plugin/local/code/vimer.js b/plugin/local/code/vimer.js index 0951e043..a3feef85 100644 --- a/plugin/local/code/vimer.js +++ b/plugin/local/code/vimer.js @@ -69,7 +69,7 @@ Volcanos(chat.ONFIGURE, { } } }) }, }) -Volcanos(chat.ONACTION, {list: ["编译", "源码", "终端", "文档", "导图", "计划", "收藏", "桌面", "首页"], +Volcanos(chat.ONACTION, {list: ["编译", "源码", "终端", "文档", "计划", "桌面", "首页"], _run: function(event, can, button, args, cb) { can.runAction(event, button, args, cb||function(msg) { can.onimport.tabview(can, msg.Option(nfs.PATH), msg.Option(nfs.FILE)), can.user.toastSuccess(can, button) can.ui.zone.source.refresh() @@ -109,11 +109,9 @@ Volcanos(chat.ONACTION, {list: ["编译", "源码", "终端", "文档", "导图" }) }, "编译": function(event, can) { can.onaction.compile(event, can, code.COMPILE) }, "源码": function(event, can) { can.onimport.tabview(can, "", web.CODE_GIT_STATUS, ctx.INDEX) }, - "终端": function(event, can) { can.onimport.tabview(can, "", web.CODE_XTERM, ctx.INDEX) }, + "终端": function(event, can) { can.onimport.tabview(can, "", [web.CODE_XTERM, "sh"].join(mdb.FS), ctx.INDEX) }, "文档": function(event, can) { can.onimport.tabview(can, "", web.WIKI_WORD, ctx.INDEX) }, - "导图": function(event, can) { can.onimport.tabview(can, "", web.WIKI_DRAW, ctx.INDEX) }, "计划": function(event, can) { can.onimport.tabview(can, "", web.TEAM_PLAN, ctx.INDEX) }, - "收藏": function(event, can) { can.onimport.tabview(can, "", web.CHAT_FAVOR, ctx.INDEX) }, "桌面": function(event, can) { can.onimport.tabview(can, "", "web.chat.macos.desktop", ctx.INDEX) }, "首页": function(event, can) { can.onimport.tabview(can, "", location.origin+nfs.PS+(can.misc.Search(can, log.DEBUG) == ice.TRUE? "?debug=true": ""), web.SPACE) }, insertLine: function(can, value, before) { var line = can.onaction.appendLine(can, value); before && can.ui.content.insertBefore(line, can.onaction._getLine(can, before)); return can.onaction.rerankLine(can), can.onexport.line(can, line) }, diff --git a/proto.js b/proto.js index 6e9c7614..e1849062 100644 --- a/proto.js +++ b/proto.js @@ -39,7 +39,7 @@ var ice = { PROCESS_FIELD: "_field", MSG_PREFIX: "_prefix", - MSG_USERNAME: "user.name", MSG_USERNICK: "user.nick", + MSG_USERNAME: "user.name", MSG_USERNICK: "user.nick", MSG_LANGUAGE: "user.lang", MSG_TITLE: "sess.title", MSG_THEME: "sess.theme", MSG_RIVER: "sess.river", MSG_STORM: "sess.storm", MSG_WIDTH: "sess.width", MSG_HEIGHT: "sess.height", MSG_MODE: "sess.mode", MSG_DAEMON: "sess.daemon", LOG_DISABLE: "log.disable", @@ -376,7 +376,7 @@ var Volcanos = shy({iceberg: "/chat/", volcano: "/frame.js", cache: {}, pack: {} }) try { if (typeof(window) == lang.OBJECT) { var meta = Volcanos.meta meta.target = document.body, meta._height = window.innerHeight, meta._width = window.innerWidth - if (window._version && window.outerWidth-window.innerWidth < 100) { meta.version = window._version } + if (window._version && (window.parent.outerWidth-window.parent.innerWidth < 100)) { meta.version = window._version } meta._load = function(url, cb) { var v = meta.version? meta.version+"&_tt="+(new Date()).getTime(): "" switch (url.split(ice.QS)[0].split(nfs.PT).pop().toLowerCase()) { case nfs.CSS: var item = document.createElement(mdb.LINK); item.href = url+v, item.rel = "stylesheet", item.onload = cb, document.head.appendChild(item); break @@ -384,13 +384,12 @@ try { if (typeof(window) == lang.OBJECT) { var meta = Volcanos.meta } } meta._init = function(can) { - window.onkeydown = function(event) { if (event.key == lang.ESCAPE) { can.onkeymap.prevent(event) } } window.onmousemove = function(event) { window._mousemove && (window._mousemove(event)) } - window.onmouseup = function(event) { delete(window._scroll) } + window.onmouseup = function(event) { delete(window._mousemove) } window.ondblclick = function(event) { can.onkeymap.prevent(event) } - window.onerror = function(message, source, lineno, colno, error) { - meta.version? alert([message].concat(can.misc._stacks(0, error)).join(lex.NL)): can.misc.Error(message, lex.NL+[source, lineno, colno].join(ice.DF), error) - }, window.onbeforeunload = function() { can.Action._socket && can.Action._socket.close() } + window.onkeydown = function(event) { if (event.key == lang.ESCAPE && !can.page.tagis(event.target, html.INPUT)) { can.onkeymap.prevent(event) } } + window.onerror = function(message, source, lineno, colno, error) { meta.version? alert([message].concat(can.misc._stacks(0, error)).join(lex.NL)): can.misc.Error(message, lex.NL+[source, lineno, colno].join(ice.DF), error) } + window.onbeforeunload = function() { can.Action._socket && can.Action._socket.close() } var last = can.page.width() < can.page.height(); window.onresize = function(event) { can.misc.Event(event, can, function(msg) { if (can.user.isMobile && last === can.page.width() < can.page.height()) { return } last = can.page.width() < can.page.height() can.onmotion.delayOnce(can, function() { can.onengine.signal(can, chat.ONRESIZE, can.request(event, kit.Dict(html.HEIGHT, window.innerHeight, html.WIDTH, window.innerWidth))) }, 100, can._delay_resize = can._delay_resize||[])