scout_realtime 0.5.3 → 0.5.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,122 +1,121 @@
1
- * {
2
- font-family: "proxima-nova","Lucida Grande", sans-serif;
3
- }
1
+ /*** overall styles ***/
4
2
 
5
- h1, h2, h3 {
6
- font-family: "proxima-nova","Lucida Grande", sans-serif;
7
- font-weight: bold;
3
+ body {
4
+ margin: 0;
5
+ font-family: "Helvetica Neue","Lucida Grande", sans-serif;
6
+ font-size: 12px;
8
7
  }
9
8
 
10
9
  h2 {
11
10
  font-size: 18px;
12
11
  }
13
12
 
14
- h3 {
15
- font-family: "proxima-nova","Lucida Grande", sans-serif;
16
- font-weight: bold;
17
- }
18
-
13
+ /* makes 'top' smaller in 'top processes' */
19
14
  h2 span {
20
15
  font-weight: normal;
21
16
  }
22
17
 
18
+ /* default chart styling */
19
+ .chart {
20
+ height:85px;
21
+ width:100%;
22
+ }
23
+
23
24
  /* the color used for lines in d3 charts */
24
25
  svg .line {
25
26
  fill: none;
26
- stroke: #A8A5A2;
27
+ stroke: #A8A5A2; /* off-gray */
27
28
  stroke-width: 2.5px;
28
29
  }
29
30
 
30
- .container {
31
- margin-top: 20px;
32
- display:table;
33
- width: 100%;
34
- -moz-box-sizing: border-box;
35
- box-sizing: border-box;
36
- padding: 0;
37
- margin:0;
38
- }
39
-
40
- .main_container {
41
- border-top: 7px solid #00A3CC;
31
+ .axis {
32
+ fill: none;
33
+ stroke-width: 0.5px;
34
+ stroke: #333; /* off-gray - same as line color*/
35
+ font-size: 10px;
42
36
  }
43
37
 
44
- /** bootstrap overrides for 100% height columns **/
38
+ /*** main layout container - everything is inside of this ***/
45
39
 
46
- .row
47
- {
48
- height: 100%;
49
- display: table-row;
40
+ #main_container {
41
+ border-top: 7px solid #00A3CC; /* blue */
42
+ min-width: 960px;
43
+ width: 100%;
44
+ margin:0;
45
+ border-collapse: collapse;
50
46
  }
51
47
 
52
- .col-md-8, .col-md-4, .col-md-6
53
- {
54
- display: table-cell;
55
- float: none;
56
- vertical-align: top;
48
+ #main_container > tbody > tr > td:first-child {
49
+ padding: 0 30px;
57
50
  }
58
51
 
59
- /** general layout **/
52
+ /*** header ***/
60
53
 
61
- .container .row > .col-md-8 {
54
+ #main_container #header {
55
+ margin: 0;
56
+ background: #fff;
62
57
  border-bottom: 1px solid #E1E1E1;
58
+ padding: 0;
63
59
  }
64
60
 
65
- /** top area - contains the header + overview **/
61
+ #main_container #header > div {
62
+ position: relative;
63
+ padding-top: 10px;
64
+ padding-bottom: 10px;
65
+ padding-left: 30px;
66
+ }
66
67
 
67
68
  /* time + pause/play */
68
69
  #toggle {
69
- border: 1px solid #E1E1E1;
70
- border-radius: 20px;
71
- background: #fff;
72
70
  float: right;
73
- padding: 5px 14px;
74
- font-size: 12px;
71
+ font-size: 13px;
75
72
  color: #000;
76
73
  font-weight: bold;
77
- cursor:pointer;
74
+ position: absolute;
75
+ right: 0;
76
+ top: 0;
78
77
  }
79
78
 
80
-
81
- #toggle img {
82
- vertical-align: middle;
79
+ #toggle #report-time {
80
+ position: absolute;
81
+ right: 125px;
82
+ top: 14px;
83
+ width: 80px;
84
+ text-align: right;
83
85
  }
84
86
 
