mirror of
https://github.com/grafana/grafana.git
synced 2025-02-12 08:35:43 -06:00
69 lines
1.7 KiB
TypeScript
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);
|
|
|