Committed by
Gerrit Code Review
Reverting the theme to light for the demo and switching icons set.
Change-Id: Ic3f7b46ce56100aabc1b7df3370218cbfd94db0c
Showing
15 changed files
with
169 additions
and
397 deletions
tools/test/topos/sdn-ip.json
0 → 100644
1 | +{ | ||
2 | + "hosts" : [ | ||
3 | + { "mac": "00:00:00:00:00:01", "vlan": -1, "location": "of:0000000000000001/10", "ip": "0.0.0.0", "annotations": { "type": "bgpSpeaker" } }, | ||
4 | + { "mac": "00:00:00:00:00:02", "vlan": -1, "location": "of:0000000000000002/10", "ip": "0.0.0.0", "annotations": { "type": "bgpSpeaker" } }, | ||
5 | + { "mac": "00:00:00:00:00:03", "vlan": -1, "location": "of:0000000000000003/10", "ip": "0.0.0.0", "annotations": { "type": "bgpSpeaker" } }, | ||
6 | + { "mac": "00:00:00:00:01:01", "vlan": -1, "location": "of:0000000000000005/10", "ip": "0.0.0.0", "annotations": { "type": "router" } }, | ||
7 | + { "mac": "00:00:00:00:01:02", "vlan": -1, "location": "of:0000000000000006/10", "ip": "0.0.0.0", "annotations": { "type": "router" } }, | ||
8 | + { "mac": "00:00:00:00:02:01", "vlan": -1, "location": "of:0000000000000007/10", "ip": "0.0.0.0", "annotations": { "type": "router" } }, | ||
9 | + { "mac": "00:00:00:00:03:01", "vlan": -1, "location": "of:0000000000000008/10", "ip": "0.0.0.0", "annotations": { "type": "router" } }, | ||
10 | + { "mac": "00:00:00:00:04:01", "vlan": -1, "location": "of:0000000000000009/10", "ip": "0.0.0.0", "annotations": { "type": "router" } }, | ||
11 | + { "mac": "00:00:00:00:44:01", "vlan": -1, "location": "of:0000000000000010/10", "ip": "0.0.0.0", "annotations": { "type": "router" } } | ||
12 | + ] | ||
13 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
... | @@ -63,6 +63,7 @@ import java.util.Set; | ... | @@ -63,6 +63,7 @@ import java.util.Set; |
63 | import java.util.concurrent.ConcurrentHashMap; | 63 | import java.util.concurrent.ConcurrentHashMap; |
64 | 64 | ||
65 | import static com.google.common.base.Preconditions.checkNotNull; | 65 | import static com.google.common.base.Preconditions.checkNotNull; |
66 | +import static com.google.common.base.Strings.isNullOrEmpty; | ||
66 | import static org.onlab.onos.cluster.ClusterEvent.Type.INSTANCE_ADDED; | 67 | import static org.onlab.onos.cluster.ClusterEvent.Type.INSTANCE_ADDED; |
67 | import static org.onlab.onos.cluster.ClusterEvent.Type.INSTANCE_REMOVED; | 68 | import static org.onlab.onos.cluster.ClusterEvent.Type.INSTANCE_REMOVED; |
68 | import static org.onlab.onos.cluster.ControllerNode.State.ACTIVE; | 69 | import static org.onlab.onos.cluster.ControllerNode.State.ACTIVE; |
... | @@ -253,8 +254,10 @@ public abstract class TopologyViewMessages { | ... | @@ -253,8 +254,10 @@ public abstract class TopologyViewMessages { |
253 | // Produces a host event message to the client. | 254 | // Produces a host event message to the client. |
254 | protected ObjectNode hostMessage(HostEvent event) { | 255 | protected ObjectNode hostMessage(HostEvent event) { |
255 | Host host = event.subject(); | 256 | Host host = event.subject(); |
257 | + String hostType = host.annotations().value("type"); | ||
256 | ObjectNode payload = mapper.createObjectNode() | 258 | ObjectNode payload = mapper.createObjectNode() |
257 | .put("id", host.id().toString()) | 259 | .put("id", host.id().toString()) |
260 | + .put("type", isNullOrEmpty(hostType) ? "host" : hostType) | ||
258 | .put("ingress", compactLinkString(edgeLink(host, true))) | 261 | .put("ingress", compactLinkString(edgeLink(host, true))) |
259 | .put("egress", compactLinkString(edgeLink(host, false))); | 262 | .put("egress", compactLinkString(edgeLink(host, false))); |
260 | payload.set("cp", hostConnect(mapper, host.location())); | 263 | payload.set("cp", hostConnect(mapper, host.location())); |
... | @@ -358,8 +361,10 @@ public abstract class TopologyViewMessages { | ... | @@ -358,8 +361,10 @@ public abstract class TopologyViewMessages { |
358 | protected ObjectNode hostDetails(HostId hostId, long sid) { | 361 | protected ObjectNode hostDetails(HostId hostId, long sid) { |
359 | Host host = hostService.getHost(hostId); | 362 | Host host = hostService.getHost(hostId); |
360 | Annotations annot = host.annotations(); | 363 | Annotations annot = host.annotations(); |
364 | + String type = annot.value("type"); | ||
361 | return envelope("showDetails", sid, | 365 | return envelope("showDetails", sid, |
362 | - json(hostId.toString(), "host", | 366 | + json(hostId.toString(), isNullOrEmpty(type) ? "host" : type, |
367 | + new Prop("Name", annot.value("name")), | ||
363 | new Prop("MAC", host.mac().toString()), | 368 | new Prop("MAC", host.mac().toString()), |
364 | new Prop("IP", host.ipAddresses().toString()), | 369 | new Prop("IP", host.ipAddresses().toString()), |
365 | new Separator(), | 370 | new Separator(), | ... | ... |
web/gui/src/main/webapp/icons.svg
deleted
100644 → 0
1 | -<?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
2 | -<!-- Created with Inkscape (http://www.inkscape.org/) --> | ||
3 | -<svg xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg"> | ||
4 | - <symbol id="switch"> | ||
5 | - <g id="layer1" inkscape:groupmode="layer" inkscape:label="Layer 1" transform="translate(-344.44812,-517.03149)"> | ||
6 | - <path d="m 389.9165,532.15849 -44.64875,0 0,14.495 44.64875,0 0,-14.495 z" id="path24009" inkscape:connector-curvature="0" style="fill-opacity:1;fill-rule:nonzero;stroke:currentColor;stroke-width:0.40000001"/> | ||
7 | - <g id="g24011" transform="matrix(1.25,0,0,-1.25,345.15125,532.23224)"> | ||
8 | - <path d="m 0,0 14.428,11.694 33.33,0 L 35.779,0 0,0 z" id="path24013" inkscape:connector-curvature="0" style="fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
9 | - </g> | ||
10 | - <g id="g24015" transform="matrix(1.25,0,0,-1.25,345.15125,532.23224)"> | ||
11 | - <path d="m 0,0 14.428,11.694 33.33,0 L 35.779,0 0,0 z" id="path24017" inkscape:connector-curvature="0" style="fill:none;stroke:currentColor;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/> | ||
12 | - </g> | ||
13 | - <g id="g24019" transform="matrix(1.25,0,0,-1.25,389.8925,547.10962)"> | ||
14 | - <path d="M 0,0 11.932,12.892 11.939,23.575 0,11.919 0,0 z" id="path24021" inkscape:connector-curvature="0" style="fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
15 | - </g> | ||
16 | - <g id="g24023" transform="matrix(1.25,0,0,-1.25,389.8925,547.10962)"> | ||
17 | - <path d="M 0,0 11.932,12.892 11.939,23.575 0,11.919 0,0 z" id="path24025" inkscape:connector-curvature="0" style="fill:none;stroke:currentColor;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/> | ||
18 | - </g> | ||
19 | - <g id="g24027" transform="matrix(1.25,0,0,-1.25,371.32312,528.42974)"> | ||
20 | - <path d="m 0,0 -0.691,-0.568 -8.911,0 -0.886,-0.888 -2.414,1.052 4.853,1.389 L -8.906,0 0,0 z" id="path24029" inkscape:connector-curvature="0" style="fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
21 | - </g> | ||
22 | - <g id="g24031" transform="matrix(1.25,0,0,-1.25,380.07312,522.96099)"> | ||
23 | - <path d="m 0,0 -0.691,-0.568 -8.911,0 -0.886,-0.888 -2.414,1.052 4.853,1.389 L -8.906,0 0,0 z" id="path24033" inkscape:connector-curvature="0" style="fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
24 | - </g> | ||
25 | - <g id="g24035" transform="matrix(1.25,0,0,-1.25,373.28837,526.49738)"> | ||
26 | - <path d="m 0,0 0.691,0.569 8.913,0 L 10.49,1.456 12.904,0.405 8.049,-0.984 8.908,0 0,0 z" id="path24037" inkscape:connector-curvature="0" style="fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
27 | - </g> | ||
28 | - <g id="g24039" transform="matrix(1.25,0,0,-1.25,379.06962,521.02863)"> | ||
29 | - <path d="m 0,0 0.691,0.569 8.913,0 L 10.49,1.456 12.904,0.405 8.049,-0.984 8.908,0 0,0 z" id="path24041" inkscape:connector-curvature="0" style="fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
30 | - </g> | ||
31 | - </g> | ||
32 | - </symbol> | ||
33 | - <symbol id="router"> | ||
34 | - <g id="layer1" inkscape:groupmode="layer" inkscape:label="Layer 1" transform="translate(-351.74132,-516.62992)"> | ||
35 | - <g id="g18775" transform="matrix(1.25,0,0,-1.25,397.99132,525.81444)"> | ||
36 | - <path d="m 0,0 c 0,-3.95 -8.235,-7.152 -18.393,-7.152 -10.158,0 -18.393,3.202 -18.393,7.152 l 0,-10.478 c 0,-3.948 8.235,-7.151 18.393,-7.151 10.158,0 18.393,3.203 18.393,7.151 L 0,0 z" id="path18777" inkscape:connector-curvature="0" style="fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
37 | - </g> | ||
38 | - <g id="g18779" transform="matrix(1.25,0,0,-1.25,397.99132,525.81444)"> | ||
39 | - <path d="m 0,0 c 0,-3.95 -8.235,-7.152 -18.393,-7.152 -10.158,0 -18.393,3.202 -18.393,7.152 l 0,-10.478 c 0,-3.948 8.235,-7.151 18.393,-7.151 10.158,0 18.393,3.203 18.393,7.151 L 0,0 z" id="path18781" inkscape:connector-curvature="0" style="fill:none;stroke:currentColor;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/> | ||
40 | - </g> | ||
41 | - <g id="g18783" transform="matrix(1.25,0,0,-1.25,374.99992,534.75492)"> | ||
42 | - <path d="m 0,0 c 10.158,0 18.393,3.202 18.393,7.152 0,3.952 -8.235,7.153 -18.393,7.153 -10.158,0 -18.393,-3.201 -18.393,-7.153 C -18.393,3.202 -10.158,0 0,0" id="path18785" inkscape:connector-curvature="0" style="fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
43 | - </g> | ||
44 | - <g id="g18787" transform="matrix(1.25,0,0,-1.25,374.99992,534.75492)"> | ||
45 | - <path d="m 0,0 c 10.158,0 18.393,3.202 18.393,7.152 0,3.952 -8.235,7.153 -18.393,7.153 -10.158,0 -18.393,-3.201 -18.393,-7.153 C -18.393,3.202 -10.158,0 0,0 z" id="path18789" inkscape:connector-curvature="0" style="fill:none;stroke:currentColor;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/> | ||
46 | - </g> | ||
47 | - <g id="g18791" transform="matrix(1.25,0,0,-1.25,369.75031,522.31831)"> | ||
48 | - <path d="m 0,0 1.518,-2.278 -5.742,-1.327 1.255,1.043 -8.875,1.518 2.227,1.669 8.563,-1.45 L 0,0 z" id="path18793" inkscape:connector-curvature="0" style="fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
49 | - </g> | ||
50 | - <g id="g18795" transform="matrix(1.25,0,0,-1.25,379.85043,529.22393)"> | ||
51 | - <path d="M 0,0 -1.036,2.35 4.143,3.384 3.245,2.579 11.878,1.104 9.807,-0.553 1.225,1.06 0,0 z" id="path18797" inkscape:connector-curvature="0" style="fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
52 | - </g> | ||
53 | - <g id="g18799" transform="matrix(1.25,0,0,-1.25,376.31043,520.76318)"> | ||
54 | - <path d="M 0,0 5.802,1.588 5.87,-0.898 4.42,-0.622 1.589,-2.972 -1.113,-2.576 1.809,-0.279 0,0 z" id="path18801" inkscape:connector-curvature="0" style="fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
55 | - </g> | ||
56 | - <g id="g18803" transform="matrix(1.25,0,0,-1.25,373.20244,531.90095)"> | ||
57 | - <path d="M 0,0 -5.525,-1.035 -5.732,1.52 -4.144,1.175 -1.103,3.771 1.588,3.315 -1.658,0.483 0,0 z" id="path18805" inkscape:connector-curvature="0" style="fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
58 | - </g> | ||
59 | - </g> | ||
60 | - </symbol> | ||
61 | - <symbol id="roadm"> | ||
62 | - <g id="layer1" inkscape:groupmode="layer" inkscape:label="Layer 1" transform="translate(-352.14937,-517.55019)"> | ||
63 | - <g id="g23883" transform="matrix(1.25,0,0,-1.25,397.44718,526.34356)"> | ||
64 | - <path d="m 0,0 0,-9.5 -8.725,-6.977 -18.127,0 -9.064,6.977 0,9.5" id="path23885" inkscape:connector-curvature="0" style="fill-opacity:1;fill-rule:nonzero;stroke:currentColor;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/> | ||
65 | - </g> | ||
66 | - <g id="g23887" transform="matrix(1.25,0,0,-1.25,386.32906,517.78456)"> | ||
67 | - <path d="m 0,0 -17.787,0 -9.234,-6.847 9.064,-6.977 18.127,0 8.725,6.977 L 0,0 z" id="path23889" inkscape:connector-curvature="0" style="fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
68 | - </g> | ||
69 | - <g id="g23891" transform="matrix(1.25,0,0,-1.25,386.32906,517.78456)"> | ||
70 | - <path d="m 0,0 -17.787,0 -9.234,-6.847 9.064,-6.977 18.127,0 8.725,6.977 L 0,0 z" id="path23893" inkscape:connector-curvature="0" style="fill:none;stroke:currentColor;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/> | ||
71 | - </g> | ||
72 | - <g id="g23895" transform="matrix(1.25,0,0,-1.25,370.5857,523.05858)"> | ||
73 | - <path d="m 0,0 1.384,-2.076 -5.235,-1.21 1.145,0.952 -6.697,1.421 2.03,1.522 6.412,-1.361 L 0,0 z" id="path23897" inkscape:connector-curvature="0" style="fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
74 | - </g> | ||
75 | - <g id="g23899" transform="matrix(1.25,0,0,-1.25,379.79093,529.35194)"> | ||
76 | - <path d="M 0,0 -0.945,2.14 3.777,3.084 2.959,2.351 9.951,1.152 8.064,-0.36 1.117,0.965 0,0 z" id="path23901" inkscape:connector-curvature="0" style="fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
77 | - </g> | ||
78 | - <g id="g23903" transform="matrix(1.25,0,0,-1.25,377.03218,521.01569)"> | ||
79 | - <path d="M 0,0 5.289,1.448 5.352,-0.818 4.029,-0.566 1.449,-2.707 -1.014,-2.347 1.65,-0.255 0,0 z" id="path23905" inkscape:connector-curvature="0" style="fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
80 | - </g> | ||
81 | - <g id="g23907" transform="matrix(1.25,0,0,-1.25,372.99894,532.36957)"> | ||
82 | - <path d="M 0,0 -5.037,-0.944 -5.224,1.385 -3.777,1.071 -1.006,3.44 1.447,3.023 -1.512,0.441 0,0 z" id="path23909" inkscape:connector-curvature="0" style="fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
83 | - </g> | ||
84 | - <g id="g23911" transform="matrix(1.25,0,0,-1.25,386.49758,546.80069)"> | ||
85 | - <path d="M 0,0 0,9.389 M -18.25,0 l 0,9.389" id="path23913" inkscape:connector-curvature="0" style="fill:none;stroke:currentColor;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/> | ||
86 | - </g> | ||
87 | - <g id="g25718" transform="matrix(1.25,0,0,-1.25,397.44718,526.34356)"> | ||
88 | - <path d="m 0,0 0,-9.5 -8.725,-6.977 -18.127,0 -9.064,6.977 0,9.5" id="path25720" inkscape:connector-curvature="0" style="fill-opacity:1;fill-rule:nonzero;stroke:currentColor;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/> | ||
89 | - </g> | ||
90 | - <g id="g25722" transform="matrix(1.25,0,0,-1.25,386.32906,517.78456)"> | ||
91 | - <path d="m 0,0 -17.787,0 -9.234,-6.847 9.064,-6.977 18.127,0 8.725,6.977 L 0,0 z" id="path25724" inkscape:connector-curvature="0" style="fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
92 | - </g> | ||
93 | - <g id="g25726" transform="matrix(1.25,0,0,-1.25,386.32906,517.78456)"> | ||
94 | - <path d="m 0,0 -17.787,0 -9.234,-6.847 9.064,-6.977 18.127,0 8.725,6.977 L 0,0 z" id="path25728" inkscape:connector-curvature="0" style="fill:none;stroke:currentColor;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/> | ||
95 | - </g> | ||
96 | - <g id="g25730" transform="matrix(1.25,0,0,-1.25,370.5857,523.05858)"> | ||
97 | - <path d="m 0,0 1.384,-2.076 -5.235,-1.21 1.145,0.952 -6.697,1.421 2.03,1.522 6.412,-1.361 L 0,0 z" id="path25732" inkscape:connector-curvature="0" style="fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
98 | - </g> | ||
99 | - <g id="g25734" transform="matrix(1.25,0,0,-1.25,379.79093,529.35194)"> | ||
100 | - <path d="M 0,0 -0.945,2.14 3.777,3.084 2.959,2.351 9.951,1.152 8.064,-0.36 1.117,0.965 0,0 z" id="path25736" inkscape:connector-curvature="0" style="fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
101 | - </g> | ||
102 | - <g id="g25738" transform="matrix(1.25,0,0,-1.25,377.03218,521.01569)"> | ||
103 | - <path d="M 0,0 5.289,1.448 5.352,-0.818 4.029,-0.566 1.449,-2.707 -1.014,-2.347 1.65,-0.255 0,0 z" id="path25740" inkscape:connector-curvature="0" style="fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
104 | - </g> | ||
105 | - <g id="g25742" transform="matrix(1.25,0,0,-1.25,372.99894,532.36957)"> | ||
106 | - <path d="M 0,0 -5.037,-0.944 -5.224,1.385 -3.777,1.071 -1.006,3.44 1.447,3.023 -1.512,0.441 0,0 z" id="path25744" inkscape:connector-curvature="0" style="fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
107 | - </g> | ||
108 | - <g id="g25746" transform="matrix(1.25,0,0,-1.25,386.49758,546.80069)"> | ||
109 | - <path d="M 0,0 0,9.389 M -18.25,0 l 0,9.389" id="path25748" inkscape:connector-curvature="0" style="fill:none;stroke:currentColor;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/> | ||
110 | - </g> | ||
111 | - </g> | ||
112 | - </symbol> | ||
113 | - <symbol id="endstation"> | ||
114 | - <g id="layer1" inkscape:groupmode="layer" inkscape:label="Layer 1" transform="translate(-361.79125,-513.72074)"> | ||
115 | - <g id="g19723" transform="matrix(1.25,0,0,-1.25,381.81625,520.11362)"> | ||
116 | - <path d="m 0,0 -15.82,0 0,-24.512 15.82,0" id="path19725" inkscape:connector-curvature="0" style="fill-opacity:1;fill-rule:nonzero;stroke:currentColor;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/> | ||
117 | - </g> | ||
118 | - <g id="g19727" transform="matrix(1.25,0,0,-1.25,381.81625,550.75074)"> | ||
119 | - <path d="m 0,0 4.914,4.912 0,24.512 -14.445,0 L -15.82,24.51 0,24.51 0,0 z" id="path19729" inkscape:connector-curvature="0" style="fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
120 | - </g> | ||
121 | - <g id="g19731" transform="matrix(1.25,0,0,-1.25,381.81625,550.75074)"> | ||
122 | - <path d="m 0,0 4.914,4.912 0,24.512 -14.445,0 L -15.82,24.51 0,24.51 0,0 z" id="path19733" inkscape:connector-curvature="0" style="fill:none;stroke:currentColor;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/> | ||
123 | - </g> | ||
124 | - <g id="g19735" transform="matrix(1.25,0,0,-1.25,381.81625,520.11362)"> | ||
125 | - <path d="M 0,0 4.914,4.914" id="path19737" inkscape:connector-curvature="0" style="fill-opacity:1;fill-rule:nonzero;stroke:currentColor;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/> | ||
126 | - </g> | ||
127 | - <g id="g19739" transform="matrix(1.25,0,0,-1.25,371.85774,520.11362)"> | ||
128 | - <path d="M 0,0 0,-24.512" id="path19741" inkscape:connector-curvature="0" style="fill-opacity:1;fill-rule:nonzero;stroke:currentColor;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/> | ||
129 | - </g> | ||
130 | - <g id="g19743" transform="matrix(1.25,0,0,-1.25,372.17024,520.11362)"> | ||
131 | - <path d="M 0,0 5.346,4.914" id="path19745" inkscape:connector-curvature="0" style="fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
132 | - </g> | ||
133 | - <path d="m 379.91712,544.47137 -6.64125,0 0,4.0625 6.64125,0 0,-4.0625 z m -9.52375,0 -6.64125,0 0,4.0625 6.64125,0 0,-4.0625 z m 9.52375,-6.5625 -6.64125,0 0,4.0625 6.64125,0 0,-4.0625 z m -9.52375,0 -6.64125,0 0,4.0625 6.64125,0 0,-4.0625 z m 9.52375,-15 -6.64125,0 0,4.0625 6.64125,0 0,-4.0625 z m -9.52375,0 -6.64125,0 0,4.0625 6.64125,0 0,-4.0625 z m 1.7775,-2.795 6.68125,-6.1425" id="path19747" inkscape:connector-curvature="0" style="fill:none;stroke:currentColor;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/> | ||
134 | - </g> | ||
135 | - </symbol> | ||
136 | - <symbol id="bgpSpeaker"> | ||
137 | - <g id="layer1" inkscape:groupmode="layer" inkscape:label="Layer 1" transform="translate(-355.47362,-514.96093)"> | ||
138 | - <path d="m 355.72362,519.29593 34.56875,0 0,30.2175 -34.56875,0 0,-30.2175 z" id="path5104" inkscape:connector-curvature="0" style="fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
139 | - <path d="m 355.72362,519.29593 34.57,0 0,30.2175 -34.57,0 0,-30.2175 z" id="path5106" inkscape:connector-curvature="0" style="fill:none;stroke:currentColor;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/> | ||
140 | - <g id="g5108" transform="matrix(1.25,0,0,-1.25,359.70763,515.2113)"> | ||
141 | - <path d="m 0,0 -3.187,-3.268 27.656,0 L 27.655,0 0,0 z" id="path5110" inkscape:connector-curvature="0" style="fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
142 | - </g> | ||
143 | - <g id="g5112" transform="matrix(1.25,0,0,-1.25,359.70763,515.2113)"> | ||
144 | - <path d="m 0,0 -3.187,-3.268 27.656,0 L 27.655,0 0,0 z" id="path5114" inkscape:connector-curvature="0" style="fill:none;stroke:currentColor;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/> | ||
145 | - </g> | ||
146 | - <g id="g5116" transform="matrix(1.25,0,0,-1.25,394.27674,545.42854)"> | ||
147 | - <path d="m 0,0 0,24.174 -3.186,-3.268 0,-24.174 L 0,0 z" id="path5118" inkscape:connector-curvature="0" style="fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
148 | - </g> | ||
149 | - <path d="m 387.49987,522.07593 z m 6.77625,23.3525 0,-30.2175 -3.9825,4.085 0,30.2175 3.9825,-4.085 z" id="path5120" inkscape:connector-curvature="0" style="fill:none;stroke:currentColor;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/> | ||
150 | - <g id="g5122" transform="matrix(1.25,0,0,-1.25,385.85025,531.2343)"> | ||
151 | - <path d="m 0,0 c 0,-2.152 -4.486,-3.896 -10.02,-3.896 -5.533,0 -10.019,1.744 -10.019,3.896 l 0,-5.707 c 0,-2.152 4.486,-3.897 10.019,-3.897 5.534,0 10.02,1.745 10.02,3.897 L 0,0 z" id="path5124" inkscape:connector-curvature="0" style="fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
152 | - </g> | ||
153 | - <g id="g5126" transform="matrix(1.25,0,0,-1.25,385.85025,531.2343)"> | ||
154 | - <path d="m 0,0 c 0,-2.152 -4.486,-3.896 -10.02,-3.896 -5.533,0 -10.019,1.744 -10.019,3.896 l 0,-5.707 c 0,-2.152 4.486,-3.897 10.019,-3.897 5.534,0 10.02,1.745 10.02,3.897 L 0,0 z" id="path5128" inkscape:connector-curvature="0" style="fill:none;stroke:currentColor;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/> | ||
155 | - </g> | ||
156 | - <g id="g5130" transform="matrix(1.25,0,0,-1.25,373.32524,536.10479)"> | ||
157 | - <path d="M 0,0 C 5.534,0 10.02,1.744 10.02,3.896 10.02,6.049 5.534,7.793 0,7.793 -5.533,7.793 -10.019,6.049 -10.019,3.896 -10.019,1.744 -5.533,0 0,0" id="path5132" inkscape:connector-curvature="0" style="fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
158 | - </g> | ||
159 | - <g id="g5134" transform="matrix(1.25,0,0,-1.25,373.32524,536.10479)"> | ||
160 | - <path d="M 0,0 C 5.534,0 10.02,1.744 10.02,3.896 10.02,6.049 5.534,7.793 0,7.793 -5.533,7.793 -10.019,6.049 -10.019,3.896 -10.019,1.744 -5.533,0 0,0 z" id="path5136" inkscape:connector-curvature="0" style="fill:none;stroke:currentColor;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/> | ||
161 | - </g> | ||
162 | - <g id="g5138" transform="matrix(1.25,0,0,-1.25,370.46387,529.32993)"> | ||
163 | - <path d="m 0,0 0.828,-1.241 -3.128,-0.723 0.683,0.569 -4.834,0.828 1.213,0.908 4.665,-0.79 L 0,0 z" id="path5140" inkscape:connector-curvature="0" style="fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
164 | - </g> | ||
165 | - <g id="g5142" transform="matrix(1.25,0,0,-1.25,375.96798,533.09218)"> | ||
166 | - <path d="M 0,0 -0.565,1.279 2.257,1.844 1.767,1.404 6.47,0.602 5.341,-0.301 0.668,0.577 0,0 z" id="path5144" inkscape:connector-curvature="0" style="fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
167 | - </g> | ||
168 | - <g id="g5146" transform="matrix(1.25,0,0,-1.25,374.03937,528.48281)"> | ||
169 | - <path d="M 0,0 3.16,0.865 3.198,-0.488 2.408,-0.339 0.865,-1.617 -0.606,-1.403 0.986,-0.151 0,0 z" id="path5148" inkscape:connector-curvature="0" style="fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
170 | - </g> | ||
171 | - <g id="g5150" transform="matrix(1.25,0,0,-1.25,372.34687,534.54968)"> | ||
172 | - <path d="M 0,0 -3.01,-0.564 -3.123,0.828 -2.258,0.64 -0.601,2.055 0.865,1.807 -0.903,0.264 0,0 z" id="path5152" inkscape:connector-curvature="0" style="fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none"/> | ||
173 | - </g> | ||
174 | - </g> | ||
175 | - </symbol> | ||
176 | -</svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
9.27 KB
web/gui/src/main/webapp/img/opt.png
deleted
100644 → 0
1.48 KB
web/gui/src/main/webapp/img/pkt.png
deleted
100644 → 0
2.07 KB
28.5 KB
... | @@ -40,14 +40,12 @@ | ... | @@ -40,14 +40,12 @@ |
40 | <!-- Base library and framework stylesheets included here --> | 40 | <!-- Base library and framework stylesheets included here --> |
41 | <link rel="stylesheet" href="base.css"> | 41 | <link rel="stylesheet" href="base.css"> |
42 | <link rel="stylesheet" href="onos2.css"> | 42 | <link rel="stylesheet" href="onos2.css"> |
43 | - <link rel="stylesheet" href="onos_theme.css"> | ||
44 | <link rel="stylesheet" href="mast2.css"> | 43 | <link rel="stylesheet" href="mast2.css"> |
45 | <link rel="stylesheet" href="floatPanel.css"> | 44 | <link rel="stylesheet" href="floatPanel.css"> |
46 | 45 | ||
47 | <!-- This is where contributed stylesheets get INJECTED --> | 46 | <!-- This is where contributed stylesheets get INJECTED --> |
48 | <!-- TODO: replace with template marker and inject refs server-side --> | 47 | <!-- TODO: replace with template marker and inject refs server-side --> |
49 | <link rel="stylesheet" href="topo2.css"> | 48 | <link rel="stylesheet" href="topo2.css"> |
50 | - <link rel="stylesheet" href="topo_theme.css"> | ||
51 | <link rel="stylesheet" href="webSockTrace.css"> | 49 | <link rel="stylesheet" href="webSockTrace.css"> |
52 | 50 | ||
53 | 51 | ||
... | @@ -58,7 +56,7 @@ | ... | @@ -58,7 +56,7 @@ |
58 | <script src="onos2.js"></script> | 56 | <script src="onos2.js"></script> |
59 | 57 | ||
60 | </head> | 58 | </head> |
61 | -<body class='theme_dark'> | 59 | +<body> |
62 | <div id="frame"> | 60 | <div id="frame"> |
63 | <div id="mast"> | 61 | <div id="mast"> |
64 | <!-- NOTE: masthead injected here by mast.js --> | 62 | <!-- NOTE: masthead injected here by mast.js --> | ... | ... |
File mode changed
... | @@ -25,11 +25,14 @@ | ... | @@ -25,11 +25,14 @@ |
25 | } | 25 | } |
26 | 26 | ||
27 | #topo #map { | 27 | #topo #map { |
28 | + stroke-width: 2px; | ||
29 | + stroke: #aaaaaa; | ||
28 | fill: transparent; | 30 | fill: transparent; |
29 | } | 31 | } |
30 | 32 | ||
31 | 33 | ||
32 | #topo svg .glyph { | 34 | #topo svg .glyph { |
35 | + fill: white; | ||
33 | stroke: none; | 36 | stroke: none; |
34 | } | 37 | } |
35 | 38 | ||
... | @@ -65,20 +68,39 @@ | ... | @@ -65,20 +68,39 @@ |
65 | 68 | ||
66 | #topo svg .node.device.fixed rect { | 69 | #topo svg .node.device.fixed rect { |
67 | stroke-width: 1.5; | 70 | stroke-width: 1.5; |
71 | + stroke: #ccc; | ||
72 | +} | ||
73 | + | ||
74 | +/* note: device is offline without the 'online' class */ | ||
75 | +#topo svg .node.device { | ||
76 | + fill: #777; | ||
68 | } | 77 | } |
69 | 78 | ||
70 | -#topo .node text { | 79 | +#topo svg .node.device.switch.online { |
71 | - font-weight: 100; | 80 | + fill: #17f; |
81 | +} | ||
82 | + | ||
83 | +#topo svg .node.device.roadm.online { | ||
84 | + fill: #03c; | ||
72 | } | 85 | } |
73 | 86 | ||
74 | -/* note: device is offline without the 'online' class */ | ||
75 | /* note: device is offline without the 'online' class */ | 87 | /* note: device is offline without the 'online' class */ |
76 | #topo svg .node.device text { | 88 | #topo svg .node.device text { |
89 | + fill: #aaa; | ||
77 | font: 10pt sans-serif; | 90 | font: 10pt sans-serif; |
78 | } | 91 | } |
79 | 92 | ||
93 | +#topo svg .node.device.online text { | ||
94 | + fill: white; | ||
95 | +} | ||
96 | + | ||
97 | + | ||
80 | /* Host Nodes */ | 98 | /* Host Nodes */ |
81 | 99 | ||
100 | +#topo svg .node.host { | ||
101 | + stroke: #000; | ||
102 | +} | ||
103 | + | ||
82 | #topo svg .node.host text { | 104 | #topo svg .node.host text { |
83 | fill: #846; | 105 | fill: #846; |
84 | stroke: none; | 106 | stroke: none; |
... | @@ -86,11 +108,18 @@ | ... | @@ -86,11 +108,18 @@ |
86 | } | 108 | } |
87 | 109 | ||
88 | svg .node.host circle { | 110 | svg .node.host circle { |
89 | - fill: #c96; | 111 | + stroke: #000; |
112 | + fill: #ddd; | ||
90 | } | 113 | } |
91 | 114 | ||
92 | #topo svg .node.host.bgpSpeaker circle { | 115 | #topo svg .node.host.bgpSpeaker circle { |
93 | - fill: #853; | 116 | + stroke: #000; |
117 | + fill: #ddd; | ||
118 | +} | ||
119 | + | ||
120 | +#topo svg .node.host.router circle { | ||
121 | + stroke: #000; | ||
122 | + fill: #ddd; | ||
94 | } | 123 | } |
95 | 124 | ||
96 | /* LINKS */ | 125 | /* LINKS */ |
... | @@ -105,23 +134,29 @@ svg .node.host circle { | ... | @@ -105,23 +134,29 @@ svg .node.host circle { |
105 | } | 134 | } |
106 | 135 | ||
107 | #topo svg .link.primary { | 136 | #topo svg .link.primary { |
137 | + stroke: #f11; | ||
108 | stroke-width: 6px; | 138 | stroke-width: 6px; |
109 | } | 139 | } |
110 | #topo svg .link.secondary { | 140 | #topo svg .link.secondary { |
141 | + stroke: rgba(255,100,100,0.5); | ||
111 | stroke-width: 4px; | 142 | stroke-width: 4px; |
112 | } | 143 | } |
113 | #topo svg .link.animated { | 144 | #topo svg .link.animated { |
145 | + stroke: #f11; | ||
114 | stroke-width: 10px; | 146 | stroke-width: 10px; |
115 | stroke-dasharray: 8 8 | 147 | stroke-dasharray: 8 8 |
116 | } | 148 | } |
117 | 149 | ||
118 | #topo svg .link.primary.optical { | 150 | #topo svg .link.primary.optical { |
151 | + stroke: #74f; | ||
119 | stroke-width: 6px; | 152 | stroke-width: 6px; |
120 | } | 153 | } |
121 | #topo svg .link.secondary.optical { | 154 | #topo svg .link.secondary.optical { |
155 | + stroke: rgba(128,64,255,0.5); | ||
122 | stroke-width: 4px; | 156 | stroke-width: 4px; |
123 | } | 157 | } |
124 | #topo svg .link.animated.optical { | 158 | #topo svg .link.animated.optical { |
159 | + stroke: #74f; | ||
125 | stroke-width: 10px; | 160 | stroke-width: 10px; |
126 | stroke-dasharray: 8 8 | 161 | stroke-dasharray: 8 8 |
127 | } | 162 | } |
... | @@ -177,13 +212,17 @@ svg .node.host circle { | ... | @@ -177,13 +212,17 @@ svg .node.host circle { |
177 | cursor: pointer; | 212 | cursor: pointer; |
178 | width: 50%; | 213 | width: 50%; |
179 | text-align: center; | 214 | text-align: center; |
180 | - border-width: 1px; | 215 | + |
181 | - borer-style: solid; | 216 | + /* theme specific... */ |
217 | + border: 1px solid #ddf; | ||
218 | + color: #99f; | ||
182 | } | 219 | } |
183 | 220 | ||
184 | #topo-detail .actionBtn:hover { | 221 | #topo-detail .actionBtn:hover { |
185 | - border-width: 1px; | 222 | + /* theme specific... */ |
186 | - border-style: solid; | 223 | + border: 1px solid #ddf; |
224 | + background: #eef; | ||
225 | + color: #77d; | ||
187 | } | 226 | } |
188 | 227 | ||
189 | 228 | ||
... | @@ -207,14 +246,29 @@ svg .node.host circle { | ... | @@ -207,14 +246,29 @@ svg .node.host circle { |
207 | height: 80px; | 246 | height: 80px; |
208 | margin: 4px 0; | 247 | margin: 4px 0; |
209 | cursor: pointer; | 248 | cursor: pointer; |
210 | - border-width: 2px; | 249 | + |
211 | - border-style: solid; | 250 | + /* theme-related */ |
251 | + color: #444; | ||
252 | + background-color: #ccc; | ||
253 | + border: 2px solid #aaa; | ||
254 | +} | ||
255 | + | ||
256 | +#topo-oibox .onosInst.online { | ||
257 | + /* theme-related */ | ||
258 | + color: #113; | ||
259 | + background-color: #bbf; | ||
260 | + border: 2px solid #555; | ||
212 | } | 261 | } |
213 | 262 | ||
214 | #topo-oibox .onosInst .onosTitle { | 263 | #topo-oibox .onosInst .onosTitle { |
215 | text-align: center; | 264 | text-align: center; |
216 | font-size: 11pt; | 265 | font-size: 11pt; |
217 | margin-top: 6px; | 266 | margin-top: 6px; |
267 | + color: #888; | ||
268 | +} | ||
269 | + | ||
270 | +#topo-oibox .onosInst.online .onosTitle { | ||
271 | + color: black; | ||
218 | } | 272 | } |
219 | 273 | ||
220 | #topo-oibox .onosInst img { | 274 | #topo-oibox .onosInst img { | ... | ... |
... | @@ -70,17 +70,23 @@ | ... | @@ -70,17 +70,23 @@ |
70 | } | 70 | } |
71 | }, | 71 | }, |
72 | topo: { | 72 | topo: { |
73 | + linkBaseColor: '#666', | ||
73 | linkInColor: '#66f', | 74 | linkInColor: '#66f', |
74 | - linkOutColor: '#f00', | ||
75 | linkInWidth: 14, | 75 | linkInWidth: 14, |
76 | + linkOutColor: '#f00', | ||
76 | linkOutWidth: 30 | 77 | linkOutWidth: 30 |
77 | }, | 78 | }, |
78 | - map: { | ||
79 | - strokeWidth: 1 | ||
80 | - }, | ||
81 | icons: { | 79 | icons: { |
82 | - w: 100, | 80 | + w: 24, |
83 | - h: 100 | 81 | + h: 24, |
82 | + xoff: -10, | ||
83 | + yoff: -6 | ||
84 | + }, | ||
85 | + iconUrl: { | ||
86 | + device: 'img/device.png', | ||
87 | + host: 'img/host.png', | ||
88 | + pkt: 'img/pkt.png', | ||
89 | + opt: 'img/opt.png' | ||
84 | }, | 90 | }, |
85 | force: { | 91 | force: { |
86 | note_for_links: 'link.type is used to differentiate', | 92 | note_for_links: 'link.type is used to differentiate', |
... | @@ -330,6 +336,7 @@ | ... | @@ -330,6 +336,7 @@ |
330 | var layerLookup = { | 336 | var layerLookup = { |
331 | host: { | 337 | host: { |
332 | endstation: 'pkt', // default, if host event does not define type | 338 | endstation: 'pkt', // default, if host event does not define type |
339 | + router: 'pkt', | ||
333 | bgpSpeaker: 'pkt' | 340 | bgpSpeaker: 'pkt' |
334 | }, | 341 | }, |
335 | device: { | 342 | device: { |
... | @@ -526,7 +533,8 @@ | ... | @@ -526,7 +533,8 @@ |
526 | } | 533 | } |
527 | el.transition() | 534 | el.transition() |
528 | .duration(1000) | 535 | .duration(1000) |
529 | - .attr('stroke-width', linkScale(lw)); | 536 | + .attr('stroke-width', linkScale(lw)) |
537 | + .attr('stroke', config.topo.linkBaseColor); | ||
530 | } | 538 | } |
531 | 539 | ||
532 | // ============================== | 540 | // ============================== |
... | @@ -1227,8 +1235,8 @@ | ... | @@ -1227,8 +1235,8 @@ |
1227 | $.extend(node, xy); | 1235 | $.extend(node, xy); |
1228 | } | 1236 | } |
1229 | 1237 | ||
1230 | - function getIconUrl(d) { | 1238 | + function iconUrl(d) { |
1231 | - return 'icons.svg#' + d.type; | 1239 | + return 'img/' + d.type + '.png'; |
1232 | } | 1240 | } |
1233 | 1241 | ||
1234 | // returns the newly computed bounding box of the rectangle | 1242 | // returns the newly computed bounding box of the rectangle |
... | @@ -1270,29 +1278,6 @@ | ... | @@ -1270,29 +1278,6 @@ |
1270 | return (label && label.trim()) ? label : '.'; | 1278 | return (label && label.trim()) ? label : '.'; |
1271 | } | 1279 | } |
1272 | 1280 | ||
1273 | - function updateDeviceIconAppearance(node, box, animate) { | ||
1274 | - var u = node.select('use'); | ||
1275 | - var ubbox = u.node().getBBox(); | ||
1276 | - | ||
1277 | - var xoff = -ubbox.width/2 - box.width/2 - 4; | ||
1278 | - var yoff = -ubbox.height; | ||
1279 | - var iconTransform = 'translate(' + xoff + ',' + yoff + ')'; | ||
1280 | - if (animate) { | ||
1281 | - node.select('use') | ||
1282 | - .transition() | ||
1283 | - .attr('transform', iconTransform); | ||
1284 | - } else { | ||
1285 | - node.select('use') | ||
1286 | - .attr('transform', iconTransform); | ||
1287 | - } | ||
1288 | - | ||
1289 | - var computedStyle = window.getComputedStyle(node.node()); | ||
1290 | - u.attr({ | ||
1291 | - fill: computedStyle.fill, | ||
1292 | - color: computedStyle.color | ||
1293 | - }); | ||
1294 | - } | ||
1295 | - | ||
1296 | function updateDeviceLabel(d) { | 1281 | function updateDeviceLabel(d) { |
1297 | var label = niceLabel(deviceLabel(d)), | 1282 | var label = niceLabel(deviceLabel(d)), |
1298 | node = d.el, | 1283 | node = d.el, |
... | @@ -1310,7 +1295,10 @@ | ... | @@ -1310,7 +1295,10 @@ |
1310 | .transition() | 1295 | .transition() |
1311 | .attr(box); | 1296 | .attr(box); |
1312 | 1297 | ||
1313 | - updateDeviceIconAppearance(node, box, true); | 1298 | + node.select('image') |
1299 | + .transition() | ||
1300 | + .attr('x', box.x + config.icons.xoff) | ||
1301 | + .attr('y', box.y + config.icons.yoff); | ||
1314 | } | 1302 | } |
1315 | 1303 | ||
1316 | function updateHostLabel(d) { | 1304 | function updateHostLabel(d) { |
... | @@ -1352,6 +1340,17 @@ | ... | @@ -1352,6 +1340,17 @@ |
1352 | } | 1340 | } |
1353 | } | 1341 | } |
1354 | 1342 | ||
1343 | + function addHostIcon(node, radius, iconId) { | ||
1344 | + var dim = radius * 1.5, | ||
1345 | + xlate = -dim / 2; | ||
1346 | + | ||
1347 | + node.append('svg:image') | ||
1348 | + .attr('transform', translate(xlate,xlate)) | ||
1349 | + .attr('xlink:href', 'img/' + iconId + '.png') | ||
1350 | + .attr('width', dim) | ||
1351 | + .attr('height', dim); | ||
1352 | + } | ||
1353 | + | ||
1355 | function updateNodes() { | 1354 | function updateNodes() { |
1356 | node = nodeG.selectAll('.node') | 1355 | node = nodeG.selectAll('.node') |
1357 | .data(network.nodes, function (d) { return d.id; }); | 1356 | .data(network.nodes, function (d) { return d.id; }); |
... | @@ -1378,7 +1377,7 @@ | ... | @@ -1378,7 +1377,7 @@ |
1378 | // augment device nodes... | 1377 | // augment device nodes... |
1379 | entering.filter('.device').each(function (d) { | 1378 | entering.filter('.device').each(function (d) { |
1380 | var node = d3.select(this), | 1379 | var node = d3.select(this), |
1381 | - iconUrl = getIconUrl(d), | 1380 | + icon = iconUrl(d), |
1382 | label = niceLabel(deviceLabel(d)), | 1381 | label = niceLabel(deviceLabel(d)), |
1383 | box; | 1382 | box; |
1384 | 1383 | ||
... | @@ -1400,17 +1399,29 @@ | ... | @@ -1400,17 +1399,29 @@ |
1400 | node.select('rect') | 1399 | node.select('rect') |
1401 | .attr(box); | 1400 | .attr(box); |
1402 | 1401 | ||
1403 | - if (iconUrl) { | 1402 | + if (icon) { |
1404 | - node.append('svg:use') | 1403 | + var cfg = config.icons; |
1404 | + node.append('rect') | ||
1405 | + .attr({ | ||
1406 | + x: box.x + config.icons.xoff, | ||
1407 | + y: box.y + config.icons.yoff, | ||
1408 | + width: cfg.w, | ||
1409 | + height: cfg.h, | ||
1410 | + rx: 4 | ||
1411 | + }).style({ | ||
1412 | + stroke: '#000', | ||
1413 | + fill: '#ddd' | ||
1414 | + }); | ||
1415 | + node.append('svg:image') | ||
1405 | .attr({ | 1416 | .attr({ |
1406 | - 'xlink:href': iconUrl, | 1417 | + x: box.x + config.icons.xoff + 2, |
1407 | - width: config.icons.w, | 1418 | + y: box.y + config.icons.yoff + 2, |
1408 | - height: config.icons.h | 1419 | + width: cfg.w - 4, |
1420 | + height: cfg.h - 4, | ||
1421 | + 'xlink:href': icon | ||
1409 | }); | 1422 | }); |
1410 | } | 1423 | } |
1411 | 1424 | ||
1412 | - updateDeviceIconAppearance(node, box, false); | ||
1413 | - | ||
1414 | // debug function to show the modelled x,y coordinates of nodes... | 1425 | // debug function to show the modelled x,y coordinates of nodes... |
1415 | if (debug('showNodeXY')) { | 1426 | if (debug('showNodeXY')) { |
1416 | node.select('rect').attr('fill-opacity', 0.5); | 1427 | node.select('rect').attr('fill-opacity', 0.5); |
... | @@ -1424,43 +1435,41 @@ | ... | @@ -1424,43 +1435,41 @@ |
1424 | } | 1435 | } |
1425 | }); | 1436 | }); |
1426 | 1437 | ||
1438 | + // TODO: better place for this configuration state | ||
1439 | + var defaultHostRadius = 9, | ||
1440 | + hostRadius = { | ||
1441 | + bgpSpeaker: 14, | ||
1442 | + router: 14, | ||
1443 | + host: 14 | ||
1444 | + }, | ||
1445 | + hostIcon = { | ||
1446 | + bgpSpeaker: 'bgpSpeaker', | ||
1447 | + router: 'router', | ||
1448 | + host: 'host' | ||
1449 | + }; | ||
1450 | + | ||
1451 | + | ||
1427 | // augment host nodes... | 1452 | // augment host nodes... |
1428 | entering.filter('.host').each(function (d) { | 1453 | entering.filter('.host').each(function (d) { |
1429 | var node = d3.select(this), | 1454 | var node = d3.select(this), |
1430 | - iconUrl = getIconUrl(d); | 1455 | + r = hostRadius[d.type] || defaultHostRadius, |
1456 | + textDy = r + 10, | ||
1457 | + icon = hostIcon[d.type]; | ||
1431 | 1458 | ||
1432 | // provide ref to element from backing data.... | 1459 | // provide ref to element from backing data.... |
1433 | d.el = node; | 1460 | d.el = node; |
1434 | 1461 | ||
1435 | - // var box = node.append('circle') | 1462 | + node.append('circle') |
1436 | - // .attr('r', r).node().getBBox(); | 1463 | + .attr('r', r); |
1437 | - | ||
1438 | - var textYOff = 0; | ||
1439 | - var textXOff = 0; | ||
1440 | - if (iconUrl) { | ||
1441 | - var computedStyle = window.getComputedStyle(node.node()); | ||
1442 | - var u = node.append('svg:use') | ||
1443 | - .attr({ | ||
1444 | - 'xlink:href': iconUrl, | ||
1445 | - width: config.icons.w, | ||
1446 | - height: config.icons.h, | ||
1447 | - fill: computedStyle.fill, | ||
1448 | - color: computedStyle.color | ||
1449 | - }); | ||
1450 | 1464 | ||
1451 | - var ubbox = node.select('use').node().getBBox(); | 1465 | + if (icon) { |
1452 | - u.attr('y', -ubbox.height/2); | 1466 | + addHostIcon(node, r, icon); |
1453 | - textYOff = ubbox.height/2 + 4; // pad by 4 pixels | ||
1454 | - textXOff = ubbox.width/2; | ||
1455 | } | 1467 | } |
1456 | 1468 | ||
1457 | 1469 | ||
1458 | - | ||
1459 | node.append('text') | 1470 | node.append('text') |
1460 | .text(hostLabel) | 1471 | .text(hostLabel) |
1461 | - .attr('alignment-baseline', 'text-before-edge') | 1472 | + .attr('dy', textDy) |
1462 | - .attr('x', textXOff) | ||
1463 | - .attr('y', textYOff) | ||
1464 | .attr('text-anchor', 'middle'); | 1473 | .attr('text-anchor', 'middle'); |
1465 | 1474 | ||
1466 | // debug function to show the modelled x,y coordinates of nodes... | 1475 | // debug function to show the modelled x,y coordinates of nodes... |
... | @@ -1499,9 +1508,9 @@ | ... | @@ -1499,9 +1508,9 @@ |
1499 | .style('opacity', 0); | 1508 | .style('opacity', 0); |
1500 | // note, leave <g>.remove to remove this element | 1509 | // note, leave <g>.remove to remove this element |
1501 | 1510 | ||
1502 | - node.select('use') | 1511 | + node.select('circle') |
1503 | - .style('color', '#aaa') | 1512 | + .style('stroke-fill', '#555') |
1504 | - .style('fill', '#000') | 1513 | + .style('fill', '#888') |
1505 | .style('opacity', 0.5) | 1514 | .style('opacity', 0.5) |
1506 | .transition() | 1515 | .transition() |
1507 | .duration(1500) | 1516 | .duration(1500) |
... | @@ -1858,7 +1867,7 @@ | ... | @@ -1858,7 +1867,7 @@ |
1858 | function zoomPan(scale, translate) { | 1867 | function zoomPan(scale, translate) { |
1859 | zoomPanContainer.attr("transform", "translate(" + translate + ")scale(" + scale + ")"); | 1868 | zoomPanContainer.attr("transform", "translate(" + translate + ")scale(" + scale + ")"); |
1860 | // keep the map lines constant width while zooming | 1869 | // keep the map lines constant width while zooming |
1861 | - bgImg.attr("stroke-width", config.map.strokeWidth / scale + "px"); | 1870 | + bgImg.style("stroke-width", 2.0 / scale + "px"); |
1862 | } | 1871 | } |
1863 | 1872 | ||
1864 | function resetZoomPan() { | 1873 | function resetZoomPan() { |
... | @@ -1977,27 +1986,6 @@ | ... | @@ -1977,27 +1986,6 @@ |
1977 | gly.defBullhorn(defs); | 1986 | gly.defBullhorn(defs); |
1978 | } | 1987 | } |
1979 | 1988 | ||
1980 | - // create references to bring these into cache so that getBBox() works when they | ||
1981 | - // are inserted later | ||
1982 | - function preloadIcons(svg) { | ||
1983 | - var icons = [ | ||
1984 | - "router", | ||
1985 | - "switch", | ||
1986 | - "roadm", | ||
1987 | - "endstation", | ||
1988 | - "bgpSpeaker" | ||
1989 | - ]; | ||
1990 | - | ||
1991 | - var g = svg.append('g'); | ||
1992 | - for (var icon in icons) { | ||
1993 | - g.append('use') | ||
1994 | - .attr({ | ||
1995 | - 'xlink:href': 'icons.svg#' + icon | ||
1996 | - }); | ||
1997 | - } | ||
1998 | - g.style('visibility', 'hidden'); | ||
1999 | - } | ||
2000 | - | ||
2001 | // ============================== | 1989 | // ============================== |
2002 | // View life-cycle callbacks | 1990 | // View life-cycle callbacks |
2003 | 1991 | ||
... | @@ -2014,7 +2002,6 @@ | ... | @@ -2014,7 +2002,6 @@ |
2014 | setSize(svg, view); | 2002 | setSize(svg, view); |
2015 | 2003 | ||
2016 | loadGlyphs(svg); | 2004 | loadGlyphs(svg); |
2017 | - preloadIcons(svg); | ||
2018 | 2005 | ||
2019 | zoomPanContainer = svg.append('g').attr('id', 'zoomPanContainer'); | 2006 | zoomPanContainer = svg.append('g').attr('id', 'zoomPanContainer'); |
2020 | setupZoomPan(); | 2007 | setupZoomPan(); |
... | @@ -2111,7 +2098,7 @@ | ... | @@ -2111,7 +2098,7 @@ |
2111 | width: config.birdDim, | 2098 | width: config.birdDim, |
2112 | height: config.birdDim, | 2099 | height: config.birdDim, |
2113 | fill: '#111' | 2100 | fill: '#111' |
2114 | - }); | 2101 | + }) |
2115 | } | 2102 | } |
2116 | 2103 | ||
2117 | function para(sel, text) { | 2104 | function para(sel, text) { |
... | @@ -2226,13 +2213,11 @@ | ... | @@ -2226,13 +2213,11 @@ |
2226 | .translate(t); | 2213 | .translate(t); |
2227 | 2214 | ||
2228 | bgImg = zoomPanContainer.insert("g", '#topo-G'); | 2215 | bgImg = zoomPanContainer.insert("g", '#topo-G'); |
2229 | - // pointer-events: none so that browser select tools don't pick up the map svg | 2216 | + bgImg.attr('id', 'map').selectAll('path') |
2230 | - bgImg.attr('id', 'map').attr('stroke-width', config.map.strokeWidth + 'px').style('pointer-events', 'none') | 2217 | + .data(topoData.features) |
2231 | - .selectAll('path') | 2218 | + .enter() |
2232 | - .data(topoData.features) | 2219 | + .append('path') |
2233 | - .enter() | 2220 | + .attr('d', path); |
2234 | - .append('path') | ||
2235 | - .attr('d', path); | ||
2236 | } | 2221 | } |
2237 | 2222 | ||
2238 | function resize(view, ctx, flags) { | 2223 | function resize(view, ctx, flags) { | ... | ... |
1 | -.theme_dark #topo { | ||
2 | - background-color: #20201D; | ||
3 | -} | ||
4 | - | ||
5 | -.theme_dark #topo #map { | ||
6 | - stroke: #444; | ||
7 | -} | ||
8 | - | ||
9 | -/* note: device is offline without the 'online' class */ | ||
10 | -.theme_dark #topo svg .node.device { | ||
11 | - fill: #777; | ||
12 | -} | ||
13 | - | ||
14 | -.theme_dark #topo .host { | ||
15 | - fill: #000; | ||
16 | - color: white; | ||
17 | -} | ||
18 | - | ||
19 | - | ||
20 | -.theme_dark #topo svg .node.device.switch.online { | ||
21 | - fill: #000; | ||
22 | -} | ||
23 | - | ||
24 | -.theme_dark #topo svg .node.device.roadm.online { | ||
25 | - fill: #03c; | ||
26 | -} | ||
27 | - | ||
28 | -/* note: device is offline without the 'online' class */ | ||
29 | -.theme_dark #topo svg .node.device text { | ||
30 | - fill: #aaa; | ||
31 | -} | ||
32 | - | ||
33 | -.theme_dark #topo svg .node.device.online { | ||
34 | - color: white; | ||
35 | -} | ||
36 | -.theme_dark #topo svg .node.device.online text { | ||
37 | - fill: currentColor; | ||
38 | -} | ||
39 | - | ||
40 | -.theme_dark #topo svg .glyph { | ||
41 | - fill: white; | ||
42 | -} | ||
43 | - | ||
44 | -.theme_dark #topo-oibox .onosInst { | ||
45 | - color: #444; | ||
46 | - background-color: #ccc; | ||
47 | - border-color: #aaa; | ||
48 | -} | ||
49 | - | ||
50 | -.theme_dark #topo-oibox .onosInst.online { | ||
51 | - color: #113; | ||
52 | - background-color: #bbf; | ||
53 | - border-color: #555; | ||
54 | -} | ||
55 | - | ||
56 | -.theme_dark #topo-oibox .onosInst .onosTitle { | ||
57 | - color: #888; | ||
58 | -} | ||
59 | - | ||
60 | -.theme_dark #topo svg .node.device.fixed.online rect { | ||
61 | - stroke: #666; | ||
62 | -} | ||
63 | - | ||
64 | -.theme_dark #topo svg .node.host { | ||
65 | - stroke: #000; | ||
66 | -} | ||
67 | - | ||
68 | -.theme_dark #topo-detail .actionBtn { | ||
69 | - border-color: #ddf; | ||
70 | - color: #99f; | ||
71 | -} | ||
72 | - | ||
73 | -.theme_dark #topo-detail .actionBtn:hover { | ||
74 | - border-color: #ddf; | ||
75 | - background: #eef; | ||
76 | - color: #77d; | ||
77 | -} | ||
78 | - | ||
79 | -.theme_dark #topo svg .link.primary { | ||
80 | - stroke: #f11; | ||
81 | -} | ||
82 | - | ||
83 | -.theme_dark #topo svg .link.secondary { | ||
84 | - stroke: rgba(255,100,100,0.5); | ||
85 | -} | ||
86 | - | ||
87 | -.theme_dark #topo svg .link.animated { | ||
88 | - stroke: #f11; | ||
89 | -} | ||
90 | - | ||
91 | -.theme_dark #topo svg .link.primary.optical { | ||
92 | - stroke: #74f; | ||
93 | -} | ||
94 | - | ||
95 | -.theme_dark #topo svg .link.secondary.optical { | ||
96 | - stroke: rgba(128,64,255,0.5); | ||
97 | -} | ||
98 | - | ||
99 | -.theme_dark #topo svg .link.animated.optical { | ||
100 | - stroke: #74f; | ||
101 | -} | ||
102 | - | ||
103 | -/*.theme_dark #topo .link { | ||
104 | - stroke: #666; | ||
105 | -} | ||
106 | -*/ | ||
107 | - |
-
Please register or login to post a comment