alert_list_ctrl.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. ///<reference path="../../headers/common.d.ts" />
  2. import angular from 'angular';
  3. import _ from 'lodash';
  4. import moment from 'moment';
  5. import {coreModule, appEvents} from 'app/core/core';
  6. import alertDef from './alert_def';
  7. export class AlertListCtrl {
  8. alerts: any;
  9. stateFilters = [
  10. {text: 'All', value: null},
  11. {text: 'OK', value: '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, private $scope, navModelSrv) {
  22. this.navModel = navModelSrv.getAlertingNav(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).fromNow().replace(" ago", "");
  35. if (alert.evalData && alert.evalData.no_data) {
  36. alert.no_data = true;
  37. }
  38. return alert;
  39. });
  40. });
  41. }
  42. pauseAlertRule(alertId: any) {
  43. var alert = _.find(this.alerts, {id: alertId});
  44. var payload = {
  45. paused: alert.state !== "paused"
  46. };
  47. this.backendSrv.post(`/api/alerts/${alert.id}/pause`, payload).then(result => {
  48. alert.state = result.state;
  49. alert.stateModel = alertDef.getStateDisplayModel(result.state);
  50. });
  51. }
  52. openHowTo() {
  53. appEvents.emit('show-modal', {
  54. src: 'public/app/features/alerting/partials/alert_howto.html',
  55. modalClass: 'confirm-modal',
  56. model: {}
  57. });
  58. }
  59. }
  60. coreModule.controller('AlertListCtrl', AlertListCtrl);