X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/ee06f37b0f6f6d94cd05a6ffae556660f7c4a2bc..c930e9176a5a85509c5b0230e2bff5c22a591432:/docs/source/ArrayReader.html diff --git a/docs/source/ArrayReader.html b/docs/source/ArrayReader.html new file mode 100644 index 00000000..16adff96 --- /dev/null +++ b/docs/source/ArrayReader.html @@ -0,0 +1,105 @@ + + + The source code + + + + +
/** + * @class Ext.data.ArrayReader + * @extends Ext.data.JsonReader + *

Data reader class to create an Array of {@link Ext.data.Record} objects from an Array. + * Each element of that Array represents a row of data fields. The + * fields are pulled into a Record object using as a subscript, the mapping property + * of the field definition if it exists, or the field's ordinal position in the definition.

+ *

Example code:

+ *

+var Employee = Ext.data.Record.create([
+    {name: 'name', mapping: 1},         // "mapping" only needed if an "id" field is present which
+    {name: 'occupation', mapping: 2}    // precludes using the ordinal position as the index.
+]);
+var myReader = new Ext.data.ArrayReader({
+    {@link #idIndex}: 0
+}, Employee);
+
+ *

This would consume an Array like this:

+ *

+[ [1, 'Bill', 'Gardener'], [2, 'Ben', 'Horticulturalist'] ]
+ * 
+ * @constructor + * Create a new ArrayReader + * @param {Object} meta Metadata configuration options. + * @param {Array/Object} recordType + *

Either an Array of {@link Ext.data.Field Field} definition objects (which + * will be passed to {@link Ext.data.Record#create}, or a {@link Ext.data.Record Record} + * constructor created from {@link Ext.data.Record#create}.

+ */ +Ext.data.ArrayReader = Ext.extend(Ext.data.JsonReader, { +
/** + * @cfg {String} successProperty + * @hide + */ +
/** + * @cfg {Number} id (optional) The subscript within row Array that provides an ID for the Record. + * Deprecated. Use {@link #idIndex} instead. + */ +
/** + * @cfg {Number} idIndex (optional) The subscript within row Array that provides an ID for the Record. + */ +
/** + * Create a data block containing Ext.data.Records from an Array. + * @param {Object} o An Array of row objects which represents the dataset. + * @return {Object} data A data block which is used by an Ext.data.Store object as + * a cache of Ext.data.Records. + */ + readRecords : function(o){ + this.arrayData = o; + var s = this.meta, + sid = s ? Ext.num(s.idIndex, s.id) : null, + recordType = this.recordType, + fields = recordType.prototype.fields, + records = [], + v; + + if(!this.getRoot) { + this.getRoot = s.root ? this.getJsonAccessor(s.root) : function(p) {return p;}; + if(s.totalProperty) { + this.getTotal = this.getJsonAccessor(s.totalProperty); + } + } + + var root = this.getRoot(o); + + for(var i = 0; i < root.length; i++) { + var n = root[i]; + var values = {}; + var id = ((sid || sid === 0) && n[sid] !== undefined && n[sid] !== "" ? n[sid] : null); + for(var j = 0, jlen = fields.length; j < jlen; j++) { + var f = fields.items[j]; + var k = f.mapping !== undefined && f.mapping !== null ? f.mapping : j; + v = n[k] !== undefined ? n[k] : f.defaultValue; + v = f.convert(v, n); + values[f.name] = v; + } + var record = new recordType(values, id); + record.json = n; + records[records.length] = record; + } + + var totalRecords = records.length; + + if(s.totalProperty) { + v = parseInt(this.getTotal(o), 10); + if(!isNaN(v)) { + totalRecords = v; + } + } + + return { + records : records, + totalRecords : totalRecords + }; + } +});
+ + \ No newline at end of file