Le magasin de données AppStore peut être utilisé comme tout autre magasin de données, compatible avec les API dojo.data. Toutefois, le magasin de données AppStore nécessite un flux APP fonctionnel, pour activer les fonctions d'écriture. L'exemple d'application suivant décrit les fonctions API de lecture et d'identification au niveau du magasin de données AppStore.
Le flux à utiliser au cours de ces démonstrations est disponible dans ce package de documentation.
<?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'>Exemple de flux 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>Entrée de test n°1</title> <id>http://example.com/samplefeed.xml/entry/1</id> <link rel='alternate' href='http://example.com/1.html'/> <summary type='html'> <p>Il s'agit d'un exemple d'entrée dans notre flux Atom, rien d'autre qu'un paragraphe de faux texte dans le résumé. <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>Utilisateur du test</name> <email>test@example.com</email> </author> <updated>2007-08-07T04:00:00-05:00</updated> </entry> <entry> <title>Entrée de test n°2</title> <id>http://example.com/samplefeed.xml/entry/2</id> <link rel='alternate' href='http://example.com/2.html'/> <summary type='text'> Il s'agit d'un exemple d'entrée dans notre flux Atom, rien d'autre qu'un paragraphe de faux texte dans le résumé. 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>
Créez ensuite une application de magasin AppStore dans le marquage, de manière déclarative, depuis le flux à l'adresse URL fournie. Reportez-vous au code ci-après, pour créer le magasin de données AppStore :
<div dojoType="ibm_atom.data.AppStore" url="samplefeed.xml" jsId="appStore">
La page n'est toutefois pas affectée par le simple ajout de ce marquage. Vous devez inclure la bibliothèque Dojo et charger de façon explicite l'analyseur syntaxique qui analyse la page et instancie les widgets. Cette opération est effectuée au niveau de l'élément principal à l'aide d'une balise de script. Voici à quoi ressemble le code :
<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>
Le magasin est maintenant instancié et le flux chargé. Afin d'illustrer certaines tâches plus avancées pouvant être effectuées à partir d'un magasin, vous pouvez ajouter ce qui suit, dans un widget Tree (qui accède à ses données depuis le magasin AppStore et affiche une liste de titres).
<div dojoType="dijit.Tree" id="tree" store="appStore" query="{title:'*t*'}"></div>
En observant le précédent marquage, le widget Tree envoie une requête au magasin AppStore relative aux entrées disposant du titre * aka (correspondant à tous les titres). Par conséquent, l'arbre
affiche le titre de chaque entrée correspondante.
Examinons quelques fonctions simples du magasin AppStore. D'abord, il recherche les éléments dans le flux. Supposons que vous souhaitiez rechercher l'entrée intitulée Entrée de test n°1. Vous pouvez effectuer une recherche dans le magasin AppStore comme suit :
<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: "Test Entry #1"}, onComplete: callback}); }); </script>
Une fois l'élément récupéré, il existe plusieurs fonctions que vous pouvez appeler en même temps. Vous pouvez obtenir les attributs de l'élément (dans le code précédent, ces appels n'ont pas été utilisés pour accéder directement aux éléments de l'objet d'entrée), vérifier si l'élément fait partie de notre magasin et examiner son identité. Observez les exemples suivants :
<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: "Test Entry #1"}, onComplete: callback}); }); </script>