sample skeleton application with dojo toolkit & arcgis js api v 4.30
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

89 lines
2.2 KiB

define(["dojo/_base/declare", "dojo/data/ItemFileReadStore"], function(declare, ItemFileReadStore){
return declare("dijit.tests._data.SlowStore", ItemFileReadStore, {
// summary:
// This wrapper decorates an ItemFileReadStore by delaying queries issued according to the
// length of the query:
//
// - empty query: 2000ms,
// - 1 or 2 characters: 1000ms,
// - 3 characters: 500ms,
// - 4 or more characters: 100ms.
constructor: function(){
this.log = [];
},
fetch: function(/* Object */ keywordArgs){
// Get the query phrase (store into first), and the # of chars it has
var count = 0;
var first;
if("query" in keywordArgs){
var query = keywordArgs.query;
for(var attr in query){
first = query[attr];
break;
}
count = first.toString().length;
}
var delay = 100;
switch(count || 0){
case 0:
delay = 2000;
break;
case 1:
case 2:
delay = 1000;
break;
case 3:
delay = 500;
break;
case 4:
delay = 100;
break;
}
this.log.push({
type: "start",
date: new Date(),
query: query,
count: count,
delay: delay
});
console.log("START query on " + (first || "{}") + " (" + count + " chars), delay = " + delay);
var that = this,
thatArgs = arguments;
var handle = setTimeout(function(){
that.log.push({
type: "end",
date: new Date(),
query: query,
count: count,
delay: delay
});
console.log("END query on " + (first || "{}") + " (" + count + " chars), delay = " + delay);
ItemFileReadStore.prototype.fetch.apply(that, thatArgs);
}, delay);
// This abort() method cancels a request before it has even been sent to ItemFileReadStore.
// (Since ItemFileReadStore has already loaded the data (as per code in the test file),
// it operates synchronously; there is never a case to send the cancel request to that object)
keywordArgs.abort = function(){
clearTimeout(handle);
that.log.push({
type: "cancel",
date: new Date(),
query: query,
count: count,
delay: delay
});
console.log("CANCEL query on " + (first || "{}") + " (" + count + " chars), delay = " + delay);
};
return keywordArgs;
}
});
});