GUI -- Pan/Zoom now activated when either Meta (command) key OR Alt (option) key is pressed.
- cleanup of keyIn() function.
- preparation for more control over formatting of Quick Help pane.
(oops - filter out _helpFormat entry...)
Change-Id: I605589ab992b5ef3a4d2531973a08a31f399b855
diff --git a/web/gui/src/main/webapp/onos.js b/web/gui/src/main/webapp/onos.js
index 4186827..1e9120f 100644
--- a/web/gui/src/main/webapp/onos.js
+++ b/web/gui/src/main/webapp/onos.js
@@ -485,19 +485,21 @@
var event = d3.event,
keyCode = event.keyCode,
key = whatKey(keyCode),
- gk = keyHandler.globalKeys[key],
+ kh = keyHandler,
+ gk = kh.globalKeys[key],
gcb = isF(gk) || (isA(gk) && isF(gk[0])),
- vk = keyHandler.viewKeys[key],
- vcb = isF(vk) || (isA(vk) && isF(vk[0])) || isF(keyHandler.viewFn);
+ vk = kh.viewKeys[key],
+ vcb = isF(vk) || (isA(vk) && isF(vk[0])) || isF(kh.viewFn),
+ token = current.view.token();
// global callback?
- if (gcb && gcb(current.view.token(), key, keyCode, event)) {
+ if (gcb && gcb(token, key, keyCode, event)) {
// if the event was 'handled', we are done
return;
}
// otherwise, let the view callback have a shot
if (vcb) {
- vcb(current.view.token(), key, keyCode, event);
+ vcb(token, key, keyCode, event);
}
}
diff --git a/web/gui/src/main/webapp/onosQuickHelp.js b/web/gui/src/main/webapp/onosQuickHelp.js
index 1e3507d..2cc2a18 100644
--- a/web/gui/src/main/webapp/onosQuickHelp.js
+++ b/web/gui/src/main/webapp/onosQuickHelp.js
@@ -138,13 +138,19 @@
}
function aggregateData(bindings) {
- var gmap = d3.map(bindings.globalKeys),
+ var hf = '_helpFormat',
+ gmap = d3.map(bindings.globalKeys),
vmap = d3.map(bindings.viewKeys),
- gkeys = gmap.keys(),
- vkeys = vmap.keys(),
+ fmt = vmap.get(hf),
vgest = bindings.viewGestures,
+ gkeys = gmap.keys(),
+ vkeys,
sep = 0;
+ // filter out help format entry
+ vmap.remove(hf);
+ vkeys = vmap.keys(),
+
gkeys.sort();
vkeys.sort();
diff --git a/web/gui/src/main/webapp/topo.js b/web/gui/src/main/webapp/topo.js
index 2af25c7..32cc891 100644
--- a/web/gui/src/main/webapp/topo.js
+++ b/web/gui/src/main/webapp/topo.js
@@ -134,26 +134,37 @@
equals: injectStartupEvents,
dash: injectTestEvent,
- E: [equalizeMasters, 'Equalize mastership roles'],
O: [toggleSummary, 'Toggle ONOS summary pane'],
I: [toggleInstances, 'Toggle ONOS instances pane'],
D: [toggleDetails, 'Disable / enable details pane'],
- B: [toggleBg, 'Toggle background image'],
+
H: [toggleHosts, 'Toggle host visibility'],
M: [toggleOffline, 'Toggle offline visibility'],
- L: [cycleLabels, 'Cycle device labels'],
+ B: [toggleBg, 'Toggle background image'],
P: togglePorts,
+
+ X: [toggleNodeLock, 'Lock / unlock node positions'],
+ Z: [toggleOblique, 'Toggle oblique view (Experimental)'],
+ L: [cycleLabels, 'Cycle device labels'],
U: [unpin, 'Unpin node (hover mouse over)'],
R: [resetPanZoom, 'Reset pan / zoom'],
+
V: [showRelatedIntentsAction, 'Show all related intents'],
rightArrow: [showNextIntentAction, 'Show next related intent'],
leftArrow: [showPrevIntentAction, 'Show previous related intent'],
W: [showSelectedIntentTrafficAction, 'Monitor traffic of selected intent'],
A: [showAllTrafficAction, 'Monitor all traffic'],
F: [showDeviceLinkFlowsAction, 'Show device link flows'],
- X: [toggleNodeLock, 'Lock / unlock node positions'],
- Z: [toggleOblique, 'Toggle oblique view (Experimental)'],
- esc: handleEscape
+
+ E: [equalizeMasters, 'Equalize mastership roles'],
+
+ esc: handleEscape,
+
+ _helpFormat: [
+ ['O', 'I', 'D', '-', 'H', 'M', 'B', 'P' ],
+ ['X', 'Z', 'L', 'U', 'R' ],
+ ['V', 'rightArrow', 'leftArrow', 'W', 'A', 'F', '-', 'E' ]
+ ]
};
// mouse gestures
@@ -2565,12 +2576,10 @@
function selectObject(obj, el) {
var n,
- srcEv = d3.event.sourceEvent,
- meta = srcEv.metaKey,
- shift = srcEv.shiftKey;
+ ev = d3.event.sourceEvent;
- // if the meta key is pressed, we are panning/zooming, so ignore
- if (meta) {
+ // if the meta or alt key is pressed, we are panning/zooming, so ignore
+ if (ev.metaKey || ev.altKey) {
return;
}
@@ -2585,13 +2594,13 @@
}
if (!n) return;
- if (shift && n.classed('selected')) {
+ if (ev.shiftKey && n.classed('selected')) {
deselectObject(obj.id);
updateDetailPane();
return;
}
- if (!shift) {
+ if (!ev.shiftKey) {
deselectAll();
}
@@ -2805,8 +2814,9 @@
function setupPanZoom() {
function zoomed() {
- // pan zoom active when meta key is pressed...
- if (d3.event.sourceEvent.metaKey) {
+ var ev = d3.event.sourceEvent;
+ // pan/zoom active when meta or alt key is pressed...
+ if (ev.metaKey || ev.altKey) {
panZoom(d3.event.translate, d3.event.scale);
}
}
@@ -2943,8 +2953,10 @@
// predicate that indicates when dragging is active
function dragEnabled() {
- // meta key pressed means we are zooming/panning (so disable drag)
- return !nodeLock && !d3.event.sourceEvent.metaKey;
+ var ev = d3.event.sourceEvent;
+ // nodeLock means we aren't allowing nodes to be dragged...
+ // meta or alt key pressed means we are zooming/panning...
+ return !nodeLock && !(ev.metaKey || ev.altKey);
}
// predicate that indicates when clicking is active