UNPKG

dijit

Version:

Dijit provides a complete collection of user interface controls based on Dojo, giving you the power to create web applications that are highly optimized for usability, performance, internationalization, accessibility, but above all deliver an incredible u

90 lines (80 loc) 2.27 kB
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; } }); });