diff --git a/app/assets/javascripts/src/Metamaps.Listeners.js b/app/assets/javascripts/src/Metamaps.Listeners.js index 32f4c418..19635768 100644 --- a/app/assets/javascripts/src/Metamaps.Listeners.js +++ b/app/assets/javascripts/src/Metamaps.Listeners.js @@ -103,10 +103,13 @@ Metamaps.Listeners = { centerAndReveal: function(nodes, opts) { if (nodes.length < 1) return var node = nodes[nodes.length - 1] - if (opts.center) { + if (opts.center && opts.reveal) { + Metamaps.Topic.centerOn(node.id, function() { + Metamaps.Topic.fetchRelatives(node) + }) + } else if (opts.center) { Metamaps.Topic.centerOn(node.id) - } - if (opts.reveal) { + } else if (opts.reveal) { Metamaps.Topic.fetchRelatives(node) } } diff --git a/app/assets/javascripts/src/Metamaps.Topic.js b/app/assets/javascripts/src/Metamaps.Topic.js index da1bfc8c..d5b5d7cf 100644 --- a/app/assets/javascripts/src/Metamaps.Topic.js +++ b/app/assets/javascripts/src/Metamaps.Topic.js @@ -99,12 +99,13 @@ Metamaps.Topic = { Metamaps.Filter.close() } }, - centerOn: function (nodeid) { + centerOn: function (nodeid, callback) { + // don't clash with fetchRelatives if (!Metamaps.Visualize.mGraph.busy) { Metamaps.Visualize.mGraph.onClick(nodeid, { hideLabels: false, duration: 1000, - onComplete: function () {} + onComplete: callback }) } }, @@ -117,7 +118,13 @@ Metamaps.Topic = { var topic = node.getData('topic') - var successCallback = function (data) { + var successCallback; + successCallback = function (data) { + if (Metamaps.Visualize.mGraph.busy) { + // don't clash with centerOn + window.setTimeout(function() { successCallback(data) }, 100) + return + } if (data.creators.length > 0) Metamaps.Creators.add(data.creators) if (data.topics.length > 0) Metamaps.Topics.add(data.topics) if (data.synapses.length > 0) Metamaps.Synapses.add(data.synapses)