fnordmetric 0.5.5 → 0.5.6

Sign up to get free protection for your applications and to get access to all the features.
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
- .topbar{ height:43px; background:#24272c; display:none; }
4
+ .shown{ display: block; }
5
+ .hidden{ display: none; }
5
6
 
6
- #wrap{ margin:0 20px; }
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
  '&nbsp;&dash;&nbsp;' +
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_'){ addEventType(v,v); }
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,