/* -*- Mode: javascript; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set et sw=2 ts=2: */ var BrowserDetect = { init: function () { this.browser = this.searchString(this.dataBrowser) || "An unknown browser"; this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "an unknown version"; this.OS = this.searchString(this.dataOS) || "an unknown OS"; }, searchString: function (data) { for (var i=0;i 0 && msg.data[c - 1] != '\\') instring = !instring; if(msg.data[c] == ';' && instring == false) { idx++; msgs[idx] = ''; } if(msg.data[c] != ';' || instring == true) msgs[idx] += msg.data[c]; } f = 0; while (f < msgs.length - 1) { var msg = new Array(); instring = false; idx = 0; // strip padding and trailing whitespace. var msgstr = msgs[f].replace(/^\s+||\s+$/g,''); msg[idx] = ''; for(c = 0; c < msgstr.length; c++) { if(msgstr[c] == '"' && c > 0 && msgstr[c - 1] != '\\') { instring = !instring; continue; } if(msgstr[c] == ' ' && instring == false) { msg[idx] = msg[idx].replace("\\\\","\\").replace("\\\"","\""); idx++; msg[idx] = ''; } if(msgstr[c] != ' ' || instring == true) msg[idx] += msgstr[c]; } var observeid = msg[0]; var cmd = msg[1]; var id = msg[2]; 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); task.parentNode.removeChild(task); } else if(cmd == "move") { var parent_id = msg[3]; var task = document.getElementById("board_" + observeid + "task_" + id); if(parent_id != -1) { var parent_task = document.getElementById("board_" + observeid + "task_" + parent_id); parent_task.appendChild(task); } else { board.appendChild(task); } } else if(cmd == "create") { var parent_id = msg[3]; var task = document.createElement("div"); task.name = "task"; task.setAttribute("class", "task"); task.setAttribute("ondrop", "drop(this, event)"); task.setAttribute("ondragover", "return false"); task.setAttribute("draggable", true); task.setAttribute("ondragstart", "drag(this, event)"); task.id = "board_" + observeid + "task_" + id; var taskText = document.createTextNode('[' + task.id + ']'); taskText.id = "txt"; task.appendChild(taskText); var parent_task = document.getElementById("board_" + observeid + "task_" + parent_id); if(parent_task) { parent_task.appendChild(task); } else { board.appendChild(task); } } else if(cmd == "update") { var title = msg[3]; var task = document.getElementById("board_" + observeid + "task_" + id); var taskText = document.createTextNode(title); task.appendChild(taskText); } f++; } } socket_task.onclose = function(){ document.getElementById("wstask_status").style.backgroundColor = "#ff4040"; document.getElementById("wstask_status").textContent = "TaskProto websocket connection CLOSED "; } } catch(exception) { alert('

Error' + exception + '

'); } function task_submit() { var data = document.getElementById("input_task_data").value; socket_task.send(data); } function clear() { document.getElementById("input_data").value = ""; } function deleteTask(id) { socket_task.send("del " + 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 } function drop(target, e) { e.preventDefault(); e.stopPropagation(); 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) + ";"); }