mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2025-11-03 20:40:26 +08:00
集群设置左侧菜单显示TOA设置状态
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
||||
"github.com/TeaOSLab/EdgeAdmin/internal/rpc"
|
||||
"github.com/TeaOSLab/EdgeAdmin/internal/utils/numberutils"
|
||||
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
||||
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
|
||||
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/dao"
|
||||
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
|
||||
@@ -148,11 +149,15 @@ func (this *ClusterHelper) createSettingMenu(cluster *pb.NodeCluster, selectedIt
|
||||
"url": "/clusters/cluster/settings/services?clusterId=" + clusterId,
|
||||
"isActive": selectedItem == "service",
|
||||
})
|
||||
items = append(items, maps.Map{
|
||||
"name": "TOA设置",
|
||||
"url": "/clusters/cluster/settings/toa?clusterId=" + clusterId,
|
||||
"isActive": selectedItem == "toa",
|
||||
})
|
||||
{
|
||||
isChecked, _ := this.checkTOA(cluster.Id)
|
||||
items = append(items, maps.Map{
|
||||
"name": "TOA设置",
|
||||
"url": "/clusters/cluster/settings/toa?clusterId=" + clusterId,
|
||||
"isActive": selectedItem == "toa",
|
||||
"isOn": isChecked,
|
||||
})
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
@@ -220,3 +225,24 @@ func (this *ClusterHelper) checkMessages(clusterId int64) (bool, error) {
|
||||
}
|
||||
return resp.Count > 0, nil
|
||||
}
|
||||
|
||||
// 检查TOA是否设置
|
||||
func (this *ClusterHelper) checkTOA(clusterId int64) (bool, error) {
|
||||
rpcClient, err := rpc.SharedRPC()
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
resp, err := rpcClient.NodeClusterRPC().FindEnabledNodeClusterTOA(rpcClient.Context(0), &pb.FindEnabledNodeClusterTOARequest{NodeClusterId: clusterId})
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
if len(resp.ToaJSON) == 0 {
|
||||
return false, nil
|
||||
}
|
||||
var toaConfig = &nodeconfigs.TOAConfig{}
|
||||
err = json.Unmarshal(resp.ToaJSON, toaConfig)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
return toaConfig.IsOn, nil
|
||||
}
|
||||
|
||||
17
internal/web/actions/default/servers/metrics/update.go
Normal file
17
internal/web/actions/default/servers/metrics/update.go
Normal file
@@ -0,0 +1,17 @@
|
||||
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
|
||||
|
||||
package metrics
|
||||
|
||||
import "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
||||
|
||||
type UpdateAction struct {
|
||||
actionutils.ParentAction
|
||||
}
|
||||
|
||||
func (this *UpdateAction) Init() {
|
||||
this.Nav("", "", "")
|
||||
}
|
||||
|
||||
func (this *UpdateAction) RunGet(params struct{}) {
|
||||
this.Show()
|
||||
}
|
||||
36
web/public/js/components/server/metric-keys-config-box.js
Normal file
36
web/public/js/components/server/metric-keys-config-box.js
Normal file
@@ -0,0 +1,36 @@
|
||||
// 指标对象
|
||||
Vue.component("metric-keys-config-box", {
|
||||
props: ["v-keys"],
|
||||
data: function () {
|
||||
let keys = this.vKeys
|
||||
if (keys == null) {
|
||||
keys = []
|
||||
}
|
||||
return {
|
||||
keys: keys,
|
||||
isAdding: false
|
||||
}
|
||||
},
|
||||
methods: {},
|
||||
template: `<div>
|
||||
<div>
|
||||
<div v-for="key in keys">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="ui fields inline">
|
||||
<div class="ui field">
|
||||
<input type="text" placeholder=""/>
|
||||
</div>
|
||||
<div class="ui field">
|
||||
<button type="button" class="ui button tiny">确定</button>
|
||||
<a href="" @click.prevent="cancel"><i class="icon remove small"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<button type="button" class="ui button tiny">+</button>
|
||||
</div>
|
||||
</div>`
|
||||
})
|
||||
47
web/public/js/components/server/metric-period-config-box.js
Normal file
47
web/public/js/components/server/metric-period-config-box.js
Normal file
@@ -0,0 +1,47 @@
|
||||
// 指标周期设置
|
||||
Vue.component("metric-period-config-box", {
|
||||
props: ["v-period", "v-period-unit"],
|
||||
data: function () {
|
||||
let period = this.vPeriod
|
||||
let periodUnit = this.vPeriodUnit
|
||||
if (period == null || period.toString().length == 0) {
|
||||
period = 1
|
||||
}
|
||||
if (periodUnit == null || periodUnit.length == 0) {
|
||||
periodUnit = "day"
|
||||
}
|
||||
return {
|
||||
periodConfig: {
|
||||
period: period,
|
||||
unit: periodUnit
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
"periodConfig.period": function (v) {
|
||||
v = parseInt(v)
|
||||
if (isNaN(v) || v <= 0) {
|
||||
v = 1
|
||||
}
|
||||
this.periodConfig.period = v
|
||||
}
|
||||
},
|
||||
template: `<div>
|
||||
<input type="hidden" name="periodJSON" :value="JSON.stringify(periodConfig)"/>
|
||||
<div class="ui fields inline">
|
||||
<div class="ui field">
|
||||
<input type="text" v-model="periodConfig.period" maxlength="4" size="4"/>
|
||||
</div>
|
||||
<div class="ui field">
|
||||
<select class="ui dropdown" v-model="periodConfig.unit">
|
||||
<option value="minute">分钟</option>
|
||||
<option value="hour">小时</option>
|
||||
<option value="day">天</option>
|
||||
<option value="week">周</option>
|
||||
<option value="month">月</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<p class="comment">在此周期内同一对象累积为同一数据。</p>
|
||||
</div>`
|
||||
})
|
||||
Reference in New Issue
Block a user