123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- /*
- * Ext JS Library 2.0 Copyright(c) 2006-2007, Ext JS, LLC. licensing@extjs.com
- *
- * http://extjs.com/license
- */
- Ext.data.JsonReader = function(A, B) {
- A = A || {};
- Ext.data.JsonReader.superclass.constructor.call(this, A, B || A.fields)
- };
- Ext.extend(Ext.data.JsonReader, Ext.data.DataReader, {
- read : function(response) {
- var json = response.responseText;
- var o = eval("(" + json + ")");
- if (!o) {
- throw {
- message : "JsonReader.read: Json object not found"
- }
- }
- if (o.metaData) {
- delete this.ef;
- this.meta = o.metaData;
- this.recordType = Ext.data.Record.create(o.metaData.fields);
- this.onMetaChange(this.meta, this.recordType, o)
- }
- return this.readRecords(o)
- },
- onMetaChange : function(A, C, B) {
- },
- simpleAccess : function(B, A) {
- return B[A]
- },
- getJsonAccessor : function() {
- var A = /[\[\.]/;
- return function(C) {
- try {
- return (A.test(C))
- ? new Function("obj", "return obj." + C)
- : function(D) {
- return D[C]
- }
- } catch (B) {
- }
- return Ext.emptyFn
- }
- }(),
- readRecords : function(K) {
- this.jsonData = K;
- var H = this.meta, A = this.recordType, R = A.prototype.fields, F = R.items, E = R.length;
- if (!this.ef) {
- if (H.totalProperty) {
- this.getTotal = this.getJsonAccessor(H.totalProperty)
- }
- if (H.successProperty) {
- this.getSuccess = this.getJsonAccessor(H.successProperty)
- }
- this.getRoot = H.root ? this.getJsonAccessor(H.root) : function(U) {
- return U
- };
- if (H.id) {
- var Q = this.getJsonAccessor(H.id);
- this.getId = function(V) {
- var U = Q(V);
- return (U === undefined || U === "") ? null : U
- }
- } else {
- this.getId = function() {
- return null
- }
- }
- this.ef = [];
- for (var O = 0; O < E; O++) {
- R = F[O];
- var T = (R.mapping !== undefined && R.mapping !== null)
- ? R.mapping
- : R.name;
- this.ef[O] = this.getJsonAccessor(T)
- }
- }
- var M = this.getRoot(K), S = M.length, I = S, D = true;
- if (H.totalProperty) {
- var G = parseInt(this.getTotal(K), 10);
- if (!isNaN(G)) {
- I = G
- }
- }
- if (H.successProperty) {
- var G = this.getSuccess(K);
- if (G === false || G === "false") {
- D = false
- }
- }
- var P = [];
- for (var O = 0; O < S; O++) {
- var L = M[O];
- var B = {};
- var J = this.getId(L);
- for (var N = 0; N < E; N++) {
- R = F[N];
- var G = this.ef[N](L);
- B[R.name] = R.convert((G !== undefined) ? G : R.defaultValue)
- }
- var C = new A(B, J);
- C.json = L;
- P[O] = C
- }
- return {
- success : D,
- records : P,
- totalRecords : I
- }
- }
- });
|