172 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			172 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*
 | |
| Product Name: dhtmlxSuite 
 | |
| Version: 5.2.0 
 | |
| Edition: Professional 
 | |
| License: content of this file is covered by DHTMLX Commercial or Enterprise license. Usage without proper license is prohibited. To obtain it contact sales@dhtmlx.com
 | |
| Copyright UAB Dinamenta http://www.dhtmlx.com
 | |
| */
 | |
| 
 | |
| function dhtmlXGridFromTable(obj,init){
 | |
|       if(typeof(obj)!='object')
 | |
|          obj = document.getElementById(obj);
 | |
|             var w=document.createElement("DIV");
 | |
|             w.setAttribute("width",obj.getAttribute("gridWidth")||(obj.offsetWidth?(obj.offsetWidth+"px"):0)||(window.getComputedStyle?window.getComputedStyle(obj,null)["width"]:(obj.currentStyle?obj.currentStyle["width"]:0)));
 | |
|             w.setAttribute("height",obj.getAttribute("gridHeight")||(obj.offsetHeight?(obj.offsetHeight+"px"):0)||(window.getComputedStyle?window.getComputedStyle(obj,null)["height"]:(obj.currentStyle?obj.currentStyle["height"]:0)));
 | |
| 			w.className = obj.className;
 | |
| 			obj.className="";
 | |
| 			if (obj.id) w.id = obj.id;
 | |
| 
 | |
|             var mr=obj;
 | |
|             var drag=obj.getAttribute("dragAndDrop");
 | |
|             mr.parentNode.insertBefore(w,mr);
 | |
|             var f=mr.getAttribute("name")||("name_"+(new Date()).valueOf());
 | |
| 
 | |
|             var windowf=new dhtmlXGridObject(w);
 | |
|             window[f]=windowf;
 | |
| 
 | |
|             var acs=mr.getAttribute("onbeforeinit");
 | |
|             var acs2=mr.getAttribute("oninit");
 | |
| 
 | |
| 			if (acs) eval(acs);
 | |
| 
 | |
|         	windowf.setImagePath(windowf.imgURL||(mr.getAttribute("imgpath")|| mr.getAttribute("image_path") ||""));
 | |
| 			var skin = mr.getAttribute("skin");
 | |
| 			if (skin) windowf.setSkin(skin);
 | |
| 
 | |
|         	if (init) init(windowf);
 | |
| 
 | |
|             var hrow=mr.rows[0];
 | |
|             var za=[];
 | |
|             var zb="";
 | |
|             var zc="";
 | |
|             var zd="";
 | |
|             var ze="";
 | |
| 
 | |
|             for (var i=0; i<hrow.cells.length; i++){
 | |
|                 za.push(hrow.cells[i].innerHTML);
 | |
|                 var width=hrow.cells[i].getAttribute("width")||hrow.cells[i].offsetWidth||(window.getComputedStyle?window.getComputedStyle(hrow.cells[i],null)["width"]:(hrow.cells[i].currentStyle?hrow.cells[i].currentStyle["width"]:0));
 | |
|                 zb+=(zb?",":"")+(width=="*"?width:parseInt(width));
 | |
|                 zc+=(zc?",":"")+(hrow.cells[i].getAttribute("align")||"left");
 | |
|                 zd+=(zd?",":"")+(hrow.cells[i].getAttribute("type")||"ed");
 | |
|                 ze+=(ze?",":"")+(hrow.cells[i].getAttribute("sort")||"str");
 | |
|             	var f_a=hrow.cells[i].getAttribute("format");
 | |
|             	if (f_a)
 | |
|             		if(hrow.cells[i].getAttribute("type").toLowerCase().indexOf("calendar")!=-1) 
 | |
|             			windowf._dtmask=f_a;
 | |
|             		else
 | |
|             			windowf.setNumberFormat(f_a,i);
 | |
|             }
 | |
| 
 | |
|         	windowf.setHeader(za);
 | |
|         	windowf.setInitWidths(zb)
 | |
|         	windowf.setColAlign(zc)
 | |
|         	windowf.setColTypes(zd);
 | |
|         	windowf.setColSorting(ze);
 | |
| 			if (obj.getAttribute("gridHeight")=="auto")
 | |
| 		    	windowf.enableAutoHeigth(true);
 | |
| 
 | |
| 			if (obj.getAttribute("multiline")) windowf.enableMultiline(true);
 | |
| 
 | |
| 			var lmn=mr.getAttribute("lightnavigation");
 | |
| 			if (lmn) windowf.enableLightMouseNavigation(lmn);
 | |
| 
 | |
| 			var evr=mr.getAttribute("evenrow");
 | |
| 			var uevr=mr.getAttribute("unevenrow");
 | |
| 
 | |
| 			if (evr||uevr) windowf.enableAlterCss(evr,uevr);
 | |
| 			if (drag) windowf.enableDragAndDrop(true);
 | |
| 
 | |
|             windowf.init();
 | |
|             if (obj.getAttribute("split")) windowf.splitAt(obj.getAttribute("split"));
 | |
| 
 | |
|             windowf.callEvent("onXLS", []);
 | |
|             //adding rows
 | |
|             windowf._process_inner_html(mr,1);
 | |
|             
 | |
| 			if (acs2) eval(acs2);            
 | |
| 			if (obj.parentNode && obj.parentNode.removeChild)
 | |
| 				obj.parentNode.removeChild(obj);
 | |
| 
 | |
|             windowf.callEvent("onXLE", []);
 | |
|      return windowf;
 | |
| 
 | |
|             }
 | |
