Files
aportil/themes/sources/dhtmlxGrid/codebase/ext/dhtmlxgrid_start.js

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