diff --git a/app/assets/javascripts/Jit/find.js b/app/assets/javascripts/Jit/find.js index e17a3073..01cbb242 100644 --- a/app/assets/javascripts/Jit/find.js +++ b/app/assets/javascripts/Jit/find.js @@ -163,14 +163,34 @@ function onCanvasSearch(name,mapID,mapperID) { }); } - function clearCanvas() { - Mconsole.graph.eachNode( function(n) { Mconsole.graph.removeNode(n.id); Mconsole.labels.disposeLabel(n.id); }); - Mconsole.plot(); + Mconsole.graph.eachNode(function(n) { + Mconsole.graph.removeNode(n.id); + Mconsole.labels.disposeLabel(n.id); + }); + Mconsole.plot(); +} + +function clearCanvasExceptRoot() { + var ids = new Array(); + Mconsole.graph.eachNode(function(n) { + ids.push(n.id); + }); + + var root = Mconsole.graph.nodes[Mconsole.root]; + ids.forEach(function(id, index) { + if (id != root.id) { + Mconsole.graph.removeNode(id); + //OK I feel bad about this, but not too bad + //TODO: this leaves labels hidden on the map + Mconsole.labels.hideLabel(id); + } + }); + fetchRelatives(root); //also runs Mconsole.plot() } function clearFoundData() { - Mconsole.graph.eachNode( function(n) { + Mconsole.graph.eachNode( function(n) { if (n.getData('inCommons') === true) { Mconsole.graph.removeNode(n.id); Mconsole.labels.disposeLabel(n.id); @@ -557,4 +577,4 @@ function closeFind() { width: '45px', height: '32px' }, 100); -} \ No newline at end of file +} diff --git a/app/assets/javascripts/Jit/graphsettings-model.js b/app/assets/javascripts/Jit/graphsettings-model.js index c67de017..30b639cc 100644 --- a/app/assets/javascripts/Jit/graphsettings-model.js +++ b/app/assets/javascripts/Jit/graphsettings-model.js @@ -7,6 +7,7 @@ var MetamapsModel = new Object(); MetamapsModel.selectedEdges = new Array(); +MetamapsModel.showcardInUse = null; MetamapsModel.lastCanvasClick = 0; MetamapsModel.DOUBLE_CLICK_TOLERANCE = 300; MetamapsModel.edgeHoveringOver = false; diff --git a/app/assets/javascripts/Jit/graphsettings.js b/app/assets/javascripts/Jit/graphsettings.js index e53d5b8b..8b3b4165 100644 --- a/app/assets/javascripts/Jit/graphsettings.js +++ b/app/assets/javascripts/Jit/graphsettings.js @@ -75,8 +75,8 @@ function graphSettings(type) { onClick: function (node, eventInfo, e) { if (e.target.id != "infovis-canvas") return false; - //hide synapse editing dialog - $('#edit_synapse').hide(); + //topic and synapse editing cards + hideCards(); //clicking on a node, or clicking on blank part of canvas? if (node.nodeFrom) { @@ -122,6 +122,10 @@ function graphSettings(type) { t.Events.onClick = function(node, eventInfo, e) { //this is handled mostly differently than in arranged/chaotic if (e.target.id != "infovis-canvas") return false; + + //hide synapse and topic editing dialog + hideCards(); + //clicking on an edge, a node, or clicking on blank part of canvas? if (node.nodeFrom) { selectEdgeOnClickHandler(node, e); @@ -147,6 +151,11 @@ function graphSettings(type) { return t; }//graphSettings +function hideCards() { + $('#edit_synapse').hide(); + hideCurrentCard(); +} + // defining code to draw edges with arrows pointing in one direction var renderMidArrow = function(from, to, dim, swap, canvas){ var ctx = canvas.getCtx(); diff --git a/app/assets/javascripts/Jit/onCreateLabelHandler.js b/app/assets/javascripts/Jit/onCreateLabelHandler.js index 616c609b..7910fe2e 100644 --- a/app/assets/javascripts/Jit/onCreateLabelHandler.js +++ b/app/assets/javascripts/Jit/onCreateLabelHandler.js @@ -255,6 +255,13 @@ function generateLittleHTML(node) { return littleHTML; } +function hideCurrentCard() { + if (MetamapsModel.showcardInUse) { + var node = Mconsole.graph.getNode(MetamapsModel.showcardInUse); + hideCard(node); + } +} + function hideCard(node) { var card = '.showcard'; if (node != null) { @@ -263,13 +270,14 @@ function hideCard(node) { $(card).fadeOut('fast', function(){ node.setData('dim', 25, 'current'); - $('.name').show(); + $('.name.topic_' + node.id).show(); Mconsole.plot(); }); + + MetamapsModel.showcardInUse = null; } function bindCallbacks(showCard, nameContainer, node) { - // add some events to the label $(showCard).find('img.icon').click(function(){ hideCard(node); @@ -279,12 +287,14 @@ function bindCallbacks(showCard, nameContainer, node) { // add some events to the label $(nameContainer).find('.label').click(function(e){ - $('.showcard').css('display','none'); $('.name').css('display','block'); $('.name.topic_' + node.id).css('display','none'); $('.showcard.topic_' + node.id).fadeIn('fast'); $('.showcard.topic_' + node.id).find('.scroll').mCustomScrollbar("update"); node.setData('dim', 1, 'current'); + + hideCurrentCard(); + MetamapsModel.showcardInUse = node.id; Mconsole.plot(); }); diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 9654d26b..7a4124e1 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -182,7 +182,15 @@ function saveToMap() { var nodes_data = "", synapses_data = ""; var synapses_array = new Array(); Mconsole.graph.eachNode(function(n) { - nodes_data += n.id + '/' + n.pos.x + '/' + n.pos.y + ','; + var x, y; + if (n.pos.x && n.pos.y) { + x = n.pos.x; + y = n.pos.y; + } else { + var x = Math.cos(n.pos.theta) * n.pos.rho; + var y = Math.sin(n.pos.theta) * n.pos.rho; + } + nodes_data += n.id + '/' + x + '/' + y + ','; n.eachAdjacency(function(adj) { synapses_array.push(adj.getData("id")); }); diff --git a/app/views/topics/show.html.erb b/app/views/topics/show.html.erb index 89af1524..ced68f64 100644 --- a/app/views/topics/show.html.erb +++ b/app/views/topics/show.html.erb @@ -14,23 +14,13 @@ # #%> - +