This is an automated email from the ASF dual-hosted git repository.
gongchao 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 874f7bdab Optimize the processing logic for Depend-type fields (#2248)
874f7bdab is described below
commit 874f7bdab3aab3e54984f6b9398abec1bdbfcb07
Author: Kerwin Bryant <[email protected]>
AuthorDate: Tue Jul 9 10:52:12 2024 +0800
Optimize the processing logic for Depend-type fields (#2248)
---
.../monitor-edit/monitor-edit.component.html | 1 +
.../monitor/monitor-edit/monitor-edit.component.ts | 70 +++++-----------------
.../monitor-form/monitor-form.component.html | 2 +-
.../monitor/monitor-form/monitor-form.component.ts | 21 +++++--
.../monitor/monitor-new/monitor-new.component.ts | 20 ++++---
5 files changed, 47 insertions(+), 67 deletions(-)
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 922964404..40cb5f49c 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
@@ -35,6 +35,7 @@
[paramDefines]="paramDefines"
[advancedParams]="advancedParams"
[advancedParamDefines]="advancedParamDefines"
+ [paramValueMap]="paramValueMap"
[collector]="collector"
[collectors]="collectors"
(formCancel)="onCancel()"
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 72ff1bebe..88a4afeb1 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
@@ -57,7 +57,7 @@ export class MonitorEditComponent implements OnInit {
params!: Param[];
advancedParamDefines!: ParamDefine[];
advancedParams!: Param[];
- paramValueMap = new Map<String, Param>();
+ paramValueMap!: Map<String, Param>;
monitor = new Monitor();
collectors!: Collector[];
collector: string = '';
@@ -79,13 +79,15 @@ export class MonitorEditComponent implements OnInit {
.pipe(
switchMap((message: Message<any>) => {
if (message.code === 0) {
+ let paramValueMap = new Map<String, Param>();
this.monitor = message.data.monitor;
this.collector = message.data.collector == null ? '' :
message.data.collector;
this.titleSvc.setTitleByI18n(`monitor.app.${this.monitor.app}`);
if (message.data.params != null) {
message.data.params.forEach((item: Param) => {
- this.paramValueMap.set(item.field, item);
+ paramValueMap.set(item.field, item);
});
+ this.paramValueMap = paramValueMap;
}
this.detected = false;
if (this.monitor.tags == undefined) {
@@ -102,10 +104,10 @@ export class MonitorEditComponent implements OnInit {
.pipe(
switchMap(message => {
if (message.code === 0) {
- this.params = [];
- this.advancedParams = [];
- this.paramDefines = [];
- this.advancedParamDefines = [];
+ let params: Param[] = [];
+ let advancedParams: Param[] = [];
+ let paramDefines: ParamDefine[] = [];
+ let advancedParamDefines: ParamDefine[] = [];
message.data.forEach(define => {
let param = this.paramValueMap.get(define.field);
if (param === undefined) {
@@ -144,11 +146,11 @@ export class MonitorEditComponent implements OnInit {
}
define.name =
this.i18nSvc.fanyi(`monitor.app.${this.monitor.app}.param.${define.field}`);
if (define.hide) {
- this.advancedParams.push(param);
- this.advancedParamDefines.push(define);
+ advancedParams.push(param);
+ advancedParamDefines.push(define);
} else {
- this.params.push(param);
- this.paramDefines.push(define);
+ params.push(param);
+ paramDefines.push(define);
}
if (
define.field == 'host' &&
@@ -158,8 +160,10 @@ export class MonitorEditComponent implements OnInit {
this.hostName = define.name;
}
});
- this.onPageInit();
- this.detectDepend();
+ this.params = [...params];
+ this.advancedParams = [...advancedParams];
+ this.paramDefines = [...paramDefines];
+ this.advancedParamDefines = [...advancedParamDefines];
} else {
console.warn(message.msg);
}
@@ -182,48 +186,6 @@ export class MonitorEditComponent implements OnInit {
);
}
- onPageInit() {
- this.paramDefines.forEach((paramDefine, index) => {
- this.params[index].display = true;
- });
- this.advancedParamDefines.forEach((advancedParamDefine, index) => {
- this.advancedParams[index].display = true;
- });
- }
-
- detectDepend() {
- this.paramDefines.forEach((paramDefine, index) => {
- if (paramDefine.type == 'radio') {
-
this.onDependChanged(this.paramValueMap.get(paramDefine.field)?.paramValue,
paramDefine.field);
- }
- });
- }
-
- onDependChanged(dependValue: string, dependField: string) {
- this.paramDefines.forEach((paramDefine, index) => {
- if (paramDefine.depend) {
- let fieldValues = new
Map(Object.entries(paramDefine.depend)).get(dependField);
- if (fieldValues) {
- this.params[index].display = false;
- if (fieldValues.map(String).includes(dependValue)) {
- this.params[index].display = true;
- }
- }
- }
- });
- this.advancedParamDefines.forEach((advancedParamDefine, index) => {
- if (advancedParamDefine.depend) {
- let fieldValues = new
Map(Object.entries(advancedParamDefine.depend)).get(dependField);
- if (fieldValues) {
- this.advancedParams[index].display = false;
- if (fieldValues.map(String).includes(dependValue)) {
- this.advancedParams[index].display = true;
- }
- }
- }
- });
- }
-
onSubmit(info: any) {
let addMonitor = {
detected: this.detected,
diff --git
a/web-app/src/app/routes/monitor/monitor-form/monitor-form.component.html
b/web-app/src/app/routes/monitor/monitor-form/monitor-form.component.html
index c44f49a3e..2cbb02005 100644
--- a/web-app/src/app/routes/monitor/monitor-form/monitor-form.component.html
+++ b/web-app/src/app/routes/monitor/monitor-form/monitor-form.component.html
@@ -45,7 +45,7 @@
<ng-container *ngFor="let paramDefine of paramDefines; let i = index">
<app-form-item
- *ngIf="params[i].display && paramDefine.field !== 'host'"
+ *ngIf="params[i].display !== false && paramDefine.field !== 'host'"
[item]="paramDefine"
[(value)]="params[i].paramValue"
(valueChange)="
diff --git
a/web-app/src/app/routes/monitor/monitor-form/monitor-form.component.ts
b/web-app/src/app/routes/monitor/monitor-form/monitor-form.component.ts
index 45906dd01..c2b963ca6 100644
--- a/web-app/src/app/routes/monitor/monitor-form/monitor-form.component.ts
+++ b/web-app/src/app/routes/monitor/monitor-form/monitor-form.component.ts
@@ -17,7 +17,7 @@
* under the License.
*/
-import { Component, EventEmitter, Input, Output } from '@angular/core';
+import { Component, EventEmitter, Input, Output, OnChanges, SimpleChanges }
from '@angular/core';
import { FormGroup } from '@angular/forms';
import { Collector } from '../../../pojo/Collector';
@@ -29,7 +29,7 @@ import { ParamDefine } from '../../../pojo/ParamDefine';
templateUrl: './monitor-form.component.html',
styleUrls: ['./monitor-form.component.less']
})
-export class MonitorFormComponent {
+export class MonitorFormComponent implements OnChanges {
@Input() monitor!: any;
@Input() loading!: boolean;
@Input() loadingTip!: string;
@@ -40,6 +40,7 @@ export class MonitorFormComponent {
@Input() advancedParams!: Param[];
@Input() paramDefines!: ParamDefine[];
@Input() advancedParamDefines!: ParamDefine[];
+ @Input() paramValueMap!: Map<String, Param>;
@Output() readonly formSubmit = new EventEmitter<any>();
@Output() readonly formCancel = new EventEmitter<any>();
@@ -48,6 +49,18 @@ export class MonitorFormComponent {
constructor() {}
+ ngOnChanges(changes: SimpleChanges) {
+ if (changes.paramDefines && changes.paramDefines.currentValue !==
changes.paramDefines.previousValue) {
+ changes.paramDefines.currentValue.forEach((paramDefine: any) => {
+ if (paramDefine.type == 'radio') {
+
this.onDependChanged(this.paramValueMap?.get(paramDefine.field)?.paramValue,
paramDefine.field);
+ } else if (paramDefine.type == 'boolean') {
+
this.onParamBooleanChanged(this.paramValueMap?.get(paramDefine.field)?.paramValue,
paramDefine.field);
+ }
+ });
+ }
+ }
+
onDetect(formGroup: FormGroup) {
if (formGroup.invalid) {
Object.values(formGroup.controls).forEach(control => {
@@ -87,8 +100,8 @@ export class MonitorFormComponent {
});
return;
}
- this.monitor.host = this.monitor.host.trim();
- this.monitor.name = this.monitor.name.trim();
+ this.monitor.host = this.monitor.host?.trim();
+ this.monitor.name = this.monitor.name?.trim();
// todo 暂时单独设置host属性值
this.params.forEach(param => {
if (param.field === 'host') {
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 3b3ff37b9..b9c896222 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
@@ -83,10 +83,10 @@ export class MonitorNewComponent implements OnInit {
.pipe(
switchMap((message: Message<ParamDefine[]>) => {
if (message.code === 0) {
- this.params = [];
- this.advancedParams = [];
- this.paramDefines = [];
- this.advancedParamDefines = [];
+ let params: Param[] = [];
+ let advancedParams: Param[] = [];
+ let paramDefines: ParamDefine[] = [];
+ let advancedParamDefines: ParamDefine[] = [];
message.data.forEach(define => {
let param = new Param();
param.field = define.field;
@@ -113,11 +113,11 @@ export class MonitorNewComponent implements OnInit {
}
define.name =
this.i18nSvc.fanyi(`monitor.app.${this.monitor.app}.param.${define.field}`);
if (define.hide) {
- this.advancedParams.push(param);
- this.advancedParamDefines.push(define);
+ advancedParams.push(param);
+ advancedParamDefines.push(define);
} else {
- this.params.push(param);
- this.paramDefines.push(define);
+ params.push(param);
+ paramDefines.push(define);
}
if (
define.field == 'host' &&
@@ -127,6 +127,10 @@ export class MonitorNewComponent implements OnInit {
this.hostName = define.name;
}
});
+ this.params = [...params];
+ this.advancedParams = [...advancedParams];
+ this.paramDefines = [...paramDefines];
+ this.advancedParamDefines = [...advancedParamDefines];
} else {
console.warn(message.msg);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]