ONOS-2186 - GUI Topo Overlay - (WIP)
- Default behaviour is to "unsubdue" each node and link present in the Highlights message. - Now added ability to tag nodes/links for remaining subdued when rendered (this needed for BYON application). Change-Id: I351ee0d135bf3ef8f46102f461a45ee48fe9a5cc
Showing
3 changed files
with
42 additions
and
6 deletions
| ... | @@ -26,6 +26,7 @@ import static com.google.common.base.Preconditions.checkNotNull; | ... | @@ -26,6 +26,7 @@ import static com.google.common.base.Preconditions.checkNotNull; |
| 26 | public abstract class AbstractHighlight { | 26 | public abstract class AbstractHighlight { |
| 27 | private final TopoElementType type; | 27 | private final TopoElementType type; |
| 28 | private final String elementId; | 28 | private final String elementId; |
| 29 | + private boolean keepSubdued = false; | ||
| 29 | 30 | ||
| 30 | /** | 31 | /** |
| 31 | * Constructs the highlight. | 32 | * Constructs the highlight. |
| ... | @@ -39,6 +40,13 @@ public abstract class AbstractHighlight { | ... | @@ -39,6 +40,13 @@ public abstract class AbstractHighlight { |
| 39 | } | 40 | } |
| 40 | 41 | ||
| 41 | /** | 42 | /** |
| 43 | + * Sets a flag to tell the renderer to keep this element subdued. | ||
| 44 | + */ | ||
| 45 | + public void keepSubdued() { | ||
| 46 | + keepSubdued = true; | ||
| 47 | + } | ||
| 48 | + | ||
| 49 | + /** | ||
| 42 | * Returns the element type. | 50 | * Returns the element type. |
| 43 | * | 51 | * |
| 44 | * @return element type | 52 | * @return element type |
| ... | @@ -55,4 +63,13 @@ public abstract class AbstractHighlight { | ... | @@ -55,4 +63,13 @@ public abstract class AbstractHighlight { |
| 55 | public String elementId() { | 63 | public String elementId() { |
| 56 | return elementId; | 64 | return elementId; |
| 57 | } | 65 | } |
| 66 | + | ||
| 67 | + /** | ||
| 68 | + * Returns the subdued flag. | ||
| 69 | + * | ||
| 70 | + * @return subdued flag | ||
| 71 | + */ | ||
| 72 | + public boolean subdued() { | ||
| 73 | + return keepSubdued; | ||
| 74 | + } | ||
| 58 | } | 75 | } | ... | ... |
| ... | @@ -90,20 +90,32 @@ public final class TopoJson { | ... | @@ -90,20 +90,32 @@ public final class TopoJson { |
| 90 | } | 90 | } |
| 91 | 91 | ||
| 92 | private static ObjectNode json(DeviceHighlight dh) { | 92 | private static ObjectNode json(DeviceHighlight dh) { |
| 93 | - return objectNode() | 93 | + ObjectNode n = objectNode() |
| 94 | .put(ID, dh.elementId()); | 94 | .put(ID, dh.elementId()); |
| 95 | + if (dh.subdued()) { | ||
| 96 | + n.put(SUBDUE, true); | ||
| 97 | + } | ||
| 98 | + return n; | ||
| 95 | } | 99 | } |
| 96 | 100 | ||
| 97 | private static ObjectNode json(HostHighlight hh) { | 101 | private static ObjectNode json(HostHighlight hh) { |
| 98 | - return objectNode() | 102 | + ObjectNode n = objectNode() |
| 99 | .put(ID, hh.elementId()); | 103 | .put(ID, hh.elementId()); |
| 104 | + if (hh.subdued()) { | ||
| 105 | + n.put(SUBDUE, true); | ||
| 106 | + } | ||
| 107 | + return n; | ||
| 100 | } | 108 | } |
| 101 | 109 | ||
| 102 | private static ObjectNode json(LinkHighlight lh) { | 110 | private static ObjectNode json(LinkHighlight lh) { |
| 103 | - return objectNode() | 111 | + ObjectNode n = objectNode() |
| 104 | .put(ID, lh.elementId()) | 112 | .put(ID, lh.elementId()) |
| 105 | .put(LABEL, lh.label()) | 113 | .put(LABEL, lh.label()) |
| 106 | .put(CSS, lh.cssClasses()); | 114 | .put(CSS, lh.cssClasses()); |
| 115 | + if (lh.subdued()) { | ||
| 116 | + n.put(SUBDUE, true); | ||
| 117 | + } | ||
| 118 | + return n; | ||
| 107 | } | 119 | } |
| 108 | 120 | ||
| 109 | /** | 121 | /** | ... | ... |
| ... | @@ -326,7 +326,9 @@ | ... | @@ -326,7 +326,9 @@ |
| 326 | data.hosts.forEach(function (host) { | 326 | data.hosts.forEach(function (host) { |
| 327 | var hdata = api.findNodeById(host.id); | 327 | var hdata = api.findNodeById(host.id); |
| 328 | if (hdata && !hdata.el.empty()) { | 328 | if (hdata && !hdata.el.empty()) { |
| 329 | - api.unsupNode(hdata.id, less); | 329 | + if (!host.subdue) { |
| 330 | + api.unsupNode(hdata.id, less); | ||
| 331 | + } | ||
| 330 | // TODO: further highlighting? | 332 | // TODO: further highlighting? |
| 331 | } | 333 | } |
| 332 | }); | 334 | }); |
| ... | @@ -334,7 +336,9 @@ | ... | @@ -334,7 +336,9 @@ |
| 334 | data.devices.forEach(function (device) { | 336 | data.devices.forEach(function (device) { |
| 335 | var ddata = api.findNodeById(device.id); | 337 | var ddata = api.findNodeById(device.id); |
| 336 | if (ddata && !ddata.el.empty()) { | 338 | if (ddata && !ddata.el.empty()) { |
| 337 | - api.unsupNode(ddata.id, less); | 339 | + if (!device.subdue) { |
| 340 | + api.unsupNode(ddata.id, less); | ||
| 341 | + } | ||
| 338 | // TODO: further highlighting? | 342 | // TODO: further highlighting? |
| 339 | } | 343 | } |
| 340 | }); | 344 | }); |
| ... | @@ -345,10 +349,13 @@ | ... | @@ -345,10 +349,13 @@ |
| 345 | units, portcls, magnitude; | 349 | units, portcls, magnitude; |
| 346 | 350 | ||
| 347 | if (ldata && !ldata.el.empty()) { | 351 | if (ldata && !ldata.el.empty()) { |
| 348 | - api.unsupLink(ldata.key, less); | 352 | + if (!link.subdue) { |
| 353 | + api.unsupLink(ldata.key, less); | ||
| 354 | + } | ||
| 349 | ldata.el.classed(link.css, true); | 355 | ldata.el.classed(link.css, true); |
| 350 | ldata.label = lab; | 356 | ldata.label = lab; |
| 351 | 357 | ||
| 358 | + // TODO: this needs to be pulled out into traffic overlay | ||
| 352 | // inject additional styling for port-based traffic | 359 | // inject additional styling for port-based traffic |
| 353 | if (fs.endsWith(lab, 'bps')) { | 360 | if (fs.endsWith(lab, 'bps')) { |
| 354 | units = lab.substring(lab.length-4); | 361 | units = lab.substring(lab.length-4); | ... | ... |
-
Please register or login to post a comment