85
- #toggle span {
86
- padding-top: 6px;
87
- }
88
-
89
- #toggle *:nth-child(2){
90
- margin-left: 10px;
91
- margin-right: 5px;
87
+ #toggle .button {
88
+ padding: 0 20px;
89
+ height: 42px;
90
+ display: inline-block;
91
+ margin: 0;
92
+ transition: 0.1s background-color;
92
93
  }
93
94
 
94
- #toggle .disabled {
95
- opacity: 0.3;
95
+ #toggle .button:hover {
96
+ cursor: pointer;
97
+ background-color: #FCF8F6;
96
98
  }
97
99
 
98
-
99
- #top .row.header_row .col-md-6{
100
- padding-top: 10px;
101
- padding-bottom: 15px;
100
+ #toggle #off {
101
+ border: 1px solid #E1E1E1;
102
+ border-width: 0 1px;
103
+ margin-left: 10px;
102
104
  }
103
105
 
104
- #top .row{
105
- background: #FCF8F6;
106
+ #toggle img {
107
+ padding-top: 15px;
108
+ vertical-align: middle;
106
109
  }
107
110
 
108
- .container .row:first-child {
109
- background: #FCF8F6;
110
- border-bottom: 1px solid #E1E1E1;
111
+ #toggle .disabled img {
112
+ opacity: 0.3;
111
113
  }
112
114
 
113
- /* the larger left column */
114
- #top .col-md-8 {
115
- margin:0;
116
- }
115
+ /* sidebar */
117
116
 
118
- #top .chart_container{
119
- margin-bottom: 20px;
117
+ #sidebar_top, #sidebar_bottom {
118
+ width: 330px;
120
119
  }
121
120
 
122
121
  /* top sidebar */
@@ -128,13 +127,22 @@ svg .line {
128
127
  line-height: 130%;
129
128
  padding: 0;
130
129
  border-bottom: 1px solid #444140;
130
+ vertical-align: top;
131
+ }
132
+
133
+ #sidebar_top div.info#hostname_info {
134
+ margin-top: 11px;
131
135
  }
132
136
 
133
137
  #hostname {
134
- margin-bottom:15px;
138
+ margin-bottom:25px;
135
139
  color: #fff;
136
140
  }
137
141
 
142
+ #sidebar_top div.info #os_info {
143
+ font-size: 15px;
144
+ }
145
+
138
146
  #sidebar_top div span {
139
147
  color: #fff;
140
148
  }
@@ -151,65 +159,191 @@ svg .line {
151
159
  padding-bottom: 0;
152
160
  }
153
161
 
162
+ #sidebar_top div.info .desc {
163
+ font-weight: normal;
164
+ }
165
+
154
166
  #sidebar_top div.info .value {
155
167
  font-size: 18px;
156
168
  }
157
169
 
158
170
  #sidebar_bottom {
159
- background: #35312F;
171
+ background: #35312F;
160
172
  color: #fff;
173
+ vertical-align: top;
174
+ padding-top: 20px;
175
+ padding-left:19px;
176
+ width: 310px;
177
+ font-size: 13px;
178
+ color: #7B7B7B
161
179
  }
162
180
 
163
- /** overview charts **/
164
- .chart {
165
- height:55px;
166
- width:100%;
167
- cursor:crosshair;
181
+ #sidebar_bottom div a {
182
+ color: #7B7B7B; /* same as text */
183
+ text-decoration: none;
184
+ }
185
+
186
+ #sidebar_bottom div a:hover {
187
+ color: #fff;
168
188
  }
169
189
 
