mirror of
https://github.com/grafana/grafana.git
synced 2025-02-15 01:53:33 -06:00
71 lines
1.9 KiB
JavaScript
71 lines
1.9 KiB
JavaScript
/*jshint globalstrict:true */
|
|
/*global angular:true */
|
|
'use strict';
|
|
|
|
angular.module('kibana.services', [])
|
|
.service('eventBus', function($rootScope) {
|
|
|
|
this.broadcast = function(from,to,type,data) {
|
|
if(_.isUndefined(data))
|
|
var data = from
|
|
|
|
//console.log('Sent: '+type + ' to ' + to + ' from ' + from + ': ' + angular.toJson(data))
|
|
$rootScope.$broadcast(type,{
|
|
from: from,
|
|
to: to,
|
|
data: data
|
|
});
|
|
}
|
|
|
|
// This sets up an $on listener that checks to see if the event (packet) is
|
|
// addressed to the scope in question and runs the registered function if it
|
|
// is.
|
|
this.register = function(scope,type,fn) {
|
|
scope.$on(type,function(event,packet){
|
|
var _id = scope.$id;
|
|
var _to = packet.to;
|
|
var _from = packet.from;
|
|
var _group = (!(_.isUndefined(scope.panel))) ? scope.panel.group : ["NONE"]
|
|
|
|
//console.log('registered:' + type + " for " + scope.panel.title + " " + scope.$id)
|
|
if(!(_.isArray(_to)))
|
|
_to = [_to];
|
|
if(!(_.isArray(_group)))
|
|
_group = [_group];
|
|
|
|
if(_.intersection(_to,_group).length > 0 ||
|
|
_.indexOf(_to,_id) > -1 ||
|
|
_.indexOf(_to,'ALL') > -1
|
|
) {
|
|
//console.log('Got: '+type + ' from ' + _from + ' to ' + _to + ': ' + angular.toJson(packet.data))
|
|
fn(event,packet.data);
|
|
}
|
|
});
|
|
}
|
|
|
|
})
|
|
.service('timer', function($timeout) {
|
|
// This service really just tracks a list of $timeout promises to give us a
|
|
// method for cancelling them all when we need to
|
|
|
|
var timers = [];
|
|
|
|
this.register = function(promise) {
|
|
timers.push(promise);
|
|
return promise;
|
|
}
|
|
|
|
this.cancel = function(promise) {
|
|
timers = _.without(timers,promise)
|
|
$timeout.cancel(promise)
|
|
}
|
|
|
|
this.cancel_all = function() {
|
|
_.each(timers, function(t){
|
|
$timeout.cancel(t);
|
|
});
|
|
timers = new Array();
|
|
}
|
|
|
|
});
|