O armazém de dados AppStore pode ser utilizado exatamente como qualquer outro armazém de dados em conformidade com as APIs dojo.data. Entretanto, o armazém de dados AppStore requer um feed APP em funcionamento para que as funções de gravação funcionem. O aplicativo de exemplo a seguir demonstra as funções das APIs Read e Identity do armazém de dados AppStore.
Este é o feed a ser utilizado nestas demonstrações; ele pode ser acessado neste pacote de documentação.
<?xml version='1.0' encoding='utf-8'?> <feed xmlns='http://www.w3.org/2005/Atom' xml:lang='en-US'> <title>Example.com</title> <link rel="alternate" type="text/html" href="http://example.com/" hreflang="en" title="Example.com" /> <subtitle type='text'>Feed de Amostra do Example.com</subtitle> <rights>Copyright Example.com</rights> <id>http://example.com/samplefeed.xml</id> <updated>2007-08-07T20:00:00-05:00</updated> <link rel="self" type="application/atom+xml" href="http://www.example.com/samplefeed.xml"/> <entry> <title>Entrada de Teste #1</title> <id>http://example.com/samplefeed.xml/entry/1</id> <link rel='alternate' href='http://example.com/1.html'/> <summary type='html'> <p>Esta é uma entrada de amostra em nosso feed Atom. É simplesmente um parágrafo extenso no resumo.<p> <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras cursus. Aliquam eget metus sed leo lacinia rutrum. Nunc lacus lacus, viverra placerat, laoreet nec, placerat vel, eros. Donec nec magna id sem commodo rutrum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Aenean pede. Quisque vel leo. In vitae nisi. Curabitur sodales congue nibh. Maecenas ultrices ante nec ipsum. Aenean quis nibh. Aenean semper, quam vitae ullamcorper euismod, arcu leo tincidunt nunc, vel pulvinar turpis dolor a elit. Praesent nonummy nunc faucibus nibh. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus laoreet, ante auctor condimentum venenatis, magna quam varius elit, at feugiat dolor metus id quam. Etiam enim.<p> </summary> <author> <name>Usuário do Teste</name> <email>test@example.com</email> </author> <updated>2007-08-07T04:00:00-05:00</updated> </entry> <entry> <title>Entrada de Teste #2</title> <id>http://example.com/samplefeed.xml/entry/2</id> <link rel='alternate' href='http://example.com/2.html'/> <summary type='text'> Esta é uma entrada de amostra em nosso feed Atom. É simplesmente um parágrafo extenso no resumo. Este é um texto linear. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras cursus. Aliquam eget metus sed leo lacinia rutrum. Nunc lacus lacus, viverra placerat, laoreet nec, placerat vel, eros. Donec nec magna id sem commodo rutrum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Aenean pede. Quisque vel leo. In vitae nisi. Curabitur sodales congue nibh. Maecenas ultrices ante nec ipsum. Aenean quis nibh. Aenean semper, quam vitae ullamcorper euismod, arcu leo tincidunt nunc, vel pulvinar turpis dolor a elit. Praesent nonummy nunc faucibus nibh. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus laoreet, ante auctor condimentum venenatis, magna quam varius elit, at feugiat dolor metus id quam. Etiam enim. </summary> <author> <email>test@example.com</email> </author> <updated>2007-08-07T06:00:00-05:00</updated> </entry> </feed>
Em seguida, crie um aplicativo AppStore na marcação, declarativamente, a partir do feed na URL especificada. Consulte o seguinte código para criar o armazém de dados AppStore:
<div dojoType="ibm_atom.data.AppStore" url="samplefeed.xml" jsId="appStore">
Entretanto, simplesmente incluir essa marcação não afeta a página. É necessário incluir a biblioteca dojo e carregar explicitamente o analisador, que examina a página e instancia os widgets. Isso é feito no elemento principal, com uma tag script. O código é semelhante a este:
<script type="text/javascript">djConfig = {parseOnLoad: true};</script> <script type="text/javascript" src="../../../dojo/dojo.js"></script> <script> dojo.require("dojo.parser"); dojo.require("ibm_atom.data.AppStore"); </script>
Agora, o armazém foi instanciado e o feed está carregado. Como um exemplo de algumas das tarefas mais avançadas que podem ser concluídas com um armazém, você pode em seguida incluir um widget Tree, que obtém seus dados do AppStore, e exibir uma lista de títulos.
<div dojoType="dijit.Tree" id="tree" store="appStore" query="{title:'*t*'}"></div>
Examinando a marcação anterior, o widget Tree desempenha uma consulta no AppStore
para entradas que possuem um título de * (ou seja, correspondente a qualquer título). Isso resulta
na árvore mostrando o título de cada entrada correspondida.
Examine algumas funções simples do AppStore. Em primeiro lugar, buscar itens
do feed. Suponha que você deseje buscar a entrada com o título "Entrada de Teste
1". Talvez você possa executar uma busca no AppStore como esta:
<script type="text/javascript"> dojo.addOnLoad(function(){ function callback(items, request){ console.debug(items.length); if(items.length > 0) console.debug(items[0].title); } appStore.fetch({query: {title: "Entrada de Teste 1"}, onComplete: callback}); }); </script>
Após a busca de um item, existem várias funções que podem ser chamadas com ele. Isso inclui obter atributos do item (no código anterior, essas chamadas não foram utilizadas para facilitar o acesso direto aos elementos do objeto de entrada), verificar se o item é um item do armazém e examinar a identidade do item. Consulte os exemplos a seguir:
<script type="text/javascript"> dojo.addOnLoad(function() { function callback(items, request){ var item = items[0]; console.debug(appStore.getValue(item, 'summary')); console.debug(appStore.isItem(item)); console.debug(appStore.getIdentity(item)); } appStore.fetch({query: {title: "Entrada de Teste 1"}, onComplete: callback}); }); </script>