Files
openlayers/master/examples/demo_GoogleSearchStore.html
Éric Lemoine 5d14b9e2d4 Updated
2013-02-20 10:38:25 +01:00

126 lines
3.7 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<style type="text/css">
@import "../../../dojo/resources/dojo.css";
@import "../../../dijit/themes/tundra/tundra.css";
@import "../../../dijit/themes/tundra/tundra_rtl.css";
.search-result {
float: left;
width: 150px;
border: 2px dashed;
padding: 4px;
}
</style>
<title>Google Search store</title>
<script type="text/javascript" src="../../../dojo/dojo.js" djConfig="isDebug: true, parseOnLoad: true"></script>
<script type="text/javascript">
dojo.require("dojox.data.GoogleSearchStore");
dojo.require("dijit.form.ComboBox");
dojo.require("dijit.form.FilteringSelect");
dojo.require("dojox.dtl");
dojo.require("dojox.dtl.ext-dojo.NodeList");
function doSearch() {
var queryOptions = {};
var query = {};
query.text = dojo.byId("searchText").value;
query.type = dojo.byId("typeText").value;
var request = {query:query};
var itemBuffer = [];
var maxBufSize = 8;
var outNode = dojo.byId("output");
outNode.innerHTML = "Searching...";
var count = 0;
var template = "GoogleTemplate.html";
switch(query.type) {
case "web" :
testStore = new dojox.data.GoogleSearchStore();
break;
case "blogs":
testStore = new dojox.data.GoogleBlogSearchStore();
template = "GoogleTemplateBlog.html";
break;
case "local":
testStore = new dojox.data.GoogleLocalSearchStore();
template = "GoogleTemplateLocal.html";
break;
case "video":
testStore = new dojox.data.GoogleVideoSearchStore();
template = "GoogleTemplateVideo.html";
break;
case "news":
testStore = new dojox.data.GoogleNewsSearchStore();
break;
case "books":
testStore = new dojox.data.GoogleBookSearchStore();
break;
case "images":
testStore = new dojox.data.GoogleImageSearchStore();
template = "GoogleTemplateImage.html";
break;
}
function doAppend(){
var node = document.createElement("span");
node.id = "res" + (count++);
outNode.appendChild(node);
dojo.query("#"+node.id).dtl(template, { items: itemBuffer , store: testStore});
}
request.onBegin = function(numItems){
outNode.innerHTML += ".. found " + numItems + " results";
};
request.onItem = function(item){
itemBuffer.push(item);
if(itemBuffer.length >= maxBufSize){
console.log("onItem, buffer length = " + itemBuffer.length + " & maxBufSize = " + maxBufSize);
doAppend();
itemBuffer = [];
} else {
console.log("onItem, buffer length = " + itemBuffer.length);
}
};
request.onComplete = function (items) {
if (itemBuffer.length > 0) {
doAppend();
}
};
var count = dojo.byId("count").value;
request.count = count ? Number(count) : 8;
testStore.fetch(request);
}
</script>
</head>
<body class="tundra" style="margin:20px;">
<form>
Text: <input id="searchText" type="text" value="dojo ajax"/>
Count: <input id="count" type="text" value="8" width=20/>
<input id="searchButton" type="button" value="store.fetch()" onclick="doSearch()" />
Type
<select id="typeText" name="typeText">
<option selected value="web">Web</option>
<option value="local">Local</option>
<option value="video">Video</option>
<option value="blogs">Blogs</option>
<option value="news">News</option>
<option value="books">Books</option>
<option value="images">Images</option>
</select>
<div id="output">
</div>
</form>
</body>
</html>