webui-aria2/js/libs/dojox/data/ServiceStore.js
2012-05-01 19:52:07 +08:00

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;
}});
});