Extensiones IBM para Dojo Toolkit

Biblioteca Atom, almacén de datos y widgets

Ejemplos de uso de AppStore:

El almacén de datos AppStore puede utilizarse como cualquier otro almacén de datos que cumple las API dojo.data. No obstante, el almacén de datos AppStore requiere un canal de información APP operativo para que funcionen las funciones de grabación. La siguiente aplicación de ejemplo demuestra las funciones de las API Read e Identity del almacén de datos AppStore.

Este es el canal de información que se utiliza en estas demostraciones; puede acceder a él en este paquete de documentación.

<?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'>Canal de información de ejemplo de 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 prueba #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 es una entrada de ejemplo en el canal de información Atom. Simplemente
es un párrafo grande en el resumen.<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>Usuario de prueba</name>
			<email>test@example.com</email>
		</author>
		<updated>2007-08-07T04:00:00-05:00</updated>
	</entry>
	<entry>
		<title>Entrada de prueba #2</title>
		<id>http://example.com/samplefeed.xml/entry/2</id>
		<link rel='alternate' href='http://example.com/2.html'/>
		<summary type='text'>
			Esta es una entrada de ejemplo en el canal de información Atom. Simplemente es
un párrafo grande en el resumen. Se trata de texto plano.
			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>

A continuación, cree una aplicación AppStore en marcación, de forma declarativa, a partir del canal de información en el URL proporcionado. Consulte el siguiente código para crear el almacén de datos AppStore:

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

No obstante, la adición de esta marcación no afecta a la página. Debe incluir la biblioteca dojo y cargar de forma explícita el analizador, que examina la página y crea una instancia de los widgets. Esto se hace en el elemento de cabecera, con un código de script. El código es como el siguiente:

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

Se ha creado una instancia del almacén y se ha cargado el canal de control. Como ejemplo de algunas de las tareas más avanzadas que se pueden realizar con un almacén, a continuación puede añadir un widget Tree, que obtiene los datos del AppStore y muestra una lista de títulos.

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

Al examinar la marcación anterior, el widget Tree realiza una consulta en AppStore de las entradas que tienen el título * (es decir, las que coinciden con cualquier título). Esto hace que el árbol muestre el título de cada entrada coincidente.

Examine algunas funciones simples de AppStore. En primer lugar, la captación de elementos del canal de información. Supongamos que desea captar la entrada con el título "Entrada de prueba #1". Si lo desea, puede ejecutar una recogida en AppStore como la siguiente:

<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 prueba #1"}, onComplete: callback});
});
</script>

Una vez captado un elemento, existen varias funciones que puede invocar con él. Por ejemplo, obtener los atributos del elemento (en el código anterior, estas llamadas no se utilizaban para acceder a los elementos del objeto de entrada directamente), comprobar si el elemento es un elemento del almacén y examinar la identidad del elemento. Véanse los siguientes ejemplos:

<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 prueba #1"}, onComplete: callback});
});
</script>

Otras funciones que forman parte de las API Read e Identity de dojo.data pueden encontrarse en la parte de referencia de esta documentación, así como en la carpeta dojo.data.