blob: bd3d7e8ff440b7690993fe3906f5a22c145e611e [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 {
Thomas Vachuska89543292014-11-19 11:28:33 -080028 stroke-width: 2px;
Thomas Vachuskacd2920c2014-11-19 14:49:55 -080029 stroke: #eee;
Paul Greyson6cb8ca02014-11-12 18:09:02 -080030 fill: transparent;
31}
32
Simon Huntc72967b2014-11-20 09:21:42 -080033/* TODO: move glyphs into framework */
Simon Huntac9e24f2014-11-12 10:12:21 -080034
Simon Huntc72967b2014-11-20 09:21:42 -080035#topo svg .glyphIcon {
36 fill: black;
37 stroke: none;
38 fill-rule: evenodd;
39}
40#topo svg .glyphIcon rect {
41 fill: #ddd;
Simon Hunt7fa116d2014-11-17 14:16:55 -080042 stroke: none;
43}
44
Simon Huntb82f6902014-11-22 11:53:15 -080045
Simon Hunt233747b2014-12-04 12:01:58 -080046#topo svg .noDevsLayer {
47 visibility: hidden;
48}
49
50#topo svg .noDevsLayer text {
51 font-size: 60pt;
52 font-style: italic;
53 fill: #dde;
54}
55
56#topo svg .noDevsBird {
57 fill: #ecd;
58}
59
Simon Hunt1a9eff92014-11-07 11:06:34 -080060/* NODES */
61
Simon Huntac9e24f2014-11-12 10:12:21 -080062#topo svg .node {
Simon Hunt99c13842014-11-06 18:23:12 -080063 cursor: pointer;
64}
65
Simon Huntac9e24f2014-11-12 10:12:21 -080066#topo svg .node.selected rect,
67#topo svg .node.selected circle {
Simon Hunt8dde2322014-11-21 11:42:10 -080068 fill: #f90;
Simon Huntac9e24f2014-11-12 10:12:21 -080069 filter: url(#blue-glow);
70}
71
Simon Huntac9e24f2014-11-12 10:12:21 -080072#topo svg .node text {
73 pointer-events: none;
74}
75
76/* Device Nodes */
77
78#topo svg .node.device {
79}
80
Simon Hunt56d51852014-11-09 13:03:35 -080081#topo svg .node.device rect {
Simon Hunt38ab8802014-11-28 13:49:08 -080082 stroke-width: 1.5;
Simon Hunt1a9eff92014-11-07 11:06:34 -080083}
84
Simon Hunt56d51852014-11-09 13:03:35 -080085#topo svg .node.device.fixed rect {
Simon Hunt99c13842014-11-06 18:23:12 -080086 stroke-width: 1.5;
Thomas Vachuska89543292014-11-19 11:28:33 -080087 stroke: #ccc;
Simon Hunt99c13842014-11-06 18:23:12 -080088}
89
Simon Huntbb282f52014-11-10 11:08:19 -080090/* note: device is offline without the 'online' class */
Thomas Vachuska89543292014-11-19 11:28:33 -080091#topo svg .node.device {
92 fill: #777;
93}
94
Simon Hunt8dde2322014-11-21 11:42:10 -080095#topo svg .node.device.online {
Simon Huntb0ecfa52014-11-23 21:05:12 -080096 fill: #6e7fa3;
Thomas Vachuska89543292014-11-19 11:28:33 -080097}
98
Simon Huntbb282f52014-11-10 11:08:19 -080099/* note: device is offline without the 'online' class */
Simon Hunt7cd48f32014-11-09 23:42:50 -0800100#topo svg .node.device text {
Simon Huntb0ecfa52014-11-23 21:05:12 -0800101 fill: #bbb;
Simon Hunt99c13842014-11-06 18:23:12 -0800102 font: 10pt sans-serif;
Simon Hunt99c13842014-11-06 18:23:12 -0800103}
104
Thomas Vachuska89543292014-11-19 11:28:33 -0800105#topo svg .node.device.online text {
106 fill: white;
107}
108
Simon Hunt8dde2322014-11-21 11:42:10 -0800109#topo svg .node.device .glyphIcon rect {
110 fill: #aaa;
111}
112#topo svg .node.device .glyphIcon use {
113 fill: #777;
114}
115#topo svg .node.device.selected .glyphIcon rect {
116 fill: #f90;
117}
118#topo svg .node.device.online .glyphIcon rect {
Simon Huntb0ecfa52014-11-23 21:05:12 -0800119 fill: #ccc;
Simon Hunt8dde2322014-11-21 11:42:10 -0800120}
121#topo svg .node.device.online .glyphIcon use {
122 fill: #000;
123}
124#topo svg .node.device.online.selected .glyphIcon rect {
125 fill: #f90;
126}
127
Thomas Vachuska89543292014-11-19 11:28:33 -0800128
Simon Huntac9e24f2014-11-12 10:12:21 -0800129/* Host Nodes */
130
Thomas Vachuska89543292014-11-19 11:28:33 -0800131#topo svg .node.host {
132 stroke: #000;
133}
134
Simon Hunt7cd48f32014-11-09 23:42:50 -0800135#topo svg .node.host text {
136 fill: #846;
Simon Hunt7fa116d2014-11-17 14:16:55 -0800137 stroke: none;
Simon Hunt7cd48f32014-11-09 23:42:50 -0800138 font: 9pt sans-serif;
Simon Hunt7cd48f32014-11-09 23:42:50 -0800139}
140
Simon Hunt7fa116d2014-11-17 14:16:55 -0800141svg .node.host circle {
Thomas Vachuska89543292014-11-19 11:28:33 -0800142 stroke: #000;
Simon Hunt8dde2322014-11-21 11:42:10 -0800143 fill: #edb;
Simon Hunt7fa116d2014-11-17 14:16:55 -0800144}
145
Simon Hunt1a9eff92014-11-07 11:06:34 -0800146/* LINKS */
147
Simon Hunt56d51852014-11-09 13:03:35 -0800148#topo svg .link {
Thomas Vachuska9edca302014-11-22 17:06:42 -0800149 opacity: .9;
Simon Hunt1a9eff92014-11-07 11:06:34 -0800150}
151
Thomas Vachuskae4cebaf2014-11-15 18:49:34 -0800152#topo svg .link.inactive {
Thomas Vachuska9edca302014-11-22 17:06:42 -0800153 opacity: .5;
Thomas Vachuskae4cebaf2014-11-15 18:49:34 -0800154 stroke-dasharray: 8 4;
155}
156
Simon Hunta255a2c2014-11-13 22:29:35 -0800157#topo svg .link.secondary {
Thomas Vachuskaa3148a72014-11-19 21:38:35 -0800158 stroke: rgba(0,153,51,0.5);
Thomas Vachuskacd2920c2014-11-19 14:49:55 -0800159 stroke-width: 3px;
Simon Hunta255a2c2014-11-13 22:29:35 -0800160}
Thomas Vachuska5fedb7a2014-11-20 00:55:08 -0800161#topo svg .link.primary {
162 stroke: #ffA300;
163 stroke-width: 4px;
164}
Simon Hunta255a2c2014-11-13 22:29:35 -0800165#topo svg .link.animated {
Thomas Vachuskaa3148a72014-11-19 21:38:35 -0800166 stroke: #ffA300;
Simon Hunta255a2c2014-11-13 22:29:35 -0800167}
168
Simon Hunta255a2c2014-11-13 22:29:35 -0800169#topo svg .link.secondary.optical {
Thomas Vachuska89543292014-11-19 11:28:33 -0800170 stroke: rgba(128,64,255,0.5);
Simon Hunta255a2c2014-11-13 22:29:35 -0800171 stroke-width: 4px;
172}
Thomas Vachuska5fedb7a2014-11-20 00:55:08 -0800173#topo svg .link.primary.optical {
174 stroke: #74f;
175 stroke-width: 6px;
176}
Simon Hunta255a2c2014-11-13 22:29:35 -0800177#topo svg .link.animated.optical {
Thomas Vachuska89543292014-11-19 11:28:33 -0800178 stroke: #74f;
Simon Hunta255a2c2014-11-13 22:29:35 -0800179 stroke-width: 10px;
Simon Hunta255a2c2014-11-13 22:29:35 -0800180}
Thomas Vachuska4830d392014-11-09 17:09:56 -0800181
Simon Hunte2575b62014-11-18 15:25:53 -0800182#topo svg .linkLabel rect {
Thomas Vachuska20322ff2014-11-19 16:22:25 -0800183 fill: #eee;
184 stroke: none;
Simon Hunte2575b62014-11-18 15:25:53 -0800185}
186#topo svg .linkLabel text {
187 text-anchor: middle;
Thomas Vachuska20322ff2014-11-19 16:22:25 -0800188 stroke: #777;
Simon Hunt38ab8802014-11-28 13:49:08 -0800189 stroke-width: 0.1;
Thomas Vachuska20322ff2014-11-19 16:22:25 -0800190 font-size: 9pt;
Simon Hunte2575b62014-11-18 15:25:53 -0800191}
Simon Hunt61d04042014-11-11 17:27:16 -0800192
Thomas Vachuska47635c62014-11-22 01:21:36 -0800193/* Fly-in summary pane */
194
195#topo-summary {
196 /* gets base CSS from .fpanel in floatPanel.css */
197 top: 64px;
198}
199
200#topo-summary svg {
201 display: inline-block;
202 width: 42px;
203 height: 42px;
204}
205
206#topo-summary svg .glyphIcon {
207 fill: black;
208 stroke: none;
209 fill-rule: evenodd;
210}
211
212#topo-summary h2 {
213 position: absolute;
Simon Hunt38ab8802014-11-28 13:49:08 -0800214 margin: 0 4px;
Thomas Vachuska47635c62014-11-22 01:21:36 -0800215 top: 20px;
216 left: 50px;
217 color: black;
218}
219
220#topo-summary h3 {
Simon Hunt38ab8802014-11-28 13:49:08 -0800221 margin: 0 4px;
Thomas Vachuska47635c62014-11-22 01:21:36 -0800222 top: 20px;
223 left: 50px;
224 color: black;
225}
226
227#topo-summary p, table {
228 margin: 4px 4px;
229}
230
231#topo-summary td.label {
232 font-style: italic;
233 color: #777;
234 padding-right: 12px;
235}
236
237#topo-summary td.value {
238}
239
240#topo-summary hr {
241 height: 1px;
242 color: #ccc;
243 background-color: #ccc;
244 border: 0;
245}
246
Simon Huntac9e24f2014-11-12 10:12:21 -0800247/* Fly-in details pane */
Simon Hunt61d04042014-11-11 17:27:16 -0800248
249#topo-detail {
Thomas Vachuska47635c62014-11-22 01:21:36 -0800250 /* gets base CSS from .fpanel in floatPanel.css */
251 top: 320px;
252
Simon Hunt61d04042014-11-11 17:27:16 -0800253}
254
Simon Hunta6a9fe72014-11-20 11:17:12 -0800255#topo-detail svg {
256 display: inline-block;
257 width: 42px;
258 height: 42px;
Simon Hunt61d04042014-11-11 17:27:16 -0800259}
260
Simon Hunta6a9fe72014-11-20 11:17:12 -0800261#topo-detail svg .glyphIcon {
262 fill: black;
263 stroke: none;
264 fill-rule: evenodd;
265}
266
267#topo-detail h2 {
268 position: absolute;
Simon Hunt38ab8802014-11-28 13:49:08 -0800269 margin: 0 4px;
Simon Hunta3dd9572014-11-20 15:22:41 -0800270 top: 20px;
271 left: 50px;
272 color: black;
273}
274
275#topo-detail h3 {
Simon Hunt38ab8802014-11-28 13:49:08 -0800276 margin: 0 4px;
Simon Hunta6a9fe72014-11-20 11:17:12 -0800277 top: 20px;
278 left: 50px;
279 color: black;
Simon Hunt61d04042014-11-11 17:27:16 -0800280}
281
282#topo-detail p, table {
283 margin: 4px 4px;
284}
285
286#topo-detail td.label {
287 font-style: italic;
288 color: #777;
289 padding-right: 12px;
290}
291
292#topo-detail td.value {
Simon Hunt61d04042014-11-11 17:27:16 -0800293}
294
Simon Huntb53e0682014-11-12 13:32:01 -0800295
Simon Huntd72bc702014-11-13 18:38:04 -0800296#topo-detail .actionBtn {
297 margin: 6px 12px;
298 padding: 2px 6px;
299 font-size: 9pt;
300 cursor: pointer;
Thomas Vachuska9edca302014-11-22 17:06:42 -0800301 width: 200px;
Simon Huntd72bc702014-11-13 18:38:04 -0800302 text-align: center;
Thomas Vachuska89543292014-11-19 11:28:33 -0800303
304 /* theme specific... */
Thomas Vachuska4731f122014-11-20 04:56:19 -0800305 border: 2px solid #ddd;
306 border-radius: 4px;
307 color: #eee;
308 background: #888;
Simon Huntd72bc702014-11-13 18:38:04 -0800309}
310
311#topo-detail .actionBtn:hover {
Thomas Vachuska89543292014-11-19 11:28:33 -0800312 /* theme specific... */
Thomas Vachuska4731f122014-11-20 04:56:19 -0800313 border: 2px solid #ddd;
314 color: #eee;
315 background: #444;
Simon Huntd72bc702014-11-13 18:38:04 -0800316}
317
Simon Huntb53e0682014-11-12 13:32:01 -0800318
Simon Hunt61d04042014-11-11 17:27:16 -0800319#topo-detail hr {
320 height: 1px;
321 color: #ccc;
322 background-color: #ccc;
323 border: 0;
324}
325
Simon Hunta5e89142014-11-14 07:00:33 -0800326/* ONOS instance stuff */
327
328#topo-oibox {
Simon Huntb82f6902014-11-22 11:53:15 -0800329 height: 100px;
Simon Hunta5e89142014-11-14 07:00:33 -0800330}
331
Simon Huntb82f6902014-11-22 11:53:15 -0800332#topo-oibox div.onosInst {
333 display: inline-block;
Simon Hunt7b403bc2014-11-22 19:01:00 -0800334 width: 170px;
335 height: 85px;
336 cursor: pointer;
Simon Huntb82f6902014-11-22 11:53:15 -0800337}
338
339#topo-oibox svg rect {
340 fill: #ccc;
341 stroke: #aaa;
342 stroke-width: 3.5;
343}
344#topo-oibox .online svg rect {
345 opacity: 1;
346 fill: #9cf;
Simon Hunt925dfc02014-11-29 12:11:51 -0800347 stroke: #555;
Simon Huntb82f6902014-11-22 11:53:15 -0800348}
349
350#topo-oibox svg .glyphIcon {
351 fill: #888;
352 fill-rule: evenodd;
353}
354#topo-oibox .online svg .glyphIcon {
355 fill: #000;
356}
357
358#topo-oibox svg .badgeIcon {
Simon Hunt925dfc02014-11-29 12:11:51 -0800359 fill: #777;
Simon Huntb82f6902014-11-22 11:53:15 -0800360 fill-rule: evenodd;
361}
362
363#topo-oibox .online svg .badgeIcon {
364 fill: #fff;
365}
366
Simon Hunt7b403bc2014-11-22 19:01:00 -0800367#topo-oibox svg text {
368 text-anchor: middle;
Simon Hunt925dfc02014-11-29 12:11:51 -0800369 fill: #777;
Simon Hunt7b403bc2014-11-22 19:01:00 -0800370}
371#topo-oibox .online svg text {
Thomas Vachuskae02e11c2014-11-24 16:13:52 -0800372 fill: #eee;
Simon Hunt7b403bc2014-11-22 19:01:00 -0800373}
374
375#topo-oibox svg text.instTitle {
376 font-size: 11pt;
377 font-weight: bold;
378}
379#topo-oibox svg text.instLabel {
380 font-size: 9pt;
381 font-style: italic;
382}
Simon Huntb82f6902014-11-22 11:53:15 -0800383
384#topo-oibox .onosInst.mastership {
385 opacity: 0.3;
386}
387#topo-oibox .onosInst.mastership.affinity {
388 opacity: 1.0;
389}
390#topo-oibox .onosInst.mastership.affinity svg rect {
391 filter: url(#blue-glow);
392}
393
Simon Hunt9462e8c2014-11-14 17:28:09 -0800394
395#topo svg .suppressed {
Simon Hunta5e89142014-11-14 07:00:33 -0800396 opacity: 0.2;
397}
398
Simon Hunta6a9fe72014-11-20 11:17:12 -0800399/* Death Mask (starts hidden) */
Simon Hunt0c6d4192014-11-12 12:07:10 -0800400
401#topo-mask {
402 display: none;
403 position: absolute;
404 top: 0;
405 left: 0;
406 width: 10000px;
407 height: 8000px;
408 z-index: 5000;
409 background-color: rgba(0,0,0,0.75);
410 padding: 60px;
411}
412
413#topo-mask p {
414 margin: 8px 20px;
415 color: #ddd;
416 font-size: 14pt;
417 font-style: italic;
418}
419