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: "授权"},