[Logo] Neo Framework Forum
  [Search] Busca   [Recent Topics] Tópicos Recentes   [Members]  Lista de Usuários   [Groups] De volta para a página principal 
[Register] Registrar / 
[Login] Entrar 
Mensagens enviadas por: guilherme.pimentel  XML
Perfil de guilherme.pimentel -> Mensagens enviadas por guilherme.pimentel [108] Ir para a página: Anterior  1, 2, 3, 4, 5, 6, 7, 8 Próximo 
Autor Mensagem
Como colocar os campos do formulario de filtro não fique sempre sendo exibido, somente seram exibidos quando solicitado pelo usuario.


Criar o pacote:

br.com.linkcom.neo.view.template

Colocar os seguintes arquivos para serem alterados:

JanelaFiltroTag.jsp:

Colocar o style="display:none;" para que o table não seja exibido ao entrar entrar na tela e tambem colocar o nome no <table> para que ele seja gerenciado pelo JavaScript da outra JSP

Code:
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 <%@ taglib prefix="n" uri="neo"%>
 <%@ taglib prefix="combo" uri="combo"%>
 <%@ taglib prefix="t" uri="template"%>
 
 <n:bean name="${tag.name}">
 <table id="filtro" style="display=none" width="100%" align="center" class="window inputWindow"  cellpadding="0" cellspacing="0">
 	<tr>
 		<td>
 			<n:doBody />
 		</td>
 	</tr>
 </table>
 </n:bean>
 


ListagemTag.jsp:

Criar uma função verFiltro() que irá gerenciar o table acima e tambem criar um link ao lado do "Criar" que vai exibir ou esconder o os campos do formulario de consulta.

Code:
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 <%@ taglib prefix="n" uri="neo"%>
 <%@ taglib prefix="combo" uri="combo"%>
 <%@ taglib prefix="t" uri="template"%>
 <script>
 	function verFiltro(){
 		if (document.getElementById('filtro')){
 			if (document.getElementById('filtro').style.display == ''){
 				document.getElementById('filtro').style.display = 'none';
 			}else document.getElementById('filtro').style.display = '';
 		}
 	}
 </script>
 <n:form validate="false">
 	<n:validation>
 		<input type="hidden" name="notFirstTime" value="true"/>
 		<table class="outterTable" cellspacing="0" cellpadding="0" align="center">
 			<tr style="background: url('${pageContext.request.contextPath}/resource/img/titulo.gif')" class="outterTableHeader">
 				<td>
 					<span class="outterTableHeaderLeft">
 						${listagemTag.titulo}						
 					</span>
 					<span class="outterTableHeaderRight">
 						<c:if test="${listagemTag.showNewLink || !empty listagemTag.linkArea}">
 							${listagemTag.invokeLinkArea}
 							<c:if test="${listagemTag.showNewLink}">						
 								<n:link action="criar" class="outterTableHeaderLink">Criar</n:link>
 							</c:if>						
 						</c:if>					
 					</span>
 					<span class="outterTableHeaderRight">
 						<a href="#" onclick="verFiltro()" class="outterTableHeaderLink">Filtro</a>
 					</span>
 				</td>
 			</tr>
 			<tr>
 				<td>
 					<n:doBody />
 				</td>
 			</tr>
 		</table>
 	</n:validation>
 </n:form>
 
 



TabelaFiltroTag.jsp:

Foi criada a função limparFiltro() que limpa todos os inputs e combos pois não posso colocar fixo será utilizado por qualquer formulario de consulta caso exista outro tipo de componente de entrada é so criar um outro loop que irá limpar esse outro componente como:
Code:
 		list = document.getElementsByTagName('select');
 		for(i=0; i < list.length; i++){
 			list[i].value = '<null>';
 		}


e outro botão "Limpar Filtro" para executar essa função.

