modalController.js 3.4 KB
angular.module('focaAdminSeguimiento').controller('focaModalMarcadoresController', [
    '$uibModalInstance', '$scope', '$filter', 'parametros',
    function($uibModalInstance, $scope, $filter, parametros) {
        init();

        $scope.selectPage = selectPage;
        
        $scope.select = function(marcador, indice) {
            $uibModalInstance.close({
                latitud: marcador.latitud,
                longitud: marcador.longitud,
                indice: indice
            });
        };

        $scope.cancel = function() {
            $uibModalInstance.dismiss('cancel');
        };

        function init() {
            $scope.numPerPage = 10;
            $scope.currentPage = 1;
            $scope.currentPageMarcadores = [];
            $scope.actividad = parametros.actividad;
            $scope.marcadores = arrayDatos(angular.copy(parametros.marcadores));

            $scope.lastPage = Math.ceil(
                $scope.marcadores.length / $scope.numPerPage
            );

            selectPage(1);
        }

        function selectPage(page) {
            var start = (page - 1) * $scope.numPerPage;
            var end = start + $scope.numPerPage;
            $scope.paginas = [];
            $scope.paginas = calcularPages(page);
            $scope.currentPageMarcadores = $scope.marcadores.slice(start, end);
            $scope.currentPage = page;
        }

        function calcularPages(paginaActual) {
            var paginas = [];
            paginas.push(paginaActual);

            if (paginaActual - 1 > 1) {
                
                paginas.unshift(paginaActual - 1);
                if (paginaActual - 2 > 1) {
                    paginas.unshift(paginaActual - 2);
                }
            }

            if (paginaActual + 1 < $scope.lastPage) {
                paginas.push(paginaActual + 1);
                if (paginaActual + 2 < $scope.lastPage) {
                    paginas.push(paginaActual + 2);
                }
            }

            if (paginaActual !== 1) {
                paginas.unshift(1);
            }

            if (paginaActual !== $scope.lastPage) {
                paginas.push($scope.lastPage);
            }

            return paginas;
        }

        function arrayDatos(marcadores) {
            marcadores.reverse();

            for (var i = marcadores.length - 1; i >= 0; i--) {
                var marcador = marcadores[i];

                if ($scope.actividad === 'Nota de pedido') {
                    marcador.numero = $filter('comprobante')([
                        marcador.notaPedido.sucursal, 
                        marcador.notaPedido.numeroNotaPedido
                    ]);

                    marcador.cliente = $filter('rellenarDigitos')(
                        marcador.notaPedido.cliente.COD, 3) + ' - ' +
                        marcador.notaPedido.cliente.NOM;
                }

                if ($scope.actividad === 'Entrega de producto') {

                }

                if ($scope.actividad === 'Cobranza') {
                    marcador.numero = $filter('comprobante')([
                        marcador.recibo.PVE, 
                        marcador.recibo.NCO
                    ]);

                    marcador.cliente = $filter('rellenarDigitos')(
                        marcador.recibo.CLI, 3) + ' - ' +
                        marcador.recibo.CFE;
                }
            }

            return marcadores;
        }

    }
]);