fnordmetric 0.7.5 → 0.9.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (117) hide show
  1. data/doc/V1.0-ROADMAP +97 -0
  2. data/doc/full_example.rb +95 -511
  3. data/doc/legacy_example.rb +640 -0
  4. data/doc/minimal_example.rb +26 -0
  5. data/doc/preview3.png +0 -0
  6. data/fnordmetric.gemspec +3 -2
  7. data/lib/fnordmetric/acceptors/acceptor.rb +29 -0
  8. data/lib/fnordmetric/{inbound_stream.rb → acceptors/tcp_acceptor.rb} +8 -5
  9. data/lib/fnordmetric/{inbound_datagram.rb → acceptors/udp_acceptor.rb} +9 -8
  10. data/lib/fnordmetric/api.rb +2 -2
  11. data/lib/fnordmetric/context.rb +37 -18
  12. data/lib/fnordmetric/defaults.rb +9 -0
  13. data/lib/fnordmetric/ext.rb +72 -0
  14. data/lib/fnordmetric/gauge.rb +37 -10
  15. data/lib/fnordmetric/gauge_calculations.rb +38 -16
  16. data/lib/fnordmetric/gauge_modifiers.rb +67 -0
  17. data/lib/fnordmetric/gauge_rendering.rb +40 -0
  18. data/lib/fnordmetric/gauge_validations.rb +15 -0
  19. data/lib/fnordmetric/gauges/distribution_gauge.rb +85 -0
  20. data/lib/fnordmetric/gauges/timeseries_gauge.rb +143 -0
  21. data/lib/fnordmetric/gauges/toplist_gauge.rb +44 -0
  22. data/lib/fnordmetric/histogram.rb +57 -0
  23. data/lib/fnordmetric/logger.rb +42 -36
  24. data/lib/fnordmetric/namespace.rb +47 -23
  25. data/lib/fnordmetric/session.rb +6 -6
  26. data/lib/fnordmetric/standalone.rb +15 -35
  27. data/lib/fnordmetric/timeseries.rb +79 -0
  28. data/lib/fnordmetric/toplist.rb +61 -0
  29. data/lib/fnordmetric/version.rb +1 -1
  30. data/lib/fnordmetric/web/app.rb +122 -0
  31. data/lib/fnordmetric/web/app_helpers.rb +42 -0
  32. data/lib/fnordmetric/{dashboard.rb → web/dashboard.rb} +4 -0
  33. data/lib/fnordmetric/{event.rb → web/event.rb} +7 -2
  34. data/lib/fnordmetric/web/reactor.rb +87 -0
  35. data/lib/fnordmetric/web/web.rb +53 -0
  36. data/lib/fnordmetric/web/websocket.rb +38 -0
  37. data/lib/fnordmetric/widgets/bars_widget.rb +44 -0
  38. data/lib/fnordmetric/{html_widget.rb → widgets/html_widget.rb} +0 -0
  39. data/lib/fnordmetric/widgets/numbers_widget.rb +56 -0
  40. data/lib/fnordmetric/{pie_widget.rb → widgets/pie_widget.rb} +0 -0
  41. data/lib/fnordmetric/widgets/timeseries_widget.rb +55 -0
  42. data/lib/fnordmetric/widgets/toplist_widget.rb +64 -0
  43. data/lib/fnordmetric/worker.rb +26 -25
  44. data/lib/fnordmetric.rb +85 -115
  45. data/readme.md +362 -0
  46. data/spec/gauge_like_shared.rb +54 -0
  47. data/spec/gauge_spec.rb +2 -36
  48. data/spec/namespace_spec.rb +25 -11
  49. data/spec/spec_helper.rb +4 -0
  50. data/spec/{inbound_stream_spec.rb → tcp_acceptor_spec.rb} +3 -3
  51. data/spec/timeseries_gauge_spec.rb +54 -0
  52. data/spec/{inbound_datagram_spec.rb → udp_acceptor_spec.rb} +3 -3
  53. data/web/fnordmetric.css +786 -0
  54. data/web/haml/app.haml +38 -0
  55. data/web/haml/distribution_gauge.haml +118 -0
  56. data/web/haml/timeseries_gauge.haml +80 -0
  57. data/web/haml/toplist_gauge.haml +194 -0
  58. data/web/img/head.png +0 -0
  59. data/web/img/list.png +0 -0
  60. data/web/img/list_active.png +0 -0
  61. data/web/img/list_hover.png +0 -0
  62. data/web/img/loader_white.gif +0 -0
  63. data/web/img/navbar.png +0 -0
  64. data/web/img/navbar_btn.png +0 -0
  65. data/web/img/picto_gauge.png +0 -0
  66. data/web/js/fnordmetric.bars_widget.js +178 -0
  67. data/web/js/fnordmetric.dashboard_view.js +99 -0
  68. data/web/js/fnordmetric.gauge_view.js +260 -0
  69. data/web/js/fnordmetric.html_widget.js +21 -0
  70. data/web/js/fnordmetric.js +255 -0
  71. data/web/js/fnordmetric.numbers_widget.js +121 -0
  72. data/web/js/fnordmetric.overview_view.js +35 -0
  73. data/web/js/fnordmetric.pie_widget.js +118 -0
  74. data/web/js/fnordmetric.realtime_timeline_widget.js +175 -0
  75. data/web/js/fnordmetric.session_view.js +343 -0
  76. data/web/js/fnordmetric.timeline_widget.js +333 -0
  77. data/web/js/fnordmetric.timeseries_widget.js +388 -0
  78. data/web/js/fnordmetric.toplist_widget.js +112 -0
  79. data/web/js/fnordmetric.ui.js +91 -0
  80. data/web/js/fnordmetric.util.js +244 -0
  81. data/{pub → web}/loader.gif +0 -0
  82. data/web/vendor/d3.v2.js +9382 -0
  83. data/web/vendor/font-awesome/css/font-awesome.css +239 -0
  84. data/web/vendor/font-awesome/font/fontawesome-webfont.eot +0 -0
  85. data/web/vendor/font-awesome/font/fontawesome-webfont.svg +175 -0
  86. data/web/vendor/font-awesome/font/fontawesome-webfont.svgz +0 -0
  87. data/web/vendor/font-awesome/font/fontawesome-webfont.ttf +0 -0
  88. data/web/vendor/font-awesome/font/fontawesome-webfont.woff +0 -0
  89. data/web/vendor/jquery-1.6.2.min.js +18 -0
  90. data/web/vendor/jquery-ui.min.js +413 -0
  91. data/web/vendor/jquery.maskedinput.js +252 -0
  92. data/web/vendor/rickshaw.css +286 -0
  93. data/web/vendor/rickshaw.fnordmetric.js +2676 -0
  94. metadata +129 -79
  95. data/Gemfile +0 -6
  96. data/README.md +0 -404
  97. data/Rakefile +0 -6
  98. data/doc/version +0 -1
  99. data/haml/app.haml +0 -79
  100. data/haml/widget.haml +0 -9
  101. data/lib/fnordmetric/app.rb +0 -163
  102. data/lib/fnordmetric/average_metric.rb +0 -7
  103. data/lib/fnordmetric/bars_widget.rb +0 -26
  104. data/lib/fnordmetric/combine_metric.rb +0 -7
  105. data/lib/fnordmetric/count_metric.rb +0 -13
  106. data/lib/fnordmetric/funnel_widget.rb +0 -2
  107. data/lib/fnordmetric/metric.rb +0 -80
  108. data/lib/fnordmetric/metric_api.rb +0 -37
  109. data/lib/fnordmetric/numbers_widget.rb +0 -26
  110. data/lib/fnordmetric/report.rb +0 -29
  111. data/lib/fnordmetric/sum_metric.rb +0 -13
  112. data/lib/fnordmetric/timeline_widget.rb +0 -30
  113. data/lib/fnordmetric/toplist_widget.rb +0 -25
  114. data/pub/fnordmetric.css +0 -145
  115. data/pub/fnordmetric.js +0 -1179
  116. data/pub/vendor/highcharts.js +0 -170
  117. data/pub/vendor/jquery-1.6.1.min.js +0 -18
