Commit 101b087000bf57268cd4c0536cb8fb1773a6649b

Authored by rogerio.costa
2 parents 7ef43825 4653975f
Exists in master

Merge branch 'tarefa-268' into desenvolvimento

Conflicts:
	cit-ecm-api/pom.xml
	cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/ProcessoServiceImpl.java
	cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java
cit-ecm-api/pom.xml
... ... @@ -82,5 +82,10 @@
82 82 <artifactId>json-simple</artifactId>
83 83 <version>1.1</version>
84 84 </dependency>
  85 + <dependency>
  86 + <groupId>org.jsoup</groupId>
  87 + <artifactId>jsoup</artifactId>
  88 + <version>1.8.3</version>
  89 + </dependency>
85 90 </dependencies>
86 91 </project>
... ...
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/AnexoGedServiceImpl.java
... ... @@ -105,9 +105,9 @@ public class AnexoGedServiceImpl extends GenericServiceImpl&lt;AnexoGed, Long&gt; impl
105 105  
106 106 // FAZ OCR DO DOCUMENTO ANEXADO E JÁ MANDA PARA INDEXAÇÃO
107 107  
108   -// documentoGed.setConteudo(this.gedFileService.doOcr(anexo));
  108 + documentoGed.setConteudo(this.gedFileService.doOcr(anexo));
109 109  
110   -// this.solrService.addDocumento(documentoGed);
  110 + this.solrService.addDocumento(documentoGed);