170
- .chart_container h3 {
171
- color: #A3A3A3;
190
+ #sidebar_bottom a.icon {
191
+ display: inline-block;
192
+ margin-right: 10px;
193
+ margin-top: 10px;
194
+ }
195
+
196
+ /*** overview charts ***/
197
+
198
+ #main_container > tbody > tr > td#overview_charts{
199
+ padding-top: 25px;
200
+ padding-right: 0; /* svg charts have a 30px margin - in effect, this ends up applying the 30px right margin */
201
+ background: #FCF8F6;
202
+ border-bottom: 1px solid #E1E1E1;
203
+ }
204
+
205
+ .overview_chart_container {
206
+ display: inline-block;
207
+ width: 49.5%;
208
+ }
209
+
210
+ .overview_chart_container .chart_container {
211
+ width: 100%;
212
+ overflow: hidden;
213
+ }
214
+
215
+ .overview_chart_container h3 {
216
+ color: #333;
172
217
  font-size: 16px;
173
218
  margin-top: 0;
174
219
  float: left;
220
+ font-weight: normal;
221
+ margin-bottom:6px;
222
+ text-shadow: 0 1px 0 #fff;
223
+ line-height: 100%;
175
224
  }
176
225
 
177
- .chart_container .latest_value {
226
+ .overview_chart_container .latest_value{
178
227
  color: #000;
179
- font-size: 18px;
180
- font-weight: bold;
228
+ font-size: 16px;
229
+ font-weight: bold;
181
230
  float: right;
231
+ margin-top:-4px;
232
+ border: 1px solid #E1E1E1;
233
+ width: 17%;
234
+ padding: 2px 0;
235
+ text-align: center;
236
+ border-radius: 5px;
237
+ background: #fff;
182
238
  }
183
239
 
184
- .chart_container .chart_info {
185
- font-size: 0.8em;
186
- height: 1em;
187
- color: #000;
188
- position: relative;
189
- top: -15px;
240
+ .overview_chart_container .chart_info {
241
+ font-size: 11px;
242
+ color: #fff;
243
+ font-weight: normal;
244
+ height: 12px;
245
+ margin: 0px 0 3px 0;
246
+ clear: left;
247
+ }
248
+
249
+ .overview_chart_container .chart_info span {
250
+ color: #999;
251
+ text-shadow: 1px 1px 0 white;
252
+ padding: 0 5px 0 0;
253
+ }
254
+
255
+ /* the value */
256
+ .overview_chart_container .chart_info span span {
257
+ font-weight: bold;
258
+ padding-left: 3px;
190
259
  }
191
260
 
192
261
  .chart_section {
193
262
  fill-opacity: 0;
194
263
  }
195
264
 
265
+ /* overview chart overrides */
196
266
 
267
+ .overview_chart_container .x.axis {
268
+ display: none;
269
+ }
197
270
 
198
- /** processes table **/
271
+ .overview_chart_container .y.axis {
272
+ display: block;
273
+ }
274
+
275
+ .overview_chart_container:hover .axis {
276
+ display: block;
277
+ }
278
+
279
+ .chart.overview_chart {
280
+ margin-left: -30px; /* chart has a 30px left margin */
281
+ margin-top: -15px; /* accounts for y-axis value. removing spacing btw h3 and chart so mouseover doesn't have a dead area */
282
+ height: 101px;
283
+ }
284
+
285
+ .overview_chart_container svg .line {
286
+ stroke: #00A3CC; /* blue */
287
+ }
199
288
 
200
- #processes {
289
+ /*** processes table ***/
290
+
291
+ /* table cell */
292
+ #main_container > tbody > tr > td#processes_container {
293
+ padding: 0 30px 30px 30px;
294
+ }
295
+
296
+ td#processes_container h2 {
297
+ margin-bottom: 0;
298
+ }
299
+
300
+ .sort-container {
301
+ position:relative;
302
+ }
303
+ .sort-container .sort-up, .sort-container .sort-down {
304
+ font-size:8px;
305
+ position:absolute;
306
+ display:none;
307
+ }
308
+
309
+ .sort-container .sort-down {
310
+ top:4px;
311
+ left: 3px;
312
+ }
313
+
314
+ table#processes {
315
+ border-spacing: 0;
201
316
  width: 100%;
202
- margin-top: 10px;
317
+ }
318
+
319
+ #processes svg .line {
320
+ stroke: #00A3CC; /* blue */
203
321
  }
204
322
 
205
323
  #processes thead th {
206
- font-size: 12px;
324
+ font-size: 13px;
207
325
  color: #9DB1BC;
