-
Notifications
You must be signed in to change notification settings - Fork 388
/
fnordmetric.gauge_view.js
94 lines (82 loc) · 2.58 KB
/
fnordmetric.gauge_view.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
FnordMetric.views.gaugeView = (function(gauge_name, conf){
var widgets = [];
var widget_objs = {};
var viewport = null;
function load(_viewport){
viewport = _viewport;
viewport.html('');
viewport.append('<div class="navbar"></div>');
viewport.append('<h1>' + gauge_name + '</h1>');
viewport.append('<h3>Loading...</h3>');
viewport.append('<div class="gauge_viewport loading"></div>');
$('h1', viewport).html(conf.title);
$('h3', viewport).html(conf.title);
$('.gauge_viewport', viewport).html(conf.template);
$('.gauge_viewport', viewport).removeClass('loading');
FnordMetric.ui.navbar($('.navbar', viewport), {
breadcrumb: [
["Fnord", "/group/fnord"],
[conf.title, "/gauge/"+gauge_name]
],
buttons: [
["Export Data", function(){ alert(23); }]
]
});
renderWidgets(conf.widgets);
};
function announce(evt){
if(evt._class == "widget_response"){
for(_wkey in widgets){
widget_objs[_wkey].announce(evt);
}
}
}
function renderWidgets(_widgets){
for(wkey in _widgets){
var widget = _widgets[wkey];
//widget["elem"] = $(widget["render_target"], viewport);
widget["elem"] = $('<div class="widget"></div>');
$('.viewport_inner').append(widget["elem"]);
widgets[wkey] = widget;
resizeWidget(wkey);
renderWidget(wkey);
};
resize();
};
function renderWidget(wkey, _w){
var widget = widgets[wkey];
/* argh... */
if(widget.klass=='TimelineWidget'){ _w = FnordMetric.widgets._timelineWidget(); }
if(widget.klass=='BarsWidget'){ _w = FnordMetric.widgets.barsWidget(); }
if(widget.klass=='NumbersWidget'){ _w = FnordMetric.widgets.numbersWidget(); }
if(widget.klass=='ToplistWidget'){ _w = FnordMetric.widgets.toplistWidget(); }
if(widget.klass=='PieWidget'){ _w = FnordMetric.widgets.pieWidget(); }
if(widget.klass=="HtmlWidget") { _w = FnordMetric.widgets.htmlWidget(); }
if(_w){ _w.render(widget); }
widget_objs[wkey] = _w;
};
function resizeWidget(wkey){
var widget = widgets[wkey];
var wwperc = widgets[wkey].width;
if(!wwperc){ wwperc = 100; }
var wwidth = viewport.width() * (wwperc/100.0);
if(wwperc==100){
widgets[wkey].elem.addClass('full_width');
} else { wwidth -= 1; }
widget.elem.width(wwidth);
}
function resize(){
for(wkey in widgets){
resizeWidget(wkey);
};
};
function close(){
$('body').trigger('fm_dashboard_close');
};
return {
load: load,
resize: resize,
announce: announce,
close: close
};
});