diff --git a/base/web/route.go b/base/web/route.go index 3563fa0e..6d5d8795 100644 --- a/base/web/route.go +++ b/base/web/route.go @@ -108,6 +108,9 @@ func init() { case "md5": m.Push(key, ice.Info.Hash) case nfs.SIZE: + if m.Option(ice.MSG_USERPOD) == "" { + defer ToastProcess(m)() + } var stats runtime.MemStats runtime.ReadMemStats(&stats) m.Push(key, kit.Format("%s/%s/%s", kit.FmtSize(int64(stats.Sys)), ice.Info.Size, m.Cmdx(nfs.DIR, nfs.SIZE))) diff --git a/core/chat/location/amap.js b/core/chat/location/amap.js index b6df346c..e44ee18e 100644 --- a/core/chat/location/amap.js +++ b/core/chat/location/amap.js @@ -1,6 +1,9 @@ Volcanos(chat.ONIMPORT, { _init: function(can, msg, cb) { window._AMapSecurityConfig = {serviceHost: location.origin+"/_AMapService"}, can.require([can.Conf(nfs.SCRIPT)], function() { - can.require(["location.js"], function() { can.onimport._layout_init(can, msg, function() { cb && cb(msg), can.onimport._content(can) }) }) + can.require(["location.js"], function() { can.onimport._layout_init(can, msg, function() { cb && cb(msg) + can.page.style(can, can.ui.content, html.WIDTH, can.ConfWidth(can._fields.offsetWidth)-can.ui.project.offsetWidth) + can.onimport._content(can) }) + }) }) }, _content: function(can, item) { var map = new AMap.Map(can.ui.content, {viewMode: '3D', lang: can.getHeaderLanguage().split("-")[0], zoom: can.Action("zoom"), pitch: can.Action("pitch"), rotation: can.Action("rotation")}); can.ui.map = map diff --git a/core/chat/macos/desktop.css b/core/chat/macos/desktop.css index 17cc7516..9028a583 100644 --- a/core/chat/macos/desktop.css +++ b/core/chat/macos/desktop.css @@ -1,59 +1,67 @@ +fieldset.macos.desktop { --desktop-menu-height:25px; } fieldset.macos.desktop { background-size:cover; background-position:center; } fieldset.macos.desktop>div.output { background-color:transparent; } fieldset.macos.desktop>div.output>fieldset.macos { background-color:var(--plugin-bg-color); } fieldset.macos.desktop>div.output>fieldset.macos>div.output { background-color:transparent; } -fieldset.macos.desktop>div.output>fieldset.macos.menu { line-height:25px; border-radius:0; height:25px; width:100%; position:sticky; top:0; overflow:hidden; } +fieldset.macos.desktop>div.output>fieldset.macos.menu { line-height:var(--desktop-menu-height); border-radius:0; height:var(--desktop-menu-height); width:100%; position:sticky; top:0; overflow:hidden; } fieldset.macos.desktop>div.output>fieldset.macos.menu div.menu:hover { background-color:var(--hover-bg-color); } -fieldset.macos.desktop>div.output>fieldset.macos.menu div.menu.icon { font-size:24px; line-height:20px; height:25px; padding:0 10px; } +fieldset.macos.desktop>div.output>fieldset.macos.menu div.menu.icon { font-size:24px; line-height:21px; } +fieldset.macos.desktop>div.output>fieldset.macos.menu div.menu img { height:var(--desktop-menu-height); margin-right:var(--input-padding); } +fieldset.macos.desktop>div.output>fieldset.macos.menu div.menu { display:flex; align-items:center; } +fieldset.macos.desktop>div.output>fieldset.macos.menu div.menu.title { font-style:italic; margin-left:10px; } +fieldset.macos.desktop>div.output>fieldset.macos.menu div.item.time { margin-right:10px; } fieldset.macos.desktop>div.output>fieldset.macos.menu>div.output { overflow:hidden; } -fieldset.macos.desktop>div.output>fieldset.macos.dock { border:var(--box-border); border-radius:20px; position:absolute; bottom:10px; transition:margin-left 0.3s; } -fieldset.macos.desktop>div.output>fieldset.macos.searchs { position:absolute; z-index:100; } -fieldset.macos.desktop>div.output>fieldset.macos.searchs>form.option>div.item.keyword input { background-color:transparent; width:320px; } -fieldset.macos.desktop>div.output>fieldset.macos.notifications { border-radius:0; height:calc(100% - 125px); width:250px; overflow:auto; position:absolute; top:25px; left:800px; } -fieldset.macos.desktop>div.output>fieldset.macos.notifications>div.output>div.item { min-height:60px; clear:both; } +fieldset.macos.desktop>div.output>fieldset.macos.dock { border:var(--box-border); border-radius:var(--plugin-radius); position:absolute; bottom:var(--input-margin); transition:margin-left 0.3s; } +fieldset.macos.desktop>div.output>fieldset.macos.searchs { position:absolute; z-index:11; } +fieldset.macos.desktop>div.output>fieldset.macos.searchs>form.option>div.item.keyword input { background-color:transparent; width:var(--river-width); } +fieldset.macos.desktop>div.output>fieldset.macos.notifications { height:calc(100% - 125px); width:320px; overflow:auto; position:absolute; top:var(--desktop-menu-height); left:calc(100% - 320px); z-index:11; } +fieldset.macos.desktop>div.output>fieldset.macos.notifications>div.action>div.item { padding:0; } +fieldset.macos.desktop>div.output>fieldset.macos.notifications>div.action>div.item.refresh>span { font-size:var(--action-height); margin-top:-5px; } +fieldset.macos.desktop>div.output>fieldset.macos.notifications>div.output>div.item { clear:both; display:flex; padding:var(--input-padding)} +fieldset.macos.desktop>div.output>fieldset.macos.notifications>div.output>div.item:not(:last-child) { border-bottom:var(--box-border); } fieldset.macos.desktop>div.output>fieldset.macos.notifications>div.output>div.item.read { color:var(--disable-fg-color); } -fieldset.macos.desktop>div.output>fieldset.macos.notifications div.item div.icon img { height:50px; margin:5px; } -fieldset.macos.desktop>div.output>fieldset.macos.notifications div.item div.title { padding-top:10px; width:132px; overflow:hidden; } -fieldset.macos.desktop>div.output>fieldset.macos.notifications div.item div.time { font-size:var(--code-font-size); text-align:right; padding-top:10px; width:48px; } -fieldset.macos.desktop>div.output>fieldset.macos.notifications div.item div.content { width:180px; } +fieldset.macos.desktop>div.output>fieldset.macos.notifications>div.output>div.item div.icon img { height:var(--header-height); margin:0 var(--input-margin); } +fieldset.macos.desktop>div.output>fieldset.macos.notifications>div.output>div.item>div.layout>div.layout { display:flex; align-items:center; } +fieldset.macos.desktop>div.output>fieldset.macos.notifications>div.output>div.item>div.layout { flex-grow:1; } +fieldset.macos.desktop>div.output>fieldset.macos.notifications>div.output>div.item div.title { font-family:var(--legend-font-family); flex-grow:1; word-break: break-all; } +fieldset.macos.desktop>div.output>fieldset.macos.notifications>div.output>div.item div.time { color:var(--disable-fg-color); font-size:var(--status-font-size); padding:var(--input-padding); } +fieldset.macos.desktop>div.output>fieldset.macos.notifications>div.output>div.item div.content { font-size:var(--status-font-size); } fieldset.macos.desktop>div.output>div.desktop:not(.select) { display:none; } -fieldset.macos.desktop>div.output>div.desktop>div.item { color:silver; position:absolute; text-align:center; } +fieldset.macos.desktop>div.output>div.desktop>div.item { position:absolute; text-align:center; } fieldset.macos.desktop>div.output>div.desktop>div.item img { object-fit:contain; height:var(--desktop-icon-size); width:var(--desktop-icon-size); } fieldset.macos.desktop>div.output>div.desktop>div.item>div.name { font-size:var(--code-font-size); width:var(--desktop-icon-size); overflow:hidden; } +fieldset.macos.desktop>div.output>div.desktop>fieldset { border-radius:var(--plugin-radius); position:absolute; } fieldset.macos.desktop>div.output>div.desktop>fieldset.select { z-index:1; } -fieldset.macos.desktop>div.output>div.desktop>fieldset { border-radius:10px; position:absolute; } -fieldset.macos.desktop>div.output>div.desktop>fieldset>div.item.button { border-radius:20px; height:20px; width:20px; scale:0.7; position:absolute; top:16px; right:10px; } -fieldset.macos.desktop>div.output>div.desktop>fieldset>legend { padding:0 10px; margin:10px; box-shadow:none; } +fieldset.macos.desktop>div.output>div.desktop>fieldset>div.item.button { border-radius:var(--plugin-radius); box-shadow:var(--box-shadow); padding:8px; height:23px; width:23px; scale:0.7; position:absolute; top:14px; right:var(--plugin-padding); cursor:pointer; } +fieldset.macos.desktop>div.output>div.desktop>fieldset>div.item.button:not(:hover)>span { display:none; } +fieldset.macos.desktop>div.output>div.desktop>fieldset>legend { padding:0 var(--input-padding); margin:var(--button-margin); box-shadow:none; } fieldset.macos.desktop>div.output>div.desktop>fieldset>legend:not(:hover) { background-color:transparent; } -fieldset.macos.desktop>div.output>div.desktop>fieldset>form.option>*:not(.textarea) { margin:10px 0px 10px 10px; } -fieldset.macos.desktop>div.output>div.desktop>fieldset>form.option>div.icon { margin:10px 0; } +fieldset.macos.desktop>div.output>div.desktop>fieldset>form.option>*:not(.textarea) { margin:var(--button-margin); } +fieldset.macos.desktop>div.output>div.desktop>fieldset>form.option>div.icon { margin:var(--button-margin) 0; } fieldset.macos.desktop>div.output>div.desktop>fieldset>form.option>div.icon.refresh { margin:8px 0 12px; } fieldset.macos.desktop>div.output>div.desktop>fieldset>form.option>div.icon.goback { margin:8px 0 12px; } fieldset.macos.desktop>div.output>div.desktop>fieldset:not(:hover)>form.option>div.icon { visibility:hidden; } -fieldset.macos.desktop>div.output>div.desktop>fieldset>form.option>div.item.button:not(.select)>span.icon { font-size:32px; line-height:30px; } -fieldset.macos.desktop>div.output>div.desktop>fieldset>form.option>div.item.button.prunes>span.icon { font-size:20px; line-height:32px; } fieldset.macos.desktop>div.output>div.desktop>fieldset>form.option>div.item:last-child { margin-right:100px; } -fieldset.macos.desktop>div.output>div.desktop>fieldset>div.action>* { margin:10px 0px 10px 10px; } fieldset.macos.desktop>div.output>div.desktop>fieldset>div.action>div.item:last-child { margin-right:100px; } +fieldset.macos.desktop>div.output>div.desktop>fieldset>div.action>* { margin:var(--button-margin); } fieldset.macos.desktop>div.output>div.desktop>fieldset>div.action>div.tabs { display:none; } fieldset.macos.desktop>div.output>div.desktop>fieldset>div.output>table.content { width:100%; } -fieldset.macos.desktop>div.output>div.desktop>fieldset>div.output>table.content th { padding:10px; } -fieldset.macos.desktop>div.output>div.desktop>fieldset>div.output>table.content td { padding:10px; } -fieldset.macos.desktop>div.output>div.desktop>fieldset>div.output>table.content td>input { margin:5px; } -fieldset.macos.desktop>div.output>div.desktop>fieldset input:not([type=button]) { width:150px; } +fieldset.macos.desktop>div.output>div.desktop>fieldset>div.output>table.content th { padding:var(--table-padding); } +fieldset.macos.desktop>div.output>div.desktop>fieldset>div.output>table.content td { padding:var(--table-padding); } +fieldset.macos.desktop>div.output>div.desktop>fieldset>div.output>table.content td>input { margin:var(--button-margin); } fieldset.macos.desktop>div.output>div.desktop>fieldset.web.wiki.feel>div.status { display:none; } -// fieldset.macos.desktop>div.output>div.desktop>fieldset.web.code.vimer>div.status { display:none; } fieldset.macos.desktop>div.output>div.desktop>fieldset.web.code.xterm>div.status { display:none; } fieldset.macos.desktop>div.output>div.desktop>fieldset.web.chat.iframe>div.status { display:none; } -fieldset.macos.desktop>div.output>div.desktop>fieldset.web.chat.iframe>form.option>div.item.hash>input { width:360px; } +fieldset.macos.desktop>div.output>div.desktop>fieldset.web.chat.location>div.action>div.item.text input { width:48px; } +fieldset.macos.desktop>div.output>div.desktop>fieldset.web.chat.iframe>form.option>div.item.hash>input { width:var(--river-width); } fieldset.macos.desktop>div.output>div.desktop>fieldset.web.chat.macos.finder>div.status { display:none; } -fieldset.macos.menu>div.output>div.item { padding:0 5px; height:25px; float:right; } -fieldset.macos.menu>div.output>div.item.avatar>img { height:25px; } -fieldset.macos.menu>div.output>div.menu { padding:0 20px; float:left; } -fieldset.macos.menu>div.output>div.tabs { font-style:italic; padding:0 10px; float:left; } -fieldset.macos.menu>div.output>div.tabs.select { background-color:var(--hover-bg-color); color:var(--hover-fg-color); } +fieldset.macos.menu>div.output>div.item { padding:0 var(--input-padding); height:var(--desktop-menu-height); float:right; } +fieldset.macos.menu>div.output>div.item.avatar>img { height:var(--desktop-menu-height); } +fieldset.macos.menu>div.output>div.menu { padding:0 var(--button-padding); float:left; } +fieldset.macos.menu>div.output>div.tabs { font-style:italic; padding:0 var(--button-padding); float:left; } +fieldset.macos.menu>div.output>div.tabs.select { background-color:var(--panel-hover-bg-color); color:var(--panel-hover-fg-color); } fieldset.macos.dock>div.output { height:var(--desktop-icon-size); display:flex; overflow:auto; } -fieldset.macos.dock>div.output>div.space { background-color:#ececec36; margin:10px; height:calc(100% - 20px); width:2px; } +fieldset.macos.dock>div.output>div.space { background-color:#ececec36; margin:var(--button-margin); height:calc(100% - 20px); width:2px; } fieldset.macos.dock>div.output>div.item { text-align:center; align-self:baseline; transition:margin-top 0.3s; } fieldset.macos.dock>div.output>div.item img { object-fit:contain; min-height:var(--desktop-icon-size); width:var(--desktop-icon-size); transition:width 0.3s; } fieldset.macos.dock>div.output>div.item>div.name { display:none; } diff --git a/core/chat/macos/desktop.js b/core/chat/macos/desktop.js index 97907a8a..c8c0909a 100644 --- a/core/chat/macos/desktop.js +++ b/core/chat/macos/desktop.js @@ -71,12 +71,14 @@ Volcanos(chat.ONIMPORT, { if (can.user.isMobile) { item.left = 0, item.top = 25, item.height = can.ConfHeight()-125, item.width = can.ConfWidth() } can.onappend.plugin(can, item, function(sub) { can.ondetail.select(can, sub._target) var index = 0; can.core.Item({ - "#f95f57": function(event) { sub.onaction._close(event, sub) }, - "#fcbc2f": function(event) { var dock = can.page.Append(can, can.ui.dock._output, [{view: html.ITEM, list: [{view: html.ICON, list: [{img: can.misc.PathJoin(item.icon)}]}], onclick: function() { + close: {color: "#f95f57", inner: "x", onclick: function(event) { sub.onaction._close(event, sub) }}, + small: {color: "#fcbc2f", inner: "-", onclick: function(event) { var dock = can.page.Append(can, can.ui.dock._output, [{view: html.ITEM, list: [{view: html.ICON, list: [{img: can.misc.PathJoin(item.icon)}]}], onclick: function() { can.onmotion.toggle(can, sub._target, true), can.page.Remove(can, dock) - }}])._target; sub.onmotion.hidden(sub, sub._target) }, - "#32c840": function(event) { sub.onaction.full(event, sub) }, - }, function(color, cb) { can.page.insertBefore(can, [{view: [[html.ITEM, html.BUTTON]], style: {"background-color": color, right: 10+20*index++}, onclick: cb}], sub._output) }) + }}])._target; sub.onmotion.hidden(sub, sub._target) }}, + full: {color: "#32c840", inner: "+", onclick: function(event) { sub.onaction.full(event, sub) }}, + }, function(name, item) { + can.page.insertBefore(can, [{view: [[html.ITEM, html.BUTTON, name], ""], title: name, list: [{text: item.inner}], style: {"background-color": item.color, right: 10+25*index++}, onclick: item.onclick}], sub._output) + }) sub.onexport.marginTop = function() { return 25 }, sub.onexport.marginBottom = function() { return 100 } sub.onexport.actionHeight = function(sub) { return can.page.ClassList.has(can, sub._target, html.OUTPUT)? 0: html.ACTION_HEIGHT+20 } sub.onexport.output = function() { sub.onimport.size(sub, item.height, can.base.Min(sub._target.offsetWidth, item.width), true) @@ -109,13 +111,16 @@ Volcanos(chat.ONIMPORT, { }, function() { _select && _select.click() }) }, layout: function(can) { can.page.style(can, can._output, html.HEIGHT, can.ConfHeight(), html.WIDTH, can.ConfWidth()) - can.ui.notifications && can.page.style(can, can.ui.notifications._target, html.LEFT, can.ConfWidth()-250) + // can.ui.notifications && can.page.style(can, can.ui.notifications._target, html.LEFT, can.ConfWidth()-250) can.ui.dock && can.page.style(can, can.ui.dock._target, html.LEFT, can.base.Min((can.ConfWidth()-(can.ui.dock._target.offsetWidth||502))/2, 0)) }, }, [""]) Volcanos(chat.ONACTION, {list: ["full"], - _search: function(can) { if (can.onmotion.toggle(can, can.ui.searchs._target)) { - can.page.Select(can, can.ui.searchs._option, "input[name=keyword]", function(target) { can.onmotion.focus(can, target) }) + _search: function(can) { var sub = can.ui.searchs; if (can.onmotion.toggle(can, sub._target)) { + sub.onimport.size(sub, can.ConfHeight()/2, can.ConfWidth()/2, true) + sub.onimport.size(sub, can.ConfHeight()/2, can.base.Min(sub._target.offsetWidth, can.ConfWidth()/2, can.ConfWidth()), true) + can.page.style(can, sub._target, html.LEFT, (can.ConfWidth()-sub._target.offsetWidth)/2, html.TOP, can.ConfHeight()/4) + can.page.Select(can, sub._option, "input[name=keyword]", function(target) { can.onmotion.focus(can, target) }) } }, full: function(event, can) { document.body.requestFullscreen() }, create: function(event, can) { can.onimport._desktop(can) }, diff --git a/core/chat/macos/menu.js b/core/chat/macos/menu.js index 6116bc82..d67c3718 100644 --- a/core/chat/macos/menu.js +++ b/core/chat/macos/menu.js @@ -5,7 +5,8 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg) { can.page.style(can, can._ou ].concat(msg.Table(function(item) { return {view: [html.ITEM], list: [{img: can.page.drawText(can, item.name||item.index, 25, 0, 20)}], onclick: function(event) { can.sup.onexport.record(can, item) }} }), [ - {view: [html.MENU, "", can.ConfSpace()||can.misc.Search(can, ice.POD)||location.host], onclick: function(event) { can.sup.onexport.record(can, html.DESKTOP) }}, + {view: [[html.MENU, "title"]], list: [{img: can.misc.ResourceFavicon(can)}, {text: can.ConfSpace()||can.misc.Search(can, ice.POD)||location.host}], + onclick: function(event) { can.sup.onexport.record(can, html.DESKTOP) }}, {view: [[html.MENU, mdb.ICON, web.REFRESH], "", can.page.unicode.refresh], onclick: function(event) { can.user.reload(true) }}, {view: [[html.MENU, mdb.ICON, mdb.CREATE], "", can.page.unicode.create], onclick: function(event) { can.sup.onexport.record(can, mdb.CREATE) }}, ])) diff --git a/core/chat/macos/notifications.js b/core/chat/macos/notifications.js index 035681f5..1fd0582b 100644 --- a/core/chat/macos/notifications.js +++ b/core/chat/macos/notifications.js @@ -9,7 +9,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg) { }} })), can.onmotion.hidden(can, can._fields), can.onappend._action(can), can.page.style(can, can._action, html.DISPLAY, html.BLOCK) }}) Volcanos(chat.ONACTION, { - list: [web.REFRESH, mdb.PRUNES, html.TOGGLE], _trans: {refresh: "刷新", toggle: "隐藏"}, - toggle: function(event, can, button) { can.onmotion.hidden(can, can._fields) }, + list: [cli.CLOSE, web.REFRESH, mdb.PRUNES], _trans: {refresh: "刷新", toggle: "隐藏"}, + close: function(event, can, button) { can.onmotion.hidden(can, can._fields) }, refresh: function(event, can, button) { can.Update(event) }, }) diff --git a/core/code/xterm.go b/core/code/xterm.go index 6c94a0ec..8dc4d363 100644 --- a/core/code/xterm.go +++ b/core/code/xterm.go @@ -125,7 +125,7 @@ func init() { _xterm_get(m, kit.Select("", arg, 0)).Write([]byte(m.Cmdx(PUBLISH, ice.CONTEXTS, ice.APP, kit.Dict("format", "raw")) + ice.NL)) m.ProcessHold() }}, - ice.APP: {Help: "本机", Hand: func(m *ice.Message, arg ...string) { + ice.APP: {Help: "本机", Icon: "bi bi-terminal", Hand: func(m *ice.Message, arg ...string) { if h := kit.Select(m.Option(mdb.HASH), arg, 0); h == "" { cli.OpenCmds(m, "cd "+kit.Path("")) } else {