/**
* @ngdoc directives
* @name Modulo
* @module s4c.directives.modulos.ModuloService
*
* @description
* `ModuloService` Componente para acesso ao api do backend e/ou comunicação entre controllers
*
*
*/
(function () {
angular.module('s4c.components.modulo')
.factory('Modulo', Modulo);
Modulo.$inject = [
'MainState',
'Base',
'CamadasService'
];
function Modulo(MainState, Base, CamadasService) {
var service = {
initModulo: initModulo,
reInitModules: reInitModules
};
var modulos = [];
/**
* @method initModulo
* @param {*} modulo
* @param {*} noFilter
*/
function initModulo(modulo, noFilter) {
if (!noFilter) {
_initFilters();
}
if (modulo != null) {
if (modulo.Face != null && modulo.Face.menus != null && modulo.Face.menus.length > 0) {
_.each(modulo.Face.menus, function (menu) {
if (menu.url && menu.url.indexOf('incidente') !== -1) { //Só carrega pelo MSI
return;
}
if (menu.urlSubMenus.indexOf('menuCamada/zona_observacao') != -1) {
CamadasService.exibirZonasDeObservacao();
} else {
CamadasService.toggleMenu(menu);
}
});
if (modulos.indexOf(modulo) <= -1) {
modulos.push(modulo);
}
} else if (modulo.FaceId != null && modulo.Face == null) {
Base.obter('faces/' + modulo.FaceId).then(function (response) {
modulo.Face = response;
initModulo(modulo);
});
}
}
}
/**
* @method reInitModules
*/
function reInitModules() {
_.each(modulos, function (modulo) {
initModulo(modulo, true);
});
}
/**
* @method _initFilters
*/
function _initFilters() {
if (MainState.getDirective('incidentes') != null) {
MainState.getDirective('incidentes').initFilter();
}
}
return service;
}
}());