Simon Hunt

GUI Topo -- Badges - Fixed glyph positioning. Added CSS for info/warn/error statuses.

Change-Id: I9e37863a3425df9a9ecd2d20f5526e4f63c6ad00
...@@ -427,6 +427,39 @@ html[data-platform='iPad'] #topo-p-detail { ...@@ -427,6 +427,39 @@ html[data-platform='iPad'] #topo-p-detail {
427 fill: #f90; 427 fill: #f90;
428 } 428 }
429 429
430 +/* Badges */
431 +/* (... works for both light and dark themes...) */
432 +#ov-topo svg .node .badge circle {
433 + stroke: #aaa;
434 +}
435 +
436 +#ov-topo svg .node .badge.badgeInfo circle {
437 + fill: #ccf;
438 +}
439 +
440 +#ov-topo svg .node .badge.badgeWarn circle {
441 + fill: #da2;
442 +}
443 +
444 +#ov-topo svg .node .badge.badgeError circle {
445 + fill: #e44;
446 +}
447 +
448 +#ov-topo svg .node .badge use {
449 + fill: white;
450 +}
451 +
452 +#ov-topo svg .node .badge.badgeInfo use {
453 + fill: #448;
454 +}
455 +
456 +#ov-topo svg .node .badge text {
457 + fill: white;
458 +}
459 +
460 +#ov-topo svg .node .badge.badgeInfo text {
461 + fill: #448;
462 +}
430 463
431 /* Host Nodes */ 464 /* Host Nodes */
432 465
......
...@@ -57,7 +57,8 @@ ...@@ -57,7 +57,8 @@
57 }, 57 },
58 badgeConfig = { 58 badgeConfig = {
59 radius: 12, 59 radius: 12,
60 - yoff: 5 60 + yoff: 5,
61 + gdelta: 10
61 }, 62 },
62 icfg; 63 icfg;
63 64
...@@ -207,7 +208,8 @@ ...@@ -207,7 +208,8 @@
207 dim = icfg.device.dim, 208 dim = icfg.device.dim,
208 box, dx, dy, bsel, 209 box, dx, dy, bsel,
209 bdg = d.badge, 210 bdg = d.badge,
210 - bcr = badgeConfig.radius; 211 + bcr = badgeConfig.radius,
212 + bcgd = badgeConfig.gdelta;
211 213
212 node.select('text') 214 node.select('text')
213 .text(label) 215 .text(label)
...@@ -235,6 +237,8 @@ ...@@ -235,6 +237,8 @@
235 237
236 // handle badge, if defined 238 // handle badge, if defined
237 if (bdg) { 239 if (bdg) {
240 + node.select('g.badge').remove();
241 +
238 bsel = node.append('g') 242 bsel = node.append('g')
239 .classed('badge', true) 243 .classed('badge', true)
240 .classed(badgeStatus(bdg), true) 244 .classed(badgeStatus(bdg), true)
...@@ -251,8 +255,9 @@ ...@@ -251,8 +255,9 @@
251 } else if (bdg.gid) { 255 } else if (bdg.gid) {
252 bsel.append('use') 256 bsel.append('use')
253 .attr({ 257 .attr({
254 - width: bcr * 2, 258 + width: bcgd * 2,
255 - height: bcr * 2, 259 + height: bcgd * 2,
260 + transform: sus.translate(-bcgd, -bcgd),
256 'xlink:href': '#' + bdg.gid 261 'xlink:href': '#' + bdg.gid
257 }); 262 });
258 263
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
5 { 5 {
6 "id": "of:0000000000000001", 6 "id": "of:0000000000000001",
7 "badge": { 7 "badge": {
8 - "status": "e", 8 + "status": "i",
9 "gid": "xMark", 9 "gid": "xMark",
10 "msg": "x marks the spot" 10 "msg": "x marks the spot"
11 } 11 }
...@@ -14,7 +14,40 @@ ...@@ -14,7 +14,40 @@
14 "id": "of:0000000000000002", 14 "id": "of:0000000000000002",
15 "badge": { 15 "badge": {
16 "status": "w", 16 "status": "w",
17 - "txt": "7" 17 + "gid": "crown",
18 + "msg": "it's good to be the King"
19 + }
20 + },
21 + {
22 + "id": "of:0000000000000003",
23 + "badge": {
24 + "status": "e",
25 + "gid": "chain",
26 + "msg": "the weakest link"
27 + }
28 + },
29 + {
30 + "id": "of:0000000000000004",
31 + "badge": {
32 + "status": "i",
33 + "txt": "1",
34 + "msg": "singular sensation"
35 + }
36 + },
37 + {
38 + "id": "of:0000000000000005",
39 + "badge": {
40 + "status": "w",
41 + "txt": "42",
42 + "msg": "life, the universe, and everything!"
43 + }
44 + },
45 + {
46 + "id": "of:0000000000000006",
47 + "badge": {
48 + "status": "e",
49 + "txt": "99",
50 + "msg": "cadbury's flake"
18 } 51 }
19 } 52 }
20 ], 53 ],
...@@ -23,7 +56,7 @@ ...@@ -23,7 +56,7 @@
23 { 56 {
24 "css": "primary", 57 "css": "primary",
25 "id": "of:0000000000000001/5-of:0000000000000002/7", 58 "id": "of:0000000000000001/5-of:0000000000000002/7",
26 - "label": "Antz!" 59 + "label": "Foo!"
27 } 60 }
28 ] 61 ]
29 } 62 }
......
1 +{
2 + "event": "addDevice",
3 + "payload": {
4 + "id": "of:0000000000000003",
5 + "type": "switch",
6 + "online": true,
7 + "master": "ONOS",
8 + "labels": [
9 + "",
10 + "switch-3",
11 + "of:0000000000000003"
12 + ],
13 + "metaUi": {
14 + "x": 600,
15 + "y": 200
16 + }
17 + }
18 +}
1 +{
2 + "event": "addDevice",
3 + "payload": {
4 + "id": "of:0000000000000004",
5 + "type": "switch",
6 + "online": true,
7 + "master": "ONOS",
8 + "labels": [
9 + "",
10 + "switch-4",
11 + "of:0000000000000004"
12 + ],
13 + "metaUi": {
14 + "x": 200,
15 + "y": 400
16 + }
17 + }
18 +}
1 +{
2 + "event": "addDevice",
3 + "payload": {
4 + "id": "of:0000000000000005",
5 + "type": "switch",
6 + "online": true,
7 + "master": "ONOS",
8 + "labels": [
9 + "",
10 + "switch-5",
11 + "of:0000000000000005"
12 + ],
13 + "metaUi": {
14 + "x": 400,
15 + "y": 420
16 + }
17 + }
18 +}
1 +{
2 + "event": "addDevice",
3 + "payload": {
4 + "id": "of:0000000000000006",
5 + "type": "switch",
6 + "online": true,
7 + "master": "ONOS",
8 + "labels": [
9 + "",
10 + "switch-6",
11 + "of:0000000000000006"
12 + ],
13 + "metaUi": {
14 + "x": 600,
15 + "y": 400
16 + }
17 + }
18 +}
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
4 ], 4 ],
5 "title": "Demo adding badges", 5 "title": "Demo adding badges",
6 "params": { 6 "params": {
7 - "lastAuto": 5 7 + "lastAuto": 9
8 }, 8 },
9 "description": [ 9 "description": [
10 "Demonstrate the device badging feature." 10 "Demonstrate the device badging feature."
......