111 111  
112 112 anexo.setDocumentoGed(documentoGed);
113 113  
... ...
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/DocumentoGedServiceImpl.java
... ... @@ -222,8 +222,11 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl&lt;DocumentoGed, Lo
222 222 private void saveSolr(DocumentoGed entity) {
223 223  
224 224 try {
  225 + // Verifica se o documento é sigiloso
  226 + if (!UtilObjeto.isReferencia(entity.getSigilo())) {
225 227  
226   -// this.solrService.addDocumento(entity);
  228 + this.solrService.addDocumento(entity);
  229 + }
227 230  
228 231 } catch (Exception e) {
229 232  
... ... @@ -572,7 +575,7 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl&lt;DocumentoGed, Lo
572 575  
573 576 this.validarEntidade(entity, this.validator);
574 577 AnexoGed anexo = null;
575   -
  578 +
576 579 if (entity.getAnexo() != null) {
577 580 anexo = this.anexoGedService.getReference(entity.getAnexo().getId());
578 581 }
... ... @@ -595,7 +598,7 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl&lt;DocumentoGed, Lo
595 598  
596 599 entity.setConteudo(this.decrypted(entity.getConteudoCriptografado()));
597 600  
598   - // this.saveSolr(entity);
  601 + this.saveSolr(entity);
599 602  
600 603 try {
601 604 if (anexo != null) {
... ... @@ -839,11 +842,10 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl&lt;DocumentoGed, Lo
839 842 */
840 843 private void vincularAnexo(DocumentoGed documentoGedOrigem, Processo processoDestinoAnexo, Processo processoOrigem) {
841 844  
842   -/* Processo processoDestinoAnexo = this.processoService.getReference(anexarProcessoVH.getProcesso().getId());*/
  845 + /* Processo processoDestinoAnexo = this.processoService.getReference(anexarProcessoVH.getProcesso().getId()); */
843 846  
844 847 AnexoGed anexoDocumentoOrigem = null;
845 848  
846   -
847 849 DocumentoGed documentoGed = new DocumentoGed();
848 850  
849 851 documentoGed = documentoGedOrigem.clone();
... ... @@ -857,26 +859,26 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl&lt;DocumentoGed, Lo
857 859  
858 860 documentoGed.setInteressados(new LinkedList<InteressadoDocumento>());
859 861  
860   - //Monta os dados do novo interessado para o novo documento.
861   - for(InteressadoDocumento interessadoDocumento : documentoGedOrigem.getInteressados()){
862   -
  862 + // Monta os dados do novo interessado para o novo documento.
  863 + for (InteressadoDocumento interessadoDocumento : documentoGedOrigem.getInteressados()) {
  864 +
863 865 InteressadoDocumento interessadoDocumentoDestino = new InteressadoDocumento();
864 866 interessadoDocumentoDestino.setInteressado(interessadoDocumento.getInteressado());
865 867 interessadoDocumentoDestino.setDocumentoGed(documentoGed);
866 868 documentoGed.getInteressados().add(interessadoDocumentoDestino);
867 869 }
868   -
  870 +
869 871 }
870 872  
871 873 documentoGed = super.save(documentoGed);
872 874  
873 875 if (documentoGedOrigem.getFormaCriacao() != null && !documentoGedOrigem.getFormaCriacao().getCodigo().equals(1L)) {
874   -
  876 +
875 877 if (documentoGedOrigem.getAnexo() != null) {
876 878 anexoDocumentoOrigem = this.anexoGedService.getReference(documentoGedOrigem.getAnexo().getId());
877 879 }
878 880 }
879   -
  881 +
880 882 try {
881 883 if (anexoDocumentoOrigem != null) {
882 884 File file = this.gedFileService.restoreFile(anexoDocumentoOrigem);
... ...
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/ProcessoServiceImpl.java
... ... @@ -168,13 +168,8 @@ public class ProcessoServiceImpl extends GenericServiceImpl&lt;Processo, Long&gt; impl
168 168 this.gerarNUP(processo);
169 169 }
170 170  
171   - try {
172   -
173   -// this.solrService.addProcesso(processo);
174   - } catch (final Exception e) {
  171 + this.saveSolr(processo);
175 172  
176   - e.printStackTrace();
177   - }
178 173 if (entity.getSigilo() == null) {
179 174 this.startBusinessProcess(processo);
180 175 }
... ... @@ -200,6 +195,32 @@ public class ProcessoServiceImpl extends GenericServiceImpl&lt;Processo, Long&gt; impl
200 195 }
201 196  
202 197 /**
  198 + * <p><b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a></p>
  199 + *
  200 + * <p><b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a></p>
  201 + *
  202 + * Método responsável por
  203 + *
  204 + * @author rogerio.costa
  205 + *
  206 + * @param processo
  207 + */
  208 + private void saveSolr(Processo processo) {
  209 +
  210 + try {
  211 +
  212 + if (!UtilObjeto.isReferencia(processo.getSigilo())) {
  213 +
  214 + this.solrService.addProcesso(processo);
  215 + }
  216 +
  217 + } catch (final Exception e) {
  218 +
  219 + e.printStackTrace();
  220 + }
  221 + }
  222 +
  223 + /**
203 224 *
204 225 * <p>
205 226 * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
... ...
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/SolrServiceImpl.java
... ... @@ -7,12 +7,14 @@ import org.apache.solr.client.solrj.SolrClient;
7 7 import org.apache.solr.client.solrj.SolrServerException;
8 8 import org.apache.solr.client.solrj.impl.HttpSolrClient;
9 9 import org.apache.solr.common.SolrInputDocument;
  10 +import org.jsoup.Jsoup;
10 11 import org.springframework.beans.factory.annotation.Value;
11 12 import org.springframework.stereotype.Service;
12 13  
13 14 import br.com.centralit.api.model.DocumentoGed;
14 15 import br.com.centralit.api.model.Processo;
15 16 import br.com.centralit.api.service.SolrService;
  17 +import br.com.centralit.framework.util.UtilObjeto;
16 18  
17 19 /**
18 20 * <p>
... ... @@ -62,6 +64,8 @@ import br.com.centralit.api.service.SolrService;
62 64 @Service("solrService")
63 65 public class SolrServiceImpl implements SolrService {
64 66  
  67 + private static final String INFORMAÇÃO_RESTRITA = "Informação restrita";
  68 +
65 69 @Value("${ecm.solr.server}")
66 70 public String solrServer;
67 71  
... ... @@ -87,7 +91,6 @@ public class SolrServiceImpl implements SolrService {
87 91 processoDoc.setField("unidadeGeradora", processo.getUnidade().getNome());
88 92 processoDoc.setField("dataCriacao", out.format(processo.getDataCriacao().getTime()));
89 93 processoDoc.setField("situacao", "");
90   -
91 94 processoDoc.setField("nivelAcesso", processo.getNivelAcesso().getNivelAcesso().getDescricao());
92 95 processoDoc.setField("formatoDocumento", "");
93 96  
... ... @@ -108,31 +111,36 @@ public class SolrServiceImpl implements SolrService {
108 111 SolrClient solrClient = new HttpSolrClient(solrServer);
109 112  
110 113 // Add some example docs
111   - SolrInputDocument processoDoc = new SolrInputDocument();
  114 + SolrInputDocument documentoDoc = new SolrInputDocument();
112 115  
113 116 StringBuilder sb = new StringBuilder();
114 117  
115 118 sb.append("doc_").append(documentoGed.getIdRaiz() != null ? documentoGed.getIdRaiz() : documentoGed.getId());
116 119  
117   - processoDoc.setField("id", "doc_" + sb.toString());
118   - processoDoc.setField("nup", documentoGed.getNumero());
119   - processoDoc.setField("objeto", "Documento");
120   - processoDoc.setField("tipoProcesso", "");
121   - processoDoc.setField("tipoDocumento", documentoGed.getTipoDocumento().getNome());
122   - processoDoc.setField("assunto", documentoGed.getPlanoClassificacao().getNome());
123   - processoDoc.setField("assuntoComplementar", documentoGed.getAssuntoComplementar());
124   - processoDoc.setField("autor", documentoGed.getAutor().getUsername());
125   - processoDoc.setField("destinatario", "");
126   - processoDoc.setField("atribuidoA", "");
127   - processoDoc.setField("unidadeGeradora", documentoGed.getUnidade().getNome());
128   - processoDoc.setField("dataCriacao", out.format(documentoGed.getDataCriacao().getTime()));
129   - processoDoc.setField("situacao", "");
130   -
131   - // processoDoc.setField("nivelAcesso", documentoGed.getNivelAcesso().getNivelAcessoDescricao());
132   - processoDoc.setField("formatoDocumento", "");
133   - processoDoc.setField("conteudo", documentoGed.getConteudo());
134   -
135   - solrClient.add(processoDoc);
  120 + documentoDoc.setField("id", "doc_" + sb.toString());
  121 + documentoDoc.setField("nup", documentoGed.getNumero());
  122 + documentoDoc.setField("objeto", "Documento");
  123 + documentoDoc.setField("tipoDocumento", documentoGed.getTipoDocumento().getNome());
  124 + documentoDoc.setField("assunto", documentoGed.getPlanoClassificacao().getNome());
  125 + documentoDoc.setField("assuntoComplementar", documentoGed.getAssuntoComplementar());
  126 + documentoDoc.setField("autor", documentoGed.getAutor().getUsername());
  127 + documentoDoc.setField("destinatario", UtilObjeto.isReferencia(documentoGed.getDestinatario()) ? documentoGed.getDestinatario().getNome() : "");
  128 + documentoDoc.setField("atribuidoA", "");
  129 + documentoDoc.setField("unidadeGeradora", documentoGed.getUnidade().getNome());
  130 + documentoDoc.setField("dataCriacao", out.format(documentoGed.getDataCriacao().getTime()));
  131 + documentoDoc.setField("situacao", "");
  132 + documentoDoc.setField("nivelAcesso", documentoGed.getNivelAcesso().getNivelAcesso().getDescricao());
  133 + documentoDoc.setField("formatoDocumento", documentoGed.getFormaCriacao().getDescricao());
  134 + // verifica se o nivel de acesso é restrito
  135 + if (!documentoGed.getNivelAcesso().getNivelAcesso().getCodigo().equals(1L)) {
  136 +
  137 + documentoDoc.setField("conteudo", documentoGed.getFormaCriacao().getCodigo().equals(1L) ? Jsoup.parse(documentoGed.getConteudo()).text() : documentoGed.getConteudo());
  138 + } else {
  139 +
  140 + documentoDoc.setField("conteudo", INFORMAÇÃO_RESTRITA);
  141 + }
  142 +
  143 + solrClient.add(documentoDoc);
136 144  
137 145 // Make the docs we just added searchable using a "hard" commit
138 146 solrClient.commit(true, true);
... ...
cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java
... ... @@ -203,6 +203,18 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen
203 203  
204 204 list.add(new Dominio("statusProcesso", "Concluído", "CONCLUIDO", 1L));
205 205 list.add(new Dominio("statusProcesso", "Em andamento", "EM_ANDAMENTO", 2L));
  206 +
  207 + list.add(new Dominio("filtroPesquisa", "Ambos", "AMBOS", 0L));
  208 + list.add(new Dominio("filtroPesquisa", "Processo", "PROCESSO", 1L));
  209 + list.add(new Dominio("filtroPesquisa", "Documento", "DOCUMENTO", 2L));
  210 +
  211 + list.add(new Dominio("filtroData", "Em qualquer data", "QUAL_QUER_DATA", 0L));
  212 + list.add(new Dominio("filtroData", "Na última hora", "ULTIMA_HORA", 1L));
  213 + list.add(new Dominio("filtroData", "Nas últimas 24 horas", "ULTIMAS_24_HORA", 2L));
  214 + list.add(new Dominio("filtroData", "Na última semana", "ULTIMA_SEMANA", 3L));
  215 + list.add(new Dominio("filtroData", "No último mês", "ULTIMO_MES", 4L));
  216 + list.add(new Dominio("filtroData", "No último ano", "ULTIMO_ANO", 5L));
  217 + list.add(new Dominio("filtroData", "Intervalo personalizado", "INTERVALO_PERSONALIZADO", 6L));
206 218  
207 219 list.add(new Dominio("tipoAssinatura", "Assinatura interna", "ASSINATURA_INTERNA", 1L));
208 220 list.add(new Dominio("tipoAssinatura", "Assinatura por certificado digital", "ASSINATURA_CERTIFICADO_DIGITAL", 2L));
... ... @@ -424,6 +436,11 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen
424 436 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.CERTIFICADO_DIGITAL", "Certificado Digital", dominio, modulo));
425 437 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.ASSINATURA_DOCUMENTO", "Assinatura de Documento", dominio, modulo));
426 438 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.ASSINAR", "Assinar", dominio, modulo));
  439 + internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.UNIDADE_GESTORA ", "Unidade gestora", dominio, modulo));
  440 + internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.DATA_CRIACAO ", "Data criação", dominio, modulo));
  441 + 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));
  442 + internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.ATE ", "Até", dominio, modulo));
  443 +
427 444 }
428 445  
429 446 /**
... ...
cit-ecm-web/src/main/webapp/assets/css/gerenciarProcesso.css
... ... @@ -93,6 +93,13 @@
93 93 vertical-align: middle;
94 94 }
95 95  
  96 +.profile-info-label {
  97 +
  98 + font-weight: 400;
  99 + color: #667E99;
  100 + background-color: transparent;
  101 +}
  102 +
96 103 .profile-info-row:first-child .profile-info-name,.profile-info-row:first-child .profile-info-value
97 104 {
98 105 border-top: none;
... ... @@ -143,3 +150,66 @@
143 150 margin-top: 10px;
144 151 }
145 152  
  153 +.filters{
  154 + border-radius: .3em;
  155 + background-clip: padding-box;
  156 + background: #fff;
  157 + left: 0;
  158 + top: -0.1em;
  159 + display: block;
  160 + content: "";
  161 +}
  162 +
  163 +.itens{
  164 + color: #757575;
  165 + padding: 0
  166 +}
  167 +
  168 +.qtd{
  169 +
  170 + background: #fff;
  171 + border-radius: 5px;
  172 + background-clip: padding-box;
  173 + float: right;
  174 + font-size: 1em;
  175 + font-weight: normal;
  176 + color: #ccc;
  177 + text-align: right;
  178 +}
  179 +
  180 +.filters_list {
  181 + color: #757575;
  182 + margin: 0;
  183 + list-style: none;
  184 + padding: 0 0 1em 0;
  185 +}
  186 +
  187 +.result_pesquisa{
  188 +
  189 + color: #545454;
  190 + padding-bottom: 20px;
  191 + padding-top: 20px;
  192 +}
  193 +
  194 +.result_metadado{
  195 + font-weight: bold;
  196 +}
  197 +.result_metadado_restrito{
  198 + color: #F0AD4E;
  199 +}
  200 +
  201 +.odd_result_metadado{
  202 + background-color: #f4f4f4;
  203 +}
  204 +
  205 +.even_result_metadado{
  206 +
  207 +background-color: #f2f2f2;
  208 +}
  209 +
  210 +.filter_list_layout{
  211 +
  212 +background-color: rgba(245, 245, 245, 0.61);
  213 +}
  214 +
  215 +
146 216 \ No newline at end of file
... ...
cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/SolrSearchController.js
... ... @@ -26,15 +26,10 @@
26 26 * @param Utils
27 27 */
28 28  
29   -citApp.controller('SolrSearchController', ['$scope','$attrs','$location','$route','$routeParams','$window','$timeout','SolrSearchService','Utils',
30   - function SolrSearchController($scope, $attrs, $location, $route, $routeParams, $window, $timeout, SolrSearchService, Utils) {
  29 +citApp.controller('SolrSearchController', ['$scope','$attrs','$location','$route','$routeParams','$window','$timeout','SolrSearchService','Utils', "$compile", 'DominioRepository', '$filter',
  30 + function SolrSearchController($scope, $attrs, $location, $route, $routeParams, $window, $timeout, SolrSearchService, Utils, $compile, DominioRepository, $filter) {
31 31  
32 32 $scope.searchHintsField = 'tipoProcesso,tipoDocumento,objeto,assunto,autor,atribuidoA,destinatario,unidadeGeradora,situacao,nivelAcesso,dataCriacao';
33   -
34   - var KEY_ENTER = '13';
35   - var KEY_ESCAPE = '27';
36   - var KEY_ARROW_UP = '38';
37   - var KEY_ARROW_DOWN = '40';
38 33  
39 34 // instructional message to aid the user in constructing a query
40 35 $scope.messages = [
... ... @@ -99,8 +94,16 @@ citApp.controller(&#39;SolrSearchController&#39;, [&#39;$scope&#39;,&#39;$attrs&#39;,&#39;$location&#39;,&#39;$route
99 94  
100 95 // user query
101 96 $scope.userquery = '';
  97 +
  98 + //parametro para pesquisa
  99 + $scope.parameterPesquisa = {};
  100 +
  101 + //Parameters
  102 + $scope.queryParameters = [];
102 103  
103   - ///////////////////////////////////////////////////////////////////////////
  104 + //Date parameter
  105 + $scope.dateMathFilter = "";
  106 +
104 107  
105 108 /**
106 109 * A page in a pagination list
... ... @@ -124,7 +127,13 @@ citApp.controller(&#39;SolrSearchController&#39;, [&#39;$scope&#39;,&#39;$attrs&#39;,&#39;$location&#39;,&#39;$route
124 127 query.setOption("rows", "10");
125 128 query.setOption("facet", "true");
126 129 query.setOption("facet.limit", $scope.maxHints);
127   - query.setOption('start', $scope.start * $scope.documentsPerPage);
  130 + query.setOption('start', $scope.start * $scope.documentsPerPage - 10);
  131 +
  132 + //Verifica se foi selecionado filtro de data
  133 + if($scope.dateMathFilter != ""){
  134 +
  135 + query.setOption("fq", $scope.dateMathFilter);
  136 + }
128 137  
129 138 var hints = $scope.searchHintsField.split(',');
130 139 for(var i = 0; i < hints.length; i++){
... ... @@ -133,6 +142,7 @@ citApp.controller(&#39;SolrSearchController&#39;, [&#39;$scope&#39;,&#39;$attrs&#39;,&#39;$location&#39;,&#39;$route
133 142  
134 143 query.setNearMatch($scope.nearMatch);
135 144 query.setUserQuery($scope.userQuery);
  145 + query.setQueryParameters($scope.queryParameters);
136 146 SolrSearchService.setQuery($scope.queryName, query);
137 147 SolrSearchService.updateQuery($scope.queryName);
138 148 }, 350);
... ... @@ -152,6 +162,7 @@ citApp.controller(&#39;SolrSearchController&#39;, [&#39;$scope&#39;,&#39;$attrs&#39;,&#39;$location&#39;,&#39;$route
152 162 // get new results
153 163 var results = SolrSearchService.getResponse($scope.queryName);
154 164 if (results && results.docs) {
  165 +
155 166 $scope.totalResults = results.numFound;
156 167 // calculate the total number of pages and sets
157 168 $scope.totalPages = Math.ceil($scope.totalResults / $scope.documentsPerPage);
... ... @@ -161,6 +172,24 @@ citApp.controller(&#39;SolrSearchController&#39;, [&#39;$scope&#39;,&#39;$attrs&#39;,&#39;$location&#39;,&#39;$route
161 172 // clean up document fields
162 173 results.docs[i].fromDate = Utils.formatDate(results.docs[i].fromDate);
163 174 results.docs[i].toDate = Utils.formatDate(results.docs[i].toDate);
  175 +
  176 + if(results.docs[i].objeto == 'Documento' && SolrSearchService.queries.defaultQuery.highlighting){
  177 +
  178 + var object = results.docs[i].id;
  179 +
  180 + if(SolrSearchService.queries.defaultQuery.highlighting[object].conteudo){
  181 +
  182 + var highlightings = SolrSearchService.queries.defaultQuery.highlighting[object];
  183 +
  184 + results.docs[i].conteudo = "";
  185 +
  186 + angular.forEach(highlightings, function (item) {
  187 + results.docs[i].conteudo = results.docs[i].conteudo + item;
  188 + });
  189 +
  190 + }
  191 + }
  192 +
164 193 // add to result list
165 194 $scope.documents.push(results.docs[i]);
166 195 }
... ... @@ -187,23 +216,37 @@ citApp.controller(&#39;SolrSearchController&#39;, [&#39;$scope&#39;,&#39;$attrs&#39;,&#39;$location&#39;,&#39;$route
187 216 if (result) {
188 217 var myArray = new Array();
189 218 for (var i = 0; i < result.length; i += 2) {
190   - var hint = {
  219 + //Verifica se o filtro está vazio
  220 + if(result[i] != "" && result[i + 1] > 0){
  221 + var hint = {
191 222 name: Object.keys(results.facet_fields)[j],
192 223 title: result[i],
193 224 quantidade: result[i + 1],
194 225 selected: false
195   - };
196   - myArray.push(hint);
  226 + };
  227 + myArray.push(hint);
  228 + }
197 229 }
198 230  
199 231 $scope.hints[$scope.hintFields[j]] = myArray;
200 232 }
201 233 }
202 234 }
  235 +
203 236 }else{
204 237  
205 238 $scope.apresentarMsgSemResultado = true;
206 239 }
  240 + $timeout(function(){
  241 + angular.forEach($scope.documents, function (item) {
  242 +
  243 + if(item.objeto == 'Documento'){
  244 +
  245 + document.getElementById(item.id).innerHTML = item.conteudo ;
  246 + }
  247 +
  248 + });
  249 + });
207 250  
208 251 // update the page index
209 252 $scope.updatePageIndex();
... ... @@ -283,60 +326,38 @@ citApp.controller(&#39;SolrSearchController&#39;, [&#39;$scope&#39;,&#39;$attrs&#39;,&#39;$location&#39;,&#39;$route
283 326 * @param event
284 327 */
285 328 $scope.onkeyup = function (event) {
286   - $scope.showHints = true;
287   - if (event.keyCode == KEY_ENTER) {
288   - if ($scope.selectedHint != -1) {
289   - $scope.selectHint($scope.selectedHint);
290   - }
291   - $scope.handleSubmit();
292   - $scope.onblur();
293   - }
294   - else if (event.keyCode == KEY_ESCAPE) {
295   - $scope.showHints = false;
296   - $scope.resetHintSelection();
297   - $scope.$apply();
298   - }
299   - else if (event.keyCode == KEY_ARROW_UP) {
300   - $scope.clearHintSelection();
301   - if ($scope.selectedHint < 1) {
302   - $scope.selectedHint = $scope.hints.length - 1;
303   - } else {
304   - $scope.selectedHint -= 1;
305   - }
306   - $scope.highlightHint($scope.selectedHint);
307   - }
308   - else if (event.keyCode == KEY_ARROW_DOWN) {
309   - $scope.clearHintSelection();
310   - if ($scope.selectedHint < $scope.hints.length - 1) {
311   - $scope.selectedHint += 1;
312   - } else {
313   - $scope.selectedHint = 0;
314   - }
315   - $scope.highlightHint($scope.selectedHint);
316   - }
317   - // if the current query meets the minimum requirements,
318   - // get the list of search hints
319   - else if ($scope.userQuery.length >= $scope.minSearchLength) {
  329 +
  330 + if ($scope.userQuery && $scope.userQuery.length >= $scope.minSearchLength) {
320 331 if ($scope.timeout) $timeout.cancel($scope.timeout);
321   - $scope.timeout = $timeout(function () {
322   - var query = SolrSearchService.createQuery("https://localhost:8983/solr/jcg");
323   - query.setOption("rows", "10");
324   - query.setOption("facet", "true");
325   - query.setOption("facet.limit", $scope.maxHints);
326   -
327   - var hints = $scope.searchHintsField.split(',');
328   - for(var i = 0; i < hints.length; i++){
329   - query.setOption("facet.field#" + i, hints[i]);
330   - }
331   -
332   - query.setNearMatch($scope.nearMatch);
333   - query.setUserQuery($scope.userQuery);
334   - SolrSearchService.setQuery($scope.queryName, query);
335   - SolrSearchService.updateQuery($scope.queryName);
  332 + $scope.timeout = $timeout(function () {
  333 + var query = SolrSearchService.createQuery("https://localhost:8983/solr/jcg");
  334 + query.setOption("rows", "10");
  335 + query.setOption("facet", "true");
  336 + query.setOption("facet.limit", $scope.maxHints);
  337 +
  338 + //Verifica se foi selecionado filtro de data
  339 + if($scope.dateMathFilter != ""){
  340 +
  341 + query.setOption("fq", $scope.dateMathFilter);
  342 + }
  343 +
  344 + var hints = $scope.searchHintsField.split(',');
  345 + for(var i = 0; i < hints.length; i++){
  346 + query.setOption("facet.field#" + i, hints[i]);
  347 + }
  348 +
  349 + query.setNearMatch($scope.nearMatch);
  350 + query.setUserQuery($scope.userQuery);
  351 + query.setQueryParameters($scope.queryParameters);
  352 +
  353 + SolrSearchService.setQuery($scope.queryName, query);
  354 + SolrSearchService.updateQuery($scope.queryName);
336 355 }, 350);
337 356 }else{
338 357  
339 358 $scope.apresentarMsgSemResultado = false;
  359 +
  360 + $scope.documents = [];
340 361 }
341 362 };
342 363  
... ... @@ -404,14 +425,183 @@ citApp.controller(&#39;SolrSearchController&#39;, [&#39;$scope&#39;,&#39;$attrs&#39;,&#39;$location&#39;,&#39;$route
404 425 SolrSearchService.updateQuery($scope.queryName);
405 426 }, 350);
406 427  
407   - console.log("ally "+ query)
408 428 };
409 429  
410 430 $scope.selectHint = function (nameIndex, index) {
411 431 var hint = $scope.hints[nameIndex][index];
412   - $scope.userQuery = hint.title;
  432 + var userQuery = hint.title;
  433 + $scope.aplicarFilter(userQuery);
413 434 };
414 435  
  436 + $scope.aplicarFilter = function(valueFilter){
  437 + // clean up the user query
  438 + var trimmed = Utils.trim(valueFilter);
  439 + if (trimmed === '') {
  440 + valueFilter = "*:*";
  441 + }
  442 + $scope.timeout = $timeout(function () {
  443 + var query = SolrSearchService.createQuery("https://localhost:8983/solr/jcg");
  444 + query.setOption("rows", "10");
  445 + query.setOption("facet", "true");
  446 + query.setOption("facet.limit", $scope.maxHints);
  447 +
  448 + var hints = $scope.searchHintsField.split(',');
  449 + for(var i = 0; i < hints.length; i++){
  450 + query.setOption("facet.field#" + i, hints[i]);
  451 + }
  452 +
  453 + query.setNearMatch($scope.nearMatch);
  454 + query.setUserQuery(valueFilter);
  455 + SolrSearchService.setQuery($scope.queryName, query);
  456 + SolrSearchService.updateQuery($scope.queryName);
  457 + }, 350);
  458 + };
  459 +
  460 + //limpar os filtros da tela
  461 + $scope.cleanFilters = function(){
  462 +
  463 + $scope.documents = [];
  464 + $scope.userQuery = "";
  465 + $scope.hints = [];
  466 + $scope.parameterDatePesquisa = $.grep($scope.filtroDateList, function(e){ return e.codigo == 0; })[0].originalElement;
  467 + };
  468 +
  469 + //Adicionar os parametro processo
  470 + $scope.addParameter = function(){
  471 +
  472 + $timeout(function () {
  473 + //verifica se o parametro é ambos
  474 + if($scope.parameterPesquisa.codigo == 0){
  475 +
  476 + $scope.removeQueryParameter("AND objeto: Processo ");
  477 +
  478 + $scope.removeQueryParameter("AND objeto: Documento ");
  479 + $scope.onkeyup();
  480 +
  481 + //verifica se o parametro é processo
  482 + }else if($scope.parameterPesquisa.codigo == 1){
  483 +
  484 + $scope.addQueryParameter("AND objeto: Processo ");
  485 + $scope.removeQueryParameter("AND objeto: Documento ");
  486 + $scope.onkeyup();
  487 + //verifica se o parametro é documento
  488 + }else if($scope.parameterPesquisa.codigo == 2){
  489 +
  490 + $scope.addQueryParameter("AND objeto: Documento ");
  491 + $scope.removeQueryParameter("AND objeto: Processo ");
  492 + $scope.onkeyup();
  493 + }
  494 + });
  495 +
  496 + };
  497 +
  498 + //adicionar o parametro de data
  499 + $scope.addParameterDate = function(){
  500 +
  501 + $timeout(function () {
  502 +
  503 + if($scope.parameterDatePesquisa.codigo == 0){
  504 +
  505 + $scope.dateMathFilter = "";
  506 +
  507 + $scope.onkeyup();
  508 +
  509 + //Última Hora
  510 + }else if($scope.parameterDatePesquisa.codigo == 1){
  511 +
  512 + var date = new Date();
  513 + date.setHours(date.getHours() - 1);
  514 +
  515 + var dataUltimaHora = $filter('date')(date, "yyyy-MM-dd'T'HH:mm:ss'Z'");
  516 +
  517 + $scope.dateMathFilter = "dataCriacao:["+dataUltimaHora+" TO NOW]";
  518 + $scope.onkeyup();
  519 + //Útimas 24 horas
  520 + }else if($scope.parameterDatePesquisa.codigo == 2){
  521 +
  522 + $scope.dateMathFilter = "dataCriacao:[NOW-1DAY TO NOW]";
  523 + $scope.onkeyup();
  524 + //Última semana
  525 + }else if($scope.parameterDatePesquisa.codigo == 3){
  526 +
  527 + $scope.dateMathFilter = "dataCriacao:[NOW-7DAY TO NOW]";
  528 + $scope.onkeyup();
  529 + //Último mês
  530 + }else if($scope.parameterDatePesquisa.codigo == 4){
  531 +
  532 + $scope.dateMathFilter = "dataCriacao:[NOW-31DAY TO NOW]";
  533 + $scope.onkeyup();
  534 + //Útimo ano
  535 + }else if($scope.parameterDatePesquisa.codigo == 5){
  536 +
  537 + $scope.dateMathFilter = "dataCriacao:[NOW-365DAY TO NOW]";
  538 + $scope.onkeyup();
  539 + }
  540 + });
  541 +
  542 + };
  543 +
  544 + //adiciona o filtro entre datas
  545 + $scope.addParameterDatePersonalisada = function(){
  546 +
  547 + var dataInicioFormat = $filter('date')($scope.dataInicioFiltro, "yyyy-MM-dd'T'HH:mm:ss'Z'");
  548 +
  549 + var dataFimFormat = $filter('date')($scope.dataFimFiltro, "yyyy-MM-dd'T'HH:mm:ss'Z'");
  550 +
  551 + if($scope.dataInicioFiltro && $scope.dataFimFiltro){
  552 +
  553 + $scope.dateMathFilter = "dataCriacao:["+dataInicioFormat+" TO "+dataFimFormat+ "]";
  554 +
  555 + $scope.onkeyup();
  556 + }else{
  557 +
  558 + $scope.dateMathFilter = "";
  559 + }
  560 +
  561 +
  562 + };
  563 +
  564 + /**
  565 + * Add a query parameter. The parameter setting is added only if it is
  566 + * unique.
  567 + * @param Parameter
  568 + */
  569 + $scope.addQueryParameter = function(Parameter) {
  570 + for (var i=0; i<$scope.queryParameters.length;i++) {
  571 + if ($scope.queryParameters[i] == Parameter) {
  572 + return;
  573 + }
  574 + }
  575 + $scope.queryParameters.push(Parameter);
  576 + };
  577 +
  578 + /**
  579 + * remove a query parameter
  580 + * unique.
  581 + * @param Parameter
  582 + */
  583 + $scope.removeQueryParameter = function(Parameter) {
  584 + for (var i=0;i<$scope.queryParameters.length;i++) {
  585 + if ($scope.queryParameters[i] == Parameter) {
  586 + $scope.queryParameters.splice(i, 1);
  587 + }
  588 + }
  589 + };
  590 +
  591 + DominioRepository.findAllDominio('filtroPesquisa').then(function(result) {
  592 + $scope.filtroPesquisaList = result;
  593 +
  594 + $scope.parameterPesquisa = $.grep($scope.filtroPesquisaList, function(e){ return e.codigo == 0; })[0].originalElement;
  595 + });
  596 +
  597 + DominioRepository.findAllDominio('filtroData').then(function(result) {
  598 + $scope.filtroDateList = $filter('orderBy')(result, "codigo");
  599 +
  600 + $scope.parameterDatePesquisa = $.grep($scope.filtroDateList, function(e){ return e.codigo == 0; })[0].originalElement;
  601 +
  602 + });
  603 +
  604 +
415 605 $scope.init();
416 606 }]);
417 607  
... ...
cit-ecm-web/src/main/webapp/assets/js/angular/custom/service/solr.js
... ... @@ -135,6 +135,19 @@ function SolrQuery(Url) {
135 135 }
136 136 self.queryParameters.push(Parameter);
137 137 };
  138 +
  139 + /**
  140 + * remove a query parameter
  141 + * unique.
  142 + * @param Parameter
  143 + */
  144 + self.removeQueryParameter = function(Parameter) {
  145 + for (var i=0;i<self.queryParameters.length;i++) {
  146 + if (self.queryParameters[i] == Parameter) {
  147 + self.queryParameters.splice(i, 1);
  148 + }
  149 + }
  150 + };
138 151  
139 152 /**
140 153 * Create a new facet.
... ... @@ -611,6 +624,7 @@ citApp.provider(&#39;SolrSearchService&#39;, function solrSearchServiceProvider() {
611 624 // get the named query, reset error state, get the query url
612 625 var query = svc.queries[QueryName];
613 626 var url = query.getSolrQueryUrl();
  627 + url = url + "&hl=true&hl.fl=conteudo&hl.fragsize=300"
614 628 $log.debug("GET " + QueryName + ": " + url);
615 629 // execute the query
616 630 return $http.jsonp(url).then(
... ...
cit-ecm-web/src/main/webapp/html/gerenciarProcesso/gerenciarProcessoList.html
... ... @@ -4,8 +4,8 @@
4 4 <div class="bar-buttons-action fixed">
5 5 <div class="row">
6 6 <div class="col-sm-12 text-left">
7   - <div ng-include src="urlCabecalho" /> </div>
8   -
  7 + <div ng-include src="urlCabecalho" />
  8 + </div>
9 9 </div>
10 10 </div>
11 11 </div>
... ...
cit-ecm-web/src/main/webapp/html/pesquisa/pesquisa.html
  1 +<link rel="stylesheet" href="/cit-ecm-web/assets/css/gerenciarProcesso.css" />
1 2 <div id="searchProcesso" class="page-content" ng-controller="SolrSearchController as solrController">
2 3 <div class="bar-buttons-action fixed">
3 4 <div class="row">
4 5 <div class="col-sm-8 text-left"></div>
5   - <!-- .col -->
6 6  
7 7 <div class="col-sm-4 text-right">
8 8 <favorito />
9 9 <help-button workspace="workspace" />
10 10 </div>
11   - <!-- .col -->
12 11 </div>
13   - <!-- .row -->
14 12 </div>
15   - <!-- .bar-buttons-action -->
16   -
17   - <h1 class="title" align="center">
18   - <translate>ECM.LABEL.SOLR_SEARCH_INTERFACE</translate>
19   - </h1>
20   -
21 13 <div class="row">
22   - <div class="col-sm-12">
23   - <form class="searchbox" name="solrForm">
24   - <div class="input-group" id="inputs">
25   - <input type="text" class="form-control" id="query" type="text" placeholder="{{placeHolder}}" ng-model="userQuery" autocomplete="off" ng-focus="onfocus()" ng-blur="onblur()"
26   - ng-keyup="onkeyup($event)">
27   - <div class="input-group-btn">
28   - <button class="btn btn-default" type="button" id="submit" name="submit" ng-click="handleSubmit()">
29   - <i class="ace-icon fa fa-search icon-on-right bigger-110"></i>
30   - </button>
  14 + <div class="col-sm-12" style="text-align: center;">
  15 + <h3>
  16 + <translate>ECM.LABEL.SOLR_SEARCH_INTERFACE</translate>
  17 + </h3>
  18 + </div>
  19 + </div>
  20 + <div class="widget-main clearfix">
  21 + <form class="searchbox" name="solrForm">
  22 + <div class="row">
  23 + <div class="col-sm-10">
  24 + <div class="input-group" id="inputs">
  25 + <input type="text" class="form-control" id="query" type="text" placeholder="{{$translate.instant('ECM.LABEL.PLACEHOLDER_PESQUISA')}}" ng-model="userQuery" autocomplete="off" ng-focus="onfocus()"
  26 + ng-keyup="onkeyup($event)">
  27 + <div class="input-group-btn">
  28 + <button class="btn btn-default" type="button" id="submit" name="submit" ng-click="handleSubmit()">
  29 + <i class="ace-icon fa fa-search icon-on-right bigger-110"></i>
  30 + </button>
  31 + </div>
31 32 </div>
32 33 </div>
33   -
34   - <div class="row">
35   - <div class="col-md-8" ng-show='userQuery != "" && apresentarMsgSemResultado'>
36   - </p><translate>ECM.LABEL.SUA_PESQUISA</translate>: <label style="font-weight: bold;">{{userQuery}} </label>
37   - </p><translate>ECM.LABEL.NENHUM_DOCUMENTO_CORRESPONDENTE</translate>
38   - </p><translate>ECM.LABEL.SUGESTOES</translate>
39   - <ul>
40   - <li style="list-style-type: disc;"><translate>ECM.LABEL.CERTIFIQUE_PALAVRAS_ESCRITAS_CORRETAMENTE</translate></li>
41   - <li style="list-style-type: disc;"> <translate>ECM.LABEL.TENTE_PALAVRAS_CHAVES_DIFERENTE</translate></li>
42   - <li style="list-style-type: disc;"><translate>ECM.LABEL.TENTE_PALAVRAS_CHAVES_MAIS_GENERICAS</translate></li>
43   - <li style="list-style-type: disc;"><translate>ECM.LABEL.TENTE_MENOS_PALAVRAS_CHAVES</translate></li>
44   - </ul>
45   - </div>
  34 + <div class="col-sm-2">
  35 + <button class="btn btn-primary btn-inline btn-white table-header-item" ng-click="$showAdvancedFilters = !$showAdvancedFilters" type="button">
  36 + <i class="fa fa-filter"></i>
  37 + <translate>LABEL.FILTROS_AVANCADOS</translate>
  38 + </button>
  39 + <button class="btn btn-primary btn-inline btn-white table-header-item" ng-click="cleanFilters()" type="button">
  40 + <i class="fa fa-eraser"></i>
  41 + </button>
46 42 </div>
47   -
48   - <!-- div class="alert alert-warning" ng-show="loading" ng-cloak>
49   - <img
50   - src="http://upload.wikimedia.org/wikipedia/commons/4/42/Loading.gif"
51   - class="icon" />
52   - <h5>
53   - Processing...
54   - <button type="button" class="close" style="float: none;"
55   - data-dismiss="modal" aria-hidden="true">�</button>
56   - </h5>
57 43 </div>
58 44  
59   - <div class="summary" ng-show="documents.length > 0" ng-cloak>
60   - <div style="padding-bottom: 20px;">
61   - Search Results <span class="badge">{{totalResults}}</span> found
62   - </div>
63   - <div class="alert alert-warning" ng-show="error">{{error}}</div>
64   - <div class="alert alert-info" ng-show="message">{{message}}</div>
65   - </div-->
66   -
67   - </form>
68   - </div>
69   - </div>
  45 + <div class="row">
70 46  
71   - <div class="row">
72   - <div class="col-sm-2">
73   - <div class="ecm-search-wrapper">
74   - <div class="ecm-content-wrapper">
75   - <ul class="list-group">
76   - <li class="list-group-item document" ng-show="hints['tipoProcesso']">
77   - <h5>
78   - <b translate>ECM.LABEL.DATACRIACAO</b>
79   - </h5>
80   - <ul>
81   - <li ng-repeat="hint in hints['dataCriacao']" ng-class="{'selected' : hint.selected}"><a ng-click="selectHint('dataCriacao',$index);handleSubmit()">{{hint.title | date:'dd/MM/yyyy
82   - HH:mm:ss'}}</a>&nbsp;&nbsp;&nbsp;{{hint.quantidade}}</li>
83   - </ul>
84   - </li>
85   - <li class="list-group-item document" ng-show="hints['tipoProcesso']">
86   - <h5>
87   - <b translate>ECM.LABEL.TIPOPROCESSO</b>
88   - </h5>
89   - <ul>
90   - <li ng-repeat="hint in hints['tipoProcesso']" ng-class="{'selected' : hint.selected}"><a ng-click="selectHint('tipoProcesso',$index);handleSubmit()">{{hint.title}}</a>&nbsp;&nbsp;&nbsp;{{hint.quantidade}}
  47 + <div class="col-sm-2" ng-if="documents.length > 0">
  48 + <div class="ecm-search-wrapper">
  49 + <div class="ecm-content-wrapper">
  50 + <ul class="list-group">
  51 + <li class="list-group-item document" ng-show="hints['objeto']">
  52 + <h5>
  53 + <b translate>ECM.LABEL.OBJETO</b>
  54 + </h5>
  55 + <ul class="filters_list">
  56 + <li ng-repeat="hint in hints['objeto']" ng-class="{'selected' : hint.selected}"><a href="javascript: return false" ng-click="selectHint('objeto',$index);" class="filters"
  57 + ng-show="hint.quantidade > 0"> <span class="itens">{{hint.title}}</span> <span class="qtd">{{hint.quantidade}}</span>
  58 + </a></li>
  59 + </ul>
91 60 </li>
92   - </ul>
93   - </li>
94   - <li class="list-group-item document" ng-show="hints['tipoDocumento']">
95   - <h5>
96   - <b translate>ECM.LABEL.DADOS_TIPODOCUMENTO</b>
97   - </h5>
98   - <ul>
99   - <li ng-repeat="hint in hints['tipoDocumento']" ng-class="{'selected' : hint.selected}"><a ng-click="selectHint('tipoDocumento',$index);handleSubmit()">{{hint.title}}</a>&nbsp;&nbsp;&nbsp;{{hint.quantidade}}
  61 +
  62 + <li class="list-group-item document" ng-show="hints['tipoProcesso'].length > 0">
  63 + <h5>
  64 + <b translate>ECM.LABEL.TIPOPROCESSO</b>
  65 + </h5>
  66 + <ul class="filters_list">
  67 + <li ng-repeat="hint in hints['tipoProcesso']" ng-class="{'selected' : hint.selected}"><a href="javascript: return false" ng-click="selectHint('tipoProcesso',$index);" class="filters">
  68 + <span class="itens" ng-show="hint.quantidade > 0">{{hint.title}}</span> <span class="qtd" ng-show="hint.quantidade > 0">{{hint.quantidade}}</span>
  69 + </a></li>
  70 + </ul>
100 71 </li>
101   - </ul>
102   - </li>
103   - <li class="list-group-item document" ng-show="hints['objeto']">
104   - <h5>
105   - <b translate>ECM.LABEL.OBJETO</b>
106   - </h5>
107   - <ul>
108   - <li ng-repeat="hint in hints['objeto']" ng-class="{'selected' : hint.selected}"><a ng-click="selectHint('objeto',$index);handleSubmit()">{{hint.title}}</a>&nbsp;&nbsp;&nbsp;{{hint.quantidade}}
  72 +
  73 + <li class="list-group-item document" ng-show="hints['tipoDocumento'].length > 0">
  74 + <h5>
  75 + <b translate>ECM.LABEL.TIPODOCUMENTO</b>
  76 + </h5>
  77 + <ul class="filters_list">
  78 + <li ng-repeat="hint in hints['tipoDocumento']" ng-class="{'selected' : hint.selected}"><a href="javascript: return false" ng-click="selectHint('tipoDocumento',$index);" class="filters">
  79 + <span class="itens" ng-show="hint.quantidade > 0">{{hint.title}}</span> <span class="qtd" ng-show="hint.quantidade > 0">{{hint.quantidade}}</span>
  80 + </a></li>
  81 + </ul>
109 82 </li>
110   - </ul>
111   - </li>
112   - <li class="list-group-item document" ng-show="hints['assunto']">
113   - <h5>
114   - <b translate>ECM.LABEL.ASSUNTO</b>
115   - </h5>
116   - <ul>
117   - <li ng-repeat="hint in hints['assunto']" ng-class="{'selected' : hint.selected}"><a ng-click="selectHint('assunto',$index);handleSubmit()">{{hint.title}}</a>&nbsp;&nbsp;&nbsp;{{hint.quantidade}}
  83 +
  84 + <li class="list-group-item document" ng-show="hints['assunto'].length > 0">
  85 + <h5>
  86 + <b translate>ECM.LABEL.ASSUNTO</b>
  87 + </h5>
  88 + <ul class="filters_list">
  89 + <li ng-repeat="hint in hints['assunto']" ng-class="{'selected' : hint.selected}"><a href="javascript: return false" ng-click="selectHint('assunto',$index)" class="filters"> <span
  90 + class="itens" ng-show="hint.quantidade > 0">{{hint.title}}</span> <span class="qtd" ng-show="hint.quantidade > 0">{{hint.quantidade}}</span>
  91 + </a></li>
  92 + </ul>
118 93 </li>
119   - </ul>
120   - </li>
121   - <li class="list-group-item document" ng-show="hints['autor']">
122   - <h5>
123   - <b translate>ECM.LABEL.AUTOR</b>
124   - </h5>
125   - <ul>
126   - <li ng-repeat="hint in hints['autor']" ng-class="{'selected' : hint.selected}"><a ng-click="selectHint('autor',$index);handleSubmit()">{{hint.title}}</a>&nbsp;&nbsp;&nbsp;{{hint.quantidade}}
  94 +
  95 + <li class="list-group-item document" ng-show="hints['autor'].length > 0">
  96 + <h5>
  97 + <b translate>ECM.LABEL.AUTOR</b>
  98 + </h5>
  99 + <ul class="filters_list">
  100 + <li ng-repeat="hint in hints['autor']" ng-class="{'selected' : hint.selected}"><a href="javascript: return false" ng-click="selectHint('autor',$index)" class="filters"> <span
  101 + class="itens" ng-show="hint.quantidade > 0">{{hint.title}}</span> <span class="qtd" ng-show="hint.quantidade > 0">{{hint.quantidade}}</span>
  102 + </a></li>
  103 + </ul>
127 104 </li>
128   - </ul>
129   - </li>
130   - <li class="list-group-item document" ng-show="hints['atribuidoA']">
131   - <h5>
132   - <b translate>ECM.LABEL.ATRIBUIDOA</b>
133   - </h5>
134   - <ul>
135   - <li ng-repeat="hint in hints['atribuidoA']" ng-class="{'selected' : hint.selected}"><a ng-click="selectHint('atribuidoA',$index);handleSubmit()">{{hint.title}}</a>&nbsp;&nbsp;&nbsp;{{hint.quantidade}}
  105 +
  106 + <li class="list-group-item document" ng-show="hints['destinatario'].length > 0">
  107 + <h5>
  108 + <b translate>ECM.LABEL.DESTINATARIO</b>
  109 + </h5>
  110 + <ul class="filters_list">
  111 + <li ng-repeat="hint in hints['destinatario']" ng-class="{'selected' : hint.selected}"><a href="javascript: return false" ng-click="selectHint('destinatario',$index)" class="filters">
  112 + <span class="itens" ng-show="hint.quantidade > 0">{{hint.title}}</span> <span class="qtd" ng-show="hint.quantidade > 0">{{hint.quantidade}}</span>
  113 + </a></li>
  114 + </ul>
136 115 </li>
137   - </ul>
138   - </li>
139   - <li class="list-group-item document" ng-show="hints['destinatario']">
140   - <h5>
141   - <b translate>ECM.LABEL.DESTINATARIO</b>
142   - </h5>
143   - <ul>
144   - <li ng-repeat="hint in hints['destinatario']" ng-class="{'selected' : hint.selected}"><a ng-click="selectHint('destinatario',$index);handleSubmit()">{{hint.title}}</a>&nbsp;&nbsp;&nbsp;{{hint.quantidade}}
  116 +
  117 + <li class="list-group-item document" ng-show="hints['atribuidoA'].length > 0">
  118 + <h5>
  119 + <b translate>ECM.LABEL.ATRIBUIDOA</b>
  120 + </h5>
  121 + <ul class="filters_list">
  122 + <li ng-repeat="hint in hints['atribuidoA']" ng-class="{'selected' : hint.selected}"><a href="javascript: return false" ng-click="selectHint('atribuidoA',$index)" class="filters"> <span
  123 + class="itens" ng-show="hint.quantidade > 0">{{hint.title}}</span> <span class="qtd" ng-show="hint.quantidade > 0">{{hint.quantidade}}</span>
  124 + </a></li>
  125 + </ul>
145 126 </li>
146   - </ul>
147   - </li>
148   - <li class="list-group-item document" ng-show="hints['unidadeGeradora']">
149   - <h5>
150   - <b translate>ECM.LABEL.UNIDADE_GERADORA</b>
151   - </h5>
152   - <ul>
153   - <li ng-repeat="hint in hints['unidadeGeradora']" ng-class="{'selected' : hint.selected}"><a ng-click="selectHint('unidadeGeradora',$index);handleSubmit()">{{hint.title}}</a>&nbsp;&nbsp;&nbsp;{{hint.quantidade}}
  127 +
  128 + <li class="list-group-item document" ng-show="hints['unidadeGeradora'].length > 0">
  129 + <h5>
  130 + <b translate>ECM.LABEL.UNIDADE_GERADORA</b>
  131 + </h5>
  132 + <ul class="filters_list">
  133 + <li ng-repeat="hint in hints['unidadeGeradora']" ng-class="{'selected' : hint.selected}"><a href="javascript: return false" ng-click="selectHint('unidadeGeradora',$index)"
  134 + class="filters"> <span class="itens" ng-show="hint.quantidade > 0">{{hint.title}}</span> <span class="qtd" ng-show="hint.quantidade > 0">{{hint.quantidade}}</span>
  135 + </a></li>
  136 + </ul>
154 137 </li>
155   - </ul>
156   - </li>
157   - <li class="list-group-item document" ng-show="hints['situacao']">
158   - <h5>
159   - <b translate>LABEL.SITUACAO</b>
160   - </h5>
161   - <ul>
162   - <li ng-repeat="hint in hints['situacao']" ng-class="{'selected' : hint.selected}"><a ng-click="selectHint('situacao',$index);handleSubmit()">{{hint.title}}</a>&nbsp;&nbsp;&nbsp;{{hint.quantidade}}
  138 +
  139 + <li class="list-group-item document" ng-show="hints['situacao'].length > 0">
  140 + <h5>
  141 + <b translate>LABEL.SITUACAO</b>
  142 + </h5>
  143 + <ul class="filters_list">
  144 + <li ng-repeat="hint in hints['situacao']" ng-class="{'selected' : hint.selected}"><a href="javascript: return false" ng-click="selectHint('situacao',$index)" class="filters"> <span
  145 + class="itens" ng-show="hint.quantidade > 0">{{hint.title}}</span> <span class="qtd" ng-show="hint.quantidade > 0">{{hint.quantidade}}</span>
  146 + </a></li>
  147 + </ul>
163 148 </li>
164   - </ul>
165   - </li>
166   - <li class="list-group-item document" ng-show="hints['nivelAcesso']">
167   - <h5>
168   - <b translate>ECM.LABEL.NIVELACESSO</b>
169   - </h5>
170   - <ul>
171   - <li ng-repeat="hint in hints['nivelAcesso']" ng-class="{'selected' : hint.selected}"><a ng-click="selectHint('nivelAcesso',$index);handleSubmit()">{{hint.title}}</a>&nbsp;&nbsp;&nbsp;{{hint.quantidade}}
  149 +
  150 + <li class="list-group-item document" ng-show="hints['nivelAcesso'].length > 0">
  151 + <h5>
  152 + <b translate>ECM.LABEL.NIVELACESSO</b>
  153 + </h5>
  154 + <ul class="filters_list">
  155 + <li ng-repeat="hint in hints['nivelAcesso']" ng-class="{'selected' : hint.selected}"><a href="javascript: return false" ng-click="selectHint('nivelAcesso',$index)" class="filters">
  156 + <span class="itens" ng-show="hint.quantidade > 0">{{hint.title}}</span> <span class="qtd" ng-show="hint.quantidade > 0">{{hint.quantidade}}</span>
  157 + </a></li>
  158 + </ul>
172 159 </li>
  160 +
173 161 </ul>
174   - </li>
175   - </ul>
  162 + </div>
  163 + </div>
176 164 </div>
177   - </div>
178   - </div>
179   - <div id="search-results" class="col-sm-10" ng-cloak>
180   - <!--Show documents-->
181   - <div class="ecm-content-wrapper">
182   - <ul class="list-group">
183   - <li class="list-group-item document" ng-repeat="doc in documents" ng-cloak>
184   - <div class="row">
185   - <div class="col-md-12">
186   - <a href="">{{doc.objeto == 'Documento' ? doc.numero : doc.nup}} - {{doc.objeto == 'Documento' ? doc.tipoDocumento : doc.tipoProcesso}}</a>&nbsp; <span class="label label-success pull-right"
187   - ng-show="doc.nivelAcesso == 'Publico' || doc.nivelAcesso == 'Público'">{{doc.nivelAcesso}}</span> <span class="label label-warning pull-right" ng-show="doc.nivelAcesso =='Restrito'">{{doc.nivelAcesso}}</span>
188   - <span class="label label-danger pull-right" ng-show="doc.nivelAcesso == 'Secreto'">{{doc.nivelAcesso}}</span> <span class="label label-gray pull-right" ng-show="doc.nivelAcesso == 'Reservado'">{{doc.nivelAcesso}}</span>
189   - <span class="label label-black pull-right" ng-show="doc.nivelAcesso == 'Ultrassecreto'">{{doc.nivelAcesso}}</span>
190   - </div>
  165 +
  166 + <div class="col-sm-10">
  167 +
  168 + <div class="row" ng-show="$showAdvancedFilters" style="padding-top: 10px;">
  169 + <div class="col-sm-2">
  170 + <label-select ng-id="parameterPesquisa" ng-model="parameterPesquisa" ng-label="ECM.LABEL.OBJETO" form="solrForm" ng-list="filtroPesquisaList"
  171 + ng-custom-options="dominio.originalElement as dominio.descricao for dominio" show-selecione='false' ng-custom-change="addParameter()"> </label-select>
  172 + </div>
  173 +
  174 + <div class="col-sm-2">
  175 + <label-select ng-id="parameterDatePesquisa" ng-label="ECM.LABEL.DATA_CRIACAO" ng-model="parameterDatePesquisa" form="solrForm" ng-list="filtroDateList"
  176 + ng-custom-options="dominio.originalElement as dominio.descricao for dominio" show-selecione='false' ng-custom-change="addParameterDate()"> </label-select>
191 177 </div>
192   - <div class="row">
193   - <div class="col-md-12">
194   - <a href="">{{doc.assunto}}</a>
  178 +
  179 + <div class='col-sm-2' ng-show="parameterDatePesquisa.codigo == 6">
  180 + <div class="form-group">
  181 + <label for="date-birth" class="control-label">De</label>
  182 + <div class="control">
  183 + <input id="date-birth" class="form-control" type="date" ng-model="dataInicioFiltro" ng-change="addParameterDatePersonalisada();">
  184 + </div>
195 185 </div>
196 186 </div>
197   - <div class="row">
198   - <div class="col-md-12">
199   - <pre>{{doc.objeto == 'Documento' ? doc.conteudo :doc.assuntoComplementar}}</pre>
  187 +
  188 + <div class='col-sm-2' ng-show="parameterDatePesquisa.codigo == 6">
  189 + <div class="form-group">
  190 + <label for="date-birth" class="control-label"><translate>ECM.LABEL.ATE</translate></label>
  191 + <div class="control">
  192 + <input id="date-birth" class="form-control" type="date" ng-model="dataFimFiltro" ng-change="addParameterDatePersonalisada();">
  193 + </div>
200 194 </div>
201 195 </div>
  196 + </div>
202 197  
  198 + <div class="row">
  199 + <div class="col-md-8" ng-show='userQuery != "" && apresentarMsgSemResultado'>
  200 + </p>
  201 + <translate>ECM.LABEL.SUA_PESQUISA</translate>
  202 + : <label style="font-weight: bold;">{{userQuery}} </label>
  203 + </p>
  204 + <translate>ECM.LABEL.NENHUM_DOCUMENTO_CORRESPONDENTE</translate>
  205 + </p>
  206 + <translate>ECM.LABEL.SUGESTOES</translate>
  207 + <ul>
  208 + <li style="list-style-type: disc;"><translate>ECM.LABEL.CERTIFIQUE_PALAVRAS_ESCRITAS_CORRETAMENTE</translate></li>
  209 + <li style="list-style-type: disc;"><translate>ECM.LABEL.TENTE_PALAVRAS_CHAVES_DIFERENTE</translate></li>
  210 + <li style="list-style-type: disc;"><translate>ECM.LABEL.TENTE_PALAVRAS_CHAVES_MAIS_GENERICAS</translate></li>
  211 + <li style="list-style-type: disc;"><translate>ECM.LABEL.TENTE_MENOS_PALAVRAS_CHAVES</translate></li>
  212 + </ul>
  213 + </div>
  214 + </div>
203 215  
204   - <div class="row">
205   - <div class="col-md-6">Unidade Geradora</div>
206   - <div class="col-md-4">Autor</div>
207   - <div class='col-sm-2'>Data Criação</div>
208   - </div> <!-- .row -->
209   - <div class="row">
210   - <div class="col-md-6">{{doc.unidadeGeradora}}</div>
211   - <div class="col-md-4">{{doc.autor}}</div>
212   - <div class='col-sm-2'>{{doc.dataCriacao | date:'dd/MM/yyyy HH:mm:ss'}}</div>
213   - </div> <!-- .row -->
214   - </li>
215   - </ul>
216   - </div>
  216 + <div id="search-results" class="row" ng-cloak>
  217 + <!--Show documents-->
  218 + <div class="ecm-content-wrapper">
  219 + <ul class="list-group">
  220 + <li class="list-group-item document" ng-class-odd="'odd_result_metadado'" ng-class-even="'background-color'" ng-repeat="doc in documents" ng-cloak>
  221 + <div class="row">
  222 + <div class="col-md-12">
  223 + <label class="result_metadado">{{doc.nup}} - {{doc.objeto == 'Documento' ? doc.tipoDocumento : doc.tipoProcesso}}</label>&nbsp; <span class="label label-success pull-right"
  224 + style="font-size: 13px;" ng-show="doc.nivelAcesso == 'Publico' || doc.nivelAcesso == 'Público'">{{doc.nivelAcesso}}</span> <span class="label label-warning pull-right"
  225 + style="font-size: 13px;" ng-show="doc.nivelAcesso =='Restrito'">{{doc.nivelAcesso}}</span> <span class="label label-danger pull-right" style="font-size: 13px;"
  226 + ng-show="doc.nivelAcesso == 'Secreto'">{{doc.nivelAcesso}}</span> <span class="label label-gray pull-right" style="font-size: 13px;" ng-show="doc.nivelAcesso == 'Reservado'">{{doc.nivelAcesso}}</span>
  227 + <span class="label label-black pull-right" style="font-size: 13px;" ng-show="doc.nivelAcesso == 'Ultrassecreto'">{{doc.nivelAcesso}}</span>
  228 + </div>
  229 + </div>
  230 + <div class="row">
  231 + <div class="col-md-12">
  232 + <label class="result_metadado">{{doc.assunto}}</label>
  233 + </div>
  234 + </div>
  235 + <div class="row">
  236 + <div class="col-md-12">
  237 + <div ng-show="doc.objeto == 'Processo'">{{doc.assuntoComplementar}}</div>
217 238  
218   - <!--Show Pagination-->
219   - <div class="col-sm-6 text-right" ng-show="totalPages > 1">
220   - <pagination rotate="true" max-size="10" total-items="totalResults" num-pages="totalPages" ng-model="start" items-per-page="10" class="pagination-sm" boundary-links="true"
221   - ng-change="handleSetPage()" previous-text="&lsaquo;" next-text="&rsaquo;" first-text="&laquo;" last-text="&raquo;"></pagination>
  239 + <div class="result_pesquisa" id="{{doc.id}}"></div>
  240 + </div>
  241 + </div>
  242 +
  243 + <div class="row">
  244 + <div class="col-md-6">
  245 + <label class="profile-info-label"><translate>ECM.LABEL.UNIDADE_GESTORA</translate></label>
  246 + </div>
  247 + <div class="col-md-4">
  248 + <label class="profile-info-label"><translate>ECM.LABEL.AUTOR</translate></label>
  249 + </div>
  250 + <div class='col-sm-2'>
  251 + <label class="profile-info-label"><translate>ECM.LABEL.DATA_CRIACAO</translate></label>
  252 + </div>
  253 + </div> <!-- .row -->
  254 + <div class="row">
  255 + <div class="col-md-6">{{doc.unidadeGeradora}}</div>
  256 + <div class="col-md-4">{{doc.autor}}</div>
  257 + <div class='col-sm-2'>{{doc.dataCriacao | date: 'dd/MM/yyyy HH:mm:ss': 'UTC'}}</div>
  258 + </div> <!-- .row -->
  259 + </li>
  260 + </ul>
  261 + </div>
  262 +
  263 + <!--Show Pagination-->
  264 + <div class="col-sm-6 text-right" ng-show="documents.length > 0 && totalPages > 1">
  265 + <pagination rotate="true" max-size="10" total-items="totalResults" num-pages="totalPages" ng-model="start" items-per-page="10" class="pagination-sm" boundary-links="true"
  266 + ng-change="handleSetPage()" previous-text="&lsaquo;" next-text="&rsaquo;" first-text="&laquo;" last-text="&raquo;"></pagination>
  267 + </div>
  268 +
  269 + </div>
  270 + </div>
222 271 </div>
223   - <!-- .col -->
224   - </div>
  272 + </form>
225 273 </div>
226 274 </div>
227 275 <!-- .page-content -->
228 276 \ No newline at end of file
... ...