alert_list_ctrl.ts 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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: 'Alerting', value: 'alerting'},
  12. {text: 'No Data', value: 'no_data'},
  13. {text: 'Paused', value: 'paused'},
  14. ];
  15. filters = {
  16. state: 'ALL'
  17. };
  18. navModel: any;
  19. /** @ngInject */
  20. constructor(private backendSrv, private $location, navModelSrv) {
  21. this.navModel = navModelSrv.getAlertingNav(0);
  22. var params = $location.search();
  23. this.filters.state = params.state || null;
  24. this.loadAlerts();
  25. }
  26. filtersChanged() {
  27. this.$location.search(this.filters);
  28. }
  29. loadAlerts() {
  30. this.backendSrv.get('/api/alerts', this.filters).then(result => {
  31. this.alerts = _.map(result, alert => {
  32. alert.stateModel = alertDef.getStateDisplayModel(alert.state);
  33. alert.newStateDateAgo = moment(alert.newStateDate).fromNow().replace(" ago", "");
  34. if (alert.evalData && alert.evalData.no_data) {
  35. alert.no_data = true;
  36. }
  37. return alert;
  38. });
  39. });
  40. }
  41. pauseAlertRule(alertId: any) {
  42. var alert = _.find(this.alerts, {id: alertId});
  43. var payload = {
  44. paused: alert.state !== "paused"
  45. };
  46. this.backendSrv.post(`/api/alerts/${alert.id}/pause`, payload).then(result => {
  47. alert.state = result.state;
  48. alert.stateModel = alertDef.getStateDisplayModel(result.state);
  49. });
  50. }
  51. openHowTo() {
  52. appEvents.emit('show-modal', {
  53. src: 'public/app/features/alerting/partials/alert_howto.html',
  54. modalClass: 'confirm-modal',
  55. model: {}
  56. });
  57. }
  58. }
  59. coreModule.controller('AlertListCtrl', AlertListCtrl);