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 += "" + col.name + " | ";
}
}
h += "
";
h += "";
h += "
";
$(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:
*/