208
- padding: 10px 20px;
326
+ padding: 10px 10px;
209
327
  border-bottom: 1px solid #eaeaea;
210
328
  background: #fff;
329
+ text-align: left;
330
+ transition: 0.2s background-color;
211
331
  }
212
332
 
333
+ /* name isn't sortable */
334
+ #processes thead th:not(:first-child) {
335
+ cursor: pointer;
336
+ }
337
+
338
+ #processes thead th:not(:first-child):hover {
339
+ background: #FCF8F6;
340
+ }
341
+
342
+ #processes tr:nth-child(odd) td {
343
+ background: #FCF8F6;
344
+ }
345
+
346
+
213
347
  #processes td:not(:first-child) {
214
348
  width: 26.6666%; /* 3 cols of data. 1st col in table is 20% */
215
349
  }
@@ -218,7 +352,14 @@ svg .line {
218
352
  font-size: 14px;
219
353
  font-weight: bold;
220
354
  width: 20%;
221
- vertical-align: bottom;
355
+ vertical-align: top;
356
+ padding-left: 30px;
357
+ border-left: 1px solid #eaeaea;
358
+ }
359
+
360
+ #processes td:last-child {
361
+ padding-right: 30px;
362
+ border-right: 1px solid #eaeaea;
222
363
  }
223
364
 
224
365
  #processes tr:last-child td:first-child{
@@ -227,12 +368,17 @@ svg .line {
227
368
 
228
369
  #processes td {
229
370
  color: #666;
230
- padding: 14px 20px;
371
+ padding: 14px 4px;
372
+ border-top: 1px solid #fff;
231
373
  border-bottom: 1px solid #eaeaea;
232
374
  font-size: 13px;
233
375
  background: #fff;
234
376
  }
235
377
 
378
+ #processes td span.chart_container {
379
+ width: 50%;
380
+ }
381
+
236
382
  #processes tr.compact td {
237
383
  padding-left: 16px;
238
384
  padding-right: 16px;
@@ -242,13 +388,13 @@ svg .line {
242
388
  display: inline-block;
243
389
  }
244
390
 
245
-
246
391
  /* process chart */
247
392
 
248
393
  #processes .chart {
249
394
  height: 15px;
395
+ width: 50%;
250
396
  }
251
397
 
252
- #processes .latest_value {
253
- float:right;
254
- }
398
+ #processes .latest_value, #processes .chart_info {
399
+ padding-left: 10px;
400
+ }
@@ -1,6 +1,4 @@
1
1
  <div class="chart_container">
2
2
  <svg class="chart overview_chart" data-collector="<%=chart_collector%>" data-metrics=<%= JSON.dump(chart_metrics) %> data-instance-name="<%=chart_instance_name%>" data-y_scale_max="<%= chart_y_scale_max %>"></svg>
3
-
4
- <div class="chart_legend"></div>
5
3
  <div style="clear:both;"></div>
6
4
  </div>
@@ -1,8 +1,8 @@
1
- <div class="row header_row" style="height: 100%">
2
- <div class="col-md-6"><img src="/images/logo.png" alt="Scout Realtime"/></div>
3
- <div class="col-md-6">
4
- <div id="toggle">
5
- <span id='report-time'></span> <img src="/images/pause.png" class="off-button" /><img src="/images/play.png" class="on-button">
6
- </div>
1
+ <div> <!-- wrapper div needed for ff positioning -->
2
+ <img src="/images/logo.png" alt="Scout Realtime"/>
3
+ <div id="toggle">
4
+ <span id='report-time'></span>
5
+ <span id='off' class="button"><img src="/images/pause.png" width=12 height=14 /></span><span id='on' class="button"><img src="/images/play.png" width=14 height=14 ></span>
7
6
  </div>
8
- </div> <!-- header row -->
7
+ <div>
8
+
@@ -1,21 +1,27 @@
1
- <div class="row">
2
- <div class="col-md-8" style="height:100%">
3
- <div id="top" class="container">
1
+ <table id="main_container">
2
+ <tbody>
3
+ <tr>
4
+ <td id="header">
4
5
  <%= erb :header %>
