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]