diff --git a/base/web/option.go b/base/web/option.go index ca2a7870..49aff1b1 100644 --- a/base/web/option.go +++ b/base/web/option.go @@ -63,13 +63,22 @@ func ProcessIframe(m *ice.Message, name, link string, arg ...string) { } func PushPodCmd(m *ice.Message, cmd string, arg ...string) { kit.If(m.Length() > 0 && len(m.Appendv(SPACE)) == 0, func() { m.Table(func(value ice.Maps) { m.Push(SPACE, "") }) }) + list := []string{} m.Cmds(SPACE, func(value ice.Maps) { - if kit.IsIn(value[mdb.TYPE], WORKER, SERVER) { - m.Cmd(SPACE, value[mdb.NAME], kit.Select(m.PrefixKey(), cmd), arg).Table(func(index int, val ice.Maps, head []string) { - val[SPACE] = kit.Keys(value[mdb.NAME], val[SPACE]) + kit.If(kit.IsIn(value[mdb.TYPE], WORKER, SERVER), func() { list = append(list, value[mdb.NAME]) }) + }) + if len(list) == 0 { + return + } + GoToast(m, "", func(toast func(string, int, int)) []string { + kit.For(list, func(index int, space string) { + toast(space, index, len(list)) + m.Cmd(SPACE, space, kit.Select(m.PrefixKey(), cmd), arg).Table(func(index int, val ice.Maps, head []string) { + val[SPACE] = kit.Keys(space, val[SPACE]) m.Push("", val, head) }) - } + }) + return nil }) } func PushImages(m *ice.Message, name string) { diff --git a/base/web/route.go b/base/web/route.go index 5e88172b..b5f39eb9 100644 --- a/base/web/route.go +++ b/base/web/route.go @@ -58,7 +58,7 @@ func init() { Index.MergeCommands(ice.Commands{ ROUTE: {Name: "route space:text cmds:text auto spide cmds build travel monitor prunes", Help: "路由表", Actions: ice.MergeActions(ice.Actions{ ice.MAIN: {Help: "首页", Hand: func(m *ice.Message, arg ...string) { - ctx.ProcessField(m, CHAT_IFRAME, m.MergePod(kit.Select(m.Option(SPACE), arg, 0)), arg...) + ctx.ProcessField(m, CHAT_IFRAME, m.MergePod(""), arg...) }}, mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) { switch mdb.HashInputs(m, arg); arg[0] { @@ -77,6 +77,7 @@ func init() { }}, "build": {Name: "build space", Help: "构建", Hand: func(m *ice.Message, arg ...string) { _route_toast(m, m.Option(SPACE), m.PrefixKey(), "_build") + m.Cmdy("", "travel") }}, "_build": {Hand: func(m *ice.Message, arg ...string) { if nfs.Exists(m, ".git") { @@ -111,8 +112,9 @@ func init() { } }) PushPodCmd(m, "", m.ActionKey()) - m.Table(func(value ice.Maps) { kit.If(value[SPACE], func() { mdb.HashCreate(m.Spawn(), kit.Simple(value)) }) }) + ToastSuccess(m) m.ProcessRefresh() + m.Table(func(value ice.Maps) { kit.If(value[SPACE], func() { mdb.HashCreate(m.Spawn(), kit.Simple(value)) }) }) }}, "monitor": {Help: "监控", Hand: func(m *ice.Message, arg ...string) { m.ProcessOpen(m.Cmdv(SPIDE, "monitor", CLIENT_URL)) diff --git a/core/chat/macos/desktop.css b/core/chat/macos/desktop.css index 0e0021bc..f98abebc 100644 --- a/core/chat/macos/desktop.css +++ b/core/chat/macos/desktop.css @@ -13,7 +13,7 @@ fieldset.macos.desktop>div.output>fieldset.macos.notifications div.item div.time fieldset.macos.desktop>div.output>fieldset.macos.notifications div.item div.content { width:180px; } fieldset.macos.desktop>div.output>div.desktop:not(.select) { display:none; } 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; border-radius:var(--desktop-icon-size); height:var(--desktop-icon-size); width:var(--desktop-icon-size); } +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.select { z-index:1; } fieldset.macos.desktop>div.output>div.desktop>fieldset { border-radius:10px; position:absolute; } @@ -48,10 +48,10 @@ fieldset.macos.menu>div.output>div.tabs.select { background-color:var(--hover-bg 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.item { text-align:center; align-self:baseline; transition:margin-top 0.3s; } -fieldset.macos.dock>div.output>div.item img { object-fit:contain; border-radius:var(--desktop-icon-size); min-height:var(--desktop-icon-size); width:var(--desktop-icon-size); transition:width 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; } fieldset.macos.finder>div.output div.content>div.item { text-align:center; float:left; } -fieldset.macos.finder>div.output div.content>div.item img { object-fit:contain; border-radius:var(--desktop-icon-size); height:var(--desktop-icon-size); width:var(--desktop-icon-size); } +fieldset.macos.finder>div.output div.content>div.item img { object-fit:contain; height:var(--desktop-icon-size); width:var(--desktop-icon-size); } fieldset.macos.finder>div.output div.content>div.item div.name { font-size:var(--code-font-size); text-align:center; } body.dark fieldset.macos.desktop>div.output>fieldset.macos { background-color:#08234ad1; } body.dark fieldset.macos.desktop>div.output>div.desktop fieldset table.content tbody tr:nth-child(odd) { background-color:#282B2F; } diff --git a/core/wiki/portal.css b/core/wiki/portal.css index 6ab9c6b7..fac63808 100644 --- a/core/wiki/portal.css +++ b/core/wiki/portal.css @@ -10,7 +10,7 @@ fieldset.web.wiki.portal>div.output>div.layout { display:flex; justify-content:c fieldset.web.wiki.portal>div.output>div.layout>div.nav { padding:40px 40px; border-right:var(--plugin-border-color) solid 1px; min-width:230px; overflow:auto; } fieldset.web.wiki.portal>div.output>div.layout>div.nav div.story[data-name=navmenu] div.item { padding:5px; } fieldset.web.wiki.portal>div.output>div.layout>div.nav div.story[data-name=navmenu] div.list { padding-left:20px; } -fieldset.web.wiki.portal>div.output>div.layout>div.main { padding:40px; height:600px; min-width:400px; max-width:var(--portal-max-width); overflow:auto; } +fieldset.web.wiki.portal>div.output>div.layout>div.main { padding:40px; height:600px; min-width:400px; max-width:var(--portal-max-width); overflow:auto; overflow-x:hidden; } fieldset.web.wiki.portal>div.output>div.layout>div.aside { padding:40px 20px; min-width:200px; overflow:auto; } fieldset.web.wiki.portal>div.output>div.layout>div.aside div.item { padding:5px; } fieldset.web.wiki.portal>div.output>div.layout>div.aside div.item.section { padding-left:20px; } diff --git a/option.go b/option.go index 79427e0a..3eac1194 100644 --- a/option.go +++ b/option.go @@ -46,6 +46,7 @@ func (m *Message) OptionCB(key string, cb ...Any) Any { func (m *Message) MergePod(pod string, arg ...Any) string { ls := []string{"chat"} kit.If(kit.Keys(m.Option(MSG_USERPOD), pod), func(p string) { ls = append(ls, POD, p) }) + kit.If(len(ls) == 1, func() { ls = ls[:0] }) kit.If(m.Option(DEBUG) == TRUE, func() { arg = append([]Any{DEBUG, TRUE}, arg...) }) return kit.MergeURL2(strings.Split(kit.Select("http://localhost:9020", Info.Domain, m.Option(MSG_USERWEB)), QS)[0], PS+kit.Join(ls, PS), arg...) }