blob: ddf15b6aef8b27b565e911ae4d3e3a3bd2433a02 [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
Simon Hunt195cb382014-11-03 17:50:51 -080019 */
20
Simon Hunt56d51852014-11-09 13:03:35 -080021#topo svg #topo-bg {
Simon Hunt142d0032014-11-04 20:13:09 -080022 opacity: 0.5;
23}
24
Paul Greyson6cb8ca02014-11-12 18:09:02 -080025#topo #map {
Thomas Vachuska89543292014-11-19 11:28:33 -080026 stroke-width: 2px;
Thomas Vachuskacd2920c2014-11-19 14:49:55 -080027 stroke: #eee;
Paul Greyson6cb8ca02014-11-12 18:09:02 -080028 fill: transparent;
29}
30
Simon Huntc72967b2014-11-20 09:21:42 -080031/* TODO: move glyphs into framework */
Simon Huntac9e24f2014-11-12 10:12:21 -080032
Simon Huntc72967b2014-11-20 09:21:42 -080033#topo svg .glyphIcon {
34 fill: black;
35 stroke: none;
36 fill-rule: evenodd;
37}
38#topo svg .glyphIcon rect {
39 fill: #ddd;
Simon Hunt7fa116d2014-11-17 14:16:55 -080040 stroke: none;
41}
42
Simon Huntb82f6902014-11-22 11:53:15 -080043
Simon Hunt233747b2014-12-04 12:01:58 -080044#topo svg .noDevsLayer {
45 visibility: hidden;
46}
47
48#topo svg .noDevsLayer text {
49 font-size: 60pt;
50 font-style: italic;
51 fill: #dde;
52}
53
54#topo svg .noDevsBird {
55 fill: #ecd;
56}
57
Simon Hunt1a9eff92014-11-07 11:06:34 -080058/* NODES */
59
Simon Huntac9e24f2014-11-12 10:12:21 -080060#topo svg .node {
Simon Hunt99c13842014-11-06 18:23:12 -080061 cursor: pointer;
62}
63
Simon Huntac9e24f2014-11-12 10:12:21 -080064#topo svg .node.selected rect,
65#topo svg .node.selected circle {
Simon Hunt8dde2322014-11-21 11:42:10 -080066 fill: #f90;
Simon Huntac9e24f2014-11-12 10:12:21 -080067 filter: url(#blue-glow);
68}
69
Simon Huntac9e24f2014-11-12 10:12:21 -080070#topo svg .node text {
71 pointer-events: none;
72}
73
74/* Device Nodes */
75
76#topo svg .node.device {
77}
78
Simon Hunt56d51852014-11-09 13:03:35 -080079#topo svg .node.device rect {
Simon Hunt38ab8802014-11-28 13:49:08 -080080 stroke-width: 1.5;
Simon Hunt1a9eff92014-11-07 11:06:34 -080081}
82
Simon Hunt56d51852014-11-09 13:03:35 -080083#topo svg .node.device.fixed rect {
Simon Hunt99c13842014-11-06 18:23:12 -080084 stroke-width: 1.5;
Thomas Vachuska89543292014-11-19 11:28:33 -080085 stroke: #ccc;
Simon Hunt99c13842014-11-06 18:23:12 -080086}
87
Simon Huntbb282f52014-11-10 11:08:19 -080088/* note: device is offline without the 'online' class */
Thomas Vachuska89543292014-11-19 11:28:33 -080089#topo svg .node.device {
90 fill: #777;
91}
92
Simon Hunt8dde2322014-11-21 11:42:10 -080093#topo svg .node.device.online {
Simon Huntb0ecfa52014-11-23 21:05:12 -080094 fill: #6e7fa3;
Thomas Vachuska89543292014-11-19 11:28:33 -080095}
96
Simon Huntbb282f52014-11-10 11:08:19 -080097/* note: device is offline without the 'online' class */
Simon Hunt7cd48f32014-11-09 23:42:50 -080098#topo svg .node.device text {
Simon Huntb0ecfa52014-11-23 21:05:12 -080099 fill: #bbb;
Simon Hunt99c13842014-11-06 18:23:12 -0800100 font: 10pt sans-serif;
Simon Hunt99c13842014-11-06 18:23:12 -0800101}
102
Thomas Vachuska89543292014-11-19 11:28:33 -0800103#topo svg .node.device.online text {
104 fill: white;
105}
106
Simon Hunt8dde2322014-11-21 11:42:10 -0800107#topo svg .node.device .glyphIcon rect {
108 fill: #aaa;
109}
110#topo svg .node.device .glyphIcon use {
111 fill: #777;
112}
113#topo svg .node.device.selected .glyphIcon rect {
114 fill: #f90;
115}
116#topo svg .node.device.online .glyphIcon rect {
Simon Huntb0ecfa52014-11-23 21:05:12 -0800117 fill: #ccc;
Simon Hunt8dde2322014-11-21 11:42:10 -0800118}
119#topo svg .node.device.online .glyphIcon use {
120 fill: #000;
121}
122#topo svg .node.device.online.selected .glyphIcon rect {
123 fill: #f90;
124}
125
Thomas Vachuska89543292014-11-19 11:28:33 -0800126
Simon Huntac9e24f2014-11-12 10:12:21 -0800127/* Host Nodes */
128
Thomas Vachuska89543292014-11-19 11:28:33 -0800129#topo svg .node.host {
130 stroke: #000;
131}
132
Simon Hunt7cd48f32014-11-09 23:42:50 -0800133#topo svg .node.host text {
134 fill: #846;
Simon Hunt7fa116d2014-11-17 14:16:55 -0800135 stroke: none;
Simon Hunt7cd48f32014-11-09 23:42:50 -0800136 font: 9pt sans-serif;
Simon Hunt7cd48f32014-11-09 23:42:50 -0800137}
138
Simon Hunt7fa116d2014-11-17 14:16:55 -0800139svg .node.host circle {
Thomas Vachuska89543292014-11-19 11:28:33 -0800140 stroke: #000;
Simon Hunt8dde2322014-11-21 11:42:10 -0800141 fill: #edb;
Simon Hunt7fa116d2014-11-17 14:16:55 -0800142}
143
Simon Hunt1a9eff92014-11-07 11:06:34 -0800144/* LINKS */
145
Simon Hunt56d51852014-11-09 13:03:35 -0800146#topo svg .link {
Thomas Vachuska9edca302014-11-22 17:06:42 -0800147 opacity: .9;
Simon Hunt1a9eff92014-11-07 11:06:34 -0800148}
149
Thomas Vachuskae4cebaf2014-11-15 18:49:34 -0800150#topo svg .link.inactive {
Thomas Vachuska9edca302014-11-22 17:06:42 -0800151 opacity: .5;
Thomas Vachuskae4cebaf2014-11-15 18:49:34 -0800152 stroke-dasharray: 8 4;
153}
154
Simon Hunta255a2c2014-11-13 22:29:35 -0800155#topo svg .link.secondary {
Thomas Vachuskaa3148a72014-11-19 21:38:35 -0800156 stroke: rgba(0,153,51,0.5);
Thomas Vachuskacd2920c2014-11-19 14:49:55 -0800157 stroke-width: 3px;
Simon Hunta255a2c2014-11-13 22:29:35 -0800158}
Thomas Vachuska5fedb7a2014-11-20 00:55:08 -0800159#topo svg .link.primary {
160 stroke: #ffA300;
161 stroke-width: 4px;
162}
Simon Hunta255a2c2014-11-13 22:29:35 -0800163#topo svg .link.animated {
Thomas Vachuskaa3148a72014-11-19 21:38:35 -0800164 stroke: #ffA300;
Simon Hunta255a2c2014-11-13 22:29:35 -0800165}
166
Simon Hunta255a2c2014-11-13 22:29:35 -0800167#topo svg .link.secondary.optical {
Thomas Vachuska89543292014-11-19 11:28:33 -0800168 stroke: rgba(128,64,255,0.5);
Simon Hunta255a2c2014-11-13 22:29:35 -0800169 stroke-width: 4px;
170}
Thomas Vachuska5fedb7a2014-11-20 00:55:08 -0800171#topo svg .link.primary.optical {
172 stroke: #74f;
173 stroke-width: 6px;
174}
Simon Hunta255a2c2014-11-13 22:29:35 -0800175#topo svg .link.animated.optical {
Thomas Vachuska89543292014-11-19 11:28:33 -0800176 stroke: #74f;
Simon Hunta255a2c2014-11-13 22:29:35 -0800177 stroke-width: 10px;
Simon Hunta255a2c2014-11-13 22:29:35 -0800178}
Thomas Vachuska4830d392014-11-09 17:09:56 -0800179
Simon Hunte2575b62014-11-18 15:25:53 -0800180#topo svg .linkLabel rect {
Thomas Vachuska20322ff2014-11-19 16:22:25 -0800181 fill: #eee;
182 stroke: none;
Simon Hunte2575b62014-11-18 15:25:53 -0800183}
184#topo svg .linkLabel text {
185 text-anchor: middle;
Thomas Vachuska20322ff2014-11-19 16:22:25 -0800186 stroke: #777;
Simon Hunt38ab8802014-11-28 13:49:08 -0800187 stroke-width: 0.1;
Thomas Vachuska20322ff2014-11-19 16:22:25 -0800188 font-size: 9pt;
Simon Hunte2575b62014-11-18 15:25:53 -0800189}
Simon Hunt61d04042014-11-11 17:27:16 -0800190
Thomas Vachuska47635c62014-11-22 01:21:36 -0800191/* Fly-in summary pane */
192
193#topo-summary {
194 /* gets base CSS from .fpanel in floatPanel.css */
195 top: 64px;
196}
197
198#topo-summary svg {
199 display: inline-block;
200 width: 42px;
201 height: 42px;
202}
203
204#topo-summary svg .glyphIcon {
205 fill: black;
206 stroke: none;
207 fill-rule: evenodd;
208}
209
210#topo-summary h2 {
211 position: absolute;
Simon Hunt38ab8802014-11-28 13:49:08 -0800212 margin: 0 4px;
Thomas Vachuska47635c62014-11-22 01:21:36 -0800213 top: 20px;
214 left: 50px;
215 color: black;
216}
217
218#topo-summary h3 {
Simon Hunt38ab8802014-11-28 13:49:08 -0800219 margin: 0 4px;
Thomas Vachuska47635c62014-11-22 01:21:36 -0800220 top: 20px;
221 left: 50px;
222 color: black;
223}
224
225#topo-summary p, table {
226 margin: 4px 4px;
227}
228
229#topo-summary td.label {
230 font-style: italic;
231 color: #777;
232 padding-right: 12px;
233}
234
235#topo-summary td.value {
236}
237
238#topo-summary hr {
239 height: 1px;
240 color: #ccc;
241 background-color: #ccc;
242 border: 0;
243}
244
Simon Huntac9e24f2014-11-12 10:12:21 -0800245/* Fly-in details pane */
Simon Hunt61d04042014-11-11 17:27:16 -0800246
247#topo-detail {
Thomas Vachuska47635c62014-11-22 01:21:36 -0800248 /* gets base CSS from .fpanel in floatPanel.css */
249 top: 320px;
250
Simon Hunt61d04042014-11-11 17:27:16 -0800251}
252
Simon Hunta6a9fe72014-11-20 11:17:12 -0800253#topo-detail svg {
254 display: inline-block;
255 width: 42px;
256 height: 42px;
Simon Hunt61d04042014-11-11 17:27:16 -0800257}
258
Simon Hunta6a9fe72014-11-20 11:17:12 -0800259#topo-detail svg .glyphIcon {
260 fill: black;
261 stroke: none;
262 fill-rule: evenodd;
263}
264
265#topo-detail h2 {
266 position: absolute;
Simon Hunt38ab8802014-11-28 13:49:08 -0800267 margin: 0 4px;
Simon Hunta3dd9572014-11-20 15:22:41 -0800268 top: 20px;
269 left: 50px;
270 color: black;
271}
272
273#topo-detail h3 {
Simon Hunt38ab8802014-11-28 13:49:08 -0800274 margin: 0 4px;
Simon Hunta6a9fe72014-11-20 11:17:12 -0800275 top: 20px;
276 left: 50px;
277 color: black;
Simon Hunt61d04042014-11-11 17:27:16 -0800278}
279
280#topo-detail p, table {
281 margin: 4px 4px;
282}
283
284#topo-detail td.label {
285 font-style: italic;
286 color: #777;
287 padding-right: 12px;
288}
289
290#topo-detail td.value {
Simon Hunt61d04042014-11-11 17:27:16 -0800291}
292
Simon Huntb53e0682014-11-12 13:32:01 -0800293
Simon Huntd72bc702014-11-13 18:38:04 -0800294#topo-detail .actionBtn {
295 margin: 6px 12px;
296 padding: 2px 6px;
297 font-size: 9pt;
298 cursor: pointer;
Thomas Vachuska9edca302014-11-22 17:06:42 -0800299 width: 200px;
Simon Huntd72bc702014-11-13 18:38:04 -0800300 text-align: center;
Thomas Vachuska89543292014-11-19 11:28:33 -0800301
302 /* theme specific... */
Thomas Vachuska4731f122014-11-20 04:56:19 -0800303 border: 2px solid #ddd;
304 border-radius: 4px;
305 color: #eee;
306 background: #888;
Simon Huntd72bc702014-11-13 18:38:04 -0800307}
308
309#topo-detail .actionBtn:hover {
Thomas Vachuska89543292014-11-19 11:28:33 -0800310 /* theme specific... */
Thomas Vachuska4731f122014-11-20 04:56:19 -0800311 border: 2px solid #ddd;
312 color: #eee;
313 background: #444;
Simon Huntd72bc702014-11-13 18:38:04 -0800314}
315
Simon Huntb53e0682014-11-12 13:32:01 -0800316
Simon Hunt61d04042014-11-11 17:27:16 -0800317#topo-detail hr {
318 height: 1px;
319 color: #ccc;
320 background-color: #ccc;
321 border: 0;
322}
323
Simon Hunta5e89142014-11-14 07:00:33 -0800324/* ONOS instance stuff */
325
326#topo-oibox {
Simon Huntb82f6902014-11-22 11:53:15 -0800327 height: 100px;
Simon Hunta5e89142014-11-14 07:00:33 -0800328}
329
Simon Huntb82f6902014-11-22 11:53:15 -0800330#topo-oibox div.onosInst {
331 display: inline-block;
Simon Hunt7b403bc2014-11-22 19:01:00 -0800332 width: 170px;
333 height: 85px;
334 cursor: pointer;
Simon Huntb82f6902014-11-22 11:53:15 -0800335}
336
337#topo-oibox svg rect {
338 fill: #ccc;
339 stroke: #aaa;
340 stroke-width: 3.5;
341}
342#topo-oibox .online svg rect {
343 opacity: 1;
344 fill: #9cf;
Simon Hunt925dfc02014-11-29 12:11:51 -0800345 stroke: #555;
Simon Huntb82f6902014-11-22 11:53:15 -0800346}
347
348#topo-oibox svg .glyphIcon {
349 fill: #888;
350 fill-rule: evenodd;
351}
352#topo-oibox .online svg .glyphIcon {
353 fill: #000;
354}
355
356#topo-oibox svg .badgeIcon {
Simon Hunt925dfc02014-11-29 12:11:51 -0800357 fill: #777;
Simon Huntb82f6902014-11-22 11:53:15 -0800358 fill-rule: evenodd;
359}
360
361#topo-oibox .online svg .badgeIcon {
362 fill: #fff;
363}
364
Simon Hunt7b403bc2014-11-22 19:01:00 -0800365#topo-oibox svg text {
366 text-anchor: middle;
Simon Hunt925dfc02014-11-29 12:11:51 -0800367 fill: #777;
Simon Hunt7b403bc2014-11-22 19:01:00 -0800368}
369#topo-oibox .online svg text {
Thomas Vachuskae02e11c2014-11-24 16:13:52 -0800370 fill: #eee;
Simon Hunt7b403bc2014-11-22 19:01:00 -0800371}
372
373#topo-oibox svg text.instTitle {
374 font-size: 11pt;
375 font-weight: bold;
376}
377#topo-oibox svg text.instLabel {
378 font-size: 9pt;
379 font-style: italic;
380}
Simon Huntb82f6902014-11-22 11:53:15 -0800381
382#topo-oibox .onosInst.mastership {
383 opacity: 0.3;
384}
385#topo-oibox .onosInst.mastership.affinity {
386 opacity: 1.0;
387}
388#topo-oibox .onosInst.mastership.affinity svg rect {
389 filter: url(#blue-glow);
390}
391
Simon Hunt9462e8c2014-11-14 17:28:09 -0800392
393#topo svg .suppressed {
Simon Hunta5e89142014-11-14 07:00:33 -0800394 opacity: 0.2;
395}
396
Simon Hunta6a9fe72014-11-20 11:17:12 -0800397/* Death Mask (starts hidden) */
Simon Hunt0c6d4192014-11-12 12:07:10 -0800398
399#topo-mask {
400 display: none;
401 position: absolute;
402 top: 0;
403 left: 0;
404 width: 10000px;
405 height: 8000px;
406 z-index: 5000;
407 background-color: rgba(0,0,0,0.75);
408 padding: 60px;
409}
410
411#topo-mask p {
412 margin: 8px 20px;
413 color: #ddd;
414 font-size: 14pt;
415 font-style: italic;
416}
417