| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347 |
- import { Component, OnInit } from '@angular/core';
- import {NzTableQueryParams} from "ng-zorro-antd/table";
- import {NzModalService} from "ng-zorro-antd/modal";
- import {NzNotificationService} from "ng-zorro-antd/notification";
- import {AlertDefineService} from "../../../service/alert-define.service";
- import {AlertDefine} from "../../../pojo/AlertDefine";
- import {finalize, map} from "rxjs/operators";
- import {AppDefineService} from "../../../service/app-define.service";
- import {TransferChange, TransferItem} from "ng-zorro-antd/transfer";
- import {zip} from "rxjs";
- import {MonitorService} from "../../../service/monitor.service";
- import {Message} from "../../../pojo/Message";
- import {AlertDefineBind} from "../../../pojo/AlertDefineBind";
- import {Monitor} from "../../../pojo/Monitor";
- @Component({
- selector: 'app-alert-setting',
- templateUrl: './alert-setting.component.html',
- styles: [
- ]
- })
- export class AlertSettingComponent implements OnInit {
- constructor(private modal: NzModalService,
- private notifySvc: NzNotificationService,
- private appDefineSvc: AppDefineService,
- private monitorSvc: MonitorService,
- private alertDefineSvc: AlertDefineService) { }
- pageIndex: number = 1;
- pageSize: number = 8;
- total: number = 0;
- defines!: AlertDefine[];
- tableLoading: boolean = true;
- checkedDefineIds = new Set<number>();
- appHierarchies!: any[];
- ngOnInit(): void {
- this.loadAlertDefineTable();
- // 查询监控层级
- const getHierarchy$ = this.appDefineSvc.getAppHierarchy()
- .pipe(finalize(() => {
- getHierarchy$.unsubscribe();
- }))
- .subscribe(message => {
- if (message.code === 0) {
- this.appHierarchies = message.data;
- } else {
- console.warn(message.msg);
- }
- }, error => {
- console.warn(error.msg);
- })
- }
- sync() {
- this.loadAlertDefineTable();
- }
- loadAlertDefineTable() {
- this.tableLoading = true;
- let alertDefineInit$ = this.alertDefineSvc.getAlertDefines(this.pageIndex - 1, this.pageSize)
- .subscribe(message => {
- this.tableLoading = false;
- this.checkedAll = false;
- this.checkedDefineIds.clear();
- if (message.code === 0) {
- let page = message.data;
- this.defines = page.content;
- this.pageIndex = page.number + 1;
- this.total = page.totalElements;
- } else {
- console.warn(message.msg);
- }
- alertDefineInit$.unsubscribe();
- }, error => {
- this.tableLoading = false;
- alertDefineInit$.unsubscribe();
- });
- }
- onNewAlertDefine() {
- this.define = new AlertDefine();
- this.isManageModalAdd = true;
- this.isManageModalVisible = true;
- this.isManageModalOkLoading = false;
- }
- onEditOneAlertDefine(alertDefineId: number) {
- if (alertDefineId == null) {
- this.notifySvc.warning("未选中任何待编辑项!","");
- return;
- }
- this.editAlertDefine(alertDefineId);
- }
- onEditAlertDefine() {
- // 编辑时只能选中一个
- if (this.checkedDefineIds == null || this.checkedDefineIds.size === 0) {
- this.notifySvc.warning("未选中任何待编辑项!","");
- return;
- }
- if (this.checkedDefineIds.size > 1) {
- this.notifySvc.warning("只能对一个选中项进行编辑!","");
- return;
- }
- let alertDefineId = 0;
- this.checkedDefineIds.forEach(item => alertDefineId = item);
- this.editAlertDefine(alertDefineId);
- }
- editAlertDefine(alertDefineId: number) {
- this.isManageModalAdd = false;
- this.isManageModalVisible = true;
- this.isManageModalOkLoading = false;
- // 查询告警定义信息
- const getDefine$ = this.alertDefineSvc.getAlertDefine(alertDefineId)
- .pipe(finalize(() => {
- getDefine$.unsubscribe();
- }))
- .subscribe(message => {
- if (message.code === 0) {
- this.define = message.data;
- this.cascadeValues = [this.define.app, this.define.metric, this.define.field];
- } else {
- this.notifySvc.error("查询此监控定义详情失败!",message.msg);
- }
- }, error => {
- this.notifySvc.error("查询此监控定义详情失败!",error.msg);
- })
- }
- onDeleteAlertDefines() {
- if (this.checkedDefineIds == null || this.checkedDefineIds.size === 0) {
- this.notifySvc.warning("未选中任何待删除项!","");
- return;
- }
- this.modal.confirm({
- nzTitle: '请确认是否批量删除!',
- nzOkText: '确定',
- nzCancelText: '取消',
- nzOkDanger: true,
- nzOkType: "primary",
- nzOnOk: () => this.deleteAlertDefines(this.checkedDefineIds)
- });
- }
- onDeleteOneAlertDefine(alertDefineId: number) {
- let defineIds = new Set<number>();
- defineIds.add(alertDefineId);
- this.modal.confirm({
- nzTitle: '请确认是否删除!',
- nzOkText: '确定',
- nzCancelText: '取消',
- nzOkDanger: true,
- nzOkType: "primary",
- nzOnOk: () => this.deleteAlertDefines(defineIds)
- });
- }
- deleteAlertDefines(defineIds: Set<number>) {
- if (defineIds == null || defineIds.size == 0) {
- this.notifySvc.warning("未选中任何待删除项!","");
- return;
- }
- this.tableLoading = true;
- const deleteDefines$ = this.alertDefineSvc.deleteAlertDefines(defineIds)
- .subscribe(message => {
- deleteDefines$.unsubscribe();
- if (message.code === 0) {
- this.notifySvc.success("删除成功!", "");
- this.loadAlertDefineTable();
- } else {
- this.tableLoading = false;
- this.notifySvc.error("删除失败!", message.msg);
- }
- }, error => {
- this.tableLoading = false;
- deleteDefines$.unsubscribe();
- this.notifySvc.error("删除失败!", error.msg)
- })
- }
- // begin: 列表多选分页逻辑
- checkedAll: boolean = false;
- onAllChecked(checked: boolean) {
- if (checked) {
- this.defines.forEach(monitor => this.checkedDefineIds.add(monitor.id));
- } else {
- this.checkedDefineIds.clear();
- }
- }
- onItemChecked(monitorId: number, checked: boolean) {
- if (checked) {
- this.checkedDefineIds.add(monitorId);
- } else {
- this.checkedDefineIds.delete(monitorId);
- }
- }
- /**
- * 分页回调
- * @param params 页码信息
- */
- onTablePageChange(params: NzTableQueryParams) {
- const { pageSize, pageIndex, sort, filter } = params;
- this.pageIndex = pageIndex;
- this.pageSize = pageSize;
- this.loadAlertDefineTable();
- }
- // end: 列表多选逻辑
- // start 新增修改告警定义model
- isManageModalVisible = false;
- isManageModalOkLoading = false;
- isManageModalAdd = true;
- define!: AlertDefine;
- cascadeValues: string[] = [];
- onManageModalCancel() {
- this.isManageModalVisible = false;
- }
- onManageModalOk() {
- this.isManageModalOkLoading = true;
- this.define.app = this.cascadeValues[0];
- this.define.metric = this.cascadeValues[1];
- this.define.field = this.cascadeValues[2];
- if (this.isManageModalAdd) {
- const modalOk$ = this.alertDefineSvc.newAlertDefine(this.define)
- .pipe(finalize(() => {
- modalOk$.unsubscribe();
- this.isManageModalOkLoading = false;
- }))
- .subscribe(message => {
- if (message.code === 0) {
- this.isManageModalVisible = false;
- this.notifySvc.success("新增成功!", "");
- this.loadAlertDefineTable();
- } else {
- this.notifySvc.error("新增失败!", message.msg);
- }
- }, error => {
- this.notifySvc.error("新增失败!", error.msg);
- })
- } else {
- const modalOk$ = this.alertDefineSvc.editAlertDefine(this.define)
- .pipe(finalize(() => {
- modalOk$.unsubscribe();
- this.isManageModalOkLoading = false;
- }))
- .subscribe(message => {
- if (message.code === 0) {
- this.isManageModalVisible = false;
- this.notifySvc.success("修改成功!", "");
- this.loadAlertDefineTable();
- } else {
- this.notifySvc.error("修改失败!", message.msg);
- }
- }, error => {
- this.notifySvc.error("修改失败!", error.msg);
- })
- }
- }
- // end 新增修改告警定义model
- // start 告警定义与监控关联model
- isConnectModalVisible = false;
- isConnectModalOkLoading = false;
- transferData: TransferItem[] = [];
- currentAlertDefineId!: number;
- $asTransferItems = (data: unknown): TransferItem[] => data as TransferItem[];
- onOpenConnectModal(alertDefineId: number, app: string) {
- this.isConnectModalVisible = true;
- this.currentAlertDefineId = alertDefineId;
- zip(this.alertDefineSvc.getAlertDefineMonitorsBind(alertDefineId), this.monitorSvc.getMonitorsByApp(app))
- .pipe(
- map(([defineBindData, monitorData]: [Message<AlertDefineBind[]>, Message<Monitor[]>]) => {
- let bindRecode: Record<number, string> = {};
- if (defineBindData.data != undefined) {
- defineBindData.data.forEach(bind => {
- bindRecode[bind.monitorId] = bind.monitorName;
- })
- }
- let listTmp: any[] = [];
- if (monitorData.data != undefined) {
- monitorData.data.forEach(monitor => {
- listTmp.push({
- id: monitor.id,
- name: monitor.name,
- key: monitor.id,
- direction: bindRecode[monitor.id] == undefined ? 'left' : 'right'
- })
- })
- }
- return listTmp;
- })
- ).subscribe(list => this.transferData = list);
- }
- onConnectModalCancel() {
- this.isConnectModalVisible = false;
- }
- onConnectModalOk() {
- this.isConnectModalOkLoading = true;
- let defineBinds: AlertDefineBind[] = [];
- this.transferData.forEach(item => {
- if (item.direction == 'right') {
- let bind = new AlertDefineBind();
- bind.alertDefineId = this.currentAlertDefineId;
- bind.monitorId = item.id;
- bind.monitorName = item.name;
- defineBinds.push(bind);
- }
- })
- const applyBind$ = this.alertDefineSvc.applyAlertDefineMonitorsBind(this.currentAlertDefineId, defineBinds)
- .pipe(finalize(() => {
- applyBind$.unsubscribe();
- }))
- .subscribe(message => {
- this.isConnectModalOkLoading = false;
- if (message.code === 0) {
- this.notifySvc.success("应用成功!", "");
- this.isConnectModalVisible = false;
- this.loadAlertDefineTable();
- } else {
- this.notifySvc.error("应用失败!", message.msg);
- }
- }, error => {
- this.notifySvc.error("应用失败!", error.msg);
- })
- }
- change(ret: TransferChange): void {
- const listKeys = ret.list.map(l => l.key);
- const hasOwnKey = (e: TransferItem): boolean => e.hasOwnProperty('key');
- this.transferData = this.transferData.map(e => {
- if (listKeys.includes(e.key) && hasOwnKey(e)) {
- if (ret.to === 'left') {
- delete e.hide;
- } else if (ret.to === 'right') {
- e.hide = false;
- }
- }
- return e;
- });
- }
- // end 告警定义与监控关联model
- }
|