johnf-fnordmetric 1.2.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (119) hide show
  1. data/Gemfile +6 -0
  2. data/Rakefile +9 -0
  3. data/fnordmetric.gemspec +41 -0
  4. data/lib/fnordmetric/acceptors/acceptor.rb +42 -0
  5. data/lib/fnordmetric/acceptors/amqp_acceptor.rb +56 -0
  6. data/lib/fnordmetric/acceptors/fyrehose_acceptor.rb +43 -0
  7. data/lib/fnordmetric/acceptors/stomp_acceptor.rb +71 -0
  8. data/lib/fnordmetric/acceptors/tcp_acceptor.rb +58 -0
  9. data/lib/fnordmetric/acceptors/udp_acceptor.rb +37 -0
  10. data/lib/fnordmetric/api.rb +46 -0
  11. data/lib/fnordmetric/cache.rb +20 -0
  12. data/lib/fnordmetric/context.rb +96 -0
  13. data/lib/fnordmetric/defaults.rb +22 -0
  14. data/lib/fnordmetric/enterprise/compatibility_handler.rb +42 -0
  15. data/lib/fnordmetric/ext.rb +75 -0
  16. data/lib/fnordmetric/gauge.rb +98 -0
  17. data/lib/fnordmetric/gauge_calculations.rb +106 -0
  18. data/lib/fnordmetric/gauge_modifiers.rb +144 -0
  19. data/lib/fnordmetric/gauge_rendering.rb +40 -0
  20. data/lib/fnordmetric/gauge_validations.rb +15 -0
  21. data/lib/fnordmetric/gauges/distribution_gauge.rb +87 -0
  22. data/lib/fnordmetric/gauges/server_health_gauge.rb +13 -0
  23. data/lib/fnordmetric/gauges/timeseries_gauge.rb +138 -0
  24. data/lib/fnordmetric/gauges/toplist_gauge.rb +44 -0
  25. data/lib/fnordmetric/histogram.rb +64 -0
  26. data/lib/fnordmetric/logger.rb +63 -0
  27. data/lib/fnordmetric/namespace.rb +208 -0
  28. data/lib/fnordmetric/session.rb +139 -0
  29. data/lib/fnordmetric/standalone.rb +20 -0
  30. data/lib/fnordmetric/timeseries.rb +79 -0
  31. data/lib/fnordmetric/toplist.rb +61 -0
  32. data/lib/fnordmetric/udp_client.rb +22 -0
  33. data/lib/fnordmetric/util.rb +25 -0
  34. data/lib/fnordmetric/version.rb +3 -0
  35. data/lib/fnordmetric/web/app.rb +63 -0
  36. data/lib/fnordmetric/web/app_helpers.rb +42 -0
  37. data/lib/fnordmetric/web/dashboard.rb +40 -0
  38. data/lib/fnordmetric/web/event.rb +99 -0
  39. data/lib/fnordmetric/web/reactor.rb +127 -0
  40. data/lib/fnordmetric/web/web.rb +59 -0
  41. data/lib/fnordmetric/web/websocket.rb +41 -0
  42. data/lib/fnordmetric/widget.rb +82 -0
  43. data/lib/fnordmetric/widgets/bars_widget.rb +44 -0
  44. data/lib/fnordmetric/widgets/html_widget.rb +28 -0
  45. data/lib/fnordmetric/widgets/numbers_widget.rb +80 -0
  46. data/lib/fnordmetric/widgets/pie_widget.rb +23 -0
  47. data/lib/fnordmetric/widgets/timeseries_widget.rb +65 -0
  48. data/lib/fnordmetric/widgets/toplist_widget.rb +68 -0
  49. data/lib/fnordmetric/worker.rb +89 -0
  50. data/lib/fnordmetric/zero_config_gauge.rb +138 -0
  51. data/lib/fnordmetric.rb +149 -0
  52. data/run_specs.sh +11 -0
  53. data/spec/api_spec.rb +49 -0
  54. data/spec/context_spec.rb +42 -0
  55. data/spec/dashboard_spec.rb +38 -0
  56. data/spec/event_spec.rb +170 -0
  57. data/spec/ext_spec.rb +14 -0
  58. data/spec/fnordmetric_spec.rb +56 -0
  59. data/spec/gauge_like_shared.rb +56 -0
  60. data/spec/gauge_modifiers_spec.rb +583 -0
  61. data/spec/gauge_spec.rb +230 -0
  62. data/spec/namespace_spec.rb +114 -0
  63. data/spec/session_spec.rb +231 -0
  64. data/spec/spec_helper.rb +49 -0
  65. data/spec/tcp_acceptor_spec.rb +35 -0
  66. data/spec/timeseries_gauge_spec.rb +56 -0
  67. data/spec/udp_acceptor_spec.rb +35 -0
  68. data/spec/util_spec.rb +46 -0
  69. data/spec/widget_spec.rb +113 -0
  70. data/spec/worker_spec.rb +40 -0
  71. data/web/.gitignore +4 -0
  72. data/web/build.sh +34 -0
  73. data/web/css/fnordmetric.core.css +868 -0
  74. data/web/fnordmetric-core.css +1409 -0
  75. data/web/fnordmetric-core.js +3420 -0
  76. data/web/fnordmetric-ui.css +282 -0
  77. data/web/fnordmetric-ui.js +12032 -0
  78. data/web/haml/app.haml +20 -0
  79. data/web/haml/distribution_gauge.haml +118 -0
  80. data/web/haml/timeseries_gauge.haml +80 -0
  81. data/web/haml/toplist_gauge.haml +194 -0
  82. data/web/img/head.png +0 -0
  83. data/web/img/list.png +0 -0
  84. data/web/img/list_active.png +0 -0
  85. data/web/img/list_hover.png +0 -0
  86. data/web/img/loader.gif +0 -0
  87. data/web/img/loader_white.gif +0 -0
  88. data/web/img/navbar.png +0 -0
  89. data/web/img/navbar_btn.png +0 -0
  90. data/web/img/picto_gauge.png +0 -0
  91. data/web/js/fnordmetric.bars_widget.js +178 -0
  92. data/web/js/fnordmetric.dashboard_view.js +99 -0
  93. data/web/js/fnordmetric.gauge_explorer.js +173 -0
  94. data/web/js/fnordmetric.gauge_view.js +260 -0
  95. data/web/js/fnordmetric.html_widget.js +21 -0
  96. data/web/js/fnordmetric.js +315 -0
  97. data/web/js/fnordmetric.numbers_widget.js +122 -0
  98. data/web/js/fnordmetric.overview_view.js +35 -0
  99. data/web/js/fnordmetric.pie_widget.js +118 -0
  100. data/web/js/fnordmetric.realtime_timeline_widget.js +175 -0
  101. data/web/js/fnordmetric.session_view.js +342 -0
  102. data/web/js/fnordmetric.timeline_widget.js +333 -0
  103. data/web/js/fnordmetric.timeseries_widget.js +405 -0
  104. data/web/js/fnordmetric.toplist_widget.js +119 -0
  105. data/web/js/fnordmetric.ui.js +91 -0
  106. data/web/js/fnordmetric.util.js +248 -0
  107. data/web/vendor/font-awesome/css/font-awesome-ie7.min.css +22 -0
  108. data/web/vendor/font-awesome/css/font-awesome.css +540 -0
  109. data/web/vendor/font-awesome/css/font-awesome.min.css +33 -0
  110. data/web/vendor/font-awesome/font/FontAwesome.otf +0 -0
  111. data/web/vendor/font-awesome/font/fontawesome-webfont.eot +0 -0
  112. data/web/vendor/font-awesome/font/fontawesome-webfont.svg +284 -0
  113. data/web/vendor/font-awesome/font/fontawesome-webfont.ttf +0 -0
  114. data/web/vendor/font-awesome/font/fontawesome-webfont.woff +0 -0
  115. data/web/vendor/jquery-1.6.2.min.js +18 -0
  116. data/web/vendor/jquery-ui.min.js +6 -0
  117. data/web/vendor/jquery.combobox.js +129 -0
  118. data/web/vendor/jquery.maskedinput.js +252 -0
  119. metadata +444 -0
