/**
* @ngdoc directives
* @name RotasOlimpicasFilterService
* @module s4c.directives.RotasOlimpicasFilter.RotasOlimpicasFilterService
*
* @description
* `RotasOlimpicasFilterService` Componente para acesso ao api do backend e/ou comunicação entre controllers
*
*
*/
(function () {
angular.module('s4c.components.rotas-olimpicas')
.factory('RotasOlimpicasFilter', RotasOlimpicasFilter);
function RotasOlimpicasFilter() {
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': []
}
});
/**
* @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;
}
}());