5
- <%= erb :overview_charts%>
6
- </div> <!-- top -->
7
- </div> <!-- col-md-8 -->
8
- <!-- sidebar -->
9
- <div class="col-md-4" id="sidebar_top" style="height:100%">
6
+ </td>
7
+ <td id="sidebar_top" rowspan=2>
10
8
  <%= erb :sidebar %>
11
- </div>
12
- </div>
13
- <div class="row">
14
- <div class="col-md-8">
9
+ </td>
10
+ </tr>
11
+ <tr>
12
+ <td id="overview_charts">
13
+ <%= erb :overview_charts%>
14
+ </td>
15
+ </tr>
16
+ <tr>
17
+ <td id="processes_container">
15
18
  <h2><span>Top</span> Processes</h2>
16
19
  <%= erb :processes %>
17
- </div>
18
- <!-- sidebar -->
19
- <div class="col-md-4" id="sidebar_bottom"></div>
20
- </div>
20
+ </td>
21
+ <td id="sidebar_bottom">
22
+ <%= erb :sidebar_bottom%>
23
+ </td>
24
+ </tr>
25
+ </tbody>
26
+ </table>
21
27
  <script src="/javascripts/application.js"></script>
@@ -4,7 +4,6 @@
4
4
  <meta charset="utf-8">
5
5
  <title>Scout Realtime</title>
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
- <link href="/stylesheets/bootstrap.min.css" rel="stylesheet">
8
7
  <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
9
8
  <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
10
9
  <!--[if lt IE 9]>
@@ -14,20 +13,19 @@
14
13
  <link rel="stylesheet" href="stylesheets/styles.css?v=1.0">
15
14
  <script type="text/javascript" src="javascripts/jquery.js"></script>
16
15
  <script src="/javascripts/d3.v3.min.js"></script>
17
- <script src="/javascripts/charts.js"></script>
16
+ <script src="/javascripts/jquery.debouncedresize.js"></script>
17
+
18
+ <!-- <script src="/javascripts/charts.js"></script> -->
18
19
  <script src="/javascripts/d3.linechart.js"></script>
19
20
  <script type="text/javascript" src="javascripts/handlebars-v1.1.0.js"></script>
20
21
  <script>var metrics_array=[]<%#=DATA_FOR_TESTING.to_json%>;</script>
21
22
  <script>var metrics=<%=@latest_run.to_json%>;</script>
22
23
  <script>var historical_metrics=<%=@historical_metrics.to_json%>;</script>
23
24
  <script>var meta=<%=@meta.to_json%>;</script>
24
- <script type="text/javascript" src="//use.typekit.net/bfa1mea.js"></script>
25
+ <script type="text/javascript" src="//use.typekit.net/fxt5xqq.js"></script>
25
26
  <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
26
27
  </head>
27
28
  <body>
28
- <div class="container main_container" style="height:100%">
29
- <%=yield%>
30
- </div><!-- container -->
31
- <script src="/javascripts/bootstrap.min.js"></script>
29
+ <%=yield%>
32
30
  </body>
33
31
  </html>
@@ -1,30 +1,26 @@
1
1
  <!-- top row of metrics -->
2
- <div class="row metrics_row">
3
- <div class="col-md-6 chart_container">
2
+ <div class="overview_chart_container">
4
3
  <h3>CPU Usage</h3>
5
4
  <div class="latest_value"></div>
6
- <%= erb :graph, :locals => {:chart_collector => "cpu", :chart_metrics => ["io_wait", "system", "user"], :chart_instance_name => "", :chart_y_scale_max => "100"} %>
7
5
  <div class="chart_info"></div>
6
+ <%= erb :graph, :locals => {:chart_collector => "cpu", :chart_metrics => ["io_wait", "system", "user"], :chart_instance_name => "", :chart_y_scale_max => "100"} %>
8
7
  </div>
9
- <div class="col-md-6 chart_container">
8
+ <div class="overview_chart_container">
10
9
  <h3>Memory Usage</h3>
