| /* |
| 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.dtl.contrib.data"]){ |
| dojo._hasResource["dojox.dtl.contrib.data"]=true; |
| dojo.provide("dojox.dtl.contrib.data"); |
| dojo.require("dojox.dtl._base"); |
| (function(){ |
| var dd=dojox.dtl; |
| var _1=dd.contrib.data; |
| var _2=true; |
| _1._BoundItem=dojo.extend(function(_3,_4){ |
| this.item=_3; |
| this.store=_4; |
| },{get:function(_5){ |
| var _6=this.store; |
| var _7=this.item; |
| if(_5=="getLabel"){ |
| return _6.getLabel(_7); |
| }else{ |
| if(_5=="getAttributes"){ |
| return _6.getAttributes(_7); |
| }else{ |
| if(_5=="getIdentity"){ |
| if(_6.getIdentity){ |
| return _6.getIdentity(_7); |
| } |
| return "Store has no identity API"; |
| }else{ |
| if(!_6.hasAttribute(_7,_5)){ |
| if(_5.slice(-1)=="s"){ |
| if(_2){ |
| _2=false; |
| dojo.deprecated("You no longer need an extra s to call getValues, it can be figured out automatically"); |
| } |
| _5=_5.slice(0,-1); |
| } |
| if(!_6.hasAttribute(_7,_5)){ |
| return; |
| } |
| } |
| var _8=_6.getValues(_7,_5); |
| if(!_8){ |
| return; |
| } |
| if(!dojo.isArray(_8)){ |
| return new _1._BoundItem(_8,_6); |
| } |
| _8=dojo.map(_8,function(_9){ |
| if(dojo.isObject(_9)&&_6.isItem(_9)){ |
| return new _1._BoundItem(_9,_6); |
| } |
| return _9; |
| }); |
| _8.get=_1._get; |
| return _8; |
| } |
| } |
| } |
| }}); |
| _1._BoundItem.prototype.get.safe=true; |
| _1.BindDataNode=dojo.extend(function(_a,_b,_c,_d){ |
| this.items=_a&&new dd._Filter(_a); |
| this.query=_b&&new dd._Filter(_b); |
| this.store=new dd._Filter(_c); |
| this.alias=_d; |
| },{render:function(_e,_f){ |
| var _10=this.items&&this.items.resolve(_e); |
| var _11=this.query&&this.query.resolve(_e); |
| var _12=this.store.resolve(_e); |
| if(!_12||!_12.getFeatures){ |
| throw new Error("data_bind didn't receive a store"); |
| } |
| if(_11){ |
| var _13=false; |
| _12.fetch({query:_11,sync:true,scope:this,onComplete:function(it){ |
| _13=true; |
| _10=it; |
| }}); |
| if(!_13){ |
| throw new Error("The bind_data tag only works with a query if the store executed synchronously"); |
| } |
| } |
| var _14=[]; |
| if(_10){ |
| for(var i=0,_15;_15=_10[i];i++){ |
| _14.push(new _1._BoundItem(_15,_12)); |
| } |
| } |
| _e[this.alias]=_14; |
| return _f; |
| },unrender:function(_16,_17){ |
| return _17; |
| },clone:function(){ |
| return this; |
| }}); |
| dojo.mixin(_1,{_get:function(key){ |
| if(this.length){ |
| return (this[0] instanceof _1._BoundItem)?this[0].get(key):this[0][key]; |
| } |
| },bind_data:function(_18,_19){ |
| var _1a=_19.contents.split(); |
| if(_1a[2]!="to"||_1a[4]!="as"||!_1a[5]){ |
| throw new Error("data_bind expects the format: 'data_bind items to store as varName'"); |
| } |
| return new _1.BindDataNode(_1a[1],null,_1a[3],_1a[5]); |
| },bind_query:function(_1b,_1c){ |
| var _1d=_1c.contents.split(); |
| if(_1d[2]!="to"||_1d[4]!="as"||!_1d[5]){ |
| throw new Error("data_bind expects the format: 'bind_query query to store as varName'"); |
| } |
| return new _1.BindDataNode(null,_1d[1],_1d[3],_1d[5]); |
| }}); |
| _1._get.safe=true; |
| dd.register.tags("dojox.dtl.contrib",{"data":["bind_data","bind_query"]}); |
| })(); |
| } |