summaryrefslogtreecommitdiff
path: root/src/ws/view.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/ws/view.js')
-rw-r--r--src/ws/view.js151
1 files changed, 151 insertions, 0 deletions
diff --git a/src/ws/view.js b/src/ws/view.js
new file mode 100644
index 0000000..5f98587
--- /dev/null
+++ b/src/ws/view.js
@@ -0,0 +1,151 @@
+/* -*- Mode: javascript; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set et sw=2 ts=2: */
+
+/*
+function createNode()
+{
+ var node = new Node();
+ node.id = 42;
+ node.dump = function() {
+ alert(this.id);
+ }
+}
+*/
+
+function getNode(subscribeid, id)
+{
+
+}
+
+function updateNode(subscribeid, id, name, value)
+{
+}
+
+function getBoard(subscribeid)
+{
+ var board = document.getElementById("board_" + subscribeid);
+ if(!board) {
+ board = document.createElement("div");
+ board.name = "board";
+ board.setAttribute("class", "board");
+ board.id = "board_" + subscribeid;
+ boards.appendChild(board);
+ }
+
+ return board;
+}
+
+//////////////////////////////////////////////////////
+//////////////////////////////////////////////////////
+
+function clear() {
+ document.getElementById("input_data").value = "";
+}
+
+function deleteNode(id) {
+ remove(id);
+}
+
+function drag(target, e) {
+ e.dataTransfer.setData('Text', target.id);
+ e.stopPropagation(); // <--- this fixes the drag target problem
+}
+
+function drop(target, e) {
+ e.preventDefault();
+ e.stopPropagation();
+
+ var id = e.dataTransfer.getData('Text');
+ var node = document.getElementById(id);
+ move(idFromStr(id), idFromStr(target.id));
+}
+
+function subscribeMe(target, e)
+{
+ e.stopPropagation();
+ subscribe(target.title);
+}
+
+function unsubscribeMe(target, e)
+{
+ e.stopPropagation();
+ unsubscribe(target.title);
+}
+
+function showHideChildren(target, e)
+{
+ e.stopPropagation();
+ updateid = idFromStr(target.id);
+ if(target.style.backgroundColor != "red") {
+ target.style.backgroundColor = "red";
+ for(var i = 1; i < target.childNodes.length; i++) {
+ target.childNodes[i].style.display = "none";
+ }
+ } else {
+ target.style.backgroundColor = "grey";
+ for(var i = 1; i < target.childNodes.length; i++) {
+ target.childNodes[i].style.display = "block";
+ }
+ }
+}
+
+function node_submit() {
+ var data = document.getElementById("input_node_data");
+ transmit(data.value);
+ data.value = "";
+}
+
+function node_submit_KeyUpHandler(target, e)
+{
+ if(e.which == 13) { // enter
+ node_submit();
+ }
+}
+
+//
+// Butt ugly.. but hey! it works...
+//
+var updateid;
+var divtxt;
+var oldtxt;
+var oldtitle;
+function onKeyUpHandler(target, e)
+{
+ if(e.which == 13) { // enter
+ divtxt.removeChild(target);
+ oldtxt.nodeValue = 'updating...';
+ update(updateid, "title", target.value);
+ }
+ if(e.which == 27) { // escape
+ divtxt.removeChild(target);
+ oldtxt.nodeValue = oldtitle;
+ }
+}
+
+function onLostFocusHandler(target, e)
+{
+ if(target.value == oldtitle) {
+ divtxt.removeChild(target);
+ oldtxt.nodeValue = oldtitle;
+ }
+}
+
+function editTitle(target, e)
+{
+ e.stopPropagation();
+ updateid = idFromStr(target.id);
+ if(updateid < 10) return;
+ var inp = document.createElement("input");
+ var txtdiv = document.getElementById(target.id + "_txt");
+ divtxt = txtdiv;
+ oldtxt = txtdiv.firstChild;
+ oldtitle = oldtxt.nodeValue;
+ oldtxt.nodeValue = "";
+ inp.setAttribute("onkeyup", "onKeyUpHandler(this, event)");
+ inp.setAttribute("onblur", "onLostFocusHandler(this, event)");
+ inp.setAttribute("style", "border: inherit; padding: inherit; margin: inherit; background: inherit;");
+ inp.value = oldtitle;
+ lineedit = inp;
+ txtdiv.appendChild(inp);
+ inp.focus();
+}