fnordmetric 0.5.5 → 0.5.6
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.
- data/README.md +335 -0
- data/VERSION +1 -1
- data/fnordmetric.gemspec +7 -4
- data/haml/app.haml +6 -1
- data/lib/fnordmetric.rb +1 -1
- data/lib/fnordmetric/app.rb +5 -1
- data/lib/fnordmetric/inbound_stream.rb +1 -1
- data/lib/fnordmetric/worker.rb +1 -1
- data/pub/fnordmetric.css +10 -2
- data/pub/fnordmetric.js +138 -133
- metadata +166 -158
- data/readme.rdoc +0 -337
data/pub/fnordmetric.css
CHANGED
@@ -1,9 +1,17 @@
|
|
1
1
|
body, html{ height:100%; padding:0px;}
|
2
2
|
body{ background:#3b3e45; color:#333; margin:0; padding:0; overflow-y:scroll; font: 12px/20px "Helvetica Neue", Helvetica, Arial, sans-serif; }
|
3
3
|
|
4
|
-
.
|
4
|
+
.shown{ display: block; }
|
5
|
+
.hidden{ display: none; }
|
5
6
|
|
6
|
-
|
7
|
+
.topbar{ height:38px; background:#24272c; position:fixed; top:0px; width:100%;}
|
8
|
+
.topbar ul { list-style-type:none; margin:0; }
|
9
|
+
.topbar ul li { padding: 5px 10px 5px 10px; background-color:#3b3e45; display:inline; height:38px; line-height:38px; border-radius:3px; margin-right:5px;}
|
10
|
+
.topbar ul li a { color:#ccc; font-size:13px; text-decoration:none; }
|
11
|
+
.topbar ul li a:hover { color:#fff; }
|
12
|
+
.topbar ul li.active a { color:#fff; }
|
13
|
+
|
14
|
+
#wrap{ margin:25px 20px; }
|
7
15
|
|
8
16
|
#tabs{ width:150px; position:fixed; height:100%; margin-top:70px; }
|
9
17
|
#tabs ul{ list-style-type:none; padding:0; margin:0; width:156px;}
|
data/pub/fnordmetric.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
var FnordMetric = (function(){
|
2
|
-
|
2
|
+
|
3
3
|
var canvasElem = false;
|
4
4
|
|
5
5
|
var currentNamespace = false;
|
@@ -33,7 +33,7 @@ var FnordMetric = (function(){
|
|
33
33
|
return parseInt(range/(3600*24)) + ' days';
|
34
34
|
}
|
35
35
|
}
|
36
|
-
|
36
|
+
|
37
37
|
function formatTimeSince(time){
|
38
38
|
var now = new Date().getTime()/1000;
|
39
39
|
var since = now - time;
|
@@ -57,13 +57,13 @@ var FnordMetric = (function(){
|
|
57
57
|
}
|
58
58
|
|
59
59
|
function formatValue(value){
|
60
|
-
if(value < 10){
|
61
|
-
return value.toFixed(2);
|
62
|
-
} else if(value > 1000){
|
63
|
-
return (value/1000.0).toFixed(1) + "k";
|
60
|
+
if(value < 10){
|
61
|
+
return value.toFixed(2);
|
62
|
+
} else if(value > 1000){
|
63
|
+
return (value/1000.0).toFixed(1) + "k";
|
64
64
|
} else {
|
65
|
-
return value.toFixed(0);
|
66
|
-
}
|
65
|
+
return value.toFixed(0);
|
66
|
+
}
|
67
67
|
}
|
68
68
|
|
69
69
|
function getNextWidgetUID(){
|
@@ -95,8 +95,8 @@ var FnordMetric = (function(){
|
|
95
95
|
.attr('rel', k)
|
96
96
|
.append(
|
97
97
|
$('<span></span>').html(opts.gauges[k].title)
|
98
|
-
).click(function(){
|
99
|
-
loadGauge($(this).attr('rel'));
|
98
|
+
).click(function(){
|
99
|
+
loadGauge($(this).attr('rel'));
|
100
100
|
}
|
101
101
|
)
|
102
102
|
);
|
@@ -116,15 +116,15 @@ var FnordMetric = (function(){
|
|
116
116
|
|
117
117
|
$('body').bind('fm_dashboard_close', function(){
|
118
118
|
window.clearInterval(autoupdate_interval);
|
119
|
-
});
|
119
|
+
});
|
120
120
|
}
|
121
121
|
};
|
122
|
-
|
122
|
+
|
123
123
|
function loadGauge(gkey, silent){
|
124
124
|
if(!gkey){ gkey = current_gauge; }
|
125
125
|
current_gauge = gkey;
|
126
126
|
if(!silent){ $('.toplist_inner', opts.elem).addClass('loading'); }
|
127
|
-
var _url = '/' + currentNamespace + '/gauge/' + gkey;
|
127
|
+
var _url = FnordMetric.p + '/' + currentNamespace + '/gauge/' + gkey;
|
128
128
|
$.get(_url, function(_resp){
|
129
129
|
var resp = JSON.parse(_resp);
|
130
130
|
renderGauge(gkey, resp);
|
@@ -147,14 +147,14 @@ var FnordMetric = (function(){
|
|
147
147
|
|
148
148
|
|
149
149
|
return {
|
150
|
-
render: render
|
150
|
+
render: render
|
151
151
|
};
|
152
152
|
|
153
153
|
};
|
154
154
|
|
155
155
|
var numbersWidget = function(){
|
156
156
|
|
157
|
-
|
157
|
+
|
158
158
|
function render(opts){
|
159
159
|
|
160
160
|
opts.elem.append(
|
@@ -165,20 +165,20 @@ var FnordMetric = (function(){
|
|
165
165
|
});
|
166
166
|
|
167
167
|
for(k in opts.gauges){
|
168
|
-
var gtick = parseInt(opts.gauges[k].tick);
|
168
|
+
var gtick = parseInt(opts.gauges[k].tick);
|
169
169
|
var gtitle = opts.gauges[k].title;
|
170
170
|
|
171
171
|
var container = $('<div></div>')
|
172
172
|
.addClass('numbers_container')
|
173
173
|
.addClass('size_'+opts.offsets.length)
|
174
|
-
.attr('rel', k)
|
174
|
+
.attr('rel', k)
|
175
175
|
.append(
|
176
176
|
$('<div></div>')
|
177
177
|
.addClass('title')
|
178
178
|
.html(gtitle)
|
179
179
|
);
|
180
180
|
|
181
|
-
|
181
|
+
|
182
182
|
$(opts.offsets).each(function(n, offset){
|
183
183
|
var _off, _nextoff, _sum;
|
184
184
|
if (offset[0]=="s"){
|
@@ -187,8 +187,8 @@ var FnordMetric = (function(){
|
|
187
187
|
} else {
|
188
188
|
_sum = 0;
|
189
189
|
_off = offset*gtick;
|
190
|
-
_nextoff = gtick;
|
191
|
-
}
|
190
|
+
_nextoff = gtick;
|
191
|
+
}
|
192
192
|
container.append(
|
193
193
|
$('<div></div>')
|
194
194
|
.addClass('number')
|
@@ -218,14 +218,14 @@ var FnordMetric = (function(){
|
|
218
218
|
|
219
219
|
$('body').bind('fm_dashboard_close', function(){
|
220
220
|
window.clearInterval(autoupdate_interval);
|
221
|
-
});
|
221
|
+
});
|
222
222
|
|
223
223
|
}
|
224
224
|
|
225
225
|
};
|
226
226
|
|
227
227
|
updateValues(opts);
|
228
|
-
|
228
|
+
|
229
229
|
}
|
230
230
|
|
231
231
|
function updateValues(opts){
|
@@ -235,15 +235,15 @@ var FnordMetric = (function(){
|
|
235
235
|
var _sum = parseInt($(this).attr('data-sum'));
|
236
236
|
var num = this;
|
237
237
|
var at = parseInt(new Date().getTime()/1000);
|
238
|
-
var url = '/' + currentNamespace + '/gauge/' + $(this).attr('rel');
|
238
|
+
var url = FnordMetric.p + '/' + currentNamespace + '/gauge/' + $(this).attr('rel');
|
239
239
|
if(_sum > 0){
|
240
240
|
url += '?at='+(at-_sum)+'-'+at+'&sum=true';
|
241
241
|
} else {
|
242
242
|
at -= parseInt($(this).attr('data-offset'));
|
243
243
|
url += '?at='+at;
|
244
244
|
}
|
245
|
-
|
246
|
-
$.get(url, function(_resp){
|
245
|
+
|
246
|
+
$.get(url, function(_resp){
|
247
247
|
var resp = JSON.parse(_resp);
|
248
248
|
for(_k in resp){
|
249
249
|
$(num).attr('data', (resp[_k]||0));
|
@@ -261,9 +261,9 @@ var FnordMetric = (function(){
|
|
261
261
|
var target_val = parseFloat($(this).attr('data'));
|
262
262
|
var current_val = parseFloat($(this).attr('data-current'));
|
263
263
|
if(!current_val){ current_val=0; }
|
264
|
-
var diff = (target_val-current_val)/diff_factor;
|
264
|
+
var diff = (target_val-current_val)/diff_factor;
|
265
265
|
if(diff < 1){ diff=1; }
|
266
|
-
if(target_val > current_val){
|
266
|
+
if(target_val > current_val){
|
267
267
|
still_running = true;
|
268
268
|
var new_val = current_val+diff;
|
269
269
|
if(new_val > target_val){ new_val = target_val; }
|
@@ -271,7 +271,7 @@ var FnordMetric = (function(){
|
|
271
271
|
$('.value', this).html(formatValue(new_val));
|
272
272
|
}
|
273
273
|
});
|
274
|
-
if(still_running){
|
274
|
+
if(still_running){
|
275
275
|
(function(df){
|
276
276
|
window.setTimeout(function(){ updateDisplay(opts, df); }, 30);
|
277
277
|
})(diff_factor);
|
@@ -279,53 +279,53 @@ var FnordMetric = (function(){
|
|
279
279
|
}
|
280
280
|
|
281
281
|
return {
|
282
|
-
render: render
|
282
|
+
render: render
|
283
283
|
};
|
284
284
|
|
285
285
|
};
|
286
286
|
|
287
287
|
var timelineWidget = function(){
|
288
|
-
|
288
|
+
|
289
289
|
function render(opts){
|
290
|
-
|
290
|
+
|
291
291
|
var widget_uid = getNextWidgetUID();
|
292
292
|
var chart=false;
|
293
293
|
var max_y=0;
|
294
294
|
|
295
295
|
function redrawWithRange(first_time, silent){
|
296
296
|
if(!silent){ $(opts.elem).css('opacity', 0.5); }
|
297
|
-
redrawDatepicker();
|
298
|
-
var _query = '?at='+opts.start_timestamp+'-'+opts.end_timestamp;
|
297
|
+
redrawDatepicker();
|
298
|
+
var _query = '?at='+opts.start_timestamp+'-'+opts.end_timestamp;
|
299
299
|
//chart.series = [];
|
300
300
|
max_y=0;
|
301
301
|
//metrics_completed = 0;
|
302
302
|
$(opts.gauges).each(function(i,gauge){
|
303
303
|
$.ajax({
|
304
|
-
url: '/'+currentNamespace+'/gauge/'+gauge+_query,
|
304
|
+
url: FnordMetric.p + '/' + currentNamespace +'/gauge/'+gauge+_query,
|
305
305
|
success: redrawGauge(first_time, gauge)
|
306
|
-
});
|
306
|
+
});
|
307
307
|
});
|
308
308
|
}
|
309
309
|
|
310
310
|
function redrawGauge(first_time, gauge){
|
311
|
-
return (function(json){
|
311
|
+
return (function(json){
|
312
312
|
var raw_data = JSON.parse(json);
|
313
313
|
var series_data = [];
|
314
314
|
|
315
|
-
for(p in raw_data){
|
316
|
-
series_data.push([parseInt(p)*1000, raw_data[p]||0]);
|
315
|
+
for(p in raw_data){
|
316
|
+
series_data.push([parseInt(p)*1000, raw_data[p]||0]);
|
317
317
|
max_y = Math.max(max_y, raw_data[p]);
|
318
318
|
}
|
319
|
-
|
320
|
-
if(!first_time){
|
321
|
-
chart.get('series-'+gauge).setData(series_data);
|
319
|
+
|
320
|
+
if(!first_time){
|
321
|
+
chart.get('series-'+gauge).setData(series_data);
|
322
322
|
} else {
|
323
323
|
chart.addSeries({
|
324
|
-
name: opts.gauge_titles[gauge],
|
325
|
-
data: series_data,
|
326
|
-
id: 'series-'+gauge
|
327
|
-
});
|
328
|
-
}
|
324
|
+
name: opts.gauge_titles[gauge],
|
325
|
+
data: series_data,
|
326
|
+
id: 'series-'+gauge
|
327
|
+
});
|
328
|
+
}
|
329
329
|
|
330
330
|
chart.yAxis[0].setExtremes(0,max_y);
|
331
331
|
chart.redraw();
|
@@ -337,9 +337,9 @@ var FnordMetric = (function(){
|
|
337
337
|
|
338
338
|
function redrawDatepicker(){
|
339
339
|
$('.datepicker', opts.elem).html(
|
340
|
-
Highcharts.dateFormat('%d.%m.%y %H:%M', parseInt(opts.start_timestamp)*1000) +
|
340
|
+
Highcharts.dateFormat('%d.%m.%y %H:%M', parseInt(opts.start_timestamp)*1000) +
|
341
341
|
' ‐ ' +
|
342
|
-
Highcharts.dateFormat('%d.%m.%y %H:%M', parseInt(opts.end_timestamp)*1000)
|
342
|
+
Highcharts.dateFormat('%d.%m.%y %H:%M', parseInt(opts.end_timestamp)*1000)
|
343
343
|
);
|
344
344
|
}
|
345
345
|
|
@@ -349,7 +349,7 @@ var FnordMetric = (function(){
|
|
349
349
|
opts.end_timestamp += v;
|
350
350
|
redrawWithRange();
|
351
351
|
}
|
352
|
-
|
352
|
+
|
353
353
|
function drawLayout(){
|
354
354
|
$(opts.elem).append( $('<div></div>').attr('class', 'headbar').append(
|
355
355
|
$('<div></div>').attr('class', 'button mr').append($('<span></span>').html('refresh')).click(
|
@@ -367,7 +367,7 @@ var FnordMetric = (function(){
|
|
367
367
|
)
|
368
368
|
).append(
|
369
369
|
$('<h2></h2>').html(opts.title)
|
370
|
-
) ).append(
|
370
|
+
) ).append(
|
371
371
|
$('<div></div>').attr('id', 'container-'+widget_uid).css({
|
372
372
|
height: 256,
|
373
373
|
marginBottom: 20,
|
@@ -377,21 +377,21 @@ var FnordMetric = (function(){
|
|
377
377
|
}
|
378
378
|
|
379
379
|
function drawChart(){
|
380
|
-
chart = new Highcharts.Chart({
|
381
|
-
chart: {
|
382
|
-
renderTo: 'container-'+widget_uid,
|
383
|
-
defaultSeriesType: opts.plot_style,
|
384
|
-
height: 270
|
380
|
+
chart = new Highcharts.Chart({
|
381
|
+
chart: {
|
382
|
+
renderTo: 'container-'+widget_uid,
|
383
|
+
defaultSeriesType: opts.plot_style,
|
384
|
+
height: 270
|
385
385
|
},
|
386
386
|
series: [],
|
387
387
|
title: { text: '' },
|
388
|
-
xAxis: {
|
388
|
+
xAxis: {
|
389
389
|
type: 'datetime',
|
390
|
-
tickInterval: opts.tick * 1000,
|
391
|
-
title: (opts.x_title||''),
|
392
|
-
labels: { step: 2 }
|
390
|
+
tickInterval: opts.tick * 1000,
|
391
|
+
title: (opts.x_title||''),
|
392
|
+
labels: { step: 2 }
|
393
393
|
},
|
394
|
-
yAxis: {
|
394
|
+
yAxis: {
|
395
395
|
title: (opts.y_title||''),
|
396
396
|
min: 0,
|
397
397
|
max: 1000
|
@@ -437,7 +437,7 @@ var FnordMetric = (function(){
|
|
437
437
|
|
438
438
|
$('body').bind('fm_dashboard_close', function(){
|
439
439
|
window.clearInterval(autoupdate_interval);
|
440
|
-
});
|
440
|
+
});
|
441
441
|
|
442
442
|
}
|
443
443
|
};
|
@@ -445,16 +445,16 @@ var FnordMetric = (function(){
|
|
445
445
|
}
|
446
446
|
|
447
447
|
return {
|
448
|
-
render: render
|
448
|
+
render: render
|
449
449
|
};
|
450
450
|
|
451
451
|
};
|
452
452
|
|
453
453
|
|
454
454
|
var barsWidget = function(){
|
455
|
-
|
455
|
+
|
456
456
|
function render(opts){
|
457
|
-
|
457
|
+
|
458
458
|
var widget_uid = getNextWidgetUID();
|
459
459
|
var chart=false;
|
460
460
|
var max_y=0;
|
@@ -464,14 +464,14 @@ var FnordMetric = (function(){
|
|
464
464
|
max_y=0;
|
465
465
|
$(opts.gauges).each(function(i,gauge){
|
466
466
|
$.ajax({
|
467
|
-
url: '/'+currentNamespace+'/gauge/'+gauge,
|
467
|
+
url: FnordMetric.p + '/' + currentNamespace +'/gauge/'+gauge,
|
468
468
|
success: redrawGauge(first_time, gauge)
|
469
|
-
});
|
469
|
+
});
|
470
470
|
});
|
471
471
|
}
|
472
472
|
|
473
473
|
function redrawGauge(first_time, gauge){
|
474
|
-
return (function(json){
|
474
|
+
return (function(json){
|
475
475
|
var raw_data = JSON.parse(json);
|
476
476
|
var series_data = [];
|
477
477
|
var series_type;
|
@@ -487,28 +487,28 @@ var FnordMetric = (function(){
|
|
487
487
|
raw_data.values.sort(function(a,b){
|
488
488
|
if(a[0] == b[0]){
|
489
489
|
return 0;
|
490
|
-
}else if(a[0] > b[0]){
|
490
|
+
}else if(a[0] > b[0]){
|
491
491
|
return 1;
|
492
492
|
} else {
|
493
493
|
return -1;
|
494
494
|
}
|
495
495
|
});
|
496
496
|
}
|
497
|
-
|
498
|
-
for(p in raw_data.values){
|
499
|
-
label_data.push(raw_data.values[p][0]||'?');
|
500
|
-
series_data.push(parseInt(raw_data.values[p][1]||0));
|
497
|
+
|
498
|
+
for(p in raw_data.values){
|
499
|
+
label_data.push(raw_data.values[p][0]||'?');
|
500
|
+
series_data.push(parseInt(raw_data.values[p][1]||0));
|
501
501
|
//max_y = Math.max(max_y, raw_data[p]);
|
502
502
|
}
|
503
|
-
|
504
|
-
chart = new Highcharts.Chart({
|
505
|
-
chart: {
|
506
|
-
renderTo: 'container-'+widget_uid,
|
507
|
-
defaultSeriesType: series_type,
|
508
|
-
height: 270
|
503
|
+
|
504
|
+
chart = new Highcharts.Chart({
|
505
|
+
chart: {
|
506
|
+
renderTo: 'container-'+widget_uid,
|
507
|
+
defaultSeriesType: series_type,
|
508
|
+
height: 270
|
509
509
|
},
|
510
510
|
title: { text: '' },
|
511
|
-
xAxis: {
|
511
|
+
xAxis: {
|
512
512
|
categories: label_data
|
513
513
|
},
|
514
514
|
yAxis: {
|
@@ -540,7 +540,7 @@ var FnordMetric = (function(){
|
|
540
540
|
$(opts.elem).css('opacity', 1);
|
541
541
|
});
|
542
542
|
}
|
543
|
-
|
543
|
+
|
544
544
|
function drawLayout(){
|
545
545
|
$(opts.elem).append( $('<div></div>').attr('class', 'headbar').append(
|
546
546
|
$('<div></div>').attr('class', 'button mr').append($('<span></span>').html('refresh')).click(
|
@@ -548,7 +548,7 @@ var FnordMetric = (function(){
|
|
548
548
|
)
|
549
549
|
).append(
|
550
550
|
$('<h2></h2>').html(opts.title)
|
551
|
-
) ).append(
|
551
|
+
) ).append(
|
552
552
|
$('<div></div>').attr('id', 'container-'+widget_uid).css({
|
553
553
|
height: 256,
|
554
554
|
marginBottom: 20,
|
@@ -560,29 +560,29 @@ var FnordMetric = (function(){
|
|
560
560
|
drawLayout();
|
561
561
|
redraw(true);
|
562
562
|
|
563
|
-
if(opts.autoupdate){
|
563
|
+
if(opts.autoupdate){
|
564
564
|
var autoupdate_interval = window.setInterval(function(){
|
565
565
|
redraw(false, true);
|
566
566
|
}, opts.autoupdate*1000);
|
567
567
|
|
568
568
|
$('body').bind('fm_dashboard_close', function(){
|
569
569
|
window.clearInterval(autoupdate_interval);
|
570
|
-
});
|
570
|
+
});
|
571
571
|
}
|
572
572
|
|
573
573
|
}
|
574
574
|
|
575
575
|
return {
|
576
|
-
render: render
|
576
|
+
render: render
|
577
577
|
};
|
578
578
|
|
579
579
|
};
|
580
580
|
|
581
581
|
|
582
582
|
var pieWidget = function(){
|
583
|
-
|
583
|
+
|
584
584
|
function render(opts){
|
585
|
-
|
585
|
+
|
586
586
|
var widget_uid = getNextWidgetUID();
|
587
587
|
var chart=false;
|
588
588
|
|
@@ -593,36 +593,36 @@ var FnordMetric = (function(){
|
|
593
593
|
var at = parseInt(new Date().getTime()/1000);
|
594
594
|
$(opts.gauges).each(function(i,gauge){
|
595
595
|
$.ajax({
|
596
|
-
url: '/'+currentNamespace+'/gauge/'+gauge+'?at='+at,
|
596
|
+
url: FnordMetric.p + '/' + currentNamespace+'/gauge/'+gauge+'?at='+at,
|
597
597
|
success: function(_resp){
|
598
598
|
var resp = JSON.parse(_resp);
|
599
599
|
gauges_left -= 1;
|
600
|
-
for(_tk in resp){
|
600
|
+
for(_tk in resp){
|
601
601
|
gauge_values[gauge] = parseInt(resp[_tk]||0);
|
602
602
|
}
|
603
603
|
if(gauges_left==0){
|
604
604
|
redrawChart(first_time, gauge_values);
|
605
605
|
}
|
606
606
|
}
|
607
|
-
});
|
607
|
+
});
|
608
608
|
});
|
609
609
|
}
|
610
610
|
|
611
|
-
function redrawChart(first_time, gauge_values){
|
612
|
-
|
611
|
+
function redrawChart(first_time, gauge_values){
|
612
|
+
|
613
613
|
var series_data = [];
|
614
|
-
|
614
|
+
|
615
615
|
for(_gkey in gauge_values){
|
616
616
|
series_data.push([
|
617
617
|
opts.gauge_titles[_gkey],
|
618
618
|
gauge_values[_gkey]
|
619
619
|
]);
|
620
|
-
}
|
621
|
-
|
622
|
-
chart = new Highcharts.Chart({
|
623
|
-
chart: {
|
624
|
-
renderTo: 'container-'+widget_uid,
|
625
|
-
defaultSeriesType: 'pie',
|
620
|
+
}
|
621
|
+
|
622
|
+
chart = new Highcharts.Chart({
|
623
|
+
chart: {
|
624
|
+
renderTo: 'container-'+widget_uid,
|
625
|
+
defaultSeriesType: 'pie',
|
626
626
|
height: 270,
|
627
627
|
spacingTop: 5,
|
628
628
|
spacingBottom: 30
|
@@ -664,11 +664,11 @@ var FnordMetric = (function(){
|
|
664
664
|
//chart.redraw();
|
665
665
|
$(opts.elem).css('opacity', 1);
|
666
666
|
}
|
667
|
-
|
667
|
+
|
668
668
|
function drawLayout(){
|
669
669
|
$(opts.elem).append( $('<div></div>').attr('class', 'headbar small').append(
|
670
670
|
$('<span></span>').html(opts.title)
|
671
|
-
) ).append(
|
671
|
+
) ).append(
|
672
672
|
$('<div></div>').attr('id', 'container-'+widget_uid).css({
|
673
673
|
height: 270
|
674
674
|
})
|
@@ -678,27 +678,27 @@ var FnordMetric = (function(){
|
|
678
678
|
drawLayout();
|
679
679
|
redraw(true);
|
680
680
|
|
681
|
-
if(opts.autoupdate){
|
681
|
+
if(opts.autoupdate){
|
682
682
|
var autoupdate_interval = window.setInterval(function(){
|
683
683
|
redraw(false, true);
|
684
684
|
}, opts.autoupdate*1000);
|
685
685
|
|
686
686
|
$('body').bind('fm_dashboard_close', function(){
|
687
687
|
window.clearInterval(autoupdate_interval);
|
688
|
-
});
|
688
|
+
});
|
689
689
|
}
|
690
690
|
|
691
691
|
}
|
692
692
|
|
693
693
|
return {
|
694
|
-
render: render
|
694
|
+
render: render
|
695
695
|
};
|
696
696
|
|
697
697
|
};
|
698
698
|
|
699
699
|
|
700
700
|
var sessionView = (function(){
|
701
|
-
|
701
|
+
|
702
702
|
var listElem = $('<ul class="session_list"></ul>');
|
703
703
|
var feedInnerElem = $('<ul class="feed_inner"></ul>');
|
704
704
|
var typeListElem = $('<ul class="event_type_list"></ul>');
|
@@ -745,7 +745,7 @@ var FnordMetric = (function(){
|
|
745
745
|
function doSessionPoll(){
|
746
746
|
return (function(){
|
747
747
|
$.ajax({
|
748
|
-
url: '/'+currentNamespace+'/sessions',
|
748
|
+
url: FnordMetric.p + '/' + currentNamespace+'/sessions',
|
749
749
|
success: callbackSessionPoll()
|
750
750
|
});
|
751
751
|
});
|
@@ -754,7 +754,7 @@ var FnordMetric = (function(){
|
|
754
754
|
function loadEventHistory(event_type){
|
755
755
|
feedInnerElem.html('');
|
756
756
|
$.ajax({
|
757
|
-
url: '/'+currentNamespace+'/events?type='+event_type,
|
757
|
+
url: FnordMetric.p + '/' + currentNamespace+'/events?type='+event_type,
|
758
758
|
success: function(_data, _status){
|
759
759
|
var data = JSON.parse(_data).events;
|
760
760
|
for(var n=data.length; n >= 0; n--){
|
@@ -767,7 +767,7 @@ var FnordMetric = (function(){
|
|
767
767
|
function callbackSessionPoll(){
|
768
768
|
return (function(_data, _status){
|
769
769
|
$.each(JSON.parse(_data).sessions, function(i,v){
|
770
|
-
updateSession(v);
|
770
|
+
updateSession(v);
|
771
771
|
});
|
772
772
|
sortSessions();
|
773
773
|
});
|
@@ -775,11 +775,13 @@ var FnordMetric = (function(){
|
|
775
775
|
|
776
776
|
function loadEventTypes(){
|
777
777
|
$.ajax({
|
778
|
-
url: '/'+currentNamespace+'/event_types',
|
778
|
+
url: FnordMetric.p + '/' + currentNamespace+'/event_types',
|
779
779
|
success: function(_data){
|
780
780
|
var data = JSON.parse(_data);
|
781
781
|
$(data.types).each(function(i,v){
|
782
|
-
if(v.slice(0,5)!='_set_'){
|
782
|
+
if((v.length > 0) && (v.slice(0,5)!='_set_')){
|
783
|
+
addEventType(v,v);
|
784
|
+
}
|
783
785
|
});
|
784
786
|
}
|
785
787
|
});
|
@@ -789,10 +791,10 @@ var FnordMetric = (function(){
|
|
789
791
|
typeListElem.append(
|
790
792
|
$('<li class="event_type"></li>').append(
|
791
793
|
$('<span class="history"></span>').html('history')
|
792
|
-
.click(function(){
|
794
|
+
.click(function(){
|
793
795
|
$('.event_type_list .event_type input').attr('checked', false);
|
794
796
|
$('input', $(this).parent()).attr('checked', true);
|
795
|
-
updateEventFilter(); loadEventHistory(type);
|
797
|
+
updateEventFilter(); loadEventHistory(type);
|
796
798
|
})
|
797
799
|
).append(
|
798
800
|
$('<input type="checkbox" />').attr('checked', true)
|
@@ -814,9 +816,9 @@ var FnordMetric = (function(){
|
|
814
816
|
}
|
815
817
|
|
816
818
|
function doEventsPoll(){
|
817
|
-
return (function(){
|
819
|
+
return (function(){
|
818
820
|
$.ajax({
|
819
|
-
url: '/'+currentNamespace+'/events?since='+eventsPolledUntil,
|
821
|
+
url: FnordMetric.p + '/' + currentNamespace+'/events?since='+eventsPolledUntil,
|
820
822
|
success: callbackEventsPoll()
|
821
823
|
});
|
822
824
|
});
|
@@ -828,15 +830,15 @@ var FnordMetric = (function(){
|
|
828
830
|
var events = data.events;
|
829
831
|
var timout = 1000;
|
830
832
|
var maxevents = 200;
|
831
|
-
if(events.length > 0){
|
832
|
-
timeout = 200;
|
833
|
+
if(events.length > 0){
|
834
|
+
timeout = 200;
|
833
835
|
eventsPolledUntil = parseInt(events[0]._time)-1;
|
834
836
|
}
|
835
837
|
for(var n=events.length-1; n >= 0; n--){
|
836
838
|
var v = events[n];
|
837
839
|
if(eventsFilter.indexOf(v._type) == -1){
|
838
840
|
if(parseInt(v._time)<=eventsPolledUntil){
|
839
|
-
renderEvent(v);
|
841
|
+
renderEvent(v);
|
840
842
|
}
|
841
843
|
}
|
842
844
|
};
|
@@ -874,21 +876,21 @@ var FnordMetric = (function(){
|
|
874
876
|
if(session_name){
|
875
877
|
$('.name', session_elem).html(session_name);
|
876
878
|
}
|
877
|
-
|
879
|
+
|
878
880
|
$('.time', session_elem).html(session_time);
|
879
881
|
|
880
882
|
} else {
|
881
|
-
|
883
|
+
|
882
884
|
var session_picture = $('<img width="18" />');
|
883
885
|
|
884
|
-
if(!session_name){
|
886
|
+
if(!session_name){
|
885
887
|
session_name = session_data["session_key"].substr(0,15)
|
886
888
|
};
|
887
889
|
|
888
|
-
if(session_data["_picture"]){
|
890
|
+
if(session_data["_picture"]){
|
889
891
|
session_picture.attr('src', session_data["_picture"]);
|
890
892
|
};
|
891
|
-
|
893
|
+
|
892
894
|
listElem.append(
|
893
895
|
$('<li class="session"></li>').append(
|
894
896
|
$('<div class="picture"></div>').html(session_picture)
|
@@ -909,7 +911,7 @@ var FnordMetric = (function(){
|
|
909
911
|
var event_picture = $('<div class="picture"></picture>');
|
910
912
|
|
911
913
|
var event_type = event_data._type;
|
912
|
-
|
914
|
+
|
913
915
|
if(!event_type){ return true; }
|
914
916
|
|
915
917
|
if(event_data._message){
|
@@ -923,15 +925,15 @@ var FnordMetric = (function(){
|
|
923
925
|
}
|
924
926
|
|
925
927
|
event_time.html(formatTimeOfDay(event_data._time));
|
926
|
-
|
928
|
+
|
927
929
|
if(event_data._session_key && event_data._session_key.length > 0){
|
928
930
|
if(session_data=sessionData[event_data._session_key]){
|
929
|
-
if(session_data._name){
|
931
|
+
if(session_data._name){
|
930
932
|
event_props.append(
|
931
933
|
$('<strong></strong>').html(session_data._name)
|
932
934
|
);
|
933
935
|
}
|
934
|
-
if(session_data._picture){
|
936
|
+
if(session_data._picture){
|
935
937
|
event_picture.append(
|
936
938
|
$('<img width="40" />').attr('src', session_data._picture)
|
937
939
|
)
|
@@ -959,7 +961,7 @@ var FnordMetric = (function(){
|
|
959
961
|
};
|
960
962
|
|
961
963
|
});
|
962
|
-
|
964
|
+
|
963
965
|
|
964
966
|
var dashboardView = (function(dashboard_name){
|
965
967
|
|
@@ -969,7 +971,7 @@ var FnordMetric = (function(){
|
|
969
971
|
function load(_viewport){
|
970
972
|
viewport = _viewport.html('');
|
971
973
|
$.ajax({
|
972
|
-
url: '/'+currentNamespace+'/dashboard/'+dashboard_name,
|
974
|
+
url: FnordMetric.p + '/' + currentNamespace+'/dashboard/'+dashboard_name,
|
973
975
|
success: function(resp, status){
|
974
976
|
var conf = JSON.parse(resp);
|
975
977
|
renderWidgets(conf.widgets);
|
@@ -1007,17 +1009,17 @@ var FnordMetric = (function(){
|
|
1007
1009
|
if(wwperc==100){
|
1008
1010
|
widgets[wkey].elem.addClass('full_width');
|
1009
1011
|
} else { wwidth -= 1; }
|
1010
|
-
widget.elem.width(wwidth);
|
1012
|
+
widget.elem.width(wwidth);
|
1011
1013
|
}
|
1012
1014
|
|
1013
1015
|
function resize(){
|
1014
1016
|
for(wkey in widgets){
|
1015
|
-
resizeWidget(wkey);
|
1017
|
+
resizeWidget(wkey);
|
1016
1018
|
};
|
1017
1019
|
};
|
1018
1020
|
|
1019
1021
|
function close(){
|
1020
|
-
$('body').trigger('fm_dashboard_close');
|
1022
|
+
$('body').trigger('fm_dashboard_close');
|
1021
1023
|
};
|
1022
1024
|
|
1023
1025
|
return {
|
@@ -1029,7 +1031,7 @@ var FnordMetric = (function(){
|
|
1029
1031
|
});
|
1030
1032
|
|
1031
1033
|
|
1032
|
-
function renderDashboard(_dash){
|
1034
|
+
function renderDashboard(_dash){
|
1033
1035
|
loadView(dashboardView(_dash));
|
1034
1036
|
};
|
1035
1037
|
|
@@ -1047,19 +1049,22 @@ var FnordMetric = (function(){
|
|
1047
1049
|
|
1048
1050
|
function resizeView(){
|
1049
1051
|
currentView.resize(
|
1050
|
-
canvasElem.innerWidth(),
|
1052
|
+
canvasElem.innerWidth(),
|
1051
1053
|
canvasElem.innerHeight()
|
1052
1054
|
);
|
1053
1055
|
};
|
1054
1056
|
|
1055
1057
|
function init(_namespace, _canvasElem){
|
1058
|
+
if (FnordMetric.p == ''){
|
1059
|
+
FnordMetric.p = '/';
|
1060
|
+
}
|
1056
1061
|
canvasElem = _canvasElem;
|
1057
1062
|
currentNamespace = _namespace;
|
1058
1063
|
loadView(sessionView());
|
1059
1064
|
};
|
1060
1065
|
|
1061
1066
|
return {
|
1062
|
-
p: '/fnordmetric/',
|
1067
|
+
p: '/fnordmetric/',
|
1063
1068
|
renderDashboard: renderDashboard,
|
1064
1069
|
renderSessionView: renderSessionView,
|
1065
1070
|
resizeView: resizeView,
|