controller.js 2.98 KB
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;
				}
			}
		}]
	)