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