diff --git a/gulpfile.js b/gulpfile.js index 41d2262..7eba56c 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -68,6 +68,10 @@ gulp.task('clean-post-install', function() { .pipe(clean()); }); +gulp.task('watch', function() { + gulp.watch([paths.srcJS, paths.srcViews], ['uglify']) +}); + gulp.task('webserver', function() { pump [ connect.server({port: 3000}) diff --git a/src/js/controllerModal.js b/src/js/controllerModal.js new file mode 100644 index 0000000..e3f4953 --- /dev/null +++ b/src/js/controllerModal.js @@ -0,0 +1,170 @@ +angular.module('focaModal') + .controller('focaModalController', [ + '$timeout', + '$filter', + '$scope', + '$uibModalInstance', + 'focaModalService', + 'columnas', + 'query', + 'titulo', + function($timeout, $filter, $scope, $uibModalInstance, focaModalService, + columnas, query, titulo) { + + $scope.filters = ''; + $scope.columnas = columnas; + $scope.titulo = titulo + $scope.entidades = []; + $scope.primerBusqueda = false; + $scope.searchLoading = false; + // pagination + $scope.numPerPage = 10; + $scope.currentPage = 1; + $scope.filteredEntidades = []; + $scope.currentPageEntidades = []; + $scope.selectedEntidad = -1; + + $scope.busquedaPress = function(key) { + if (key === 13) { + $scope.searchLoading = true; + focaModalService.getEntidad($scope.filters, query).then( + function(res) { + $scope.searchLoading = false; + $scope.primerBusqueda = true; + $scope.entidades = res.data; + $scope.search(true); + primera(); + } + ); + } + }; + + $scope.search = function(pressed) { + if($scope.entidades.length > 0) { + $scope.filteredEntidades = $filter('filter')( + $scope.entidades, { $: $scope.filters } + ); + + $scope.lastPage = Math.ceil( + $scope.filteredEntidades.length / $scope.numPerPage + ); + $scope.resetPage(); + }else if(pressed){ + $timeout(function() { + angular.element('#search')[0].focus(); + $scope.filters = ''; + }); + } + }; + + $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.paginas = []; + $scope.paginas = calcularPages(page); + $scope.currentPageEntidades = $scope.filteredEntidades.slice(start, end); + $scope.currentPage = page; + }; + + $scope.select = function(vendedor) { + $uibModalInstance.close(vendedor); + }; + + $scope.cancel = function() { + $uibModalInstance.dismiss('cancel'); + }; + + $scope.busquedaDown = function(key) { + if (key === 40) { + primera(key); + } + }; + + $scope.itemEntidad = 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.selectedEntidad = 0; + } + + function anterior() { + if ($scope.selectedEntidad === 0 && $scope.currentPage > 1) { + retrocederPagina(); + } else { + $scope.selectedEntidad--; + } + } + + function siguiente() { + if ($scope.selectedEntidad < $scope.currentPageEntidades.length - 1) { + $scope.selectedEntidad++; + } else { + avanzarPagina(); + } + } + + function retrocederPagina() { + if ($scope.currentPage > 1) { + $scope.selectPage($scope.currentPage - 1); + $scope.selectedEntidad = $scope.numPerPage - 1; + } + } + + function avanzarPagina() { + if ($scope.currentPage < $scope.lastPage) { + $scope.selectPage($scope.currentPage + 1); + $scope.selectedEntidad = 0; + } + } + }] + ); diff --git a/src/js/service.js b/src/js/service.js index e4fedee..d70818a 100644 --- a/src/js/service.js +++ b/src/js/service.js @@ -1,7 +1,7 @@ angular.module('focaModal') .service('focaModalService', [ - '$uibModal', - function($uibModal) { + '$uibModal', 'API_ENDPOINT', '$http', + function($uibModal, API_ENDPOINT, $http) { return { confirm: function(textoModal) { return $uibModal.open({ @@ -30,6 +30,27 @@ angular.module('focaModal') return resultado; } ) + }, + modal: function(columnas, query, titulo) { + return $uibModal.open({ + templateUrl: 'foca-modal.html', + controller: 'focaModalController', + animation: false, + backdrop: false, + resolve: { + columnas: function() { return columnas; }, + query: function() { return query; }, + titulo: function() {return titulo;} + } + }) + .result.then( + function(resultado) { + return resultado; + } + ) + }, + getEntidad: function(filters, query) { + return $http.get(API_ENDPOINT.URL + query, {nombre: filters}); } }; } diff --git a/src/views/foca-modal.html b/src/views/foca-modal.html new file mode 100644 index 0000000..d533420 --- /dev/null +++ b/src/views/foca-modal.html @@ -0,0 +1,109 @@ +
+ | + | |
---|---|---|
+ No se encontraron resultados. + | +||
+ | + + | ++ + | +