controller.js 3.63 KB
angular.module('focaModalPetroleras')
	.controller('modalPetrolerasCtrl', [
		'$filter',
		'$scope',
		'$uibModalInstance',
		'focaPetrolerasService',
		function ($filter, $scope, $uibModalInstance, focaPetrolerasService) {
			var json = {razonCuitCod: ''};

			focaPetrolerasService.getPetroleras(json).then(
				function (res) {
					for (var i = res.data.length - 1; i >= 0; i--) {
						if (res.data[i].COD === 0) {
							delete res.data[i];
						}
					}

					$scope.petroleras = res.data;
					$scope.search();
				});

			// pagination
			$scope.numPerPage = 10;
			$scope.currentPage = 1;
			$scope.filteredPetroleras = [];
			$scope.currentPagePetroleras = [];
			$scope.selectedPetroleras = -1;

			$scope.search = function () {
				$scope.filteredPetroleras = $filter('filter')(
					$scope.petroleras, {$: $scope.filters}
				);

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

				$scope.resetPage();
			};

			$scope.resetPage = function () {
				$scope.currentPage = 1;
				$scope.selectPage(1);
			};

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

			$scope.select = function(petrolera) {
				$uibModalInstance.close(petrolera);
			};

			$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.itemPetrolera = 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.selectedPetroleras = 0;
			}

			function anterior() {
			    if ($scope.selectedPetroleras === 0 && $scope.currentPage > 1) {
			        retrocederPagina();
			    } else {
			        $scope.selectedPetroleras--;
			    }
			}

			function siguiente() {
			    if ($scope.selectedPetroleras < $scope.currentPagePetroleras.length - 1 ) {
			        $scope.selectedPetroleras++;
			    } else {
			            avanzarPagina();
			    }
			}

			function retrocederPagina() {
			    if ($scope.currentPage > 1) {
			        $scope.selectPage($scope.currentPage - 1);
			        $scope.selectedPetroleras = $scope.numPerPage - 1;
			    }
			}

			function avanzarPagina() {
			    if ($scope.currentPage < $scope.lastPage) {
			        $scope.selectPage($scope.currentPage + 1);
			        $scope.selectedPetroleras = 0;
			    }
			}
		}]
	);