﻿
Ext.data.JayrockDataSetReader=function(meta){meta=meta||{};Ext.data.JayrockDataSetReader.superclass.constructor.call(this,meta);};Ext.extend(Ext.data.JayrockDataSetReader,Ext.data.JsonReader,{read:function(o){return this.readRecords(o);},readRecords:function(o){var s=this.meta;var createAccessor=this.createAccessor||this.getJsonAccessor;var getRoot=s.root?createAccessor.call(this,s.root):function(p){return p;};var table=getRoot(o).Table;if(table.columns){delete this.ef;for(var i=0;i<table.columns.length;i++){if(table.columns[i].type=="date"){table.columns[i].convert=Date.parseISO;}}
this.recordType=Ext.data.Record.create(table.columns);this.onMetaChange(s,this.recordType,o);}
if(this.getJsonAccessor){if(s.totalProperty){this.getTotal=this.getJsonAccessor(s.totalProperty);}}
var sid=s?s.id:null;var recordType=this.recordType,fields=recordType.prototype.fields;var records=[];var root=o;for(var i=0;i<table.rows.length;i++){var n=table.rows[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;var 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=table.rows.length;if(s.totalProperty){var v=parseInt(this.getTotal(o),10);if(!isNaN(v)){totalRecords=v;}}
return{records:records,totalRecords:totalRecords};},onMetaChange:function(meta,recordType,o){if(this.buildExtactors){this.buildExtractors();}}});