@@ -0,0 +1,167 @@
1+//refactor this into a client library
2+var socket = new WebSocket("ws://localhost:8888");
3+socket.onopen = function(event) {
4+ console.log("connected");
5+ setStatus("connected");
7+socket.onerror = function(event) {
8+ console.log("error: " + event);
10+socket.onmessage = function (event) {
11+ console.log("message received: " + event.data);
12+ var msg = JSON.parse(event.data);
15+socket.onclose = function(event) {
16+ console.log("conn closed: " + event);
17+ setStatus("disconnected");
20+function setStatus(text)
22+ var newtext = document.createTextNode(text);
23+ var statusnode = document.getElementById("status");
24+ while( statusnode.firstChild ) {
25+ statusnode.removeChild( statusnode.firstChild );
27+ statusnode.appendChild(newtext);
30+function execTutorialD()
32+ var tutd = document.getElementById("tutd").value;
33+ socket.send("executetutd:" + tutd);
37+function handleResponse(message)
39+ var relation = message["displayrelation"];
40+ var acknowledged = message["acknowledged"];
41+ var error = message["displayerror"];
44+ var reltable = generateRelation(relation);
45+ var existingtable = document.getElementById("relationresult");
46+ while(existingtable.firstChild)
48+ existingtable.removeChild(existingtable.firstChild);
50+ reltable.id = "relationresult";
51+ existingtable.parentNode.replaceChild(reltable, existingtable);
60+ message="acknowledged";
66+ document.getElementById("resultstatus").innerHTML = message;
69+function generateRelation(relation)
71+ var table = document.createElement("table");
73+ var headers = generateRelationHeader(relation[0]);
74+ var body = generateRelationBody(relation[1]);
76+ table.appendChild(headers);
77+ table.appendChild(body);
82+function generateRelationHeader(header)
84+ var thead = document.createElement("thead");
85+ var headerrow = document.createElement("tr");
86+ for(var hindex=0; hindex < header.length; hindex++)
88+ var th = document.createElement("th");
89+ var attrtype = generateAtomType(header[hindex]);
90+ th.appendChild(attrtype);
91+ headerrow.appendChild(th);
93+ thead.appendChild(headerrow);
97+function generateAtomType(attr)
99+ var atomType = attr[1]["tag"];
100+ var attrName = attr[0];
101+ var element = document.createElement("span");
102+ element.textContent = attrName + "::";
103+ if(atomType == "AtomType")
105+ element.textContent += attr[1]["contents"]["serialrep"][0][2];
107+ else if (atomType == "RelationAtomType")
109+ var table = document.createElement("table");
110+ element.appendChild(table);
111+ var thead = document.createElement("thead");
112+ element.appendChild(thead);
113+ var tr = document.createElement("tr");
114+ thead.appendChild(tr);
115+ var relattrs = attr[1]["contents"];
116+ for(var attrindex = 0; attrindex < relattrs.length; attrindex++)
118+ var th = document.createElement("th");
119+ var relattrNode = generateAtomType(relattrs[attrindex]);
120+ th.appendChild(relattrNode);
126+ element.textContent = "unknown";
131+function generateRelationBody(body)
133+ var bodyrows = body["asList"]
134+ var tbody = document.createElement("tbody");
135+ for(var rindex=0; rindex < bodyrows.length; rindex++)
137+ var tablerow = document.createElement("tr");
138+ var bodyrow = bodyrows[rindex];
139+ for(var atomindex=0; atomindex < bodyrow[1].length; atomindex++)
141+ var td = document.createElement("td");
142+ var atomNode = generateAtom(bodyrow[1][atomindex]);
143+ td.appendChild(atomNode);
144+ tablerow.appendChild(td);
146+ tbody.appendChild(tablerow);
151+function generateAtom(atom)
153+ var element = document.createElement("span");
154+ var atomType = atom["type"]["tag"];
156+ if(atomType == "RelationAtomType")
158+ var rel = generateRelation(atom["val"]);
159+ element.appendChild(rel);
163+ element.textContent = atom["val"];