Hc.data.Connection

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;
}();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值