Estensioni IBM al Dojo Toolkit

Libreria Atom, archivio dati e widget

Esempi di utilizzo di AppStore:

L'archivio dati AppStore può essere utilizzato soltanto come qualsiasi altro archivio dati conforme alle API dojo.data. Tuttavia, l'archivio dati AppStore richiede un feed APP operativo per la corretta esecuzione delle funzioni di scrittura. La seguente applicazione di esempio dimostra le funzioni API di identità e lettura dell'archivio dati AppStore.

Di seguito viene riportato il feed da utilizzare in queste dimostrazioni. Il feed è accessibile in questo pacchetto di documentazione.

<?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 di esempio di 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>Voce di verifica 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>Questa è una voce di esempio nel feed Atom. È semplicemente un paragrafo di grandi
dimensioni nel riepilogo.<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>Utente di verifica</name>
			<email>test@example.com</email>
		</author>
		<updated>2007-08-07T04:00:00-05:00</updated>
	</entry>
	<entry>
		<title>Voce di verifica n.2</title>
		<id>http://example.com/samplefeed.xml/entry/2</id>
		<link rel='alternate' href='http://example.com/2.html'/>
		<summary type='text'>
			Questa è una voce di esempio nel feed Atom. È semplicemente un paragrafo di grandi
dimensioni nel riepilogo. Si tratta di testo diretto.
			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>

In seguito, creare un'applicazione AppStore nella markup, in modo dichiarativo, dal feed nell'URL fornito. Consultare il seguente codice per creare l'archivio dati AppStore:

<div dojoType="ibm_atom.data.AppStore" url="samplefeed.xml" jsId="appStore">

Tuttavia, l'aggiunta di questa markup non influisce sulla pagina. È necessario includere la libreria dojo e caricare esplicitamente il parser, che esamina la pagina e crea istanze dei widget. Questa operazione viene eseguita nell'elemento di intestazione, con una tag script. Il codice è simile al seguente:

<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>

A questo punto, sono state create istanze dell'archivio ed il feed è stato caricato. Come esempio di attività più avanzate che è possibile completare con un archivio, è poi possibile aggiungerle in un widget di struttura ad albero, che richiama i dati dall'AppStore e visualizzare un elenco di titoli.

<div dojoType="dijit.Tree" id="tree" store="appStore" query="{title:'*t*'}"></div>

Esaminando la markup precedente, il widget della struttura ad albero esegue una query sull'AppStore per voci che hanno un titolo di *, ossia, senza stabilire corrispondenze con alcun titolo. Il risultato è una struttura ad albero che mostra il titolo di ogni voce con cui è stata stabilita una corrispondenza.

Esaminare alcune semplici funzioni dell'AppStore. La prima operazione consiste nel richiamare le voci dal feed. Si supponga di voler richiamare la voce denominata "Voce di verifica n.1". È possibile eseguire un richiamo simile al seguente, rispetto all'AppStore:

<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: "Voce di verifica n.1"}, onComplete: callback});
});
</script>

Dopo avere richiamato una voce, è possibile richiamare anche diverse funzioni correlate a tale voce. Ciò significa anche richiamare gli attributi della voce (nel codice precedente, tali chiamate non sono state utilizzate per accedere direttamente agli elementi dell'oggetto voce), verificando se tale voce è inclusa nell'archivio ed esaminandone la relativa identità. Consultare i seguenti esempi:

<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: "Voce di verifica n.1"}, onComplete: callback});
});
</script>

La sezione di riferimento della presente documentazione e la cartella dojo.data contengono altre funzioni che fanno parte delle API di lettura e identità dojo.data.