1
0
forked from x/icebergs
This commit is contained in:
IT 老营长 @云轩领航-创始人 2024-03-08 23:48:50 +08:00
parent 939de032c1
commit abcddce974
7 changed files with 34 additions and 31 deletions

View File

@ -473,7 +473,7 @@ func init() {
}}, }},
}, StatsAction(), DreamAction(), DreamTablesAction(), mdb.ImportantHashAction( }, StatsAction(), DreamAction(), DreamTablesAction(), mdb.ImportantHashAction(
mdb.SHORT, mdb.NAME, mdb.FIELD, "time,name,icons,repos,binary,template,restart,access", mdb.SHORT, mdb.NAME, mdb.FIELD, "time,name,icons,repos,binary,template,restart,access",
html.BUTTON, kit.JoinWord(PORTAL, DESKTOP, ADMIN, MESSAGE, WORD, STATUS, VIMER, COMPILE, XTERM, DREAM), html.BUTTON, kit.JoinWord(PORTAL, DESKTOP, MESSAGE, ADMIN, WORD, STATUS, VIMER, COMPILE, XTERM, DREAM),
ctx.TOOLS, kit.Simple(SPIDE, ROUTE), ONLINE, ice.TRUE, ctx.TOOLS, kit.Simple(SPIDE, ROUTE), ONLINE, ice.TRUE,
)), Hand: func(m *ice.Message, arg ...string) { )), Hand: func(m *ice.Message, arg ...string) {
if len(arg) == 0 { if len(arg) == 0 {

View File

@ -22,6 +22,8 @@ fieldset.web.matrix>div.output>table.content div.item div.status div.item:hover
fieldset.web.matrix>div.output>table.content div.item:hover { background-color:unset; color:unset; } fieldset.web.matrix>div.output>table.content div.item:hover { background-color:unset; color:unset; }
fieldset.web.matrix>div.output>table.content div.item.notice { background-color:var(--notice-bg-color); color:var(--notice-fg-color); } fieldset.web.matrix>div.output>table.content div.item.notice { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
fieldset.web.matrix>div.output>table.content div.item.danger { background-color:var(--danger-bg-color); color:var(--danger-fg-color); } fieldset.web.matrix>div.output>table.content div.item.danger { background-color:var(--danger-bg-color); color:var(--danger-fg-color); }
fieldset.web.matrix>div.output>table.content div.item.server { border:var(--notice-bg-color) solid 3px; }
fieldset.web.matrix>div.output>table.content div.item.master { border:var(--danger-bg-color) solid 3px; }
fieldset.web.matrix>div.output>table.content div.item.danger div.status div.item { color:var(--danger-fg-color); } fieldset.web.matrix>div.output>table.content div.item.danger div.status div.item { color:var(--danger-fg-color); }
fieldset.web.matrix>div.output>table.content div.item.notice div.status div.item { color:var(--notice-fg-color); } fieldset.web.matrix>div.output>table.content div.item.notice div.status div.item { color:var(--notice-fg-color); }
fieldset.web.matrix>div.output>table.content div.item.stop div.title>span { color:var(--disable-fg-color); } fieldset.web.matrix>div.output>table.content div.item.stop div.title>span { color:var(--disable-fg-color); }

View File

@ -14,34 +14,29 @@ import (
kit "shylinux.com/x/toolkits" kit "shylinux.com/x/toolkits"
) )
func _matrix_list(m *ice.Message, domain, icon, typ string, fields ...string) (server, icons, types []string) { func _matrix_list(m *ice.Message, domain, typ string, meta ice.Maps, fields ...string) (server, icons, types []string) {
value := kit.Dict(cli.ParseMake(m.Cmdx(Space(m, domain), cli.RUNTIME))) value := kit.Dict(cli.ParseMake(m.Cmdx(Space(m, domain), cli.RUNTIME)))
value[DOMAIN], value[mdb.ICONS], value[mdb.TYPE] = domain, icon, typ value[DOMAIN], value[mdb.TYPE] = domain, typ
button := []ice.Any{} kit.For(meta, func(k, v string) { value[k] = v })
switch typ {
case MYSELF: istech, isdebug := typ == SERVER || kit.IsIn(meta[aaa.ACCESS], aaa.TECH, aaa.ROOT), m.IsDebug()
button = []ice.Any{PORTAL, WORD, STATUS, VIMER, COMPILE, DREAM, DESKTOP, ADMIN, OPEN, cli.RUNTIME, XTERM} compile := kit.Select("", kit.Select(COMPILE, UPGRADE, typ == SERVER), istech)
case SERVER: vimer := kit.Select("", VIMER, istech && isdebug)
button = []ice.Any{PORTAL, DESKTOP, ADMIN, OPEN, UPGRADE, DREAM, WORD, STATUS, VIMER, cli.RUNTIME, XTERM}
default: button := []ice.Any{PORTAL, DESKTOP, DREAM, ADMIN, OPEN, compile}
button = []ice.Any{PORTAL, DESKTOP, ADMIN, OPEN, COMPILE, DREAM, WORD, STATUS, VIMER, cli.RUNTIME, XTERM} kit.If(istech, func() { button = append(button, WORD, STATUS) })
} kit.If(istech && isdebug, func() { button = append(button, vimer, cli.RUNTIME, XTERM) })
m.PushRecord(value, fields...).PushButton(button...) m.PushRecord(value, fields...).PushButton(button...)
switch typ {
case MYSELF: button = []ice.Any{PORTAL, DESKTOP, MESSAGE, ADMIN, OPEN, compile}
button = []ice.Any{PORTAL, WORD, STATUS, VIMER, COMPILE, MESSAGE, DESKTOP, ADMIN, OPEN, cli.RUNTIME, XTERM} kit.If(istech, func() { button = append(button, WORD, STATUS) })
case SERVER: kit.If(istech && isdebug, func() { button = append(button, vimer, cli.RUNTIME, XTERM, cli.STOP) })
button = []ice.Any{PORTAL, DESKTOP, ADMIN, OPEN, UPGRADE, MESSAGE, WORD, STATUS, VIMER, cli.RUNTIME, XTERM}
default:
button = []ice.Any{PORTAL, DESKTOP, ADMIN, OPEN, WORD, STATUS, VIMER, cli.RUNTIME, XTERM}
}
button = append(button, cli.STOP)
m.Cmd(Space(m, domain), DREAM).Table(func(value ice.Maps) { m.Cmd(Space(m, domain), DREAM).Table(func(value ice.Maps) {
switch value[mdb.TYPE] { switch value[mdb.TYPE] {
case WORKER: case WORKER:
value[DOMAIN] = domain value[DOMAIN] = domain
kit.If(value[mdb.STATUS] == cli.STOP, func() { value[mdb.ICONS] = nfs.USR_ICONS_ICEBERGS }) kit.If(value[mdb.STATUS] == cli.STOP, func() { value[mdb.ICONS] = nfs.USR_ICONS_ICEBERGS })
kit.If(value[mdb.STATUS] == cli.STOP, func() { button = []ice.Any{cli.START, mdb.REMOVE} }) kit.If(value[mdb.STATUS] == cli.STOP && istech, func() { button = []ice.Any{cli.START, mdb.REMOVE} })
m.PushRecord(value, fields...).PushButton(button...) m.PushRecord(value, fields...).PushButton(button...)
case SERVER, MASTER: case SERVER, MASTER:
server = append(server, kit.Keys(domain, value[mdb.NAME])) server = append(server, kit.Keys(domain, value[mdb.NAME]))
@ -111,10 +106,10 @@ func init() {
mdb.REMOVE: {Hand: func(m *ice.Message, arg ...string) { _matrix_dream(m, nfs.TRASH); _matrix_dream(m, "") }}, mdb.REMOVE: {Hand: func(m *ice.Message, arg ...string) { _matrix_dream(m, nfs.TRASH); _matrix_dream(m, "") }},
cli.START: {Hand: func(m *ice.Message, arg ...string) { _matrix_dream(m, "") }}, cli.START: {Hand: func(m *ice.Message, arg ...string) { _matrix_dream(m, "") }},
cli.STOP: {Hand: func(m *ice.Message, arg ...string) { _matrix_dream(m, "") }}, cli.STOP: {Hand: func(m *ice.Message, arg ...string) { _matrix_dream(m, "") }},
COMPILE: {Hand: func(m *ice.Message, arg ...string) { UPGRADE: {Hand: func(m *ice.Message, arg ...string) {
_matrix_cmd(m, "", cli.AMD64, cli.LINUX, ice.SRC_MAIN_GO).ProcessHold() _matrix_cmd(m, "").Sleep3s()
m.ProcessRefresh()
}}, }},
UPGRADE: {Hand: func(m *ice.Message, arg ...string) { _matrix_cmd(m, "").Sleep3s().ProcessRefresh() }},
INSTALL: {Hand: func(m *ice.Message, arg ...string) { INSTALL: {Hand: func(m *ice.Message, arg ...string) {
if kit.IsIn(m.Cmdv(Space(m, m.Option(DOMAIN)), SPIDE, ice.DEV_IP, CLIENT_HOSTNAME), m.Cmd(tcp.HOST).Appendv(aaa.IP)...) { if kit.IsIn(m.Cmdv(Space(m, m.Option(DOMAIN)), SPIDE, ice.DEV_IP, CLIENT_HOSTNAME), m.Cmd(tcp.HOST).Appendv(aaa.IP)...) {
m.Option(nfs.BINARY, S(m.Option(mdb.NAME))) m.Option(nfs.BINARY, S(m.Option(mdb.NAME)))
@ -129,7 +124,7 @@ func init() {
StreamPushRefreshConfirm(m, m.Trans("refresh for new space ", "刷新列表查看新空间 ")+kit.Keys(m.Option(DOMAIN), m.Option(mdb.NAME))) StreamPushRefreshConfirm(m, m.Trans("refresh for new space ", "刷新列表查看新空间 ")+kit.Keys(m.Option(DOMAIN), m.Option(mdb.NAME)))
}}, }},
}, ctx.ConfAction( }, ctx.ConfAction(
mdb.FIELD, "time,domain,status,type,name,text,icons,repos,binary,module,version", mdb.FIELD, "time,domain,status,type,name,text,icons,repos,binary,module,version,access",
ctx.TOOLS, kit.Simple(SPIDE, STATUS, VERSION), ONLINE, ice.TRUE, ctx.TOOLS, kit.Simple(SPIDE, STATUS, VERSION), ONLINE, ice.TRUE,
)), Hand: func(m *ice.Message, arg ...string) { )), Hand: func(m *ice.Message, arg ...string) {
if kit.HasPrefixList(arg, ctx.ACTION) { if kit.HasPrefixList(arg, ctx.ACTION) {
@ -138,11 +133,16 @@ func init() {
} }
GoToast(m, func(toast func(name string, count, total int)) []string { GoToast(m, func(toast func(name string, count, total int)) []string {
field := kit.Split(mdb.Config(m, mdb.FIELD)) field := kit.Split(mdb.Config(m, mdb.FIELD))
space := m.CmdMap(SPACE, mdb.NAME)
m.Options("space.timeout", cli.TIME_3s, "dream.simple", ice.TRUE) m.Options("space.timeout", cli.TIME_3s, "dream.simple", ice.TRUE)
list, icons, types := _matrix_list(m, "", ice.SRC_MAIN_ICO, MYSELF, field...) list, icons, types := _matrix_list(m, "", MYSELF, ice.Maps{
mdb.ICONS: ice.SRC_MAIN_ICO, aaa.ACCESS: m.Option(ice.MSG_USERROLE),
}, field...)
kit.For(list, func(domain string, index int, total int) { kit.For(list, func(domain string, index int, total int) {
toast(domain, index, total) toast(domain, index, total)
_matrix_list(m, domain, icons[index], types[index], field...) _matrix_list(m, domain, types[index], ice.Maps{
mdb.ICONS: icons[index], aaa.ACCESS: kit.Format(kit.Value(space[domain], aaa.USERROLE)),
}, field...)
}) })
m.RewriteAppend(func(value, key string, index int) string { m.RewriteAppend(func(value, key string, index int) string {
if key == mdb.ICONS && strings.HasPrefix(value, nfs.REQUIRE) && m.Appendv(DOMAIN)[index] != "" { if key == mdb.ICONS && strings.HasPrefix(value, nfs.REQUIRE) && m.Appendv(DOMAIN)[index] != "" {

View File

@ -27,7 +27,7 @@ Volcanos(chat.ONIMPORT, {
return {view: [[html.ITEM, item.type, item.status, can.onimport.style(can, item, list)]], list: [ return {view: [[html.ITEM, item.type, item.status, can.onimport.style(can, item, list)]], list: [
{img: can.misc.Resource(can, item.icons, can.core.Keys(item.domain, item.name)), onclick: cb(web.DESKTOP)}, {view: wiki.TITLE, list: [ {img: can.misc.Resource(can, item.icons, can.core.Keys(item.domain, item.name)), onclick: cb(web.DESKTOP)}, {view: wiki.TITLE, list: [
{text: item.name||item.domain||location.host, onclick: cb(web.OPEN)}, {text: item.name||item.domain||location.host, onclick: cb(web.OPEN)},
item.status != cli.STOP && can.onappend.label(can, item, {version: icon.version, time: icon.compile}), item.status != cli.STOP && can.onappend.label(can, item, {version: icon.version, time: icon.compile, access: "bi bi-file-lock"}),
{text: [item.text, "", "status"]}, {text: [item.text, "", "status"]},
can.onappend.buttons(can, item), can.onappend.buttons(can, item),
]}, ]},

View File

@ -60,7 +60,7 @@ func init() {
m.Cmdy(nfs.DIR, dir, "time,size,path,hash").Push(web.ORIGIN, kit.MergeURL2(web.SpideOrigin(m, ice.DEV_IP), uri)) m.Cmdy(nfs.DIR, dir, "time,size,path,hash").Push(web.ORIGIN, kit.MergeURL2(web.SpideOrigin(m, ice.DEV_IP), uri))
}) })
if web.ToastSuccess(m); m.Option(ice.EXIT) == ice.TRUE { if web.ToastSuccess(m); m.Option(ice.EXIT) == ice.TRUE {
defer m.GoSleep(cli.TIME_30s, func() { m.Cmd("", cli.RESTART) }) defer m.GoSleep(cli.TIME_30ms, func() { m.Cmd("", cli.RESTART) })
web.Toast(m, cli.RESTART) web.Toast(m, cli.RESTART)
} }
}}, }},

View File

@ -58,6 +58,7 @@ func init() {
}}, }},
web.DREAM_TABLES: {Hand: func(m *ice.Message, arg ...string) { web.DREAM_TABLES: {Hand: func(m *ice.Message, arg ...string) {
if !m.IsDebug() || !aaa.IsTechOrRoot(m) || !nfs.Exists(m, path.Join(ice.USR_LOCAL_WORK, m.Option(mdb.NAME), _GIT)) { if !m.IsDebug() || !aaa.IsTechOrRoot(m) || !nfs.Exists(m, path.Join(ice.USR_LOCAL_WORK, m.Option(mdb.NAME), _GIT)) {
m.Push(mdb.TEXT, "")
return return
} }
m.Push(mdb.TEXT, web.DreamStat(m, m.Option(mdb.NAME))) m.Push(mdb.TEXT, web.DreamStat(m, m.Option(mdb.NAME)))

View File

@ -223,7 +223,7 @@ func (s relay) List(m *ice.Message, arg ...string) *ice.Message {
return return
} }
m.Push(web.LINK, web.HostPort(m.Message, value[tcp.HOST], value[web.PORTAL])) m.Push(web.LINK, web.HostPort(m.Message, value[tcp.HOST], value[web.PORTAL]))
m.PushButton(s.Portal, s.Desktop, s.Dream, s.Admin, s.Vimer, s.Login, s.Proxy, s.AdminCmd, s.Upgrade, s.Pushbin, s.Xterm, s.Trash, s.Remove) m.PushButton(s.Portal, s.Desktop, s.Dream, s.Admin, s.Vimer, s.Proxy, s.Login, s.AdminCmd, s.Upgrade, s.Pushbin, s.Xterm, s.Trash, s.Remove)
kit.If(len(arg) > 0, func() { m.PushQRCode(cli.QRCODE, m.Append(web.LINK)) }) kit.If(len(arg) > 0, func() { m.PushQRCode(cli.QRCODE, m.Append(web.LINK)) })
}) })
_stats := kit.Dict(MEM, kit.FmtSize(stats[MEM_FREE], stats[MEM_TOTAL]), DISK, kit.FmtSize(stats[DISK_USED], stats[DISK_TOTAL])) _stats := kit.Dict(MEM, kit.FmtSize(stats[MEM_FREE], stats[MEM_TOTAL]), DISK, kit.FmtSize(stats[DISK_USED], stats[DISK_TOTAL]))