Fix #6201 - Category select
[roojs1] / docs / src / Roo_data_JsonReader.js.html
1 <html><head><title>Roo/data/JsonReader.js</title><link rel="stylesheet" type="text/css" href="../../css/highlight-js.css"/></head><body class="highlightpage"><code class="jsdoc-pretty"><span class="jsdoc-comment">/*
2  * Based on:
3  * Ext JS Library 1.1.1
4  * Copyright(c) 2006-2007, Ext JS, LLC.
5  *
6  * Originally Released Under LGPL - original licence link has changed is not relivant.
7  *
8  * Fork - LGPL
9  * &lt;script type=&quot;text/javascript&quot;&gt;
10  */
11
12 /**
13  * @class Roo.data.JsonReader
14  * @extends Roo.data.DataReader
15  * Data reader class to create an Array of Roo.data.Record objects from a JSON response
16  * based on mappings in a provided Roo.data.Record constructor.
17  * 
18  * The default behaviour of a store is to send ?_requestMeta=1, unless the class has recieved 'metaData' property
19  * in the reply previously. 
20  * 
21  * &lt;p&gt;
22  * Example code:
23  * &lt;pre&gt;&lt;code&gt;
24 var RecordDef = Roo.data.Record.create([
25     {name: 'name', mapping: 'name'},     // &quot;mapping&quot; property not needed if it's the same as &quot;name&quot;
26     {name: 'occupation'}                 // This field will use &quot;occupation&quot; as the mapping.
27 ]);
28 var myReader = new Roo.data.JsonReader({
29     totalProperty: &quot;results&quot;,    // The property which contains the total dataset size (optional)
30     root: &quot;rows&quot;,                // The property which contains an Array of row objects
31     id: &quot;id&quot;                     // The property within each row object that provides an ID for the record (optional)
32 }, RecordDef);
33 &lt;/code&gt;&lt;/pre&gt;
34  * &lt;p&gt;
35  * This would consume a JSON file like this:
36  * &lt;pre&gt;&lt;code&gt;
37 { 'results': 2, 'rows': [
38     { 'id': 1, 'name': 'Bill', occupation: 'Gardener' },
39     { 'id': 2, 'name': 'Ben', occupation: 'Horticulturalist' } ]
40 }
41 &lt;/code&gt;&lt;/pre&gt;
42  * @cfg {String} totalProperty Name of the property from which to retrieve the total number of records
43  * in the dataset. This is only needed if the whole dataset is not passed in one go, but is being
44  * paged from the remote server.
45  * @cfg {String} successProperty Name of the property from which to retrieve the success attribute used by forms.
46  * @cfg {String} root name of the property which contains the Array of row objects.
47  * @cfg {String} id Name of the property within a row object that contains a record identifier value.
48  * @cfg {Array} fields Array of field definition objects
49  * @constructor
50  * Create a new JsonReader
51  * @param {Object} meta Metadata configuration options
52  * @param {Object} recordType Either an Array of field definition objects,
53  * or an {@link Roo.data.Record} object created using {@link Roo.data.Record#create}.
54  */
55 </span><span class="jsdoc-var">Roo.data.JsonReader </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">meta</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">recordType</span><span class="jsdoc-syntax">){
56
57     </span><span class="jsdoc-var">meta </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">meta </span><span class="jsdoc-syntax">|| {};
58     </span><span class="jsdoc-comment">// set some defaults:
59     </span><span class="jsdoc-var">Roo.applyIf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">meta</span><span class="jsdoc-syntax">, {
60         </span><span class="jsdoc-var">totalProperty</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'total'</span><span class="jsdoc-syntax">,
61         </span><span class="jsdoc-var">successProperty </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'success'</span><span class="jsdoc-syntax">,
62         </span><span class="jsdoc-var">root </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'data'</span><span class="jsdoc-syntax">,
63         </span><span class="jsdoc-var">id </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'id'
64     </span><span class="jsdoc-syntax">});
65
66     </span><span class="jsdoc-var">Roo.data.JsonReader.superclass.constructor.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">meta</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">recordType</span><span class="jsdoc-syntax">||</span><span class="jsdoc-var">meta.fields</span><span class="jsdoc-syntax">);
67 };
68 </span><span class="jsdoc-var">Roo.extend</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.data.JsonReader</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.data.DataReader</span><span class="jsdoc-syntax">, {
69
70     </span><span class="jsdoc-var">readerType </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'Json'</span><span class="jsdoc-syntax">,
71
72     </span><span class="jsdoc-comment">/**
73      * @prop {Boolean} metaFromRemote  - if the meta data was loaded from the remote source.
74      * Used by Store query builder to append _requestMeta to params.
75      * 
76      */
77     </span><span class="jsdoc-var">metaFromRemote </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
78     </span><span class="jsdoc-comment">/**
79      * This method is only used by a DataProxy which has retrieved data from a remote server.
80      * @param {Object} response The XHR object which contains the JSON data in its responseText.
81      * @return {Object} data A data block which is used by an Roo.data.Store object as
82      * a cache of Roo.data.Records.
83      */
84     </span><span class="jsdoc-var">read </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">response</span><span class="jsdoc-syntax">){
85         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">json </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">response.responseText</span><span class="jsdoc-syntax">;
86
87         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">o </span><span class="jsdoc-syntax">= </span><span class="jsdoc-comment">/* eval:var:o */ </span><span class="jsdoc-keyword">eval</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;(&quot;</span><span class="jsdoc-syntax">+</span><span class="jsdoc-var">json</span><span class="jsdoc-syntax">+</span><span class="jsdoc-string">&quot;)&quot;</span><span class="jsdoc-syntax">);
88         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">) {
89             </span><span class="jsdoc-keyword">throw </span><span class="jsdoc-syntax">{</span><span class="jsdoc-var">message</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;JsonReader.read: Json object not found&quot;</span><span class="jsdoc-syntax">};
90         }
91
92         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.metaData</span><span class="jsdoc-syntax">){
93
94             </span><span class="jsdoc-keyword">delete </span><span class="jsdoc-var">this.ef</span><span class="jsdoc-syntax">;
95             </span><span class="jsdoc-var">this.metaFromRemote </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
96             </span><span class="jsdoc-var">this.meta </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">o.metaData</span><span class="jsdoc-syntax">;
97             </span><span class="jsdoc-var">this.recordType </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.data.Record.create</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.metaData.fields</span><span class="jsdoc-syntax">);
98             </span><span class="jsdoc-var">this.onMetaChange</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.meta</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.recordType</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">);
99         }
100         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.readRecords</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">);
101     },
102
103     </span><span class="jsdoc-comment">// private function a store will implement
104     </span><span class="jsdoc-var">onMetaChange </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">meta</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">recordType</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">){
105
106     },
107
108     </span><span class="jsdoc-comment">/**
109          * @ignore
110          */
111     </span><span class="jsdoc-var">simpleAccess</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">subsc</span><span class="jsdoc-syntax">) {
112         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">subsc</span><span class="jsdoc-syntax">];
113     },
114
115         </span><span class="jsdoc-comment">/**
116          * @ignore
117          */
118     </span><span class="jsdoc-var">getJsonAccessor</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
119         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">re </span><span class="jsdoc-syntax">= /[\[\.]/;
120         </span><span class="jsdoc-keyword">return function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">expr</span><span class="jsdoc-syntax">) {
121             </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{
122                 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">re.test</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">expr</span><span class="jsdoc-syntax">))
123                     ? </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;obj&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;return obj.&quot; </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">expr</span><span class="jsdoc-syntax">)
124                     : </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">){
125                         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">expr</span><span class="jsdoc-syntax">];
126                     };
127             } </span><span class="jsdoc-keyword">catch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){}
128             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">Roo.emptyFn</span><span class="jsdoc-syntax">;
129         };
130     }(),
131
132     </span><span class="jsdoc-comment">/**
133      * Create a data block containing Roo.data.Records from an XML document.
134      * @param {Object} o An object which contains an Array of row objects in the property specified
135      * in the config as 'root, and optionally a property, specified in the config as 'totalProperty'
136      * which contains the total size of the dataset.
137      * @return {Object} data A data block which is used by an Roo.data.Store object as
138      * a cache of Roo.data.Records.
139      */
140     </span><span class="jsdoc-var">readRecords </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">){
141         </span><span class="jsdoc-comment">/**
142          * After any data loads, the raw JSON data is available for further custom processing.
143          * @type Object
144          */
145         </span><span class="jsdoc-var">this.o </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">;
146         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">s </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.meta</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Record </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.recordType</span><span class="jsdoc-syntax">,
147             </span><span class="jsdoc-var">f </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Record </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">Record.prototype.fields </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fi </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">f </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">f.items </span><span class="jsdoc-syntax">: [], </span><span class="jsdoc-var">fl </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">f </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">f.length </span><span class="jsdoc-syntax">: 0;
148
149 </span><span class="jsdoc-comment">//      Generate extraction functions for the totalProperty, the root, the id, and for each field
150         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.ef</span><span class="jsdoc-syntax">) {
151             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s.totalProperty</span><span class="jsdoc-syntax">) {
152                     </span><span class="jsdoc-var">this.getTotal </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getJsonAccessor</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s.totalProperty</span><span class="jsdoc-syntax">);
153                 }
154                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s.successProperty</span><span class="jsdoc-syntax">) {
155                     </span><span class="jsdoc-var">this.getSuccess </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getJsonAccessor</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s.successProperty</span><span class="jsdoc-syntax">);
156                 }
157                 </span><span class="jsdoc-var">this.getRoot </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">s.root </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.getJsonAccessor</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s.root</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">p</span><span class="jsdoc-syntax">){</span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">p</span><span class="jsdoc-syntax">;};
158                 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s.id</span><span class="jsdoc-syntax">) {
159                         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">g </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getJsonAccessor</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s.id</span><span class="jsdoc-syntax">);
160                         </span><span class="jsdoc-var">this.getId </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">rec</span><span class="jsdoc-syntax">) {
161                                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">r </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">g</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">rec</span><span class="jsdoc-syntax">);
162                                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">r </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-var">undefined </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">r </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-string">&quot;&quot;</span><span class="jsdoc-syntax">) ? </span><span class="jsdoc-keyword">null </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">;
163                         };
164                 } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
165                         </span><span class="jsdoc-var">this.getId </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){</span><span class="jsdoc-keyword">return null</span><span class="jsdoc-syntax">;};
166                 }
167             </span><span class="jsdoc-var">this.ef </span><span class="jsdoc-syntax">= [];
168             </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">jj </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">jj </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">fl</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">jj</span><span class="jsdoc-syntax">++){
169                 </span><span class="jsdoc-var">f </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">fi</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">jj</span><span class="jsdoc-syntax">];
170                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">map </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">f.mapping </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-var">undefined </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">f.mapping </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">) ? </span><span class="jsdoc-var">f.mapping </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">f.name</span><span class="jsdoc-syntax">;
171                 </span><span class="jsdoc-var">this.ef</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">jj</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">this.getJsonAccessor</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">map</span><span class="jsdoc-syntax">);
172             }
173         }
174
175         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">root </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getRoot</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">), </span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">root.length</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">totalRecords </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">success </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
176         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s.totalProperty</span><span class="jsdoc-syntax">){
177             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">vt </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">parseInt</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.getTotal</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">), 10);
178             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">isNaN</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">vt</span><span class="jsdoc-syntax">)){
179                 </span><span class="jsdoc-var">totalRecords </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">vt</span><span class="jsdoc-syntax">;
180             }
181         }
182         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s.successProperty</span><span class="jsdoc-syntax">){
183             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">vs </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getSuccess</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">);
184             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">vs </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">false </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">vs </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-string">'false'</span><span class="jsdoc-syntax">){
185                 </span><span class="jsdoc-var">success </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
186             }
187         }
188         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">records </span><span class="jsdoc-syntax">= [];
189         </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
190                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">n </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">root</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">];
191             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">values </span><span class="jsdoc-syntax">= {};
192             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">id </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getId</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">);
193             </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">j </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">j </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">fl</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">j</span><span class="jsdoc-syntax">++){
194                 </span><span class="jsdoc-var">f </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">fi</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">j</span><span class="jsdoc-syntax">];
195             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.ef</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">j</span><span class="jsdoc-syntax">](</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">);
196             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">f.convert</span><span class="jsdoc-syntax">) {
197                 </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'missing convert for ' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">f.name</span><span class="jsdoc-syntax">);
198                 </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">f</span><span class="jsdoc-syntax">);
199                 </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
200             }
201             </span><span class="jsdoc-var">values</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">f.name</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">f.convert</span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-var">undefined</span><span class="jsdoc-syntax">) ? </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">f.defaultValue</span><span class="jsdoc-syntax">);
202             }
203             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">record </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Record</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">values</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">);
204             </span><span class="jsdoc-var">record.json </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">;
205             </span><span class="jsdoc-var">records</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">record</span><span class="jsdoc-syntax">;
206         }
207         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">{
208             </span><span class="jsdoc-var">raw </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">,
209             </span><span class="jsdoc-var">success </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">success</span><span class="jsdoc-syntax">,
210             </span><span class="jsdoc-var">records </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">records</span><span class="jsdoc-syntax">,
211             </span><span class="jsdoc-var">totalRecords </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">totalRecords
212         </span><span class="jsdoc-syntax">};
213     },
214     </span><span class="jsdoc-comment">// used when loading children.. @see loadDataFromChildren
215     </span><span class="jsdoc-var">toLoadData</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">rec</span><span class="jsdoc-syntax">)
216     {
217         </span><span class="jsdoc-comment">// expect rec just to be an array.. eg [a,b,c, [...] &lt;&lt; cn ]
218         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">data </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">rec.data.cn</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">? [] : </span><span class="jsdoc-var">rec.data.cn</span><span class="jsdoc-syntax">;
219         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">{ </span><span class="jsdoc-var">data </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">data</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">total </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">data.length </span><span class="jsdoc-syntax">};
220
221     }
222 });</span></code></body></html>