summaryrefslogtreecommitdiff
path: root/proto.js
diff options
context:
space:
mode:
Diffstat (limited to 'proto.js')
-rw-r--r--proto.js118
1 files changed, 97 insertions, 21 deletions
diff --git a/proto.js b/proto.js
index f3cece5..b8873fe 100644
--- a/proto.js
+++ b/proto.js
@@ -57,6 +57,16 @@ var BrowserDetect = {
BrowserDetect.init();
+function createId(boardid, taskid)
+{
+ return "b" + boardid + "_t" + taskid;
+}
+
+function idFromStr(str)
+{
+ return str.substring(str.search('t') + 1, str.length);
+}
+
function get_appropriate_ws_url()
{
var pcol;
@@ -95,6 +105,7 @@ try {
socket_task.onopen = function() {
document.getElementById("wstask_status").style.backgroundColor = "#40ff40";
document.getElementById("wstask_status").textContent = "TaskProto websocket connection opened ";
+ socket_task.send("observe 0;");
}
socket_task.onmessage = function got_packet(msg) {
@@ -143,30 +154,23 @@ try {
var board = document.getElementById("board_" + observeid);
if(!board) {
- //alert('missing board')
board = document.createElement("div");
-
board.name = "board";
board.setAttribute("class", "board");
- board.setAttribute("style", "background-color: black; fixed-width: 100px; min-height: 200px; margin: 4px;");
- //board.setAttribute("ondrop", "drop(this, event)");
- //board.setAttribute("ondragover", "return false");
- //board.setAttribute("draggable", true);
- //board.setAttribute("ondragstart", "drag(this, event)");
board.id = "board_" + observeid;
boards.appendChild(board);
}
if(cmd == "remove") {
- var task = document.getElementById("board_" + observeid + "task_" + id);
+ var task = document.getElementById(createId(observeid, id));
task.parentNode.removeChild(task);
}
else if(cmd == "move") {
var parent_id = msg[3];
- var task = document.getElementById("board_" + observeid + "task_" + id);
+ var task = document.getElementById(createId(observeid, id));
if(parent_id != -1) {
- var parent_task = document.getElementById("board_" + observeid + "task_" + parent_id);
- parent_task.appendChild(task);
+ var parent_task = document.getElementById(createId(observeid, parent_id));
+ parent_task.appendChild(task);
}
else {
board.appendChild(task);
@@ -178,18 +182,23 @@ try {
task.name = "task";
task.setAttribute("class", "task");
+ task.setAttribute("ondblclick", "editTitle(this, event)");
+ task.setAttribute("onclick", "showHideChildren(this, event)");
task.setAttribute("ondrop", "drop(this, event)");
task.setAttribute("ondragover", "return false");
task.setAttribute("draggable", true);
task.setAttribute("ondragstart", "drag(this, event)");
+ task.setAttribute("title", id);
- task.id = "board_" + observeid + "task_" + id;
+ task.id = createId(observeid, id);
- var taskText = document.createTextNode('[' + task.id + ']');
- taskText.id = "txt";
- task.appendChild(taskText);
+ var txtdiv = document.createElement("div");
+ txtdiv.id = createId(observeid, id) + "_txt";
+ var txt = document.createTextNode("");
+ txtdiv.appendChild(txt);
+ task.appendChild(txtdiv);
- var parent_task = document.getElementById("board_" + observeid + "task_" + parent_id);
+ var parent_task = document.getElementById(createId(observeid, parent_id));
if(parent_task) {
parent_task.appendChild(task);
@@ -200,9 +209,12 @@ try {
}
else if(cmd == "update") {
var title = msg[3];
- var task = document.getElementById("board_" + observeid + "task_" + id);
- var taskText = document.createTextNode(title);
- task.appendChild(taskText);
+ //var task = document.getElementById(createId(observeid, id));
+ var txtdiv = document.getElementById(createId(observeid, id) + "_txt");
+ txtdiv.removeChild(txtdiv.firstChild);
+
+ var txt = document.createTextNode(title);
+ txtdiv.appendChild(txt);
}
f++;
}
@@ -230,7 +242,6 @@ function deleteTask(id) {
}
function drag(target, e) {
- e.target.style.opacity = '0.4';
e.dataTransfer.setData('Text', target.id);
e.stopPropagation(); // <--- this fixes the drag target problem
}
@@ -241,5 +252,70 @@ function drop(target, e) {
var id = e.dataTransfer.getData('Text');
var task = document.getElementById(id);
- socket_task.send("move " + id.substring(12, id.length) + " " + target.id.substring(12, target.id.length) + ";");
+ socket_task.send("move " + idFromStr(id) + " " + idFromStr(target.id) + ";");
+}
+
+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";
+ }
+ }
+}
+
+//
+// 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...';
+ socket_task.send("update " + updateid + " \""+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();
}