DWRProxy.js
上传用户:zaktkj
上传日期:2022-08-08
资源大小:5770k
文件大小:6k
源码类别:

JavaScript

开发平台:

JavaScript

  1. Ext.data.DWRProxy = function(dwrCall, pagingAndSort) {
  2.     Ext.data.DWRProxy.superclass.constructor.call(this);
  3.     this.dwrCall = dwrCall;
  4.     //this.args = args;
  5.     this.pagingAndSort = (pagingAndSort!=undefined ? pagingAndSort : true);
  6. };
  7. Ext.extend(Ext.data.DWRProxy, Ext.data.DataProxy, {
  8. /*
  9.     load : function(params, reader, callback, scope, arg) {
  10.         if(this.fireEvent("beforeload", this, params) !== false) {
  11.             var sort;
  12.             if(params.sort && params.dir) sort = params.sort + ' ' + params.dir;
  13.             else sort = '';
  14.             var delegate = this.loadResponse.createDelegate(this, [reader, callback, scope, arg], 1);
  15.             var callParams = new Array();
  16.             if (params.dwrParams) {
  17.                 callParams = params.dwrParams.slice();
  18.             }
  19.             if(this.pagingAndSort) {
  20.                 callParams.push(params.start);
  21.                 callParams.push(params.limit);
  22.                 callParams.push(sort);
  23.             }
  24.             callParams.push(delegate);
  25.             this.dwrCall.apply(this, callParams);
  26.         } else {
  27.             callback.call(scope || this, null, arg, false);
  28.         }
  29.     },
  30. */
  31.     load : function(params, reader, callback, scope, arg) {
  32.         if(this.fireEvent("beforeload", this, params) !== false) {
  33.             //var sort;
  34.             // if(params.sort && params.dir) sort = params.sort + ' ' + params.dir;
  35.             //else sort = '';
  36.             var delegate = this.loadResponse.createDelegate(this, [reader, callback, scope, arg], 1);
  37.             var callParams = new Array();
  38.             //if(arg.arg) {
  39.             // callParams = arg.arg.slice();
  40.             //}
  41.             //if(this.pagingAndSort) {
  42.             //callParams.push(params.start);
  43.             //callParams.push(params.limit);
  44.             //callParams.push(sort);
  45.             //}
  46.             callParams.push(arg.params);
  47.             callParams.push(delegate);
  48.             this.dwrCall.apply(this, callParams);
  49.         } else {
  50.             callback.call(scope || this, null, arg, false);
  51.         }
  52.     },
  53.     loadResponse : function(listRange, reader, callback, scope, arg) {
  54.         var result;
  55.         try {
  56.             result = reader.read(listRange);
  57.         } catch(e) {
  58.             this.fireEvent("loadexception", this, null, response, e);
  59.             callback.call(scope, null, arg, false);
  60.             return;
  61.         }
  62.         callback.call(scope, result, arg, true);
  63.     },
  64.     update : function(dataSet){},
  65.     updateResponse : function(dataSet){}
  66. });
  67. Ext.data.ListRangeReader = function(meta, recordType){
  68.     Ext.data.ListRangeReader.superclass.constructor.call(this, meta, recordType);
  69.     this.recordType = recordType;
  70. };
  71. Ext.extend(Ext.data.ListRangeReader, Ext.data.DataReader, {
  72.     getJsonAccessor: function(){
  73.         var re = /[[.]/;
  74.         return function(expr) {
  75.             try {
  76.                 return(re.test(expr))
  77.                     ? new Function("obj", "return obj." + expr)
  78.                     : function(obj){
  79.                         return obj[expr];
  80.                     };
  81.             } catch(e){}
  82.                 return Ext.emptyFn;
  83.             };
  84.         }(),
  85.         read : function(o){
  86.             var recordType = this.recordType, fields = recordType.prototype.fields;
  87.             //Generate extraction functions for the totalProperty, the root, the id, and for each field
  88.             if (!this.ef) {
  89.                 if(this.meta.totalProperty) {
  90.                     this.getTotal = this.getJsonAccessor(this.meta.totalProperty);
  91.                 }
  92.                 if(this.meta.successProperty) {
  93.                     this.getSuccess = this.getJsonAccessor(this.meta.successProperty);
  94.                 }
  95.                 if (this.meta.id) {
  96.                     var g = this.getJsonAccessor(this.meta.id);
  97.                     this.getId = function(rec) {
  98.                         var r = g(rec);
  99.                         return (r === undefined || r === "") ? null : r;
  100.                     };
  101.                 } else {
  102.                     this.getId = function(){return null;};
  103.                 }
  104.                 this.ef = [];
  105.                 for(var i = 0; i < fields.length; i++){
  106.                     f = fields.items[i];
  107.                     var map = (f.mapping !== undefined && f.mapping !== null) ? f.mapping : f.name;
  108.                     this.ef[i] = this.getJsonAccessor(map);
  109.                 }
  110.             }
  111.             var records = [];
  112.             var root;
  113.             if (this.meta.root) {
  114.                 root = o[this.meta.root];
  115.             } else {
  116.                 root = o.data;
  117.             }
  118.             var c = root.length, totalRecords = c, success = true;
  119.             if(this.meta.totalProperty){
  120.                 var v = parseInt(this.getTotal(o), 10);
  121.                 if(!isNaN(v)){
  122.                     totalRecords = v;
  123.                 }
  124.             }
  125.             if(this.meta.successProperty){
  126.                 var v = this.getSuccess(o);
  127.                 if(v === false || v === 'false'){
  128.                     success = false;
  129.             }
  130.         }
  131.         for(var i = 0; i < c; i++){
  132.             var n = root[i];
  133.             var values = {};
  134.             var id = this.getId(n);
  135.             for(var j = 0; j < fields.length; j++){
  136.                 f = fields.items[j];
  137.                 try {
  138.                     var v = this.ef[j](n);
  139.                     values[f.name] = f.convert((v !== undefined) ? v : f.defaultValue);
  140.                 } catch(e) {
  141.                     values[f.name] = "";
  142.                 }
  143.             }
  144.             var record = new recordType(values, id);
  145.             records[i] = record;
  146.         }
  147.         return {
  148.             success : success,
  149.             records : records,
  150.             totalRecords : totalRecords
  151.         };
  152.     }
  153. });