diff --git a/internal/web/actions/default/clusters/clusterutils/clusters_helper.go b/internal/web/actions/default/clusters/clusterutils/clusters_helper.go index ea176a06..22bf4344 100644 --- a/internal/web/actions/default/clusters/clusterutils/clusters_helper.go +++ b/internal/web/actions/default/clusters/clusterutils/clusters_helper.go @@ -12,7 +12,8 @@ func NewClustersHelper() *ClustersHelper { return &ClustersHelper{} } -func (this *ClustersHelper) BeforeAction(action *actions.ActionObject) { +func (this *ClustersHelper) BeforeAction(actionPtr actions.ActionWrapper) { + var action = actionPtr.Object() if action.Request.Method != http.MethodGet { return } diff --git a/internal/web/actions/default/clusters/grants/init.go b/internal/web/actions/default/clusters/grants/init.go index 23e619f4..ef0816f0 100644 --- a/internal/web/actions/default/clusters/grants/init.go +++ b/internal/web/actions/default/clusters/grants/init.go @@ -12,6 +12,7 @@ func init() { server. Helper(helpers.NewUserMustAuth(configloaders.AdminModuleCodeNode)). Helper(clusterutils.NewClustersHelper()). + Data("teaMenu", "clusters"). Data("teaSubMenu", "grant"). Prefix("/clusters/grants"). diff --git a/internal/web/actions/default/clusters/init.go b/internal/web/actions/default/clusters/init.go index d42f2332..048fed4c 100644 --- a/internal/web/actions/default/clusters/init.go +++ b/internal/web/actions/default/clusters/init.go @@ -12,6 +12,7 @@ func init() { server. Helper(helpers.NewUserMustAuth(configloaders.AdminModuleCodeNode)). Helper(clusterutils.NewClustersHelper()). + Data("teaMenu", "clusters"). Prefix("/clusters"). Get("", new(IndexAction)). GetPost("/create", new(CreateAction)). diff --git a/internal/web/actions/default/clusters/logs/index.go b/internal/web/actions/default/clusters/logs/index.go index 4b455f44..f0b6c5c0 100644 --- a/internal/web/actions/default/clusters/logs/index.go +++ b/internal/web/actions/default/clusters/logs/index.go @@ -2,6 +2,7 @@ package logs import ( "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/iwind/TeaGo/maps" timeutil "github.com/iwind/TeaGo/utils/time" @@ -12,6 +13,11 @@ type IndexAction struct { } func (this *IndexAction) Init() { + if this.ParamString("type") == "unread" { + this.FirstMenu("unread") + } else { + this.FirstMenu("index") + } } func (this *IndexAction) RunGet(params struct { @@ -19,19 +25,34 @@ func (this *IndexAction) RunGet(params struct { DayTo string Keyword string Level string + Type string }) { this.Data["dayFrom"] = params.DayFrom this.Data["dayTo"] = params.DayTo this.Data["keyword"] = params.Keyword this.Data["level"] = params.Level + this.Data["type"] = params.Type + // 未读数量 + countUnreadResp, err := this.RPC().NodeLogRPC().CountNodeLogs(this.AdminContext(), &pb.CountNodeLogsRequest{ + Role: nodeconfigs.NodeRoleNode, + IsUnread: true, + }) + if err != nil { + this.ErrorPage(err) + return + } + this.Data["countUnreadLogs"] = countUnreadResp.Count + + // 日志数量 countResp, err := this.RPC().NodeLogRPC().CountNodeLogs(this.AdminContext(), &pb.CountNodeLogsRequest{ - NodeId: 0, - Role: "node", - DayFrom: params.DayFrom, - DayTo: params.DayTo, - Keyword: params.Keyword, - Level: params.Level, + NodeId: 0, + Role: nodeconfigs.NodeRoleNode, + DayFrom: params.DayFrom, + DayTo: params.DayTo, + Keyword: params.Keyword, + Level: params.Level, + IsUnread: params.Type == "unread", }) if err != nil { this.ErrorPage(err) @@ -42,14 +63,15 @@ func (this *IndexAction) RunGet(params struct { this.Data["page"] = page.AsHTML() logsResp, err := this.RPC().NodeLogRPC().ListNodeLogs(this.AdminContext(), &pb.ListNodeLogsRequest{ - NodeId: 0, - Role: "node", - DayFrom: params.DayFrom, - DayTo: params.DayTo, - Keyword: params.Keyword, - Level: params.Level, - Offset: page.Offset, - Size: page.Size, + NodeId: 0, + Role: nodeconfigs.NodeRoleNode, + DayFrom: params.DayFrom, + DayTo: params.DayTo, + Keyword: params.Keyword, + Level: params.Level, + IsUnread: params.Type == "unread", + Offset: page.Offset, + Size: page.Size, }) if err != nil { this.ErrorPage(err) @@ -69,12 +91,14 @@ func (this *IndexAction) RunGet(params struct { } logs = append(logs, maps.Map{ + "id": log.Id, "tag": log.Tag, "description": log.Description, "createdTime": timeutil.FormatTime("Y-m-d H:i:s", log.CreatedAt), "level": log.Level, "isToday": timeutil.FormatTime("Y-m-d", log.CreatedAt) == timeutil.Format("Y-m-d"), "count": log.Count, + "isRead": log.IsRead, "node": maps.Map{ "id": node.Id, "cluster": maps.Map{ diff --git a/internal/web/actions/default/clusters/logs/init.go b/internal/web/actions/default/clusters/logs/init.go index 53bd6673..0a2d83b1 100644 --- a/internal/web/actions/default/clusters/logs/init.go +++ b/internal/web/actions/default/clusters/logs/init.go @@ -14,6 +14,7 @@ func init() { Data("teaSubMenu", "log"). Prefix("/clusters/logs"). Get("", new(IndexAction)). + Post("/readLogs", new(ReadLogsAction)). EndAll() }) } diff --git a/internal/web/actions/default/clusters/logs/readLogs.go b/internal/web/actions/default/clusters/logs/readLogs.go new file mode 100644 index 00000000..080ce9d9 --- /dev/null +++ b/internal/web/actions/default/clusters/logs/readLogs.go @@ -0,0 +1,26 @@ +// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved. + +package logs + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" +) + +type ReadLogsAction struct { + actionutils.ParentAction +} + +func (this *ReadLogsAction) RunPost(params struct { + LogIds []int64 +}) { + _, err := this.RPC().NodeLogRPC().UpdateNodeLogsRead(this.AdminContext(), &pb.UpdateNodeLogsReadRequest{ + NodeLogIds: params.LogIds, + }) + if err != nil { + this.ErrorPage(err) + return + } + + this.Success() +} diff --git a/internal/web/helpers/user_must_auth.go b/internal/web/helpers/user_must_auth.go index ab46112e..d13f8e97 100644 --- a/internal/web/helpers/user_must_auth.go +++ b/internal/web/helpers/user_must_auth.go @@ -4,7 +4,11 @@ import ( "github.com/TeaOSLab/EdgeAdmin/internal/configloaders" teaconst "github.com/TeaOSLab/EdgeAdmin/internal/const" "github.com/TeaOSLab/EdgeAdmin/internal/setup" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/iwind/TeaGo/actions" + "github.com/iwind/TeaGo/logs" "github.com/iwind/TeaGo/maps" "net" "net/http" @@ -130,7 +134,7 @@ func (this *userMustAuth) BeforeAction(actionPtr actions.ActionWrapper, paramNam if !action.Data.Has("teaMenu") { action.Data["teaMenu"] = "" } - action.Data["teaModules"] = this.modules(adminId) + action.Data["teaModules"] = this.modules(actionPtr, adminId) action.Data["teaSubMenus"] = []map[string]interface{}{} action.Data["teaTabbar"] = []map[string]interface{}{} if len(config.Version) == 0 { @@ -165,7 +169,34 @@ func (this *userMustAuth) BeforeAction(actionPtr actions.ActionWrapper, paramNam } // 菜单配置 -func (this *userMustAuth) modules(adminId int64) []maps.Map { +func (this *userMustAuth) modules(actionPtr actions.ActionWrapper, adminId int64) []maps.Map { + var countUnreadNodeLogs int64 = 0 + + // 父级动作 + parentAction, ok := actionPtr.(actionutils.ActionInterface) + if ok { + var action = actionPtr.Object() + + // 未读日志数 + if action.Data.GetString("teaMenu") == "clusters" { + countNodeLogsResp, err := parentAction.RPC().NodeLogRPC().CountNodeLogs(parentAction.AdminContext(), &pb.CountNodeLogsRequest{ + Role: nodeconfigs.NodeRoleNode, + IsUnread: true, + }) + if err != nil { + logs.Error(err) + } else { + var countNodeLogs = countNodeLogsResp.Count + if countNodeLogs > 0 { + countUnreadNodeLogs = countNodeLogs + if countUnreadNodeLogs >= 1000 { + countUnreadNodeLogs = 999 + } + } + } + } + } + allMaps := []maps.Map{ { "code": "dashboard", @@ -236,9 +267,10 @@ func (this *userMustAuth) modules(adminId int64) []maps.Map { "icon": "cloud", "subItems": []maps.Map{ { - "name": "运行日志", - "url": "/clusters/logs", - "code": "log", + "name": "运行日志", + "url": "/clusters/logs", + "code": "log", + "badge": countUnreadNodeLogs, }, { "name": "IP地址", diff --git a/web/views/@default/@layout.css b/web/views/@default/@layout.css index e03c4412..869e7803 100644 --- a/web/views/@default/@layout.css +++ b/web/views/@default/@layout.css @@ -239,12 +239,20 @@ p.margin { } .main-menu .ui.menu .sub-items .item { padding-left: 2.8em !important; + padding-right: 0.4em !important; } .main-menu .ui.menu .sub-items .item .icon { position: absolute; left: 1.1em; top: 0.93em; } +.main-menu .ui.menu .sub-items .item .label { + margin-left: 0; + margin-right: 0; + padding-left: 0.4em; + padding-right: 0.4em; + min-width: 2em; +} @media screen and (max-width: 512px) { .main-menu .ui.menu .sub-items .item { padding-left: 1em !important; diff --git a/web/views/@default/@layout.css.map b/web/views/@default/@layout.css.map index be01efc6..7e37fe2d 100644 --- a/web/views/@default/@layout.css.map +++ b/web/views/@default/@layout.css.map @@ -1 +1 @@ -{"version":3,"sources":["@left_menu.less","@layout.less"],"names":[],"mappings":"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","file":"@layout.css"} \ No newline at end of file +{"version":3,"sources":["@left_menu.less","@layout.less"],"names":[],"mappings":"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","file":"@layout.css"} \ No newline at end of file diff --git a/web/views/@default/@layout.html b/web/views/@default/@layout.html index 4949d783..5543a23a 100644 --- a/web/views/@default/@layout.html +++ b/web/views/@default/@layout.html @@ -92,7 +92,9 @@