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