@@ -0,0 +1,868 @@
1
+ body, html{ height:100%; padding:0px;}
2
+ body {
3
+ background: url('img/head.png') 0 -21px repeat-x fixed #2E3133;
4
+ color:#333;
5
+ margin:0;
6
+ padding:0;
7
+ overflow-y:scroll;
8
+ font: 12px/20px "Gotham Narrow", "Helvetica Neue", Helvetica, Arial, sans-serif;
9
+ overflow-x:hidden;
10
+ }
11
+
12
+ body.inner{ background:#fff; margin-right:10px; }
13
+
14
+ h1{
15
+ font-size:24px;
16
+ color:#333;
17
+ margin:0 0 6px 17px;
18
+ font-weight:bold;
19
+ }
20
+
21
+ h3{
22
+ font-size:12px;
23
+ color:#444;
24
+ margin:0 0 0 18px;
25
+ font-weight:500;
26
+ }
27
+
28
+ hr{
29
+ border:none;
30
+ border-top:1px solid #ddd;
31
+ }
32
+
33
+ a.link{
34
+ color:#2281CF;
35
+ text-decoration:none;
36
+ }
37
+
38
+ a.link:hover{
39
+ text-decoration:underline;
40
+ }
41
+
42
+ button,
43
+ input,
44
+ select,
45
+ textarea {
46
+ margin: 0;
47
+ font-size: 100%;
48
+ vertical-align: middle;
49
+ }
50
+
51
+ button,
52
+ input {
53
+ *overflow: visible;
54
+ line-height: normal;
55
+ }
56
+
57
+ button::-moz-focus-inner,
58
+ input::-moz-focus-inner {
59
+ padding: 0;
60
+ border: 0;
61
+ }
62
+
63
+ button,
64
+ input[type="button"],
65
+ input[type="reset"],
66
+ input[type="submit"] {
67
+ cursor: pointer;
68
+ -webkit-appearance: button;
69
+ }
70
+
71
+ input[type="search"] {
72
+ -webkit-box-sizing: content-box;
73
+ -moz-box-sizing: content-box;
74
+ box-sizing: content-box;
75
+ -webkit-appearance: textfield;
76
+ }
77
+
78
+ input[type="search"]::-webkit-search-decoration{
79
+ -webkit-appearance: none;
80
+ }
81
+
82
+ input[type="search"], input[type="text"]{
83
+ border:1px solid #cecece;
84
+ background:#fff;
85
+ border-radius:3px;
86
+ height: 28px;
87
+ line-height: 28px;
88
+ padding: 0 8px;
89
+ color: #333;
90
+ font-size: 14px;
91
+ box-shadow: 0 0 2px 1px rgba(0,0,0,0.1) inset;
92
+ }
93
+
94
+
95
+ table{ width:100%; }
96
+ table td, th{ text-align:left; border-bottom:1px solid #dedede; height:42px; }
97
+ table tr td:first-child{ padding-left:15px; }
98
+ table th{ background:#efefef; }
99
+
100
+ .shown{ display: block; }
101
+ .hidden{ display: none; }
102
+
103
+ .topbar{ height:38px; background:#24272c; position:fixed; top:0px; width:100%; z-index: 1000;}
104
+ .topbar ul { list-style-type:none; margin:0; }
105
+ .topbar ul li { padding: 5px 10px 5px 10px; background-color:#3b3e45; display:inline; height:38px; line-height:38px; border-radius:3px; margin-right:5px;}
106
+ .topbar ul li a { color:#ccc; font-size:13px; text-decoration:none; }
107
+ .topbar ul li a:hover { color:#fff; }
108
+ .topbar ul li.active a { color:#fff; }
109
+
110
+ #sidebar{ width:220px; position:fixed; background:#3B3E45; height:1500px; padding-top:15px; }
111
+ .navbar{
112
+ height:49px;
113
+ background:url('img/navbar.png');
114
+ position:absolute;
115
+ z-index: 11004;
116
+ top:0;
117
+ }
118
+
119
+ .navbar h1{
120
+ text-align:center;
121
+ color:#525252;
122
+ font-weight:500;
123
+ line-height:49px;
124
+ font-size:16px;
125
+ }
126
+
127
+ .navbar h1 a.current{
128
+ color:#333;
129
+ font-weight:700;
130
+ }
131
+
132
+ a.button{
133
+ display:block;
134
+ text-decoration:none;
135
+ float:right;
136
+ line-height:25px;
137
+ height:25px;
138
+ background:url('img/navbar_btn.png');
139
+ margin-right:30px;
140
+ padding:0 20px;
141
+ margin-top:12px;
142
+ border:1px solid #979797;
143
+ box-shadow:0 1px 0 #fff;
144
+ border-radius:3px;
145
+ cursor:pointer;
146
+ }
147
+
148
+ a.button.back{
149
+ float:left;
150
+ margin-left:17px;
151
+ font-weight: bold;
152
+ font-size: 20px;
153
+ line-height: 21px;
154
+ padding: 0 11px;
155
+ color:#555;
156
+ }
157
+
158
+ a.button:hover, a.button.dark{
159
+ background-color: #F4F4F4;
160
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f4f4f4), to(#e9e9e9));
161
+ background-image: -webkit-linear-gradient(top, #f4f4f4, #e9e9e9);
162
+ background-image: -moz-linear-gradient(top, #f4f4f4, #e9e9e9);
163
+ background-image: -ms-linear-gradient(top, #f4f4f4, #e9e9e9);
164
+ background-image: -o-linear-gradient(top, #f4f4f4, #e9e9e9);
165
+ background-image: linear-gradient(top, #f4f4f4, #e9e9e9);
166
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#f4f4f4', EndColorStr='#e9e9e9');
167
+ color:#000;
168
+ }
169
+
170
+ a.button:active, a.button.dark:hover{
171
+ background:#ddd;
172
+ }
173
+
174
+ a.button.dark:active{
175
+ background:#ccc;
176
+ }
177
+
178
+ .navbar a.button.datepicker, a.button.datepicker_sa{
179
+ padding-left:0;
180
+ padding-right:10px;
181
+ margin-right:15px;
182
+ }
183
+
184
+ .navbar a.button.datepicker .date, a.button.datepicker_sa .date{
185
+ background: white;
186
+ padding: 0 13px;
187
+ border-right: 1px solid #DDD;
188
+ box-shadow: 0 0 2px #ddd inset;
189
+ font-style:italic;
190
+ display:inline-block;
191
+ margin-right:10px;
192
+ color:#555;
193
+ }
194
+
195
+ .navbar a.button.datepicker i, a.button.datepicker_sa i{
196
+ font-size: 17px;
197
+ float: right;
198
+ margin-top: 0px;
199
+ }
200
+
201
+ a.button.datepicker_sa {
202
+ margin-top:0;
203
+ height: 35px;
204
+ float:none;
205
+ background-color: #F4F4F4;
206
+ background-image: -webkit-linear-gradient(top, #ffffff, #e9e9e9);
207
+ background-image: -moz-linear-gradient(top, #ffffff, #e9e9e9);
208
+ background-image: -ms-linear-gradient(top, #ffffff, #e9e9e9);
209
+ background-image: -o-linear-gradient(top, #ffffff, #e9e9e9);
210
+ background-image: linear-gradient(top, #ffffff, #e9e9e9);
211
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffffff', EndColorStr='#e9e9e9');
212
+ }
213
+
214
+ a.button.datepicker_sa:hover {
215
+ background: #f4f4f4;
216
+ }
217
+
218
+ a.button.datepicker_sa .date {
219
+ height: 35px;
220
+ line-height: 37px;
221
+ }
222
+
223
+ a.button.datepicker_sa i {
224
+ margin-top:7px;
225
+ }
226
+
227
+ .navbar + h1{
228
+ margin-top:22px;
229
+ }
230
+
231
+ .navbar .button.navbutton{
232
+ padding-right:13px;
233
+ }
234
+
235
+ .navbar .navbutton i{
236
+ margin-left:-7px;
237
+ margin-right:6px;
238
+ display:inline-block;
239
+ }
240
+
241
+
242
+ .navbar a.button:first-child{
243
+ margin-right:38px;
244
+ }
245
+
246
+ .picto{ display:block; height:14px; width:14px; float:left; opacity:0.7; }
247
+ .picto.piechart{ background-position:-42px -173px; width:9px; margin-right:5px; }
248
+
249
+ #viewport{ float:left; margin-left:220px; min-width:790px; }
250
+ #viewport .viewport_inner{ margin:0 6px; background:#fff; padding-top:1px; padding-bottom:1px; }
251
+
252
+ #viewport, #sidebar ul li:hover, #sidebar ul li.active{ background:#24272c; box-shadow: inset 0px 1px 2px 1px rgba(0, 0, 0, 0.4); }
253
+
254
+ .widget{ min-height:100px; border-right:1px solid #ececec; float:left; }
255
+ .widget.full_width{ border-right:none; }
256
+ .widget .inner{ margin:20px; }
257
+ /*.widget .headbar{ margin-bottom:30px; }*/
258
+
259
+ .ui_value.large{ font-size:18px; font-weight:bold; color:#333; }
260
+ .ui_value.left{ float:left; }
261
+
262
+ .ui_toplist{ min-height:300px; }
263
+ .ui_toplist.loading{ opacity:0.5; background:url('/img/loader.gif') no-repeat center center; }
264
+
265
+ .ui_toplist .toplist_item{ border-bottom:1px solid #dedede; height:42px; display:block; }
266
+ .ui_toplist .toplist_item:hover{ background:#fff; }
267
+ .ui_toplist .toplist_item .title{ float:left; line-height:42px; margin-left:20px; font-size:13px; color:#333; }
268
+ .ui_toplist .toplist_item .value{ float:right; line-height:42px; margin-right:20px; font-size:13px; font-weight:bold; width:70px; color:#666; }
269
+ .ui_toplist .toplist_item .value.large{ width:110px; }
270
+ .ui_toplist .toplist_item .percent{ float:right; line-height:42px; margin-right:30px; font-size:18px; font-weight:bold; color:#333; width:80px; white-space:nowrap; overflow:hidden; }
271
+
272
+ .ui_toplist .toplist_item .trend{ float:right; line-height:42px; margin-right:30px; font-size:18px; font-weight:bold; color:#333; width:70px; white-space:nowrap; }
273
+
274
+ .ui_toplist .toplist_item .ui_trend{ margin-top:10px; }
275
+ .ui_toplist .toplist_item .trend .ui_trend{ font-size:18px; padding:4px 5px 5px 5px; margin-top:6px; }
276
+
277
+ .ui_toplist .searchbar{ background:#efefef; border-bottom: 1px solid #DDD; padding:10px 17px; }
278
+ .ui_toplist.clickable .toplist_item:hover{ background:#efefef; cursor:pointer; }
279
+
280
+ .ui_toplist.clickable .toplist_item.active{
281
+ background: #7bb2ff; /* Old browsers */
282
+ background: -moz-linear-gradient(top, #7bb2ff 0%, #609ff8 44%, #4089ee 100%);
283
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#7bb2ff), color-stop(44%,#609ff8), color-stop(100%,#4089ee)); /* Chrome,Safari4+ */
284
+ background: -webkit-linear-gradient(top, #7bb2ff 0%,#609ff8 44%,#4089ee 100%);
285
+ background: -o-linear-gradient(top, #7bb2ff 0%,#609ff8 44%,#4089ee 100%);
286
+ background: -ms-linear-gradient(top, #7bb2ff 0%,#609ff8 44%,#4089ee 100%);
287
+ background: linear-gradient(top, #7bb2ff 0%,#609ff8 44%,#4089ee 100%);
288
+
289
+ border-top:1px solid #5F94DE;
290
+ border-bottom:1px solid #4E7DBF;
291
+
292
+ margin-top:-1px;
293
+
294
+ line-height:41px;
295
+
296
+ box-shadow:0 1px 1px rgba(255,255,255,0.5) inset;
297
+ }
298
+
299
+ .ui_toplist.clickable .toplist_item.active .title,
300
+ .ui_toplist.clickable .toplist_item.active .value,
301
+ .ui_toplist.clickable .toplist_item.active .percent {
302
+ color:#fff;
303
+ }
304
+
305
+
306
+ .headbar {
307
+
308
+ height:36px;
309
+ background-color: #F4F4F4;
310
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f4f4f4), to(#e9e9e9));
311
+ background-image: -webkit-linear-gradient(top, #f4f4f4, #e9e9e9);
312
+ background-image: -moz-linear-gradient(top, #f4f4f4, #e9e9e9);
313
+ background-image: -ms-linear-gradient(top, #f4f4f4, #e9e9e9);
314
+ background-image: -o-linear-gradient(top, #f4f4f4, #e9e9e9);
315
+ background-image: linear-gradient(top, #f4f4f4, #e9e9e9);
316
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#f4f4f4', EndColorStr='#e9e9e9');
317
+ padding: 0 25px;
318
+ border-bottom: 1px solid #C9C9C9;
319
+ border-top: 1px solid #d0d0d0;
320
+ font-size:13px;
321
+ line-height:29px;
322
+ text-shadow: 1px 0px 2px rgba(255, 255, 255, 1);
323
+ -moz-text-shadow: 1px 0px 2px rgba(255,255,255,1);
324
+ -webkit-text-shadow: 1px 0px 2px rgba(255,255,255,1);
325
+ overflow:hidden;
326
+ }
327
+
328
+ .headbar.small{ height:29px; }
329
+
330
+ .headbar h2{ line-height:37px; margin:0; float:left; font-size:14px; }
331
+ .headbar .datepicker{ background:#fff; border:1px solid #999; height:20px; padding:0 7px; float:right; margin:8px -1px; min-width:100px; font-size:11px; font-style:italic; line-height:21px; }
332
+ .headbar .button.mr{ margin-right:16px; }
333
+ .headbar .button.ml{ margin-left:16px; }
334
+
335
+ .headbar .button{
336
+ margin:8px 0px; height:16px; float:right; display:block;
337
+ margin-right:-1px;
338
+ border:1px solid #999;
339
+ border-bottom-color:#888;
340
+ box-shadow: 0 1px 0 #fff;
341
+ cursor:pointer;
342
+ border-radius:3px;
343
+ font-size: 11px;
344
+ font-weight:bold;
345
+ line-height:16px;
346
+ padding:2px 6px;
347
+ text-align:center;
348
+ text-decoration:none;
349
+ vertical-align:top;
350
+ white-space:nowrap;
351
+ background:url('img/navbar_btn.png');
352
+ }
353
+
354
+ .headbar .button:hover{background:#e8e8e8;border-bottom-color:#999;-webkit-box-shadow:0 1px 0 rgba(0, 0, 0, .05)}
355
+
356
+ .headbar .button.active{background:#e3e3e3;border-bottom-color:#999;-webkit-box-shadow:0 1px 0 rgba(0, 0, 0, .05)}
357
+
358
+ .headbar .button:active{ background:#ddd; }
359
+
360
+ .headbar .btn_group.mr{ }
361
+
362
+ .headbar .btn_group .button{
363
+ border-radius:0;
364
+ }
365
+
366
+ .headbar .btn_group .button:last-child{
367
+ border-top-left-radius:3px;
368
+ border-bottom-left-radius:3px;
369
+ }
370
+
371
+ .headbar .btn_group .button:first-child{
372
+ border-top-right-radius:3px;
373
+ border-bottom-right-radius:3px;
374
+ }
375
+
376
+ .numbers_container, .number{ float:left; width:60px; }
377
+ .number{ padding-right:20px; margin-right:6px; }
378
+ .number .value{ color:#444; font-size:20px; display:block; margin-bottom:5px; font-weight:bold; }
379
+ .number .desc{ color:#999; font-size:12px; margin-bottom:5px; display:block; white-space:nowrap; }
380
+ .number:last-child{ border-right:none; }
381
+ .numbers_container{ padding-right:0px; width:215px; float:left; margin:15px 0 -1px 20px; padding-bottom:5px; }
382
+
383
+ .numbers_container.size_3{ width:258px; }
384
+ .numbers_container.size_4{ width:358px; }
385
+ .numbers_container.size_5{ width:450px; }
386
+
387
+ .numbers_container .title{ padding:4px 0 1px 0; color:#333; font-size:14px; display:block;
388
+ font-weight:400; }
389
+ .numbers_container .title.with_swatch{ margin-bottom:4px; }
390
+ .numbers_container .title.with_swatch span{ padding-left:20px; }
391
+ .numbers_container .title .swatch{ display:block; float:left; position:absolute; margin-top:3px; margin-right:5px; }
392
+
393
+ .numbers_container.numbers_pad_bottom .number{ padding-bottom:19px; }
394
+ .numbers_container.numbers_pad_bottom{ border-bottom:none; }
395
+
396
+ ul.session_list{ list-style-type:none; margin:0; padding:56px 16px 0 11px; }
397
+ ul.session_list li{ color:#0A0A0A; height:24px; overflow:hidden; line-height:24px; padding:4px; }
398
+ ul.session_list li:hover{ background:#eee; cursor:pointer; }
399
+ ul.session_list li input{ float: left; margin-right: 7px; }
400
+ ul.session_list li .picture{ height:25px; width:25px; float:left; background:#333; overflow:hidden; }
401
+ ul.session_list li .name{ float:left; width:115px; overflow:hidden; margin-left:10px; font-size:12px; }
402
+ ul.session_list li .time{ float:right; width:40px; overflow:hidden; text-align:right; font-size:10px; }
403
+ ul.session_list li .history{ float:right; color:#999; font-size:10px; line-height: 12px; display:none }
404
+ ul.session_list li .history:hover{ color:#333; text-decoration:underline; }
405
+
406
+ .sessions_feed{ min-width:300px; min-height:100px; float:left; }
407
+ .sessions_feed ul.feed_inner{ margin:5px 15px; min-height:100px; padding:0px; padding-top:47px; }
408
+ .sessions_feed ul.feed_inner li{ list-style-type:none; border-bottom:1px solid #e2e2e2; min-height:54px; }
409
+ .sessions_feed ul.feed_inner li .message{ font-size:12px; line-height:19px; padding-top:9px; display:block; }
410
+ .sessions_feed ul.feed_inner li .properties{ margin-left:50px; font-size:10px; display:block; color:#555; }
411
+ .sessions_feed ul.feed_inner li .time{ font-size:10px; line-height:20px; padding-top:19px; padding-right:10px; display:block; color:#999; float:right; font-style:italic; }
412
+ .sessions_feed ul.feed_inner li .picture{ height:40px; overflow:hidden; width:40px; float:left; background:#333; margin:7px 10px 0 0; cursor:pointer; }
413
+ .sessions_sidebar{ min-height:1200px; float:right; width:250px; border-left:1px solid #C7C9CC; }
414
+ .events_sidebar{ min-height:1200px; float:left; width:200px; border-right:1px solid #C7C9CC; }
415
+
416
+ ul.event_type_list{ margin:10px; padding:0; }
417
+ ul.event_type_list li{ list-style-type:none; color:#0A0A0A; margin-bottom:8px; height:18px; overflow:hidden; line-height:18px; padding:4px; }
418
+ ul.event_type_list li input{ margin-right:7px; }
419
+ ul.event_type_list li:hover{ background:#eee; cursor:pointer; }
420
+ ul.event_type_list li .history{ float:right; color:#999; font-size:10px; display:none; }
421
+ ul.event_type_list li .history:hover{ color:#333; text-decoration:underline; }
422
+
423
+ .clearfix:after {
424
+ content: ".";
425
+ display: block;
426
+ clear: both;
427
+ visibility: hidden;
428
+ line-height: 0;
429
+ height: 0;
430
+ }
431
+
432
+ .highcharts-series circle{ stroke-width:1px; }
433
+
434
+ ul.ui_tabs{
435
+ list-style-type:none;
436
+ margin:0;
437
+ padding:0;
438
+ height:36px;
439
+ display:block;
440
+ width:100%;
441
+ margin-top:30px;
442
+ font-size:13px;
443
+ margin-bottom:-1px;
444
+ padding-left:16px;
445
+ }
446
+
447
+ ul.ui_tabs li{
448
+ float:left;
449
+ }
450
+
451
+ ul.ui_tabs li a{
452
+ display:block;
453
+ height:35px;
454
+ line-height:36px;
455
+ border-top:1px solid none;
456
+ padding:0 25px;
457
+ border-top-left-radius:4px;
458
+ border-top-right-radius:4px;
459
+ color:#666;
460
+ font-weight:500;
461
+ text-decoration:none;
462
+ }
463
+
464
+
465
+ ul.ui_tabs li a:hover{
466
+ color:#333;
467
+ }
468
+
469
+ ul.ui_tabs li.active a{
470
+ border: 1px solid #D0D0D0;
471
+ border-bottom:none;
472
+ color:#333;
473
+ background-color: #F4F4F4;
474
+ }
475
+
476
+ .gauge_viewport{ margin-top:30px; }
477
+
478
+
479
+ .widget.RealtimeValueWidget .big_number{
480
+ float:right;
481
+ margin-right:30px;
482
+ width:200px;
483
+ text-align:center;
484
+ margin-top:70px;
485
+ }
486
+
487
+ .widget.RealtimeValueWidget .big_number .value{
488
+ line-height:80px;
489
+ font-size:58px;
490
+ }
491
+
492
+ h1.head{ margin-top:70px; }
493
+ .gauge_viewport{ margin-top:30px; }
494
+
495
+
496
+ .modal_backdrop {
497
+ background-color: #000000;
498
+ position: fixed;
499
+ top: 0;
500
+ left: 225px;
501
+ right: 0;
502
+ bottom: 0;
503
+ z-index: 10000;
504
+ opacity: 0;
505
+ -webkit-transition: opacity .3s linear, top .3s ease-out;
506
+ -moz-transition: opacity .3s linear, top .3s ease-out;
507
+ -ms-transition: opacity .3s linear, top .3s ease-out;
508
+ -o-transition: opacity .3s linear, top .3s ease-out;
509
+ transition: opacity .3s linear, top .3s ease-out;
510
+ }
511
+
512
+ .modal_backdrop.visible {
513
+ filter: alpha(opacity=10);
514
+ -khtml-opacity: 0.1;
515
+ -moz-opacity: 0.1;
516
+ opacity: 0.1;
517
+ }
518
+
519
+ .modal {
520
+ position: absolute;
521
+ left: 225px;
522
+ z-index: 11000;
523
+ background-color: #fff;
524
+ border: 1px solid #999;
525
+ border: 1px solid rgba(0, 0, 0, 0.3);
526
+
527
+ height:500px;
528
+
529
+ -webkit-border-radius: 4px;
530
+ -moz-border-radius: 4px;
531
+ border-radius: 4px;
532
+ -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
533
+ -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
534
+ box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
535
+ -webkit-background-clip: padding-box;
536
+ -moz-background-clip: padding-box;
537
+ background-clip: padding-box;
538
+
539
+ -webkit-transition: opacity .3s linear, top .3s ease-out;
540
+ -moz-transition: opacity .3s linear, top .3s ease-out;
541
+ -ms-transition: opacity .3s linear, top .3s ease-out;
542
+ -o-transition: opacity .3s linear, top .3s ease-out;
543
+ transition: opacity .3s linear, top .3s ease-out;
544
+ top: -500px;
545
+ }
546
+
547
+ .modal.visible {
548
+ top: 47px;
549
+ }
550
+
551
+ .modal_inner{
552
+ margin:15px 20px 3px 20px;
553
+ }
554
+
555
+ .report_view{
556
+ margin-top:70px;
557
+ }
558
+
559
+ .dashboard_view{
560
+ margin-top:47px;
561
+ }
562
+
563
+ #sidebar .ul_head{ margin-top:30px; color:#ccc; font-weight:bold; text-transform:uppercase; padding-left:25px; font-size:11px; margin-bottom:5px; }
564
+ #sidebar ul{ list-style-type:none; padding:0; margin:0; }
565
+ #sidebar ul li{ height:28px; line-height:28px; cursor:pointer; font-size:13px; padding-left:25px; }
566
+ #sidebar ul li a{ color:#ccc; text-decoration:none; }
567
+ /*#sidebar ul li:after{ content:'›'; display:block; float:right; margin-right:15px; color:#ccc; font-size:16px; line-height:27px; }*/
568
+ #sidebar ul li i{ margin-right: 1px; color: #AAA; font-size: 11px; position: relative; left: -2px; top: -1px; display:none; }
569
+ #sidebar ul li:hover, #tabs ul li:hover:after{ color:#fff; }
570
+ #sidebar ul li:hover .picto{ opacity:1; }
571
+ #sidebar ul li.active i, #sidebar ul li.active a{ color:#eee; }
572
+
573
+ .ui_sidebar_toplist{
574
+ border-right: 1px solid #DDD;
575
+ }
576
+
577
+ .ui_sidebar_toplist .toplist_item.active{
578
+ margin-right:-1px;
579
+ }
580
+
581
+ .swatch {
582
+ width: 10px;
583
+ height: 10px;
584
+ border: 1px solid rgba(0, 0, 0, 0.2);
585
+ border-radius:2px;
586
+ }
587
+
588
+ .flash_msg_over{
589
+ background-color: rgba(0,0,0,0.9);
590
+ position: fixed;
591
+ top: 0;
592
+ left: 0;
593
+ right: 0;
594
+ bottom: 0;
595
+ z-index: 99999999999;
596
+ opacity:0;
597
+ -webkit-transition: opacity .3s linear;
598
+ -moz-transition: opacity .3s linear;
599
+ -ms-transition: opacity .3s linear;
600
+ -o-transition: opacity .3s linear;
601
+ transition: opacity .3s linear;
602
+ }
603
+
604
+ .flash_msg_over.visible{
605
+ opacity:1;
606
+ }
607
+
608
+ .flash_msg_over .inner{ position:fixed; width:600px; height:300px; left:50%; margin-left:-300px; text-align:center; top:30%; }
609
+
610
+
611
+ .loader_white{
612
+ height: 32px;
613
+ width: 32px;
614
+ background: url('/img/loader_white.gif') no-repeat center center;
615
+ }
616
+
617
+
618
+ .flash_msg_over h1{
619
+ margin-top: 37px;
620
+ font-weight: bold;
621
+ font-size: 26px;
622
+ color:#444;
623
+ }
624
+
625
+ .flash_msg_over h2{
626
+ font-weight: normal;
627
+ font-size: 18px;
628
+ color: #aaa;
629
+ margin-top: 60px;
630
+ }
631
+
632
+ .flash_msg_over .loader_white{
633
+ width:auto;
634
+ margin-top:26px;
635
+ }
636
+
637
+
638
+ .ui_trend{
639
+ float:right;
640
+ font-size:11px;
641
+ font-weight:bold;
642
+ background:rgba(255,255,255,0.9);
643
+ height:22px;
644
+ line-height:23px;
645
+ padding:0 5px;
646
+ border-radius:3px;
647
+ }
648
+
649
+ .ui_trend.left{
650
+ float:left;
651
+ }
652
+
653
+ .ui_item_trending{
654
+ width: 250px;
655
+ margin: 10px 20px;
656
+ float: left;
657
+ border-bottom:1px solid #ddd;
658
+ padding:10px;
659
+ }
660
+
661
+ .ui_item_trending .ui_trend{
662
+ font-size:18px;
663
+ }
664
+
665
+ .ui_item_trending .title{
666
+ font-size:14px;
667
+ }
668
+
669
+ .ui_item_trending .value{
670
+ float:right;
671
+ line-height: 24px;
672
+ margin-right: 10px;
673
+ color: #999;
674
+ }
675
+
676
+ .numbers_container .ui_trend{ font-size:16px; float:left; white-space:nowrap; }
677
+
678
+ #preload{ visibility:hidden; position:absolute; height:0px; width:0px; overflow:hidden; }
679
+
680
+ ul.ui_numbers{
681
+ list-style-type:none;
682
+ margin:15px 25px;
683
+ }
684
+
685
+ ul.ui_numbers li{
686
+ float:left;
687
+ height:40px;
688
+ margin-right:20px;
689
+ margin-left:10px;
690
+ }
691
+
692
+ ul.ui_numbers li .val{
693
+ float:left;
694
+ font-size: 33px;
695
+ font-weight: bold;
696
+ color: #333;
697
+ }
698
+
699
+ ul.ui_numbers li .title{
700
+ float:left;
701
+ font-size: 12px;
702
+ font-weight: normal;
703
+ color: #999;
704
+ width: 77px;
705
+ line-height: 13px;
706
+ margin-top: -3px;
707
+ margin-left: 9px;
708
+ }
709
+
710
+ ul.ui_numbers li.twoline .title{
711
+ float:none; margin-left:0px; width:100px; font-weight:normal; font-size:11px; margin-top:-7px; margin-bottom:1px;
712
+ }
713
+
714
+ ul.ui_numbers li.twoline .val{
715
+ font-size:16px;
716
+ }
717
+
718
+ input.input{
719
+ background: white;
720
+ padding: 0 13px;
721
+ border: 1px solid #ccc;
722
+ box-shadow: 0 0 2px #ddd inset;
723
+ border-radius:3px;
724
+ color: #666;
725
+ font-size:14px;
726
+ height: 32px;
727
+ line-height: 32px;
728
+ }
729
+
730
+ input.input.ropen{
731
+ border-right:none;
732
+ border-top-right-radius:0;
733
+ border-bottom-right-radius:0;
734
+ }
735
+
736
+ input.input.lopen{
737
+ border-left:none;
738
+ border-top-left-radius:0;
739
+ border-bottom-left-radius:0;
740
+ }
741
+
742
+ .ui_fancylinks b{
743
+ display:block;
744
+ margin-bottom:5px;
745
+ text-transform:uppercase;
746
+ font-size: 11px;
747
+ color: #777;
748
+ }
749
+
750
+ .ui_fancylinks a{
751
+ font-size:13px;
752
+ color:#333;
753
+ border-bottom:1px solid #9DC4EB;
754
+ cursor:pointer;
755
+ margin-right:5px;
756
+ color:#06c;
757
+ }
758
+
759
+ .ui_fancylinks a:hover{
760
+ color:#333;
761
+ border-bottom:1px solid #999;
762
+ }
763
+
764
+ .widget_histogram_bars .tooltip {
765
+ font-size: 12px;
766
+ color: #fff;
767
+ text-shadow: #000 1px 1px 0;
768
+ background-color: rgba(0, 0, 0, 0.7);
769
+ border: 1px solid rgba(0, 0, 0, 0.9);
770
+ border-radius: 3px;
771
+ padding: 0px 4px;
772
+ margin: 2px;
773
+ line-height: 18px;
774
+ white-space: nowrap;
775
+ overflow: hidden;
776
+ position: absolute;
777
+ display: none;
778
+ }
779
+ .widget_histogram_bars rect:hover {
780
+ opacity: 0.9;
781
+ }
782
+
783
+ .ge_controlpanel {
784
+ height:85px;
785
+ padding:20px;
786
+ float:left;
787
+ border-right:1px solid #efefef;
788
+ margin-top:45px;
789
+ }
790
+
791
+ .ge_controlpanel label{
792
+ font-weight:bold;
793
+ display:block;
794
+ margin-bottom:5px;
795
+ }
796
+
797
+ .ui-autocomplete.ui-menu{
798
+ background:#fff;
799
+ border: 1px solid #bbb;
800
+ border-radius:3px;
801
+ box-shadow: 2px 0 4px rgba(0,0,0,.2);
802
+ float:left;
803
+ padding:0 0 0 0;
804
+ }
805
+
806
+ .ui-autocomplete.ui-menu li {
807
+ list-style-type:none;
808
+ line-height:30px;
809
+ font-size:110%;
810
+ padding-left:10px;
811
+ border-top:1px solid #fff;
812
+ border-bottom:1px solid #efefef;
813
+ }
814
+
815
+ .ui-autocomplete.ui-menu li:hover {
816
+ color:#fff;
817
+ cursor:pointer;
818
+
819
+ background: #7bb2ff; /* Old browsers */
820
+ background: -moz-linear-gradient(top, #7bb2ff 0%, #609ff8 44%, #4089ee 100%);
821
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#7bb2ff), color-stop(44%,#609ff8), color-stop(100%,#4089ee)); /* Chrome,Safari4+ */
822
+ background: -webkit-linear-gradient(top, #7bb2ff 0%,#609ff8 44%,#4089ee 100%);
823
+ background: -o-linear-gradient(top, #7bb2ff 0%,#609ff8 44%,#4089ee 100%);
824
+ background: -ms-linear-gradient(top, #7bb2ff 0%,#609ff8 44%,#4089ee 100%);
825
+ background: linear-gradient(top, #7bb2ff 0%,#609ff8 44%,#4089ee 100%);
826
+
827
+ border-top:1px solid #5F94DE;
828
+ border-bottom:1px solid #4E7DBF;
829
+ }
830
+
831
+ .ge_controlpanel .ui-helper-hidden-accessible {
832
+ display: none;
833
+ }
834
+
835
+ .ge_controlpanel .ui-combobox-input {
836
+ height:35px;
837
+ line-height:35px;
838
+ padding: 0 10px;
839
+ width:400px;
840
+ border-radius:3px;
841
+ border: 1px solid #979797;
842
+ box-shadow: 0 0 2px #ddd inset;
843
+ }
844
+
845
+ .ge_meta {
846
+ height:35px;
847
+ line-height:37px;
848
+ color:#999;
849
+ }
850
+
851
+ .ge_meta a {
852
+ margin-left: 10px;
853
+ font-size:110%;
854
+ color:#06c;
855
+ text-decoration:none;
856
+ }
857
+
858
+ .ge_meta a:hover {
859
+ text-decoration:underline;
860
+ }
861
+
862
+ .ge_empty {
863
+ display: block;
864
+ text-align: center;
865
+ line-height: 400px;
866
+ font-size: 16px;
867
+ color: #666;
868
+ }