12345678 |
- /*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
- */
- if(!dojo._hasResource["dojox.data.GoogleSearchStore"]){dojo._hasResource["dojox.data.GoogleSearchStore"]=true;dojo.provide("dojox.data.GoogleSearchStore");dojo.provide("dojox.data.GoogleWebSearchStore");dojo.provide("dojox.data.GoogleBlogSearchStore");dojo.provide("dojox.data.GoogleLocalSearchStore");dojo.provide("dojox.data.GoogleVideoSearchStore");dojo.provide("dojox.data.GoogleNewsSearchStore");dojo.provide("dojox.data.GoogleBookSearchStore");dojo.provide("dojox.data.GoogleImageSearchStore");dojo.require("dojo.io.script");dojo.experimental("dojox.data.GoogleSearchStore");dojo.declare("dojox.data.GoogleSearchStore",null,{constructor:function(_1){if(_1){if(_1.label){this.label=_1.label;}if(_1.key){this._key=_1.key;}if(_1.lang){this._lang=_1.lang;}if("urlPreventCache" in _1){this.urlPreventCache=_1.urlPreventCache?true:false;}}this._id=dojox.data.GoogleSearchStore.prototype._id++;},_id:0,_requestCount:0,_googleUrl:"http://ajax.googleapis.com/ajax/services/search/",_storeRef:"_S",_attributes:["unescapedUrl","url","visibleUrl","cacheUrl","title","titleNoFormatting","content","estimatedResultCount"],_aggregatedAttributes:{estimatedResultCount:"cursor.estimatedResultCount"},label:"titleNoFormatting",_type:"web",urlPreventCache:true,_queryAttrs:{text:"q"},_assertIsItem:function(_2){if(!this.isItem(_2)){throw new Error("dojox.data.GoogleSearchStore: a function was passed an item argument that was not an item");}},_assertIsAttribute:function(_3){if(typeof _3!=="string"){throw new Error("dojox.data.GoogleSearchStore: a function was passed an attribute argument that was not an attribute name string");}},getFeatures:function(){return {"dojo.data.api.Read":true};},getValue:function(_4,_5,_6){var _7=this.getValues(_4,_5);if(_7&&_7.length>0){return _7[0];}return _6;},getAttributes:function(_8){return this._attributes;},hasAttribute:function(_9,_a){if(this.getValue(_9,_a)){return true;}return false;},isItemLoaded:function(_b){return this.isItem(_b);},loadItem:function(_c){},getLabel:function(_d){return this.getValue(_d,this.label);},getLabelAttributes:function(_e){return [this.label];},containsValue:function(_f,_10,_11){var _12=this.getValues(_f,_10);for(var i=0;i<_12.length;i++){if(_12[i]===_11){return true;}}return false;},getValues:function(_13,_14){this._assertIsItem(_13);this._assertIsAttribute(_14);var val=_13[_14];if(dojo.isArray(val)){return val;}else{if(val!==undefined){return [val];}else{return [];}}},isItem:function(_15){if(_15&&_15[this._storeRef]===this){return true;}return false;},close:function(_16){},_format:function(_17,_18){return _17;},fetch:function(_19){_19=_19||{};var _1a=_19.scope||dojo.global;if(!_19.query){if(_19.onError){_19.onError.call(_1a,new Error(this.declaredClass+": A query must be specified."));return;}}var _1b={};for(var _1c in this._queryAttrs){_1b[_1c]=_19.query[_1c];}_19={query:_1b,onComplete:_19.onComplete,onError:_19.onError,onItem:_19.onItem,onBegin:_19.onBegin,start:_19.start,count:_19.count};var _1d=8;var _1e="GoogleSearchStoreCallback_"+this._id+"_"+(++this._requestCount);var _1f=this._createContent(_1b,_1e,_19);var _20;if(typeof (_19.start)==="undefined"||_19.start===null){_19.start=0;}if(!_19.count){_19.count=_1d;}_20={start:_19.start-_19.start%_1d};var _21=this;var _22=this._googleUrl+this._type;var _23={url:_22,preventCache:this.urlPreventCache,content:_1f};var _24=[];var _25=0;var _26=false;var _27=_19.start-1;var _28=0;var _29=[];function _2a(req){_28++;_23.content.context=_23.content.start=req.start;var _2b=dojo.io.script.get(_23);_29.push(_2b.ioArgs.id);_2b.addErrback(function(_2c){if(_19.onError){_19.onError.call(_1a,_2c,_19);}});};var _2d=function(_2e,_2f){if(_29.length>0){dojo.query("#"+_29.splice(0,1)).forEach(dojo.destroy);}if(_26){return;}var _30=_21._getItems(_2f);var _31=_2f?_2f["cursor"]:null;if(_30){for(var i=0;i<_30.length&&i+_2e<_19.count+_19.start;i++){_21._processItem(_30[i],_2f);_24[i+_2e]=_30[i];}_25++;if(_25==1){var _32=_31?_31.pages:null;var _33=_32?Number(_32[_32.length-1].start):0;if(_19.onBegin){var est=_31?_31.estimatedResultCount:_30.length;var _34=est?Math.min(est,_33+_30.length):_33+_30.length;_19.onBegin.call(_1a,_34,_19);}var _35=(_19.start-_19.start%_1d)+_1d;var _36=1;while(_32){if(!_32[_36]||Number(_32[_36].start)>=_19.start+_19.count){break;}if(Number(_32[_36].start)>=_35){_2a({start:_32[_36].start});}_36++;}}if(_19.onItem&&_24[_27+1]){do{_27++;_19.onItem.call(_1a,_24[_27],_19);}while(_24[_27+1]&&_27<_19.start+_19.count);}if(_25==_28){_26=true;dojo.global[_1e]=null;if(_19.onItem){_19.onComplete.call(_1a,null,_19);}else{_24=_24.slice(_19.start,_19.start+_19.count);_19.onComplete.call(_1a,_24,_19);}}}};var _37=[];var _38=_20.start-1;dojo.global[_1e]=function(_39,_3a,_3b,_3c){try{if(_3b!=200){if(_19.onError){_19.onError.call(_1a,new Error("Response from Google was: "+_3b),_19);}dojo.global[_1e]=function(){};return;}if(_39==_38+1){_2d(Number(_39),_3a);_38+=_1d;if(_37.length>0){_37.sort(_21._getSort());while(_37.length>0&&_37[0].start==_38+1){_2d(Number(_37[0].start),_37[0].data);_37.splice(0,1);_38+=_1d;}}}else{_37.push({start:_39,data:_3a});}}catch(e){_19.onError.call(_1a,e,_19);}};_2a(_20);},_getSort:function(){return function(a,b){if(a.start<b.start){return -1;}if(b.start<a.start){return 1;}return 0;};},_processItem:function(_3d,_3e){_3d[this._storeRef]=this;for(var _3f in this._aggregatedAttributes){_3d[_3f]=dojo.getObject(this._aggregatedAttributes[_3f],false,_3e);}},_getItems:function(_40){return _40["results"]||_40;},_createContent:function(_41,_42,_43){var _44={v:"1.0",rsz:"large",callback:_42,key:this._key,hl:this._lang};for(var _45 in this._queryAttrs){_44[this._queryAttrs[_45]]=_41[_45];}return _44;}});dojo.declare("dojox.data.GoogleWebSearchStore",dojox.data.GoogleSearchStore,{});dojo.declare("dojox.data.GoogleBlogSearchStore",dojox.data.GoogleSearchStore,{_type:"blogs",_attributes:["blogUrl","postUrl","title","titleNoFormatting","content","author","publishedDate"],_aggregatedAttributes:{}});dojo.declare("dojox.data.GoogleLocalSearchStore",dojox.data.GoogleSearchStore,{_type:"local",_attributes:["title","titleNoFormatting","url","lat","lng","streetAddress","city","region","country","phoneNumbers","ddUrl","ddUrlToHere","ddUrlFromHere","staticMapUrl","viewport"],_aggregatedAttributes:{viewport:"viewport"},_queryAttrs:{text:"q",centerLatLong:"sll",searchSpan:"sspn"}});dojo.declare("dojox.data.GoogleVideoSearchStore",dojox.data.GoogleSearchStore,{_type:"video",_attributes:["title","titleNoFormatting","content","url","published","publisher","duration","tbWidth","tbHeight","tbUrl","playUrl"],_aggregatedAttributes:{}});dojo.declare("dojox.data.GoogleNewsSearchStore",dojox.data.GoogleSearchStore,{_type:"news",_attributes:["title","titleNoFormatting","content","url","unescapedUrl","publisher","clusterUrl","location","publishedDate","relatedStories"],_aggregatedAttributes:{}});dojo.declare("dojox.data.GoogleBookSearchStore",dojox.data.GoogleSearchStore,{_type:"books",_attributes:["title","titleNoFormatting","authors","url","unescapedUrl","bookId","pageCount","publishedYear"],_aggregatedAttributes:{}});dojo.declare("dojox.data.GoogleImageSearchStore",dojox.data.GoogleSearchStore,{_type:"images",_attributes:["title","titleNoFormatting","visibleUrl","url","unescapedUrl","originalContextUrl","width","height","tbWidth","tbHeight","tbUrl","content","contentNoFormatting"],_aggregatedAttributes:{}});}
|