angular.module('focaModalVendedores') .controller('modalVendedoresCtrl', [ '$filter', '$scope', '$uibModalInstance', 'focaVendedoresService', function ($filter, $scope, $uibModalInstance, focaVendedoresService) { var json = { nombre: '' } focaVendedoresService.getVendedores(json).then( function (res) { $scope.vendedores = res.data; $scope.search(); }); // pagination $scope.numPerPage = 10; $scope.currentPage = 1; $scope.filteredVendedores = []; $scope.currentPageVendedores = []; $scope.selectVendedores = -1; $scope.search = function () { $scope.filteredVendedores = $filter('filter')($scope.vendedores, { $: $scope.filters }); $scope.resetPage(); } $scope.resetPage = function () { $scope.currentPage = 1; $scope.selectPage(1); } $scope.selectPage = function (page) { var start = (page - 1) * $scope.numPerPage; var end = start + $scope.numPerPage; $scope.currentPageVendedores = $scope.filteredVendedores.slice(start, end); } $scope.select = function (vendedor) { $uibModalInstance.close(vendedor); } $scope.cancel = function () { $uibModalInstance.dismiss('cancel'); } $scope.busquedaDown = function (key) { if (key === 40) { primera(key); } }; $scope.busquedaPress = function (key) { if (key === 13) { primera(key); } }; $scope.itemProducto = function (key) { if (key === 38) { anterior(key); } if (key === 40) { siguiente(key); } if (key === 37) { retrocederPagina(); } if (key === 39) { avanzarPagina(); } }; 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 primera() { $scope.selectedProducto = 0; } function anterior() { if ($scope.selectedProducto === 0 && $scope.currentPage > 1) { retrocederPagina(); } else { $scope.selectedProducto--; } } function siguiente() { if ($scope.selectedProducto < $scope.currentPageProductos.length - 1) { $scope.selectedProducto++; } else { avanzarPagina(); } } function retrocederPagina() { if ($scope.currentPage > 1) { $scope.selectPage($scope.currentPage - 1); $scope.selectedProducto = $scope.numPerPage - 1; } } function avanzarPagina() { if ($scope.currentPage < $scope.lastPage) { $scope.selectPage($scope.currentPage + 1); $scope.selectedProducto = 0; } } }] )