diff --git a/cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java b/cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java index 6a60af5..b5669cc 100644 --- a/cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java +++ b/cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java @@ -203,6 +203,18 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen list.add(new Dominio("statusProcesso", "Concluído", "CONCLUIDO", 1L)); list.add(new Dominio("statusProcesso", "Em andamento", "EM_ANDAMENTO", 2L)); + + list.add(new Dominio("filtroPesquisa", "Ambos", "AMBOS", 0L)); + list.add(new Dominio("filtroPesquisa", "Processo", "PROCESSO", 1L)); + list.add(new Dominio("filtroPesquisa", "Documento", "DOCUMENTO", 2L)); + + list.add(new Dominio("filtroData", "Em qualquer data", "QUAL_QUER_DATA", 0L)); + list.add(new Dominio("filtroData", "Na última hora", "ULTIMA_HORA", 1L)); + list.add(new Dominio("filtroData", "Nas últimas 24 horas", "ULTIMAS_24_HORA", 2L)); + list.add(new Dominio("filtroData", "Na última semana", "ULTIMA_SEMANA", 3L)); + list.add(new Dominio("filtroData", "No último mês", "ULTIMO_MES", 4L)); + list.add(new Dominio("filtroData", "No último ano", "ULTIMO_ANO", 5L)); + list.add(new Dominio("filtroData", "Intervalo personalizado", "INTERVALO_PERSONALIZADO", 6L)); this.dominioService.saveListIfNotExist(list); @@ -404,6 +416,7 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.TIPO_SUPORTE_DOCUMENTO ", "Tipo suporte de documento", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.UNIDADE_GESTORA ", "Unidade gestora", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.DATA_CRIACAO ", "Data criação", dominio, modulo)); + internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.PLACEHOLDER_PESQUISA ", "Digite o Nup, tipo de processo, tipo de documento, conteúdo do documento, autor, assunto, destinatário...", dominio, modulo)); } diff --git a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/SolrSearchController.js b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/SolrSearchController.js index 1b1c70c..f9b6e4d 100644 --- a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/SolrSearchController.js +++ b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/SolrSearchController.js @@ -26,15 +26,10 @@ * @param Utils */ -citApp.controller('SolrSearchController', ['$scope','$attrs','$location','$route','$routeParams','$window','$timeout','SolrSearchService','Utils', "$compile", - function SolrSearchController($scope, $attrs, $location, $route, $routeParams, $window, $timeout, SolrSearchService, Utils, $compile) { +citApp.controller('SolrSearchController', ['$scope','$attrs','$location','$route','$routeParams','$window','$timeout','SolrSearchService','Utils', "$compile", 'DominioRepository', '$filter', + function SolrSearchController($scope, $attrs, $location, $route, $routeParams, $window, $timeout, SolrSearchService, Utils, $compile, DominioRepository, $filter) { $scope.searchHintsField = 'tipoProcesso,tipoDocumento,objeto,assunto,autor,atribuidoA,destinatario,unidadeGeradora,situacao,nivelAcesso,dataCriacao'; - - var KEY_ENTER = '13'; - var KEY_ESCAPE = '27'; - var KEY_ARROW_UP = '38'; - var KEY_ARROW_DOWN = '40'; // instructional message to aid the user in constructing a query $scope.messages = [ @@ -99,8 +94,16 @@ citApp.controller('SolrSearchController', ['$scope','$attrs','$location','$route // user query $scope.userquery = ''; + + //parametro para pesquisa + $scope.parameterPesquisa = {}; + + //Parameters + $scope.queryParameters = []; - /////////////////////////////////////////////////////////////////////////// + //Date parameter + $scope.dateMathFilter = ""; + /** * A page in a pagination list @@ -316,60 +319,38 @@ citApp.controller('SolrSearchController', ['$scope','$attrs','$location','$route * @param event */ $scope.onkeyup = function (event) { - $scope.showHints = true; - if (event.keyCode == KEY_ENTER) { - if ($scope.selectedHint != -1) { - $scope.selectHint($scope.selectedHint); - } - $scope.handleSubmit(); - $scope.onblur(); - } - else if (event.keyCode == KEY_ESCAPE) { - $scope.showHints = false; - $scope.resetHintSelection(); - $scope.$apply(); - } - else if (event.keyCode == KEY_ARROW_UP) { - $scope.clearHintSelection(); - if ($scope.selectedHint < 1) { - $scope.selectedHint = $scope.hints.length - 1; - } else { - $scope.selectedHint -= 1; - } - $scope.highlightHint($scope.selectedHint); - } - else if (event.keyCode == KEY_ARROW_DOWN) { - $scope.clearHintSelection(); - if ($scope.selectedHint < $scope.hints.length - 1) { - $scope.selectedHint += 1; - } else { - $scope.selectedHint = 0; - } - $scope.highlightHint($scope.selectedHint); - } - // if the current query meets the minimum requirements, - // get the list of search hints - else if ($scope.userQuery.length >= $scope.minSearchLength) { + + if ($scope.userQuery && $scope.userQuery.length >= $scope.minSearchLength) { if ($scope.timeout) $timeout.cancel($scope.timeout); - $scope.timeout = $timeout(function () { - var query = SolrSearchService.createQuery("https://localhost:8983/solr/jcg"); - query.setOption("rows", "10"); - query.setOption("facet", "true"); - query.setOption("facet.limit", $scope.maxHints); - - var hints = $scope.searchHintsField.split(','); - for(var i = 0; i < hints.length; i++){ - query.setOption("facet.field#" + i, hints[i]); - } - - query.setNearMatch($scope.nearMatch); - query.setUserQuery($scope.userQuery); - SolrSearchService.setQuery($scope.queryName, query); - SolrSearchService.updateQuery($scope.queryName); + $scope.timeout = $timeout(function () { + var query = SolrSearchService.createQuery("https://localhost:8983/solr/jcg"); + query.setOption("rows", "10"); + query.setOption("facet", "true"); + query.setOption("facet.limit", $scope.maxHints); + + //Verifica se foi selecionado filtro de data + if($scope.dateMathFilter != ""){ + + query.setOption("fq", $scope.dateMathFilter); + } + + var hints = $scope.searchHintsField.split(','); + for(var i = 0; i < hints.length; i++){ + query.setOption("facet.field#" + i, hints[i]); + } + + query.setNearMatch($scope.nearMatch); + query.setUserQuery($scope.userQuery); + query.setQueryParameters($scope.queryParameters); + + SolrSearchService.setQuery($scope.queryName, query); + SolrSearchService.updateQuery($scope.queryName); }, 350); }else{ $scope.apresentarMsgSemResultado = false; + + $scope.documents = []; } }; @@ -469,6 +450,118 @@ citApp.controller('SolrSearchController', ['$scope','$attrs','$location','$route }, 350); }; + //limpar os filtros da tela + $scope.cleanFilters = function(){ + + $scope.documents = []; + $scope.userQuery = ""; + $scope.hints = []; + }; + + //Adicionar os parametro processo + $scope.addParameter = function(){ + + $timeout(function () { + //verifica se o parametro é ambos + if($scope.parameterPesquisa.codigo == 0){ + + $scope.removeQueryParameter("AND objeto: Processo "); + + $scope.removeQueryParameter("AND objeto: Documento "); + $scope.onkeyup(); + + //verifica se o parametro é processo + }else if($scope.parameterPesquisa.codigo == 1){ + + $scope.addQueryParameter("AND objeto: Processo "); + $scope.removeQueryParameter("AND objeto: Documento "); + $scope.onkeyup(); + //verifica se o parametro é documento + }else if($scope.parameterPesquisa.codigo == 2){ + + $scope.addQueryParameter("AND objeto: Documento "); + $scope.removeQueryParameter("AND objeto: Processo "); + $scope.onkeyup(); + } + }); + + }; + + //adicionar o parametro de data + $scope.addParameterDate = function(){ + + $timeout(function () { + //Última Hora + if($scope.parameterDatePesquisa.codigo == 1){ + + $scope.dateMathFilter = "dataCriacao:[NOW-1HOUR TO NOW]"; + $scope.onkeyup(); + //Útimas 24 horas + }else if($scope.parameterDatePesquisa.codigo == 2){ + + $scope.dateMathFilter = "dataCriacao:[NOW-1DAY TO NOW]"; + $scope.onkeyup(); + //Última semana + }else if($scope.parameterDatePesquisa.codigo == 3){ + + $scope.dateMathFilter = "dataCriacao:[NOW-7DAY TO NOW]"; + $scope.onkeyup(); + //Último mês + }else if($scope.parameterDatePesquisa.codigo == 4){ + + $scope.dateMathFilter = "dataCriacao:[NOW-31DAY TO NOW]"; + $scope.onkeyup(); + //Útimo ano + }else if($scope.parameterDatePesquisa.codigo == 5){ + + $scope.dateMathFilter = "dataCriacao:[NOW-365DAY TO NOW]"; + $scope.onkeyup(); + } + }); + + }; + + /** + * Add a query parameter. The parameter setting is added only if it is + * unique. + * @param Parameter + */ + $scope.addQueryParameter = function(Parameter) { + for (var i=0; i<$scope.queryParameters.length;i++) { + if ($scope.queryParameters[i] == Parameter) { + return; + } + } + $scope.queryParameters.push(Parameter); + }; + + /** + * remove a query parameter + * unique. + * @param Parameter + */ + $scope.removeQueryParameter = function(Parameter) { + for (var i=0;i<$scope.queryParameters.length;i++) { + if ($scope.queryParameters[i] == Parameter) { + $scope.queryParameters.splice(i, 1); + } + } + }; + + DominioRepository.findAllDominio('filtroPesquisa').then(function(result) { + $scope.filtroPesquisaList = result; + + $scope.parameterPesquisa = $.grep($scope.filtroPesquisaList, function(e){ return e.codigo == 0; })[0].originalElement; + }); + + DominioRepository.findAllDominio('filtroData').then(function(result) { + $scope.filtroDateList = $filter('orderBy')(result, "codigo"); + + $scope.parameterDatePesquisa = $.grep($scope.filtroDateList, function(e){ return e.codigo == 0; })[0].originalElement; + + }); + + $scope.init(); }]); diff --git a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/service/solr.js b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/service/solr.js index 70b3da9..f9d5062 100644 --- a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/service/solr.js +++ b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/service/solr.js @@ -135,6 +135,19 @@ function SolrQuery(Url) { } self.queryParameters.push(Parameter); }; + + /** + * remove a query parameter + * unique. + * @param Parameter + */ + self.removeQueryParameter = function(Parameter) { + for (var i=0;i - - - - - -
- - ECM.LABEL.SOLR_SEARCH_INTERFACE - - -
-
-
+ \ No newline at end of file -- libgit2 0.21.2