mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2025-11-25 19:20:30 +08:00
记录和显示最近常用的集群
This commit is contained in:
@@ -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()
|
||||||
|
|||||||
@@ -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()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
// 设置菜单
|
// 设置菜单
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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> </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>
|
||||||
|
|||||||
7
web/views/@default/clusters/index.js
Normal file
7
web/views/@default/clusters/index.js
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
Tea.context(function () {
|
||||||
|
this.latestVisible = false
|
||||||
|
|
||||||
|
this.showLatest = function () {
|
||||||
|
this.latestVisible = !this.latestVisible
|
||||||
|
}
|
||||||
|
})
|
||||||
Reference in New Issue
Block a user