/* -*- Mode: js2; 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('id', target.id); e.stopPropagation(); // <--- this fixes the drag target problem update(idFromStr(target.id), "dragged", "true"); } function dragEnd(e) { e.preventDefault(); e.stopPropagation(); // FIXME: This doesn't seem to work in Chromium 65 var id = e.dataTransfer.getData('id'); update(idFromStr(id), "dragged", "false"); } function drop(target, e) { e.preventDefault(); e.stopPropagation(); var id = e.dataTransfer.getData('id'); update(idFromStr(id), "dragged", "false"); move(idFromStr(id), idFromStr(target.id)); } function subscribeMe(target, e) { e.stopPropagation(); subscribe(target.nodeid); } function unsubscribeMe(target, e) { e.stopPropagation(); unsubscribe(target.nodeid); } 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(); }