Source: managers/ZonaDeObservacaoManager.js

/**
 * @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);
})();