blob: 391ad884be3a5ba43f862587a8c7643e05e65b6d [file] [log] [blame]
Matteo Scandolod2044a42017-08-07 16:08:28 -07001
2/*
3 * Copyright 2017-present Open Networking Foundation
4
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8
9 * http://www.apache.org/licenses/LICENSE-2.0
10
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18
Matteo Scandolofcdbed32016-02-08 16:55:44 -080019/* CONTAINER */
Matteo Scandolo70ac2162016-02-24 15:40:22 -080020#xosDiagnostic, [ui-view] {
Matteo Scandolo2df79302016-02-29 16:27:58 -080021 height: 100%;
Matteo Scandolod4ea8772016-03-01 15:20:29 -080022 min-height: 700px;
23 position: relative;
Matteo Scandolo70ac2162016-02-24 15:40:22 -080024}
25
Matteo Scandolo35d1c3a2016-03-08 17:01:17 -080026diagnostic-container .form-control.small-padding{
27 padding: 6px;
Matteo Scandolo70ac2162016-02-24 15:40:22 -080028}
29
30diagnostic-container .half-height {
Matteo Scandolofcdbed32016-02-08 16:55:44 -080031 position: relative;
32 height: 50%;
33}
34
Matteo Scandolo70ac2162016-02-24 15:40:22 -080035diagnostic-container .onethird-height {
Matteo Scandolo51031482016-02-17 13:54:11 -080036 position: relative;
37 height: 33%;
Matteo Scandolo19acf7c2016-03-07 16:07:13 -080038 border-bottom: 1px solid #999;
Matteo Scandolo51031482016-02-17 13:54:11 -080039}
40
Matteo Scandolo70ac2162016-02-24 15:40:22 -080041diagnostic-container .twothird-height {
Matteo Scandolo51031482016-02-17 13:54:11 -080042 position: relative;
43 height: 67%;
44}
45
Matteo Scandolo70ac2162016-02-24 15:40:22 -080046diagnostic-container .subscriber-select{
Matteo Scandolo9fe01af2016-02-09 16:01:49 -080047 max-width: 200px;
48 position: absolute;
49 top: 20px;
50 right: 20px;
51 z-index: 1;
52}
53
Matteo Scandolo19acf7c2016-03-07 16:07:13 -080054diagnostic-container .onethird-height .well,
55diagnostic-container .twothird-height .well {
56 font-weight: bold;
57 max-width: 165px;
58 text-align: center;
59 margin-top: 15px;
60 background: #eee;
61 border-color: steelblue;
62 padding: 10px;
63}
64
Matteo Scandolo3a176a22016-03-07 16:42:03 -080065diagnostic-container .onethird-height .well.pull-right{
66 position: absolute;
67 right: 0px;
68 top: -15px;
69 cursor: pointer;
70 z-index: 200;
71}
72
Matteo Scandolo6c6e5942016-03-02 10:59:46 -080073
74/* subscriber-status-modal */
75subscriber-status-modal .row + .row {
76 margin-top: 20px;
77}
78
Matteo Scandolo219b1a72016-02-09 11:19:22 -080079.half-height + .half-height {
80 border-top: 1px solid black;
81}
82
83service-topology,
84logic-topology {
Matteo Scandolo8a64fa42016-01-21 11:21:03 -080085 height: 100%;
86 width: 100%;
87 display: block;
Matteo Scandolo219b1a72016-02-09 11:19:22 -080088 position: absolute;
89 top: 0;
Matteo Scandolo8a64fa42016-01-21 11:21:03 -080090}
91
Matteo Scandoloe4779902016-02-09 11:37:11 -080092logic-topology .subscriber circle,
93logic-topology .device circle{
94 fill: #fff;
95 stroke: green;
96 stroke-width: 1px;
97}
98
Matteo Scandoloc49ff702016-02-17 15:11:33 -080099logic-topology > svg {
100 position: absolute;
101 top: 0;
102}
103
Matteo Scandoloc49ff702016-02-17 15:11:33 -0800104/* CLOUDS */
105
Matteo Scandolo9fe01af2016-02-09 16:01:49 -0800106logic-topology .network .cloud {
107 fill: #fff;
108 stroke: green;
109 stroke-width: 1px;
110}
111
Matteo Scandoloaf9402e2016-02-17 13:59:20 -0800112/* RACK */
113logic-topology .node.rack > g > rect{
114 fill: #ccc;
115 stroke: steelblue;
116 stroke-width: 1px;
117}
118
119/* CP NODE */
120
121logic-topology .compute-node > rect{
Matteo Scandoload5b2282016-02-16 11:50:51 -0800122 fill: #fff;
123 stroke: steelblue;
124 stroke-width: 1px;
125}
126
Matteo Scandolof81130f2016-03-11 11:16:58 -0800127logic-topology .compute-node > text{
128 font-size: 16px;
129}
130
Matteo Scandoloaf9402e2016-02-17 13:59:20 -0800131/* INSTANCE */
132
133logic-topology .instance > rect{
134 fill: #eee;
135 stroke: steelblue;
136 stroke-width: 1px;
137}
138
Matteo Scandolo79de20a2016-02-16 15:06:11 -0800139logic-topology .node .instance.active rect{
140 fill: lightsteelblue;
141 stroke: steelblue;
142 stroke-width: 1px;
143}
144
Matteo Scandolo26d17e12016-02-23 13:47:14 -0800145logic-topology .node .instance.active.good > rect{
146 fill: green;
147}
148
149logic-topology .node .instance.active.provisioning > rect{
150 fill: yellow;
151}
152
153logic-topology .node .instance.active.bad > rect{
154 fill: red;
155}
156
157/* INSTANCE STATS */
158
159logic-topology .node .instance .stats-container rect {
160 fill: white;
161}
162
163logic-topology .node .instance .stats-container text.name{
164 font-weight: bold;
165}
166
167logic-topology .node .instance .stats-container text.ip{
168 font-style: italic;
169 font-size: 10px;
170}
171
172/* CONTAINERS */
Matteo Scandolof0d6e692016-02-24 11:14:01 -0800173logic-topology .node .instance .stats-container .container rect {
Matteo Scandolo26d17e12016-02-23 13:47:14 -0800174 fill: #eee;
175 stroke: steelblue;
176 stroke-width: 1px;
177}
178
Matteo Scandolo2c33a4c2016-01-25 16:24:42 -0800179/* LEGEND */
180
181.legend {
182 fill: #fff;
183 stroke: #ccc;
184 stroke-width: 1px;
185 position: relative;
186}
187
188.legend text {
189 stroke: #000;
190}
191
Matteo Scandolo8a64fa42016-01-21 11:21:03 -0800192.node {
193 cursor: pointer;
194}
195
Matteo Scandolo5bf04572016-01-25 17:36:08 -0800196.node circle,
197.node rect{
Matteo Scandolo8a64fa42016-01-21 11:21:03 -0800198 fill: #fff;
199 stroke: steelblue;
Matteo Scandolofcdbed32016-02-08 16:55:44 -0800200 stroke-width: 1px;
Matteo Scandolo8a64fa42016-01-21 11:21:03 -0800201}
202
Matteo Scandolof2c99012016-01-25 10:10:38 -0800203.node.subscriber circle,
Matteo Scandolo9fe01af2016-02-09 16:01:49 -0800204.node.subscriber rect,
205.node.router circle,
206.node.router rect {
Matteo Scandolo2c33a4c2016-01-25 16:24:42 -0800207 stroke: #05ffcb;
Matteo Scandolof2c99012016-01-25 10:10:38 -0800208}
209
Matteo Scandolo5bf04572016-01-25 17:36:08 -0800210.node.slice rect {
Matteo Scandolo071ef462016-01-25 12:00:42 -0800211 stroke: #b01dff;
212}
213
Matteo Scandolo5bf04572016-01-25 17:36:08 -0800214.node.instance rect {
Matteo Scandoloc9ebd922016-01-28 12:02:57 -0800215 stroke: #ccc;
216}
217
218.node.instance rect.active {
Matteo Scandolo2c33a4c2016-01-25 16:24:42 -0800219 stroke: #ff8b00;
Matteo Scandolo071ef462016-01-25 12:00:42 -0800220}
221
Matteo Scandolo6e8a75a2016-01-22 09:33:26 -0800222.node rect.slice-detail{
223 fill: #fff;
224 stroke: steelblue;
225 stroke-width: 3px;
226}
227
Matteo Scandolo8a64fa42016-01-21 11:21:03 -0800228.node text {
Matteo Scandolof81130f2016-03-11 11:16:58 -0800229 font: 18px sans-serif;
230}
231
232.node .instance text {
Matteo Scandolo8a64fa42016-01-21 11:21:03 -0800233 font: 12px sans-serif;
234}
235
Matteo Scandolo19acf7c2016-03-07 16:07:13 -0800236.node text.small {
237 font-size: 10px;
238}
239
Matteo Scandolo219b1a72016-02-09 11:19:22 -0800240.link, .device-link {
Matteo Scandolo8a64fa42016-01-21 11:21:03 -0800241 fill: none;
242 stroke: #ccc;
243 stroke-width: 2px;
Matteo Scandolo06f45d62016-01-21 15:38:06 -0800244}
245
Matteo Scandolo2c33a4c2016-01-25 16:24:42 -0800246.link.slice {
Matteo Scandolo9ef3c842016-01-25 13:55:09 -0800247 stroke: rgba(157, 4, 183, 0.29);
248}
Matteo Scandolo2c33a4c2016-01-25 16:24:42 -0800249.link.instance{
Matteo Scandoloc9ebd922016-01-28 12:02:57 -0800250 stroke: #ccc;
251}
252
253.link.instance.active{
Matteo Scandolo2c33a4c2016-01-25 16:24:42 -0800254 stroke: rgba(255, 138, 0, 0.65);
255}
Matteo Scandolo9ef3c842016-01-25 13:55:09 -0800256
Matteo Scandolo06f45d62016-01-21 15:38:06 -0800257.service-details{
258 width: 200px;
259 position: absolute;
260 top: 20px;
261 right: 20px;
Matteo Scandolo3501ccb2016-01-21 16:02:57 -0800262}
263
264/* when showing the thing */
265
266.animate.ng-hide-remove {
267 animation:0.5s bounceInRight ease;
268}
269
270/* when hiding the picture */
271.animate.ng-hide-add {
272 animation:0.5s bounceOutRight ease;
273}
274
Matteo Scandolo07246ca2016-02-22 09:16:46 -0800275/* LOADER */
276.loader {
277 font-size: 10px;
278 margin: 150px auto;
279 text-indent: -9999em;
280 width: 11em;
281 height: 11em;
282 border-radius: 50%;
283 background: #ffffff;
284 background: -moz-linear-gradient(left, #ffffff 10%, rgba(255, 255, 255, 0) 42%);
285 background: -webkit-linear-gradient(left, #ffffff 10%, rgba(255, 255, 255, 0) 42%);
286 background: -o-linear-gradient(left, #ffffff 10%, rgba(255, 255, 255, 0) 42%);
287 background: -ms-linear-gradient(left, #ffffff 10%, rgba(255, 255, 255, 0) 42%);
288 background: linear-gradient(to right, #ffffff 10%, rgba(255, 255, 255, 0) 42%);
289 position: relative;
290 animation: load3 1.4s infinite linear;
291 transform: translateZ(0);
292}
293.loader:before {
294 width: 50%;
295 height: 50%;
296 background: #105E9E;
297 border-radius: 100% 0 0 0;
298 position: absolute;
299 top: 0;
300 left: 0;
301 content: '';
302}
303.loader:after {
304 background: #fff;
305 width: 75%;
306 height: 75%;
307 border-radius: 50%;
308 content: '';
309 margin: auto;
310 position: absolute;
311 top: 0;
312 left: 0;
313 bottom: 0;
314 right: 0;
315}
316
317@keyframes load3 {
318 0% {
319 -webkit-transform: rotate(0deg);
320 transform: rotate(0deg);
321 }
322 100% {
323 -webkit-transform: rotate(360deg);
324 transform: rotate(360deg);
325 }
326}
327
Matteo Scandolo388795a2016-02-22 09:57:55 -0800328/* MODALS */
329
330.modal.fade.in {
331 display: block;
332}
333
Matteo Scandolo3501ccb2016-01-21 16:02:57 -0800334/* ANIMATIONS */
335
336@keyframes bounceInRight {
337 from, 60%, 75%, 90%, to {
338 animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
339 }
340
341 from {
342 opacity: 0;
343 transform: translate3d(3000px, 0, 0);
344 }
345
346 60% {
347 opacity: 1;
348 transform: translate3d(-25px, 0, 0);
349 }
350
351 75% {
352 transform: translate3d(10px, 0, 0);
353 }
354
355 90% {
356 transform: translate3d(-5px, 0, 0);
357 }
358
359 to {
360 transform: none;
361 }
362}
363
Matteo Scandoloc49ff702016-02-17 15:11:33 -0800364@keyframes bounceOutRight {
365 20% {
366 opacity: 1;
367 transform: translate3d(-20px, 0, 0);
368 }
Matteo Scandolo3501ccb2016-01-21 16:02:57 -0800369
Matteo Scandoloc49ff702016-02-17 15:11:33 -0800370 to {
371 opacity: 0;
372 transform: translate3d(2000px, 0, 0);
373 }
Matteo Scandolo8a64fa42016-01-21 11:21:03 -0800374}