Pesquisar este blog

domingo, 27 de março de 2011

Passando valores de uma janela a outra via Javascript

Recentemente no trabalho me deparei com uma necessidade simples que a tempos não utilizava. Como passar valores de uma janela a outra usando Javascript?
Depois de quebrar a cabeça para lembrar e também pesquisando, resolví postar essa dica para memorizar e também ajudar a todos.


Este recurso é bastante utilizado quando se deseja pesquisar um determinado item em uma tabela e passar o código para um <input> do <form> que está em outra janela.


formprincipal.html
<html>
<head>

<script>
function abrirPesquisa()
{
   window.open("pesquisa.html"); // Abrira a janela de pesquisa
}   
</script>

</head>
<body>
<form>
Digite um codigo: 

Descrição: <label name="descrproduto" id="descrproduto">
<p align="center"><a href="javascript:abrirPesquisa()";>Pesquisar</a></p>

</form>

</body>
</html>


pesquisa.html
<html>
<head>
<script>
function levarcodigo( codigo,descricao )
{
   /** O "segredo" está aqui nessas duas linhas, onde é passado o codigo para o <input>
   *    e a descricao para o <label>
   */
   top.opener.document.getElementById("campo1").value = codigo;
   top.opener.document.getElementById("descrproduto").innerHTML = descricao;
   window.close();
}
</script>
</head>
<body>
<a href="javascript:levarcodigo(1010,'Cafeteira');">1010-Cafeteira</a>
<a href="javascript:levarcodigo(1020,'Jogo de panelas');">1020-Jogo de panelas</a>
<a href="javascript:levarcodigo(1030,'Jogo de taças');">1030-Jogo de taças</a>
<a href="javascript:levarcodigo(1040,'Churrasqueira');">1040-Churrasqueira</a>
</body>
</html>

Um exemplo bem simples, porém funcional. Importante ressaltar que para funcionar é necessário que as duas páginas(.html) estejam no mesmo domínio.

"Vida longa e próspera ao Javascript".

quarta-feira, 9 de março de 2011

Gráfico de linha usando API Google e PHP

Há um tempo atrás, fiz um post sobre o mesmo tema, só com a diferença do anterior ter sido com a utilização do Delphi e o gráfico ser o de pizza.
Agora, utilizando a mesma API Chart do Google, disponibilizo um exemplo para montar um gráfico de linha.





<html>
<body>
<center

Gráfico de linha usando API Google Chart com PHP

<center> <?php { if( isset($_POST['btnOk']) ) { $m1 = $_POST['m1']; $m2 = $_POST['m2']; $m3 = $_POST['m3']; $m4 = $_POST['m4']; $m5 = $_POST['m5']; $m6 = $_POST['m6']; $m7 = $_POST['m7']; $m8 = $_POST['m8']; $m9 = $_POST['m9']; $m10 = $_POST['m10']; $m11 = $_POST['m11']; $m12 = $_POST['m12']; $maiorValor = $m1; if( $maiorValor < $m2 ) { $maiorValor = $m2; } if( $maiorValor < $m3 ) { $maiorValor = $m3; } if( $maiorValor < $m4 ) { $maiorValor = $m4; } if( $maiorValor < $m5 ) { $maiorValor = $m5; } if( $maiorValor < $m6 ) { $maiorValor = $m6; } if( $maiorValor < $m7 ) { $maiorValor = $m7; } if( $maiorValor < $m8 ) { $maiorValor = $m8; } if( $maiorValor < $m9 ) { $maiorValor = $m9; } if( $maiorValor < $m10 ) { $maiorValor = $m10; } if( $maiorValor < $m11 ) { $maiorValor = $m11; } if( $maiorValor < $m12 ) { $maiorValor = $m12; } $chds = "0,$maiorValor"; $chd = "t:$m1,$m2,$m3,$m4,$m5,$m6,$m7,$m8,$m9,$m10,$m11,$m12"; $grafico = ''; echo "
"; echo $grafico; echo "
"; } else { ?>
janeiro
fevereiro
março
abril
maio
junho
julho
agosto
setembro
outubro
novembro
dezembro
<?php } ?< </body> </html>

Mais informações e exemplos, é só acessar Google Chart Tools.

segunda-feira, 7 de março de 2011

JD-GUI Java Decompiler

Um utilitário bastante útil em Java é o Java Decompiler(JD-GUI). Uma aplicação que mostra códigos java diretamente dos arquivos .class embutidos ou não em um .jar.
Recentemente fiz uso dessa ferramenta para descobrir um erro num código antigo empacotado num .jar e que na empresa não tinha mais o fonte.

Sua utilização é bem simples e intuitiva, o que me ajudou muito a atualizar o projeto e assim acabar com a dependência do pacote.



Para descompilar um .war, primeiramente deverá descompactar o arquivo utilizando jar xvf arquivo.war

Basta acessar o site http://java.decompiler.free.fr/?q=jdgui para fazer o download.

terça-feira, 1 de março de 2011

Visualizar Hash do XML/TISS usando TissNet

Até hoje ainda existem dificuldades no entendimento do padrão TISS, é absolutamente normal, pois ainda estamos(prestadores, operadoras, ANS, desenvolvedores) em fase de aperfeiçoamento, porém, dúvidas antigas ainda persistem. É o caso do cálculo do hash de um arquivo XML.

Para tentar facilitar o trabalho de muitos "sofredores" assim como eu, implementei uma pequena mudança no aplicativo TissNet em sua versão 5.0.
Esta ferramenta desenvolvida em Java por Francisco Piragibe tem sido útil à comunidade de desenvolvedores por facilitar o entendimento do padrão TISS. É disponibilizada gratuitamente no site da ANS.

A ideia é bem simples, consiste em mudar a exceção tissHashException() para tissSchemaException() do método setArquivoXML() da classe MensagemTiss para poder visualizar o hash. Em sua versão atual, tal recurso não existe o que complica a vida de quem está começando a trabalhar com a TISS. O resultado deverá ser como na figura abaixo:


public void setArquivoXml (String arquivoXml)
    throws  IOException,
            ParserConfigurationException,
            TissHashException,
            TissSchemaException,
            TissNodoException,
            URISyntaxException
    {
        String oldArquivoXml    = this.arquivoXml;
        this.arquivoXml         = arquivoXml;
        AgenteDomTiss o_ad      = null;
        try {
            o_ad                    = AgenteDomTiss.getInstance();
            this.documentoMensagem  = o_ad.carregaArquivo( this.arquivoXml );
            if ( ! this.isHashOk() )
                //throw new TissHashException(); <-- Trocar TissHashException por TissSchemaException
                throw new TissSchemaException( "Hash inválido! - \n Hash calculado => " + this.getHashCalculado() );
            propertySupport.firePropertyChange ("arquivoXml", oldArquivoXml, arquivoXml);
        }

Dessa forma, fica mais fácil verificar se o arquivo XML foi bem montado. Claro que existem outras formas que dão o mesmo resultado, então aproveito a oportunidade para os que implementaram algum novo recurso nessa ferramenta que disponibilizassem e assim todos possam enfim avançar no desenvolvimento do padrão TISS.