//>>built define("dojox/data/SnapLogicStore",["dojo","dojox","dojo/io/script","dojo/data/util/sorter"],function(_1,_2){ _1.declare("dojox.data.SnapLogicStore",null,{Parts:{DATA:"data",COUNT:"count"},url:"",constructor:function(_3){ if(_3.url){ this.url=_3.url; } this._parameters=_3.parameters; },_assertIsItem:function(_4){ if(!this.isItem(_4)){ throw new Error("dojox.data.SnapLogicStore: a function was passed an item argument that was not an item"); } },_assertIsAttribute:function(_5){ if(typeof _5!=="string"){ throw new Error("dojox.data.SnapLogicStore: a function was passed an attribute argument that was not an attribute name string"); } },getFeatures:function(){ return {"dojo.data.api.Read":true}; },getValue:function(_6,_7,_8){ this._assertIsItem(_6); this._assertIsAttribute(_7); var i=_1.indexOf(_6.attributes,_7); if(i!==-1){ return _6.values[i]; } return _8; },getAttributes:function(_9){ this._assertIsItem(_9); return _9.attributes; },hasAttribute:function(_a,_b){ this._assertIsItem(_a); this._assertIsAttribute(_b); for(var i=0;i<_a.attributes.length;++i){ if(_b==_a.attributes[i]){ return true; } } return false; },isItemLoaded:function(_c){ return this.isItem(_c); },loadItem:function(_d){ },getLabel:function(_e){ return undefined; },getLabelAttributes:function(_f){ return null; },containsValue:function(_10,_11,_12){ return this.getValue(_10,_11)===_12; },getValues:function(_13,_14){ this._assertIsItem(_13); this._assertIsAttribute(_14); var i=_1.indexOf(_13.attributes,_14); if(i!==-1){ return [_13.values[i]]; } return []; },isItem:function(_15){ if(_15&&_15._store===this){ return true; } return false; },close:function(_16){ },_fetchHandler:function(_17){ var _18=_17.scope||_1.global; if(_17.onBegin){ _17.onBegin.call(_18,_17._countResponse[0],_17); } if(_17.onItem||_17.onComplete){ var _19=_17._dataResponse; if(!_19.length){ _17.onError.call(_18,new Error("dojox.data.SnapLogicStore: invalid response of length 0"),_17); return; }else{ if(_17.query!="record count"){ var _1a=_19.shift(); var _1b=[]; for(var i=0;i<_19.length;++i){ if(_17._aborted){ break; } _1b.push({attributes:_1a,values:_19[i],_store:this}); } if(_17.sort&&!_17._aborted){ _1b.sort(_1.data.util.sorter.createSortFunction(_17.sort,self)); } }else{ _1b=[({attributes:["count"],values:_19,_store:this})]; } } if(_17.onItem){ for(var i=0;i<_1b.length;++i){ if(_17._aborted){ break; } _17.onItem.call(_18,_1b[i],_17); } _1b=null; } if(_17.onComplete&&!_17._aborted){ _17.onComplete.call(_18,_1b,_17); } } },_partHandler:function(_1c,_1d,_1e){ if(_1e instanceof Error){ if(_1d==this.Parts.DATA){ _1c._dataHandle=null; }else{ _1c._countHandle=null; } _1c._aborted=true; if(_1c.onError){ _1c.onError.call(_1c.scope,_1e,_1c); } }else{ if(_1c._aborted){ return; } if(_1d==this.Parts.DATA){ _1c._dataResponse=_1e; }else{ _1c._countResponse=_1e; } if((!_1c._dataHandle||_1c._dataResponse!==null)&&(!_1c._countHandle||_1c._countResponse!==null)){ this._fetchHandler(_1c); } } },fetch:function(_1f){ _1f._countResponse=null; _1f._dataResponse=null; _1f._aborted=false; _1f.abort=function(){ if(!_1f._aborted){ _1f._aborted=true; if(_1f._dataHandle&&_1f._dataHandle.cancel){ _1f._dataHandle.cancel(); } if(_1f._countHandle&&_1f._countHandle.cancel){ _1f._countHandle.cancel(); } } }; if(_1f.onItem||_1f.onComplete){ var _20=this._parameters||{}; if(_1f.start){ if(_1f.start<0){ throw new Error("dojox.data.SnapLogicStore: request start value must be 0 or greater"); } _20["sn.start"]=_1f.start+1; } if(_1f.count){ if(_1f.count<0){ throw new Error("dojox.data.SnapLogicStore: request count value 0 or greater"); } _20["sn.limit"]=_1f.count; } _20["sn.content_type"]="application/javascript"; var _21=this; var _22=function(_23,_24){ if(_23 instanceof Error){ _21._fetchHandler(_23,_1f); } }; var _25={url:this.url,content:_20,timeout:60000,callbackParamName:"sn.stream_header",handle:_1.hitch(this,"_partHandler",_1f,this.Parts.DATA)}; _1f._dataHandle=_1.io.script.get(_25); } if(_1f.onBegin){ var _20={}; _20["sn.count"]="records"; _20["sn.content_type"]="application/javascript"; var _25={url:this.url,content:_20,timeout:60000,callbackParamName:"sn.stream_header",handle:_1.hitch(this,"_partHandler",_1f,this.Parts.COUNT)}; _1f._countHandle=_1.io.script.get(_25); } return _1f; }}); return _2.data.SnapLogicStore; });