| dhtmlXGridObject.prototype._process_html=function(xml){
 | |
| 	if (xml.tagName && xml.tagName == "TABLE") return this._process_inner_html(xml,0);
 | |
| 	var temp=document.createElement("DIV");
 | |
| 	temp.innerHTML=xml.xmlDoc.responseText;
 | |
| 	var mr = temp.getElementsByTagName("TABLE")[0];
 | |
| 	this._process_inner_html(mr,0);
 | |
| }
 | |
| dhtmlXGridObject.prototype._process_inner_html=function(mr,start){
 | |
| 	var n_l=mr.rows.length;
 | |
| 	for (var j=start; j<n_l; j++){
 | |
| 		var id=mr.rows[j].getAttribute("id")||j;
 | |
| 		this.rowsBuffer.push({ idd:id, data:mr.rows[j], _parser: this._process_html_row, _locator:this._get_html_data });
 | |
| 	}
 | |
| 	this.render_dataset();
 | |
| 	this.setSizes();
 | |
| }
 | |
|    
 | |
| dhtmlXGridObject.prototype._process_html_row=function(r,xml){
 | |
| 	var cellsCol = xml.getElementsByTagName('TD');
 | |
|     var strAr = [];
 | |
|     
 | |
| 	r._attrs=this._xml_attrs(xml);
 | |
| 	
 | |
| 	//load cell data
 | |
|     for(var j=0;j<cellsCol.length;j++){
 | |
|     	var cellVal=cellsCol[j];
 | |
|         var exc=cellVal.getAttribute("type");
 | |
|         if (r.childNodes[j]){
 | |
|         	if (exc)
 | |
|         		r.childNodes[j]._cellType=exc;
 | |
|        		r.childNodes[j]._attrs=this._xml_attrs(cellsCol[j]);
 | |
|    		}
 | |
|        
 | |
| 		if (cellVal.firstChild)
 | |
| 		    strAr.push(cellVal.innerHTML);
 | |
| 		else strAr.push("");
 | |
|         
 | |
|         if (cellVal.colSpan>1){
 | |
|             r.childNodes[j]._attrs["colspan"]=cellVal.colSpan;		
 | |
|             for (var k=1; k<cellVal.colSpan; k++){
 | |
|                 strAr.push("")
 | |
|             }
 | |
|         }
 | |
| 		
 | |
| }
 | |
| 	for(j<cellsCol.length; j<r.childNodes.length; j++)
 | |
|         r.childNodes[j]._attrs={};
 | |
| 
 | |
|         
 | |
|     //back to common code
 | |
| 	this._fillRow(r,(this._c_order?this._swapColumns(strAr):strAr));
 | |
|     return r;
 | |
| }
 | |
| dhtmlXGridObject.prototype._get_html_data=function(data,ind){
 | |
| 	data=data.firstChild;
 | |
| 	while (true){
 | |
| 		if (!data) return "";
 | |
| 		if (data.tagName=="TD") ind--;
 | |
| 		if (ind<0) break;
 | |
| 		data=data.nextSibling;
 | |
| 	}
 | |
|   return (data.firstChild?data.firstChild.data:"");
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| dhtmlxEvent(window,"load",function(){
 | |
|     var z=document.getElementsByTagName("table");
 | |
|     for (var a=0; a<z.length; a++)
 | |
|         if (z[a].className=="dhtmlxGrid"){
 | |
|             dhtmlXGridFromTable(z[a]);
 | |
|             //we have found IT!
 | |
|         }
 | |
| });
 | |
| 
 | |
| 
 | |
| //(c)dhtmlx ltd. www.dhtmlx.com
 | |
| 
 |