angular.module('focaLogisticaPedidoRuta').directive('focaLogistica', function() { return { restrict: 'E', link: function(scope, el, attrs) { var contenedor = document.createElement('div'); contenedor.className = 'border border-light rounded'; 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', '$compile', 'focaModalService', function($scope, $filter, $compile, focaModalService) { $scope.markers = []; $scope.verProductos = function(id) { var parametrosModal = { titulo: 'Productos', query: '/articulos/remito/' + id, soloMostrar: true, size: 'md', columnas: [ { nombre: 'Producto', propiedad: 'descripcion' }, { nombre: 'Cantidad', propiedad: 'cantidad' } ] }; focaModalService.modal(parametrosModal).then(); }; $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 = 'Vendedor: ' + marcador.notaPedido.idVendedor + ' - ' + ( marcador.notaPedido.vendedor ? marcador.notaPedido.vendedor.NOM : '' ) + '
'; observacion += 'Fecha: ' + $filter('date')(marcador.fecha.slice(0,10), 'dd/MM/yyyy') + ' ' + marcador.fecha.slice(11,19) + '
'; observacion += 'Remito Nº: ' + $filter('comprobante')([ marcador.notaPedido.remito.sucursal, marcador.notaPedido.remito.numeroRemito ]) + '
'; observacion += 'Cliente: ' + marcador.notaPedido.cliente.NOM; // if($scope.parametros.individual) { observacion = 'Orden: ' + marcador.orden + '
' + observacion; if (marcador.distancia) { observacion += '
Distancia a casa central: ' + marcador.distancia + 'km'; } var icon; if (marcador.notaPedido.remito.idUsuarioProceso) { observacion += '
'; observacion += ''; observacion += 'Fecha de entrega: ' + marcador.notaPedido.remito .cisternaMovimientos[0].cisternaCarga.fechaReparto.substring(0, 10); observacion += '
'; observacion += 'Vehículo: ' + marcador.notaPedido.remito .cisternaMovimientos[0].cisternaCarga.cisterna.vehiculo.codigo; observacion += '
'; observacion += 'Transportista: ' + marcador.notaPedido.remito .cisternaMovimientos[0].cisternaCarga.cisterna.vehiculo.transportista .NOM; observacion += '
'; //Asignado ROJO icon = new L.Icon({ iconUrl: 'img/marker-icon-2x-red.png', shadowUrl: 'img/marker-shadow.png', iconSize: [25, 41], iconAnchor: [12, 41], popupAnchor: [1, -34], shadowSize: [41, 41] }); } else { observacion += '
'; observacion += '
(Arrastrar icono)'; observacion += ''; //Sin asignar VERDE icon = new L.Icon({ iconUrl: 'img/marker-icon-2x-green.png', shadowUrl: 'img/marker-shadow.png', iconSize: [25, 41], iconAnchor: [12, 41], popupAnchor: [1, -34], shadowSize: [41, 41] }); } //COMPILO HTML PARA QUE FUNCIONE BOTON EN POPUP observacion = '
' + observacion + '
'; var compiledHtml = $compile(angular.element(observacion))($scope); $scope.markers.push( L.marker( [marcador.latitud, marcador.longitud], {icon: icon}) .addTo($scope.map) .bindPopup(compiledHtml[0]) .bindTooltip('Haga click para seleccionar') ); //abre marcador del primer punto //$scope.markers[0].openPopup(); }); }); }], scope: { latitud: '=', longitud: '=', zoom: '=', marcadores: '=', parametros: '=' } }; });