diff --git a/web-app/src/app/pojo/Alert.ts b/web-app/src/app/pojo/Alert.ts new file mode 100644 index 0000000..2ea34ca --- /dev/null +++ b/web-app/src/app/pojo/Alert.ts @@ -0,0 +1,11 @@ +export class Alert { + id!: number; + target!: string; + monitorId!: number; + monitorName!: string; + priority: number = 2; + status!: number; + content!: string; + duration!: number; + gmtCreate!: number; +} diff --git a/web-app/src/app/routes/alert/alert-center/alert-center.component.html b/web-app/src/app/routes/alert/alert-center/alert-center.component.html index b7352da..153fc8b 100644 --- a/web-app/src/app/routes/alert/alert-center/alert-center.component.html +++ b/web-app/src/app/routes/alert/alert-center/alert-center.component.html @@ -1 +1,86 @@ -

alert-center works!

+ + + + + + 仪表盘 + + + + + 告警中心 + + + + + + + + + + + + 告警对象 + 所属监控 + 级别 + 告警内容 + 触发时间 + 持续时间 + 操作 + + + + + + {{ data.target }} + + + {{ data.monitorName }} + + + + + + 紧急告警 + + + + 严重告警 + + + + 警告告警 + + + {{ data.content }} + {{ data.gmtCreate }} + {{ data.duration }} + + + + + + + + + + 总量 {{ total }} + diff --git a/web-app/src/app/routes/alert/alert-center/alert-center.component.ts b/web-app/src/app/routes/alert/alert-center/alert-center.component.ts index f38af04..3adb5e3 100644 --- a/web-app/src/app/routes/alert/alert-center/alert-center.component.ts +++ b/web-app/src/app/routes/alert/alert-center/alert-center.component.ts @@ -1,4 +1,9 @@ import { Component, OnInit } from '@angular/core'; +import {NzTableQueryParams} from "ng-zorro-antd/table"; +import {Alert} from "../../../pojo/Alert"; +import {NzNotificationService} from "ng-zorro-antd/notification"; +import {NzMessageService} from "ng-zorro-antd/message"; +import {AlertService} from "../../../service/alert.service"; @Component({ selector: 'app-alert-center', @@ -8,9 +13,80 @@ import { Component, OnInit } from '@angular/core'; }) export class AlertCenterComponent implements OnInit { - constructor() { } + constructor(private notifySvc: NzNotificationService, + private msg: NzMessageService, + private alertSvc: AlertService) { } + + pageIndex: number = 1; + pageSize: number = 8; + total: number = 0; + alerts!: Alert[]; + tableLoading: boolean = false; + checkedAlertIds = new Set(); ngOnInit(): void { + this.loadAlertsTable(); } + loadAlertsTable() { + this.tableLoading = true; + let alertsInit$ = this.alertSvc.getAlerts(this.pageIndex - 1, this.pageSize) + .subscribe(message => { + this.tableLoading = false; + this.checkedAll = false; + this.checkedAlertIds.clear(); + if (message.code === 0) { + let page = message.data; + this.alerts = page.content; + this.pageIndex = page.number + 1; + this.total = page.totalElements; + } else { + console.warn(message.msg); + } + alertsInit$.unsubscribe(); + }, error => { + this.tableLoading = false; + alertsInit$.unsubscribe(); + }); + } + + onRestoreAlerts() { + + } + onRestoreOneAlert(alertId: number) { + + } + onDeleteAlerts() { + + } + + onDeleteOneAlert(alertId: number) { + + } + + // begin: 列表多选分页逻辑 + checkedAll: boolean = false; + onAllChecked(checked: boolean) { + if (checked) { + this.alerts.forEach(monitor => this.checkedAlertIds.add(monitor.id)); + } else { + this.checkedAlertIds.clear(); + } + } + onItemChecked(monitorId: number, checked: boolean) { + if (checked) { + this.checkedAlertIds.add(monitorId); + } else { + this.checkedAlertIds.delete(monitorId); + } + } + onTablePageChange(params: NzTableQueryParams) { + const { pageSize, pageIndex, sort, filter } = params; + this.pageIndex = pageIndex; + this.pageSize = pageSize; + this.loadAlertsTable(); + } + // end: 列表多选分页逻辑 + + } diff --git a/web-app/src/app/routes/alert/alert-setting/alert-setting.component.html b/web-app/src/app/routes/alert/alert-setting/alert-setting.component.html index d4c2c81..89427eb 100644 --- a/web-app/src/app/routes/alert/alert-setting/alert-setting.component.html +++ b/web-app/src/app/routes/alert/alert-setting/alert-setting.component.html @@ -3,6 +3,7 @@ + 仪表盘 @@ -58,15 +59,15 @@ - + 紧急告警 - + 严重告警 - + 警告告警 diff --git a/web-app/src/app/routes/monitor/monitor-detail/monitor-detail.component.html b/web-app/src/app/routes/monitor/monitor-detail/monitor-detail.component.html index 77bb458..4224f82 100644 --- a/web-app/src/app/routes/monitor/monitor-detail/monitor-detail.component.html +++ b/web-app/src/app/routes/monitor/monitor-detail/monitor-detail.component.html @@ -3,6 +3,7 @@ + 仪表盘 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 9cbf363..000ca87 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 @@ -3,6 +3,7 @@ + 仪表盘 diff --git a/web-app/src/app/routes/monitor/monitor-list/monitor-list.component.html b/web-app/src/app/routes/monitor/monitor-list/monitor-list.component.html index 0b63061..8782807 100644 --- a/web-app/src/app/routes/monitor/monitor-list/monitor-list.component.html +++ b/web-app/src/app/routes/monitor/monitor-list/monitor-list.component.html @@ -3,6 +3,7 @@ + 仪表盘 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 d53ce83..20edc80 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 @@ -3,6 +3,7 @@ + 仪表盘 diff --git a/web-app/src/app/service/alert.service.spec.ts b/web-app/src/app/service/alert.service.spec.ts new file mode 100644 index 0000000..b20ed8c --- /dev/null +++ b/web-app/src/app/service/alert.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { AlertService } from './alert.service'; + +describe('AlertService', () => { + let service: AlertService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(AlertService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/web-app/src/app/service/alert.service.ts b/web-app/src/app/service/alert.service.ts new file mode 100644 index 0000000..3411513 --- /dev/null +++ b/web-app/src/app/service/alert.service.ts @@ -0,0 +1,31 @@ +import { Injectable } from '@angular/core'; +import {HttpClient, HttpParams} from "@angular/common/http"; +import {Observable} from "rxjs"; +import {Message} from "../pojo/Message"; +import {Page} from "../pojo/Page"; +import {Alert} from "../pojo/Alert"; + +const alerts_uri = '/alerts'; + +@Injectable({ + providedIn: 'root' +}) +export class AlertService { + + constructor(private http : HttpClient) { } + + public getAlerts(pageIndex: number, pageSize: number) : Observable>> { + pageIndex = pageIndex ? pageIndex : 0; + pageSize = pageSize ? pageSize : 8; + // 注意HttpParams是不可变对象 需要保存set后返回的对象为最新对象 + let httpParams = new HttpParams(); + httpParams = httpParams.appendAll({ + 'sort': 'id', + 'order': 'desc', + 'pageIndex': pageIndex, + 'pageSize': pageSize + }); + const options = { params: httpParams }; + return this.http.get>>(alerts_uri, options); + } +}