Fix for ONOS-291. Highlighting intents in ONOS GUI for selected links.
Change-Id: I757aa40b96d92014fa2d720539da20dd309ec9b1
diff --git a/web/gui/src/main/webapp/app/view/topo/topoLink.js b/web/gui/src/main/webapp/app/view/topo/topoLink.js
index 95a9daa..bfe0df5 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoLink.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoLink.js
@@ -31,7 +31,7 @@
network,
showPorts = true, // enable port highlighting by default
enhancedLink = null, // the link over which the mouse is hovering
- selectedLink = null; // the link which is currently selected
+ selectedLinks = {}; // the links which are already selected
// SVG elements;
var svg;
@@ -210,25 +210,33 @@
function selectLink(ldata) {
// if the new link is same as old link, do nothing
- if (selectedLink && ldata && selectedLink.key === ldata.key) return;
+ if (d3.event.shiftKey && ldata.el.classed('selected')) {
+ unselLink(ldata);
+ return;
+ }
- // make sure no nodes are selected
- tss.deselectAll();
+ if (d3.event.shiftKey && !ldata.el.classed('selected')) {
+ selLink(ldata);
+ return;
+ }
- // first, unenhance the currently enhanced link
- if (selectedLink) {
- unselLink(selectedLink);
- }
- selectedLink = ldata;
- if (selectedLink) {
- selLink(selectedLink);
- }
+ tss.deselectAll();
+
+ if (!ldata.el.classed('selected')) {
+ selLink(ldata);
+ return;
+ }
+
+ if (ldata.el.classed('selected')) {
+ unselLink(ldata);
+ }
}
function unselLink(d) {
// guard against link element not set
if (d.el) {
d.el.classed('selected', false);
+ delete selectedLinks[d.key];
}
}
@@ -237,6 +245,7 @@
if (!d.el) return;
d.el.classed('selected', true);
+ selectedLinks[d.key] = {key : d};
tps.displayLink(d, tov.hooks.modifyLinkData);
tps.displaySomething();
@@ -252,6 +261,9 @@
function mouseClickHandler() {
var mp, link, node;
+ if (!d3.event.shiftKey) {
+ deselectAllLinks();
+ }
if (!tss.clickConsumed()) {
mp = getLogicalMousePosition(this);
@@ -262,6 +274,7 @@
} else {
link = computeNearestLink(mp);
selectLink(link);
+ tss.selectObject(link);
}
}
}
@@ -285,13 +298,15 @@
return on;
}
- function deselectLink() {
- if (selectedLink) {
- unselLink(selectedLink);
- selectedLink = null;
- return true;
+ function deselectAllLinks() {
+
+ if (Object.keys(selectedLinks).length > 0) {
+ network.links.forEach(function (d) {
+ if (selectedLinks[d.key]) {
+ unselLink(d);
+ }
+ });
}
- return false;
}
// ==========================
@@ -333,7 +348,7 @@
initLink: initLink,
destroyLink: destroyLink,
togglePorts: togglePorts,
- deselectLink: deselectLink
+ deselectAllLinks: deselectAllLinks
};
}]);
}());