Source: managers/AreaAtuacaoManager.js

/**
 * @ngdoc managers
 * @name AreaAtuacaoManager
 * @module s4c.managers.AreaAtuacaoManager
 *
 * @description
 * `AreaAtuacaoManager` Componente para comunicação entre uma página html qualquer e o controller da diretiva
 * 
 * 
 */
(function () {
    'use strict';

    function AreaAtuacaoManager(MainState, $q, $mdDialog, MapaService) {
        var subItens = new L.LayerGroup([]);

        return {
            'ativo': false,
            'activeWindow': false,
            'top': 10,
            'right': 10,
            'data': {},
            'camerasProximas': [],
            'poisProximos': [],
            'incidentesProximos': [],
            'poisAlertados': [],
            'poiCamadas': [],
            'subItens': new L.LayerGroup([]),
            'poiAtivo': -1,
            /**
             * @method abrirAreaAtuacao
             * @param {*} id 
             */
            'abrirAreaAtuacao': function (id) {
                this.ativo = true;
                var areaAtuacao = MainState.getDirective('areaAtuacao');
                areaAtuacao.buscarRegiao(id);
            },
            /**
             * @method voarParaSubItem
             * @param {*} data 
             * @param {*} obj 
             */
            'voarParaSubItem': function (data, obj) {
                var coords;

                MainState.managers.HabilitarCamadasManager.habilitarCamadas(obj);

                if (typeof obj.geojson === 'string') {
                    coords = JSON.parse(obj.geojson);
                } else {
                    coords = obj.geojson;
                }
                var coords2 = JSON.parse(data.poiGeometricoBuffer);
                var centroid = turf.centroid(coords2);

                MapaService.destacarSubItem(coords);
            },
            /**
             * @method fechar
             * @param {*} force 
             */
            'fechar': function (force) {
                var self = this;

                if (!force) {
                    self.ativo = false;

                } else {
                    MapaService.changeClass(false);
                    self.ativo = false;
                }

                var areaAtuacao = MainState.getDirective('areaAtuacao');
                areaAtuacao.fechar();
                MapaService.removerPoiClicado();
                MapaService.removerLinhas();
                MapaService.removerLayers(subItens.getLayers());
                subItens.clearLayers();
            }
        };
    }

    AreaAtuacaoManager.$inject = [
        'MainState',
        '$q',
        '$mdDialog',
        'MapaService'
    ];

    angular.module('s4c.managers')
        .service('AreaAtuacaoManager', AreaAtuacaoManager);
})();