2010-12-02 23:34:41 +00:00
|
|
|
leimnud.Package.Public({
|
|
|
|
|
info :{
|
|
|
|
|
Class :"maborak",
|
|
|
|
|
File :"module.grid.js",
|
|
|
|
|
Name :"grid",
|
|
|
|
|
Type :"module",
|
|
|
|
|
Version:"0.1"
|
|
|
|
|
},
|
|
|
|
|
content :function(){
|
|
|
|
|
this.elements={};
|
|
|
|
|
this.make=function(options)
|
|
|
|
|
{
|
|
|
|
|
this.options = {
|
|
|
|
|
theme:"gray"
|
2014-02-26 15:42:12 -04:00
|
|
|
}.concatMaborak(options || {});
|
2010-12-02 23:34:41 +00:00
|
|
|
this.options.paginator={
|
|
|
|
|
limit:this.options.data.rows.length,
|
|
|
|
|
page :1
|
2014-02-26 15:42:12 -04:00
|
|
|
}.concatMaborak(this.options.paginator || {});
|
2010-12-02 23:34:41 +00:00
|
|
|
/* Search Begin */
|
|
|
|
|
if(this.options.search===true)
|
|
|
|
|
{
|
|
|
|
|
this.renderSearch();
|
|
|
|
|
}
|
|
|
|
|
/* Search End */
|
|
|
|
|
this.options.target.appendChild(this.render());
|
|
|
|
|
if(this.options.paginator && !this.options.noPaginator)
|
|
|
|
|
{
|
|
|
|
|
this.paginator();
|
|
|
|
|
}
|
|
|
|
|
return this;
|
|
|
|
|
};
|
|
|
|
|
this.render=function()
|
|
|
|
|
{
|
|
|
|
|
var table,row,cell,dataColumn=this.options.data.column,dataRow;
|
|
|
|
|
var rows=dataColumn.length;
|
|
|
|
|
var width = 100/dataColumn.length+"%";
|
|
|
|
|
/* Grid table BEGIN */
|
|
|
|
|
if(this.options.title)
|
|
|
|
|
{
|
|
|
|
|
this.elements.titleBar = $dce("div");
|
|
|
|
|
this.elements.titleBar.innerHTML=this.options.title || "";
|
|
|
|
|
this.elements.titleBar.className="app_grid_headerBar___"+this.options.theme;
|
|
|
|
|
this.parent.dom.setStyle(this.elements.titleBar,this.options.styleHeaderBar || {});
|
|
|
|
|
this.options.target.appendChild(this.elements.titleBar);
|
|
|
|
|
}
|
|
|
|
|
table = this.elements.table = $dce("table");
|
|
|
|
|
this.elements.table.className="app_grid_table___"+this.options.theme;
|
|
|
|
|
this.parent.dom.setStyle(table,{
|
|
|
|
|
/*font:"normal 11px arial,tahoma,helvetica,sans-serif",
|
|
|
|
|
width :"100%",
|
|
|
|
|
borderCollapse:"collapse",
|
|
|
|
|
margin:0*/
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
row = table.insertRow(-1);
|
|
|
|
|
/* right Click BEGIN */
|
|
|
|
|
|
|
|
|
|
var menuObserver=this.parent.factory(this.parent.pattern.observer,true);
|
|
|
|
|
this.parent.event.add(this.options.target,"click",menuObserver.update);
|
|
|
|
|
var menu = new this.parent.module.app.menuRight();
|
|
|
|
|
menu.make({
|
|
|
|
|
target:row,
|
|
|
|
|
menu:[
|
|
|
|
|
{text:"Option 1",launch:function(){alert(1)}},
|
|
|
|
|
{text:"Option 2",launch:function(){alert(2)}},
|
|
|
|
|
{text:"Option 3",launch:function(){alert(3)}}
|
|
|
|
|
]
|
|
|
|
|
});
|
|
|
|
|
menuObserver.register(menu.remove,menu);
|
|
|
|
|
/* right Click END */
|
|
|
|
|
for(var i=0;i<rows;i++)
|
|
|
|
|
{
|
|
|
|
|
cell = row.insertCell(i);
|
|
|
|
|
cell.onmouseover=function(evt,cell)
|
|
|
|
|
{
|
|
|
|
|
var event = window.event || evt;
|
|
|
|
|
var cell = (window.event)?evt:cell;
|
|
|
|
|
if(event.ctrlKey)
|
|
|
|
|
{
|
|
|
|
|
cell.style.cursor="move";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
cell.style.cursor="default";
|
|
|
|
|
}
|
|
|
|
|
}.extend(this,cell);
|
|
|
|
|
dataRow = dataColumn[i];
|
|
|
|
|
cell.innerHTML=dataRow.title;
|
|
|
|
|
cell.className="app_grid_title___"+this.options.theme;
|
|
|
|
|
this.parent.dom.setStyle(cell,{
|
|
|
|
|
width :dataColumn[i].width || width
|
2014-02-26 15:42:12 -04:00
|
|
|
}.concatMaborak(dataColumn[i].style || {}));
|
2010-12-02 23:34:41 +00:00
|
|
|
dataRow.searchable = (dataRow.searchable===false)?false:true;
|
|
|
|
|
if(dataRow.type==="counter" || dataRow.type==="drag")
|
|
|
|
|
{
|
|
|
|
|
this.createColumnData(i,dataRow.data || null);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
cell.onmousedown=this.dragCell.args(i);
|
|
|
|
|
}
|
|
|
|
|
if(dataColumn[i].onchange)
|
|
|
|
|
{
|
|
|
|
|
dataColumn[i].onchange=(dataColumn[i].onchange.isString)?eval(dataColumn[i].onchange):dataColumn[i].onchange;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
this.fillAllData();
|
|
|
|
|
this.renderData();
|
|
|
|
|
return table;
|
|
|
|
|
};
|
|
|
|
|
this.createColumnData=function(key,data)
|
|
|
|
|
{
|
|
|
|
|
var rows = this.options.data.rows;
|
|
|
|
|
for(var i=0;i<rows.length;i++)
|
|
|
|
|
{
|
|
|
|
|
rows[i].data.insert(key,data);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.renderData=function()
|
|
|
|
|
{
|
|
|
|
|
//alert(this.dataToRender.length)
|
|
|
|
|
var table = this.elements.table,row,cell,dataColumn=this.options.data.column,dataRow;
|
|
|
|
|
var rows = dataColumn.length;
|
|
|
|
|
var width = 100/dataColumn.length+"%";
|
|
|
|
|
/* parse Rows BEGIN */
|
|
|
|
|
var limit=this.dataToRender.length;
|
|
|
|
|
var total=this.dataToRender.length;
|
|
|
|
|
var lpp;
|
|
|
|
|
var page = this.options.paginator.page;
|
|
|
|
|
var forp = (this.options.paginator.limit>limit)?limit:this.options.paginator.limit;
|
|
|
|
|
lpp = (((page)==this.options.paginator.pages)?(total-((page-1)*forp)):forp);
|
|
|
|
|
var inicio = this.options.paginator.limit*(this.options.paginator.page-1);
|
|
|
|
|
inicio = (inicio<0)?0:inicio;
|
|
|
|
|
var fin = inicio+lpp;
|
|
|
|
|
//alert(inicio+":"+fin);
|
|
|
|
|
for(var i=inicio;i<fin;i++)
|
|
|
|
|
{
|
|
|
|
|
row = table.insertRow(-1);
|
|
|
|
|
var domCell = [];
|
|
|
|
|
this.options.data.rows[this.dataToRender[i]].info={
|
|
|
|
|
rowIndex:i+1
|
2014-02-26 15:42:12 -04:00
|
|
|
}.concatMaborak(this.options.data.rows[this.dataToRender[i]].info || {});
|
2010-12-02 23:34:41 +00:00
|
|
|
dataCell = this.options.data.rows[this.dataToRender[i]].data;
|
|
|
|
|
for(var j=0;j<rows;j++)
|
|
|
|
|
{
|
|
|
|
|
cell = row.insertCell(j);
|
|
|
|
|
domCell.push(cell);
|
|
|
|
|
dataRow = dataCell[j] || 0;
|
|
|
|
|
//alert(dataColumn[j])
|
|
|
|
|
cell.className="app_grid_data___"+this.options.theme;
|
|
|
|
|
if(dataColumn[j].paint)
|
|
|
|
|
{
|
|
|
|
|
cell.className="app_grid_data___"+this.options.theme+" app_grid_"+dataColumn[j].paint+"___"+this.options.theme;
|
|
|
|
|
}
|
|
|
|
|
this.parent.dom.setStyle(cell,{
|
|
|
|
|
width : dataColumn[j].width || width
|
2014-02-26 15:42:12 -04:00
|
|
|
}.concatMaborak(dataColumn[j].styleValues || dataRow.style || {}));
|
2010-12-02 23:34:41 +00:00
|
|
|
if(dataColumn[j].type==="counter" || dataColumn[j].type==="drag")
|
|
|
|
|
{
|
|
|
|
|
var value = dataRow.value || i+1;
|
|
|
|
|
cell.innerHTML=value;
|
|
|
|
|
if(dataColumn[j].type==="drag")
|
|
|
|
|
{
|
|
|
|
|
cell.onmousedown=this.dragRow.args(this.dataToRender[i]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if(dataColumn[j].type==="text" || dataColumn[j].type==="textarea")
|
|
|
|
|
{
|
|
|
|
|
cell.innerHTML=dataRow.value;
|
|
|
|
|
if(dataColumn[j].edit===true)
|
|
|
|
|
{
|
|
|
|
|
this.editText(this.dataToRender[i],j,cell);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if(dataColumn[j].type=="textDropdown")
|
|
|
|
|
{
|
|
|
|
|
cell.innerHTML=dataColumn[j].data[dataRow.value][1];
|
|
|
|
|
if(dataColumn[j].edit===true)
|
|
|
|
|
{
|
|
|
|
|
this.editTextDropdown(this.dataToRender[i],j,cell);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if(dataColumn[j].type=="checkbox")
|
|
|
|
|
{
|
|
|
|
|
var cb = $dce("input");
|
|
|
|
|
cb.type = "checkbox";
|
|
|
|
|
cell.appendChild(cb);
|
|
|
|
|
cb.checked = (dataRow.value);
|
|
|
|
|
cb.disabled=(dataColumn[j].edit===true)?false:true;
|
|
|
|
|
this.parent.dom.setStyle(cb,{
|
|
|
|
|
padding :0,
|
|
|
|
|
margin :0
|
|
|
|
|
});
|
|
|
|
|
cb.onchange=function(evt,data)
|
|
|
|
|
{
|
|
|
|
|
data = (window.event)?evt:data;
|
|
|
|
|
dataRow = data.dataRow;
|
|
|
|
|
cb = data.cb;
|
|
|
|
|
dataRow.value=cb.checked;
|
|
|
|
|
if(dataColumn[data.indexColumn].onchange)
|
|
|
|
|
{
|
|
|
|
|
dataColumn[data.indexColumn].onchange({index:this.options.data.rows[data.indexRow],dom:cb});
|
|
|
|
|
}
|
|
|
|
|
}.extend(this,{cb:cb,dataRow:dataRow,indexColumn:j,indexRow:this.dataToRender[i]});
|
|
|
|
|
}
|
|
|
|
|
else if(dataColumn[j].type=="dropdown")
|
|
|
|
|
{
|
|
|
|
|
//cell.innerHTML=dataColumn[j].data[dataRow.value][1];
|
|
|
|
|
this.parent.dom.setStyle(cell,{
|
|
|
|
|
padding :2
|
|
|
|
|
});
|
|
|
|
|
var select = $dce("select");
|
|
|
|
|
dataCellHeader = dataColumn[j];
|
|
|
|
|
//alert(dataCell.data)
|
|
|
|
|
for(var k=0;k<dataCellHeader.data.length;k++)
|
|
|
|
|
{
|
|
|
|
|
var selected = (dataRow.value===dataCellHeader.data[k][0]);
|
|
|
|
|
//select.options[i]=new Option(dataCell.data[i][1],dataCell.data[i][0],true);
|
|
|
|
|
var option = $dce("option");
|
|
|
|
|
select.appendChild(option);
|
|
|
|
|
option.value =dataCellHeader.data[k][0];
|
|
|
|
|
option.selected = selected;
|
|
|
|
|
option.text =dataCellHeader.data[k][1];
|
|
|
|
|
}
|
|
|
|
|
select.onchange=function(evt,data)
|
|
|
|
|
{
|
|
|
|
|
data = (window.event)?evt:data;
|
|
|
|
|
dataRow = data.dataRow;
|
|
|
|
|
select = data.select;
|
|
|
|
|
dataRow.value=parseInt(select.options[select.selectedIndex].value,10);
|
|
|
|
|
}.extend(this,{select:select,dataRow:dataRow});
|
|
|
|
|
cell.appendChild(select);
|
|
|
|
|
select.disabled=(dataColumn[j].edit===true)?false:true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//this.elements.cells.push(domCell);
|
|
|
|
|
//this.elements.rows.push(row);
|
|
|
|
|
}
|
|
|
|
|
/* parse Rows END */
|
|
|
|
|
};
|
|
|
|
|
this.paginator=function()
|
|
|
|
|
{
|
|
|
|
|
/*this.paginatorDOM = $dce("div");
|
|
|
|
|
var headerP = $dce("div");
|
|
|
|
|
var theme = this.options.theme;
|
|
|
|
|
headerP.className="app_grid_paginatorHeader___"+theme;
|
|
|
|
|
for(var i=0;i<this.options.paginator.pages;i++)
|
|
|
|
|
{
|
|
|
|
|
var li = $dce("a");
|
|
|
|
|
li.innerHTML = i+1;
|
|
|
|
|
li.href = "#";
|
|
|
|
|
headerP.appendChild(li);
|
|
|
|
|
if((i+1)===this.options.paginator.page)
|
|
|
|
|
{
|
|
|
|
|
li.className = "app_grid_paginatorLinkSelected___"+theme;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
li.className = "app_grid_paginatorLink___"+theme;
|
|
|
|
|
li.onmouseup = function(evt,page)
|
|
|
|
|
{
|
|
|
|
|
page = (this.parent.browser.isIE)?evt:page;
|
|
|
|
|
//alert(page+1)
|
|
|
|
|
this.options.paginator.page=page+1;
|
|
|
|
|
this.clear();
|
|
|
|
|
this.paginatorDOM.innerHTML="";
|
|
|
|
|
this.paginator();
|
|
|
|
|
this.renderData();
|
|
|
|
|
}.extend(this,i)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
this.paginatorDOM.appendChild(headerP);
|
|
|
|
|
this.parent.dom.setStyle(headerP,{
|
|
|
|
|
textAlign :"center",
|
|
|
|
|
padding :5
|
|
|
|
|
});
|
|
|
|
|
this.options.target.appendChild(this.paginatorDOM);*/
|
|
|
|
|
|
|
|
|
|
this.paginatorDOM = $dce("div");
|
|
|
|
|
var headerP = $dce("div");
|
|
|
|
|
var theme = this.options.theme;
|
|
|
|
|
headerP.className="app_grid_paginatorHeader___"+theme;
|
|
|
|
|
this.paginatorDOM.appendChild(headerP);
|
|
|
|
|
this.parent.dom.setStyle(headerP,{
|
|
|
|
|
textAlign :"center",
|
|
|
|
|
padding :5
|
|
|
|
|
});
|
|
|
|
|
this.options.target.appendChild(this.paginatorDOM);
|
|
|
|
|
var p = headerP;
|
|
|
|
|
|
|
|
|
|
(p.appendChild(this.pDf = $dce("a"))).href="#";
|
|
|
|
|
this.pDf.className="app_grid_pDf___"+theme;
|
|
|
|
|
this.pDf.onmouseup=function()
|
|
|
|
|
{
|
|
|
|
|
return this.paginatorTo(1);
|
|
|
|
|
}.extend(this);
|
|
|
|
|
|
|
|
|
|
(p.appendChild(this.pDp = $dce("a"))).href="#";
|
|
|
|
|
this.pDp.className="app_grid_pDp___"+theme;
|
|
|
|
|
this.pDp.onmouseup=function()
|
|
|
|
|
{
|
|
|
|
|
return this.paginatorTo(this.options.paginator.page-1);
|
|
|
|
|
}.extend(this);
|
|
|
|
|
|
|
|
|
|
//p.innerHTML+=" Page ";
|
|
|
|
|
(p.appendChild(this.pDt1 = $dce("span"))).innerHTML=" Page ";
|
|
|
|
|
|
|
|
|
|
(p.appendChild(this.pDC = $dce("input"))).type="text";
|
|
|
|
|
this.pDC.value = this.options.paginator.page;
|
|
|
|
|
this.pDC.className = "app_grid_pDC___"+theme;
|
|
|
|
|
this.pDC.onkeyup=function(evt)
|
|
|
|
|
{
|
|
|
|
|
var evt = (window.event)?window.event:evt;
|
|
|
|
|
var key = (evt.which)?evt.which:evt.keyCode;
|
|
|
|
|
var pg = parseInt(this.pDC.value);
|
|
|
|
|
pg = (isNaN(pg)?1:pg);
|
|
|
|
|
if(key==13)
|
|
|
|
|
{
|
|
|
|
|
this.paginatorTo(pg);
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}.extend(this);
|
|
|
|
|
|
|
|
|
|
(p.appendChild(this.pDt2 = $dce("span"))).innerHTML=" of ";
|
|
|
|
|
|
|
|
|
|
(p.appendChild(this.pDT = $dce("span"))).innerHTML=this.options.paginator.pages;
|
|
|
|
|
this.pDT.className="app_grid_pDT___"+theme;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(p.appendChild(this.pDn = $dce("a"))).href="#";
|
|
|
|
|
this.pDn.className="app_grid_pDn___"+theme;
|
|
|
|
|
this.pDn.onmouseup=function()
|
|
|
|
|
{
|
|
|
|
|
return this.paginatorTo(this.options.paginator.page+1);
|
|
|
|
|
}.extend(this);
|
|
|
|
|
|
|
|
|
|
(p.appendChild(this.pDl = $dce("a"))).href="#";
|
|
|
|
|
this.pDl.className="app_grid_pDl___"+theme;
|
|
|
|
|
this.pDl.onmouseup=function()
|
|
|
|
|
{
|
|
|
|
|
return this.paginatorTo(this.options.paginator.pages);
|
|
|
|
|
}.extend(this);
|
|
|
|
|
this.paginatorTo(this.options.paginator.page);
|
|
|
|
|
};
|
|
|
|
|
this.paginatorTo=function(pagTo,force)
|
|
|
|
|
{
|
|
|
|
|
pagTo = (pagTo<=0)?1:((pagTo>this.options.paginator.pages)?this.options.paginator.pages:pagTo);
|
|
|
|
|
this.pDC.value = pagTo;
|
|
|
|
|
if(pagTo!==this.options.paginator.page || force===true)
|
|
|
|
|
{
|
|
|
|
|
this.options.paginator.page=pagTo;
|
|
|
|
|
this.clear();
|
|
|
|
|
this.renderData();
|
|
|
|
|
}
|
|
|
|
|
if(pagTo===1)
|
|
|
|
|
{
|
|
|
|
|
this.pDf.className="app_grid_pDfDisabled___"+this.options.theme;
|
|
|
|
|
this.pDp.className="app_grid_pDpDisabled___"+this.options.theme;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
this.pDf.className="app_grid_pDf___"+this.options.theme;
|
|
|
|
|
this.pDp.className="app_grid_pDp___"+this.options.theme;
|
|
|
|
|
}
|
|
|
|
|
if(pagTo===this.options.paginator.pages)
|
|
|
|
|
{
|
|
|
|
|
this.pDn.className="app_grid_pDnDisabled___"+this.options.theme;
|
|
|
|
|
this.pDl.className="app_grid_pDlDisabled___"+this.options.theme;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
this.pDn.className="app_grid_pDn___"+this.options.theme;
|
|
|
|
|
this.pDl.className="app_grid_pDl___"+this.options.theme;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
};
|
|
|
|
|
this.renderSearched=function(evt,stext)
|
|
|
|
|
{
|
|
|
|
|
//alert(345345)
|
|
|
|
|
this.dataToRender = [];
|
|
|
|
|
var text = this.searchText.value;
|
|
|
|
|
//var r = this.options.data.rows;
|
|
|
|
|
var r = this.options.data.rows;
|
|
|
|
|
var rw = this.elements.table.rows;
|
|
|
|
|
var c = this.options.data.column;
|
|
|
|
|
for(var i=0;i<r.length;i++)
|
|
|
|
|
{
|
|
|
|
|
var display = "none";
|
|
|
|
|
var dc = r[i].data;
|
|
|
|
|
for(var j=0;j<c.length;j++)
|
|
|
|
|
{
|
|
|
|
|
var d = dc[j];
|
|
|
|
|
//console.info(c[j].type+"::"+d.value)
|
|
|
|
|
if(c[j].type=="text" || c[j].type==="textDropdown" || c[j].type==="dropdown" || c[j].type==="textarea")
|
|
|
|
|
{
|
|
|
|
|
//alert(d.value+":"+c[j].type)
|
|
|
|
|
//alert((this.getText({i:i,j:j,type:c[j].type})).toString()+"::"+c[j].searchable +"::"+(this.getText({i:i,j:j,type:c[j].type})).toString().match(new RegExp(text,"i")));
|
|
|
|
|
if((this.getText({i:i,j:j,type:c[j].type})).toString().match(new RegExp(text,"i")) && c[j].searchable)
|
|
|
|
|
{
|
|
|
|
|
this.dataToRender.push(i);
|
|
|
|
|
display = "";
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//alert(r[i].info.rowIndex)
|
|
|
|
|
//this.elements.table.rows[i+1].style.display=display;
|
|
|
|
|
//this.elements.table.rows[r[i].info.rowIndex].style.display=display;
|
|
|
|
|
}
|
|
|
|
|
this.options.paginator.pages=Math.ceil(this.dataToRender.length/this.options.paginator.limit);
|
|
|
|
|
this.pDT.innerHTML=this.options.paginator.pages;
|
|
|
|
|
//alert(this.dataToRender.length);
|
|
|
|
|
this.paginatorTo(1,true);
|
|
|
|
|
//alert(this.dataToRender.length);
|
|
|
|
|
//this.elements.table.rows[2].style.display="none";
|
|
|
|
|
};
|
|
|
|
|
this.fillAllData=function()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
this.dataToRender=[];
|
|
|
|
|
var c = this.options.data.rows;
|
|
|
|
|
for(var i=0;i<c.length;i++)
|
|
|
|
|
{
|
|
|
|
|
this.dataToRender.push(i);
|
|
|
|
|
}
|
|
|
|
|
this.options.paginator.pages=Math.ceil(this.dataToRender.length/this.options.paginator.limit);
|
|
|
|
|
};
|
|
|
|
|
this.sort=function(data)
|
|
|
|
|
{
|
|
|
|
|
data = {
|
|
|
|
|
column:1
|
2014-02-26 15:42:12 -04:00
|
|
|
}.concatMaborak(data || {});
|
2010-12-02 23:34:41 +00:00
|
|
|
var d = this.dataToRender;
|
|
|
|
|
var r = this.options.data.rows;
|
|
|
|
|
var c = this.options.data.column[data.column];
|
|
|
|
|
var t = c.type;
|
|
|
|
|
var limit= d.length;
|
|
|
|
|
c.order = c.order || "ASC";
|
|
|
|
|
data.order = c.order;
|
|
|
|
|
c.order = (c.order == "ASC")?"DESC":"ASC";
|
|
|
|
|
var sd = [];
|
|
|
|
|
for(var i=0;i<limit;i++)
|
|
|
|
|
{
|
|
|
|
|
sd.push({
|
|
|
|
|
index:d[i],
|
|
|
|
|
value:r[d[i]].data[data.column].value
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
var sortedData = sd.sort(function(a,b,order){
|
|
|
|
|
var aComp = a.value[0];
|
|
|
|
|
var bComp = b.value[0];
|
|
|
|
|
//console.info(order);
|
|
|
|
|
order1 = (order=="ASC")?-1:1;
|
|
|
|
|
order2 = (order=="ASC")?1:-1;
|
|
|
|
|
if (aComp < bComp) {return order1}
|
|
|
|
|
if (aComp > bComp) {return order2}
|
|
|
|
|
return 0;
|
|
|
|
|
}.args(data.order));
|
|
|
|
|
var sortedIndex = [];
|
|
|
|
|
for(var i=0;i<sortedData.length;i++)
|
|
|
|
|
{
|
|
|
|
|
sortedIndex.push(sortedData[i].index);
|
|
|
|
|
}
|
|
|
|
|
this.dataToRender = sortedIndex;
|
|
|
|
|
this.paginatorTo(this.options.paginator.page,true);
|
|
|
|
|
return true;
|
|
|
|
|
};
|
|
|
|
|
this.getText=function(data)
|
|
|
|
|
{
|
|
|
|
|
i = data.i;
|
|
|
|
|
j = data.j;
|
|
|
|
|
var r= this.options.data.rows[i].data;
|
|
|
|
|
var c = this.options.data.column[j];
|
|
|
|
|
var t = "";
|
|
|
|
|
if(data.type=="text" || data.type=="textarea")
|
|
|
|
|
{
|
|
|
|
|
t = r[j].value;
|
|
|
|
|
}
|
|
|
|
|
else if(data.type=="textDropdown" || data.type=="dropdown")
|
|
|
|
|
{
|
|
|
|
|
t = c.data[r[j].value][1];
|
|
|
|
|
}
|
|
|
|
|
return t;
|
|
|
|
|
};
|
|
|
|
|
this.renderSearch=function()
|
|
|
|
|
{
|
|
|
|
|
var div = $dce("div");
|
|
|
|
|
div.className="app_grid_headerBar___"+this.options.theme;
|
|
|
|
|
this.parent.dom.setStyle(div,{
|
|
|
|
|
padding:1,
|
|
|
|
|
textAlign:"right"
|
|
|
|
|
});
|
|
|
|
|
this.searchText = new input(false,{width:200});
|
|
|
|
|
this.searchText.onkeyup=function(evt)
|
|
|
|
|
{
|
|
|
|
|
//alert(searchText)
|
|
|
|
|
var evt = (window.event)?window.event:evt;
|
|
|
|
|
var key = (evt.which)?evt.which:evt.keyCode;
|
|
|
|
|
if(key==13)
|
|
|
|
|
{
|
|
|
|
|
this.renderSearched();
|
|
|
|
|
}
|
|
|
|
|
//this.renderSearched();
|
|
|
|
|
}.extend(this);
|
|
|
|
|
div.appendChild(this.searchText);
|
|
|
|
|
div.appendChild(new button("Search",this.renderSearched,{width:70}));
|
|
|
|
|
div.appendChild(new button("Options",function(evt)
|
|
|
|
|
{
|
|
|
|
|
/*evt = (window.event)?window.event:evt;
|
|
|
|
|
var posM= this.parent.dom.mouse(evt);*/
|
|
|
|
|
options = new leimnud.module.panel();
|
|
|
|
|
options.options={
|
|
|
|
|
size :{w:200,h:200},
|
|
|
|
|
title :"",
|
|
|
|
|
target :this.options.target,
|
|
|
|
|
position :{x:10,y:10,center:true},
|
|
|
|
|
limit :true,
|
|
|
|
|
statusBar :false,
|
|
|
|
|
//titleBar :false,
|
|
|
|
|
control:{
|
|
|
|
|
drag :false,
|
|
|
|
|
close :true,
|
|
|
|
|
resize :false
|
|
|
|
|
},
|
|
|
|
|
fx:{
|
|
|
|
|
modal :true,
|
|
|
|
|
shadow :false,
|
|
|
|
|
fadeIn :false,
|
|
|
|
|
fadeOut :true
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
//options.styles.fx.opacityModal.Static=70;
|
|
|
|
|
options.setStyle={
|
|
|
|
|
//modal :{backgroundColor:"white"},
|
|
|
|
|
//frontend:{backgroundColor:"white"},
|
|
|
|
|
//containerWindow:{backgroundColor:"white",border:"1px solid #99BBE8"},
|
|
|
|
|
//content:{border:"1px solid red"},
|
|
|
|
|
//titleBar:{background:"none"},
|
|
|
|
|
content :{padding:0,borderWidth:0,backgroundColor:"transparent",border:"0px solid red"}
|
|
|
|
|
};
|
|
|
|
|
options.make();
|
|
|
|
|
//options.addContent("<div style='text-align:right;'><b>Search in:</b></div><br />");
|
|
|
|
|
var fs = $dce("fieldset");
|
|
|
|
|
this.parent.dom.setStyle(fs,{
|
|
|
|
|
fontWeight :"bold",
|
|
|
|
|
//border :"1px solid #99BBE8",
|
|
|
|
|
//height :"100%",
|
|
|
|
|
color :"#000"
|
|
|
|
|
});
|
|
|
|
|
var lg = $dce("legend");
|
|
|
|
|
lg.innerHTML="Search in:";
|
|
|
|
|
fs.appendChild(lg);
|
|
|
|
|
options.addContent(fs);
|
|
|
|
|
|
|
|
|
|
var dr = this.options.data.column;
|
|
|
|
|
var se = [];
|
|
|
|
|
var cn = $dce("div");
|
|
|
|
|
this.parent.dom.setStyle(cn,{
|
|
|
|
|
fontWeight :"normal",
|
|
|
|
|
textAlign :"right",
|
|
|
|
|
//backgroundColor :"#D0DEF0",
|
|
|
|
|
//border :"1px solid #99BBE8",
|
|
|
|
|
color :"#000"
|
|
|
|
|
});
|
|
|
|
|
fs.appendChild(cn);
|
|
|
|
|
for(var i=0;i<dr.length;i++)
|
|
|
|
|
{
|
|
|
|
|
if(dr[i].type==="text" || dr[i].type==="textDropdown" || dr[i].type==="dropdown" || dr[i].type==="textarea")
|
|
|
|
|
{
|
|
|
|
|
var ti = $dce("div");
|
|
|
|
|
this.parent.dom.setStyle(ti,{
|
|
|
|
|
verticalAlign :"middle",
|
|
|
|
|
padding :1
|
|
|
|
|
});
|
|
|
|
|
ti.innerHTML=dr[i].title+" ";
|
|
|
|
|
cn.appendChild(ti);
|
|
|
|
|
var sl = $dce("input");
|
|
|
|
|
sl.type = "checkbox";
|
|
|
|
|
ti.appendChild(sl);
|
|
|
|
|
sl.checked = dr[i].searchable;
|
|
|
|
|
sl.onchange=function(evt,data)
|
|
|
|
|
{
|
|
|
|
|
var data = (window.event)?evt:data;
|
|
|
|
|
this.options.data.column[data.ro].searchable=data.a.checked;
|
|
|
|
|
}.extend(this,{a:sl,ro:i});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//options.addContent(cn);
|
|
|
|
|
}.extend(this),{width:70}).disable());
|
|
|
|
|
div.appendChild(new button("Add").disable());
|
|
|
|
|
div.appendChild(new button("Del").disable());
|
|
|
|
|
div.appendChild(new button("New").disable());
|
|
|
|
|
this.options.target.appendChild(div);
|
|
|
|
|
};
|
|
|
|
|
this.editText=function(indexRow,indexCell,dom)
|
|
|
|
|
{
|
|
|
|
|
dom.ondblclick = function(evt,data)
|
|
|
|
|
{
|
|
|
|
|
data = (window.event)?evt:data;
|
|
|
|
|
var indexRow=data.indexRow,indexCell=data.indexCell;
|
|
|
|
|
var dataCell = this.options.data.column[indexCell];
|
|
|
|
|
var dataRow = this.options.data.rows[indexRow].data[indexCell];
|
|
|
|
|
//alert(indexRow+":"+indexCell+":"+dom.offsetWidth+":"+dom.offsetHeight);
|
|
|
|
|
var tp = (dataCell.type=="text")?"input":"textarea";
|
|
|
|
|
var input = $dce(tp);
|
|
|
|
|
if(dataCell.type=="textarea")
|
|
|
|
|
{
|
|
|
|
|
this.parent.dom.setStyle(input,{
|
|
|
|
|
height :dom.offsetHeight-5
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
input.type="text";
|
|
|
|
|
}
|
|
|
|
|
this.parent.dom.setStyle(input,{
|
|
|
|
|
font :"normal 8pt Tahoma,sans-serif,Tahoma",
|
|
|
|
|
padding :3,
|
|
|
|
|
paddingLeft :3,
|
|
|
|
|
border :"1px solid buttonHighlight",
|
|
|
|
|
borderLeft :"1px solid buttonShadow",
|
|
|
|
|
borderTop :"1px solid buttonShadow",
|
|
|
|
|
backgroundColor:"#EEE",
|
|
|
|
|
overflow :"none",
|
|
|
|
|
width :"100%"
|
|
|
|
|
});
|
|
|
|
|
dom.innerHTML="";
|
|
|
|
|
this.parent.dom.setStyle(dom,{
|
|
|
|
|
padding :1
|
|
|
|
|
});
|
|
|
|
|
input.value=dataRow.value;
|
|
|
|
|
input.onblur=function()
|
|
|
|
|
{
|
|
|
|
|
this.parent.dom.setStyle(dom,{
|
|
|
|
|
padding :5
|
|
|
|
|
});
|
|
|
|
|
//alert(this.options.data.column[indexCell].onchange);
|
|
|
|
|
//dom.innerHTML=dataRow.value = input.value.escapeHTML();
|
|
|
|
|
dom.innerHTML=dataRow.value = input.value;
|
|
|
|
|
if(this.options.data.column[indexCell].onchange)
|
|
|
|
|
{
|
|
|
|
|
this.options.data.column[indexCell].onchange({index:this.options.data.rows[indexRow],dom:input});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}.extend(this);
|
|
|
|
|
dom.appendChild(input);
|
|
|
|
|
input.focus();
|
|
|
|
|
|
|
|
|
|
}.extend(this,{indexRow:indexRow,indexCell:indexCell,dom:dom});
|
|
|
|
|
};
|
|
|
|
|
this.editTextDropdown=function(indexRow,indexCell,dom)
|
|
|
|
|
{
|
|
|
|
|
dom.ondblclick = function(evt,data)
|
|
|
|
|
{
|
|
|
|
|
data = (window.event)?evt:data;
|
|
|
|
|
var indexRow=data.indexRow,indexCell=data.indexCell;
|
|
|
|
|
var dataCell = this.options.data.column[indexCell];
|
|
|
|
|
var dataRow = this.options.data.rows[indexRow].data[indexCell];
|
|
|
|
|
dom.innerHTML="";
|
|
|
|
|
this.parent.dom.setStyle(dom,{
|
|
|
|
|
padding :1
|
|
|
|
|
});
|
|
|
|
|
var select = $dce("select");
|
|
|
|
|
this.parent.dom.setStyle(select,{
|
|
|
|
|
font:"normal 11px arial,tahoma,helvetica,sans-serif",
|
|
|
|
|
width:"100%"
|
|
|
|
|
});
|
|
|
|
|
for(var i=0;i<dataCell.data.length;i++)
|
|
|
|
|
{
|
|
|
|
|
var selected = (dataRow.value===dataCell.data[i][0]);
|
|
|
|
|
//select.options[i]=new Option(dataCell.data[i][1],dataCell.data[i][0],true);
|
|
|
|
|
var option = $dce("option");
|
|
|
|
|
select.appendChild(option);
|
|
|
|
|
option.value=dataCell.data[i][0];
|
|
|
|
|
option.selected = selected;
|
|
|
|
|
option.text =dataCell.data[i][1];
|
|
|
|
|
}
|
|
|
|
|
dom.appendChild(select);
|
|
|
|
|
select.onblur=function()
|
|
|
|
|
{
|
|
|
|
|
this.parent.dom.setStyle(dom,{
|
|
|
|
|
padding :5
|
|
|
|
|
});
|
|
|
|
|
//alert(dataRow.value+":"+dataCell.data[indexRow][1])
|
|
|
|
|
//alert(dataRow.value)
|
|
|
|
|
dom.innerHTML=this.editTextDropdownSelectUID(indexCell,indexRow);
|
|
|
|
|
}.extend(this);
|
|
|
|
|
select.onchange=function()
|
|
|
|
|
{
|
|
|
|
|
//alert(dataRow.value+":"+select.options[select.selectedIndex].value)
|
|
|
|
|
this.options.data.rows[indexRow].data[indexCell].value=parseInt(select.options[select.selectedIndex].value,10);
|
|
|
|
|
//dataRow.value=select.options[select.selectedIndex].value;
|
|
|
|
|
if(this.options.data.column[indexCell].onchange)
|
|
|
|
|
{
|
|
|
|
|
this.options.data.column[indexCell].onchange({index:this.options.data.rows[indexRow],dom:select});
|
|
|
|
|
}
|
|
|
|
|
select.blur();
|
|
|
|
|
}.extend(this);
|
|
|
|
|
select.focus();
|
|
|
|
|
}.extend(this,{indexRow:indexRow,indexCell:indexCell,dom:dom});
|
|
|
|
|
};
|
|
|
|
|
this.editTextDropdownSelectUID=function(cell,row)
|
|
|
|
|
{
|
|
|
|
|
data = this.options.data.column[cell].data;
|
|
|
|
|
uid = this.options.data.rows[row].data[cell].value;
|
|
|
|
|
//alert(data+":"+uid);
|
|
|
|
|
for(var i=0;i<data.length;i++)
|
|
|
|
|
{
|
|
|
|
|
if(data[i][0]===uid)
|
|
|
|
|
{
|
|
|
|
|
return data[i][1];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return "";
|
|
|
|
|
};
|
|
|
|
|
this.clear=function()
|
|
|
|
|
{
|
|
|
|
|
//alert(this.elements.table.rows.length);
|
|
|
|
|
var total = this.elements.table.rows.length;
|
|
|
|
|
//for(var i=0;i<total;i++)
|
|
|
|
|
for(var i=total-1;i>0;i--)
|
|
|
|
|
{
|
|
|
|
|
//alert(this.elements.table.rows[i])
|
|
|
|
|
this.parent.dom.remove(this.elements.table.rows[i]);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.searchables=function()
|
|
|
|
|
{
|
|
|
|
|
var dr = this.options.data.column;
|
|
|
|
|
var se = [];
|
|
|
|
|
for(var i=0;i<dr.length;i++)
|
|
|
|
|
{
|
|
|
|
|
if(dr[i].type==="text")
|
|
|
|
|
{
|
|
|
|
|
se.push(i);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return se;
|
|
|
|
|
};
|
|
|
|
|
this.dragCell=function(evt,cellIndex)
|
|
|
|
|
{
|
|
|
|
|
var event = window.event || evt;
|
|
|
|
|
if(this.inDragProcess===true || !event.ctrlKey)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
this.inDragProcess=true;
|
|
|
|
|
//alert(this.parent.event.dom(event).parentNode);
|
|
|
|
|
cellIndex = (this.parent.browser.isIE)?evt:cellIndex;
|
|
|
|
|
//var domRow = this.elements.table.rows[row+1];
|
|
|
|
|
var domCell = this.parent.event.dom(event);
|
|
|
|
|
this.phantomCellStatic = $dce("div");
|
|
|
|
|
this.phantomCell = $dce("div");
|
|
|
|
|
var j = this.parent.dom.position(domCell,false,true);
|
|
|
|
|
var k = this.parent.dom.position(this.elements.table.rows[this.elements.table.rows.length-1].cells[domCell.cellIndex],true,true);
|
|
|
|
|
//console.info(k)
|
|
|
|
|
this.parent.dom.setStyle([this.phantomCell,this.phantomCellStatic],{
|
|
|
|
|
position:"absolute",
|
|
|
|
|
width :domCell.offsetWidth-1,
|
|
|
|
|
height :(k.y-j.y)-1,
|
|
|
|
|
border :"1px solid #99BBE8",
|
|
|
|
|
backgroundColor :"#E6EDF7",
|
|
|
|
|
top :j.y,
|
|
|
|
|
left :j.x
|
|
|
|
|
});
|
|
|
|
|
this.parent.dom.setStyle(this.phantomCell,{
|
|
|
|
|
border :"1px solid #ff4400",
|
|
|
|
|
backgroundColor :"orange"
|
|
|
|
|
});
|
|
|
|
|
this.parent.dom.setStyle(this.phantomCellStatic,{
|
|
|
|
|
border :"1px solid green",
|
|
|
|
|
backgroundColor :"green"
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
this.parent.dom.opacity(this.phantomCell,30);
|
|
|
|
|
this.parent.dom.opacity(this.phantomCellStatic,20);
|
|
|
|
|
this.options.target.appendChild(this.phantomCellStatic);
|
|
|
|
|
this.options.target.appendChild(this.phantomCell);
|
|
|
|
|
|
|
|
|
|
this.dropToCell = new this.parent.module.drop();
|
|
|
|
|
this.dropToCell.make();
|
|
|
|
|
this.registerCellsToDrop();
|
|
|
|
|
|
|
|
|
|
this.dragToCell=new this.parent.module.drag({
|
|
|
|
|
elements:this.phantomCell,
|
|
|
|
|
limit:"y"
|
|
|
|
|
});
|
|
|
|
|
this.dragToCell.events={
|
|
|
|
|
move :this.dropToCell.captureFromArray.args(this.dragToCell,false,true),
|
|
|
|
|
finish :function(movedUID,domCell){
|
|
|
|
|
//var insertRowIn = (this.drop.selected===false)?
|
|
|
|
|
var insertRowIn,begin;
|
|
|
|
|
var currentIndex = parseInt(domCell.cellIndex);
|
|
|
|
|
this.parent.dom.opacity(domCell,100);
|
|
|
|
|
if(this.dragToCell.moved)
|
|
|
|
|
{
|
|
|
|
|
if(this.dropToCell.selected===false)
|
|
|
|
|
{
|
|
|
|
|
var uid=this.dropToCell.arrayPositions.length-1;
|
|
|
|
|
if((this.dropToCell.position.y > this.dropToCell.arrayPositions[uid].y2))
|
|
|
|
|
{
|
|
|
|
|
insertCellIn= uid;
|
|
|
|
|
begin = false;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
insertCellIn= 0;
|
|
|
|
|
begin = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
insertCellIn= this.dropToCell.selected;
|
|
|
|
|
begin = true;
|
|
|
|
|
}
|
|
|
|
|
//var newRow=this.elements.table.insertRow((begin)?insertRowIn+1:-1);
|
|
|
|
|
var row0 = this.elements.table.rows[0];
|
|
|
|
|
var insI = (begin)?insertCellIn+1:row0.length-1;
|
|
|
|
|
//console.info("Nuevo en: "+insI);
|
|
|
|
|
//alert(insI)
|
|
|
|
|
var newCell = row0.insertCell(insI);
|
|
|
|
|
newCell.parentNode.replaceChild(domCell,newCell);
|
|
|
|
|
//console.info("Nuevo cellIndex: "+domCell.cellIndex+":"+newCell.cellIndex);
|
|
|
|
|
for(var i=1;i<this.elements.table.rows.length;i++)
|
|
|
|
|
{
|
|
|
|
|
var cll = this.elements.table.rows[i].cells[currentIndex];
|
|
|
|
|
var newLl = this.elements.table.rows[i].insertCell(insI);
|
|
|
|
|
newLl.parentNode.replaceChild(cll,newLl);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
insertCellIn= domCell.cellIndex-1;
|
|
|
|
|
begin = true;
|
|
|
|
|
}
|
|
|
|
|
this.parent.dom.remove([this.phantomCellStatic,this.imageAddCell]);
|
|
|
|
|
this.dragToCell.flush();
|
|
|
|
|
new this.parent.module.fx.move().make({
|
|
|
|
|
duration:((this.dragToCell.moved)?500:0),
|
|
|
|
|
end :this.parent.dom.position(domCell,false,true),
|
|
|
|
|
dom :this.phantomCell,
|
|
|
|
|
onFinish :function()
|
|
|
|
|
{
|
|
|
|
|
new this.parent.module.fx.fade().make({
|
|
|
|
|
duration:500,
|
|
|
|
|
end :0,
|
|
|
|
|
dom :this.phantomCell,
|
|
|
|
|
onFinish:function(){
|
|
|
|
|
this.parent.dom.remove(this.phantomCell);
|
|
|
|
|
this.inDragProcess=false;
|
|
|
|
|
}.extend(this)
|
|
|
|
|
});
|
|
|
|
|
}.extend(this)
|
|
|
|
|
});
|
|
|
|
|
}.extend(this,cellIndex,domCell)
|
|
|
|
|
};
|
|
|
|
|
this.dragToCell.make();
|
|
|
|
|
this.dragToCell.onInit(event,0);
|
|
|
|
|
this.imageAddCell = $dce("img");
|
|
|
|
|
this.imageAddCell.src=this.parent.info.images+"nc.gif";
|
|
|
|
|
this.setImageAddCell(domCell.cellIndex-1);
|
|
|
|
|
this.options.target.appendChild(this.imageAddCell);
|
|
|
|
|
return false;
|
|
|
|
|
};
|
|
|
|
|
this.dragRow=function(evt,row)
|
|
|
|
|
{
|
|
|
|
|
var event = window.event || evt;
|
|
|
|
|
if(this.inDragProcess===true || !event.ctrlKey)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
this.inDragProcess=true;
|
|
|
|
|
//alert(this.parent.event.dom(event).parentNode);
|
|
|
|
|
row = (this.parent.browser.isIE)?evt:row;
|
|
|
|
|
//alert(row)
|
|
|
|
|
//var domRow = this.elements.table.rows[row+1];
|
|
|
|
|
var domRow = this.parent.event.dom(event).parentNode;
|
|
|
|
|
//alert(domRow.rowIndex)
|
|
|
|
|
this.phantomRowStatic = $dce("div");
|
|
|
|
|
this.phantomRow = $dce("div");
|
|
|
|
|
var j = this.parent.dom.position(domRow,false,true);
|
|
|
|
|
this.parent.dom.setStyle([this.phantomRow,this.phantomRowStatic],{
|
|
|
|
|
position:"absolute",
|
|
|
|
|
width :domRow.clientWidth-1,
|
|
|
|
|
height :domRow.clientHeight-1,
|
|
|
|
|
border :"1px solid #99BBE8",
|
|
|
|
|
backgroundColor :"#E6EDF7",
|
|
|
|
|
top :j.y,
|
|
|
|
|
left :j.x
|
|
|
|
|
});
|
|
|
|
|
this.parent.dom.setStyle(this.phantomRow,{
|
|
|
|
|
border :"1px solid #99BBE8",
|
|
|
|
|
backgroundColor :"#E6EDF7"
|
|
|
|
|
});
|
|
|
|
|
this.parent.dom.setStyle(this.phantomRowStatic,{
|
|
|
|
|
border :"1px solid green",
|
|
|
|
|
backgroundColor :"green"
|
|
|
|
|
});
|
|
|
|
|
//this.parent.dom.opacity(domRow,40);
|
|
|
|
|
this.parent.dom.opacity(this.phantomRow,60);
|
|
|
|
|
this.parent.dom.opacity(this.phantomRowStatic,20);
|
|
|
|
|
this.options.target.appendChild(this.phantomRowStatic);
|
|
|
|
|
this.options.target.appendChild(this.phantomRow);
|
|
|
|
|
|
|
|
|
|
this.drop = new this.parent.module.drop();
|
|
|
|
|
this.drop.make();
|
|
|
|
|
this.registerRowsToDrop();
|
|
|
|
|
|
|
|
|
|
//this.createthis.phantomRowRow(row+1);
|
|
|
|
|
this.parent.dom.setStyle(domRow,{
|
|
|
|
|
//display:"none"
|
|
|
|
|
});
|
|
|
|
|
this.drag=new this.parent.module.drag({
|
|
|
|
|
elements:this.phantomRow,
|
|
|
|
|
limit:"x"
|
|
|
|
|
});
|
|
|
|
|
this.drag.events={
|
|
|
|
|
init :function(row){
|
|
|
|
|
|
|
|
|
|
}.extend(this,row+1),
|
|
|
|
|
move :this.drop.captureFromArray.args(this.drag,false,true),
|
|
|
|
|
finish :function(movedUID,domRow){
|
|
|
|
|
//var insertRowIn = (this.drop.selected===false)?
|
|
|
|
|
var insertRowIn,begin;
|
|
|
|
|
this.parent.dom.opacity(domRow,100);
|
|
|
|
|
if(this.drag.moved)
|
|
|
|
|
{
|
|
|
|
|
if(this.drop.selected===false)
|
|
|
|
|
{
|
|
|
|
|
var uid=this.drop.arrayPositions.length-1;
|
|
|
|
|
if((this.drop.position.y > this.drop.arrayPositions[uid].y2)/* && this.lastSelected===uid*/)
|
|
|
|
|
{
|
|
|
|
|
insertRowIn = uid;
|
|
|
|
|
begin = false;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
insertRowIn = 0;
|
|
|
|
|
begin = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
insertRowIn = this.drop.selected;
|
|
|
|
|
begin = true;
|
|
|
|
|
}
|
|
|
|
|
var newRow=this.elements.table.insertRow((begin)?insertRowIn+1:-1);
|
|
|
|
|
newRow.parentNode.replaceChild(domRow,newRow);
|
|
|
|
|
//alert(movedUID+":"+this.options.data.rows[movedUID].info.rowIndex+":"+domRow.rowIndex)
|
|
|
|
|
this.options.data.rows[movedUID].info.rowIndex=domRow.rowIndex;
|
|
|
|
|
//alert(domRow.rowIndex)
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
insertRowIn = domRow.rowIndex-1;
|
|
|
|
|
begin = true;
|
|
|
|
|
}
|
|
|
|
|
this.parent.dom.remove([this.phantomRowStatic,this.imageAddRow]);
|
|
|
|
|
//window.status=insertRowIn+":"+begin;
|
|
|
|
|
this.drag.flush();
|
|
|
|
|
//this.parent.dom.remove([this.phantomRow,this.phantomRowStatic,this.imageAddRow]);
|
|
|
|
|
new this.parent.module.fx.move().make({
|
|
|
|
|
duration:((this.drag.moved)?500:0),
|
|
|
|
|
//end :{x:this.drop.arrayPositions[insertRowIn].x1,y:this.drop.arrayPositions[insertRowIn].y1},
|
|
|
|
|
end :this.parent.dom.position(domRow,false,true),
|
|
|
|
|
dom :this.phantomRow,
|
|
|
|
|
onFinish :function(insertRowIn,begin,domRow)
|
|
|
|
|
{
|
|
|
|
|
new this.parent.module.fx.fade().make({
|
|
|
|
|
duration:500,
|
|
|
|
|
end :0,
|
|
|
|
|
dom :this.phantomRow,
|
|
|
|
|
onFinish :function(){
|
|
|
|
|
this.parent.dom.remove(this.phantomRow);
|
|
|
|
|
this.inDragProcess=false;
|
|
|
|
|
}.extend(this)
|
|
|
|
|
});
|
|
|
|
|
}.extend(this,insertRowIn,begin,domRow)
|
|
|
|
|
});
|
|
|
|
|
//alert("insertRowIn="+insertRowIn+":begin="+begin+":movedUID="+movedUID+":domRow="+domRow);
|
|
|
|
|
//alert(this.drop.arrayPositions[insertRowIn].y1);
|
|
|
|
|
}.extend(this,row,domRow)
|
|
|
|
|
};
|
|
|
|
|
this.drag.make();
|
|
|
|
|
this.drag.onInit(event,0);
|
|
|
|
|
this.imageAddRow = $dce("img");
|
|
|
|
|
this.imageAddRow.src=this.parent.info.images+"nr.gif";
|
|
|
|
|
this.setImageAddRow(domRow.rowIndex-1);
|
|
|
|
|
this.options.target.appendChild(this.imageAddRow);
|
|
|
|
|
//this.elements.table.rows[1]=this.elements.table.rows[3];
|
|
|
|
|
/*var uidMm = this.parent.event.add(this.options.target,"mousemove",function(evt)
|
|
|
|
|
{
|
|
|
|
|
evt = window.event || evt;
|
|
|
|
|
var m = this.parent.dom.mouse(evt);
|
|
|
|
|
window.status = "x="+m.x+": y="+m.y;
|
|
|
|
|
}.extend(this));
|
|
|
|
|
this.parent.event.removeFromUid(uidMm);*/
|
|
|
|
|
//alert(uidMm)
|
|
|
|
|
/*var tableCloned = this.elements.table.cloneNode(false);
|
|
|
|
|
this.parent.dom.setStyle(tableCloned,{
|
|
|
|
|
//border : "1px dashed red"
|
|
|
|
|
});
|
|
|
|
|
//alert(this.elements.table.clientWidth)
|
|
|
|
|
this.phantomRow.appendChild(tableCloned);
|
|
|
|
|
var headCloned = this.elements.table.rows[0].cloneNode(true)
|
|
|
|
|
var rowCloned = domRow.cloneNode(true);
|
|
|
|
|
this.parent.dom.opacity(headCloned,0);
|
|
|
|
|
for(var k=0;k<headCloned.cells.length;k++)
|
|
|
|
|
{
|
|
|
|
|
this.parent.dom.setStyle(headCloned.cells[k],{
|
|
|
|
|
borderWidth:0,
|
|
|
|
|
height:1
|
|
|
|
|
});
|
|
|
|
|
this.parent.dom.setStyle(rowCloned.cells[k],{
|
|
|
|
|
borderTop:"1px solid red",
|
|
|
|
|
borderBottom:"1px solid red"
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
this.parent.dom.setStyle(rowCloned.cells[0],{
|
|
|
|
|
borderLeft:"1px solid red"
|
|
|
|
|
});
|
|
|
|
|
this.parent.dom.setStyle(rowCloned.cells[rowCloned.cells.length-1],{
|
|
|
|
|
borderRight:"1px solid red"
|
|
|
|
|
});
|
|
|
|
|
tableCloned.appendChild(headCloned);
|
|
|
|
|
tableCloned.appendChild(rowCloned);
|
|
|
|
|
//this.fixColumnsWidth(domRow,rowCloned);
|
|
|
|
|
this.parent.dom.setStyle(this.phantomRow,{
|
|
|
|
|
top :j.y-headCloned.clientHeight,
|
|
|
|
|
left:j.x
|
|
|
|
|
});*/
|
|
|
|
|
|
|
|
|
|
//this.ss();
|
|
|
|
|
//domRow.style.border="2px solid red";
|
|
|
|
|
//domRow.tabIndex=3;
|
|
|
|
|
//alert(domRow.rowIndex)
|
|
|
|
|
};
|
|
|
|
|
this.setImageAddRow=function(uid,last)
|
|
|
|
|
{
|
|
|
|
|
this.parent.dom.setStyle(this.imageAddRow,{
|
|
|
|
|
position:"absolute",
|
|
|
|
|
zIndex :100,
|
|
|
|
|
top:((last)?this.drop.arrayPositions[uid].y2:this.drop.arrayPositions[uid].y1)-5,
|
|
|
|
|
left:this.drop.arrayPositions[uid].x1-1
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
this.setImageAddCell=function(uid,last)
|
|
|
|
|
{
|
|
|
|
|
this.parent.dom.setStyle(this.imageAddCell,{
|
|
|
|
|
position:"absolute",
|
|
|
|
|
zIndex :100,
|
|
|
|
|
top:((last)?this.dropToCell.arrayPositions[uid].y2:this.dropToCell.arrayPositions[uid].y1)-5,
|
|
|
|
|
left:this.dropToCell.arrayPositions[uid].x1-5
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
this.registerCellsToDrop=function(inRow)
|
|
|
|
|
{
|
|
|
|
|
var row = this.elements.table.rows[0];
|
|
|
|
|
for(var i=1;i<row.cells.length;i++)
|
|
|
|
|
{
|
|
|
|
|
//if(i!=inRow)
|
|
|
|
|
//{
|
|
|
|
|
//alert(this.elements.table.rows[i])
|
|
|
|
|
this.dropToCell.register({
|
|
|
|
|
element : row.cells[i],
|
|
|
|
|
value : i,
|
|
|
|
|
events : {
|
|
|
|
|
over:function(i)
|
|
|
|
|
{
|
|
|
|
|
//this.setImageAddRow(this.drop.lastSelected);
|
|
|
|
|
//console.info(this.dropToCell.selected);
|
|
|
|
|
if(this.dropToCell.selected!==false)
|
|
|
|
|
{
|
|
|
|
|
this.setImageAddCell(this.dropToCell.selected);
|
|
|
|
|
}
|
|
|
|
|
}.extend(this,i),
|
|
|
|
|
out :function(i)
|
|
|
|
|
{
|
|
|
|
|
if(this.dropToCell.selected===false)
|
|
|
|
|
{
|
|
|
|
|
var uid=this.dropToCell.arrayPositions.length-1;
|
|
|
|
|
if(this.dropToCell.position.y > this.dropToCell.arrayPositions[uid].y2)
|
|
|
|
|
{
|
|
|
|
|
this.setImageAddCell(uid,true);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}.extend(this,i)
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
//}
|
|
|
|
|
}
|
|
|
|
|
this.dropToCell.setArrayPositions(true);
|
|
|
|
|
};
|
|
|
|
|
this.registerRowsToDrop=function(inRow)
|
|
|
|
|
{
|
|
|
|
|
for(var i=1;i<this.elements.table.rows.length;i++)
|
|
|
|
|
{
|
|
|
|
|
//if(i!=inRow)
|
|
|
|
|
//{
|
|
|
|
|
//alert(this.elements.table.rows[i])
|
|
|
|
|
this.drop.register({
|
|
|
|
|
element : this.elements.table.rows[i],
|
|
|
|
|
value : i,
|
|
|
|
|
events : {
|
|
|
|
|
over:function(i)
|
|
|
|
|
{
|
|
|
|
|
//this.setImageAddRow(this.drop.lastSelected);
|
|
|
|
|
if(this.drop.selected!==false)
|
|
|
|
|
{
|
|
|
|
|
this.setImageAddRow(this.drop.selected);
|
|
|
|
|
}
|
|
|
|
|
}.extend(this,i),
|
|
|
|
|
out :function(i)
|
|
|
|
|
{
|
|
|
|
|
if(this.drop.selected===false)
|
|
|
|
|
{
|
|
|
|
|
var uid=this.drop.arrayPositions.length-1;
|
|
|
|
|
if(this.drop.position.y > this.drop.arrayPositions[uid].y2)
|
|
|
|
|
{
|
|
|
|
|
this.setImageAddRow(uid,true);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}.extend(this,i)
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
//}
|
|
|
|
|
}
|
|
|
|
|
this.drop.setArrayPositions(true);
|
|
|
|
|
};
|
|
|
|
|
/**
|
|
|
|
|
* {Dom} a Source
|
|
|
|
|
* {Dom} b Destiny
|
|
|
|
|
*/
|
|
|
|
|
this.fixColumnsWidth=function(a,b)
|
|
|
|
|
{
|
|
|
|
|
var h=0;
|
|
|
|
|
for(var i=0;i<a.cells.length;i++)
|
|
|
|
|
{
|
|
|
|
|
this.parent.dom.setStyle(b.cells[i],{
|
|
|
|
|
width:a.cells[i].clientWidth-2
|
|
|
|
|
});
|
|
|
|
|
h+=a.cells[i].clientWidth+2;
|
|
|
|
|
}
|
|
|
|
|
//alert(h)
|
|
|
|
|
};
|
|
|
|
|
this.createPhantomRow=function(In)
|
|
|
|
|
{
|
|
|
|
|
var domRow = this.elements.table.rows[In];
|
|
|
|
|
var ga = this.elements.table.insertRow(In);
|
|
|
|
|
for(var i=0;i<this.elements.table.rows[0].cells.length;i++)
|
|
|
|
|
{
|
|
|
|
|
var gc = ga.insertCell(i);
|
|
|
|
|
gc.innerHTML=" ";
|
|
|
|
|
}
|
|
|
|
|
ga.style.height=domRow.clientHeight;
|
|
|
|
|
};
|
|
|
|
|
this.save=function(type)
|
|
|
|
|
{
|
|
|
|
|
type = type || "json";
|
|
|
|
|
var data={};
|
|
|
|
|
data.column=this.options.data.column;
|
|
|
|
|
data.rows = [];
|
|
|
|
|
for(var i=0;i<this.options.data.rows.length;i++)
|
|
|
|
|
{
|
|
|
|
|
var row = this.options.data.rows[i];
|
|
|
|
|
var ro = {
|
|
|
|
|
info: row.info || {},
|
|
|
|
|
data: []
|
|
|
|
|
};
|
|
|
|
|
for(var j=0;j<row.data.length;j++)
|
|
|
|
|
{
|
|
|
|
|
if(row.data[j]!=null)
|
|
|
|
|
{
|
|
|
|
|
var v = this.options.data.rows[i].data[j];
|
|
|
|
|
ro.data.push(v);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
data.rows.push(ro);
|
|
|
|
|
}
|
|
|
|
|
return (type=='json')?data.toJSONString():data;
|
|
|
|
|
};
|
|
|
|
|
this.add=function()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
this.expand(this);
|
|
|
|
|
}
|
|
|
|
|
});
|