This is an automated email from the ASF dual-hosted git repository.
gaoxingcun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hertzbeat.git
The following commit(s) were added to refs/heads/master by this push:
new ca93a658c [improve] Implement cascading parameter list for SNMP
protocol (#1976)
ca93a658c is described below
commit ca93a658cb953024124ed1088ae20122ec30ad09
Author: Zhang Yuxuan <[email protected]>
AuthorDate: Mon May 13 15:30:26 2024 +0800
[improve] Implement cascading parameter list for SNMP protocol (#1976)
---
.../common/entity/manager/ParamDefine.java | 7 +
.../src/main/resources/define/app-cisco_switch.yml | 20 +-
.../src/main/resources/define/app-h3c_switch.yml | 20 +-
.../src/main/resources/define/app-hpe_switch.yml | 20 +-
.../main/resources/define/app-huawei_switch.yml | 20 +-
.../main/resources/define/app-tplink_switch.yml | 20 +-
manager/src/main/resources/define/app-windows.yml | 8 +-
web-app/src/app/pojo/Param.ts | 2 +
web-app/src/app/pojo/ParamDefine.ts | 2 +
.../monitor-edit/monitor-edit.component.html | 251 +++++++++++----------
.../monitor/monitor-edit/monitor-edit.component.ts | 16 ++
.../monitor/monitor-new/monitor-new.component.html | 249 ++++++++++----------
.../monitor/monitor-new/monitor-new.component.ts | 17 ++
13 files changed, 387 insertions(+), 265 deletions(-)
diff --git
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/ParamDefine.java
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/ParamDefine.java
index 38f549f44..928ad2266 100644
---
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/ParamDefine.java
+++
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/ParamDefine.java
@@ -186,6 +186,13 @@ public class ParamDefine {
@LastModifiedDate
private LocalDateTime gmtUpdate;
+ /**
+ * Depends on which parameters
+ */
+ @Schema(title = "Depends on which parameters", example = "{0, 1}",
accessMode = READ_WRITE)
+ @Convert(converter = JsonStringListAttributeConverter.class)
+ private List<Object> parent;
+
/**
* Parameter option configuration
*/
diff --git a/manager/src/main/resources/define/app-cisco_switch.yml
b/manager/src/main/resources/define/app-cisco_switch.yml
index 9d3cc72ab..04dd6cc41 100644
--- a/manager/src/main/resources/define/app-cisco_switch.yml
+++ b/manager/src/main/resources/define/app-cisco_switch.yml
@@ -56,7 +56,7 @@ params:
# default value
defaultValue: 161
# field-param field key
- - field: version
+ - field: snmpVersion
# name-param field display i18n name
name:
zh-CN: SNMP 版本
@@ -87,6 +87,8 @@ params:
required: false
# param field input placeholder
placeholder: 'Snmp community for v1 v2c'
+ # dependent parameter values list
+ parent: [ 0,1 ]
# field-param field key
- field: username
# name-param field display i18n name
@@ -101,6 +103,8 @@ params:
required: false
# param field input placeholder
placeholder: 'Snmp username for v3'
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: contextName
# name-param field display i18n name
@@ -115,6 +119,8 @@ params:
required: false
# param field input placeholder
placeholder: 'Snmp contextName for v3'
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: authPassphrase
# name-param field display i18n name
@@ -129,6 +135,8 @@ params:
required: false
# param field input placeholder
placeholder: 'Snmp authPassword for v3'
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: authPasswordEncryption
# name-param field display i18n name
@@ -145,6 +153,8 @@ params:
value: 0
- label: SHA1
value: 1
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: privPassphrase
# name-param field display i18n name
@@ -159,6 +169,8 @@ params:
required: false
# param field input placeholder
placeholder: 'Snmp authPassword for v3'
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: privPasswordEncryption
# name-param field display i18n name
@@ -175,6 +187,8 @@ params:
value: 0
- label: AES128
value: 1
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: timeout
# name-param field display i18n name
@@ -261,7 +275,7 @@ metrics:
# snmp community
community: ^_^community^_^
# snmp version
- version: ^_^version^_^
+ version: ^_^snmpVersion^_^
# snmp operation: get, walk
operation: get
# metrics oids: metric_name - oid_value
@@ -389,7 +403,7 @@ metrics:
contextName: ^_^contextName^_^
timeout: ^_^timeout^_^
community: ^_^community^_^
- version: ^_^version^_^
+ version: ^_^snmpVersion^_^
operation: walk
oids:
ifIndex: 1.3.6.1.2.1.2.2.1.1
diff --git a/manager/src/main/resources/define/app-h3c_switch.yml
b/manager/src/main/resources/define/app-h3c_switch.yml
index ed21729c0..cc4d852f4 100644
--- a/manager/src/main/resources/define/app-h3c_switch.yml
+++ b/manager/src/main/resources/define/app-h3c_switch.yml
@@ -56,7 +56,7 @@ params:
# default value
defaultValue: 161
# field-param field key
- - field: version
+ - field: snmpVersion
# name-param field display i18n name
name:
zh-CN: SNMP 版本
@@ -87,6 +87,8 @@ params:
required: false
# param field input placeholder
placeholder: 'Snmp community for v1 v2c'
+ # dependent parameter values list
+ parent: [ 0,1 ]
# field-param field key
- field: username
# name-param field display i18n name
@@ -101,6 +103,8 @@ params:
required: false
# param field input placeholder
placeholder: 'Snmp username for v3'
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: contextName
# name-param field display i18n name
@@ -115,6 +119,8 @@ params:
required: false
# param field input placeholder
placeholder: 'Snmp contextName for v3'
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: authPassphrase
# name-param field display i18n name
@@ -129,6 +135,8 @@ params:
required: false
# param field input placeholder
placeholder: 'Snmp authPassword for v3'
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: authPasswordEncryption
# name-param field display i18n name
@@ -145,6 +153,8 @@ params:
value: 0
- label: SHA1
value: 1
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: privPassphrase
# name-param field display i18n name
@@ -159,6 +169,8 @@ params:
required: false
# param field input placeholder
placeholder: 'Snmp authPassword for v3'
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: privPasswordEncryption
# name-param field display i18n name
@@ -175,6 +187,8 @@ params:
value: 0
- label: AES128
value: 1
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: timeout
# name-param field display i18n name
@@ -261,7 +275,7 @@ metrics:
# snmp 团体字
community: ^_^community^_^
# snmp version
- version: ^_^version^_^
+ version: ^_^snmpVersion^_^
# snmp operation: get, walk
operation: get
# metrics oids: metric_name - oid_value
@@ -388,7 +402,7 @@ metrics:
contextName: ^_^contextName^_^
timeout: ^_^timeout^_^
community: ^_^community^_^
- version: ^_^version^_^
+ version: ^_^snmpVersion^_^
operation: walk
oids:
ifIndex: 1.3.6.1.2.1.2.2.1.1
diff --git a/manager/src/main/resources/define/app-hpe_switch.yml
b/manager/src/main/resources/define/app-hpe_switch.yml
index ccf7b67e3..19bd6a04a 100644
--- a/manager/src/main/resources/define/app-hpe_switch.yml
+++ b/manager/src/main/resources/define/app-hpe_switch.yml
@@ -56,7 +56,7 @@ params:
# default value
defaultValue: 161
# field-param field key
- - field: version
+ - field: snmpVersion
# name-param field display i18n name
name:
zh-CN: SNMP 版本
@@ -87,6 +87,8 @@ params:
required: false
# param field input placeholder
placeholder: 'Snmp community for v1 v2c'
+ # dependent parameter values list
+ parent: [ 0,1 ]
# field-param field key
- field: username
# name-param field display i18n name
@@ -101,6 +103,8 @@ params:
required: false
# param field input placeholder
placeholder: 'Snmp username for v3'
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: contextName
# name-param field display i18n name
@@ -115,6 +119,8 @@ params:
required: false
# param field input placeholder
placeholder: 'Snmp contextName for v3'
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: authPassphrase
# name-param field display i18n name
@@ -129,6 +135,8 @@ params:
required: false
# param field input placeholder
placeholder: 'Snmp authPassword for v3'
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: authPasswordEncryption
# name-param field display i18n name
@@ -145,6 +153,8 @@ params:
value: 0
- label: SHA1
value: 1
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: privPassphrase
# name-param field display i18n name
@@ -159,6 +169,8 @@ params:
required: false
# param field input placeholder
placeholder: 'Snmp authPassword for v3'
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: privPasswordEncryption
# name-param field display i18n name
@@ -175,6 +187,8 @@ params:
value: 0
- label: AES128
value: 1
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: timeout
# name-param field display i18n name
@@ -261,7 +275,7 @@ metrics:
# snmp 团体字
community: ^_^community^_^
# snmp version
- version: ^_^version^_^
+ version: ^_^snmpVersion^_^
# snmp operation: get, walk
operation: get
# metrics oids: metric_name - oid_value
@@ -389,7 +403,7 @@ metrics:
contextName: ^_^contextName^_^
timeout: ^_^timeout^_^
community: ^_^community^_^
- version: ^_^version^_^
+ version: ^_^snmpVersion^_^
operation: walk
oids:
ifIndex: 1.3.6.1.2.1.2.2.1.1
diff --git a/manager/src/main/resources/define/app-huawei_switch.yml
b/manager/src/main/resources/define/app-huawei_switch.yml
index f20f52163..812a89562 100644
--- a/manager/src/main/resources/define/app-huawei_switch.yml
+++ b/manager/src/main/resources/define/app-huawei_switch.yml
@@ -56,7 +56,7 @@ params:
# default value
defaultValue: 161
# field-param field key
- - field: version
+ - field: snmpVersion
# name-param field display i18n name
name:
zh-CN: SNMP 版本
@@ -87,6 +87,8 @@ params:
required: false
# param field input placeholder
placeholder: 'Snmp community for v1 v2c'
+ # dependent parameter values list
+ parent: [ 0,1 ]
# field-param field key
- field: username
# name-param field display i18n name
@@ -101,6 +103,8 @@ params:
required: false
# param field input placeholder
placeholder: 'Snmp username for v3'
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: contextName
# name-param field display i18n name
@@ -115,6 +119,8 @@ params:
required: false
# param field input placeholder
placeholder: 'Snmp contextName for v3'
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: authPassphrase
# name-param field display i18n name
@@ -129,6 +135,8 @@ params:
required: false
# param field input placeholder
placeholder: 'Snmp authPassword for v3'
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: authPasswordEncryption
# name-param field display i18n name
@@ -145,6 +153,8 @@ params:
value: 0
- label: SHA1
value: 1
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: privPassphrase
# name-param field display i18n name
@@ -159,6 +169,8 @@ params:
required: false
# param field input placeholder
placeholder: 'Snmp authPassword for v3'
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: privPasswordEncryption
# name-param field display i18n name
@@ -175,6 +187,8 @@ params:
value: 0
- label: AES128
value: 1
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: timeout
# name-param field display i18n name
@@ -260,7 +274,7 @@ metrics:
# snmp community
community: ^_^community^_^
# snmp version
- version: ^_^version^_^
+ version: ^_^snmpVersion^_^
# snmp operation: get, walk
operation: get
# metrics oids: metric_name - oid_value
@@ -387,7 +401,7 @@ metrics:
contextName: ^_^contextName^_^
timeout: ^_^timeout^_^
community: ^_^community^_^
- version: ^_^version^_^
+ version: ^_^snmpVersion^_^
operation: walk
oids:
ifIndex: 1.3.6.1.2.1.2.2.1.1
diff --git a/manager/src/main/resources/define/app-tplink_switch.yml
b/manager/src/main/resources/define/app-tplink_switch.yml
index 797a39411..1b16d153a 100644
--- a/manager/src/main/resources/define/app-tplink_switch.yml
+++ b/manager/src/main/resources/define/app-tplink_switch.yml
@@ -56,7 +56,7 @@ params:
# default value
defaultValue: 161
# field-param field key
- - field: version
+ - field: snmpVersion
# name-param field display i18n name
name:
zh-CN: SNMP 版本
@@ -87,6 +87,8 @@ params:
required: false
# param field input placeholder
placeholder: 'Snmp community for v1 v2c'
+ # dependent parameter values list
+ parent: [ 0,1 ]
# field-param field key
- field: username
# name-param field display i18n name
@@ -101,6 +103,8 @@ params:
required: false
# param field input placeholder
placeholder: 'Snmp username for v3'
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: contextName
# name-param field display i18n name
@@ -115,6 +119,8 @@ params:
required: false
# param field input placeholder
placeholder: 'Snmp contextName for v3'
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: authPassphrase
# name-param field display i18n name
@@ -129,6 +135,8 @@ params:
required: false
# param field input placeholder
placeholder: 'Snmp authPassword for v3'
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: authPasswordEncryption
# name-param field display i18n name
@@ -145,6 +153,8 @@ params:
value: 0
- label: SHA1
value: 1
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: privPassphrase
# name-param field display i18n name
@@ -159,6 +169,8 @@ params:
required: false
# param field input placeholder
placeholder: 'Snmp authPassword for v3'
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: privPasswordEncryption
# name-param field display i18n name
@@ -175,6 +187,8 @@ params:
value: 0
- label: AES128
value: 1
+ # dependent parameter values list
+ parent: [ 3 ]
# field-param field key
- field: timeout
# name-param field display i18n name
@@ -260,7 +274,7 @@ metrics:
# snmp community
community: ^_^community^_^
# snmp version
- version: ^_^version^_^
+ version: ^_^snmpVersion^_^
# snmp operation: get, walk
operation: get
# metrics oids: metric_name - oid_value
@@ -387,7 +401,7 @@ metrics:
contextName: ^_^contextName^_^
timeout: ^_^timeout^_^
community: ^_^community^_^
- version: ^_^version^_^
+ version: ^_^snmpVersion^_^
operation: walk
oids:
ifIndex: 1.3.6.1.2.1.2.2.1.1
diff --git a/manager/src/main/resources/define/app-windows.yml
b/manager/src/main/resources/define/app-windows.yml
index 296e604b5..cfc86d199 100644
--- a/manager/src/main/resources/define/app-windows.yml
+++ b/manager/src/main/resources/define/app-windows.yml
@@ -56,7 +56,7 @@ params:
# default value
defaultValue: 161
# field-param field key
- - field: version
+ - field: snmpVersion
# name-param field display i18n name
name:
zh-CN: SNMP 版本
@@ -70,7 +70,7 @@ params:
- label: SNMPv1
value: 0
- label: SNMPv2c
- value: 1
+ value: 3
# field-param field key
- field: community
# name-param field display i18n name
@@ -85,6 +85,8 @@ params:
required: true
# param field input placeholder
placeholder: 'Snmp community for v1 v2c'
+ # dependent parameter values list
+ parent: [ 0,1 ]
# field-param field key
- field: timeout
# name-param field display i18n name
@@ -181,7 +183,7 @@ metrics:
port: ^_^port^_^
timeout: ^_^timeout^_^
community: ^_^community^_^
- version: ^_^version^_^
+ version: ^_^snmpVersion^_^
operation: walk
oids:
hrSWRunIndex: 1.3.6.1.2.1.25.4.2.1.1
diff --git a/web-app/src/app/pojo/Param.ts b/web-app/src/app/pojo/Param.ts
index 4b9a856f8..1914f3bc8 100644
--- a/web-app/src/app/pojo/Param.ts
+++ b/web-app/src/app/pojo/Param.ts
@@ -22,4 +22,6 @@ export class Param {
field!: string;
type: number | undefined;
paramValue: any;
+ // 是否显示
+ display: boolean = true;
}
diff --git a/web-app/src/app/pojo/ParamDefine.ts
b/web-app/src/app/pojo/ParamDefine.ts
index 4e14401cd..8940608a7 100644
--- a/web-app/src/app/pojo/ParamDefine.ts
+++ b/web-app/src/app/pojo/ParamDefine.ts
@@ -33,4 +33,6 @@ export class ParamDefine {
valueAlias!: string;
// 此参数是否隐藏 即默认不显示, 在高级设置区显示
hide: boolean = false;
+ // 依赖的上级参数列表
+ parent: string | undefined;
}
diff --git
a/web-app/src/app/routes/monitor/monitor-edit/monitor-edit.component.html
b/web-app/src/app/routes/monitor/monitor-edit/monitor-edit.component.html
index d2221e902..85e44bd6f 100644
--- a/web-app/src/app/routes/monitor/monitor-edit/monitor-edit.component.html
+++ b/web-app/src/app/routes/monitor/monitor-edit/monitor-edit.component.html
@@ -45,141 +45,144 @@
</nz-form-control>
</nz-form-item>
- <nz-form-item *ngFor="let paramDefine of paramDefines; let i = index">
- <nz-form-label
- *ngIf="paramDefine.field !== 'host' && (paramDefine.type === 'text'
|| paramDefine.type === 'array')"
- nzSpan="7"
- [nzRequired]="paramDefine.required"
- [nzFor]="paramDefine.field"
- >{{ paramDefine.name }}
- </nz-form-label>
- <nz-form-control
- *ngIf="paramDefine.field !== 'host' && (paramDefine.type === 'text'
|| paramDefine.type === 'array')"
- nzSpan="8"
- [nzErrorTip]="'validation.required' | i18n"
- >
- <input
- nz-input
- [(ngModel)]="params[i].paramValue"
- [required]="paramDefine.required"
- [name]="paramDefine.field"
- [type]="paramDefine.type"
- [id]="paramDefine.field"
- [placeholder]="paramDefine.placeholder ? paramDefine.placeholder :
''"
- />
- </nz-form-control>
-
- <nz-form-label *ngIf="paramDefine.type === 'textarea'" nzSpan="7"
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
- >{{ paramDefine.name }}
- </nz-form-label>
- <nz-form-control *ngIf="paramDefine.type === 'textarea'" nzSpan="8"
[nzErrorTip]="'validation.required' | i18n">
- <textarea
- nz-input
- [(ngModel)]="params[i].paramValue"
- [required]="paramDefine.required"
- [name]="paramDefine.field"
- [id]="paramDefine.field"
- [placeholder]="paramDefine.placeholder ? paramDefine.placeholder :
''"
- rows="8"
- ></textarea>
- </nz-form-control>
-
- <nz-form-label *ngIf="paramDefine.type === 'password'" nzSpan="7"
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
- >{{ paramDefine.name }}
- </nz-form-label>
- <nz-form-control *ngIf="paramDefine.type === 'password'" nzSpan="8"
[nzErrorTip]="'validation.required' | i18n">
- <nz-input-group [nzSuffix]="suffixTemplate" style="width: 100%">
+ <ng-container *ngFor="let paramDefine of paramDefines; let i = index">
+ <nz-form-item *ngIf="params[i].display">
+ <nz-form-label
+ *ngIf="paramDefine.field !== 'host' && (paramDefine.type ===
'text' || paramDefine.type === 'array')"
+ nzSpan="7"
+ [nzRequired]="paramDefine.required"
+ [nzFor]="paramDefine.field"
+ >{{ paramDefine.name }}
+ </nz-form-label>
+ <nz-form-control
+ *ngIf="paramDefine.field !== 'host' && (paramDefine.type ===
'text' || paramDefine.type === 'array')"
+ nzSpan="8"
+ [nzErrorTip]="'validation.required' | i18n"
+ >
<input
- [type]="passwordVisible ? 'text' : 'password'"
nz-input
- placeholder="input password"
- [required]="paramDefine.required"
[(ngModel)]="params[i].paramValue"
- [id]="paramDefine.field"
+ [required]="paramDefine.required"
[name]="paramDefine.field"
+ [type]="paramDefine.type"
+ [id]="paramDefine.field"
[placeholder]="paramDefine.placeholder ? paramDefine.placeholder
: ''"
/>
- </nz-input-group>
- <ng-template #suffixTemplate>
- <i nz-icon [nzType]="passwordVisible ? 'eye-invisible' : 'eye'"
(click)="passwordVisible = !passwordVisible"></i>
- </ng-template>
- </nz-form-control>
+ </nz-form-control>
- <nz-form-label *ngIf="paramDefine.type === 'number'" nzSpan="7"
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
- >{{ paramDefine.name }}
- </nz-form-label>
- <nz-form-control *ngIf="paramDefine.type === 'number'" nzSpan="8"
[nzErrorTip]="'validation.required' | i18n">
- <nz-input-number
- [(ngModel)]="params[i].paramValue"
- [required]="paramDefine.required"
- [nzMin]="-1000"
- [nzMax]="65535"
- [nzStep]="1"
- [nzPlaceHolder]="paramDefine.placeholder ? paramDefine.placeholder
: ''"
- [name]="paramDefine.field"
- [id]="paramDefine.field"
- ></nz-input-number>
- </nz-form-control>
+ <nz-form-label *ngIf="paramDefine.type === 'textarea'" nzSpan="7"
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+ >{{ paramDefine.name }}
+ </nz-form-label>
+ <nz-form-control *ngIf="paramDefine.type === 'textarea'" nzSpan="8"
[nzErrorTip]="'validation.required' | i18n">
+ <textarea
+ nz-input
+ [(ngModel)]="params[i].paramValue"
+ [required]="paramDefine.required"
+ [name]="paramDefine.field"
+ [id]="paramDefine.field"
+ [placeholder]="paramDefine.placeholder ? paramDefine.placeholder
: ''"
+ rows="8"
+ ></textarea>
+ </nz-form-control>
- <nz-form-label *ngIf="paramDefine.type === 'boolean'" nzSpan="7"
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
- >{{ paramDefine.name }}
- </nz-form-label>
- <nz-form-control *ngIf="paramDefine.type === 'boolean'" nzSpan="8"
[nzErrorTip]="'validation.required' | i18n">
- <nz-switch
- [(ngModel)]="params[i].paramValue"
- (ngModelChange)="onParamBooleanChanged($event, paramDefine.field)"
- [required]="paramDefine.required"
- [name]="paramDefine.field"
- [id]="paramDefine.field"
- ></nz-switch>
- </nz-form-control>
+ <nz-form-label *ngIf="paramDefine.type === 'password'" nzSpan="7"
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+ >{{ paramDefine.name }}
+ </nz-form-label>
+ <nz-form-control *ngIf="paramDefine.type === 'password'" nzSpan="8"
[nzErrorTip]="'validation.required' | i18n">
+ <nz-input-group [nzSuffix]="suffixTemplate" style="width: 100%">
+ <input
+ [type]="passwordVisible ? 'text' : 'password'"
+ nz-input
+ placeholder="input password"
+ [required]="paramDefine.required"
+ [(ngModel)]="params[i].paramValue"
+ [id]="paramDefine.field"
+ [name]="paramDefine.field"
+ [placeholder]="paramDefine.placeholder ?
paramDefine.placeholder : ''"
+ />
+ </nz-input-group>
+ <ng-template #suffixTemplate>
+ <i nz-icon [nzType]="passwordVisible ? 'eye-invisible' : 'eye'"
(click)="passwordVisible = !passwordVisible"></i>
+ </ng-template>
+ </nz-form-control>
- <nz-form-label *ngIf="paramDefine.type === 'radio'" nzSpan="7"
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
- >{{ paramDefine.name }}
- </nz-form-label>
- <nz-form-control *ngIf="paramDefine.type === 'radio'" nzSpan="8"
[nzErrorTip]="'validation.required' | i18n">
- <nz-radio-group
- [(ngModel)]="params[i].paramValue"
- [required]="paramDefine.required"
- nzButtonStyle="solid"
- [name]="paramDefine.field"
- [id]="paramDefine.field"
- >
- <label nz-radio-button [nzValue]="optionItem.value" *ngFor="let
optionItem of paramDefine.options">
- {{ optionItem.label }}
- </label>
- </nz-radio-group>
- </nz-form-control>
+ <nz-form-label *ngIf="paramDefine.type === 'number'" nzSpan="7"
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+ >{{ paramDefine.name }}
+ </nz-form-label>
+ <nz-form-control *ngIf="paramDefine.type === 'number'" nzSpan="8"
[nzErrorTip]="'validation.required' | i18n">
+ <nz-input-number
+ [(ngModel)]="params[i].paramValue"
+ [required]="paramDefine.required"
+ [nzMin]="-1000"
+ [nzMax]="65535"
+ [nzStep]="1"
+ [nzPlaceHolder]="paramDefine.placeholder ?
paramDefine.placeholder : ''"
+ [name]="paramDefine.field"
+ [id]="paramDefine.field"
+ ></nz-input-number>
+ </nz-form-control>
- <nz-form-label *ngIf="paramDefine.type === 'key-value'" nzSpan="7"
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
- >{{ paramDefine.name }}
- </nz-form-label>
- <nz-form-control *ngIf="paramDefine.type === 'key-value'" nzSpan="8"
[nzErrorTip]="'validation.required' | i18n">
- <app-key-value-input
- [(value)]="params[i].paramValue"
- [id]="paramDefine.field"
- keyAlias="Header Name"
- valueAlias="Header Value"
- ></app-key-value-input>
- </nz-form-control>
+ <nz-form-label *ngIf="paramDefine.type === 'boolean'" nzSpan="7"
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+ >{{ paramDefine.name }}
+ </nz-form-label>
+ <nz-form-control *ngIf="paramDefine.type === 'boolean'" nzSpan="8"
[nzErrorTip]="'validation.required' | i18n">
+ <nz-switch
+ [(ngModel)]="params[i].paramValue"
+ (ngModelChange)="onParamBooleanChanged($event,
paramDefine.field)"
+ [required]="paramDefine.required"
+ [name]="paramDefine.field"
+ [id]="paramDefine.field"
+ ></nz-switch>
+ </nz-form-control>
- <nz-form-label
- *ngIf="paramDefine.type === 'metrics-field'"
- nzSpan="7"
- [nzRequired]="paramDefine.required"
- [nzFor]="paramDefine.field"
- >{{ paramDefine.name }}
- </nz-form-label>
- <nz-form-control *ngIf="paramDefine.type === 'metrics-field'"
nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
- <app-metrics-field-input
- [(value)]="params[i].paramValue"
- [id]="paramDefine.field"
- [FieldAlias]="'Field'"
- [UnitAlias]="'Unit'"
- [TypeAlias]="'Type'"
- ></app-metrics-field-input>
- </nz-form-control>
- </nz-form-item>
+ <nz-form-label *ngIf="paramDefine.type === 'radio'" nzSpan="7"
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+ >{{ paramDefine.name }}
+ </nz-form-label>
+ <nz-form-control *ngIf="paramDefine.type === 'radio'" nzSpan="8"
[nzErrorTip]="'validation.required' | i18n">
+ <nz-radio-group
+ [(ngModel)]="params[i].paramValue"
+ [required]="paramDefine.required"
+ nzButtonStyle="solid"
+ (ngModelChange)="onSnmpVersionChanged($event, paramDefine.field)"
+ [name]="paramDefine.field"
+ [id]="paramDefine.field"
+ >
+ <label nz-radio-button [nzValue]="optionItem.value" *ngFor="let
optionItem of paramDefine.options">
+ {{ optionItem.label }}
+ </label>
+ </nz-radio-group>
+ </nz-form-control>
+
+ <nz-form-label *ngIf="paramDefine.type === 'key-value'" nzSpan="7"
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+ >{{ paramDefine.name }}
+ </nz-form-label>
+ <nz-form-control *ngIf="paramDefine.type === 'key-value'" nzSpan="8"
[nzErrorTip]="'validation.required' | i18n">
+ <app-key-value-input
+ [(value)]="params[i].paramValue"
+ [id]="paramDefine.field"
+ keyAlias="Header Name"
+ valueAlias="Header Value"
+ ></app-key-value-input>
+ </nz-form-control>
+
+ <nz-form-label
+ *ngIf="paramDefine.type === 'metrics-field'"
+ nzSpan="7"
+ [nzRequired]="paramDefine.required"
+ [nzFor]="paramDefine.field"
+ >{{ paramDefine.name }}
+ </nz-form-label>
+ <nz-form-control *ngIf="paramDefine.type === 'metrics-field'"
nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
+ <app-metrics-field-input
+ [(value)]="params[i].paramValue"
+ [id]="paramDefine.field"
+ [FieldAlias]="'Field'"
+ [UnitAlias]="'Unit'"
+ [TypeAlias]="'Type'"
+ ></app-metrics-field-input>
+ </nz-form-control>
+ </nz-form-item>
+ </ng-container>
<nz-collapse [nzGhost]="true" style="margin-bottom: 16px">
<nz-collapse-panel [nzHeader]="extraColHeader" [nzShowArrow]="false">
diff --git
a/web-app/src/app/routes/monitor/monitor-edit/monitor-edit.component.ts
b/web-app/src/app/routes/monitor/monitor-edit/monitor-edit.component.ts
index abc1ba48d..d13a1c967 100644
--- a/web-app/src/app/routes/monitor/monitor-edit/monitor-edit.component.ts
+++ b/web-app/src/app/routes/monitor/monitor-edit/monitor-edit.component.ts
@@ -164,6 +164,10 @@ export class MonitorEditComponent implements OnInit {
this.hostName = define.name;
}
});
+ let paramDefine = this.paramDefines.find(param => param.field ===
'snmpVersion');
+ if (paramDefine) {
+
this.onSnmpVersionChanged(this.paramValueMap.get(paramDefine.field)?.paramValue,
paramDefine.field);
+ }
} else {
console.warn(message.msg);
}
@@ -201,6 +205,18 @@ export class MonitorEditComponent implements OnInit {
}
}
+ onSnmpVersionChanged(snmpVersion: string, field: string) {
+ // 对不同snmp版本需要的参数进行动态展示
+ if (field === 'snmpVersion') {
+ this.paramDefines.forEach((paramDefine, index) => {
+ this.params[index].display = true;
+ if (paramDefine.parent != null &&
!paramDefine.parent.toString().includes(snmpVersion)) {
+ this.params[index].display = false;
+ }
+ });
+ }
+ }
+
onSubmit(formGroup: FormGroup) {
if (formGroup.invalid) {
Object.values(formGroup.controls).forEach(control => {
diff --git
a/web-app/src/app/routes/monitor/monitor-new/monitor-new.component.html
b/web-app/src/app/routes/monitor/monitor-new/monitor-new.component.html
index ec3493774..0a0398b1d 100644
--- a/web-app/src/app/routes/monitor/monitor-new/monitor-new.component.html
+++ b/web-app/src/app/routes/monitor/monitor-new/monitor-new.component.html
@@ -54,141 +54,144 @@
</nz-form-control>
</nz-form-item>
- <nz-form-item *ngFor="let paramDefine of paramDefines; let i = index">
- <nz-form-label
- *ngIf="paramDefine.field !== 'host' && (paramDefine.type === 'text'
|| paramDefine.type === 'array')"
- nzSpan="7"
- [nzRequired]="paramDefine.required"
- [nzFor]="paramDefine.field"
- >{{ paramDefine.name }}
- </nz-form-label>
- <nz-form-control
- *ngIf="paramDefine.field !== 'host' && (paramDefine.type === 'text'
|| paramDefine.type === 'array')"
- nzSpan="8"
- [nzErrorTip]="'validation.required' | i18n"
- >
- <input
- nz-input
- [required]="paramDefine.required"
- [(ngModel)]="params[i].paramValue"
- [name]="paramDefine.field"
- [type]="paramDefine.type"
- [id]="paramDefine.field"
- [placeholder]="paramDefine.placeholder ? paramDefine.placeholder :
''"
- />
- </nz-form-control>
-
- <nz-form-label *ngIf="paramDefine.type === 'textarea'" nzSpan="7"
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
- >{{ paramDefine.name }}
- </nz-form-label>
- <nz-form-control *ngIf="paramDefine.type === 'textarea'" nzSpan="8"
[nzErrorTip]="'validation.required' | i18n">
- <textarea
- nz-input
- [(ngModel)]="params[i].paramValue"
- [required]="paramDefine.required"
- [name]="paramDefine.field"
- [id]="paramDefine.field"
- [placeholder]="paramDefine.placeholder ? paramDefine.placeholder :
''"
- rows="8"
- ></textarea>
- </nz-form-control>
-
- <nz-form-label *ngIf="paramDefine.type === 'password'" nzSpan="7"
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
- >{{ paramDefine.name }}
- </nz-form-label>
- <nz-form-control *ngIf="paramDefine.type === 'password'" nzSpan="8"
[nzErrorTip]="'validation.required' | i18n">
- <nz-input-group [nzSuffix]="suffixTemplate" style="width: 100%">
+ <ng-container *ngFor="let paramDefine of paramDefines; let i = index">
+ <nz-form-item *ngIf="params[i].display">
+ <nz-form-label
+ *ngIf="paramDefine.field !== 'host' && (paramDefine.type ===
'text' || paramDefine.type === 'array')"
+ nzSpan="7"
+ [nzRequired]="paramDefine.required"
+ [nzFor]="paramDefine.field"
+ >{{ paramDefine.name }}
+ </nz-form-label>
+ <nz-form-control
+ *ngIf="paramDefine.field !== 'host' && (paramDefine.type ===
'text' || paramDefine.type === 'array')"
+ nzSpan="8"
+ [nzErrorTip]="'validation.required' | i18n"
+ >
<input
- [type]="passwordVisible ? 'text' : 'password'"
nz-input
[required]="paramDefine.required"
- placeholder="input password"
[(ngModel)]="params[i].paramValue"
- [id]="paramDefine.field"
[name]="paramDefine.field"
+ [type]="paramDefine.type"
+ [id]="paramDefine.field"
[placeholder]="paramDefine.placeholder ? paramDefine.placeholder
: ''"
/>
- </nz-input-group>
- <ng-template #suffixTemplate>
- <i nz-icon [nzType]="passwordVisible ? 'eye-invisible' : 'eye'"
(click)="passwordVisible = !passwordVisible"></i>
- </ng-template>
- </nz-form-control>
+ </nz-form-control>
- <nz-form-label *ngIf="paramDefine.type === 'number'" nzSpan="7"
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
- >{{ paramDefine.name }}
- </nz-form-label>
- <nz-form-control *ngIf="paramDefine.type === 'number'" nzSpan="8"
[nzErrorTip]="'validation.required' | i18n">
- <nz-input-number
- [(ngModel)]="params[i].paramValue"
- [required]="paramDefine.required"
- [nzMin]="getNumber(paramDefine.range || '', 0) || -1000"
- [nzMax]="getNumber(paramDefine.range || '', 1) || 65535"
- [nzStep]="1"
- [nzPlaceHolder]="paramDefine.placeholder ? paramDefine.placeholder
: ''"
- [name]="paramDefine.field"
- [id]="paramDefine.field"
- ></nz-input-number>
- </nz-form-control>
+ <nz-form-label *ngIf="paramDefine.type === 'textarea'" nzSpan="7"
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+ >{{ paramDefine.name }}
+ </nz-form-label>
+ <nz-form-control *ngIf="paramDefine.type === 'textarea'" nzSpan="8"
[nzErrorTip]="'validation.required' | i18n">
+ <textarea
+ nz-input
+ [(ngModel)]="params[i].paramValue"
+ [required]="paramDefine.required"
+ [name]="paramDefine.field"
+ [id]="paramDefine.field"
+ [placeholder]="paramDefine.placeholder ? paramDefine.placeholder
: ''"
+ rows="8"
+ ></textarea>
+ </nz-form-control>
- <nz-form-label *ngIf="paramDefine.type === 'boolean'" nzSpan="7"
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
- >{{ paramDefine.name }}
- </nz-form-label>
- <nz-form-control *ngIf="paramDefine.type === 'boolean'" nzSpan="8"
[nzErrorTip]="'validation.required' | i18n">
- <nz-switch
- [(ngModel)]="params[i].paramValue"
- (ngModelChange)="onParamBooleanChanged($event, paramDefine.field)"
- [required]="paramDefine.required"
- [name]="paramDefine.field"
- [id]="paramDefine.field"
- ></nz-switch>
- </nz-form-control>
+ <nz-form-label *ngIf="paramDefine.type === 'password'" nzSpan="7"
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+ >{{ paramDefine.name }}
+ </nz-form-label>
+ <nz-form-control *ngIf="paramDefine.type === 'password'" nzSpan="8"
[nzErrorTip]="'validation.required' | i18n">
+ <nz-input-group [nzSuffix]="suffixTemplate" style="width: 100%">
+ <input
+ [type]="passwordVisible ? 'text' : 'password'"
+ nz-input
+ [required]="paramDefine.required"
+ placeholder="input password"
+ [(ngModel)]="params[i].paramValue"
+ [id]="paramDefine.field"
+ [name]="paramDefine.field"
+ [placeholder]="paramDefine.placeholder ?
paramDefine.placeholder : ''"
+ />
+ </nz-input-group>
+ <ng-template #suffixTemplate>
+ <i nz-icon [nzType]="passwordVisible ? 'eye-invisible' : 'eye'"
(click)="passwordVisible = !passwordVisible"></i>
+ </ng-template>
+ </nz-form-control>
- <nz-form-label *ngIf="paramDefine.type === 'radio'" nzSpan="7"
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
- >{{ paramDefine.name }}
- </nz-form-label>
- <nz-form-control *ngIf="paramDefine.type === 'radio'" nzSpan="8"
[nzErrorTip]="'validation.required' | i18n">
- <nz-radio-group
- [(ngModel)]="params[i].paramValue"
- nzButtonStyle="solid"
- [required]="paramDefine.required"
- [name]="paramDefine.field"
- [id]="paramDefine.field"
- >
- <label nz-radio-button [nzValue]="optionItem.value" *ngFor="let
optionItem of paramDefine.options">
- {{ optionItem.label }}
- </label>
- </nz-radio-group>
- </nz-form-control>
+ <nz-form-label *ngIf="paramDefine.type === 'number'" nzSpan="7"
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+ >{{ paramDefine.name }}
+ </nz-form-label>
+ <nz-form-control *ngIf="paramDefine.type === 'number'" nzSpan="8"
[nzErrorTip]="'validation.required' | i18n">
+ <nz-input-number
+ [(ngModel)]="params[i].paramValue"
+ [required]="paramDefine.required"
+ [nzMin]="getNumber(paramDefine.range || '', 0) || -1000"
+ [nzMax]="getNumber(paramDefine.range || '', 1) || 65535"
+ [nzStep]="1"
+ [nzPlaceHolder]="paramDefine.placeholder ?
paramDefine.placeholder : ''"
+ [name]="paramDefine.field"
+ [id]="paramDefine.field"
+ ></nz-input-number>
+ </nz-form-control>
- <nz-form-label *ngIf="paramDefine.type === 'key-value'" nzSpan="7"
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
- >{{ paramDefine.name }}
- </nz-form-label>
- <nz-form-control *ngIf="paramDefine.type === 'key-value'" nzSpan="8"
[nzErrorTip]="'validation.required' | i18n">
- <app-key-value-input
- [(value)]="params[i].paramValue"
- [id]="paramDefine.field"
- [keyAlias]="paramDefine.keyAlias ? paramDefine.keyAlias : 'Name'"
- [valueAlias]="paramDefine.valueAlias ? paramDefine.valueAlias :
'Value'"
- ></app-key-value-input>
- </nz-form-control>
+ <nz-form-label *ngIf="paramDefine.type === 'boolean'" nzSpan="7"
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+ >{{ paramDefine.name }}
+ </nz-form-label>
+ <nz-form-control *ngIf="paramDefine.type === 'boolean'" nzSpan="8"
[nzErrorTip]="'validation.required' | i18n">
+ <nz-switch
+ [(ngModel)]="params[i].paramValue"
+ (ngModelChange)="onParamBooleanChanged($event,
paramDefine.field)"
+ [required]="paramDefine.required"
+ [name]="paramDefine.field"
+ [id]="paramDefine.field"
+ ></nz-switch>
+ </nz-form-control>
- <nz-form-label
- *ngIf="paramDefine.type === 'metrics-field'"
- nzSpan="7"
- [nzRequired]="paramDefine.required"
- [nzFor]="paramDefine.field"
- >{{ paramDefine.name }}
- </nz-form-label>
- <nz-form-control *ngIf="paramDefine.type === 'metrics-field'"
nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
- <app-metrics-field-input
- [(value)]="params[i].paramValue"
- [id]="paramDefine.field"
- [FieldAlias]="'Field'"
- [UnitAlias]="'Unit'"
- [TypeAlias]="'Type'"
- ></app-metrics-field-input>
- </nz-form-control>
- </nz-form-item>
+ <nz-form-label *ngIf="paramDefine.type === 'radio'" nzSpan="7"
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+ >{{ paramDefine.name }}
+ </nz-form-label>
+ <nz-form-control *ngIf="paramDefine.type === 'radio'" nzSpan="8"
[nzErrorTip]="'validation.required' | i18n">
+ <nz-radio-group
+ [(ngModel)]="params[i].paramValue"
+ nzButtonStyle="solid"
+ (ngModelChange)="onSnmpVersionChanged($event, paramDefine.field)"
+ [required]="paramDefine.required"
+ [name]="paramDefine.field"
+ [id]="paramDefine.field"
+ >
+ <label nz-radio-button [nzValue]="optionItem.value" *ngFor="let
optionItem of paramDefine.options">
+ {{ optionItem.label }}
+ </label>
+ </nz-radio-group>
+ </nz-form-control>
+
+ <nz-form-label *ngIf="paramDefine.type === 'key-value'" nzSpan="7"
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+ >{{ paramDefine.name }}
+ </nz-form-label>
+ <nz-form-control *ngIf="paramDefine.type === 'key-value'" nzSpan="8"
[nzErrorTip]="'validation.required' | i18n">
+ <app-key-value-input
+ [(value)]="params[i].paramValue"
+ [id]="paramDefine.field"
+ [keyAlias]="paramDefine.keyAlias ? paramDefine.keyAlias : 'Name'"
+ [valueAlias]="paramDefine.valueAlias ? paramDefine.valueAlias :
'Value'"
+ ></app-key-value-input>
+ </nz-form-control>
+
+ <nz-form-label
+ *ngIf="paramDefine.type === 'metrics-field'"
+ nzSpan="7"
+ [nzRequired]="paramDefine.required"
+ [nzFor]="paramDefine.field"
+ >{{ paramDefine.name }}
+ </nz-form-label>
+ <nz-form-control *ngIf="paramDefine.type === 'metrics-field'"
nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
+ <app-metrics-field-input
+ [(value)]="params[i].paramValue"
+ [id]="paramDefine.field"
+ [FieldAlias]="'Field'"
+ [UnitAlias]="'Unit'"
+ [TypeAlias]="'Type'"
+ ></app-metrics-field-input>
+ </nz-form-control>
+ </nz-form-item>
+ </ng-container>
<nz-collapse [nzGhost]="true" style="margin-bottom: 16px">
<nz-collapse-panel [nzHeader]="extraColHeader" [nzShowArrow]="false">
diff --git
a/web-app/src/app/routes/monitor/monitor-new/monitor-new.component.ts
b/web-app/src/app/routes/monitor/monitor-new/monitor-new.component.ts
index f3ed5c756..4d1c01bb9 100644
--- a/web-app/src/app/routes/monitor/monitor-new/monitor-new.component.ts
+++ b/web-app/src/app/routes/monitor/monitor-new/monitor-new.component.ts
@@ -179,6 +179,23 @@ export class MonitorNewComponent implements OnInit {
}
}
+ onSnmpVersionChanged(snmpVersion: string, field: string) {
+ // 对不同snmp版本需要的参数进行动态展示
+ if (field === 'snmpVersion') {
+ this.paramDefines.forEach((paramDefine, index) => {
+ this.params[index].display = true;
+ if (paramDefine.parent != undefined &&
!paramDefine.parent.toString().includes(snmpVersion)) {
+ this.params[index].display = false;
+ }
+ });
+ }
+ this.refreshParams();
+ }
+
+ refreshParams() {
+ this.params = [...this.params];
+ }
+
onSubmit(formGroup: FormGroup) {
if (formGroup.invalid) {
Object.values(formGroup.controls).forEach(control => {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]