Archive for the ‘ColdFusion’ Category

Como reposicionar dinamicamente um CFWindow

Monday, May 25th, 2009

A janelas criadas com a tag CFWINDOW podem ser posicionadas através dos atributos “x” e “y” da tag, mas em algumas situações precisamos posicionar a janela dinamicamente, em função de um outro elemento HTML da página. Para solucionar este problema precisamos ir além do ColdFusion e manipular a biblioteca ExtJS diretamente (mais detalhes sobre a biblioteca aqui).

O código a seguir demonstra como fazer isso, note o método alignTo do objeto myWindow que é o responsável por alinhar a janela ao elemento HTML:

(more…)

ColdFusion.objectCache

Thursday, April 23rd, 2009

No post anterior eu usei a propriedade ColdFusion.objectCache para retirar do cache do ColdFusion a janela criada com a tag CFWINDOW. Eu esqueci de dizer que este trecho de código usa comandos não documentados da linguagem, logo é um código não suportado oficialmente na especificação da linguagem. Vamos usar por nossa conta e risco :-)

CFWINDOW

Tuesday, April 21st, 2009

O código abaixo mostra como atualizar o conteúdo de uma janela criada com a tag CFWINDOW, este código dribla o comportamento padrão das janelas criadas com a tag que não são atualizadas mesmo que parâmetros diferentes sejam passados para a janela.

(more…)

Usando a função IsInstanceOf

Wednesday, April 8th, 2009

Neste post, eu demonstrei o uso da função “isObject” para avaliar variáveis complexas. No exemplo de hoje utilizo a função “isInstanceOf” para verificar se a variável é uma instância do componente (ou interface) indicado.

(more…)

Geocoding com ColdFusion

Monday, April 6th, 2009

Neste post falei sobre Geocoding, o processo de encontrar as latitude e longitude de um determinado endereço.  O exemplo abaixo utiliza a tag CFHTTP para fazer uma pesquisa no serviço de geocoding do Google (lembrando que <key> representa a minha chave de acesso à API). O resultado da chamada HTTP é uma lista com 4 elementos, o primeiro é o código de retorno, o segundo a precisão e os dois últimos as coordenadas.

(more…)

Geocoding

Friday, April 3rd, 2009

Geocoding é o processo de encontrar as coordenadas geográficas (latitude e longitude) de um determinado endereço. E para que precisamos das coordenadas geográficas? Quando utilizamos APIs para trabalhar com mapas, o ideal é que já tenhamos as coordenas armazenadas para que o geocoding não precise ser feito enquanto o usuário está trabalhando no mapa, já que o geocoding é um processo relativamente custoso, por exemplo, você está fazendo um sistema para indicar no mapa todos os clientes de uma transportadora, ao invés de fazer o geocoding ao exibir o mapa, o geocoding por de ser feito no momento do cadastro do cliente, quando o mapa for exibido, basta apresentar as coordenadas previamente determinadas.

Existem diversos serviços públicos que permitem que você faça geocoding, o exemplo abaixo utiliza o serviço do Google para buscar as coordenadas da loja New Dive de equipamentos de mergulho, onde <key> é a minha chave de acesso à Google Maps API.

http://maps.google.com/maps/geo?q=rua da alfandega, 112 – rio de janeiro – rj – brasil&output=csv&key=<key>

O retorno da chamada http acima esta listado a seguir. O primeiro elemento (200) é o código de retorno (veja aqui), o segundo é a precisão (quanto maior, melhor, ou seja, mais precisa foi a pesquisa, veja os detalhes), o terceiro e o quarto são as coordenadas.

200,8,-22.9026701,-43.1806372

Veja o resultado no mapa, clicando aqui. Voltarei ao assunto com um exemplo de como fazer o geocoding de uma base de dados utilizando ColdFusion.

Livedocs, porque devemos consultá-los

Wednesday, April 1st, 2009

A Adobe mantém um domínio chamado livedocs, neste site é possível encontrar a documentação on-line de vários produtos da empresa, isto é interessante, mas nada de espetacular afinal podemos baixar livremente a documentação dos produtos que usamos, certo?

Bom, o diferencial é que o livedocs que promove a interação entre os usuários e o pessoal da Adobe, além de permitir comentários, acredito que os desenvolvedores podem aprender com isso. A Adobe também atualiza constantemente o livedocs, um exemplo disso é a função “ColdFusion.JSON.decode” que não aparece nos PDFs do ColdFusion lançados com o produto, mas está disponível no livedocs (talvez os PDFs do ColdFusion tenham sido atualizados, eu não baixei novamente para conferir).

Livedocs ColdFusion e Livedocs Flex

Funções javascript e containers Ajax

Tuesday, March 31st, 2009

Quando comecei a usar controles Ajax com o ColdFusion 8 achei que funções javascript não poderiam ser utilizadas em páginas incluídas em containers Ájax, eu estava errado, após pesquisar um pouco vi que é possível, basta alterar um pouco a sintaxe.

Acompanhe os exemplos abaixo:

página index.cfm:

<cflayout type=“tab”>

      <cflayoutarea title=“myTab” source=“teste.cfm”/>

</cflayout>

página teste.cfm com erro:

<script>

function teste()

{

      alert(“teste”);

}

</script>

<a href=“javascript: teste()”>teste</a>

página teste.cfm com sintaxe atualizada:

<script>

teste=function()

{

      alert(“teste”);

}

</script>

 

<a href=“javascript: teste()”>teste</a>

CFFORM e containers Ajax

Tuesday, March 31st, 2009

No ColdFusion 8, sempre que um CFFORM que está dentro de um container “Ajax-based” (CFDIV, CFWINDOW, CFPOD e CFLAYOUT) é submetido apenas o container é atualizado e não a página inteira entretanto às vezes precisamos que toda a página seja atualizada e não apenas o container. Para isto basta submetermos o formulário via javascript ao invés de usar um botão tipo “submit”.

Segue um exemplo:

<script>
function teste()
{
testForm.submit();
}
</script>

<cflayout type=”tab”>
<cflayoutarea title=”Tab 1″>
This is text in layout area 1
</cflayoutarea>
<cflayoutarea title=”Tab 2″>
<cfform action=”2.cfm” name=”testForm”>
<cfinput name=”nome” type=”text”>
<cfinput type=”button” value=”OK” name=”OK” onclick=”javascript: teste()”>
</cfform>
</cflayoutarea>
</cflayout>

Dica rápida para arrays e listas

Monday, December 1st, 2008

Estou trabalhando em um relatório em que o usuário pode escolher a ordem em que campos são ordenados, ou seja, por nome e em seguida por quantidade ou vice-versa. Ao validar o formulário de filtro da tela me deparei com um array com elementos indefinidos, como por exemplo (10,indef.,25,indef,50). Eu precisava transformar este array em uma lista mas esta ficava com elementos nulos (10,,25,,50) o que causava um erro no meu comando SQL.

A solução foi simples, transformei o array em lista, em array novamente e voltei para lista, ao fazer a conversão, o ColdFusion se encarrega de remover os elementos indefinidos. Acompanhe o exemplo:
(more…)