(function(KDApi,$,_){ 
    function MyComponent(model){
        this._setModel(model);
    }

    var isUpdate = false;
    MyComponent.prototype = {
        _setModel: function(model) {
            this.model = model;
        },
        init:function(props){
          console.log('-----init',this.model,props)
          isUpdate = false; 
          setHtml(this.model,props,isUpdate);
        },
        update:function(props){
          console.log('-----update',this.model,props)
          isUpdate = true;  
          setHtml(this.model,props,isUpdate);
        },
        destoryed:function(){
            console.log('-----destoryed',this.model)
        }

    }     
	var setHtml = function(model,props,isUpdate){   
		var data={};   
		var operate;
		var tableId;
		if(props!=null&&props.data!=null){
			var popsData=props.data; 
			operate=popsData['operate']; 
			tableId=popsData['tableId']; 
			var str = JSON.stringify(popsData['data']); 
			if(str!=null){
				data=JSON.parse(str); 
			} 
		} 
		console.log('-----operate',operate);
		if(operate=='deleteRow'){
			deleteRow(tableId,model);
		}else if(operate=='clearTable'){
			clearTable(tableId,model);
		}else if(operate=='loadData'){
			KDApi.loadFile('./css/datagrid.css', model,function(){
				KDApi.templateFilePath('./html/datagrid.html', model,popsData).then(
					function(result){
						if(model.dom.innerHTML === "" || isUpdate){
							model.dom.innerHTML = result;
						}    		
						initEvent(model,props);
					}
				)
			}) 
		}
    }  
	var initEvent = function(model,props){ 
		var tableId;
		if(props!=null&&props.data!=null){
			var popsData=props.data; 
			tableId=popsData['tableId']; 
		}
		
		if(tableId){
			$("#"+tableId+" #check_all").click(function () { 
				if ($(this).prop("checked")) {  
					$(this).parents("#"+tableId).find('input:checkbox[name="checkRow"]').prop("checked", 'checked');			 
				} else {  
					$(this).parents("#"+tableId).find('input:checkbox[name="checkRow"]').prop("checked", ''); 
				} 
			});  			
			$("#"+tableId+" .click_class",model.dom).click(function(){  
				model.invoke('datagrid_click',{"tableId":tableId,"clickkey":$(this).attr("clickkey"),"rowkey":$(this).parents("tr").attr('rowkey')});
			});
			$(document).on('mouseover', '.outTipsText', function() {
				var boxOffset = $('#flexpanelap7').offset().top;
				var elOffset = $(this).offset().top - boxOffset;				
				var fullHeight = $('#flexpanelap7').height();
				var el = $(this).find('.tipsText');
				var elMaxHeight = el.height();
				if (elOffset < 0) {
					elOffset = 0;
				}
				console.log('boxOffset', boxOffset);
				console.log('上高度', elOffset);
				console.log('下高度', fullHeight - elOffset);
				console.log('提示高度', elMaxHeight);
				if (elOffset > fullHeight - elOffset) { // 上方空间大于下方空间
					if (elOffset > elMaxHeight + 10) {
						el.css({bottom: '28px', visibility: 'visible' });
					} else { // 上方空间不够
						el.css({bottom: (-elMaxHeight/2 + 12)+ 'px', visibility: 'visible' });
					}
				} else {  // 上方空间小于等于下方空间
					if (fullHeight - elOffset > elMaxHeight + 50) {
						el.css({bottom: (-elMaxHeight + 12)+ 'px', visibility: 'visible' });	
					} else { // 下方空间不够
						el.css({bottom: (-elMaxHeight/2 + 12)+ 'px', visibility: 'visible' });
					}
				}								
			});
			$(document).on('mouseleave', '.outTipsText', function() {
				$(this).find('.tipsText').css({bottom: '38px', visibility: 'hidden' });
			});
		}
	}	
	var deleteRow=function(tableId,model){
		console.log('-----deleteRow',tableId);
		var serialArray=[];
		$("#"+tableId).find('input:checkbox[name="checkRow"]:checked').each(function() { // 遍历选中的checkbox
			var tr = $(this).parents("tr");
			serialArray.push(tr.attr('rowkey'));
			var n = tr.index()+1;  // 获取checkbox所在行的顺序 
            $("table#"+tableId).find("tr:eq("+n+")").remove();
		});
		model.invoke('datagrid_deleteRow',{"tableId":tableId,"rows":serialArray});
	}
	var clearTable=function(tableId,model){
		console.log('-----clearTable',tableId);
		$("#"+tableId+"  tr:not(:first)").html("");
		model.invoke('datagrid_clearTable',{"tableId":tableId});
	}
	
	var mouseover=function(msg){
		alert(msg);
	}
    KDApi.register('datagrid', MyComponent)
})(window.KDApi,jQuery);
