/**
* @ngdoc directives
* @name RotasUnificadasFilterService
* @module s4c.directives.rotasunificadasFilter.RotasUnificadasFilterService
*
* @description
* `RotasUnificadasFilterService` Componente para acesso a api do backend e/ou comunicação entre controllers
*
*
*/
(function () {
angular.module('s4c.components.rotas-unificadas')
.factory('RotasUnificadasFilter', [RotasUnificadasFilter]);
function RotasUnificadasFilter() {
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': [],
'rotaUnificadasRemoved': [],
'tempoRotaAtualiazado': [],
'rotas': []
}
});
/**
* @method on
* @param {*} eventName
* @param {*} callback
*/
function on(eventName, callback) {
self.events[eventName].push(callback);
}
/**
* @method trigger
* @param {*} eventName
* @param {*} args
*/
function trigger(eventName, args) {
_.each(self.events[eventName], function (callback) {
callback(args);
});
}
}
return service;
}
}());