L.provide('OML.log_table', ["jquery.dataTables.js"], function () { OML['log_table'] = function(opts){ this.opts = opts; this.init = function(opts) { /* create table template */ var base_el = opts.base_el || '#table' var tid = base_el.substr(1) + "_t"; var tbid = base_el.substr(1) + "_tb"; var h = ""; h += ""; var schema = this.schema = opts.schema; if (schema) { for (var i = 0; i < schema.length; i++) { var col = schema[i]; h += ""; } } h += ""; h += ""; h += "
" + col.name + "
"; $(base_el).prepend(h); this.table_el = $('#' + tid); this.tbody_el = $('#' + tbid); // var b = $(base_el) // b.dataTable(); this.dataTable = this.table_el.dataTable(); var data = opts.data; if (data) this.update(data); }; this.update = function(data) { this.render_rows(data, false); }; /* Add rows */ this.render_rows = function(rows, update) { if (this.dataTable) { this.dataTable.fnAddData(rows); // var rcnt = rows.length; // for (var i = 0; i < rcnt; i++) { // var row = rows[i]; // this.dataTable.fnAddData(row) // } return; } var rcnt = rows.length; if (rcnt <= 0) { return; } var ccnt = rows[0].length; var tbody = this.table_el; var oid = Math.floor(Math.random() * 10000001); for (var i = 0; i < rcnt; i++) { var row = rows[i]; var row_class = (i % 2) == 1 ? "odd" : "even"; /*** * We may want to use one of the incoming columns as a record id which would allow * us to update a row, nstead of just adding it. * * TODO: Implement var rid = "tr"; var record_id = tdata['record_id']; if (typeof(record_id) == "number") { rid = rid + row[record_id]; } else { rid = rid + (oid + i); } **/ rid = 'tr' + (oid + i); var labels = opts.labels; var tr = ""; var schema = this.schema; for (var j = 0; j < ccnt; j++) { tr += "" + row[j] + ""; } tr += "" tbody.prepend(tr); if (update) { $('#' + rid).effect('highlight', {}, 1000); } } }; this.init(opts); } }); /* Local Variables: mode: Javascript tab-width: 2 indent-tabs-mode: nil End: */