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.FileStore"]){dojo._hasResource["dojox.data.FileStore"]=true;dojo.provide("dojox.data.FileStore");dojo.declare("dojox.data.FileStore",null,{constructor:function(_1){if(_1&&_1.label){this.label=_1.label;}if(_1&&_1.url){this.url=_1.url;}if(_1&&_1.options){if(dojo.isArray(_1.options)){this.options=_1.options;}else{if(dojo.isString(_1.options)){this.options=_1.options.split(",");}}}if(_1&&_1.pathAsQueryParam){this.pathAsQueryParam=true;}if(_1&&"urlPreventCache" in _1){this.urlPreventCache=_1.urlPreventCache?true:false;}},url:"",_storeRef:"_S",label:"name",_identifier:"path",_attributes:["children","directory","name","path","modified","size","parentDir"],pathSeparator:"/",options:[],failOk:false,urlPreventCache:true,_assertIsItem:function(_2){if(!this.isItem(_2)){throw new Error("dojox.data.FileStore: a function was passed an item argument that was not an item");}},_assertIsAttribute:function(_3){if(typeof _3!=="string"){throw new Error("dojox.data.FileStore: a function was passed an attribute argument that was not an attribute name string");}},pathAsQueryParam:false,getFeatures:function(){return {"dojo.data.api.Read":true,"dojo.data.api.Identity":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){this._assertIsItem(_9);this._assertIsAttribute(_a);return (_a in _9);},getIdentity:function(_b){return this.getValue(_b,this._identifier);},getIdentityAttributes:function(_c){return [this._identifier];},isItemLoaded:function(_d){var _e=this.isItem(_d);if(_e&&typeof _d._loaded=="boolean"&&!_d._loaded){_e=false;}return _e;},loadItem:function(_f){var _10=_f.item;var _11=this;var _12=_f.scope||dojo.global;var _13={};if(this.options.length>0){_13.options=dojo.toJson(this.options);}if(this.pathAsQueryParam){_13.path=_10.parentPath+this.pathSeparator+_10.name;}var _14={url:this.pathAsQueryParam?this.url:this.url+"/"+_10.parentPath+"/"+_10.name,handleAs:"json-comment-optional",content:_13,preventCache:this.urlPreventCache,failOk:this.failOk};var _15=dojo.xhrGet(_14);_15.addErrback(function(_16){if(_f.onError){_f.onError.call(_12,_16);}});_15.addCallback(function(_17){delete _10.parentPath;delete _10._loaded;dojo.mixin(_10,_17);_11._processItem(_10);if(_f.onItem){_f.onItem.call(_12,_10);}});},getLabel:function(_18){return this.getValue(_18,this.label);},getLabelAttributes:function(_19){return [this.label];},containsValue:function(_1a,_1b,_1c){var _1d=this.getValues(_1a,_1b);for(var i=0;i<_1d.length;i++){if(_1d[i]==_1c){return true;}}return false;},getValues:function(_1e,_1f){this._assertIsItem(_1e);this._assertIsAttribute(_1f);var _20=_1e[_1f];if(typeof _20!=="undefined"&&!dojo.isArray(_20)){_20=[_20];}else{if(typeof _20==="undefined"){_20=[];}}return _20;},isItem:function(_21){if(_21&&_21[this._storeRef]===this){return true;}return false;},close:function(_22){},fetch:function(_23){_23=_23||{};if(!_23.store){_23.store=this;}var _24=this;var _25=_23.scope||dojo.global;var _26={};if(_23.query){_26.query=dojo.toJson(_23.query);}if(_23.sort){_26.sort=dojo.toJson(_23.sort);}if(_23.queryOptions){_26.queryOptions=dojo.toJson(_23.queryOptions);}if(typeof _23.start=="number"){_26.start=""+_23.start;}if(typeof _23.count=="number"){_26.count=""+_23.count;}if(this.options.length>0){_26.options=dojo.toJson(this.options);}var _27={url:this.url,preventCache:this.urlPreventCache,failOk:this.failOk,handleAs:"json-comment-optional",content:_26};var _28=dojo.xhrGet(_27);_28.addCallback(function(_29){_24._processResult(_29,_23);});_28.addErrback(function(_2a){if(_23.onError){_23.onError.call(_25,_2a,_23);}});},fetchItemByIdentity:function(_2b){var _2c=_2b.identity;var _2d=this;var _2e=_2b.scope||dojo.global;var _2f={};if(this.options.length>0){_2f.options=dojo.toJson(this.options);}if(this.pathAsQueryParam){_2f.path=_2c;}var _30={url:this.pathAsQueryParam?this.url:this.url+"/"+_2c,handleAs:"json-comment-optional",content:_2f,preventCache:this.urlPreventCache,failOk:this.failOk};var _31=dojo.xhrGet(_30);_31.addErrback(function(_32){if(_2b.onError){_2b.onError.call(_2e,_32);}});_31.addCallback(function(_33){var _34=_2d._processItem(_33);if(_2b.onItem){_2b.onItem.call(_2e,_34);}});},_processResult:function(_35,_36){var _37=_36.scope||dojo.global;try{if(_35.pathSeparator){this.pathSeparator=_35.pathSeparator;}if(_36.onBegin){_36.onBegin.call(_37,_35.total,_36);}var _38=this._processItemArray(_35.items);if(_36.onItem){var i;for(i=0;i<_38.length;i++){_36.onItem.call(_37,_38[i],_36);}_38=null;}if(_36.onComplete){_36.onComplete.call(_37,_38,_36);}}catch(e){if(_36.onError){_36.onError.call(_37,e,_36);}else{}}},_processItemArray:function(_39){var i;for(i=0;i<_39.length;i++){this._processItem(_39[i]);}return _39;},_processItem:function(_3a){if(!_3a){return null;}_3a[this._storeRef]=this;if(_3a.children&&_3a.directory){if(dojo.isArray(_3a.children)){var _3b=_3a.children;var i;for(i=0;i<_3b.length;i++){var _3c=_3b[i];if(dojo.isObject(_3c)){_3b[i]=this._processItem(_3c);}else{_3b[i]={name:_3c,_loaded:false,parentPath:_3a.path};_3b[i][this._storeRef]=this;}}}else{delete _3a.children;}}return _3a;}});}
|