grafana/public/app/features/alerting/alert_list_ctrl.ts
2016-11-07 17:43:13 -08:00

69 lines
1.7 KiB
TypeScript

///<reference path="../../headers/common.d.ts" />
import angular from 'angular';
import _ from 'lodash';
import coreModule from '../../core/core_module';
import appEvents from '../../core/app_events';
import moment from 'moment';
import alertDef from './alert_def';
export class AlertListCtrl {
alerts: any;
stateFilters = [
{text: 'All', value: null},
{text: 'OK', value: 'ok'},
{text: 'Alerting', value: 'alerting'},
{text: 'No Data', value: 'no_data'},
];
filters = {
state: 'ALL'
};
/** @ngInject */
constructor(private backendSrv, private $location, private $scope) {
var params = $location.search();
this.filters.state = params.state || null;
this.loadAlerts();
}
filtersChanged() {
this.$location.search(this.filters);
}
loadAlerts() {
this.backendSrv.get('/api/alerts', this.filters).then(result => {
this.alerts = _.map(result, alert => {
alert.stateModel = alertDef.getStateDisplayModel(alert.state);
alert.newStateDateAgo = moment(alert.newStateDate).fromNow().replace(" ago", "");
return alert;
});
});
}
pauseAlertRule(alertId: any) {
var alert = _.find(this.alerts, {id: alertId});
var payload = {
paused: alert.state !== "paused"
};
this.backendSrv.post(`/api/alerts/${alert.id}/pause`, payload).then(result => {
alert.state = result.state;
alert.stateModel = alertDef.getStateDisplayModel(result.state);
});
}
openHowTo() {
appEvents.emit('show-modal', {
src: 'public/app/features/alerting/partials/alert_howto.html',
modalClass: 'confirm-modal',
model: {}
});
}
}
coreModule.controller('AlertListCtrl', AlertListCtrl);