blob: d982ee271156fc2692f2e29cb876994ca96c5ed1 [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 Hunt95908012014-11-20 10:20:26 -080035#topo-oibox svg .glyphIcon,
Simon Huntc72967b2014-11-20 09:21:42 -080036#topo svg .glyphIcon {
37 fill: black;
38 stroke: none;
39 fill-rule: evenodd;
40}
41#topo svg .glyphIcon rect {
42 fill: #ddd;
Simon Hunt7fa116d2014-11-17 14:16:55 -080043 stroke: none;
44}
45
Simon Hunt1a9eff92014-11-07 11:06:34 -080046/* NODES */
47
Simon Huntac9e24f2014-11-12 10:12:21 -080048#topo svg .node {
Simon Hunt99c13842014-11-06 18:23:12 -080049 cursor: pointer;
50}
51
Simon Huntac9e24f2014-11-12 10:12:21 -080052#topo svg .node.selected rect,
53#topo svg .node.selected circle {
Simon Hunt8dde2322014-11-21 11:42:10 -080054 fill: #f90;
Simon Huntac9e24f2014-11-12 10:12:21 -080055 filter: url(#blue-glow);
56}
57
Simon Huntac9e24f2014-11-12 10:12:21 -080058#topo svg .node text {
59 pointer-events: none;
60}
61
62/* Device Nodes */
63
64#topo svg .node.device {
65}
66
Simon Hunt56d51852014-11-09 13:03:35 -080067#topo svg .node.device rect {
Simon Hunt1a9eff92014-11-07 11:06:34 -080068 stroke-width: 1.5px;
69}
70
Simon Hunt56d51852014-11-09 13:03:35 -080071#topo svg .node.device.fixed rect {
Simon Hunt99c13842014-11-06 18:23:12 -080072 stroke-width: 1.5;
Thomas Vachuska89543292014-11-19 11:28:33 -080073 stroke: #ccc;
Simon Hunt99c13842014-11-06 18:23:12 -080074}
75
Simon Huntbb282f52014-11-10 11:08:19 -080076/* note: device is offline without the 'online' class */
Thomas Vachuska89543292014-11-19 11:28:33 -080077#topo svg .node.device {
78 fill: #777;
79}
80
Simon Hunt8dde2322014-11-21 11:42:10 -080081#topo svg .node.device.online {
Thomas Vachuska89543292014-11-19 11:28:33 -080082 fill: #17f;
83}
84
Simon Huntbb282f52014-11-10 11:08:19 -080085/* note: device is offline without the 'online' class */
Simon Hunt7cd48f32014-11-09 23:42:50 -080086#topo svg .node.device text {
Thomas Vachuska89543292014-11-19 11:28:33 -080087 fill: #aaa;
Simon Hunt99c13842014-11-06 18:23:12 -080088 font: 10pt sans-serif;
Simon Hunt99c13842014-11-06 18:23:12 -080089}
90
Thomas Vachuska89543292014-11-19 11:28:33 -080091#topo svg .node.device.online text {
92 fill: white;
93}
94
Simon Hunt8dde2322014-11-21 11:42:10 -080095#topo svg .node.device .glyphIcon rect {
96 fill: #aaa;
97}
98#topo svg .node.device .glyphIcon use {
99 fill: #777;
100}
101#topo svg .node.device.selected .glyphIcon rect {
102 fill: #f90;
103}
104#topo svg .node.device.online .glyphIcon rect {
105 fill: #8ab;
106}
107#topo svg .node.device.online .glyphIcon use {
108 fill: #000;
109}
110#topo svg .node.device.online.selected .glyphIcon rect {
111 fill: #f90;
112}
113
Thomas Vachuska89543292014-11-19 11:28:33 -0800114
Simon Huntac9e24f2014-11-12 10:12:21 -0800115/* Host Nodes */
116
Thomas Vachuska89543292014-11-19 11:28:33 -0800117#topo svg .node.host {
118 stroke: #000;
119}
120
Simon Hunt7cd48f32014-11-09 23:42:50 -0800121#topo svg .node.host text {
122 fill: #846;
Simon Hunt7fa116d2014-11-17 14:16:55 -0800123 stroke: none;
Simon Hunt7cd48f32014-11-09 23:42:50 -0800124 font: 9pt sans-serif;
Simon Hunt7cd48f32014-11-09 23:42:50 -0800125}
126
Simon Hunt7fa116d2014-11-17 14:16:55 -0800127svg .node.host circle {
Thomas Vachuska89543292014-11-19 11:28:33 -0800128 stroke: #000;
Simon Hunt8dde2322014-11-21 11:42:10 -0800129 fill: #edb;
Simon Hunt7fa116d2014-11-17 14:16:55 -0800130}
131
Simon Hunt1a9eff92014-11-07 11:06:34 -0800132/* LINKS */
133
Simon Hunt56d51852014-11-09 13:03:35 -0800134#topo svg .link {
Simon Hunt1a9eff92014-11-07 11:06:34 -0800135 opacity: .7;
136}
137
Thomas Vachuskae4cebaf2014-11-15 18:49:34 -0800138#topo svg .link.inactive {
139 opacity: .2;
140 stroke-dasharray: 8 4;
141}
142
Simon Hunta255a2c2014-11-13 22:29:35 -0800143#topo svg .link.secondary {
Thomas Vachuskaa3148a72014-11-19 21:38:35 -0800144 stroke: rgba(0,153,51,0.5);
Thomas Vachuskacd2920c2014-11-19 14:49:55 -0800145 stroke-width: 3px;
Simon Hunta255a2c2014-11-13 22:29:35 -0800146}
Thomas Vachuska5fedb7a2014-11-20 00:55:08 -0800147#topo svg .link.primary {
148 stroke: #ffA300;
149 stroke-width: 4px;
150}
Simon Hunta255a2c2014-11-13 22:29:35 -0800151#topo svg .link.animated {
Thomas Vachuskaa3148a72014-11-19 21:38:35 -0800152 stroke: #ffA300;
Simon Hunta255a2c2014-11-13 22:29:35 -0800153}
154
Simon Hunta255a2c2014-11-13 22:29:35 -0800155#topo svg .link.secondary.optical {
Thomas Vachuska89543292014-11-19 11:28:33 -0800156 stroke: rgba(128,64,255,0.5);
Simon Hunta255a2c2014-11-13 22:29:35 -0800157 stroke-width: 4px;
158}
Thomas Vachuska5fedb7a2014-11-20 00:55:08 -0800159#topo svg .link.primary.optical {
160 stroke: #74f;
161 stroke-width: 6px;
162}
Simon Hunta255a2c2014-11-13 22:29:35 -0800163#topo svg .link.animated.optical {
Thomas Vachuska89543292014-11-19 11:28:33 -0800164 stroke: #74f;
Simon Hunta255a2c2014-11-13 22:29:35 -0800165 stroke-width: 10px;
166 stroke-dasharray: 8 8
167}
Thomas Vachuska4830d392014-11-09 17:09:56 -0800168
Simon Hunte2575b62014-11-18 15:25:53 -0800169#topo svg .linkLabel rect {
Thomas Vachuska20322ff2014-11-19 16:22:25 -0800170 fill: #eee;
171 stroke: none;
Simon Hunte2575b62014-11-18 15:25:53 -0800172}
173#topo svg .linkLabel text {
174 text-anchor: middle;
Thomas Vachuska20322ff2014-11-19 16:22:25 -0800175 stroke: #777;
176 stroke-width: 0.1px;
177 font-size: 9pt;
Simon Hunte2575b62014-11-18 15:25:53 -0800178}
Simon Hunt61d04042014-11-11 17:27:16 -0800179
Thomas Vachuska47635c62014-11-22 01:21:36 -0800180/* Fly-in summary pane */
181
182#topo-summary {
183 /* gets base CSS from .fpanel in floatPanel.css */
184 top: 64px;
185}
186
187#topo-summary svg {
188 display: inline-block;
189 width: 42px;
190 height: 42px;
191}
192
193#topo-summary svg .glyphIcon {
194 fill: black;
195 stroke: none;
196 fill-rule: evenodd;
197}
198
199#topo-summary h2 {
200 position: absolute;
201 margin: 0px 4px;
202 top: 20px;
203 left: 50px;
204 color: black;
205}
206
207#topo-summary h3 {
208 margin: 0px 4px;
209 top: 20px;
210 left: 50px;
211 color: black;
212}
213
214#topo-summary p, table {
215 margin: 4px 4px;
216}
217
218#topo-summary td.label {
219 font-style: italic;
220 color: #777;
221 padding-right: 12px;
222}
223
224#topo-summary td.value {
225}
226
227#topo-summary hr {
228 height: 1px;
229 color: #ccc;
230 background-color: #ccc;
231 border: 0;
232}
233
Simon Huntac9e24f2014-11-12 10:12:21 -0800234/* Fly-in details pane */
Simon Hunt61d04042014-11-11 17:27:16 -0800235
236#topo-detail {
Thomas Vachuska47635c62014-11-22 01:21:36 -0800237 /* gets base CSS from .fpanel in floatPanel.css */
238 top: 320px;
239
Simon Hunt61d04042014-11-11 17:27:16 -0800240}
241
Simon Hunta6a9fe72014-11-20 11:17:12 -0800242#topo-detail svg {
243 display: inline-block;
244 width: 42px;
245 height: 42px;
Simon Hunt61d04042014-11-11 17:27:16 -0800246}
247
Simon Hunta6a9fe72014-11-20 11:17:12 -0800248#topo-detail svg .glyphIcon {
249 fill: black;
250 stroke: none;
251 fill-rule: evenodd;
252}
253
254#topo-detail h2 {
255 position: absolute;
Simon Hunta3dd9572014-11-20 15:22:41 -0800256 margin: 0px 4px;
257 top: 20px;
258 left: 50px;
259 color: black;
260}
261
262#topo-detail h3 {
Simon Hunta6a9fe72014-11-20 11:17:12 -0800263 margin: 0px 4px;
264 top: 20px;
265 left: 50px;
266 color: black;
Simon Hunt61d04042014-11-11 17:27:16 -0800267}
268
269#topo-detail p, table {
270 margin: 4px 4px;
271}
272
273#topo-detail td.label {
274 font-style: italic;
275 color: #777;
276 padding-right: 12px;
277}
278
279#topo-detail td.value {
Simon Hunt61d04042014-11-11 17:27:16 -0800280}
281
Simon Huntb53e0682014-11-12 13:32:01 -0800282
Simon Huntd72bc702014-11-13 18:38:04 -0800283#topo-detail .actionBtn {
284 margin: 6px 12px;
285 padding: 2px 6px;
286 font-size: 9pt;
287 cursor: pointer;
288 width: 50%;
289 text-align: center;
Thomas Vachuska89543292014-11-19 11:28:33 -0800290
291 /* theme specific... */
Thomas Vachuska4731f122014-11-20 04:56:19 -0800292 border: 2px solid #ddd;
293 border-radius: 4px;
294 color: #eee;
295 background: #888;
Simon Huntd72bc702014-11-13 18:38:04 -0800296}
297
298#topo-detail .actionBtn:hover {
Thomas Vachuska89543292014-11-19 11:28:33 -0800299 /* theme specific... */
Thomas Vachuska4731f122014-11-20 04:56:19 -0800300 border: 2px solid #ddd;
301 color: #eee;
302 background: #444;
Simon Huntd72bc702014-11-13 18:38:04 -0800303}
304
Simon Huntb53e0682014-11-12 13:32:01 -0800305
Simon Hunt61d04042014-11-11 17:27:16 -0800306#topo-detail hr {
307 height: 1px;
308 color: #ccc;
309 background-color: #ccc;
310 border: 0;
311}
312
Simon Hunta5e89142014-11-14 07:00:33 -0800313/* ONOS instance stuff */
314
315#topo-oibox {
Simon Hunt9b228cb2014-11-19 13:18:57 -0800316 width: 120px;
Simon Hunta5e89142014-11-14 07:00:33 -0800317}
318
319#topo-oibox .onosInst {
Simon Hunt9c15eca2014-11-15 18:37:59 -0800320 position: relative;
Simon Hunt9b228cb2014-11-19 13:18:57 -0800321 width: 88%;
322 left: 4%;
Simon Hunt9c15eca2014-11-15 18:37:59 -0800323 height: 80px;
Simon Hunt9b228cb2014-11-19 13:18:57 -0800324 margin: 8px 0;
Simon Hunta5e89142014-11-14 07:00:33 -0800325 cursor: pointer;
Thomas Vachuska89543292014-11-19 11:28:33 -0800326
Simon Hunt9b228cb2014-11-19 13:18:57 -0800327 -moz-border-radius: 12px;
328 border-radius: 12px;
329
Thomas Vachuska89543292014-11-19 11:28:33 -0800330 /* theme-related */
331 color: #444;
332 background-color: #ccc;
Simon Hunt9b228cb2014-11-19 13:18:57 -0800333 border: 4px solid #aaa;
Thomas Vachuska89543292014-11-19 11:28:33 -0800334}
335
336#topo-oibox .onosInst.online {
337 /* theme-related */
338 color: #113;
Simon Hunt9b228cb2014-11-19 13:18:57 -0800339 background-color: #9cf;
340 border: 4px solid #357;
Simon Hunta5e89142014-11-14 07:00:33 -0800341}
342
Simon Hunt9c15eca2014-11-15 18:37:59 -0800343#topo-oibox .onosInst .onosTitle {
344 text-align: center;
Simon Hunt9b228cb2014-11-19 13:18:57 -0800345 font-size: 10pt;
Simon Hunt9c15eca2014-11-15 18:37:59 -0800346 margin-top: 6px;
Thomas Vachuska89543292014-11-19 11:28:33 -0800347 color: #888;
348}
349
350#topo-oibox .onosInst.online .onosTitle {
351 color: black;
Simon Hunt9c15eca2014-11-15 18:37:59 -0800352}
353
Simon Hunt95908012014-11-20 10:20:26 -0800354#topo-oibox .onosInst svg .glyphIcon {
Simon Hunt9c15eca2014-11-15 18:37:59 -0800355 opacity: 0.5;
Simon Hunt95908012014-11-20 10:20:26 -0800356 fill: black;
357 stroke: none;
358 fill-rule: evenodd;
Simon Hunt9c15eca2014-11-15 18:37:59 -0800359}
Simon Hunt95908012014-11-20 10:20:26 -0800360#topo-oibox .onosInst.online svg .glyphIcon {
361 opacity: 1;
362 fill: black;
363 stroke: none;
364 fill-rule: evenodd;
365}
366
Simon Hunt9c15eca2014-11-15 18:37:59 -0800367
368#topo-oibox .onosInst.online img {
369 opacity: 1.0;
Simon Huntfcfb46c2014-11-19 12:53:38 -0800370 padding: 3px;
Simon Hunt9c15eca2014-11-15 18:37:59 -0800371}
372
373#topo-oibox .onosInst img.ui {
374 opacity: 1;
375 position: absolute;
376 top: 3px;
377 right: 3px;
378 width: 20px;
379 height: 20px;
380}
381
Simon Hunt9462e8c2014-11-14 17:28:09 -0800382#topo-oibox .onosInst.mastership {
383 opacity: 0.3;
384}
385#topo-oibox .onosInst.mastership.affinity {
386 opacity: 1.0;
Simon Hunt7fa116d2014-11-17 14:16:55 -0800387 box-shadow: 0 2px 8px #33e;
Simon Hunt9462e8c2014-11-14 17:28:09 -0800388}
389
390
391#topo svg .suppressed {
Simon Hunta5e89142014-11-14 07:00:33 -0800392 opacity: 0.2;
393}
394
Simon Hunta6a9fe72014-11-20 11:17:12 -0800395/* Death Mask (starts hidden) */
Simon Hunt0c6d4192014-11-12 12:07:10 -0800396
397#topo-mask {
398 display: none;
399 position: absolute;
400 top: 0;
401 left: 0;
402 width: 10000px;
403 height: 8000px;
404 z-index: 5000;
405 background-color: rgba(0,0,0,0.75);
406 padding: 60px;
407}
408
409#topo-mask p {
410 margin: 8px 20px;
411 color: #ddd;
412 font-size: 14pt;
413 font-style: italic;
414}
415