summaryrefslogtreecommitdiff
path: root/src/ws/handler.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/ws/handler.js')
-rw-r--r--src/ws/handler.js101
1 files changed, 101 insertions, 0 deletions
diff --git a/src/ws/handler.js b/src/ws/handler.js
new file mode 100644
index 0000000..906a03b
--- /dev/null
+++ b/src/ws/handler.js
@@ -0,0 +1,101 @@
+/* -*- Mode: javascript; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set et sw=2 ts=2: */
+
+
+document.addEventListener("connectEvent", connectEventHandler, false);
+function connectEventHandler(e)
+{
+ document.getElementById("wsnode_status").style.backgroundColor = "#40ff40";
+ document.getElementById("wsnode_status").textContent = "NodeProto websocket connection opened ";
+
+ //login("foobar", "hundemad");
+ //subscribe(0);
+}
+
+document.addEventListener("disconnectEvent", disconnectEventHandler, false);
+function disconnectEventHandler(e)
+{
+ document.getElementById("wsnode_status").style.backgroundColor = "#ff4040";
+ document.getElementById("wsnode_status").textContent = "NodeProto websocket connection CLOSED ";
+}
+
+document.addEventListener("removeEvent", removeEventHandler, false);
+function removeEventHandler(e)
+{
+ var subscribeid = e.detail.subscribeid;
+ var id = e.detail.id;
+
+ var node = findNode(id, subscribeid);
+ if(node.parent) node.parent.removeChild(node);
+}
+
+document.addEventListener("moveEvent", moveEventHandler, false);
+function moveEventHandler(e)
+{
+ var subscribeid = e.detail.subscribeid;
+ var id = e.detail.id;
+ var parentid = e.detail.parentid;
+
+ var node = findNode(id, subscribeid);
+ var new_parent = findNode(parentid, subscribeid);
+ if(node != null && new_parent != null) new_parent.addChild(node);
+}
+
+document.addEventListener("createEvent", createEventHandler, false);
+function createEventHandler(e)
+{
+ var subscribeid = e.detail.subscribeid;
+ var id = e.detail.id;
+ var parentid = e.detail.parentid;
+
+ var node = new Node(id, subscribeid);
+ node.create();
+
+ if(parentid == -1) {
+ nodes.push(node);
+ var board = getBoard(subscribeid);
+ board.appendChild(node.element);
+ return;
+ }
+
+ var parent = findNode(parentid, subscribeid);
+ if(parent != null) {
+ parent.addChild(node);
+ }
+
+}
+
+document.addEventListener("updateEvent", updateEventHandler, false);
+function updateEventHandler(e)
+{
+ var subscribeid = e.detail.subscribeid;
+ var id = e.detail.id;
+ var name = e.detail.name;
+ var value = e.detail.value;
+
+ var node = findNode(id, subscribeid);
+ if(node == null) return;
+
+ node.setAttribute(name, value);
+}
+
+///////
+//////
+/////
+////
+///
+//
+
+document.addEventListener("messageEvent", messageEventHandler, false);
+function messageEventHandler(e) {
+ LogEvent(e.detail.time.toString()+": "+e.detail.message
+ );
+}
+
+// log event in console
+function LogEvent(msg) {
+ var log = document.getElementById("log");
+ log.textContent += msg + "\n";
+ var ot = log.scrollHeight - log.clientHeight;
+ if (ot > 0) log.scrollTop = ot;
+}