GUI -- Implemented node lock ('X' key) in preparation for oblique view.
Change-Id: I485ca7977d18fe50ca7e5c500b3fc616506f4543
diff --git a/web/gui/src/main/webapp/topo.js b/web/gui/src/main/webapp/topo.js
index 97918f0..d2e67bf 100644
--- a/web/gui/src/main/webapp/topo.js
+++ b/web/gui/src/main/webapp/topo.js
@@ -148,6 +148,8 @@
V: [showTrafficAction, 'Show related traffic'],
A: [showAllTrafficAction, 'Show all traffic'],
F: [showDeviceLinkFlowsAction, 'Show device link flows'],
+ X: [toggleNodeLock, 'Lock / unlock node positions'],
+ Z: [toggleOblique, 'Toggle oblique view'],
esc: handleEscape
};
@@ -203,7 +205,8 @@
showOffline = true,
useDetails = true,
haveDetails = false,
- dragAllowed = true;
+ nodeLock = false,
+ oblique = false;
// constants
var hoverModeAll = 1,
@@ -323,6 +326,16 @@
bgImg.style('visibility', visVal(vis === 'hidden'));
}
+ function toggleNodeLock() {
+ nodeLock = !nodeLock;
+ flash('Node positions ' + (nodeLock ? 'locked' : 'unlocked'))
+ }
+
+ function toggleOblique() {
+ oblique = !oblique;
+ // TODO: oblique transformation
+ }
+
function toggleHosts() {
showHosts = !showHosts;
updateHostVisibility();
@@ -2704,9 +2717,12 @@
// predicate that indicates when dragging is active
function dragEnabled() {
// meta key pressed means we are zooming/panning (so disable drag)
- return dragAllowed && !d3.event.sourceEvent.metaKey;
- // dragAllowed will be set false when we are in oblique view
- // or when we 'lock' node positions
+ return !nodeLock && !d3.event.sourceEvent.metaKey;
+ }
+
+ // predicate that indicates when clicking is active
+ function clickEnabled() {
+ return true;
}
// set up the force layout
@@ -2722,7 +2738,7 @@
.on('tick', tick);
network.drag = d3u.createDragBehavior(network.force,
- selectCb, atDragEnd, dragEnabled);
+ selectCb, atDragEnd, dragEnabled, clickEnabled);
// create mask layer for when we lose connection to server.