| /* |
| 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.data.util.JsonQuery"]){ |
| dojo._hasResource["dojox.data.util.JsonQuery"]=true; |
| dojo.provide("dojox.data.util.JsonQuery"); |
| dojo.declare("dojox.data.util.JsonQuery",null,{useFullIdInQueries:false,_toJsonQuery:function(_1,_2){ |
| var _3=true; |
| var _4=this; |
| function _5(_6,_7){ |
| var _8=_7.__id; |
| if(_8){ |
| var _9={}; |
| _9[_4.idAttribute]=_4.useFullIdInQueries?_7.__id:_7[_4.idAttribute]; |
| _7=_9; |
| } |
| for(var i in _7){ |
| var _a=_7[i]; |
| var _b=_6+(/^[a-zA-Z_][\w_]*$/.test(i)?"."+i:"["+dojo._escapeString(i)+"]"); |
| if(_a&&typeof _a=="object"){ |
| _5(_b,_a); |
| }else{ |
| if(_a!="*"){ |
| _c+=(_3?"":"&")+_b+((!_8&&typeof _a=="string"&&_1.queryOptions&&_1.queryOptions.ignoreCase)?"~":"=")+(_4.simplifiedQuery?encodeURIComponent(_a):dojo.toJson(_a)); |
| _3=false; |
| } |
| } |
| } |
| }; |
| if(_1.query&&typeof _1.query=="object"){ |
| var _c="[?("; |
| _5("@",_1.query); |
| if(!_3){ |
| _c+=")]"; |
| }else{ |
| _c=""; |
| } |
| _1.queryStr=_c.replace(/\\"|"/g,function(t){ |
| return t=="\""?"'":t; |
| }); |
| }else{ |
| if(!_1.query||_1.query=="*"){ |
| _1.query=""; |
| } |
| } |
| var _d=_1.sort; |
| if(_d){ |
| _1.queryStr=_1.queryStr||(typeof _1.query=="string"?_1.query:""); |
| _3=true; |
| for(i=0;i<_d.length;i++){ |
| _1.queryStr+=(_3?"[":",")+(_d[i].descending?"\\":"/")+"@["+dojo._escapeString(_d[i].attribute)+"]"; |
| _3=false; |
| } |
| if(!_3){ |
| _1.queryStr+="]"; |
| } |
| } |
| if(_2&&(_1.start||_1.count)){ |
| _1.queryStr=(_1.queryStr||(typeof _1.query=="string"?_1.query:""))+"["+(_1.start||"")+":"+(_1.count?(_1.start||0)+_1.count:"")+"]"; |
| } |
| if(typeof _1.queryStr=="string"){ |
| _1.queryStr=_1.queryStr.replace(/\\"|"/g,function(t){ |
| return t=="\""?"'":t; |
| }); |
| return _1.queryStr; |
| } |
| return _1.query; |
| },jsonQueryPagination:true,fetch:function(_e){ |
| this._toJsonQuery(_e,this.jsonQueryPagination); |
| return this.inherited(arguments); |
| },isUpdateable:function(){ |
| return true; |
| },matchesQuery:function(_f,_10){ |
| _10._jsonQuery=_10._jsonQuery||dojox.json.query(this._toJsonQuery(_10)); |
| return _10._jsonQuery([_f]).length; |
| },clientSideFetch:function(_11,_12){ |
| _11._jsonQuery=_11._jsonQuery||dojox.json.query(this._toJsonQuery(_11)); |
| return this.clientSidePaging(_11,_11._jsonQuery(_12)); |
| },querySuperSet:function(_13,_14){ |
| if(!_13.query){ |
| return _14.query; |
| } |
| return this.inherited(arguments); |
| }}); |
| } |