alert_list_ctrl.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. ///<reference path="../../headers/common.d.ts" />
  2. import _ from "lodash";
  3. import moment from "moment";
  4. import { coreModule, appEvents } from "app/core/core";
  5. import alertDef from "./alert_def";
  6. export class AlertListCtrl {
  7. alerts: any;
  8. stateFilters = [
  9. { text: "All", value: null },
  10. { text: "OK", value: "ok" },
  11. { text: "Not OK", value: "not_ok" },
  12. { text: "Alerting", value: "alerting" },
  13. { text: "No Data", value: "no_data" },
  14. { text: "Paused", value: "paused" }
  15. ];
  16. filters = {
  17. state: "ALL"
  18. };
  19. navModel: any;
  20. /** @ngInject */
  21. constructor(private backendSrv, private $location, navModelSrv) {
  22. this.navModel = navModelSrv.getNav("alerting", "alert-list", 0);
  23. var params = $location.search();
  24. this.filters.state = params.state || null;
  25. this.loadAlerts();
  26. }
  27. filtersChanged() {
  28. this.$location.search(this.filters);
  29. }
  30. loadAlerts() {
  31. this.backendSrv.get("/api/alerts", this.filters).then(result => {
  32. this.alerts = _.map(result, alert => {
  33. alert.stateModel = alertDef.getStateDisplayModel(alert.state);
  34. alert.newStateDateAgo = moment(alert.newStateDate)
  35. .fromNow()
  36. .replace(" ago", "");
  37. if (alert.evalData && alert.evalData.no_data) {
  38. alert.no_data = true;
  39. }
  40. return alert;
  41. });
  42. });
  43. }
  44. pauseAlertRule(alertId: any) {
  45. var alert = _.find(this.alerts, { id: alertId });
  46. var payload = {
  47. paused: alert.state !== "paused"
  48. };
  49. this.backendSrv
  50. .post(`/api/alerts/${alert.id}/pause`, payload)
  51. .then(result => {
  52. alert.state = result.state;
  53. alert.stateModel = alertDef.getStateDisplayModel(result.state);
  54. });
  55. }
  56. openHowTo() {
  57. appEvents.emit("show-modal", {
  58. src: "public/app/features/alerting/partials/alert_howto.html",
  59. modalClass: "confirm-modal",
  60. model: {}
  61. });
  62. }
  63. }
  64. coreModule.controller("AlertListCtrl", AlertListCtrl);