146 lines
3.8 KiB
JavaScript
146 lines
3.8 KiB
JavaScript
//>>built
|
|
define("dojox/data/ServiceStore",["dojo/_base/declare","dojo/_base/lang","dojo/_base/array"],function(_1,_2,_3){
|
|
return _1("dojox.data.ServiceStore",_2.getObject("dojox.data.ClientFilter",0)||null,{service:null,constructor:function(_4){
|
|
this.byId=this.fetchItemByIdentity;
|
|
this._index={};
|
|
if(_4){
|
|
_2.mixin(this,_4);
|
|
}
|
|
this.idAttribute=(_4&&_4.idAttribute)||(this.schema&&this.schema._idAttr);
|
|
},schema:null,idAttribute:"id",labelAttribute:"label",syncMode:false,estimateCountFactor:1,getSchema:function(){
|
|
return this.schema;
|
|
},loadLazyValues:true,getValue:function(_5,_6,_7){
|
|
var _8=_5[_6];
|
|
return _8||(_6 in _5?_8:_5._loadObject?(dojox.rpc._sync=true)&&arguments.callee.call(this,dojox.data.ServiceStore.prototype.loadItem({item:_5})||{},_6,_7):_7);
|
|
},getValues:function(_9,_a){
|
|
var _b=this.getValue(_9,_a);
|
|
return _b instanceof Array?_b:_b===undefined?[]:[_b];
|
|
},getAttributes:function(_c){
|
|
var _d=[];
|
|
for(var i in _c){
|
|
if(_c.hasOwnProperty(i)&&!(i.charAt(0)=="_"&&i.charAt(1)=="_")){
|
|
_d.push(i);
|
|
}
|
|
}
|
|
return _d;
|
|
},hasAttribute:function(_e,_f){
|
|
return _f in _e;
|
|
},containsValue:function(_10,_11,_12){
|
|
return _3.indexOf(this.getValues(_10,_11),_12)>-1;
|
|
},isItem:function(_13){
|
|
return (typeof _13=="object")&&_13&&!(_13 instanceof Date);
|
|
},isItemLoaded:function(_14){
|
|
return _14&&!_14._loadObject;
|
|
},loadItem:function(_15){
|
|
var _16;
|
|
if(_15.item._loadObject){
|
|
_15.item._loadObject(function(_17){
|
|
_16=_17;
|
|
delete _16._loadObject;
|
|
var _18=_17 instanceof Error?_15.onError:_15.onItem;
|
|
if(_18){
|
|
_18.call(_15.scope,_17);
|
|
}
|
|
});
|
|
}else{
|
|
if(_15.onItem){
|
|
_15.onItem.call(_15.scope,_15.item);
|
|
}
|
|
}
|
|
return _16;
|
|
},_currentId:0,_processResults:function(_19,_1a){
|
|
if(_19&&typeof _19=="object"){
|
|
var id=_19.__id;
|
|
if(!id){
|
|
if(this.idAttribute){
|
|
id=_19[this.idAttribute];
|
|
}else{
|
|
id=this._currentId++;
|
|
}
|
|
if(id!==undefined){
|
|
var _1b=this._index[id];
|
|
if(_1b){
|
|
for(var j in _1b){
|
|
delete _1b[j];
|
|
}
|
|
_19=_2.mixin(_1b,_19);
|
|
}
|
|
_19.__id=id;
|
|
this._index[id]=_19;
|
|
}
|
|
}
|
|
for(var i in _19){
|
|
_19[i]=this._processResults(_19[i],_1a).items;
|
|
}
|
|
var _1c=_19.length;
|
|
}
|
|
return {totalCount:_1a.request.count==_1c?(_1a.request.start||0)+_1c*this.estimateCountFactor:_1c,items:_19};
|
|
},close:function(_1d){
|
|
return _1d&&_1d.abort&&_1d.abort();
|
|
},fetch:function(_1e){
|
|
_1e=_1e||{};
|
|
if("syncMode" in _1e?_1e.syncMode:this.syncMode){
|
|
dojox.rpc._sync=true;
|
|
}
|
|
var _1f=this;
|
|
var _20=_1e.scope||_1f;
|
|
var _21=this.cachingFetch?this.cachingFetch(_1e):this._doQuery(_1e);
|
|
_21.request=_1e;
|
|
_21.addCallback(function(_22){
|
|
if(_1e.clientFetch){
|
|
_22=_1f.clientSideFetch({query:_1e.clientFetch,sort:_1e.sort,start:_1e.start,count:_1e.count},_22);
|
|
}
|
|
var _23=_1f._processResults(_22,_21);
|
|
_22=_1e.results=_23.items;
|
|
if(_1e.onBegin){
|
|
_1e.onBegin.call(_20,_23.totalCount,_1e);
|
|
}
|
|
if(_1e.onItem){
|
|
for(var i=0;i<_22.length;i++){
|
|
_1e.onItem.call(_20,_22[i],_1e);
|
|
}
|
|
}
|
|
if(_1e.onComplete){
|
|
_1e.onComplete.call(_20,_1e.onItem?null:_22,_1e);
|
|
}
|
|
return _22;
|
|
});
|
|
_21.addErrback(_1e.onError&&function(err){
|
|
return _1e.onError.call(_20,err,_1e);
|
|
});
|
|
_1e.abort=function(){
|
|
_21.cancel();
|
|
};
|
|
_1e.store=this;
|
|
return _1e;
|
|
},_doQuery:function(_24){
|
|
var _25=typeof _24.queryStr=="string"?_24.queryStr:_24.query;
|
|
return this.service(_25);
|
|
},getFeatures:function(){
|
|
return {"dojo.data.api.Read":true,"dojo.data.api.Identity":true,"dojo.data.api.Schema":this.schema};
|
|
},getLabel:function(_26){
|
|
return this.getValue(_26,this.labelAttribute);
|
|
},getLabelAttributes:function(_27){
|
|
return [this.labelAttribute];
|
|
},getIdentity:function(_28){
|
|
return _28.__id;
|
|
},getIdentityAttributes:function(_29){
|
|
return [this.idAttribute];
|
|
},fetchItemByIdentity:function(_2a){
|
|
var _2b=this._index[(_2a._prefix||"")+_2a.identity];
|
|
if(_2b){
|
|
if(_2b._loadObject){
|
|
_2a.item=_2b;
|
|
return this.loadItem(_2a);
|
|
}else{
|
|
if(_2a.onItem){
|
|
_2a.onItem.call(_2a.scope,_2b);
|
|
}
|
|
}
|
|
}else{
|
|
return this.fetch({query:_2a.identity,onComplete:_2a.onItem,onError:_2a.onError,scope:_2a.scope}).results;
|
|
}
|
|
return _2b;
|
|
}});
|
|
});
|