记录和显示最近常用的集群

This commit is contained in:
GoEdgeLab
2021-05-03 11:32:59 +08:00
parent 6ead9a6496
commit 8698f302d5
6 changed files with 49 additions and 2 deletions

View File

@@ -340,6 +340,10 @@ func (this *RPCClient) AuthorityNodeRPC() pb.AuthorityNodeServiceClient {
return pb.NewAuthorityNodeServiceClient(this.pickConn()) return pb.NewAuthorityNodeServiceClient(this.pickConn())
} }
func (this *RPCClient) LatestItemRPC() pb.LatestItemServiceClient {
return pb.NewLatestItemServiceClient(this.pickConn())
}
// Context 构造Admin上下文 // Context 构造Admin上下文
func (this *RPCClient) Context(adminId int64) context.Context { func (this *RPCClient) Context(adminId int64) context.Context {
ctx := context.Background() ctx := context.Background()

View File

@@ -203,5 +203,15 @@ func (this *IndexAction) RunGet(params struct {
} }
this.Data["regions"] = regionMaps this.Data["regions"] = regionMaps
// 记录最近访问
_, err = this.RPC().LatestItemRPC().IncreaseLatestItem(this.AdminContext(), &pb.IncreaseLatestItemRequest{
ItemType: "cluster",
ItemId: params.ClusterId,
})
if err != nil {
this.ErrorPage(err)
return
}
this.Show() this.Show()
} }

View File

@@ -24,7 +24,7 @@ func NewClusterHelper() *ClusterHelper {
return &ClusterHelper{} return &ClusterHelper{}
} }
func (this *ClusterHelper) BeforeAction(actionPtr actions.ActionWrapper) { func (this *ClusterHelper) BeforeAction(actionPtr actions.ActionWrapper) (goNext bool) {
action := actionPtr.Object() action := actionPtr.Object()
if action.Request.Method != http.MethodGet { if action.Request.Method != http.MethodGet {
return return
@@ -67,6 +67,8 @@ func (this *ClusterHelper) BeforeAction(actionPtr actions.ActionWrapper) {
action.Data["leftMenuItems"] = this.createSettingMenu(cluster, secondMenuItem) action.Data["leftMenuItems"] = this.createSettingMenu(cluster, secondMenuItem)
} }
} }
return true
} }
// 设置菜单 // 设置菜单

View File

@@ -24,9 +24,10 @@ func (this *IndexAction) RunGet(params struct {
Keyword string Keyword string
SearchType string SearchType string
}) { }) {
isSearching := len(params.Keyword) > 0
this.Data["keyword"] = params.Keyword this.Data["keyword"] = params.Keyword
this.Data["searchType"] = params.SearchType this.Data["searchType"] = params.SearchType
this.Data["isSearching"] = len(params.Keyword) > 0 this.Data["isSearching"] = isSearching
// 搜索节点 // 搜索节点
if params.SearchType == "node" && len(params.Keyword) > 0 { if params.SearchType == "node" && len(params.Keyword) > 0 {
@@ -34,6 +35,23 @@ func (this *IndexAction) RunGet(params struct {
return return
} }
// 常用的节点
latestClusterMaps := []maps.Map{}
if !isSearching {
clustersResp, err := this.RPC().NodeClusterRPC().FindLatestNodeClusters(this.AdminContext(), &pb.FindLatestNodeClustersRequest{Size: 4})
if err != nil {
this.ErrorPage(err)
return
}
for _, cluster := range clustersResp.NodeClusters {
latestClusterMaps = append(latestClusterMaps, maps.Map{
"id": cluster.Id,
"name": cluster.Name,
})
}
}
this.Data["latestClusters"] = latestClusterMaps
// 搜索集群 // 搜索集群
countResp, err := this.RPC().NodeClusterRPC().CountAllEnabledNodeClusters(this.AdminContext(), &pb.CountAllEnabledNodeClustersRequest{ countResp, err := this.RPC().NodeClusterRPC().CountAllEnabledNodeClusters(this.AdminContext(), &pb.CountAllEnabledNodeClustersRequest{
Keyword: params.Keyword, Keyword: params.Keyword,

View File

@@ -11,8 +11,14 @@
<div class="ui field"> <div class="ui field">
<button class="ui button" type="submit">搜索</button> <button class="ui button" type="submit">搜索</button>
</div> </div>
<div class="ui field" v-if="latestClusters.length > 0">
<a href="" @click.prevent="showLatest()">常用<i class="icon angle" :class="{down: !latestVisible, up: latestVisible}"></i> </a>
</div>
</div> </div>
</form> </form>
<div class="ui segment" v-if="latestVisible">
常用集群:<span v-for="cluster in latestClusters"><a :href="'/clusters/cluster?clusterId=' + cluster.id">{{cluster.name}}</a> &nbsp; </span>
</div>
<div class="ui tabular menu" v-if="isSearching"> <div class="ui tabular menu" v-if="isSearching">
<a :href="'/clusters?searchType=cluster&keyword=' + keyword" class="item" :class="{active: searchType == '' || searchType == 'cluster'}">集群({{countClusters}})</a> <a :href="'/clusters?searchType=cluster&keyword=' + keyword" class="item" :class="{active: searchType == '' || searchType == 'cluster'}">集群({{countClusters}})</a>

View File

@@ -0,0 +1,7 @@
Tea.context(function () {
this.latestVisible = false
this.showLatest = function () {
this.latestVisible = !this.latestVisible
}
})