Tutorial: Master Detail com Transi

O Spry é uma framework para AJAX da Adobe.
Com ele é possível criar páginas dinâmicas incorporando dados de arquivos XML nos seus HTMLS sem a necessidade de refresh da mesma forma que acontece no Flex. O Spry também conta com uma API de efeitos bem grande que permite de uma maneira fácil usando JavaScript aplicar efeitos nos elementos HTML da sua página. O Spry possui outras facilidades como criar Tabs, Accordions e também possui ferramentas para validação de formulário (esse pode ser o meu próximo post).

Para visualizar a versão completa do exemplo clique aqui

Neste tutorial irei criar um simples exemplo de Master Detail usando Spry 1.4 com as informações do XML abaixo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?xml version="1.0" encoding="utf-8"?>
<estados>
    <estado id="1">
        <nome>São Paulo</nome>
        <desc>
            <![CDATA[
                Lorem ipsum dolor...
            ]]>
        </desc>
    </estado>
    <estado id="2">
        <nome>Rio de Janeiro</nome>
        <desc>
            <![CDATA[
                Ut sapien magna...
            ]]>
        </desc>
    </estado>
    <estado id="3">
        <nome>Paraná</nome>
        <desc>
            <![CDATA[
                Nam et orci. Nulla...
            ]]>
        </desc>
    </estado>
</estados>

Antes de começar você precisa baixar a última versão do Spry clicando aqui.

O primeiro passo a seguir é incluir o Spry que é o arquivo SpryData.js (ele está na pasta includes do download feito) ele é o coração do Spry, também preciso incluir o arquivo Xpath.js pois o Spry utiliza o XPath parar procurar itens a partir da sua fonte de dados XML. XPath é uma linguagem baseada na árvore do arquivo XML e provê uma forma simples de selecionar os nós usando diversos critérios de busca. Para conhecer mais sobre XPath clique aqui.
Também iremos usar a bibliteca de efeitos do Spry que é a SpryEffects.js também na pasta includes do download.

[cfm]



[/cfm]

Após isso vamos criar o XML Data Set:

[cfm]

[/cfm]

Agora vamos criar uma lista a partir do XML e a área de detalhe.

[cfm]

Carregando…
Erro na Captura dos Dados!

{dsEstados::nome}


{dsEstados::desc}

[/cfm]

Explicando:

  • spry:region – Indica uma região dinâmica do data set
  • spry:detailregion – é a região de detalhe para o data set indicado
  • spry:state – Indica qual o estado da requisição

    • loading – esta div contêm o conteúdo que deve ser mostrado quando o Spry estiver carregando os dados
    • error – esta div contêm o conteúdo que deve ser mostrado caso aconteça um erro no GET
    • ready – quando tudo estiver ok esta div entra em ação
  • spry:repeat – faz um loop dos resultados do data set
  • onclick – chamo a função que irá executar a transição
  • {dsEstados::nome} – Esta é a representação dos campos do dataset que aparecem na tela. Note que a variável é Bindable, ou seja ela fica sempre “escutando” o data set. existem 2 formas de utilização {dataset::nome_do_campo} ou {nome_do_campo} eu prefiro usar a primeira opção pra facilitar a manutenção no código.

O próximo passo é criarmos uma função que ira fazer a transição e adicionarmos um Observer na div.

[cfm]


[/cfm]

Explicando:

  • fadeInContent – função Observer que irá fazer um “fade” escondendo o conteúdo da div sempre que o detailRegion for atualizado. Obs: Observe que eu tenho um style definindo opacidade 0 (zero) para minha div. Isto serve para previnir bugs entre navegadores na hora do Fade inicial.
  • Spry.Effect.AppearFade – Função que executa o efeito de Fade.
  • Spry.Data.Region.addObserver – onde eu indico que a função observer “fadeInContent” está relacionada a minha div “descricao”

Agora só nos resta criar a função de fade-out:

[cfm]


[/cfm]

Explicando:

  • fadeOutContentThenSetRow – Irá mostrar o conteúdo da div quando algum ítem da lista é clicado
  • setCurrentRow – Defino qual a linha atual no DataSet

O código final ficará assim:

[cfm]







Carregando…
Erro na Captura dos Dados!

{dsEstados::nome}


{dsEstados::desc}



[/cfm]

Bom é isso aí um “SIMPLES” tutorial de como fazer um master detail no Spry usando transições.

Mais informações sobre o Spry você encontra em:


3 comentários

  1. Fernando Barros em 21.dez.06 às 6:24 pm

    Fala Diogo, tudo bem?

    Parabéns pela informação e acima de tudo pela qualidade dela. Excelente “start”.

    []‘s,

  2. Felipe Magalhães em 22.dez.06 às 10:25 pm

    Sem palavras
    Aí Diogo, será que em um futuro DW (9 ou 10 quem sabe) o Spry não poderia vir atrelado!?!
    Seria uma ótima idéia, não acha?
    A Adobe tem a faca e o queijo na mão para dominar uma fatia (mais) legal (ainda) da web

    []‘s

  3. Marco Aurélio em 6.jan.07 às 12:54 pm

    Para quem é um iniciante, o tutorial parece confuso, pois este passo a passo saltou passos importantes. Quando o autor informa: “Pra começar você precisa ter os seguintes scripts na sua página:”, por exemplo, a pergunta natural para o iniciante é: “Mas onde arrumo este script? Onde o Spry entra aí?”. Na verdade não se trata de um tutorial, mas de como fazer um master detail no Spry usando transições, sem fazer força e sem precisar entender como. Espero que minha crítica tenha sido construtiva, pois é este o objetivo.

Deixe Seu Comentário