Acknowledges: use tooltip instead inner table.

This commit is contained in:
Alexander Zobnin
2016-07-31 11:17:22 +03:00
parent 78ca95a8de
commit 24969cd560
5 changed files with 185 additions and 98 deletions

View File

@@ -16,6 +16,7 @@ import moment from 'moment';
import * as utils from '../datasource-zabbix/utils';
import {MetricsPanelCtrl} from 'app/plugins/sdk';
import {triggerPanelEditor} from './editor';
import './ack-tooltip.directive';
import './css/panel_triggers.css!';
var defaultSeverity = [
@@ -59,7 +60,7 @@ var defaultTimeFormat = "DD MMM YYYY HH:mm:ss";
class TriggerPanelCtrl extends MetricsPanelCtrl {
/** @ngInject */
constructor($scope, $injector, $q, $element, datasourceSrv, templateSrv,contextSrv) {
constructor($scope, $injector, $q, $element, datasourceSrv, templateSrv, contextSrv) {
super($scope, $injector);
this.datasourceSrv = datasourceSrv;
this.templateSrv = templateSrv;
@@ -123,11 +124,11 @@ class TriggerPanelCtrl extends MetricsPanelCtrl {
showEvents)
.then(triggers => {
return _.map(triggers, trigger => {
var triggerObj = trigger;
let triggerObj = trigger;
// Format last change and age
trigger.lastchangeUnix = Number(trigger.lastchange);
var timestamp = moment.unix(trigger.lastchangeUnix);
let timestamp = moment.unix(trigger.lastchangeUnix);
if (self.panel.customLastChangeFormat) {
// User defined format
triggerObj.lastchange = timestamp.format(self.panel.lastChangeFormat);
@@ -172,8 +173,12 @@ class TriggerPanelCtrl extends MetricsPanelCtrl {
if (event) {
trigger.acknowledges = _.map(event.acknowledges, ack => {
var time = new Date(+ack.clock * 1000);
ack.time = time.toLocaleString();
let timestamp = moment.unix(ack.clock);
if (self.panel.customLastChangeFormat) {
ack.time = timestamp.format(self.panel.lastChangeFormat);
} else {
ack.time = timestamp.format(self.defaultTimeFormat);
}
ack.user = ack.alias + ' (' + ack.name + ' ' + ack.surname + ')';
return ack;
});
@@ -225,41 +230,15 @@ class TriggerPanelCtrl extends MetricsPanelCtrl {
trigger.showComment = !trigger.showComment;
}
switchAcknowledges(trigger) {
trigger.showAcknowledges = !trigger.showAcknowledges;
}
addAcknowledgeMessage(trigger){
trigger.showAcknowledges = true;
trigger.newAct={
time:new Date(),
user:this.contextSrv.user.name+'(Grafana)',
eventid:trigger.lastEvent.eventid,
message:''
};
}
acknowledgeTrigger($event,trigger,newAct){
if($event.keyCode!=13) return;
if(newAct.message.trim() === ""){
delete trigger.newAct;
trigger.showAcknowledges = false;
return;
}
this.datasourceSrv.get(this.panel.datasource).then(datasource => {
var zabbix = datasource.zabbixAPI;
zabbix.acknowledgeEvent(newAct.eventid,newAct.user+': '+newAct.message)
.then(rs=>{
zabbix.getAcknowledges(rs.eventids).then(events => {
_.each(events, event => {
trigger.acknowledges = _.map(event.acknowledges, ack => {
var time = new Date(+ack.clock * 1000);
ack.time = time.toLocaleString();
ack.user = ack.alias + ' (' + ack.name + ' ' + ack.surname + ')';
return ack;
});
});
delete trigger.newAct;
console.log('event id '+ rs.eventids.join() + ' new message added: ' + ack.message );
});
acknowledgeTrigger(trigger, message) {
let self = this;
let eventid = trigger.lastEvent.eventid;
let grafana_user = this.contextSrv.user.name;
let ack_message = grafana_user + ' (Grafana): ' + message;
return this.datasourceSrv.get(this.panel.datasource).then(datasource => {
let zabbix = datasource.zabbixAPI;
return zabbix.acknowledgeEvent(eventid, ack_message).then(() => {
self.refresh();
});
});
}