blob: 0caeec728ea12d51bc81e1c4cde4f25a15989a1f [file] [log] [blame]
Simon Huntef31fb22014-12-19 13:16:44 -08001/*
Simon Hunt8ead3a22015-01-06 11:00:15 -08002 * Copyright 2014,2015 Open Networking Laboratory
Simon Huntef31fb22014-12-19 13:16:44 -08003 *
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 Huntef31fb22014-12-19 13:16:44 -080019 */
20
Simon Hunt7c8ab8d2015-02-03 15:05:15 -080021/* --- Base SVG Layer --- */
Simon Hunt626d2102015-01-29 11:54:50 -080022
Simon Huntd552ee92015-04-02 17:06:35 -070023#ov-topo svg {
24 /* prevents the little cut/copy/paste square that would appear on iPad */
25 -webkit-user-select: none;
26}
Simon Hunt5ee36e02015-01-15 10:33:20 -080027.light #ov-topo svg {
Simon Hunt426bd862015-01-14 16:48:41 -080028 background-color: #fff;
Simon Hunt6cc53692015-01-07 11:33:45 -080029}
Simon Hunt5ee36e02015-01-15 10:33:20 -080030.dark #ov-topo svg {
31 background-color: #2b2b2b;
32}
Simon Hunt426bd862015-01-14 16:48:41 -080033
Simon Hunt7c8ab8d2015-02-03 15:05:15 -080034
35/* --- "No Devices" Layer --- */
36
37#ov-topo svg #topo-noDevsLayer {
38 visibility: hidden;
39}
40
41.light #ov-topo svg .noDevsBird {
42 fill: #ecd;
43}
44.dark #ov-topo svg .noDevsBird {
45 fill: #683434;
46}
47
48#ov-topo svg #topo-noDevsLayer text {
49 font-size: 60pt;
50 font-style: italic;
51}
52.light #ov-topo svg #topo-noDevsLayer text {
53 fill: #dde;
54}
55.dark #ov-topo svg #topo-noDevsLayer text {
56 fill: #3b3b4f;
57}
58
59
60/* --- Topo Map --- */
61
Simon Hunt426bd862015-01-14 16:48:41 -080062#ov-topo svg #topo-map {
63 stroke-width: 2px;
Simon Hunt426bd862015-01-14 16:48:41 -080064 fill: transparent;
Simon Hunt5ee36e02015-01-15 10:33:20 -080065}
66
67.light #ov-topo svg #topo-map {
Simon Hunt445e8152015-02-06 13:00:12 -080068 stroke: #eee;
Simon Hunt5ee36e02015-01-15 10:33:20 -080069}
70.dark #ov-topo svg #topo-map {
71 stroke: #444;
72}
Simon Hunt626d2102015-01-29 11:54:50 -080073
74
Simon Hunt4b668592015-01-29 17:33:53 -080075/* --- Topo Summary Panel --- */
Simon Hunt626d2102015-01-29 11:54:50 -080076
77#topo-p-summary {
78 /* Base css from panel.css */
Simon Hunt626d2102015-01-29 11:54:50 -080079}
80
Simon Hunt08f841d02015-02-10 14:39:20 -080081/* --- Topo Detail Panel --- */
82
83#topo-p-detail {
84 /* Base css from panel.css */
85 top: 320px;
86}
87
88/* --- general topo-panel styling --- */
89
90.topo-p svg {
Simon Hunt626d2102015-01-29 11:54:50 -080091 display: inline-block;
92 width: 42px;
93 height: 42px;
94}
95
Simon Hunt08f841d02015-02-10 14:39:20 -080096.light .topo-p svg .glyph {
97 fill: #222;
98}
99
100.dark .topo-p svg .glyph.overlay {
101 fill: #222;
102}
103
104.dark .topo-p svg .glyph {
105 fill: #ddd;
106}
107.light .topo-p svg .glyph.overlay {
108 fill: #fff;
109}
110
111
112.topo-p h2 {
Simon Hunt626d2102015-01-29 11:54:50 -0800113 position: absolute;
114 margin: 0 4px;
115 top: 20px;
116 left: 50px;
117}
Simon Hunt08f841d02015-02-10 14:39:20 -0800118.light .topo-p h2 {
Simon Hunt626d2102015-01-29 11:54:50 -0800119 color: black;
120}
Simon Hunt08f841d02015-02-10 14:39:20 -0800121.dark .topo-p h2 {
Simon Hunt626d2102015-01-29 11:54:50 -0800122 color: #ddd;
123}
124
Simon Hunt08f841d02015-02-10 14:39:20 -0800125.topo-p h3 {
Simon Hunt626d2102015-01-29 11:54:50 -0800126 margin: 0 4px;
127 top: 20px;
128 left: 50px;
129}
Simon Hunt08f841d02015-02-10 14:39:20 -0800130.light .topo-p h3 {
Simon Hunt626d2102015-01-29 11:54:50 -0800131 color: black;
132}
Simon Hunt08f841d02015-02-10 14:39:20 -0800133.dark .topo-p h3 {
Simon Hunt626d2102015-01-29 11:54:50 -0800134 color: #ddd;
135}
136
Simon Hunt08f841d02015-02-10 14:39:20 -0800137.topo-p p, table {
Simon Hunt626d2102015-01-29 11:54:50 -0800138 margin: 4px 4px;
139}
140
Simon Hunt08f841d02015-02-10 14:39:20 -0800141.topo-p td.label {
Simon Hunt626d2102015-01-29 11:54:50 -0800142 font-style: italic;
143 padding-right: 12px;
144 /* works for both light and dark themes ... */
145 color: #777;
146}
147
Simon Hunt08f841d02015-02-10 14:39:20 -0800148.topo-p td.value {
Simon Hunt626d2102015-01-29 11:54:50 -0800149}
150
Simon Hunt08f841d02015-02-10 14:39:20 -0800151.topo-p hr {
Simon Hunt626d2102015-01-29 11:54:50 -0800152 height: 1px;
153 border: 0;
154}
Simon Hunt08f841d02015-02-10 14:39:20 -0800155.light .topo-p hr {
Simon Hunt626d2102015-01-29 11:54:50 -0800156 background-color: #ccc;
157 color: #ccc;
158}
Simon Hunt08f841d02015-02-10 14:39:20 -0800159.dark .topo-p hr {
Simon Hunt626d2102015-01-29 11:54:50 -0800160 background-color: #888;
161 color: #888;
162}
Simon Hunt4b668592015-01-29 17:33:53 -0800163
164
Simon Hunt08f841d02015-02-10 14:39:20 -0800165.topo-p .actionBtn {
166 margin: 6px 12px;
167 padding: 2px 6px;
168 font-size: 9pt;
169 cursor: pointer;
170 width: 200px;
171 text-align: center;
172 border-radius: 4px;
173}
174.light .topo-p .actionBtn {
175 border: 2px solid #ddd;
176 color: #eee;
177 background: #888;
178}
179.dark .topo-p .actionBtn {
180 border: 2px solid #222;
181 color: #888;
182 background: #444;
183}
Simon Hunt4b668592015-01-29 17:33:53 -0800184
Simon Hunt08f841d02015-02-10 14:39:20 -0800185.light .topo-p .actionBtn:hover {
186 color: #eee;
187 background: #444;
188}
189.dark .topo-p .actionBtn:hover {
190 color: #eee;
191 background: #666;
192}
193
Simon Hunt4b668592015-01-29 17:33:53 -0800194
195
196/* --- Topo Instance Panel --- */
197
198#topo-p-instance {
199 height: 100px;
200}
201
202#topo-p-instance div.onosInst {
203 display: inline-block;
204 width: 170px;
205 height: 85px;
206 cursor: pointer;
207}
208
209#topo-p-instance svg rect {
Simon Hunt4b668592015-01-29 17:33:53 -0800210 stroke-width: 3.5;
211}
212#topo-p-instance .online svg rect {
213 opacity: 1;
Simon Hunta57d6812015-02-02 18:34:04 -0800214}
215.light #topo-p-instance svg rect {
216 fill: #ccc;
217 stroke: #aaa;
218}
219.light #topo-p-instance .online svg rect {
Simon Hunt4b668592015-01-29 17:33:53 -0800220 fill: #9cf;
221 stroke: #555;
222}
Simon Hunta57d6812015-02-02 18:34:04 -0800223.dark #topo-p-instance svg rect {
224 fill: #666;
225 stroke: #222;
226}
227.dark #topo-p-instance .online svg rect {
228 fill: #9cf;
229 stroke: #999;
230}
231
Simon Hunt4b668592015-01-29 17:33:53 -0800232
233#topo-p-instance svg .glyph {
234 fill: #888;
235 fill-rule: evenodd;
236}
237#topo-p-instance .online svg .glyph {
238 fill: #000;
239}
240
241#topo-p-instance svg .badgeIcon {
Simon Hunt4b668592015-01-29 17:33:53 -0800242 fill-rule: evenodd;
Simon Hunta57d6812015-02-02 18:34:04 -0800243 opacity: 0.4;
244}
245.light #topo-p-instance svg .badgeIcon {
246 fill: #777;
247}
248.dark #topo-p-instance svg .badgeIcon {
249 fill: #555;
Simon Hunt4b668592015-01-29 17:33:53 -0800250}
251
252#topo-p-instance .online svg .badgeIcon {
Simon Hunta57d6812015-02-02 18:34:04 -0800253 opacity: 1.0;
254}
255.light #topo-p-instance .online svg .badgeIcon {
256 fill: #fff;
257}
258.dark #topo-p-instance .online svg .badgeIcon {
Simon Hunt4b668592015-01-29 17:33:53 -0800259 fill: #fff;
260}
261
262#topo-p-instance svg text {
263 text-anchor: middle;
Simon Hunta57d6812015-02-02 18:34:04 -0800264 opacity: 0.3;
Simon Hunt4b668592015-01-29 17:33:53 -0800265}
266#topo-p-instance .online svg text {
Simon Hunta57d6812015-02-02 18:34:04 -0800267 opacity: 1.0;
268}
269.light #topo-p-instance svg text {
270 fill: #444;
271}
272.light #topo-p-instance .online svg text {
Simon Hunt4b668592015-01-29 17:33:53 -0800273 fill: #eee;
274}
Simon Hunta57d6812015-02-02 18:34:04 -0800275.dark #topo-p-instance svg text {
276 fill: #aaa;
277}
278.dark #topo-p-instance .online svg text {
279 fill: #ccc;
280}
Simon Hunt4b668592015-01-29 17:33:53 -0800281
282#topo-p-instance svg text.instTitle {
283 font-size: 11pt;
284 font-weight: bold;
285}
286#topo-p-instance svg text.instLabel {
287 font-size: 9pt;
288 font-style: italic;
289}
290
291#topo-p-instance .onosInst.mastership {
292 opacity: 0.3;
293}
294#topo-p-instance .onosInst.mastership.affinity {
295 opacity: 1.0;
296}
Simon Hunt0ee28682015-02-12 20:48:11 -0800297.light #topo-p-instance .onosInst.mastership.affinity svg rect {
298 filter: url(#blue-glow);
299}
300.dark #topo-p-instance .onosInst.mastership.affinity svg rect {
301 filter: url(#yellow-glow);
Simon Hunt4b668592015-01-29 17:33:53 -0800302}
Simon Huntac4c6f72015-02-03 19:50:53 -0800303
304
305/* --- Topo Nodes --- */
306
Simon Hunta142dd22015-02-12 22:07:51 -0800307#ov-topo svg .suppressed {
308 opacity: 0.2 !important;
309}
310
Simon Huntac4c6f72015-02-03 19:50:53 -0800311#ov-topo svg .node {
312 cursor: pointer;
313}
314
Simon Hunt0ee28682015-02-12 20:48:11 -0800315.light #ov-topo svg .node.selected rect,
316.light #ov-topo svg .node.selected circle {
Simon Huntac4c6f72015-02-03 19:50:53 -0800317 fill: #f90;
Simon Hunt0ee28682015-02-12 20:48:11 -0800318 filter: url(#blue-glow);
319}
320.dark #ov-topo svg .node.selected rect,
321.dark #ov-topo svg .node.selected circle {
322 fill: #f90;
323 filter: url(#yellow-glow);
Simon Huntac4c6f72015-02-03 19:50:53 -0800324}
325
326#ov-topo svg .node text {
327 pointer-events: none;
328}
329
330/* Device Nodes */
331
332#ov-topo svg .node.device {
333}
334
335#ov-topo svg .node.device rect {
336 stroke-width: 1.5;
337}
338
339#ov-topo svg .node.device.fixed rect {
340 stroke-width: 1.5;
Simon Hunt78c10bf2015-02-03 21:18:20 -0800341}
342.light #ov-topo svg .node.device.fixed rect {
343 stroke: #aaa;
344}
345.dark #ov-topo svg .node.device.fixed rect {
Simon Hunt1c367112015-02-05 18:02:46 -0800346 stroke: #999;
Simon Huntac4c6f72015-02-03 19:50:53 -0800347}
348
349/* note: device is offline without the 'online' class */
Simon Hunt1c367112015-02-05 18:02:46 -0800350.light #ov-topo svg .node.device {
Simon Huntac4c6f72015-02-03 19:50:53 -0800351 fill: #777;
352}
Simon Hunt1c367112015-02-05 18:02:46 -0800353.dark #ov-topo svg .node.device {
354 fill: #555;
355}
Simon Huntac4c6f72015-02-03 19:50:53 -0800356
Simon Hunt1c367112015-02-05 18:02:46 -0800357.light #ov-topo svg .node.device rect {
358 stroke: #666;
359}
360.light #ov-topo svg .node.device rect {
361 stroke: #999;
362}
363
364.light #ov-topo svg .node.device.online {
Simon Huntac4c6f72015-02-03 19:50:53 -0800365 fill: #6e7fa3;
366}
Simon Hunt1c367112015-02-05 18:02:46 -0800367.dark #ov-topo svg .node.device.online {
368 fill: #4E5C7F;
369}
Simon Huntac4c6f72015-02-03 19:50:53 -0800370
371/* note: device is offline without the 'online' class */
372#ov-topo svg .node.device text {
373 fill: #bbb;
374 font: 10pt sans-serif;
375}
376
377#ov-topo svg .node.device.online text {
378 fill: white;
379}
380
381#ov-topo svg .node.device .svgIcon rect {
382 fill: #aaa;
383}
384#ov-topo svg .node.device .svgIcon use {
385 fill: #777;
386}
387#ov-topo svg .node.device.selected .svgIcon rect {
388 fill: #f90;
389}
390#ov-topo svg .node.device.online .svgIcon rect {
391 fill: #ccc;
392}
393#ov-topo svg .node.device.online .svgIcon use {
394 fill: #000;
395}
396#ov-topo svg .node.device.online.selected .svgIcon rect {
397 fill: #f90;
398}
399
400
401/* Host Nodes */
402
403#ov-topo svg .node.host {
Simon Huntac4c6f72015-02-03 19:50:53 -0800404}
405
406#ov-topo svg .node.host text {
Simon Huntac4c6f72015-02-03 19:50:53 -0800407 stroke: none;
408 font: 9pt sans-serif;
409}
Simon Hunt1894d792015-02-04 17:09:20 -0800410.light #ov-topo svg .node.host text {
411 fill: #846;
412}
413.dark #ov-topo svg .node.host text {
414 fill: #BB809D;
415}
Simon Huntac4c6f72015-02-03 19:50:53 -0800416
Simon Hunt1894d792015-02-04 17:09:20 -0800417.light svg .node.host circle {
Simon Huntac4c6f72015-02-03 19:50:53 -0800418 stroke: #000;
419 fill: #edb;
420}
Simon Hunt1894d792015-02-04 17:09:20 -0800421.dark svg .node.host circle {
422 stroke: #eee;
423 fill: #B2A180;
424}
Simon Huntac4c6f72015-02-03 19:50:53 -0800425
Simon Hunt1894d792015-02-04 17:09:20 -0800426.light svg .node.host .svgIcon {
427 fill: #444;
428}
429.dark svg .node.host .svgIcon {
430 fill: #222;
431}
Simon Huntac4c6f72015-02-03 19:50:53 -0800432
Simon Hunt1894d792015-02-04 17:09:20 -0800433/* --- Topo Links --- */
Simon Huntac4c6f72015-02-03 19:50:53 -0800434
Simon Hunt1894d792015-02-04 17:09:20 -0800435#ov-topo svg .link {
436 opacity: .9;
437}
438
Simon Hunt0c6b2d32015-03-26 17:46:29 -0700439#ov-topo svg .link.selected,
440#ov-topo svg .link.enhanced {
441 stroke-width: 4.5px;
442}
443.light #ov-topo svg .link.selected,
Simon Huntd5264122015-02-25 10:17:43 -0800444.light #ov-topo svg .link.enhanced {
445 filter: url(#blue-glow);
446}
Simon Hunt0c6b2d32015-03-26 17:46:29 -0700447.dark #ov-topo svg .link.selected,
Simon Huntd5264122015-02-25 10:17:43 -0800448.dark #ov-topo svg .link.enhanced {
449 filter: url(#yellow-glow);
450}
451
Simon Hunt1894d792015-02-04 17:09:20 -0800452#ov-topo svg .link.inactive {
453 opacity: .5;
454 stroke-dasharray: 8 4;
455}
456
457#ov-topo svg .link.secondary {
458 stroke-width: 3px;
459}
460.light #ov-topo svg .link.secondary {
461 stroke: rgba(0,153,51,0.5);
462}
463.dark #ov-topo svg .link.secondary {
464 stroke: rgba(121,231,158,0.5);
465}
466
467#ov-topo svg .link.primary {
468 stroke-width: 4px;
469}
470.light #ov-topo svg .link.primary {
471 stroke: #ffA300;
472}
473.dark #ov-topo svg .link.primary {
474 stroke: #D58E0F;
475}
476
Simon Hunt1894d792015-02-04 17:09:20 -0800477#ov-topo svg .link.secondary.optical {
478 stroke-width: 4px;
479}
480.light #ov-topo svg .link.secondary.optical {
481 stroke: rgba(128,64,255,0.5);
482}
483.dark #ov-topo svg .link.secondary.optical {
484 stroke: rgba(164,139,215,0.5);
485}
486
487#ov-topo svg .link.primary.optical {
488 stroke-width: 6px;
489}
490.light #ov-topo svg .link.primary.optical {
491 stroke: #74f;
492}
493.dark #ov-topo svg .link.primary.optical {
494 stroke: #7352CD;
495}
496
Simon Hunt1a5301e2015-02-25 15:31:25 -0800497/* Link Labels */
498
Simon Hunt1894d792015-02-04 17:09:20 -0800499#ov-topo svg .linkLabel rect {
500 stroke: none;
501}
502.light #ov-topo svg .linkLabel rect {
503 fill: #eee;
504}
505.dark #ov-topo svg .linkLabel rect {
Simon Hunt8eb4d3a2015-02-23 18:23:29 -0800506 fill: #555;
Simon Hunt1894d792015-02-04 17:09:20 -0800507}
508
509#ov-topo svg .linkLabel text {
510 text-anchor: middle;
511 stroke-width: 0.1;
512 font-size: 9pt;
513}
514.light #ov-topo svg .linkLabel text {
Simon Hunt8eb4d3a2015-02-23 18:23:29 -0800515 fill: #444;
Simon Hunt1894d792015-02-04 17:09:20 -0800516}
517.dark #ov-topo svg .linkLabel text {
Simon Hunt8eb4d3a2015-02-23 18:23:29 -0800518 fill: #eee;
Simon Hunt1894d792015-02-04 17:09:20 -0800519}
Simon Hunteb0fa052015-02-17 19:20:28 -0800520
Simon Hunt1a5301e2015-02-25 15:31:25 -0800521/* Port Labels */
522
523#ov-topo svg .portLabel rect {
524 stroke: none;
525}
526.light #ov-topo svg .portLabel rect {
527 fill: #eee;
528}
529.dark #ov-topo svg .portLabel rect {
Simon Hunt969b3c92015-02-25 18:11:31 -0800530 fill: #222;
Simon Hunt1a5301e2015-02-25 15:31:25 -0800531}
532
533#ov-topo svg .portLabel text {
534 text-anchor: middle;
535 stroke-width: 0.1;
Simon Hunt969b3c92015-02-25 18:11:31 -0800536 font-size: 11pt;
Simon Hunt1a5301e2015-02-25 15:31:25 -0800537}
538.light #ov-topo svg .portLabel text {
539 fill: #444;
540}
541.dark #ov-topo svg .portLabel text {
542 fill: #eee;
543}
544
Simon Huntabf66d92015-04-15 12:57:31 -0700545/* ------------------------------------------------- */
Simon Hunt2052e5d2015-04-13 17:40:44 -0700546/* Sprite Layer */
547
Simon Huntabf66d92015-04-15 12:57:31 -0700548#ov-topo svg #topo-sprites use {
Simon Huntb2c4cc82015-04-15 17:16:28 -0700549 stroke-width: 2;
Simon Huntabf66d92015-04-15 12:57:31 -0700550}
Simon Hunt2052e5d2015-04-13 17:40:44 -0700551#ov-topo svg #topo-sprites text {
552 text-anchor: middle;
Simon Huntb2c4cc82015-04-15 17:16:28 -0700553 font-size: 20pt;
Simon Hunt2052e5d2015-04-13 17:40:44 -0700554 font-style: italic;
555}
556
Simon Huntabf66d92015-04-15 12:57:31 -0700557.light #ov-topo svg #topo-sprites .gold1 use {
558 stroke: #da2;
Simon Hunt2052e5d2015-04-13 17:40:44 -0700559 fill: none;
560}
Simon Huntabf66d92015-04-15 12:57:31 -0700561.dark #ov-topo svg #topo-sprites .gold1 use {
Simon Hunt2052e5d2015-04-13 17:40:44 -0700562 stroke: #541;
563 fill: none;
564}
Simon Huntabf66d92015-04-15 12:57:31 -0700565.light #ov-topo svg #topo-sprites .gold1 text {
Simon Hunt2052e5d2015-04-13 17:40:44 -0700566 fill: #eda;
567}
Simon Huntabf66d92015-04-15 12:57:31 -0700568.dark #ov-topo svg #topo-sprites .gold1 text {
Simon Hunt2052e5d2015-04-13 17:40:44 -0700569 fill: #543;
570}
571
Simon Huntabf66d92015-04-15 12:57:31 -0700572.light #ov-topo svg #topo-sprites .blue1 use {
Simon Hunt2052e5d2015-04-13 17:40:44 -0700573 stroke: #bbd;
Simon Hunt2052e5d2015-04-13 17:40:44 -0700574 fill: none;
575}
Simon Huntabf66d92015-04-15 12:57:31 -0700576.dark #ov-topo svg #topo-sprites .blue1 use {
Simon Hunt2052e5d2015-04-13 17:40:44 -0700577 stroke: #445;
Simon Hunt2052e5d2015-04-13 17:40:44 -0700578 fill: none;
579}
Simon Huntabf66d92015-04-15 12:57:31 -0700580.light #ov-topo svg #topo-sprites .blue1 text {
Simon Hunt2052e5d2015-04-13 17:40:44 -0700581 fill: #cce;
582}
Simon Huntabf66d92015-04-15 12:57:31 -0700583.dark #ov-topo svg #topo-sprites .blue1 text {
Simon Hunt2052e5d2015-04-13 17:40:44 -0700584 fill: #446;
585}
Simon Huntabf66d92015-04-15 12:57:31 -0700586
587.light #ov-topo svg #topo-sprites .gray1 use {
Simon Huntb2c4cc82015-04-15 17:16:28 -0700588 stroke: #ccc;
Simon Huntabf66d92015-04-15 12:57:31 -0700589 fill: none;
590}
591.dark #ov-topo svg #topo-sprites .gray1 use {
592 stroke: #333;
593 fill: none;
594}
595.light #ov-topo svg #topo-sprites .gray1 text {
Simon Huntb2c4cc82015-04-15 17:16:28 -0700596 fill: #ddd;
Simon Huntabf66d92015-04-15 12:57:31 -0700597}
598.dark #ov-topo svg #topo-sprites .gray1 text {
599 fill: #444;
600}
601