]>
git.wh0rd.org - tt-rss.git/blob - lib/dojo/store/DataStore.js
2 Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved.
3 Available via Academic Free License >= 2.1 OR the modified BSD license.
4 see: http://dojotoolkit.org/license for details
8 define("dojo/store/DataStore",["../_base/lang","../_base/declare","../_base/Deferred","../_base/array","./util/QueryResults"],function(_1
,_2
,_3
,_4
,_5
){return _2("dojo.store.DataStore",null,{target
:"",constructor:function(_6
){_1
.mixin(this,_6
);if(!"idProperty" in _6
){var _7
;try{_7
=this.store
.getIdentityAttributes();}catch(e
){}this.idProperty
=(!_7
||!idAttributes
[0])||this.idProperty
;}var _8
=this.store
.getFeatures();if(!_8
["dojo.data.api.Read"]){this.get=null;}if(!_8
["dojo.data.api.Identity"]){this.getIdentity
=null;}if(!_8
["dojo.data.api.Write"]){this.put
=this.add
=null;}},idProperty
:"id",store
:null,_objectConverter:function(_9
){var _a
=this.store
;var _b
=this.idProperty
;return function(_c
){var _d
={};var _e
=_a
.getAttributes(_c
);for(var i
=0;i
<_e
.length
;i
++){_d
[_e
[i
]]=_a
.getValue(_c
,_e
[i
]);}if(!(_b
in _d
)){_d
[_b
]=_a
.getIdentity(_c
);}return _9(_d
);};},get:function(id
,_f
){var _10
,_11
;var _12
=new _3();this.store
.fetchItemByIdentity({identity
:id
,onItem
:this._objectConverter(function(_13
){_12
.resolve(_10
=_13
);}),onError:function(_14
){_12
.reject(_11
=_14
);}});if(_10
){return _10
;}if(_11
){throw _11
;}return _12
.promise
;},put:function(_15
,_16
){var id
=_16
&&typeof _16
.id
!="undefined"||this.getIdentity(_15
);var _17
=this.store
;var _18
=this.idProperty
;if(typeof id
=="undefined"){_17
.newItem(_15
);}else{_17
.fetchItemByIdentity({identity
:id
,onItem:function(_19
){if(_19
){for(var i
in _15
){if(i
!=_18
&&_17
.getValue(_19
,i
)!=_15
[i
]){_17
.setValue(_19
,i
,_15
[i
]);}}}else{_17
.newItem(_15
);}}});}},remove:function(id
){var _1a
=this.store
;this.store
.fetchItemByIdentity({identity
:id
,onItem:function(_1b
){_1a
.deleteItem(_1b
);}});},query:function(_1c
,_1d
){var _1e
;var _1f
=new _3(function(){_1e
.abort
&&_1e
.abort();});_1f
.total
=new _3();var _20
=this._objectConverter(function(_21
){return _21
;});_1e
=this.store
.fetch(_1
.mixin({query
:_1c
,onBegin:function(_22
){_1f
.total
.resolve(_22
);},onComplete:function(_23
){_1f
.resolve(_4
.map(_23
,_20
));},onError:function(_24
){_1f
.reject(_24
);}},_1d
));return _5(_1f
);},getIdentity:function(_25
){return _25
[this.idProperty
];}});});