diff options
| author | LV-426 <lv-426@taproot.org.il> | 2015-04-09 01:49:24 +0300 |
|---|---|---|
| committer | LV-426 <lv-426@taproot.org.il> | 2015-04-09 02:03:45 +0300 |
| commit | 059428fdf0c613e92e84f7360558815f2e0c9dd9 (patch) | |
| tree | 4399893c02dd6345990d73b4337ba1a92e7652ad /src/client | |
| parent | b239c007f5b7dae085f732a2ce007643e758698c (diff) | |
rz_core.js, rz_mesh.js: we init/destroy
Diffstat (limited to 'src/client')
| -rw-r--r-- | src/client/rz_core.js | 19 | ||||
| -rw-r--r-- | src/client/rz_mesh.js | 15 |
2 files changed, 23 insertions, 11 deletions
diff --git a/src/client/rz_core.js b/src/client/rz_core.js index dea53292..5ab8456f 100644 --- a/src/client/rz_core.js +++ b/src/client/rz_core.js @@ -162,10 +162,6 @@ var initDrawingArea = function () { }); // $('#canvas_d3').dblclick(canvas_handler_dblclick); - see #138 - if (rz_config.backend_enabled) { - var cur_rzdoc_name = rzdoc__current__get_name(); - rzdoc__open(cur_rzdoc_name); - } root_element_id_to_graph_view = {}; root_element_id_to_graph_view[main_graph_view.root_element.id] = main_graph_view; @@ -186,12 +182,25 @@ var initDrawingArea = function () { function init_ws_connection(){ if (true == rz_config.backend__maintain_ws_connection){ rz_mesh.init({graph: main_graph}); + + // attempt to actively disconnect on tab/window close + // ref: https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.onbeforeunload + window.addEventListener("beforeunload", function(e){ + var cur_rzdoc_name = rzdoc__current__get_name(); + rz_mesh.emit__rzdoc_unsubscribe(cur_rzdoc_name); + rz_mesh.destroy(); + }); } } function init() { initDrawingArea(); init_ws_connection(); + + if (rz_config.backend_enabled) { + var cur_rzdoc_name = rzdoc__current__get_name(); + rzdoc__open(cur_rzdoc_name); + } } /** @@ -267,6 +276,8 @@ function rzdoc__open(rzdoc_name) { rzdoc_bar__doc_lable.text(rzdoc_name); rzdoc_bar.fadeToggle(500); }); + + rz_mesh.emit__rzdoc_subscribe(rzdoc_name); console.log('rzdoc: opened rzdoc : \'' + rzdoc_name + '\''); } diff --git a/src/client/rz_mesh.js b/src/client/rz_mesh.js index a3cb822c..1a93f554 100644 --- a/src/client/rz_mesh.js +++ b/src/client/rz_mesh.js @@ -13,6 +13,8 @@ define([ 'util', 'model/diff', 'model/util', 'socketio'], function(util, model_d var rz_mesh_graph_ref; /** + * [!] caller is responsible of calling destroy() + * * @param init_spec: expected to contain a graph:graph mapping */ function init(init_spec) { @@ -30,13 +32,11 @@ define([ 'util', 'model/diff', 'model/util', 'socketio'], function(util, model_d socket.on('error', on_error); socket.on('diff_commit__topo', ws_diff_merge__topo); socket.on('diff_commit__attr', ws_diff_merge__attr); + } - // attempt to actively disconnect on tab/window close - // ref: https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.onbeforeunload - window.addEventListener("beforeunload", function(e){ - socket.disconnect(); - console.log('ws: connection closed on \'beforeunload\' event'); // no one will ever see this but still - }); + function destroy(init_spec) { + socket.disconnect(); + console.log('ws: connection closed on \'beforeunload\' event'); // no one will ever see this but still } function on_connect() { @@ -102,7 +102,8 @@ define([ 'util', 'model/diff', 'model/util', 'socketio'], function(util, model_d } return { - init : init + init : init, + destroy: destroy, emit__rzdoc_subscribe: emit__rzdoc_subscribe, emit__rzdoc_unsubscribe: emit__rzdoc_unsubscribe, }; |
