osm-directive.js 4.4 KB
angular.module('focaAdminSeguimiento').directive('osm', function() {
    return {
        restrict: 'E',
        link: function(scope, el, attrs) {
            var contenedor = document.createElement('div');
            el.append(contenedor);
            scope.map = L.map(contenedor).setView([attrs.latitud, attrs.longitud], attrs.zoom);
            L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(scope.map);
        },
        controller: ['$scope', '$filter', function($scope, $filter) {
                $scope.markers = [];
            $scope.$watch('marcadores', function() {
                for(var i in $scope.markers) {
                    $scope.map.removeLayer($scope.markers[i]);
                }
                
                $scope.markers = [];
                angular.forEach($scope.marcadores, function(marcador) {
                    var observacion = '';
                                        
                    if ($scope.parametros.actividad === 'Nota de pedido') {
                        observacion +=
                            'Vendedor: ' + marcador.notaPedido.idVendedor + ' - ' +
                            (
                                marcador.notaPedido.vendedor ? 
                                marcador.notaPedido.vendedor.NomVen : 
                                ''
                            ) + '<br/>';
                        observacion += 'Fecha: ' +
                            $filter('date')(marcador.fecha.slice(0,10), 'dd/MM/yyyy') + ' ' +
                            marcador.fecha.slice(11,19) + '<br/>';
                        observacion += 'Nº: ' + $filter('comprobante')([
                            marcador.notaPedido.sucursal, 
                            marcador.notaPedido.numeroNotaPedido
                        ]) + '<br/>';
                        observacion += 'Cliente: ' + 
                            marcador.notaPedido.cliente.NOM + '<br/>';
                        if ($scope.parametros.individual) {
                            observacion += 
                                'Total: ' + $filter('currency')(marcador.notaPedido.total, '$');
                        } else {
                            observacion += 'Cantidad de nota de pedido: ' +
                                marcador.cantidad + '<br/>';
                            observacion += 'Total Vendido: ' +
                                $filter('currency')(marcador.total, '$');
                        }
                    } else {
                        observacion += 'Vehiculo: ' +
                            marcador.remito.hojaRuta.idVehiculo + '<br/>';
                        observacion += 'Fecha: ' +
                            $filter('date')(marcador.fecha.slice(0,10), 'dd/MM/yyyy') + ' ' +
                            marcador.fecha.slice(11,19) + '<br/>';
                        observacion +=  'Hoja de ruta: ' + $filter('comprobante')([
                                marcador.remito.hojaRuta.sucursal, 
                                marcador.remito.hojaRuta.numeroHojaRuta
                            ]) + '<br/>';
                        observacion +=  'Remito: ' + $filter('comprobante')([
                                marcador.remito.sucursal, 
                                marcador.remito.numeroRemito
                            ]) + '<br/>';
                        observacion += 'Cliente: ' + 
                            marcador.remito.cliente.NOM + '<br/>';
                        if ($scope.parametros.individual) {
                            observacion += 'Producto: ' +
                                marcador.remito.articuloRemito.descripcion + '<br/>';
                            observacion += 'Cantidad entregada: ' +
                                marcador.remito.carga + '<br/>';
                        } else {
                            observacion += 'Cantidad de entregas: ' +
                                marcador.cantidad + '<br/>';
                        }
                    }

                    $scope.markers.push(
                        L.marker([marcador.latitud, marcador.longitud]).addTo($scope.map)
                        .bindPopup(observacion)
                    );

                    $scope.markers[0].openPopup();
                });
            });
        }],
        scope: {
            latitud: '=',
            longitud: '=',
            zoom: '=',
            marcadores: '=',
            parametros: '='
        }
    };
});