dojox.data.OpmlStore._fetchItems
dojo.require("dojox.data.OpmlStore");
defined in dojox/data/OpmlStore.js
See dojo.data.util.simpleFetch.fetch()
Usage
function (/*Object*/ keywordArgs, /*Function*/ findCallback, /*Function*/ errorCallback) (view source)
var self = this; var filter = function(requestArgs, arrayOfItems){ var items = null; if(requestArgs.query){ items = []; var ignoreCase = requestArgs.queryOptions ? requestArgs.queryOptions.ignoreCase : false; //See if there are any string values that can be regexp parsed first to avoid multiple regexp gens on the //same value for each item examined. Much more efficient. var regexpList = {}; for(var key in requestArgs.query){ var value = requestArgs.query[key]; if(typeof value === "string"){ regexpList[key] = dojo.data.util.filter.patternToRegExp(value, ignoreCase); } } for(var i = 0; i < arrayOfItems.length; ++i){ var match = true; var candidateItem = arrayOfItems[i]; for(var key in requestArgs.query){ var value = requestArgs.query[key]; if(!self._containsValue(candidateItem, key, value, regexpList[key])){ match = false; } } if(match){ items.push(candidateItem); } } }else{ // We want a copy to pass back in case the parent wishes to sort the array. We shouldn't allow resort // of the internal list so that multiple callers can get lists and sort without affecting each other. if(arrayOfItems.length> 0){ items = arrayOfItems.slice(0,arrayOfItems.length); } } findCallback(items, requestArgs); }; if(this._loadFinished){ filter(keywordArgs, this._getItemsArray(keywordArgs.queryOptions)); }else{ //If fetches come in before the loading has finished, but while //a load is in progress, we have to defer the fetching to be //invoked in the callback. if(this._loadInProgress){ this._queuedFetches.push({args: keywordArgs, filter: filter}); }else{ if(this.url !== ""){ this._loadInProgress = true; var getArgs = { url: self.url, handleAs: "xml" }; var getHandler = dojo.xhrGet(getArgs); getHandler.addCallback(function(data){ self._processRawXmlTree(data); filter(keywordArgs, self._getItemsArray(keywordArgs.queryOptions)); self._handleQueuedFetches(); }); getHandler.addErrback(function(error){ throw error; }); }else if(this._opmlData){ this._processRawXmlTree(this._opmlData); this._opmlData = null; filter(keywordArgs, this._getItemsArray(keywordArgs.queryOptions)); }else{ throw new Error("dojox.data.OpmlStore: No OPML source data was provided as either URL or XML data input."); } } }
parameter | type | description |
---|---|---|
keywordArgs | Object | |
findCallback | Function | |
errorCallback | Function |