Merge branch 'xiaohuiz-master' into acknowledges

This commit is contained in:
Alexander Zobnin
2016-07-30 18:26:53 +03:00
3 changed files with 62 additions and 1 deletions

View File

@@ -47,6 +47,7 @@ function ZabbixAPIService($q, alertSrv, zabbixAPICoreService) {
},
// Handle API errors
function(error) {
console.log('Zabbix error: '+error.data);
if (isNotAuthorized(error.data)) {
return self.loginOnce().then(
function() {
@@ -113,6 +114,13 @@ function ZabbixAPIService($q, alertSrv, zabbixAPICoreService) {
////////////////////////////////
// Zabbix API method wrappers //
////////////////////////////////
acknowledgeEvent(eventid,message){
var params = {
eventids:eventid,
message:message
};
return this.request('event.acknowledge',params);
}
getGroups() {
var params = {

View File

@@ -94,6 +94,15 @@
<small>{{ack.message}}</small>
</td>
</tr>
<tr ng-if="trigger.newAct">
<td>
<small>{{trigger.newAct.time}}</small>
</td>
<td>
<small>{{trigger.newAct.user}}</small>
</td>
<td><input ng-model="trigger.newAct.message" size="80" ng-blur="ctrl.acknowledgeTrigger({keyCode:13},trigger,trigger.newAct)" ng-keyup="ctrl.acknowledgeTrigger($event,trigger,trigger.newAct)"/></td>
</tr>
</tbody>
</table>
</div>
@@ -127,6 +136,14 @@
bs-tooltip="'Acknowledges ({{trigger.acknowledges.length}})'">
<i class="fa fa-comments"></i>
</a>
<!-- Acknowledge events -->
<a ng-if="trigger.acknowledges === undefined"
role="button"
ng-click="ctrl.addAcknowledgeMessage(trigger)"
bs-tooltip="'acknowledge this event'">
<i class="fa fa-comments-o"></i>
</a>
</td>
</tr>
</tbody>

View File

@@ -59,10 +59,11 @@ var defaultTimeFormat = "DD MMM YYYY HH:mm:ss";
class TriggerPanelCtrl extends MetricsPanelCtrl {
/** @ngInject */
constructor($scope, $injector, $q, $element, datasourceSrv, templateSrv) {
constructor($scope, $injector, $q, $element, datasourceSrv, templateSrv,contextSrv) {
super($scope, $injector);
this.datasourceSrv = datasourceSrv;
this.templateSrv = templateSrv;
this.contextSrv = contextSrv;
this.triggerStatusMap = triggerStatusMap;
this.defaultTimeFormat = defaultTimeFormat;
@@ -227,6 +228,41 @@ class TriggerPanelCtrl extends MetricsPanelCtrl {
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 );
});
});
});
}
}
TriggerPanelCtrl.templateUrl = 'panel-triggers/module.html';