diff --git a/www/extras/assetManager/assetManager.js b/www/extras/assetManager/assetManager.js new file mode 100644 index 000000000..b1edb0765 --- /dev/null +++ b/www/extras/assetManager/assetManager.js @@ -0,0 +1,190 @@ +/* + WebGUI Asset Manager Table + based upon the sortable table by Matt Kruse + http://www.mattkruse.com/ +*/ + +var sort_object; +var sort_column; +var reverse=0; + +// Constructor for AssetManager object +function AssetManager() { + // Properties + this.name = 'assetManager'; + this.sortcolumn=""; + this.dosort=true; + this.tablecontainsforms=false; + // Methods + this.AddLine = AssetManager_AddLine; + this.AddColumn = AssetManager_AddColumn; + this.AddButton = AssetManager_AddButton; + this.Write = AssetManager_Write; + this.SortRows = AssetManager_SortRows; + this.AddLineSortData = AssetManager_AddLineSortData; + // Structure + this.Columns = new Array(); + this.Lines = new Array(); + this.Buttons = new Array(); + } +// Add a line to the grid +function AssetManager_AddLine() { + var index = this.Lines.length; + this.Lines[index] = new Array(); + for (var i=0; i tag for this column (ex: BGCOLOR="red") +// align= Alignment of data in cells +// type = type of data in this column (numeric, money, etc) - default alphanumeric +function AssetManager_AddColumn(name,td,align,type) { + var index = this.Columns.length; + this.Columns[index] = new Object; + this.Columns[index].name = name; + this.Columns[index].td = td; + this.Columns[index].align=align; + this.Columns[index].type = type; + if (type == "form") { + this.tablecontainsforms=true; + } + } +// Print out the table +function AssetManager_Write() { + var open_div = ""; + var close_div = ""; + document.write('
'); + document.write(''); + document.write(''); + for (var i=0; i'+this.Columns[i].name+''); + } + document.write(''); + for (var i=0; i'); + for (var j=0; j"; + close_div= ""; + + document.write(""); + } + document.write(""); + } + document.write('
"+open_div+this.Lines[i][j].text+close_div+"
'); + for (var j=0; j'); + } + document.write(''); +} + +// Sort the table and re-write the results to the existing table +function AssetManager_SortRows(table,column) { + sort_object = table; + if (!sort_object.dosort) { return; } + if (sort_column == column) { reverse=1-reverse; } + else { reverse=0; } + sort_column = column; + + // Save all form column contents into a temporary object + // This is a nasty hack to keep the current values of form elements intact + if (table.tablecontainsforms) { + var iname="1"; + var tempcolumns = new Object(); + for (var i=0; i parseFloat(b[column].data) ) { return 1; } + return 0; + } + ); + } + else if (table.Columns[column].type == "money") { + // Sort by Money + table.Lines.sort( function by_name(a,b) { + if (parseFloat(a[column].data.substring(1)) < parseFloat(b[column].data.substring(1)) ) { return -1; } + if (parseFloat(a[column].data.substring(1)) > parseFloat(b[column].data.substring(1)) ) { return 1; } + return 0; + } + ); + } + else if (table.Columns[column].type == "date") { + // Sort by Date + table.Lines.sort( function by_name(a,b) { + if (Date.parse(a[column].data) < Date.parse(b[column].data) ) { return -1; } + if (Date.parse(a[column].data) > Date.parse(b[column].data) ) { return 1; } + return 0; + } + ); + } + + else { + // Sort by alphanumeric + table.Lines.sort( function by_name(a,b) { + if (a[column].data+"" < b[column].data+"") { return -1; } + if (a[column].data+"" > b[column].data+"") { return 1; } + return 0; + } + ); + } + + if (reverse) { table.Lines.reverse(); } + for (var i=0; i