isundil 9 жил өмнө
parent
commit
42caae6df6
5 өөрчлөгдсөн 106 нэмэгдсэн , 0 устгасан
  1. 17 0
      samples/simple_table.html
  2. 76 0
      src/table.js
  3. 6 0
      src/utils.js
  4. 4 0
      table4js.js
  5. 3 0
      table4js.min.js

+ 17 - 0
samples/simple_table.html

@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="UTF-8"/>
+		<title>Simple table</title>
+	</head>
+	<body>
+		<h1>Sample 1</h1>
+		<pre>{ "a": [ 1, 2, 3 ], "b": [2, 3, 4]}</pre>
+		<div id="container"></div>
+		
+		<script src="../table4JS.js"></script>
+		<script>
+var table1 = makeTable(document.getElementById("container"), { "a": [ 1, 2, 3 ], "b": [2, 3, 4]});
+		</script>
+	</body>
+</html>

+ 76 - 0
src/table.js

@@ -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;
+}
+

+ 6 - 0
src/utils.js

@@ -0,0 +1,6 @@
+function _isArray(a) {
+	if (Array.isArray) {
+		return Array.isArray(a);
+	}
+	return a instanceof Array;
+}

+ 4 - 0
table4js.js

@@ -0,0 +1,4 @@
+function Table(data,opts){this.opts=opts;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};function _isArray(a){if(Array.isArray)return Array.isArray(a);return a instanceof Array};

+ 3 - 0
table4js.min.js

@@ -0,0 +1,3 @@
+function Table(b,a){this.opts=a;this.setData(b)}Table.prototype.makeCell=function(b){var a=document.createElement("td");a.textContent=b;return a};
+Table.prototype.draw=function(b){for(var a=document.createElement("table"),c=document.createElement("tr"),d=[],e=0;e<this.header.length;e++)c.innerHTML+="<td>"+this.header[e]+"</td>";for(e=0;e<this.data.length;e++)for(var f=0;f<this.data[e].length;++f){var g=this.makeCell(this.data[e][f]);if(0===f){var h=document.createElement("tr");h.appendChild(g);d.push(h)}else d[e].appendChild(g)}a.innerHTML="<thead>"+c.outerHTML+"</thead><tbody>";for(f=0;f<this.data.length;++f)a.innerHTML+=d[f].outerHTML;a.innerHTML+=
+"</thead>";b.appendChild(a)};Table.prototype.setDataObjHeadToArray=function(b){var a=void 0;this.header=[];this.data=[];for(var c in b){if(!_isArray(b[c]))throw{};if(void 0===a)for(var a=b[c].length,d=0;d<a;++d)this.data.push([]);else if(a!==b[c].length)throw{};for(d=0;d<a;++d)this.data[d].push(b[c][d]);this.header.push(c)}};Table.prototype.setData=function(b){try{this.setDataObjHeadToArray(b)}catch(a){}};function makeTable(b,a,c){a=new Table(a,c);a.draw(b);return a};function _isArray(b){return Array.isArray?Array.isArray(b):b instanceof Array};