diff options
Diffstat (limited to 'src/client/view/graph_view.js')
| -rw-r--r-- | src/client/view/graph_view.js | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/src/client/view/graph_view.js b/src/client/view/graph_view.js index 2315eb10..fe18ed5c 100644 --- a/src/client/view/graph_view.js +++ b/src/client/view/graph_view.js @@ -147,12 +147,11 @@ function GraphView(spec) { }); function showNodeInfo(node) { - var closed = false; + var diffBusUnsubscribe; util.assert(!temporary, "cannot showNodeInfo on a temporary graph"); view.node_info.on_save(function(e, form_data) { - closed = true; graph.update_node(node, form_data, function() { var old_type = node.type, new_type = form_data.type; @@ -162,12 +161,25 @@ function GraphView(spec) { return false; }); - graph.diffBus.onValue(function (diff) { - if (closed || !model_diff.is_attr_diff(diff)) { - return Bacon.noMore; + diffBusUnsubscribe = graph.diffBus.onValue(function (diff) { + if (!model_diff.is_attr_diff(diff)) { + console.log('node_edit listener for ' + node.id + ': ignoring diff'); + return; } view.node_info.show(node); }); + view.node_info.isOpenProperty.skip(1).onValue(function (open) { + var ISaidNoMore = false; + if (ISaidNoMore) { + console.log('MAYDAY MAYDAY why am I here??'); + } + if (!open) { + console.log('node_edit listener for ' + node.id + ': shutting down'); + diffBusUnsubscribe(); + ISaidNoMore = true; + return Bacon.noMore; + } + }) view.node_info.on_delete(function() { var topo_diff = model_diff.new_topo_diff({ |
