blob: d14b966cf5f72800a7a0caf70db294cf666176dc [file] [log] [blame]
Simon Hunt195cb382014-11-03 17:50:51 -08001/*
2 * Copyright 2014 Open Networking Laboratory
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17/*
18 ONOS GUI -- Topology view -- CSS file
19
20 @author Simon Hunt
21 */
22
Simon Hunt56d51852014-11-09 13:03:35 -080023#topo svg #topo-bg {
Simon Hunt142d0032014-11-04 20:13:09 -080024 opacity: 0.5;
25}
26
Paul Greyson6cb8ca02014-11-12 18:09:02 -080027#topo #map {
28 stroke-width: 2px;
29 stroke: #aaaaaa;
30 fill: transparent;
31}
32
Simon Huntac9e24f2014-11-12 10:12:21 -080033
Simon Hunt7fa116d2014-11-17 14:16:55 -080034#topo svg .glyph {
35 fill: white;
36 stroke: none;
37}
38
Simon Hunt1a9eff92014-11-07 11:06:34 -080039/* NODES */
40
Simon Huntac9e24f2014-11-12 10:12:21 -080041#topo svg .node {
Simon Hunt99c13842014-11-06 18:23:12 -080042 cursor: pointer;
43}
44
Simon Huntac9e24f2014-11-12 10:12:21 -080045#topo svg .node.selected rect,
46#topo svg .node.selected circle {
47 filter: url(#blue-glow);
48}
49
50/* for debugging */
51#topo svg .node circle.debug {
52 fill: white;
53 stroke: red;
54}
55
56#topo svg .node text {
57 pointer-events: none;
58}
59
60/* Device Nodes */
61
62#topo svg .node.device {
63}
64
Simon Hunt56d51852014-11-09 13:03:35 -080065#topo svg .node.device rect {
Simon Hunt1a9eff92014-11-07 11:06:34 -080066 stroke-width: 1.5px;
67}
68
Simon Hunt56d51852014-11-09 13:03:35 -080069#topo svg .node.device.fixed rect {
Simon Hunt99c13842014-11-06 18:23:12 -080070 stroke-width: 1.5;
71 stroke: #ccc;
72}
73
Simon Huntbb282f52014-11-10 11:08:19 -080074/* note: device is offline without the 'online' class */
75#topo svg .node.device {
76 fill: #777;
77}
78
79#topo svg .node.device.switch.online {
Simon Hunt99c13842014-11-06 18:23:12 -080080 fill: #17f;
81}
82
Simon Huntbb282f52014-11-10 11:08:19 -080083#topo svg .node.device.roadm.online {
Simon Huntc7ee0662014-11-05 16:44:37 -080084 fill: #03c;
Simon Hunt99c13842014-11-06 18:23:12 -080085}
86
Simon Huntbb282f52014-11-10 11:08:19 -080087/* note: device is offline without the 'online' class */
Simon Hunt7cd48f32014-11-09 23:42:50 -080088#topo svg .node.device text {
Simon Huntbb282f52014-11-10 11:08:19 -080089 fill: #aaa;
Simon Hunt99c13842014-11-06 18:23:12 -080090 font: 10pt sans-serif;
Simon Hunt99c13842014-11-06 18:23:12 -080091}
92
Simon Huntbb282f52014-11-10 11:08:19 -080093#topo svg .node.device.online text {
94 fill: white;
95}
96
Simon Huntac9e24f2014-11-12 10:12:21 -080097
98/* Host Nodes */
99
100#topo svg .node.host {
Simon Hunt7fa116d2014-11-17 14:16:55 -0800101 stroke: #000;
Simon Huntac9e24f2014-11-12 10:12:21 -0800102}
103
Simon Hunt7cd48f32014-11-09 23:42:50 -0800104#topo svg .node.host text {
105 fill: #846;
Simon Hunt7fa116d2014-11-17 14:16:55 -0800106 stroke: none;
Simon Hunt7cd48f32014-11-09 23:42:50 -0800107 font: 9pt sans-serif;
Simon Hunt7cd48f32014-11-09 23:42:50 -0800108}
109
Simon Hunt7fa116d2014-11-17 14:16:55 -0800110svg .node.host circle {
111 fill: #c96;
112}
113
114#topo svg .node.host.bgpSpeaker circle {
115 fill: #853;
116}
Simon Hunt1a9eff92014-11-07 11:06:34 -0800117
118/* LINKS */
119
Simon Hunt56d51852014-11-09 13:03:35 -0800120#topo svg .link {
Simon Hunt1a9eff92014-11-07 11:06:34 -0800121 opacity: .7;
122}
123
Thomas Vachuskae4cebaf2014-11-15 18:49:34 -0800124#topo svg .link.inactive {
125 opacity: .2;
126 stroke-dasharray: 8 4;
127}
128
Simon Hunta255a2c2014-11-13 22:29:35 -0800129#topo svg .link.primary {
130 stroke: #f11;
Simon Hunt7cd48f32014-11-09 23:42:50 -0800131 stroke-width: 6px;
Thomas Vachuska4830d392014-11-09 17:09:56 -0800132}
Simon Hunta255a2c2014-11-13 22:29:35 -0800133#topo svg .link.secondary {
134 stroke: rgba(255,100,100,0.5);
135 stroke-width: 4px;
136}
137#topo svg .link.animated {
138 stroke: #f11;
139 stroke-width: 10px;
140 stroke-dasharray: 8 8
141}
142
143#topo svg .link.primary.optical {
144 stroke: #74f;
145 stroke-width: 6px;
146}
147#topo svg .link.secondary.optical {
148 stroke: rgba(128,64,255,0.5);
149 stroke-width: 4px;
150}
151#topo svg .link.animated.optical {
152 stroke: #74f;
153 stroke-width: 10px;
154 stroke-dasharray: 8 8
155}
Thomas Vachuska4830d392014-11-09 17:09:56 -0800156
Simon Hunte2575b62014-11-18 15:25:53 -0800157#topo svg .linkLabel rect {
158 fill: #eef;
159 stroke: blue;
160 stroke-width: 0.3;
161}
162#topo svg .linkLabel text {
163 text-anchor: middle;
164 fill: #a13d11;
165 stroke: none;
166 font-size: 8pt;
167}
Simon Hunt61d04042014-11-11 17:27:16 -0800168
Simon Huntac9e24f2014-11-12 10:12:21 -0800169/* Fly-in details pane */
Simon Hunt61d04042014-11-11 17:27:16 -0800170
171#topo-detail {
172/* gets base CSS from .fpanel in floatPanel.css */
173}
174
Simon Hunt61d04042014-11-11 17:27:16 -0800175#topo-detail h2 {
176 margin: 8px 4px;
177 color: black;
178 vertical-align: middle;
179}
180
181#topo-detail h2 img {
182 height: 32px;
183 padding-right: 8px;
184 vertical-align: middle;
185}
186
187#topo-detail p, table {
188 margin: 4px 4px;
189}
190
191#topo-detail td.label {
192 font-style: italic;
193 color: #777;
194 padding-right: 12px;
195}
196
197#topo-detail td.value {
Simon Hunt61d04042014-11-11 17:27:16 -0800198}
199
Simon Huntb53e0682014-11-12 13:32:01 -0800200
Simon Huntd72bc702014-11-13 18:38:04 -0800201#topo-detail .actionBtn {
202 margin: 6px 12px;
203 padding: 2px 6px;
204 font-size: 9pt;
205 cursor: pointer;
206 width: 50%;
207 text-align: center;
208
209 /* theme specific... */
210 border: 1px solid #ddf;
211 color: #99f;
212}
213
214#topo-detail .actionBtn:hover {
215 /* theme specific... */
216 border: 1px solid #ddf;
217 background: #eef;
218 color: #77d;
219}
220
Simon Huntb53e0682014-11-12 13:32:01 -0800221
Simon Hunt61d04042014-11-11 17:27:16 -0800222#topo-detail hr {
223 height: 1px;
224 color: #ccc;
225 background-color: #ccc;
226 border: 0;
227}
228
Simon Hunta5e89142014-11-14 07:00:33 -0800229/* ONOS instance stuff */
230
231#topo-oibox {
232 width: 80px;
233}
234
235#topo-oibox .onosInst {
Simon Hunt9c15eca2014-11-15 18:37:59 -0800236 position: relative;
Simon Hunta5e89142014-11-14 07:00:33 -0800237 width: 80%;
238 left: 10%;
Simon Hunt9c15eca2014-11-15 18:37:59 -0800239 height: 80px;
240 margin: 4px 0;
Simon Hunta5e89142014-11-14 07:00:33 -0800241 cursor: pointer;
242
243 /* theme-related */
244 color: #444;
245 background-color: #ccc;
Simon Hunt9c15eca2014-11-15 18:37:59 -0800246 border: 2px solid #aaa;
Simon Hunta5e89142014-11-14 07:00:33 -0800247}
248
Simon Hunta5e89142014-11-14 07:00:33 -0800249#topo-oibox .onosInst.online {
250 /* theme-related */
251 color: #113;
252 background-color: #bbf;
253 border: 2px solid #555;
254}
255
Simon Hunt9c15eca2014-11-15 18:37:59 -0800256#topo-oibox .onosInst .onosTitle {
257 text-align: center;
258 font-size: 11pt;
259 margin-top: 6px;
260 color: #888;
261}
262
263#topo-oibox .onosInst.online .onosTitle {
264 color: black;
265}
266
267#topo-oibox .onosInst img {
268 opacity: 0.5;
269}
270
271#topo-oibox .onosInst.online img {
272 opacity: 1.0;
273}
274
275#topo-oibox .onosInst img.ui {
276 opacity: 1;
277 position: absolute;
278 top: 3px;
279 right: 3px;
280 width: 20px;
281 height: 20px;
282}
283
Simon Hunt9462e8c2014-11-14 17:28:09 -0800284#topo-oibox .onosInst.mastership {
285 opacity: 0.3;
286}
287#topo-oibox .onosInst.mastership.affinity {
288 opacity: 1.0;
Simon Hunt7fa116d2014-11-17 14:16:55 -0800289 box-shadow: 0 2px 8px #33e;
Simon Hunt9462e8c2014-11-14 17:28:09 -0800290}
291
292
293#topo svg .suppressed {
Simon Hunta5e89142014-11-14 07:00:33 -0800294 opacity: 0.2;
295}
296
Simon Hunt0c6d4192014-11-12 12:07:10 -0800297/* Web Socket Closed Mask (starts hidden) */
298
299#topo-mask {
300 display: none;
301 position: absolute;
302 top: 0;
303 left: 0;
304 width: 10000px;
305 height: 8000px;
306 z-index: 5000;
307 background-color: rgba(0,0,0,0.75);
308 padding: 60px;
309}
310
311#topo-mask p {
312 margin: 8px 20px;
313 color: #ddd;
314 font-size: 14pt;
315 font-style: italic;
316}
317