diff --git a/base/cli/system.go b/base/cli/system.go index 39e69e29..8f78a483 100644 --- a/base/cli/system.go +++ b/base/cli/system.go @@ -189,7 +189,8 @@ func init() { } } -func SystemFindGo(m *ice.Message) bool { return SystemFind(m, "go") != "" } +func SystemFindGit(m *ice.Message) bool { return SystemFind(m, GIT) != "" } +func SystemFindGo(m *ice.Message) bool { return SystemFind(m, GO) != "" } func SystemFind(m *ice.Message, bin string, dir ...string) string { dir = append(dir, EtcPath(m)...) return _system_find(m, bin, append(dir, _path_split(kit.Env(PATH))...)...) diff --git a/base/web/dream.go b/base/web/dream.go index 7f376954..d527980e 100644 --- a/base/web/dream.go +++ b/base/web/dream.go @@ -32,7 +32,7 @@ func _dream_list(m *ice.Message, simple bool) *ice.Message { m.Push("", value, kit.Slice(head, 0, -1)) if m.IsCliUA() || simple { m.Push(mdb.TYPE, space[mdb.TYPE]).Push(cli.STATUS, cli.START) - m.Push(nfs.MODULE, space[nfs.MODULE]).Push(nfs.VERSION, space[nfs.VERSION]).Push(mdb.TEXT, "") + m.Push(nfs.MODULE, space[nfs.MODULE]).Push(nfs.VERSION, space[nfs.VERSION]).Push(mdb.TEXT, DreamStat(m, value[mdb.NAME])) if aaa.IsTechOrRoot(m) { m.PushButton(cli.STOP) } else { @@ -573,3 +573,19 @@ func DreamListSpide(m *ice.Message, list []string, types string, cb func(dev, or func DreamList(m *ice.Message) *ice.Message { return AdminCmd(m.Options("dream.simple", ice.TRUE), DREAM) } +func DreamStat(m *ice.Message, name string) (res string) { + if cli.SystemFindGit(m) { + text := []string{} + for _, line := range kit.Split(m.Cmdx(cli.SYSTEM, cli.GIT, "diff", "--shortstat", kit.Dict(cli.CMD_DIR, path.Join(ice.USR_LOCAL_WORK, name))), mdb.FS, mdb.FS) { + if list := kit.Split(line); strings.Contains(line, nfs.FILE) { + text = append(text, kit.Format("%s file", list[0])) + } else if strings.Contains(line, "ins") { + text = append(text, kit.Format("%s+++", list[0])) + } else if strings.Contains(line, "del") { + text = append(text, kit.Format("%s---", list[0])) + } + } + res = strings.Join(text, "") + } + return +} diff --git a/base/web/matrix.css b/base/web/matrix.css index 381562b5..9bc9a867 100644 --- a/base/web/matrix.css +++ b/base/web/matrix.css @@ -8,6 +8,11 @@ fieldset.web.matrix>div.output>table.content div.item img { height:var(--header- fieldset.web.matrix>div.output>table.content div.item img.jpg { padding:var(--input-padding); } fieldset.web.matrix>div.output>table.content div.item div.title { text-align:left; padding:var(--input-padding); } fieldset.web.matrix>div.output>table.content div.item div.title>span { cursor:pointer; } +fieldset.web.matrix>div.output>table.content div.item div.title>span.status { font-size:var(--status-font-size); } +fieldset.web.matrix>div.output>table.content div.item div.title>span.status>span { padding:0 var(--input-padding); } +fieldset.web.matrix>div.output>table.content div.item div.title>span.status>span.files { background-color:purple; color:var(--notice-fg-color);} +fieldset.web.matrix>div.output>table.content div.item div.title>span.status>span.add { background-color:var(--notice-bg-color); color:var(--notice-fg-color);} +fieldset.web.matrix>div.output>table.content div.item div.title>span.status>span.del { background-color:var(--danger-bg-color); color:var(--danger-fg-color);} fieldset.web.matrix>div.output>table.content div.item div.status i { font-size:var(--status-font-size); padding:0; } fieldset.web.matrix>div.output>table.content div.item div.action { margin-top:var(--input-margin); overflow:hidden; } fieldset.web.matrix>div.output>table.content div.item div.action input.icons { display:none; } diff --git a/base/web/matrix.go b/base/web/matrix.go index 58013ba0..4de5d28a 100644 --- a/base/web/matrix.go +++ b/base/web/matrix.go @@ -123,14 +123,9 @@ func init() { } _matrix_dream(m, mdb.CREATE, kit.Simple(m.OptionSimple(mdb.ICONS, nfs.REPOS, nfs.BINARY))...) m.Cmd(SPACE, kit.Keys(m.Option(DOMAIN), m.Option(mdb.NAME)), MESSAGE, mdb.CREATE, - mdb.TYPE, aaa.TECH, mdb.ICONS, nfs.USR_ICONS_VOLCANOS, - TARGET, kit.Keys("from", m.Option(mdb.NAME)), - // "target", kit.Keys(ice.OPS, ice.DEV, m.Option(mdb.NAME)), - ) + mdb.TYPE, aaa.TECH, mdb.ICONS, nfs.USR_ICONS_VOLCANOS, TARGET, kit.Keys(nfs.FROM, m.Option(mdb.NAME))) m.Cmd(SPACE, m.Option(mdb.NAME), MESSAGE, mdb.CREATE, - mdb.TYPE, aaa.TECH, mdb.ICONS, nfs.USR_ICONS_ICEBERGS, - TARGET, kit.Keys(ice.OPS, m.Option(DOMAIN), m.Option(mdb.NAME)), - ) + mdb.TYPE, aaa.TECH, mdb.ICONS, nfs.USR_ICONS_ICEBERGS, TARGET, kit.Keys(ice.OPS, 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( @@ -156,7 +151,7 @@ func init() { return value }) m.Action(html.FILTER, mdb.CREATE).StatusTimeCountStats(mdb.TYPE, mdb.STATUS).Display("") - m.Sort("type,status,name,domain", []string{MYSELF, SERVER, MASTER, WORKER, ""}, []string{cli.START, cli.STOP, ""}, "str_r", "str_r") + m.Sort("type,status,name,domain", []string{MYSELF, SERVER, MASTER, WORKER, ""}, []string{cli.START, cli.STOP, ""}, ice.STR_R, ice.STR_R) ctx.Toolkit(m) return nil }) diff --git a/base/web/matrix.js b/base/web/matrix.js index c598e444..f4210377 100644 --- a/base/web/matrix.js +++ b/base/web/matrix.js @@ -22,13 +22,13 @@ Volcanos(chat.ONIMPORT, { }}, "", target) }} }, - item: function(can, item, list) { var name = item.name, domain = item.domain, worker = list[name][""], server = list[""][domain] - item["server.type"] = server.type + item: function(can, item, list) { var name = item.name, domain = item.domain, worker = list[name][""], server = list[""][domain]; item["server.type"] = server.type function cb(action) { return function(event) { can.Update(can.request(event, item), [ctx.ACTION, action]) } } 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: [ {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}), + {text: [item.text, "", "status"]}, can.onappend.buttons(can, item), ]}, ]} diff --git a/misc/git/status.go b/misc/git/status.go index a350f48d..1809b5a6 100644 --- a/misc/git/status.go +++ b/misc/git/status.go @@ -60,18 +60,7 @@ func init() { if !m.IsDebug() || !aaa.IsTechOrRoot(m) || !nfs.Exists(m, path.Join(ice.USR_LOCAL_WORK, m.Option(mdb.NAME), _GIT)) { return } - text := []string{} - for _, line := range kit.Split(m.Cmdx(cli.SYSTEM, GIT, DIFF, "--shortstat", kit.Dict(cli.CMD_DIR, path.Join(ice.USR_LOCAL_WORK, m.Option(mdb.NAME)))), mdb.FS, mdb.FS) { - if list := kit.Split(line); strings.Contains(line, nfs.FILE) { - text = append(text, list[0]+" file") - } else if strings.Contains(line, "ins") { - text = append(text, list[0]+" +++") - } else if strings.Contains(line, "del") { - text = append(text, list[0]+" ---") - } - } - // m.Push(mdb.TEXT, kit.JoinLine(m.Option(nfs.MODULE), strings.Join(text, ", "))) - m.Push(mdb.TEXT, strings.Join(text, ", ")) + m.Push(mdb.TEXT, web.DreamStat(m, m.Option(mdb.NAME))) m.PushButton(kit.Dict(m.CommandKey(), "源码")) }}, mdb.DEV_REQUEST: {Name: "dev.request origin*", Help: "授权"},