/**
* @ngdoc directives
* @name ZonasDeObservacaoFilterService
* @module s4c.directives.zonasdeobservadorfilter.ZonasDeObservacaoFilterService
*
* @description
* `ZonasDeObservacaoFilterService` Componente para acesso a api do backend e/ou comunicação entre controllers
*
*
*/
(function () {
angular.module('s4c.components.zonas-de-observacao')
.factory('ZonasDeObservacaoFilter', ZonasDeObservacaoFilter);
function ZonasDeObservacaoFilter() {
var service = {
_filtros: {},
getInstance: getInstance,
limparFiltros: limparFiltros
};
/**
* @method getInstance
* @param {*} id
*/
function getInstance(id) {
if (!service._filtros[id]) {
service._filtros[id] = new Service()
}
return service._filtros[id];
}
/**
* @method limparFiltros
*/
function limparFiltros() {
_.each(service._filtros, function (filtro) {
_.each(filtro.categorias, function (categoria) {
categoria.ativo = false;
});
});
}
function Service() {
var self = this;
angular.extend(self, {
on: on,
trigger: trigger,
events: {
'filterChanged': [],
'filterChangedZona': [],
'removedZonaObs': [],
'reloadZonaObs': [],
'alarmesConfigurados': []
}
});
function on(eventName, callback) {
self.events[eventName].push(callback);
}
function trigger(eventName, args) {
_.each(self.events[eventName], function (callback) {
callback(args);
});
}
}
return service;
}
}());