138 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			4.0 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
 | |
| */
 | |
| 
 | |
| dhtmlXGridObject.prototype._process_xmlA=function(xml){ 
 | |
| 	this._parsing=true;
 | |
| 	var top=dhx4.ajax.xmltop(this.xml.top, xml);
 | |
| 	//#config_from_xml:20092006{
 | |
| 	this._parseHead(top);
 | |
| 	//#}
 | |
| 	var rows=dhx4.ajax.xpath(this.xml.row,top)
 | |
| 	var cr=parseInt(top.getAttribute("pos")||0);
 | |
| 	var total=parseInt(top.getAttribute("total_count")||0);
 | |
| 	if (total && !this.rowsBuffer[total-1]) this.rowsBuffer[total-1]=null;
 | |
| 	
 | |
| 	if (this.isTreeGrid()){
 | |
| 		this._get_xml_data = this._get_xml_dataA;
 | |
| 		this._process_xml_row = this._process_xml_rowA;
 | |
| 		return this._process_tree_xml(xml);
 | |
| 	}
 | |
| 	
 | |
| 	for (var i=0; i < rows.length; i++) {
 | |
| 		if (this.rowsBuffer[i+cr]) continue;
 | |
| 		var id=rows[i].getAttribute("id")||this.uid();
 | |
| 		this.rowsBuffer[i+cr]={ idd:id, data:rows[i], _parser: this._process_xml_rowA, _locator:this._get_xml_dataA };
 | |
| 		this.rowsAr[id]=rows[i];
 | |
| 		//this.callEvent("onRowCreated",[r.idd]);
 | |
| 	}
 | |
| 	this.render_dataset();
 | |
| 	this._parsing=false;
 | |
| }
 | |
| 
 | |
| dhtmlXGridObject.prototype._process_xmlB=function(xml){
 | |
|     
 | |
|     this._parsing=true;
 | |
| 	var top=dhx4.ajax.xmltop(this.xml.top, xml);
 | |
| 	//#config_from_xml:20092006{
 | |
| 	this._parseHead(top);
 | |
| 	//#}
 | |
| 	var rows=dhx4.ajax.xpath(this.xml.row,top)
 | |
| 	var cr=parseInt(top.getAttribute("pos")||0);
 | |
| 	var total=parseInt(top.getAttribute("total_count")||0);
 | |
| 	if (total && !this.rowsBuffer[total-1]) this.rowsBuffer[total-1]=null;
 | |
| 	
 | |
| 	if (this.isTreeGrid()){
 | |
| 		this._get_xml_data = this._get_xml_dataB;
 | |
| 		this._process_xml_row = this._process_xml_rowB;
 | |
| 		return this._process_tree_xml(xml);
 | |
| 	}
 | |
| 			
 | |
| 	for (var i=0; i < rows.length; i++) {
 | |
| 		if (this.rowsBuffer[i+cr]) continue;
 | |
| 		var id=rows[i].getAttribute("id")||this.uid();
 | |
| 		this.rowsBuffer[i+cr]={ idd:id, data:rows[i], _parser: this._process_xml_rowB, _locator:this._get_xml_dataB };
 | |
| 		this.rowsAr[id]=rows[i];
 | |
| 		//this.callEvent("onRowCreated",[r.idd]);
 | |
| 	}
 | |
| 	this.render_dataset();
 | |
| 	this._parsing=false;
 | |
| }
 | |
| 
 | |
| dhtmlXGridObject.prototype._process_xml_rowA=function(r,xml){
 | |
| 	var strAr = [];
 | |
| 	r._attrs=this._xml_attrs(xml);
 | |
| 	
 | |
| 	//load cell data
 | |
|     for(var j=0;j<this.columnIds.length;j++){
 | |
|     	var cid=this.columnIds[j];
 | |
|     	var cellVal=r._attrs[cid]||"";
 | |
|         if (r.childNodes[j])
 | |
|        		r.childNodes[j]._attrs={};
 | |
|    		
 | |
| 		strAr.push(cellVal);
 | |
| 	}
 | |
| 	    
 | |
|     //back to common code
 | |
| 	this._fillRow(r,(this._c_order?this._swapColumns(strAr):strAr));
 | |
|     return r;
 | |
| }
 | |
| dhtmlXGridObject.prototype._get_xml_dataA=function(data,ind){
 | |
| 	return data.getAttribute(this.getColumnId(ind));
 | |
| }
 | |
| 
 | |
| dhtmlXGridObject.prototype._process_xml_rowB=function(r,xml){
 | |
| 	var strAr = [];
 | |
| 	r._attrs=this._xml_attrs(xml);
 | |
| 	
 | |
| 	//load userdata
 | |
| 	if (this._ud_enabled){	
 | |
| 		var udCol = dhx4.ajax.xpath("./userdata",xml);
 | |
|     	for (var i = udCol.length - 1; i >= 0; i--)
 | |
|     		this.setUserData(udCol[i].getAttribute("name"),udCol[i].firstChild?udCol[i].firstChild.data:"");
 | |
| 	}
 | |
| 	
 | |
| 	//load cell data
 | |
| 	
 | |
| 	for (var jx=0; jx < xml.childNodes.length; jx++) {
 | |
| 		var cellVal=xml.childNodes[jx];
 | |
|     	if (!cellVal.tagName) continue;
 | |
|     	var j=this.getColIndexById(cellVal.tagName);
 | |
|     	if (isNaN(j)) continue;
 | |
|     		
 | |
|         var exc=cellVal.getAttribute("type");
 | |
|         if (exc)
 | |
|         	r.childNodes[j]._cellType=exc;
 | |
|        	r.childNodes[j]._attrs=this._xml_attrs(cellVal);
 | |
|    		
 | |
| 		if (cellVal.getAttribute("xmlcontent"))
 | |
| 		{}
 | |
| 		else if (cellVal.firstChild)
 | |
| 			cellVal=cellVal.firstChild.data;
 | |
| 		else cellVal="";
 | |
|         
 | |
| 		strAr[j]=cellVal;
 | |
| 	}
 | |
| 	for (var i=0; i < r.childNodes.length; i++) {
 | |
| 		if (!r.childNodes[i]._attrs) r.childNodes[i]._attrs={};
 | |
| 	};
 | |
|             
 | |
|     //back to common code
 | |
| 	this._fillRow(r,strAr);
 | |
|     return r;
 | |
| }
 | |
| dhtmlXGridObject.prototype._get_xml_dataB=function(data,ind){
 | |
| 	var id=this.getColumnId(ind);
 | |
| 	data=data.firstChild;
 | |
| 	while (true){
 | |
| 		if (!data) return "";
 | |
| 		if (data.tagName==id) return (data.firstChild?data.firstChild.data:"")
 | |
| 		data=data.nextSibling;
 | |
| 	}
 | |
|   return "";
 | |
| }
 |