11
10
  <div class="latest_value"></div>
12
- <%= erb :graph, :locals => {:chart_collector => "memory", :chart_metrics => ["used_percent"], :chart_instance_name => "", :chart_y_scale_max => "100"} %>
13
11
  <div class="chart_info"></div>
12
+ <%= erb :graph, :locals => {:chart_collector => "memory", :chart_metrics => ["used_percent"], :chart_instance_name => "", :chart_y_scale_max => "100"} %>
14
13
  </div>
15
- </div> <!-- end first row of metrics -->
16
14
  <!-- bottom row of metrics -->
17
- <div class="row metrics_row">
18
- <div class="col-md-6 chart_container">
15
+ <div class="overview_chart_container">
19
16
  <h3>Disk Utilization</h3>
20
17
  <div class="latest_value"></div>
21
- <%= erb :graph, :locals => {:chart_collector => "disk", :chart_metrics => ["utilization"], :chart_instance_name => @disks.last, :chart_y_scale_max => "100"} %>
22
18
  <div class="chart_info"></div>
19
+ <%= erb :graph, :locals => {:chart_collector => "disk", :chart_metrics => ["utilization"], :chart_instance_name => @disks.last, :chart_y_scale_max => "100"} %>
23
20
  </div>
24
- <div class="col-md-6 chart_container">
21
+ <div class="overview_chart_container">
25
22
  <h3>Network Traffic</h3>
26
23
  <div class="latest_value"></div>
27
- <%= erb :graph, :locals => {:chart_collector => "network", :chart_metrics => ["bytes_in", "bytes_out"], :chart_instance_name => @networks.first, :chart_y_scale_max => ""} %>
28
24
  <div class="chart_info"></div>
25
+ <%= erb :graph, :locals => {:chart_collector => "network", :chart_metrics => ["bytes_in", "bytes_out"], :chart_instance_name => @networks.first, :chart_y_scale_max => ""} %>
29
26
  </div> <!-- -->
30
- </div> <!-- end bottom row of metrics -->
@@ -2,9 +2,9 @@
2
2
  <thead>
3
3
  <tr>
4
4
  <th></th>
5
- <th>Count</th>
6
- <th>CPU %</th>
7
- <th>Memory</th>
5
+ <th data-sort-by="count">Count&nbsp;<span class="sort-container"><span class="sort-up">&#9650;</span><span class="sort-down">&#9660;</span></span></th>
6
+ <th data-sort-by="cpu">CPU %&nbsp;<span class="sort-container"><span class="sort-up">&#9650;</span><span class="sort-down">&#9660;</span></span></th>
7
+ <th data-sort-by="memory">Memory&nbsp;<span class="sort-container"><span class="sort-up">&#9650;</span><span class="sort-down">&#9660;</span></span></th>
8
8
  </tr>
9
9
  </thead>
10
10
  <tbody></tbody>
@@ -14,17 +14,17 @@
14
14
  <td>{{cmd}}</td>
15
15
  <td class="process">
16
16
  <span><svg class="chart" data-collector="{{cmd}}" data-type="count" data-instance-name=""></svg></span>
17
- <span class="chart_info"></span>
17
+ <span class="chart_info" style="display:none"></span>
18
18
  <span class="latest_value">{{count}}</span>
19
19
  </td>
20
20
  <td class="process">
21
21
  <span><svg class="chart" data-collector="{{cmd}}" data-type="cpu" data-instance-name=""></svg></span>
22
- <span class="chart_info"></span>
22
+ <span class="chart_info" style="display:none"></span>
23
23
  <span class="latest_value">{{cpu}}</span>
24
24
  </td>
25
25
  <td class="process">
26
26
  <span><svg class="chart" data-collector="{{cmd}}" data-type="memory" data-instance-name=""></svg></span>
27
- <span class="chart_info"></span>
27
+ <span class="chart_info" style="display:none"></span>
28
28
  <span class="latest_value">{{memory}}</span>
29
29
  </td>
30
30
  </tr>