Simon Hunt
Committed by Gerrit Code Review

GUI Topo -- Badges - Enhanced uitopo archetype to also use badges.

Change-Id: I80cd4783a4154a2ccce6054175022b97ef7bc6c1
...@@ -16,6 +16,8 @@ ...@@ -16,6 +16,8 @@
16 16
17 package org.onosproject.ui; 17 package org.onosproject.ui;
18 18
19 +import org.onosproject.net.DeviceId;
20 +import org.onosproject.net.HostId;
19 import org.onosproject.ui.topo.PropertyPanel; 21 import org.onosproject.ui.topo.PropertyPanel;
20 import org.slf4j.Logger; 22 import org.slf4j.Logger;
21 import org.slf4j.LoggerFactory; 23 import org.slf4j.LoggerFactory;
...@@ -106,7 +108,7 @@ public class UiTopoOverlay { ...@@ -106,7 +108,7 @@ public class UiTopoOverlay {
106 * 108 *
107 * @param pp property panel model of summary data 109 * @param pp property panel model of summary data
108 */ 110 */
109 - public void modifyDeviceDetails(PropertyPanel pp) { 111 + public void modifyDeviceDetails(PropertyPanel pp, DeviceId deviceId) {
110 } 112 }
111 113
112 /** 114 /**
...@@ -116,6 +118,6 @@ public class UiTopoOverlay { ...@@ -116,6 +118,6 @@ public class UiTopoOverlay {
116 * 118 *
117 * @param pp property panel model of summary data 119 * @param pp property panel model of summary data
118 */ 120 */
119 - public void modifyHostDetails(PropertyPanel pp) { 121 + public void modifyHostDetails(PropertyPanel pp, HostId hostId) {
120 } 122 }
121 } 123 }
......
...@@ -33,7 +33,10 @@ import org.onosproject.net.link.LinkService; ...@@ -33,7 +33,10 @@ import org.onosproject.net.link.LinkService;
33 import org.onosproject.ui.RequestHandler; 33 import org.onosproject.ui.RequestHandler;
34 import org.onosproject.ui.UiConnection; 34 import org.onosproject.ui.UiConnection;
35 import org.onosproject.ui.UiMessageHandler; 35 import org.onosproject.ui.UiMessageHandler;
36 +import org.onosproject.ui.topo.DeviceHighlight;
36 import org.onosproject.ui.topo.Highlights; 37 import org.onosproject.ui.topo.Highlights;
38 +import org.onosproject.ui.topo.NodeBadge;
39 +import org.onosproject.ui.topo.NodeBadge.Status;
37 import org.onosproject.ui.topo.TopoJson; 40 import org.onosproject.ui.topo.TopoJson;
38 import org.slf4j.Logger; 41 import org.slf4j.Logger;
39 import org.slf4j.LoggerFactory; 42 import org.slf4j.LoggerFactory;
...@@ -224,11 +227,26 @@ public class AppUiTopovMessageHandler extends UiMessageHandler { ...@@ -224,11 +227,26 @@ public class AppUiTopovMessageHandler extends UiMessageHandler {
224 if (elementOfNote != null && elementOfNote instanceof Device) { 227 if (elementOfNote != null && elementOfNote instanceof Device) {
225 DeviceId devId = (DeviceId) elementOfNote.id(); 228 DeviceId devId = (DeviceId) elementOfNote.id();
226 Set<Link> links = linkService.getDeviceEgressLinks(devId); 229 Set<Link> links = linkService.getDeviceEgressLinks(devId);
227 - sendHighlights(fromLinks(links, devId)); 230 + Highlights highlights = fromLinks(links, devId);
231 + addDeviceBadge(highlights, devId, links.size());
232 + sendHighlights(highlights);
228 } 233 }
229 // Note: could also process Host, if available 234 // Note: could also process Host, if available
230 } 235 }
231 236
237 + private void addDeviceBadge(Highlights h, DeviceId devId, int n) {
238 + DeviceHighlight dh = new DeviceHighlight(devId.toString());
239 + dh.setBadge(createBadge(n));
240 + h.add(dh);
241 + }
242 +
243 + private NodeBadge createBadge(int n) {
244 + Status status = n > 3 ? Status.ERROR : Status.WARN;
245 + String noun = n > 3 ? "(critical)" : "(problematic)";
246 + String msg = "Egress links: " + n + " " + noun;
247 + return NodeBadge.number(status, n, msg);
248 + }
249 +
232 private Highlights fromLinks(Set<Link> links, DeviceId devId) { 250 private Highlights fromLinks(Set<Link> links, DeviceId devId) {
233 DemoLinkMap linkMap = new DemoLinkMap(); 251 DemoLinkMap linkMap = new DemoLinkMap();
234 if (links != null) { 252 if (links != null) {
......
...@@ -18,13 +18,20 @@ ...@@ -18,13 +18,20 @@
18 */ 18 */
19 package ${package}; 19 package ${package};
20 20
21 +import org.onosproject.net.DeviceId;
21 import org.onosproject.ui.UiTopoOverlay; 22 import org.onosproject.ui.UiTopoOverlay;
22 import org.onosproject.ui.topo.ButtonId; 23 import org.onosproject.ui.topo.ButtonId;
23 import org.onosproject.ui.topo.PropertyPanel; 24 import org.onosproject.ui.topo.PropertyPanel;
24 import org.onosproject.ui.topo.TopoConstants.CoreButtons; 25 import org.onosproject.ui.topo.TopoConstants.CoreButtons;
25 import org.onosproject.ui.topo.TopoConstants.Glyphs; 26 import org.onosproject.ui.topo.TopoConstants.Glyphs;
26 27
27 -import static org.onosproject.ui.topo.TopoConstants.Properties.*; 28 +import static org.onosproject.ui.topo.TopoConstants.Properties.FLOWS;
29 +import static org.onosproject.ui.topo.TopoConstants.Properties.INTENTS;
30 +import static org.onosproject.ui.topo.TopoConstants.Properties.LATITUDE;
31 +import static org.onosproject.ui.topo.TopoConstants.Properties.LONGITUDE;
32 +import static org.onosproject.ui.topo.TopoConstants.Properties.TOPOLOGY_SSCS;
33 +import static org.onosproject.ui.topo.TopoConstants.Properties.TUNNELS;
34 +import static org.onosproject.ui.topo.TopoConstants.Properties.VERSION;
28 35
29 /** 36 /**
30 * Our topology overlay. 37 * Our topology overlay.
...@@ -61,7 +68,7 @@ public class AppUiTopovOverlay extends UiTopoOverlay { ...@@ -61,7 +68,7 @@ public class AppUiTopovOverlay extends UiTopoOverlay {
61 } 68 }
62 69
63 @Override 70 @Override
64 - public void modifyDeviceDetails(PropertyPanel pp) { 71 + public void modifyDeviceDetails(PropertyPanel pp, DeviceId deviceId) {
65 pp.title(MY_DEVICE_TITLE); 72 pp.title(MY_DEVICE_TITLE);
66 pp.removeProps(LATITUDE, LONGITUDE); 73 pp.removeProps(LATITUDE, LONGITUDE);
67 74
......
...@@ -33,6 +33,7 @@ import org.onosproject.mastership.MastershipEvent; ...@@ -33,6 +33,7 @@ import org.onosproject.mastership.MastershipEvent;
33 import org.onosproject.mastership.MastershipListener; 33 import org.onosproject.mastership.MastershipListener;
34 import org.onosproject.net.ConnectPoint; 34 import org.onosproject.net.ConnectPoint;
35 import org.onosproject.net.Device; 35 import org.onosproject.net.Device;
36 +import org.onosproject.net.DeviceId;
36 import org.onosproject.net.Host; 37 import org.onosproject.net.Host;
37 import org.onosproject.net.HostId; 38 import org.onosproject.net.HostId;
38 import org.onosproject.net.HostLocation; 39 import org.onosproject.net.HostLocation;
...@@ -344,11 +345,13 @@ public class TopologyViewMessageHandler extends TopologyViewMessageHandlerBase { ...@@ -344,11 +345,13 @@ public class TopologyViewMessageHandler extends TopologyViewMessageHandlerBase {
344 PropertyPanel pp = null; 345 PropertyPanel pp = null;
345 346
346 if (type.equals(DEVICE)) { 347 if (type.equals(DEVICE)) {
347 - pp = deviceDetails(deviceId(id), sid); 348 + DeviceId did = deviceId(id);
348 - overlayCache.currentOverlay().modifyDeviceDetails(pp); 349 + pp = deviceDetails(did, sid);
350 + overlayCache.currentOverlay().modifyDeviceDetails(pp, did);
349 } else if (type.equals(HOST)) { 351 } else if (type.equals(HOST)) {
350 - pp = hostDetails(hostId(id), sid); 352 + HostId hid = hostId(id);
351 - overlayCache.currentOverlay().modifyHostDetails(pp); 353 + pp = hostDetails(hid, sid);
354 + overlayCache.currentOverlay().modifyHostDetails(pp, hid);
352 } 355 }
353 356
354 sendMessage(envelope(SHOW_DETAILS, sid, json(pp))); 357 sendMessage(envelope(SHOW_DETAILS, sid, json(pp)));
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
17 17
18 package org.onosproject.ui.impl; 18 package org.onosproject.ui.impl;
19 19
20 +import org.onosproject.net.DeviceId;
20 import org.onosproject.ui.UiTopoOverlay; 21 import org.onosproject.ui.UiTopoOverlay;
21 import org.onosproject.ui.topo.ButtonId; 22 import org.onosproject.ui.topo.ButtonId;
22 import org.onosproject.ui.topo.PropertyPanel; 23 import org.onosproject.ui.topo.PropertyPanel;
...@@ -55,7 +56,7 @@ public class TrafficOverlay extends UiTopoOverlay { ...@@ -55,7 +56,7 @@ public class TrafficOverlay extends UiTopoOverlay {
55 } 56 }
56 57
57 @Override 58 @Override
58 - public void modifyDeviceDetails(PropertyPanel pp) { 59 + public void modifyDeviceDetails(PropertyPanel pp, DeviceId deviceId) {
59 pp.addButton(SHOW_DEVICE_FLOWS) 60 pp.addButton(SHOW_DEVICE_FLOWS)
60 .addButton(SHOW_RELATED_TRAFFIC); 61 .addButton(SHOW_RELATED_TRAFFIC);
61 } 62 }
......