ec5a2f7a7ba0f0a7f7b5603185364bd5da8c690c
[roojs1] / docs / src / Roo_data_ArrayReader.js.html
1 <html><head><title>/home/edward/gitlive/roojs1/Roo/data/ArrayReader.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.ArrayReader
14  * @extends Roo.data.DataReader
15  * Data reader class to create an Array of Roo.data.Record objects from an Array.
16  * Each element of that Array represents a row of data fields. The
17  * fields are pulled into a Record object using as a subscript, the &lt;em&gt;mapping&lt;/em&gt; property
18  * of the field definition if it exists, or the field's ordinal position in the definition.&lt;br&gt;
19  * &lt;p&gt;
20  * Example code:.
21  * &lt;pre&gt;&lt;code&gt;
22 var RecordDef = Roo.data.Record.create([
23     {name: 'name', mapping: 1},         // &quot;mapping&quot; only needed if an &quot;id&quot; field is present which
24     {name: 'occupation', mapping: 2}    // precludes using the ordinal position as the index.
25 ]);
26 var myReader = new Roo.data.ArrayReader({
27     id: 0                     // The subscript within row Array that provides an ID for the Record (optional)
28 }, RecordDef);
29 &lt;/code&gt;&lt;/pre&gt;
30  * &lt;p&gt;
31  * This would consume an Array like this:
32  * &lt;pre&gt;&lt;code&gt;
33 [ [1, 'Bill', 'Gardener'], [2, 'Ben', 'Horticulturalist'] ]
34   &lt;/code&gt;&lt;/pre&gt;
35  
36  * @constructor
37  * Create a new JsonReader
38  * @param {Object} meta Metadata configuration options.
39  * @param {Object|Array} recordType Either an Array of field definition objects
40  * 
41  * @cfg {Array} fields Array of field definition objects
42  * @cfg {String} id Name of the property within a row object that contains a record identifier value.
43  * as specified to {@link Roo.data.Record#create},
44  * or an {@link Roo.data.Record} object
45  *
46  * 
47  * created using {@link Roo.data.Record#create}.
48  */
49 </span><span class="jsdoc-var">Roo.data.ArrayReader </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">){
50
51
52     </span><span class="jsdoc-var">Roo.data.ArrayReader.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">);
53 };
54
55 </span><span class="jsdoc-var">Roo.extend</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.data.ArrayReader</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.data.JsonReader</span><span class="jsdoc-syntax">, {
56     </span><span class="jsdoc-comment">/**
57      * Create a data block containing Roo.data.Records from an XML document.
58      * @param {Object} o An Array of row objects which represents the dataset.
59      * @return {Object} A data block which is used by an {@link Roo.data.Store} object as
60      * a cache of Roo.data.Records.
61      */
62     </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">){
63         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">sid </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.meta </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.meta.id </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
64         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">recordType </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.recordType</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fields </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">recordType.prototype.fields</span><span class="jsdoc-syntax">;
65         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">records </span><span class="jsdoc-syntax">= [];
66         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">root </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">;
67             </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">root.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
68                     </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">];
69                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">values </span><span class="jsdoc-syntax">= {};
70                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">id </span><span class="jsdoc-syntax">= ((</span><span class="jsdoc-var">sid </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">sid </span><span class="jsdoc-syntax">=== 0) &amp;&amp; </span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">sid</span><span class="jsdoc-syntax">] !== </span><span class="jsdoc-var">undefined </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">sid</span><span class="jsdoc-syntax">] !== </span><span class="jsdoc-string">&quot;&quot; </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">sid</span><span class="jsdoc-syntax">] : </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">);
71                 </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">jlen </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">fields.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">j </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">jlen</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">j</span><span class="jsdoc-syntax">++){
72                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">f </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">fields.items</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">j</span><span class="jsdoc-syntax">];
73                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">k </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">j</span><span class="jsdoc-syntax">;
74                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">k</span><span class="jsdoc-syntax">] !== </span><span class="jsdoc-var">undefined </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">k</span><span class="jsdoc-syntax">] : </span><span class="jsdoc-var">f.defaultValue</span><span class="jsdoc-syntax">;
75                 </span><span class="jsdoc-var">v </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">);
76                 </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">v</span><span class="jsdoc-syntax">;
77             }
78                 </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">recordType</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">);
79                 </span><span class="jsdoc-var">record.json </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">;
80                 </span><span class="jsdoc-var">records</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">records.length</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">record</span><span class="jsdoc-syntax">;
81             }
82             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">{
83                 </span><span class="jsdoc-var">records </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">records</span><span class="jsdoc-syntax">,
84                 </span><span class="jsdoc-var">totalRecords </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">records.length
85             </span><span class="jsdoc-syntax">};
86     }
87 });</span></code></body></html>