monitor-detail.component.ts 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import { Component, OnInit } from '@angular/core';
  2. import { ActivatedRoute, ParamMap } from '@angular/router';
  3. import { finalize, switchMap } from 'rxjs/operators';
  4. import { Monitor } from '../../../pojo/Monitor';
  5. import { Param } from '../../../pojo/Param';
  6. import { AppDefineService } from '../../../service/app-define.service';
  7. import { MonitorService } from '../../../service/monitor.service';
  8. @Component({
  9. selector: 'app-monitor-detail',
  10. templateUrl: './monitor-detail.component.html',
  11. styleUrls: ['./monitor-detail.component.less']
  12. })
  13. export class MonitorDetailComponent implements OnInit {
  14. constructor(private monitorSvc: MonitorService, private route: ActivatedRoute, private appDefineSvc: AppDefineService) {}
  15. isSpinning: boolean = false;
  16. monitorId!: number;
  17. app!: string;
  18. monitor!: Monitor;
  19. options: any;
  20. port: number | undefined;
  21. metrics!: string[];
  22. chartMetrics: any[] = [];
  23. ngOnInit(): void {
  24. this.route.paramMap
  25. .pipe(
  26. switchMap((paramMap: ParamMap) => {
  27. this.isSpinning = true;
  28. let id = paramMap.get('monitorId');
  29. this.monitorId = Number(id);
  30. // 查询监控指标组结构信息
  31. return this.monitorSvc.getMonitor(this.monitorId);
  32. })
  33. )
  34. .subscribe(
  35. message => {
  36. this.isSpinning = false;
  37. if (message.code === 0) {
  38. this.monitor = message.data.monitor;
  39. this.app = this.monitor?.app;
  40. let params: Param[] = message.data.params;
  41. // 取出端口信息
  42. params.forEach(param => {
  43. if (param.field === 'port') {
  44. this.port = Number(param.value);
  45. }
  46. });
  47. this.metrics = message.data.metrics;
  48. } else {
  49. console.warn(message.msg);
  50. }
  51. },
  52. error => {
  53. this.isSpinning = false;
  54. console.error(error.msg);
  55. }
  56. );
  57. }
  58. initMetricChart() {
  59. // 查询过滤出此监控下可计算聚合的数字指标
  60. const define$ = this.appDefineSvc
  61. .getAppDefine(this.app)
  62. .pipe(
  63. finalize(() => {
  64. define$.unsubscribe();
  65. })
  66. )
  67. .subscribe(
  68. message => {
  69. if (message.code === 0 && message.data != undefined) {
  70. this.chartMetrics = [];
  71. let metrics = message.data.metrics;
  72. metrics.forEach((metric: { name: any; fields: any }) => {
  73. let fields = metric.fields;
  74. if (fields != undefined) {
  75. fields.forEach((field: { type: number; field: any; unit: any }) => {
  76. if (field.type == 0) {
  77. this.chartMetrics.push({
  78. metrics: metric.name,
  79. metric: field.field,
  80. unit: field.unit
  81. });
  82. }
  83. });
  84. }
  85. });
  86. } else {
  87. console.warn(message.msg);
  88. }
  89. },
  90. error => {
  91. console.error(error.msg);
  92. }
  93. );
  94. }
  95. }