scout_realtime 0.5.3 → 0.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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>