root / trunk / web / dojo / dojox / data / util / JsonQuery.js
History | View | Annotate | Download (2.28 KB)
1 | 9 | andrej.cim | /*
|
---|---|---|---|
2 | Copyright (c) 2004-2010, 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
|
||
5 | */
|
||
6 | |||
7 | |||
8 | if(!dojo._hasResource["dojox.data.util.JsonQuery"]){ |
||
9 | dojo._hasResource["dojox.data.util.JsonQuery"]=true; |
||
10 | dojo.provide("dojox.data.util.JsonQuery");
|
||
11 | dojo.declare("dojox.data.util.JsonQuery",null,{useFullIdInQueries:false,_toJsonQuery:function(_1,_2){ |
||
12 | var _3=true; |
||
13 | var _4=this; |
||
14 | function _5(_6,_7){ |
||
15 | var _8=_7.__id;
|
||
16 | if(_8){
|
||
17 | var _9={};
|
||
18 | _9[_4.idAttribute]=_4.useFullIdInQueries?_7.__id:_7[_4.idAttribute]; |
||
19 | _7=_9; |
||
20 | } |
||
21 | for(var i in _7){ |
||
22 | var _a=_7[i];
|
||
23 | var _b=_6+(/^[a-zA-Z_][\w_]*$/.test(i)?"."+i:"["+dojo._escapeString(i)+"]"); |
||
24 | if(_a&&typeof _a=="object"){ |
||
25 | _5(_b,_a); |
||
26 | }else{
|
||
27 | if(_a!="*"){ |
||
28 | _c+=(_3?"":"&")+_b+((!_8&&typeof _a=="string"&&_1.queryOptions&&_1.queryOptions.ignoreCase)?"~":"=")+(_4.simplifiedQuery?encodeURIComponent(_a):dojo.toJson(_a)); |
||
29 | _3=false;
|
||
30 | } |
||
31 | } |
||
32 | } |
||
33 | }; |
||
34 | if(_1.query&&typeof _1.query=="object"){ |
||
35 | var _c="[?("; |
||
36 | _5("@",_1.query);
|
||
37 | if(!_3){
|
||
38 | _c+=")]";
|
||
39 | }else{
|
||
40 | _c="";
|
||
41 | } |
||
42 | _1.queryStr=_c.replace(/\\"|"/g,function(t){ |
||
43 | return t=="\""?"'":t; |
||
44 | }); |
||
45 | }else{
|
||
46 | if(!_1.query||_1.query=="*"){ |
||
47 | _1.query="";
|
||
48 | } |
||
49 | } |
||
50 | var _d=_1.sort;
|
||
51 | if(_d){
|
||
52 | _1.queryStr=_1.queryStr||(typeof _1.query=="string"?_1.query:""); |
||
53 | _3=true;
|
||
54 | for(i=0;i<_d.length;i++){ |
||
55 | _1.queryStr+=(_3?"[":",")+(_d[i].descending?"\\":"/")+"@["+dojo._escapeString(_d[i].attribute)+"]"; |
||
56 | _3=false;
|
||
57 | } |
||
58 | } |
||
59 | if(_2&&(_1.start||_1.count)){
|
||
60 | _1.queryStr=(_1.queryStr||(typeof _1.query=="string"?_1.query:""))+"["+(_1.start||"")+":"+(_1.count?(_1.start||0)+_1.count:"")+"]"; |
||
61 | } |
||
62 | if(typeof _1.queryStr=="string"){ |
||
63 | _1.queryStr=_1.queryStr.replace(/\\"|"/g,function(t){ |
||
64 | return t=="\""?"'":t; |
||
65 | }); |
||
66 | return _1.queryStr;
|
||
67 | } |
||
68 | return _1.query;
|
||
69 | },jsonQueryPagination:true,fetch:function(_e){ |
||
70 | this._toJsonQuery(_e,this.jsonQueryPagination); |
||
71 | return this.inherited(arguments); |
||
72 | },isUpdateable:function(){ |
||
73 | return true; |
||
74 | },matchesQuery:function(_f,_10){ |
||
75 | _10._jsonQuery=_10._jsonQuery||dojox.json.query(this._toJsonQuery(_10));
|
||
76 | return _10._jsonQuery([_f]).length;
|
||
77 | },clientSideFetch:function(_11,_12){ |
||
78 | _11._jsonQuery=_11._jsonQuery||dojox.json.query(this._toJsonQuery(_11));
|
||
79 | return this.clientSidePaging(_11,_11._jsonQuery(_12)); |
||
80 | },querySuperSet:function(_13,_14){ |
||
81 | if(!_13.query){
|
||
82 | return _14.query;
|
||
83 | } |
||
84 | return this.inherited(arguments); |
||
85 | }}); |
||
86 | } |