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 c70cc5d9b Fixed failure of form validation (#2261)
c70cc5d9b is described below

commit c70cc5d9b7f25db62d56220b8f4360adf3260a90
Author: Kerwin Bryant <[email protected]>
AuthorDate: Wed Jul 10 23:17:02 2024 +0800

    Fixed failure of form validation (#2261)
---
 .../alert-converge/alert-converge.component.ts     | 25 +++++++++++-----------
 .../alert/alert-silence/alert-silence.component.ts | 16 +++++++++++---
 .../setting/collector/collector.component.ts       | 12 +++++++++--
 .../message-server/message-server.component.html   |  8 +++----
 .../message-server/message-server.component.ts     | 15 ++++++++++---
 5 files changed, 52 insertions(+), 24 deletions(-)

diff --git 
a/web-app/src/app/routes/alert/alert-converge/alert-converge.component.ts 
b/web-app/src/app/routes/alert/alert-converge/alert-converge.component.ts
index 4f82af4aa..b890ae6ae 100644
--- a/web-app/src/app/routes/alert/alert-converge/alert-converge.component.ts
+++ b/web-app/src/app/routes/alert/alert-converge/alert-converge.component.ts
@@ -17,9 +17,10 @@
  * under the License.
  */
 
-import { Component, Inject, OnInit } from '@angular/core';
+import { Component, Inject, OnInit, ViewChild } from '@angular/core';
+import { NgForm } from '@angular/forms';
 import { I18NService } from '@core';
-import { ALAIN_I18N_TOKEN, SettingsService } from '@delon/theme';
+import { ALAIN_I18N_TOKEN } from '@delon/theme';
 import { NzModalService } from 'ng-zorro-antd/modal';
 import { NzNotificationService } from 'ng-zorro-antd/notification';
 import { NzTableQueryParams } from 'ng-zorro-antd/table';
@@ -40,11 +41,11 @@ export class AlertConvergeComponent implements OnInit {
     private modal: NzModalService,
     private notifySvc: NzNotificationService,
     private alertConvergeService: AlertConvergeService,
-    private settingsSvc: SettingsService,
     private tagService: TagService,
     @Inject(ALAIN_I18N_TOKEN) private i18nSvc: I18NService
   ) {}
 
+  @ViewChild('ruleForm', { static: false }) ruleForm: NgForm | undefined;
   pageIndex: number = 1;
   pageSize: number = 8;
   total: number = 0;
@@ -211,15 +212,6 @@ export class AlertConvergeComponent implements OnInit {
   tagsOption: any[] = [];
   matchTags: string[] = [];
   convergeDates!: Date[];
-  dayCheckOptions = [
-    { label: this.i18nSvc.fanyi('common.week.7'), value: 7, checked: true },
-    { label: this.i18nSvc.fanyi('common.week.1'), value: 1, checked: true },
-    { label: this.i18nSvc.fanyi('common.week.2'), value: 2, checked: true },
-    { label: this.i18nSvc.fanyi('common.week.3'), value: 3, checked: true },
-    { label: this.i18nSvc.fanyi('common.week.4'), value: 4, checked: true },
-    { label: this.i18nSvc.fanyi('common.week.5'), value: 5, checked: true },
-    { label: this.i18nSvc.fanyi('common.week.6'), value: 6, checked: true }
-  ];
 
   onNewAlertConverge() {
     this.converge = new AlertConverge();
@@ -283,6 +275,15 @@ export class AlertConvergeComponent implements OnInit {
       );
   }
   onManageModalOk() {
+    if (this.ruleForm?.invalid) {
+      Object.values(this.ruleForm.controls).forEach(control => {
+        if (control.invalid) {
+          control.markAsDirty();
+          control.updateValueAndValidity({ onlySelf: true });
+        }
+      });
+      return;
+    }
     this.converge.tags = [];
     this.matchTags.forEach(tag => {
       let tmp: string[] = tag.split(':');
diff --git 
a/web-app/src/app/routes/alert/alert-silence/alert-silence.component.ts 
b/web-app/src/app/routes/alert/alert-silence/alert-silence.component.ts
index a2cb4a178..bd96c93e1 100644
--- a/web-app/src/app/routes/alert/alert-silence/alert-silence.component.ts
+++ b/web-app/src/app/routes/alert/alert-silence/alert-silence.component.ts
@@ -17,9 +17,10 @@
  * under the License.
  */
 
-import { Component, Inject, OnInit } from '@angular/core';
+import { Component, Inject, OnInit, ViewChild } from '@angular/core';
+import { NgForm } from '@angular/forms';
 import { I18NService } from '@core';
-import { ALAIN_I18N_TOKEN, SettingsService } from '@delon/theme';
+import { ALAIN_I18N_TOKEN } from '@delon/theme';
 import { NzModalService } from 'ng-zorro-antd/modal';
 import { NzNotificationService } from 'ng-zorro-antd/notification';
 import { NzTableQueryParams } from 'ng-zorro-antd/table';
@@ -40,11 +41,11 @@ export class AlertSilenceComponent implements OnInit {
     private modal: NzModalService,
     private notifySvc: NzNotificationService,
     private alertSilenceService: AlertSilenceService,
-    private settingsSvc: SettingsService,
     private tagService: TagService,
     @Inject(ALAIN_I18N_TOKEN) private i18nSvc: I18NService
   ) {}
 
+  @ViewChild('ruleForm', { static: false }) ruleForm: NgForm | undefined;
   pageIndex: number = 1;
   pageSize: number = 8;
   total: number = 0;
@@ -291,6 +292,15 @@ export class AlertSilenceComponent implements OnInit {
       );
   }
   onManageModalOk() {
+    if (this.ruleForm?.invalid) {
+      Object.values(this.ruleForm.controls).forEach(control => {
+        if (control.invalid) {
+          control.markAsDirty();
+          control.updateValueAndValidity({ onlySelf: true });
+        }
+      });
+      return;
+    }
     this.silence.tags = [];
     this.matchTags.forEach(tag => {
       let tmp: string[] = tag.split(':');
diff --git a/web-app/src/app/routes/setting/collector/collector.component.ts 
b/web-app/src/app/routes/setting/collector/collector.component.ts
index c4257d824..72c236f62 100644
--- a/web-app/src/app/routes/setting/collector/collector.component.ts
+++ b/web-app/src/app/routes/setting/collector/collector.component.ts
@@ -17,7 +17,8 @@
  * under the License.
  */
 
-import { Component, Inject, OnInit } from '@angular/core';
+import { Component, Inject, OnInit, ViewChild } from '@angular/core';
+import { NgForm } from '@angular/forms';
 import { I18NService } from '@core';
 import { ALAIN_I18N_TOKEN } from '@delon/theme';
 import { NzMessageService } from 'ng-zorro-antd/message';
@@ -42,6 +43,7 @@ export class CollectorComponent implements OnInit {
     @Inject(ALAIN_I18N_TOKEN) private i18nSvc: I18NService
   ) {}
 
+  @ViewChild('deployForm', { static: false }) deployForm: NgForm | undefined;
   pageIndex: number = 1;
   pageSize: number = 8;
   total: number = 0;
@@ -286,7 +288,13 @@ export class CollectorComponent implements OnInit {
   }
 
   onDeployCollectorModalOk() {
-    if (this.collector == '' || this.collector == undefined) {
+    if (this.deployForm?.invalid) {
+      Object.values(this.deployForm.controls).forEach(control => {
+        if (control.invalid) {
+          control.markAsDirty();
+          control.updateValueAndValidity({ onlySelf: true });
+        }
+      });
       return;
     }
     this.isDeployCollectorModalOkLoading = true;
diff --git 
a/web-app/src/app/routes/setting/settings/message-server/message-server.component.html
 
b/web-app/src/app/routes/setting/settings/message-server/message-server.component.html
index 4fd77b216..2d77c3592 100644
--- 
a/web-app/src/app/routes/setting/settings/message-server/message-server.component.html
+++ 
b/web-app/src/app/routes/setting/settings/message-server/message-server.component.html
@@ -80,25 +80,25 @@
       <nz-form-item>
         <nz-form-label [nzSpan]="7" nzFor="emailUsername" nzRequired="true">{{ 
'alert.notice.sender.mail.username' | i18n }}</nz-form-label>
         <nz-form-control [nzSpan]="12" [nzErrorTip]="'validation.required' | 
i18n">
-          <input [(ngModel)]="emailSender.emailUsername" nz-input 
name="emailUsername" type="text" id="emailUsername" />
+          <input [(ngModel)]="emailSender.emailUsername" nz-input required 
name="emailUsername" type="text" id="emailUsername" />
         </nz-form-control>
       </nz-form-item>
       <nz-form-item>
         <nz-form-label [nzSpan]="7" nzFor="emailPassword" nzRequired="true">{{ 
'alert.notice.sender.mail.password' | i18n }}</nz-form-label>
         <nz-form-control [nzSpan]="12" [nzErrorTip]="'validation.required' | 
i18n">
-          <input [(ngModel)]="emailSender.emailPassword" nz-input 
name="emailPassword" type="password" id="emailPassword" />
+          <input [(ngModel)]="emailSender.emailPassword" nz-input required 
name="emailPassword" type="password" id="emailPassword" />
         </nz-form-control>
       </nz-form-item>
       <nz-form-item>
         <nz-form-label nzSpan="7" nzFor="emailSsl" nzRequired="true">{{ 
'alert.notice.sender.mail.ssl' | i18n }}</nz-form-label>
         <nz-form-control nzSpan="12">
-          <nz-switch [(ngModel)]="emailSender.emailSsl" name="emailSsl" 
id="emailSsl"></nz-switch>
+          <nz-switch [(ngModel)]="emailSender.emailSsl" required 
name="emailSsl" id="emailSsl"></nz-switch>
         </nz-form-control>
       </nz-form-item>
       <nz-form-item>
         <nz-form-label nzSpan="7" nzFor="emailEnable" nzRequired="true">{{ 
'alert.notice.sender.enable' | i18n }}</nz-form-label>
         <nz-form-control nzSpan="12">
-          <nz-switch [(ngModel)]="emailSender.enable" name="emailEnable" 
id="emailEnable"></nz-switch>
+          <nz-switch [(ngModel)]="emailSender.enable" required 
name="emailEnable" id="emailEnable"></nz-switch>
         </nz-form-control>
       </nz-form-item>
     </form>
diff --git 
a/web-app/src/app/routes/setting/settings/message-server/message-server.component.ts
 
b/web-app/src/app/routes/setting/settings/message-server/message-server.component.ts
index 49cbfaaed..d3392fa00 100644
--- 
a/web-app/src/app/routes/setting/settings/message-server/message-server.component.ts
+++ 
b/web-app/src/app/routes/setting/settings/message-server/message-server.component.ts
@@ -17,7 +17,8 @@
  * under the License.
  */
 
-import { ChangeDetectorRef, Component, Inject, OnInit } from '@angular/core';
+import { Component, Inject, OnInit, ViewChild } from '@angular/core';
+import { NgForm } from '@angular/forms';
 import { I18NService } from '@core';
 import { ALAIN_I18N_TOKEN } from '@delon/theme';
 import { NzMessageService } from 'ng-zorro-antd/message';
@@ -36,12 +37,11 @@ export class MessageServerComponent implements OnInit {
   constructor(
     public msg: NzMessageService,
     private notifySvc: NzNotificationService,
-    private cdr: ChangeDetectorRef,
     private noticeSenderSvc: GeneralConfigService,
     @Inject(ALAIN_I18N_TOKEN) private i18nSvc: I18NService
   ) {}
 
-  senders!: EmailNoticeSender[];
+  @ViewChild('senderForm', { static: false }) senderForm: NgForm | undefined;
   senderServerLoading: boolean = true;
   loading: boolean = false;
   isEmailServerModalVisible: boolean = false;
@@ -84,6 +84,15 @@ export class MessageServerComponent implements OnInit {
   }
 
   onSaveEmailServer() {
+    if (this.senderForm?.invalid) {
+      Object.values(this.senderForm.controls).forEach(control => {
+        if (control.invalid) {
+          control.markAsDirty();
+          control.updateValueAndValidity({ onlySelf: true });
+        }
+      });
+      return;
+    }
     const modalOk$ = this.noticeSenderSvc
       .saveGeneralConfig(this.emailSender, 'email')
       .pipe(


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to