@@ -0,0 +1,786 @@
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{
179
+ padding-left:0;
180
+ padding-right:10px;
181
+ margin-right:15px;
182
+ }
183
+
184
+ .navbar a.button.datepicker .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{
196
+ font-size: 17px;
197
+ float: right;
198
+ margin-top: 0px;
199
+ }
200
+
201
+ .navbar + h1{
202
+ margin-top:22px;
203
+ }
204
+
205
+ .navbar .button.navbutton{
206
+ padding-right:13px;
207
+ }
208
+
209
+ .navbar .navbutton i{
210
+ margin-left:-7px;
211
+ margin-right:6px;
212
+ display:inline-block;
213
+ }
214
+
215
+
216
+ .navbar a.button:first-child{
217
+ margin-right:38px;
218
+ }
219
+
220
+ .picto{ display:block; height:14px; width:14px; float:left; opacity:0.7; }
221
+ .picto.piechart{ background-position:-42px -173px; width:9px; margin-right:5px; }
222
+
223
+ #viewport{ float:left; margin-left:220px; min-width:790px; }
224
+ #viewport .viewport_inner{ margin:0 6px; background:#fff; padding-top:1px; padding-bottom:1px; }
225
+
226
+ #viewport, #sidebar ul li:hover, #sidebar ul li.active{ background:#24272c; box-shadow: inset 0px 1px 2px 1px rgba(0, 0, 0, 0.4); }
227
+
228
+ .widget{ min-height:100px; border-right:1px solid #ececec; float:left; }
229
+ .widget.full_width{ border-right:none; }
230
+ .widget .inner{ margin:20px; }
231
+ /*.widget .headbar{ margin-bottom:30px; }*/
232
+
233
+ .ui_value.large{ font-size:18px; font-weight:bold; color:#333; }
234
+ .ui_value.left{ float:left; }
235
+
236
+ .ui_toplist{ min-height:300px; }
237
+ .ui_toplist.loading{ opacity:0.5; background:url('/loader.gif') no-repeat center center; }
238
+
239
+ .ui_toplist .toplist_item{ border-bottom:1px solid #dedede; height:42px; display:block; }
240
+ .ui_toplist .toplist_item:hover{ background:#fff; }
241
+ .ui_toplist .toplist_item .title{ float:left; line-height:42px; margin-left:20px; font-size:13px; color:#333; }
242
+ .ui_toplist .toplist_item .value{ float:right; line-height:42px; margin-right:20px; font-size:13px; font-weight:bold; width:70px; color:#666; }
243
+ .ui_toplist .toplist_item .value.large{ width:110px; }
244
+ .ui_toplist .toplist_item .percent{ float:right; line-height:42px; margin-right:30px; font-size:18px; font-weight:bold; color:#333; width:120px; white-space:nowrap; overflow:hidden; }
245
+
246
+ .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; }
247
+
248
+ .ui_toplist .toplist_item .ui_trend{ margin-top:10px; }
249
+ .ui_toplist .toplist_item .trend .ui_trend{ font-size:18px; padding:4px 5px 5px 5px; margin-top:6px; }
250
+
251
+ .ui_toplist .searchbar{ background:#efefef; border-bottom: 1px solid #DDD; padding:10px 17px; }
252
+ .ui_toplist.clickable .toplist_item:hover{ background:#efefef; cursor:pointer; }
253
+
254
+ .ui_toplist.clickable .toplist_item.active{
255
+ background: #7bb2ff; /* Old browsers */
256
+ background: -moz-linear-gradient(top, #7bb2ff 0%, #609ff8 44%, #4089ee 100%);
257
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#7bb2ff), color-stop(44%,#609ff8), color-stop(100%,#4089ee)); /* Chrome,Safari4+ */
258
+ background: -webkit-linear-gradient(top, #7bb2ff 0%,#609ff8 44%,#4089ee 100%);
259
+ background: -o-linear-gradient(top, #7bb2ff 0%,#609ff8 44%,#4089ee 100%);
260
+ background: -ms-linear-gradient(top, #7bb2ff 0%,#609ff8 44%,#4089ee 100%);
261
+ background: linear-gradient(top, #7bb2ff 0%,#609ff8 44%,#4089ee 100%);
262
+
263
+ border-top:1px solid #5F94DE;
264
+ border-bottom:1px solid #4E7DBF;
265
+
266
+ margin-top:-1px;
267
+
268
+ line-height:41px;
269
+
270
+ box-shadow:0 1px 1px rgba(255,255,255,0.5) inset;
271
+ }
272
+
273
+ .ui_toplist.clickable .toplist_item.active .title,
274
+ .ui_toplist.clickable .toplist_item.active .value,
275
+ .ui_toplist.clickable .toplist_item.active .percent {
276
+ color:#fff;
277
+ }
278
+
279
+
280
+ .headbar {
281
+
282
+ height:36px;
283
+ background-color: #F4F4F4;
284
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f4f4f4), to(#e9e9e9));
285
+ background-image: -webkit-linear-gradient(top, #f4f4f4, #e9e9e9);
286
+ background-image: -moz-linear-gradient(top, #f4f4f4, #e9e9e9);
287
+ background-image: -ms-linear-gradient(top, #f4f4f4, #e9e9e9);
288
+ background-image: -o-linear-gradient(top, #f4f4f4, #e9e9e9);
289
+ background-image: linear-gradient(top, #f4f4f4, #e9e9e9);
290
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#f4f4f4', EndColorStr='#e9e9e9');
291
+ padding: 0 25px;
292
+ border-bottom: 1px solid #C9C9C9;
293
+ border-top: 1px solid #d0d0d0;
294
+ font-size:13px;
295
+ line-height:29px;
296
+ text-shadow: 1px 0px 2px rgba(255, 255, 255, 1);
297
+ -moz-text-shadow: 1px 0px 2px rgba(255,255,255,1);
298
+ -webkit-text-shadow: 1px 0px 2px rgba(255,255,255,1);
299
+ overflow:hidden;
300
+ }
301
+
302
+ .headbar.small{ height:29px; }
303
+
304
+ .headbar h2{ line-height:37px; margin:0; float:left; font-size:14px; }
305
+ .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; }
306
+ .headbar .button.mr{ margin-right:16px; }
307
+ .headbar .button.ml{ margin-left:16px; }
308
+
309
+ .headbar .button{
310
+ margin:8px 0px; height:16px; float:right; display:block;
311
+ margin-right:-1px;
312
+ border:1px solid #999;
313
+ border-bottom-color:#888;
314
+ box-shadow: 0 1px 0 #fff;
315
+ cursor:pointer;
316
+ border-radius:3px;
317
+ font-size: 11px;
318
+ font-weight:bold;
319
+ line-height:16px;
320
+ padding:2px 6px;
321
+ text-align:center;
322
+ text-decoration:none;
323
+ vertical-align:top;
324
+ white-space:nowrap;
325
+ background:url('img/navbar_btn.png');
326
+ }
327
+
328
+ .headbar .button:hover{background:#e8e8e8;border-bottom-color:#999;-webkit-box-shadow:0 1px 0 rgba(0, 0, 0, .05)}
329
+
330
+ .headbar .button.active{background:#e3e3e3;border-bottom-color:#999;-webkit-box-shadow:0 1px 0 rgba(0, 0, 0, .05)}
331
+
332
+ .headbar .button:active{ background:#ddd; }
333
+
334
+ .headbar .btn_group.mr{ }
335
+
336
+ .headbar .btn_group .button{
337
+ border-radius:0;
338
+ }
339
+
340
+ .headbar .btn_group .button:last-child{
341
+ border-top-left-radius:3px;
342
+ border-bottom-left-radius:3px;
343
+ }
344
+
345
+ .headbar .btn_group .button:first-child{
346
+ border-top-right-radius:3px;
347
+ border-bottom-right-radius:3px;
348
+ }
349
+
350
+ .numbers_container, .number{ float:left; width:60px; }
351
+ .number{ padding-right:20px; margin-right:6px; }
352
+ .number .value{ color:#444; font-size:20px; display:block; margin-bottom:5px; font-weight:bold; }
353
+ .number .desc{ color:#999; font-size:12px; margin-bottom:5px; display:block; white-space:nowrap; }
354
+ .number:last-child{ border-right:none; }
355
+ .numbers_container{ padding-right:0px; width:215px; float:left; margin:15px 0 -1px 20px; padding-bottom:5px; border-bottom:1px solid #dedede; }
356
+
357
+ .numbers_container.size_3{ width:258px; }
358
+ .numbers_container.size_4{ width:358px; }
359
+ .numbers_container.size_5{ width:450px; }
360
+
361
+ .numbers_container .title{ padding:4px 0 1px 0; color:#333; font-size:14px; display:block;
362
+ font-weight:400; }
363
+ .numbers_container .title.with_swatch{ margin-bottom:4px; }
364
+ .numbers_container .title.with_swatch span{ padding-left:20px; }
365
+ .numbers_container .title .swatch{ display:block; float:left; position:absolute; margin-top:3px; margin-right:5px; }
366
+
367
+ .numbers_container.numbers_pad_bottom .number{ padding-bottom:19px; }
368
+ .numbers_container.numbers_pad_bottom{ border-bottom:none; }
369
+
370
+ ul.session_list{ list-style-type:none; margin:0; padding:56px 16px 0 11px; }
371
+ ul.session_list li{ color:#0A0A0A; height:24px; overflow:hidden; line-height:24px; padding:4px; }
372
+ ul.session_list li:hover{ background:#eee; cursor:pointer; }
373
+ ul.session_list li input{ float: left; margin-right: 7px; }
374
+ ul.session_list li .picture{ height:25px; width:25px; float:left; background:#333; overflow:hidden; }
375
+ ul.session_list li .name{ float:left; width:115px; overflow:hidden; margin-left:10px; font-size:12px; }
376
+ ul.session_list li .time{ float:right; width:40px; overflow:hidden; text-align:right; font-size:10px; }
377
+ ul.session_list li .history{ float:right; color:#999; font-size:10px; line-height: 12px; display:none }
378
+ ul.session_list li .history:hover{ color:#333; text-decoration:underline; }
379
+
380
+ .sessions_feed{ min-width:300px; min-height:100px; float:left; }
381
+ .sessions_feed ul.feed_inner{ margin:5px 15px; min-height:100px; padding:0px; padding-top:47px; }
382
+ .sessions_feed ul.feed_inner li{ list-style-type:none; border-bottom:1px solid #e2e2e2; min-height:54px; }
383
+ .sessions_feed ul.feed_inner li .message{ font-size:12px; line-height:19px; padding-top:9px; display:block; }
384
+ .sessions_feed ul.feed_inner li .properties{ margin-left:50px; font-size:10px; display:block; color:#555; }
385
+ .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; }
386
+ .sessions_feed ul.feed_inner li .picture{ height:40px; overflow:hidden; width:40px; float:left; background:#333; margin:7px 10px 0 0; cursor:pointer; }
387
+ .sessions_sidebar{ min-height:1200px; float:right; width:250px; border-left:1px solid #C7C9CC; }
388
+ .events_sidebar{ min-height:1200px; float:left; width:200px; border-right:1px solid #C7C9CC; }
389
+
390
+ ul.event_type_list{ margin:10px; padding:0; }
391
+ ul.event_type_list li{ list-style-type:none; color:#0A0A0A; margin-bottom:8px; height:18px; overflow:hidden; line-height:18px; padding:4px; }
392
+ ul.event_type_list li input{ margin-right:7px; }
393
+ ul.event_type_list li:hover{ background:#eee; cursor:pointer; }
394
+ ul.event_type_list li .history{ float:right; color:#999; font-size:10px; display:none; }
395
+ ul.event_type_list li .history:hover{ color:#333; text-decoration:underline; }
396
+
397
+ .clearfix:after {
398
+ content: ".";
399
+ display: block;
400
+ clear: both;
401
+ visibility: hidden;
402
+ line-height: 0;
403
+ height: 0;
404
+ }
405
+
406
+ .highcharts-series circle{ stroke-width:1px; }
407
+
408
+ ul.ui_tabs{
409
+ list-style-type:none;
410
+ margin:0;
411
+ padding:0;
412
+ height:36px;
413
+ display:block;
414
+ width:100%;
415
+ margin-top:30px;
416
+ font-size:13px;
417
+ margin-bottom:-1px;
418
+ padding-left:16px;
419
+ }
420
+
421
+ ul.ui_tabs li{
422
+ float:left;
423
+ }
424
+
425
+ ul.ui_tabs li a{
426
+ display:block;
427
+ height:35px;
428
+ line-height:36px;
429
+ border-top:1px solid none;
430
+ padding:0 25px;
431
+ border-top-left-radius:4px;
432
+ border-top-right-radius:4px;
433
+ color:#666;
434
+ font-weight:500;
435
+ text-decoration:none;
436
+ }
437
+
438
+
439
+ ul.ui_tabs li a:hover{
440
+ color:#333;
441
+ }
442
+
443
+ ul.ui_tabs li.active a{
444
+ border: 1px solid #D0D0D0;
445
+ border-bottom:none;
446
+ color:#333;
447
+ background:#f4f4f4;
448
+ }
449
+
450
+ .gauge_viewport{ margin-top:30px; }
451
+
452
+
453
+ .widget.RealtimeValueWidget .big_number{
454
+ float:right;
455
+ margin-right:30px;
456
+ width:200px;
457
+ text-align:center;
458
+ margin-top:70px;
459
+ }
460
+
461
+ .widget.RealtimeValueWidget .big_number .value{
462
+ line-height:80px;
463
+ font-size:58px;
464
+ }
465
+
466
+ h1.head{ margin-top:70px; }
467
+ .gauge_viewport{ margin-top:30px; }
468
+
469
+
470
+ .rickshaw_graph .y_ticks path { stroke:#fff; }
471
+ .rickshaw_graph .y_grid .tick { stroke:rgba(0,0,0,.1); }
472
+
473
+ .rickshaw_graph .x_tick {
474
+ border-left: none;
475
+ }
476
+
477
+ .rickshaw_graph .x_tick.glow .title, .rickshaw_graph .y_ticks.glow text{
478
+ font-size:14px;
479
+ }
480
+
481
+ .rickshaw_legend {
482
+ font-family: "Gotham Narrow", Helvetica, sans-serif;
483
+ font-size: 12px;
484
+ color: #333;
485
+ background: none;
486
+ display: inline-block;
487
+ padding: 12px 5px;
488
+ border-radius: 2px;
489
+ position: relative;
490
+ }
491
+
492
+ .rickshaw_legend .ui-sortable {
493
+ margin-left:-10px;
494
+ }
495
+
496
+ .rickshaw_legend li.line{
497
+ float:left;
498
+ clear:none;
499
+ padding-right:0;
500
+ }
501
+
502
+ .rickshaw_legend a.action{
503
+ margin-right:5px;
504
+ display:none;
505
+ }
506
+
507
+
508
+ .rickshaw_legend li.line .label{
509
+ font.size:14px;
510
+ margin-left:5px;
511
+ color:#333;
512
+ position:relative;
513
+ top:-1px;
514
+ }
515
+
516
+
517
+ .rickshaw_graph .y_grid .tick { stroke:rgba(0,0,0,.15); stroke-dasharray:0; }
518
+ .rickshaw_graph .y_ticks text { fill:#333333; }
519
+
520
+ .modal_backdrop {
521
+ background-color: #000000;
522
+ position: fixed;
523
+ top: 0;
524
+ left: 225px;
525
+ right: 0;
526
+ bottom: 0;
527
+ z-index: 10000;
528
+ opacity: 0;
529
+ -webkit-transition: opacity .3s linear, top .3s ease-out;
530
+ -moz-transition: opacity .3s linear, top .3s ease-out;
531
+ -ms-transition: opacity .3s linear, top .3s ease-out;
532
+ -o-transition: opacity .3s linear, top .3s ease-out;
533
+ transition: opacity .3s linear, top .3s ease-out;
534
+ }
535
+
536
+ .modal_backdrop.visible {
537
+ filter: alpha(opacity=10);
538
+ -khtml-opacity: 0.1;
539
+ -moz-opacity: 0.1;
540
+ opacity: 0.1;
541
+ }
542
+
543
+ .modal {
544
+ position: absolute;
545
+ left: 225px;
546
+ z-index: 11000;
547
+ background-color: #fff;
548
+ border: 1px solid #999;
549
+ border: 1px solid rgba(0, 0, 0, 0.3);
550
+
551
+ height:500px;
552
+
553
+ -webkit-border-radius: 4px;
554
+ -moz-border-radius: 4px;
555
+ border-radius: 4px;
556
+ -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
557
+ -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
558
+ box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
559
+ -webkit-background-clip: padding-box;
560
+ -moz-background-clip: padding-box;
561
+ background-clip: padding-box;
562
+
563
+ -webkit-transition: opacity .3s linear, top .3s ease-out;
564
+ -moz-transition: opacity .3s linear, top .3s ease-out;
565
+ -ms-transition: opacity .3s linear, top .3s ease-out;
566
+ -o-transition: opacity .3s linear, top .3s ease-out;
567
+ transition: opacity .3s linear, top .3s ease-out;
568
+ top: -500px;
569
+ }
570
+
571
+ .modal.visible {
572
+ top: 47px;
573
+ }
574
+
575
+ .modal_inner{
576
+ margin:15px 20px 3px 20px;
577
+ }
578
+
579
+ .report_view{
580
+ margin-top:70px;
581
+ }
582
+
583
+ .dashboard_view{
584
+ margin-top:47px;
585
+ }
586
+
587
+ #sidebar .ul_head{ margin-top:30px; color:#ccc; font-weight:bold; text-transform:uppercase; padding-left:25px; font-size:11px; margin-bottom:5px; }
588
+ #sidebar ul{ list-style-type:none; padding:0; margin:0; }
589
+ #sidebar ul li{ height:28px; line-height:28px; cursor:pointer; font-size:13px; padding-left:25px; }
590
+ #sidebar ul li a{ color:#ccc; text-decoration:none; }
591
+ /*#sidebar ul li:after{ content:'›'; display:block; float:right; margin-right:15px; color:#ccc; font-size:16px; line-height:27px; }*/
592
+ #sidebar ul li i{ margin-right: 5px; color: #AAA; font-size: 11px; position: relative; left: -2px; top: -1px; display:none; }
593
+ #sidebar ul li:hover, #tabs ul li:hover:after{ color:#fff; }
594
+ #sidebar ul li:hover .picto{ opacity:1; }
595
+ #sidebar ul li.active i, #sidebar ul li.active a{ color:#eee; }
596
+
597
+ .ui_sidebar_toplist{
598
+ border-right: 1px solid #DDD;
599
+ }
600
+
601
+ .ui_sidebar_toplist .toplist_item.active{
602
+ margin-right:-1px;
603
+ }
604
+
605
+ .swatch {
606
+ width: 10px;
607
+ height: 10px;
608
+ border: 1px solid rgba(0, 0, 0, 0.2);
609
+ border-radius:2px;
610
+ }
611
+
612
+ .flash_msg_over{
613
+ background-color: rgba(0,0,0,0.9);
614
+ position: fixed;
615
+ top: 0;
616
+ left: 0;
617
+ right: 0;
618
+ bottom: 0;
619
+ z-index: 99999999999;
620
+ opacity:0;
621
+ -webkit-transition: opacity .3s linear;
622
+ -moz-transition: opacity .3s linear;
623
+ -ms-transition: opacity .3s linear;
624
+ -o-transition: opacity .3s linear;
625
+ transition: opacity .3s linear;
626
+ }
627
+
628
+ .flash_msg_over.visible{
629
+ opacity:1;
630
+ }
631
+
632
+ .flash_msg_over .inner{ position:fixed; width:600px; height:300px; left:50%; margin-left:-300px; text-align:center; top:30%; }
633
+
634
+
635
+ .loader_white{
636
+ height: 32px;
637
+ width: 32px;
638
+ background: url('/img/loader_white.gif') no-repeat center center;
639
+ }
640
+
641
+
642
+ .flash_msg_over h1{
643
+ margin-top: 37px;
644
+ font-weight: bold;
645
+ font-size: 26px;
646
+ color:#444;
647
+ }
648
+
649
+ .flash_msg_over h2{
650
+ font-weight: normal;
651
+ font-size: 18px;
652
+ color: #aaa;
653
+ margin-top: 60px;
654
+ }
655
+
656
+ .flash_msg_over .loader_white{
657
+ width:auto;
658
+ margin-top:26px;
659
+ }
660
+
661
+
662
+ .ui_trend{
663
+ float:right;
664
+ font-size:11px;
665
+ font-weight:bold;
666
+ background:rgba(255,255,255,0.9);
667
+ height:22px;
668
+ line-height:23px;
669
+ padding:0 5px;
670
+ border-radius:3px;
671
+ }
672
+
673
+ .ui_trend.left{
674
+ float:left;
675
+ }
676
+
677
+ .ui_item_trending{
678
+ width: 250px;
679
+ margin: 10px 20px;
680
+ float: left;
681
+ border-bottom:1px solid #ddd;
682
+ padding:10px;
683
+ }
684
+
685
+ .ui_item_trending .ui_trend{
686
+ font-size:18px;
687
+ }
688
+
689
+ .ui_item_trending .title{
690
+ font-size:14px;
691
+ }
692
+
693
+ .ui_item_trending .value{
694
+ float:right;
695
+ line-height: 24px;
696
+ margin-right: 10px;
697
+ color: #999;
698
+ }
699
+
700
+ .numbers_container .ui_trend{ font-size:16px; float:left; white-space:nowrap; }
701
+
702
+ #preload{ visibility:hidden; position:absolute; height:0px; width:0px; overflow:hidden; }
703
+
704
+ ul.ui_numbers{
705
+ list-style-type:none;
706
+ margin:15px 25px;
707
+ }
708
+
709
+ ul.ui_numbers li{
710
+ float:left;
711
+ height:40px;
712
+ margin-right:20px;
713
+ margin-left:10px;
714
+ }
715
+
716
+ ul.ui_numbers li .val{
717
+ float:left;
718
+ font-size: 33px;
719
+ font-weight: bold;
720
+ color: #333;
721
+ }
722
+
723
+ ul.ui_numbers li .title{
724
+ float:left;
725
+ font-size: 12px;
726
+ font-weight: normal;
727
+ color: #999;
728
+ width: 77px;
729
+ line-height: 13px;
730
+ margin-top: -3px;
731
+ margin-left: 9px;
732
+ }
733
+
734
+ ul.ui_numbers li.twoline .title{
735
+ float:none; margin-left:0px; width:100px; font-weight:normal; font-size:11px; margin-top:-7px; margin-bottom:1px;
736
+ }
737
+
738
+ ul.ui_numbers li.twoline .val{
739
+ font-size:16px;
740
+ }
741
+
742
+ input.input{
743
+ background: white;
744
+ padding: 0 13px;
745
+ border: 1px solid #ccc;
746
+ box-shadow: 0 0 2px #ddd inset;
747
+ border-radius:3px;
748
+ color: #666;
749
+ font-size:14px;
750
+ height: 32px;
751
+ line-height: 32px;
752
+ }
753
+
754
+ input.input.ropen{
755
+ border-right:none;
756
+ border-top-right-radius:0;
757
+ border-bottom-right-radius:0;
758
+ }
759
+
760
+ input.input.lopen{
761
+ border-left:none;
762
+ border-top-left-radius:0;
763
+ border-bottom-left-radius:0;
764
+ }
765
+
766
+ .ui_fancylinks b{
767
+ display:block;
768
+ margin-bottom:5px;
769
+ text-transform:uppercase;
770
+ font-size: 11px;
771
+ color: #777;
772
+ }
773
+
774
+ .ui_fancylinks a{
775
+ font-size:13px;
776
+ color:#333;
777
+ border-bottom:1px solid #9DC4EB;
778
+ cursor:pointer;
779
+ margin-right:5px;
780
+ color:#06c;
781
+ }
782
+
783
+ .ui_fancylinks a:hover{
784
+ color:#333;
785
+ border-bottom:1px solid #999;
786
+ }