Code:
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 <%@ taglib prefix="n" uri="neo"%>
 <%@ taglib prefix="combo" uri="combo"%>
 <%@ taglib prefix="t" uri="template"%>
 
 <c:set var="panelGridColumns" value="${n:default(2, TabelaFiltroTag.columns)}" />
 <c:set var="panelGridStyleClass" value="${n:default('inputTable', TabelaFiltroTag.styleClass)}" />
 <c:set var="panelGridColumnStylesClasses" value="${n:default('labelColumn, propertyColumn', TabelaFiltroTag.columnStyleClasses)}" />
 
 <script type="text/javascript">
 	function limparFiltro(){
 		list = document.getElementsByTagName('input');
 		for(i=0; i < list.length; i++){
 			if (list[i].type == 'text')
 			list[i].value = '';
 		}
 		list = document.getElementsByTagName('select');
 		for(i=0; i < list.length; i++){
 			list[i].value = '<null>';
 		}
 		document.getElementById('filtrar').click();
 		return false;
 	}
 </script>
 
 <n:panelGrid columns="${panelGridColumns}"
 	 style="${tag.style}"
 	 colspan="${tag.colspan}"
 	 columnStyleClasses="${panelGridColumnStylesClasses}"
 	 columnStyles="${tag.columnStyles}"
 	 dynamicAttributesMap="${tag.dynamicAttributesMap}"
 	 rowStyles="${tag.rowStyles}"
 	 styleClass="${panelGridStyleClass}"
 	 propertyRenderAsDouble="${tag.propertyRenderAsDouble}" width="${tag.width}" rowStyleClasses="${tag.rowStyleClasses}" cellpadding="1">
 		
 		<t:propertyConfig mode="input" showLabel="${tag.propertyShowLabel}" renderAs="double">
 			<n:doBody />
 		</t:propertyConfig>
 
 </n:panelGrid>
 
 <c:if test="${tag.showSubmit}">
 	<table>
 		<tr>
 			<td>
 				<div class="actionBar">
 					<n:submit id="filtrar" action="${TabelaFiltroTag.submitAction}" validate="${TabelaFiltroTag.validateForm}" url="${TabelaFiltroTag.submitUrl}">Filtrar</n:submit>
 				</div>
 			</td>
 			<td>
 				<div class="actionBar">
 					<button onclick="limparFiltro()" >Limpar Filtro</button>
 				</div>
 			</td>
 		</tr>
 	</table>
 </c:if>
 


Se der algum problema ou se estiver dando problema é so falar....
Funcionou so que esse negocio das colunas que não esta funcionando ... sem o panel ele fica formatado certinho alinhado a esquerda porem quando eu coloco o panel sem definir o numero de colunas no "<t:tabelaEntrada>" a tabela fica mais ou menos assim:


Projeto: [Combo]
Area: [Combo]
[A msg area] Estrutura:
[Combo] [A msg estrutura]
Piezometro [Combo]
o codigo jsp que eu fiz ficou assim:

Code:
 <n:comboReloadGroup useAjax="true">
 	<t:property name="piezometro.estrutura.area.projeto"/>
 	<t:property name="piezometro.estrutura.area" onLoadItens="verificaLista(this)"/>
 	<n:panel id="mensagem.piezometro.estrutura.area" style="display: none;">Nenhum registro encontrado</n:panel>
 	<t:property name="piezometro.estrutura" onLoadItens="verificaLista(this)"/>
     	<n:panel id="mensagem.piezometro.estrutura" style="display: none;">Nenhum registro encontrado</n:panel>
 	<t:property name="piezometro" onLoadItens="verificaLista(this)"/>
     	<n:panel id="mensagem.piezometro" style="display: none;">Nenhum registro encontrado</n:panel>
 </n:comboReloadGroup>
 


Eu queri que ficasse assim:

Projeto: [Combo] [vazio]
Area: [Combo] [A msg area]
Estrutura: [Combo] [A msg estrutura]
Piezometro [Combo] [A msg piez.]
 


como é que eu faço?? deu pra entender????
Malandro..... fera de mais!!!!!!! Valeu!!!!!
Fiz um um codigo que tem varios combos dependentes um do outro:
Code:
 <n:comboReloadGroup useAjax="true">
      <t:property name="piezometro.estrutura.area.projeto"/>
      <t:property name="piezometro.estrutura.area" onLoadItens="verificaLista(this)"/><div id="mensagem.piezometro.estrutura.area" style="display: none;">Nenhum registro encontrado</div>
      <t:property name="piezometro.estrutura" onLoadItens="verificaLista(this)"/><div id="mensagem.piezometro.estrutura" style="display: none;">Nenhum registro encontrado</div>
      <t:property name="piezometro" onLoadItens="verificaLista(this)"/><div id="mensagem.piezometro" style="display: none;">Nenhum registro encontrado</div>
 </n:comboReloadGroup>
 


e o JavaScript:

Code:
             function verificaLista(obj){
             	if (obj.length == 1){
             		document.getElementById("mensagem."+obj.name).style.display="";
             	}
             }
 


porem quando executo a aplicação e o algum subCombo não tem itens a mensagem aparece so que não na frente do Combo mas em cima de todos os campos totalmente separado.
Como é que eu faço para que a mensagem fique na frente do Combo referente igual ao codigo postado acima.
Ou então como faço para transformar essa string em um Bean????
Oque eu quero é que a imagem fique no servidor e no banco de dados eu coloco so o caminho.
Eu tambem quero mudar o nome da figura que fica no servidor pois um usuario pode interferir com o outro.
Beleza mas como eu faço para pegar o "id" de um item de um combo pois o valor do item é como por exemplo:

