alert_list_ctrl.ts 1.7 KB

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