aboutsummaryrefslogtreecommitdiff
path: root/includes/js/dojox/data/demos/stores/LazyLoadJSIStore.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/js/dojox/data/demos/stores/LazyLoadJSIStore.js')
-rw-r--r--includes/js/dojox/data/demos/stores/LazyLoadJSIStore.js142
1 files changed, 0 insertions, 142 deletions
diff --git a/includes/js/dojox/data/demos/stores/LazyLoadJSIStore.js b/includes/js/dojox/data/demos/stores/LazyLoadJSIStore.js
deleted file mode 100644
index e7acff7..0000000
--- a/includes/js/dojox/data/demos/stores/LazyLoadJSIStore.js
+++ /dev/null
@@ -1,142 +0,0 @@
-if(!dojo._hasResource["dojox.data.demos.stores.LazyLoadJSIStore"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojox.data.demos.stores.LazyLoadJSIStore"] = true;
-dojo.provide("dojox.data.demos.stores.LazyLoadJSIStore");
-dojo.require("dojo.data.ItemFileReadStore");
-
-dojo.declare("dojox.data.demos.stores.LazyLoadJSIStore", dojo.data.ItemFileReadStore, {
- constructor: function(/* object */ keywordParameters){
- // LazyLoadJSIStore extends ItemFileReadStore to implement an
- // example of lazy-loading/faulting in items on-demand.
- // Note this is certianly not a perfect implementation, it is
- // an example.
- },
-
- isItemLoaded: function(/*object*/ item) {
- // summary:
- // Overload of the isItemLoaded function to look for items of type 'stub', which indicate
- // the data hasn't been loaded in yet.
- //
- // item:
- // The item to examine.
-
- //For this store, if it has the value of stub for its type attribute,
- //then the item basn't been fully loaded yet. It's just a placeholder.
- if(this.getValue(item, "type") === "stub"){
- return false;
- }
- return true;
- },
-
- loadItem: function(keywordArgs){
- // summary:
- // Overload of the loadItem function to fault in items. This assumes the data for an item is laid out
- // in a RESTful sort of pattern name0/name1/data.json and so on and uses that to load the data.
- // It will also detect stub items in the newly loaded item and insert the stubs into the ItemFileReadStore
- // list so they can also be loaded in on-demand.
- //
- // item:
- // The item to examine.
-
- var item = keywordArgs.item;
- this._assertIsItem(item);
-
- //Build the path to the data.json for this item
- //The path consists of where its parent was loaded from
- //plus the item name.
- var itemName = this.getValue(item, "name");
- var parent = this.getValue(item, "parent");
- var dataUrl = "";
- if (parent){
- dataUrl += (parent + "/");
- }
-
- //For this store, all child input data is loaded from a url that ends with data.json
- dataUrl += itemName + "/data.json";
-
- //Need a reference to the store to call back to its structures.
- var self = this;
-
- // Callback for handling a successful load.
- var gotData = function(data){
- //Now we need to modify the existing item a bit to take it out of stub state
- //Since we extend the store and have knowledge of the internal
- //structure, this can be done here. Now, is we extended
- //a write store, we could call the write APIs to do this too
- //But for a simple demo the diretc modification in the store function
- //is sufficient.
-
- //Clear off the stub indicators.
- delete item.type;
- delete item.parent;
-
- //Set up the loaded values in the format ItemFileReadStore uses for attributes.
- for (i in data) {
- if (dojo.isArray(data[i])) {
- item[i] = data[i];
- }else{
- item[i] = [data[i]];
- }
- }
-
- //Reset the item in the reference.
- self._arrayOfAllItems[item[self._itemNumPropName]] = item;
-
- //Scan the new values in the item for extra stub items we need to
- //add to the items array of the store so they can be lazy-loaded later...
- var attributes = self.getAttributes(item);
- for(i in attributes){
- var values = self.getValues(item, attributes[i]);
- for (var j = 0; j < values.length; j++) {
- var value = values[j];
-
- if(typeof value === "object"){
- if(value["stub"] ){
- //We have a stub reference here, we need to create the stub item
- var stub = {
- type: ["stub"],
- name: [value["stub"]], //
- parent: [itemName] //The child stub item is parented by this item name...
- };
- if (parent) {
- //Add in any parents to your parent so URL construstruction is accurate.
- stub.parent[0] = parent + "/" + stub.parent[0];
- }
- //Finalize the addition of the new stub item into the ItemFileReadStore list.
- self._arrayOfAllItems.push(stub);
- stub[self._storeRefPropName] = self;
- stub[self._itemNumPropName] = (self._arrayOfAllItems.length - 1); //Last one pushed in should be the item
- values[j] = stub; //Set the stub item back in its place and replace the stub notation.
- }
- }
- }
- }
-
- //Done processing! Call the onItem, if any.
- if(keywordArgs.onItem){
- var scope = keywordArgs.scope ? keywordArgs.scope : dojo.global;
- keywordArgs.onItem.call(scope, item);
- }
- };
-
- //Callback for any errors that occur during load.
- var gotError = function(error){
- //Call the onComplete, if any
- if(keywordArgs.onError){
- var scope = keywordArgs.scope ? keywordArgs.scope : dojo.global;
- keywordArgs.onError.call(scope, error);
- }
- };
-
- //Fire the get and pass the proper callbacks to the deferred.
- var xhrArgs = {
- url: dataUrl,
- handleAs: "json-comment-optional"
- };
- var d = dojo.xhrGet(xhrArgs);
- d.addCallback(gotData);
- d.addErrback(gotError);
- }
-});
-
-
-}