Code:
 <option value='br.com.geoexplore.geoenterprise.adm.bean.Projeto[id=3]' >PROJETO3</option>
 


ok vou montar aqui e coloco nesse topico ... valeu pela atenção
Quando o usuario entrar na tela de listagem de dados e o foco dele não é fazer filtro, e sim criar um registro ou editar um registro que ja esta sendo exibido ele não precisaria ver o filtro de cara ... ele so iria ver o filtro caso ele queira filtrar.
Desta forma a tela fica mais limpa e mais direta.... é so uma sugestão ....
Bom dia, o FrameWork tem algum facilitador para fazer o upload de uma figurapara o servidor?????


No exemplo abaixo ensina como fazer
http://www.devmedia.com.br/articles/viewcomp.asp?comp=3572
porem eu queria saber se no frameWork tem alguma forma de agilizar essa implemetação.


Obrigado,
Bom dia, eu fiz uma alteração aqui nos templates em que os campos do filtro da consulta ficam escondidos(como se não existisse filtro) e coloquei um link ao lado do "Criar" com o nome de "Filtro" que quando acionado o filtro aparece.
Tambem criei um outro botão ao lado do botão "Enviar" com o nome de "Limpar Filtro" com o codigo:

Code:
 function limparFiltro(){
 	list = document.getElementsByTagName('input');
 	for(i=0; i < list.length; i++){
 		if (list[i].type == 'text')
 		list[i].value = '';
 	}
 	list = document.getElementsByTagName('select');
 	for(i=0; i < list.length; i++){
 		list[i].value = '<null>';
 	}
 	document.getElementById('filtrar').click();
 }
 


em que limpa todos os campos do filtro sejam quantos for.
Essa ideia é boa????
Eu criei uma função no Service e no DAO de consulta em uma entidade e preciso acessar esse metodo via JavaScript pois irei utilizar esse valor de retorno da função para um calculo na pagina de forma dinamica.
Como faço isso pois no exemplo do site que utiliza a função sendRequest ele não é passada nenhum parametro para a função do servidor.
Via javaScript a ideia seria fazer de uma for que eu não teria que fazer um para cada tela,


Fiz uma alteração no template ListagemTag.jsp para que os campos do filtro so fossem exibidos depois que o usuario apertasse o botão "Filtro" ao lado do botão "Criar".
No tamplate TabelaFiltroTag.jsp eu criei um botão que limpa o filtro e execulta a comsulta novamente sem os filtros, ficou legal.


Estou no aguardo deste codigo ... por enquanto vou tentar fazer oque vc falou!!!! Valeu!!!!
Oque eu quero não é que o valor seja um combo isso funciona corretamente eu quero que no meu caso é o seguinte:

Eu tenho o filtro
Code:
 public class AreaFiltro extends FiltroListagem {
 	String sigla;
 	String nome;
 	Projeto projeto;
                 ......
 


e na listagem:

Code:
 <t:tabelaFiltro>
         	<t:property name="nome"/>
         	<t:property name="sigla"/>
 	<t:property name="projeto"/>
 </t:tabelaFiltro>
 


é o dao:

Code:
 public void updateListagemQuery(QueryBuilder<Area> query, FiltroListagem _filtro) {
         AreaFiltro filtro = (AreaFiltro) _filtro;
         query.whereLike("area.nome", filtro.getNome())
         	 .whereLike("area.sigla", filtro.getSigla())
               .where("area.projeto = ?", filtro.getProjeto());
 	}
 


quando abro a aplicação o framework faz o filtro do jeito certo em forma de formulario em cima da listagem, porem, eu gostaria que esse filtro fosse de outra forma.

Em que o campo de consulta fosse selecionado em um combo que nesse caso conteria tres item Nome, sigla e Projeto quando o usuario selecionar o campo Sigla por exemplo e tambem preencher um text que estaria na frete do combo, o sistema faria a consulta somente com o campo Sigla.

Estou pedindo isso pois é o padrão aqui da empresa.
Boa tarde, gostaria de saber como faço no FrameWork para que o filtro ao inves de formulario de consulta, o usuario pudesse escolher o campo de consulta em um combo, preencher um outro campo com o valor do filtro e assim ele fizesse a pesquisa sem que fosse necessar mostrar todo o formulario.

Obrigado,
 
Perfil de guilherme.pimentel -> Mensagens enviadas por guilherme.pimentel [108] Ir para a página: Anterior  1, 2, 3, 4, 5, 6, 7, 8 Próximo 
Ir para:   
Powered by JForum 2.1.7 © JForum Team