Hc.data.Connection = function(){ var id = 1, Connection = Hc.Class.create({ Extends:Hc.Observer, config:{ url:"", tmieout:30000 /* @cfg {Boolean} autoCancel:false,, @cfg {Object} maskConfig:null, @cfg {Boolean|Object} mask:false, @cfg getter {Boolean} initMasked:false, @cfg {Boolean|Object} loading:false, @cfg {HTMLElement|String|Hc.Element} el:null */ }, _name:"connection", constructor:function(config,options){ this.id = this._name + "-" + (id++); Connection.Super.constructor.call(this,config); options && this.request(options); }, request:function(config){ config = config || {}; this.lastConfig = config; if(this.fireEvent("beforerequest",this,config) !== false){ return this.doRequest(config); }else{ config.callback && config.callback.call(config.scope || this,this,config); return null; } }, doRequest:function(config){ config = config || {}; this.showToMask(config.el); var argument = { config:config, onSuccess:config.onSuccess, onError:config.onError, callback:config.callback }, o = Hc.applyIf({ url:config.url || this.url, onSuccess:this.successCallback, onError:this.errorCallback, callback:this.createCallback.apply(this,Hc.toArray(arguments,1)), scope:this, timeout:config.timeout || this.tmieout, argument:argument },config); if(!o.jsonData && !o.formData && !o.data && o.parames){ o.jsonData = o.parames; } if(this.autoCancel || o.autoCancel){ this.cancel(true); } return this.ajax = Hc.Ajax.request(o); }, initMask:function(target){ if(!this.initMasked){ target = target || this.el; if(this.mask || target){ this.mask = new Hc.LoadMask(target,Hc.apply({},this.mask,this.maskConfig)); this.initMasked = true; } } }, showMask:function(msg,msgCls,preventDefault){ this.initMask(); if(this.initMasked){ this.mask.show(msg,msgCls,preventDefault); } }, showToMask:function(target,msg,msgCls,preventDefault){ this.initMask(target); if(this.initMasked){ //this.mask.show(msg,msgCls); this.mask.showTo(target || this.el,msg,msgCls,preventDefault); } }, hideMask:function(preventClip){ if(this.initMasked){ this.mask.hide(preventClip); } }, isLoading:function(){ return this.ajax && this.ajax.loading; }, cancel:function(preventEvent){ this.isLoading() && this.ajax.cancel(preventEvent); }, createCallback:function(){ return this.ajaxCallback; }, ajaxCallback:function(ajax,data,success){ var config = ajax.argument.config; //ajax.argument.callback(ajax,data,config,success); Hc.fireCallback(ajax.argument.callback,config.scope || ajax,ajax,data,success); this.fireEvent("callback",this,ajax,data,config,success); this.hideMask(); }, successCallback:function(ajax,data){ var config = ajax.argument.config; Hc.fireCallback(ajax.argument.onSuccess,config.scope || ajax,ajax,data); this.fireEvent("success",this,ajax,data,config); }, errorCallback:function(ajax,data){ var config = ajax.argument.config; Hc.fireCallback(ajax.argument.onError,config.scope || ajax,ajax,data); this.fireEvent("error",this,ajax,data,config); }, toString:function(){ return "[Class] Hc.data.Connection"; } }); return Connection; }();