/**
* @ngdoc managers
* @name ZonaDeObservacaoManager
* @module s4c.managers.ZonaDeObservacaoManager
*
* @description
* `ZonaDeObservacaoManager` Componente para comunicação entre uma página html qualquer e o controller da diretiva
*
*
*/
(function () {
'use strict';
function ZonaDeObservacaoManager(MainState, ZonaObservacaoService, MapaService) {
var service = {
'basesConhecimento': [],
'bounds': {},
'circle': {},
'drawingInstance': null,
'area': {},
'data': {},
'zindex': 30,
'ativo': false,
/**
* @method salvar
* @param {*} data
*/
'salvar': function (data) {
var UserInfo = MainState.getManager('UserInfo');
return ZonaObservacaoService.salvarZO(data, UserInfo);
},
/**
* @method getTweetsZO
*/
'getTweetsZO': function () {
var zo = MainState.getDirective('zonaObservacao');
return zo.getTweets();
},
/**
* @method mostrarTweets
* @param {*} tweets
*/
'mostrarTweets': function (tweets) {
MapaService.adicionarTweets(tweets);
},
/**
* @method getBounds
*/
'getBounds': function () {
if (this.bounds) {
return this.bounds;
}
},
/**
* @method getZoom
*/
'getZoom': function () {
MapaService.pegarZoom(function (zoom) {
return zoom;
});
},
/**
* @method abrir
*/
'abrir': function () {
this.ativo = true;
var zo = MainState.getDirective('zonaObservacao');
this.basesConhecimento = [];
this.bounds = {};
this.circle = {};
this.area = {};
this.data = {};
zo.zerar();
MapaService.limparTweetsAtivos();
MapaService.removerDesenhosZonaObservacao();
MainState.detalhamentosAtivos.zonaObservacao = this;
},
/**
* @method reload
* @param {*} obj
*/
'reload': function (obj) {
var zo = MainState.getDirective('zonaObservacao');
service.bounds = obj;
service.area.setStyle({
fillColor: '#ddff00'
});
zo.buscarDados(obj);
},
/**
* @method abrirExistente
* @param {*} zona
* @param {*} alarmeData
*/
'abrirExistente': function (zona, alarmeData) {
this.ativo = true;
var zo = MainState.getDirective('zonaObservacao');
zo.buscarDados(zona);
if (typeof zona.geojson !== 'object') {
zona.geojson = JSON.parse(zona.geojson);
}
MapaService.limparTweetsAtivos();
MapaService.removerDesenhosZonaObservacao();
MapaService.removerZonaObservacao();
MapaService.desenharFromJSON(zona.geojson, alarmeData);
this.data = zona;
MainState.detalhamentosAtivos.zonaObservacao = this;
},
/**
* @method fechar
*/
'fechar': function () {
var zo = MainState.getDirective('zonaObservacao');
zo.zerar();
this.ativo = false;
this.data = {};
this.bounds = {};
MapaService.removerDesenhosZonaObservacao();
MapaService.removerZonaObservacao();
MapaService.limparTweetsAtivos();
MapaService.removerPoiClicado();
if (this.drawInstance) {
this.drawInstance.disable();
angular.element('.desenhar-area-content-zona_observacao a').removeClass('active');
delete this.drawInstance;
}
delete MainState.detalhamentosAtivos.zonaObservacao;
delete MainState.detalhamentosAtivos.detalhamento;
},
/**
* @method ativarKml
* @param {*} obj
* @param {*} camada
* @param {*} cb
*/
'ativarKml': function (obj, camada, cb) {
if (camada.tipo == 'ZIP') {
MapaService.ativarShapeFile(obj, camada, cb);
} else {
MapaService.ativarKml(obj, cb);
}
}
};
return service;
}
ZonaDeObservacaoManager.$inject = ['MainState', 'ZonaObservacaoService', 'MapaService'];
angular.module('s4c.managers')
.service('ZonaDeObservacaoManager', ZonaDeObservacaoManager);
})();