102 lines
3.0 KiB
JavaScript
102 lines
3.0 KiB
JavaScript
|
|
function DynamicTable(table, columns, loader, adder = null, deleter = null)
|
|
{
|
|
if (!table.dtable)
|
|
{
|
|
table.dtable = {};
|
|
table.dtable.loader = loader;
|
|
table.dtable.columns = columns;
|
|
table.dtable.adder = adder;
|
|
table.dtable.deleter = deleter;
|
|
table.dtable.lAdd = []
|
|
|
|
table.addRow = function(){
|
|
var ap = [];
|
|
|
|
for (var n=0;n<this.dtable.lAdd.length;n++)
|
|
{
|
|
ap.push(this.dtable.lAdd[n].value);
|
|
}
|
|
|
|
return this.dtable.adder(ap);
|
|
}
|
|
|
|
table.create = function(){
|
|
CLEAN(this);
|
|
|
|
var thead = CE("thead", this);
|
|
this.trhead = CE("tr", thead);
|
|
this.trfilter = CE("tr", thead);
|
|
this.tradd = CE("tr", thead);
|
|
|
|
for (var n=0;n<this.dtable.columns.length;n++)
|
|
{
|
|
var col = CE("td", this.trhead);
|
|
col.innerText = this.dtable.columns[n].Label;
|
|
|
|
var fcol = CE("td", this.trfilter);
|
|
if (this.dtable.columns[n].ToFilter)
|
|
{
|
|
var ia = CE("input", fcol);
|
|
}
|
|
|
|
if (this.dtable.adder)
|
|
{
|
|
var acol = CE("td", this.tradd);
|
|
if (this.dtable.columns[n].ToAdd)
|
|
{
|
|
var ia = CE("input", acol);
|
|
ia.id = this.dtable.columns[n].Field;
|
|
|
|
this.dtable.lAdd.push(ia);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
CE("td",this.trhead);
|
|
if (this.dtable.adder)
|
|
{
|
|
var ab = CE("button", CE("td",this.tradd));
|
|
ab.onclick = function(){ table.addRow(); };
|
|
ab.innerText = "+";
|
|
}
|
|
|
|
var tbody = CE("tbody", this);
|
|
this.tbody = tbody;
|
|
}
|
|
|
|
table.load = function(){
|
|
CLEAN(this.tbody);
|
|
|
|
var dtable = this;
|
|
|
|
var rows = this.dtable.loader();
|
|
for (var n=0;n<rows.length;n++)
|
|
{
|
|
var tr = CE("tr",this.tbody);
|
|
|
|
tr.dtRow = rows[n]
|
|
tr.onclick = function(){ dtable.selectedRow = this.dtRow; dtable.selectedRowChanged(dtable.selectedRow); };
|
|
|
|
for (var c=0;c<this.dtable.columns.length;c++)
|
|
{
|
|
var td = CE("td",tr);
|
|
td.innerText = rows[n][this.dtable.columns[c].Field];
|
|
tr.onclick = function(){ dtable.selectedRow = this.dtRow; dtable.selectedRowChanged(dtable.selectedRow); };
|
|
}
|
|
}
|
|
}
|
|
|
|
table.selectedRowChanged = function(selectedRow){}
|
|
|
|
}
|
|
|
|
table.create();
|
|
table.load();
|
|
|
|
return table;
|
|
}
|
|
|
|
|