class BootstrapTable { constructor(classDef, idDef, styleDef, attrDef) { this.table = {}; this.table.classes = new Array(); this.addTableClass('table'); this.table.style = ''; this.table.id = ''; this.table.attributes = {}; if ($.bootstrapSortable === undefined) { console.warn('bootstrap-sortable not found. BootstrapTable.useSortingTable() will not work. Failing nicely.'); } if (classDef !== "" && classDef !== undefined) { var tClass = classDef.split(' '); for (c in tClass) addTableClass(c); } if (idDef !== "" && idDef !== undefined) { this.table.id=idDef; } if (styleDef !== "" && styleDef !== undefined) { this.table.style=styleDef; } if (attrDef !== "" && attrDef !== undefined) { var tAttr = JSON.parse(attrDef); this.table.attributes = tAttr; } this.table.sortable = false; this.table.head = {}; this.table.head.classes = new Array(); this.table.head.id = ''; this.table.head.style = ''; this.table.head.attributes = {}; this.table.head.data = new Array(); this.table.body = {}; this.table.body.classes = new Array(); this.table.body.id = ''; this.table.body.style = ''; this.table.body.attributes = {}; this.table.body.rows = []; } /* * REQUIRES BOOTSTRAP-SORTABLE. */ useSortableTable() { if ($.bootstrapSortable !== undefined) { this.table.classes.push('sortable'); this.table.sortable = true; return true; } else { return false; } } useStripedTable() { this.tableClass += 'table-striped '; return true; } /* * Internal Use for modifying table object only. */ addTableClass(className) { this.table.classes.push(className); return true; } addTableAttribute(key, value) { this.table.attributes[key]=value; return true; } setTableID(id) { this.table.id = id; return true; } setTableStyle(style) { this.table.style = style; return true; } // Column (Header) Modifiers. addColumn(type, name, format) { if (name == undefined || type == undefined) { console.error('addColumn: Missing Parameters'); return false; } var cFormat = (format !== undefined && format !== ""?format:""); var tmp = {}; tmp.classes=new Array(); tmp.id=''; tmp.style=''; tmp.attributes={}; tmp.value=name; tmp.format=cFormat; tmp.type=type; this.table.head.data.push(tmp); return this.table.head.data.length-1; } setColumnID(columnIdx, ID) { if (columnIdx === undefined || ID === undefined) { console.error('setColumnID: Missing Parameters'); return false; } if (this.table.head.data[columnIdx] === undefined) { console.error('setColumnID: columnIdx '+columnIdx+' undefined.'); return false; } this.table.head.data[columnIdx].id = ID; return true; } addColumnClass(columnIdx, className) { if (columnIdx === undefined || ID === undefined) { console.error('addColumnClass: Missing Parameters'); return false; } if (this.table.head.data[columnIdx] === undefined) { console.error('addColumnClass: columnIdx '+columnIdx+' undefined.'); return false; } if (className == "") { return false; } this.table.head.data[columnIdx].classes.push(className); return true; } setColumnStyle(columnIdx, style) { if (columnIdx === undefined || ID === undefined) { console.error('setColumnStyle: Missing Parameters'); return false; } if (this.table.head.data[columnIdx] === undefined) { console.error('setColumnStyle: columnIdx '+columnIdx+' undefined.'); return false; } this.table.head.data[columnIdx].style = style; return true; } setColumnAttribute(columnIdx, key, value) { if (columnIdx === undefined || key === undefined || value === undefined) { console.error('setColumnAttribute: Missing Parameters'); return false; } if (this.table.head.data[columnIdx] === undefined) { console.error('setColumnAttribute: columnIdx '+columnIdx+' undefined.'); return false; } this.table.head.data[columnIdx].attributes[key] = value; return true; } //Body addRow() { var tmp = {}; tmp.classes=new Array(); tmp.id=''; tmp.style=''; tmp.attributes={}; tmp.cells = []; this.table.body.rows.push(tmp); return this.table.body.rows.length-1; } //Alias for Google Table morphing addRows(count) { return this.addRow(); } setRowID(rowIdx, ID) { if (rowIdx === undefined || ID === undefined) { console.error('setRowID: Missing Parameters'); return false; } if (this.table.body.rows[rowIdx] === undefined) { console.error('setRowID: rowIdx '+rowIdx+' undefined.'); return false; } this.table.body.rows[rowIdx].id = ID; return true; } addRowClass(rowIdx, className) { if (rowIdx === undefined || className === undefined) { console.error('addRowClass: Missing Parameters'); return false; } if (this.table.body.rows[rowIdx] === undefined) { console.error('addRowClass: rowIdx '+rowIdx+' undefined.'); return false; } if (className == "") { return false; } this.table.body.rows[rowIdx].classes.push(className); return true; } setRowStyle(rowIdx, style) { if (rowIdx === undefined || style === undefined) { console.error('setRowStyle: Missing Parameters'); return false; } if (this.table.body.rows[rowIdx] === undefined) { console.error('setRowStyle: rowIdx '+rowIdx+' undefined.'); return false; } this.table.body.rows[rowIdx].style = style; return true; } setRowAttribute(rowIdx, key, value) { if (rowIdx === undefined || key === undefined || value === undefined) { console.error('setRowAttribute: Missing Parameters'); return false; } if (this.table.body.rows[rowIdx] === undefined) { console.error('setRowAttribute: rowIdx '+rowIdx+' undefined.'); return false; } this.table.body.rows[rowIdx].attributes[key] = value; return true; } setCell(rowIdx, columnIdx, value) { if (rowIdx === undefined || columnIdx === undefined || value === undefined) { if (rowIdx === undefined) console.error('setCell: Missing Parameters - row'); if (columnIdx === undefined) console.error('setCell: Missing Parameters - column'); if (value === undefined) console.error('setCell: Missing Parameters - value @ ('+rowIdx+','+columnIdx+')'); return false; } if (this.table.body.rows[rowIdx] === undefined) { console.error('setCell: cellIdx '+cellIdx+' undefined.'); return false; } var tmp = {}; tmp.classes=new Array(); tmp.id=''; tmp.style=''; tmp.attributes={}; tmp.value=value; this.table.body.rows[rowIdx].cells[columnIdx] = tmp; return true; } setCellID(rowIdx, columnIdx, ID) { if (rowIdx === undefined || columnIdx === undefined || ID === undefined) { console.error('setCellID: Missing Parameters'); return false; } if (this.table.body.rows[rowIdx] === undefined) { console.error('setCellID: rowIdx '+rowIdx+' undefined.'); return false; } if (this.table.body.rows[rowIdx].cells[columnIdx] === undefined) { console.error('setCellID: columnIdx '+columnIdx+' undefined.'); return false; } this.table.body.rows[rowIdx].cells[columnIdx].id = ID; return true; } addCellClass(rowIdx, columnIdx, className) { if (rowIdx === undefined || className === undefined || className == undefined) { console.error('addCellClass: Missing Parameters'); return false; } if (this.table.body.rows[rowIdx] === undefined) { console.error('addCellClass: rowIdx '+rowIdx+' undefined.'); return false; } if (this.table.body.rows[rowIdx].cells[columnIdx] === undefined) { console.error('addCellClass: columnIdx '+rowIdx+' undefined.'); return false; } if (className == "") { return false; } this.table.body.rows[rowIdx].cells[columnIdx].classes.push(className); return true; } setCellStyle(rowIdx, columnIdx, style) { if (rowIdx === undefined || columnIdx === undefined || style === undefined) { console.error('setCellStyle: Missing Parameters'); return false; } if (this.table.body.rows[rowIdx] === undefined) { console.error('setCellStyle: rowIdx '+rowIdx+' undefined.'); return false; } if (this.table.body.rows[rowIdx].cells[columnIdx] === undefined) { console.error('setCellStyle: columnIdx '+rowIdx+' undefined.'); return false; } this.table.body.rows[rowIdx].cells[columnIdx].style = style; return true; } setCellAttribute(rowIdx, columnIdx, key, value) { if (rowIdx === undefined || columnIdx === undefined || key === undefined || value === undefined) { console.error('setCellAttribute: Missing Parameters'); return false; } if (this.table.body.rows[rowIdx] === undefined) { console.error('setCellAttribute: rowIdx '+rowIdx+' undefined.'); return false; } if (this.table.body.rows[rowIdx].cells[columnIdx] === undefined) { console.error('setCellAttribute: columnIdx '+rowIdx+' undefined.'); return false; } this.table.body.rows[rowIdx].cells[columnIdx].attributes[key] = value; return true; } //General draw(id, options) { var oDef = (options !== undefined && options !== ''?options:''); //Santizing mostly.. if (options.sortColumn !== undefined) { this.addTableClass('sortable'); this.table.sortable = true; if (options.sortAscending !== undefined) { if (options.sortAscending === true) { this.setColumnAttribute(options.sortColumn, "data-defaultsort", "asc"); } else { this.setColumnAttribute(options.sortColumn, "data-defaultsort", "desc"); } } else { this.setColumnAttribute(options.sortColumn, "data-defaultsort", "asc"); } } var html = ''; html += '
'; } } for (var h=0; h | '+(b+1)+' | '; } } var row = this.table.body.rows[b]; for (var c=0; c
---|