|
|
@@ -0,0 +1,76 @@
|
|
|
+
|
|
|
+function Table(data, opts) {
|
|
|
+ this.opts = opts; // TODO load defaults
|
|
|
+ this.setData(data);
|
|
|
+}
|
|
|
+
|
|
|
+Table.prototype.makeCell = function(data) {
|
|
|
+ var td = document.createElement("td");
|
|
|
+ td.textContent = data;
|
|
|
+ return td;
|
|
|
+}
|
|
|
+
|
|
|
+Table.prototype.draw = function(container) {
|
|
|
+ var table = document.createElement("table")
|
|
|
+ ,header = document.createElement("tr")
|
|
|
+ ,lis = [];
|
|
|
+
|
|
|
+ for (var i=0; i < this.header.length; i++) {
|
|
|
+ header.innerHTML += "<td>" +this.header[i] +"</td>";
|
|
|
+ }
|
|
|
+ for (var i =0; i < this.data.length; i++) {
|
|
|
+ for (var j =0; j < this.data[i].length; ++j) {
|
|
|
+ var td = this.makeCell(this.data[i][j]);
|
|
|
+
|
|
|
+ if (j === 0) {
|
|
|
+ var tr = document.createElement("tr");
|
|
|
+
|
|
|
+ tr.appendChild(td);
|
|
|
+ lis.push(tr);
|
|
|
+ } else {
|
|
|
+ lis[i].appendChild(td);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ table.innerHTML = "<thead>"+header.outerHTML +"</thead><tbody>";
|
|
|
+ for (var j =0; j < this.data.length; ++j) {
|
|
|
+ table.innerHTML += lis[j].outerHTML;
|
|
|
+ }
|
|
|
+ table.innerHTML += "</thead>"
|
|
|
+ container.appendChild(table);
|
|
|
+}
|
|
|
+
|
|
|
+Table.prototype.setDataObjHeadToArray = function(data) {
|
|
|
+ var nbRow = undefined;
|
|
|
+
|
|
|
+ this.header = [];
|
|
|
+ this.data = [];
|
|
|
+ for (var i in data) {
|
|
|
+ if (!_isArray(data[i]))
|
|
|
+ throw { };
|
|
|
+ if (nbRow === undefined) {
|
|
|
+ nbRow = data[i].length;
|
|
|
+ for (var j =0; j < nbRow; ++j) {
|
|
|
+ this.data.push([]);
|
|
|
+ }
|
|
|
+ } else if (nbRow !== data[i].length) {
|
|
|
+ throw { };
|
|
|
+ }
|
|
|
+ for (var j =0; j < nbRow; ++j) {
|
|
|
+ this.data[j].push(data[i][j]);
|
|
|
+ }
|
|
|
+ this.header.push(i);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+Table.prototype.setData = function(data) {
|
|
|
+ try { this.setDataObjHeadToArray(data); } catch (e) {}
|
|
|
+}
|
|
|
+
|
|
|
+function makeTable(container, data, opts) {
|
|
|
+ var table = new Table(data, opts);
|
|
|
+
|
|
|
+ table.draw(container);
|
|
|
+ return table;
|
|
|
+}
|
|
|
+
|