Exemplos de Uso da Biblioteca IBM OpenSearch

Alguns exemplos de uso do OpenSearchStore estão disponíveis na pasta /ibm_opensearch/data/demos. Essas demos referenciam documentos de descrição do OpenSearch que devem ser buscados e editados para enviar os pedidos por meio de um proxy local, uma vez que os pedidos de domínio cruzado não são possíveis nos navegadores atuais.

Este exemplo é construído como se o terminal do OpenSearch estivesse hospedado no mesmo servidor que esse pacote, não necessitando de maior complexidade na configuração de um proxy. Consulte o Documento de Descrição do OpenSearch de amostra a seguir com apenas os elementos necessários incluídos:

<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
  <ShortName>Mecanismo de Procura de Amostra</ShortName>
  <Description>Procura cada elemento em example.com</Description>
  <Url type="application/atom+xml"
       template="http://example.com/search/{searchTerms}" />
</OpenSearchDescription>

O documento de descrição é hospedado em uma URL como http://example.com/osd.xml, com um tipo MIME igual a application/opensearchdescription+xml. Um armazém de dados na página "http://example.com/index.html" pode agora ser instanciado com a seguinte marcação:

<script src="dojo/dojo.js"></script>
<script>
	dojo.require("ibm_opensearch.data.OpenSearchStore");
	dojo.require("dojo.parser");
 </script>
<div dojoType="ibm_opensearch.data.OpenSearchStore"
	 url="osd.xml"
	 jsId="openSearchStore">
    </div>

Depois que a página é carregada e analisada, o armazém está disponível referenciando a variável openSearchStore. Você pode utilizar o armazém para buscar resultados com base em palavras-chave:

<table>
	<tbody id="searchResults">
	</tbody>
</table>
<script>
dojo.addOnLoad(function(){
	function onComplete(items, request){
		if(items.length > 0){
			var tbody = dojo.byId("searchResults");
			var test;
			var tr, td;
			for(var i=0; i<items.length; i++){
				td = dojo.doc.createElement("td");
				td.innerHTML = openSearchStore.getValue(items[i], "content");
				tr = dojo.doc.createElement("tr");
				tr.appendChild(td);
				tbody.appendChild(tr);
			}
		}
	}
	//O que fazer se uma procura falhar
	function onError(error, request){
		statusWidget.setValue("ERRO DE PROCESSAMENTO.");
	}
	var request = {
		query: {searchTerms: "atom"},
		onComplete: onComplete,
		onError: onError
	};
	openSearchStore.fetch(request);
});
</script>

O exemplo anterior forma um objeto do pedido, configurando o parâmetro searchTerms para atom, que indica a palavra-chave a ser procurada no servidor. Em seguida, fetch(request) é chamado no armazém, que transmite os resultados para a função onComplete. Essa função itera sobre cada resultado, obtém o atributo content, o único atributo disponível em um item OpenSearchStore e o coloca em uma célula de tabela exibida na página.

Exemplos de uso mais detalhados, inclusive utilizar uma caixa de texto para inserir os termos de procura, são mostrados nas páginas demo.