monitor.service.ts 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import { Injectable } from '@angular/core';
  2. import {HttpClient, HttpParams} from "@angular/common/http";
  3. import {Observable} from "rxjs";
  4. import {Message} from "../pojo/Message";
  5. import {Page} from "../pojo/Page";
  6. import {Monitor} from "../pojo/Monitor";
  7. const monitor_uri = "/monitor";
  8. const monitors_uri = "/monitors";
  9. const detect_monitor_uri = "/monitor/detect"
  10. const manage_monitors_uri = "/monitors/manage";
  11. @Injectable({
  12. providedIn: 'root'
  13. })
  14. export class MonitorService {
  15. constructor(private http : HttpClient) { }
  16. public newMonitor(body: any) : Observable<Message<any>> {
  17. return this.http.post<Message<any>>(monitor_uri, body);
  18. }
  19. public editMonitor(body: any) : Observable<Message<any>> {
  20. return this.http.put<Message<any>>(monitor_uri, body);
  21. }
  22. public deleteMonitor(monitorId: number) : Observable<Message<any>> {
  23. return this.http.delete<Message<any>>(`${monitor_uri}/${monitorId}`);
  24. }
  25. public deleteMonitors(monitorIds: Set<number>) : Observable<Message<any>> {
  26. let httpParams = new HttpParams();
  27. monitorIds.forEach(monitorId => {
  28. // 注意HttpParams是不可变对象 需要保存append后返回的对象为最新对象
  29. // append方法可以叠加同一key, set方法会把key之前的值覆盖只留一个key-value
  30. httpParams = httpParams.append('ids', monitorId);
  31. })
  32. const options = { params: httpParams };
  33. return this.http.delete<Message<any>>(monitors_uri, options);
  34. }
  35. public cancelManageMonitors(monitorIds: Set<number>) : Observable<Message<any>> {
  36. let httpParams = new HttpParams();
  37. monitorIds.forEach(monitorId => {
  38. // 注意HttpParams是不可变对象 需要保存append后返回的对象为最新对象
  39. // append方法可以叠加同一key, set方法会把key之前的值覆盖只留一个key-value
  40. httpParams = httpParams.append('ids', monitorId);
  41. })
  42. const options = { params: httpParams };
  43. return this.http.delete<Message<any>>(manage_monitors_uri, options);
  44. }
  45. public enableManageMonitors(monitorIds: Set<number>) : Observable<Message<any>> {
  46. let httpParams = new HttpParams();
  47. monitorIds.forEach(monitorId => {
  48. httpParams = httpParams.append('ids', monitorId);
  49. })
  50. const options = { params: httpParams };
  51. return this.http.get<Message<any>>(manage_monitors_uri, options);
  52. }
  53. public detectMonitor(body: any) : Observable<Message<any>> {
  54. return this.http.post<Message<any>>(detect_monitor_uri, body);
  55. }
  56. public getMonitor(monitorId: number) : Observable<Message<any>> {
  57. return this.http.get<Message<any>>(`${monitor_uri}/${monitorId}`);
  58. }
  59. public getMonitors(app: string, pageIndex: number, pageSize: number) : Observable<Message<Page<Monitor>>> {
  60. app = app.trim();
  61. pageIndex = pageIndex ? pageIndex : 0;
  62. pageSize = pageSize ? pageSize : 8;
  63. // 注意HttpParams是不可变对象 需要保存set后返回的对象为最新对象
  64. let httpParams = new HttpParams();
  65. httpParams = httpParams.appendAll({
  66. 'app': app,
  67. 'pageIndex': pageIndex,
  68. 'pageSize': pageSize
  69. });
  70. const options = { params: httpParams };
  71. return this.http.get<Message<Page<Monitor>>>(monitors_uri, options);
  72. }
  73. public getMonitorMetricData(monitorId: number, metric: string) : Observable<Message<any>> {
  74. return this.http.get<Message<any>>(`/monitors/${monitorId}/metrics/${metric}`);
  75. }
  76. }