diff options
| author | Bent Bisballe Nyeng <deva@aasimon.org> | 2013-12-05 15:35:01 +0100 | 
|---|---|---|
| committer | Bent Bisballe Nyeng <deva@aasimon.org> | 2013-12-05 15:35:01 +0100 | 
| commit | 46a8ed79f6afdca1d3e1ccebfb90eb3c1b5feb68 (patch) | |
| tree | 78b1313ca9cd41d65d5c189da244fb9cc3aaa5be | |
| parent | ace5f9ead8c72f74616f96f7fd396b77391247d9 (diff) | |
Major brushup of javascript protocol handler.
| -rw-r--r-- | handler.js | 9 | ||||
| -rw-r--r-- | proto.js | 90 | ||||
| -rw-r--r-- | task.js | 16 | ||||
| -rw-r--r-- | view.js | 93 | 
4 files changed, 136 insertions, 72 deletions
@@ -7,7 +7,9 @@ function connectEventHandler(e)  {      document.getElementById("wstask_status").style.backgroundColor = "#40ff40";      document.getElementById("wstask_status").textContent = "TaskProto websocket connection opened "; -    socket_task.send("observe 0;"); + +   // login("foobar", "hundemad"); +//    observe(0);  }  document.addEventListener("disconnectEvent", disconnectEventHandler, false); @@ -75,8 +77,6 @@ function updateEventHandler(e)      if(task == null) return;      task.setAttribute(name, value); - -    //LogEvent("update handled");  }  /////// @@ -88,8 +88,7 @@ function updateEventHandler(e)  document.addEventListener("messageEvent", messageEventHandler, false);  function messageEventHandler(e) { -	LogEvent( -		"Event: " + e.detail.time.toLocaleString()+": "+e.detail.message +	LogEvent(e.detail.time.toString()+": "+e.detail.message  	);  } @@ -3,26 +3,16 @@  function get_appropriate_ws_url()  { -    var pcol; -    var u = document.URL; - -    /* -     * We open the websocket encrypted if this page came on an -     * https:// url itself, otherwise unencrypted -     */ - -    if (u.substring(0, 5) == "https") { -        pcol = "wss://"; -        u = u.substr(8); -    } else { -        pcol = "ws://"; -        if (u.substring(0, 4) == "http") -            u = u.substr(7); -    } - -    u = u.split('/'); - -    return pcol + u[0]; +    // From: https://gist.github.com/2428561 +    var parser = document.createElement('a'); +    parser.href = document.URL; +     +    // We open the websocket encrypted if this page came on an +    // https:// url itself, otherwise unencrypted +    if(parser.protocol == "http:") parser.protocol = "ws:"; +    if(parser.protocol == "https:") parser.protocol = "wss:"; + +    return parser.href;  }  var socket_task = new WebSocket(get_appropriate_ws_url(), "lws-task-protocol"); @@ -42,7 +32,7 @@ try {      socket_task.onmessage = function got_packet(msg) {          var messageEvent = new CustomEvent("messageEvent", {  			      detail: { -				        message: msg.data, +				        message: "recv [" + msg.data + "]",  				        time: new Date(),  			      },  			      bubbles: true, @@ -162,3 +152,61 @@ try {      alert('<p>Error' + exception + '</p>');  } +function transmit(msg) +{ +    //LogEvent(msg); +    var messageEvent = new CustomEvent("messageEvent", { +			  detail: { +				    message: "send [" + msg + "]", +				    time: new Date(), +			  }, +			  bubbles: true, +			  cancelable: true +		}); +    document.dispatchEvent(messageEvent); + +    socket_task.send(msg); +} + +function login(user, password) +{ +    transmit("login "+user+" "+password); +} + +function logout() +{ +    transmit("logout"); +} + +function observe(id) +{ +    transmit("observe "+id); +} + +function unobserve(id) +{ +    transmit("unobserve "+id); +} + +function create(id, parent) +{ +    transmit("create "+id+" "+parent); +} + + +function update(id, name, value) +{ +    transmit("update "+id+" "+name+" "+value); +} + +function remove(id) +{ +    transmit("remove "+id); +} + +function move(id, parent) +{ +    transmit("move "+id+" "+parent); +} + + @@ -1,6 +1,16 @@  /* -*- Mode: javascript; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */  /* vim: set et sw=2 ts=2: */ +function createId(boardid, taskid) +{ +  return "b" + boardid + "_t" + taskid; +} + +function idFromStr(str) +{ +  return str.substring(str.search('t') + 1, str.length); +} +  var tasks = new Array();  function findTask(id, observeid) @@ -79,8 +89,11 @@ Task.prototype.create = function()      task.setAttribute("draggable", true);      task.setAttribute("ondragstart", "drag(this, event)");      task.setAttribute("title", this.id); -     + +    // This is a hack to make it possible to identify the taskid and +    // oberveid from the node id alone.      task.id = createId(this.observeid, this.id); +  /*          var observe_button = document.createElement("div");      observe_button.name = "observe_button"; @@ -100,6 +113,7 @@ Task.prototype.create = function()      unobserve_button.appendChild(txt_minus);      task.appendChild(unobserve_button);  */ +      this.element.appendChild(this.div_id);      var id_txt = document.createTextNode(this.id);      this.div_id.appendChild(id_txt); @@ -12,16 +12,6 @@ function createTask()  }  */ -function createId(boardid, taskid) -{ -  return "b" + boardid + "_t" + taskid; -} - -function idFromStr(str) -{ -  return str.substring(str.search('t') + 1, str.length); -} -  function getTask(observeid, id)  { @@ -53,7 +43,7 @@ function clear() {  }  function deleteTask(id) { -    socket_task.send("remove " + id + ";"); +    remove(id);  }  function drag(target, e) { @@ -67,19 +57,19 @@ function drop(target, e) {      var id = e.dataTransfer.getData('Text');      var task = document.getElementById(id); -    socket_task.send("move " + idFromStr(id) + " " + idFromStr(target.id) + ";"); +    move(idFromStr(id), idFromStr(target.id));  }  function observeMe(target, e)  { -  e.stopPropagation(); -  socket_task.send("observe "+target.title+";"); +    e.stopPropagation(); +    observe(target.title);  }  function unobserveMe(target, e)  { -  e.stopPropagation(); -  socket_task.send("unobserve "+target.title+";"); +    e.stopPropagation(); +    unobserve(target.title);  }  function showHideChildren(target, e) @@ -99,6 +89,19 @@ function showHideChildren(target, e)    }  } +function task_submit() { +    var data = document.getElementById("input_task_data"); +    transmit(data.value); +    data.value = ""; +} + +function task_submit_KeyUpHandler(target, e) +{ +    if(e.which == 13) { // enter +	task_submit(); +    } +} +  //  // Butt ugly.. but hey! it works...  // @@ -108,41 +111,41 @@ 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; -  } +    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; -  } +    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(); +    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();  }  | 
