fnordmetric 1.0.1 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +1 -1
- data/fnordmetric.gemspec +1 -0
- data/lib/fnordmetric.rb +6 -13
- data/lib/fnordmetric/acceptors/acceptor.rb +20 -7
- data/lib/fnordmetric/acceptors/amqp_acceptor.rb +56 -0
- data/lib/fnordmetric/acceptors/fyrehose_acceptor.rb +43 -0
- data/lib/fnordmetric/acceptors/stomp_acceptor.rb +71 -0
- data/lib/fnordmetric/acceptors/tcp_acceptor.rb +1 -0
- data/lib/fnordmetric/acceptors/udp_acceptor.rb +2 -1
- data/lib/fnordmetric/context.rb +21 -9
- data/lib/fnordmetric/defaults.rb +16 -3
- data/lib/fnordmetric/gauge.rb +8 -3
- data/lib/fnordmetric/gauge_calculations.rb +8 -2
- data/lib/fnordmetric/gauge_modifiers.rb +5 -4
- data/lib/fnordmetric/gauges/server_health_gauge.rb +13 -0
- data/lib/fnordmetric/namespace.rb +53 -17
- data/lib/fnordmetric/util.rb +25 -0
- data/lib/fnordmetric/version.rb +1 -1
- data/lib/fnordmetric/web/app.rb +7 -66
- data/lib/fnordmetric/web/reactor.rb +32 -2
- data/lib/fnordmetric/web/websocket.rb +1 -1
- data/lib/fnordmetric/widgets/bars_widget.rb +1 -1
- data/lib/fnordmetric/widgets/numbers_widget.rb +28 -4
- data/lib/fnordmetric/widgets/timeseries_widget.rb +19 -9
- data/lib/fnordmetric/widgets/toplist_widget.rb +8 -4
- data/lib/fnordmetric/worker.rb +5 -1
- data/lib/fnordmetric/zero_config_gauge.rb +138 -0
- data/spec/context_spec.rb +4 -4
- data/spec/event_spec.rb +11 -11
- data/spec/gauge_modifiers_spec.rb +135 -29
- data/spec/gauge_spec.rb +7 -2
- data/spec/namespace_spec.rb +8 -19
- data/spec/util_spec.rb +46 -0
- data/web/.gitignore +4 -0
- data/web/build.sh +34 -0
- data/web/{fnordmetric.css → css/fnordmetric.core.css} +121 -58
- data/web/haml/app.haml +4 -22
- data/web/{loader.gif → img/loader.gif} +0 -0
- data/web/js/fnordmetric.bars_widget.js +3 -3
- data/web/js/fnordmetric.dashboard_view.js +1 -1
- data/web/js/fnordmetric.gauge_explorer.js +173 -0
- data/web/js/fnordmetric.js +93 -33
- data/web/js/fnordmetric.numbers_widget.js +15 -14
- data/web/js/fnordmetric.session_view.js +0 -1
- data/web/js/fnordmetric.timeline_widget.js +3 -3
- data/web/js/fnordmetric.timeseries_widget.js +46 -29
- data/web/js/fnordmetric.toplist_widget.js +23 -16
- data/web/js/fnordmetric.util.js +12 -8
- data/web/vendor/font-awesome/css/font-awesome-ie7.min.css +22 -0
- data/web/vendor/font-awesome/css/font-awesome.css +522 -221
- data/web/vendor/font-awesome/css/font-awesome.min.css +33 -0
- data/web/vendor/font-awesome/font/FontAwesome.otf +0 -0
- data/web/vendor/font-awesome/font/fontawesome-webfont.eot +0 -0
- data/web/vendor/font-awesome/font/fontawesome-webfont.svg +278 -169
- data/web/vendor/font-awesome/font/fontawesome-webfont.ttf +0 -0
- data/web/vendor/font-awesome/font/fontawesome-webfont.woff +0 -0
- data/web/vendor/jquery-ui.min.js +6 -413
- data/web/vendor/jquery.combobox.js +129 -0
- metadata +55 -48
- data/doc/V1.0-ROADMAP +0 -97
- data/doc/full_example.rb +0 -224
- data/doc/legacy_example.rb +0 -640
- data/doc/minimal_example.rb +0 -26
- data/doc/preview1.png +0 -0
- data/doc/preview2.png +0 -0
- data/doc/preview3.png +0 -0
- data/readme.md +0 -365
- data/web/vendor/d3.v2.js +0 -9382
- data/web/vendor/font-awesome/font/fontawesome-webfont.svgz +0 -0
- data/web/vendor/rickshaw.css +0 -286
- data/web/vendor/rickshaw.fnordmetric.js +0 -2700
data/spec/gauge_spec.rb
CHANGED
@@ -22,9 +22,14 @@ describe FnordMetric::Gauge do
|
|
22
22
|
gauge.tick.should == 23
|
23
23
|
end
|
24
24
|
|
25
|
+
it "should return the correct tick if configured with flush_interval" do
|
26
|
+
gauge = FnordMetric::Gauge.new({:flush_interval => 42, :key_prefix => "fnordmetrics-myns", :key => "mygauge"})
|
27
|
+
gauge.tick.should == 42
|
28
|
+
end
|
29
|
+
|
25
30
|
it "should return the default tick if none configured" do
|
26
31
|
gauge = FnordMetric::Gauge.new({:key_prefix => "fnordmetrics-myns", :key => "mygauge"})
|
27
|
-
gauge.tick.should ==
|
32
|
+
gauge.tick.should == FnordMetric.options[:default_flush_interval]
|
28
33
|
end
|
29
34
|
|
30
35
|
it "should return the correct tick_at" do
|
@@ -222,4 +227,4 @@ describe FnordMetric::Gauge do
|
|
222
227
|
end
|
223
228
|
|
224
229
|
end
|
225
|
-
end
|
230
|
+
end
|
data/spec/namespace_spec.rb
CHANGED
@@ -73,29 +73,18 @@ describe FnordMetric::Namespace do
|
|
73
73
|
it "should register an event handler and create a context"
|
74
74
|
it "should register an event handler and pass options"
|
75
75
|
it "should register an event handler and pass gauges"
|
76
|
-
|
77
|
-
it "should announce an event to the correct handler" do
|
78
|
-
pending("finish this")
|
79
|
-
# block_called = false
|
80
|
-
# FnordMetric::Dashboard.new(:title => 'My Dashboard') do |dash|
|
81
|
-
# block_called = true
|
82
|
-
# dash.should be_a(FnordMetric::Dashboard)
|
83
|
-
# end
|
84
|
-
# block_called.should be_true
|
85
|
-
end
|
86
|
-
|
76
|
+
it "should announce an event to the correct handler"
|
87
77
|
it "should announce an event to multiple handlers"
|
88
78
|
it "should announce an event to the wildcard handler"
|
89
|
-
|
90
79
|
end
|
91
80
|
|
92
81
|
it "should create a new session on announce if _session is set" do
|
93
82
|
FnordMetric::Session.should_receive(:create).and_return(SessionMock.new)
|
94
83
|
FnordMetric::Namespace.new(
|
95
84
|
:myns_213,
|
96
|
-
:redis_prefix => "fnordmetric"
|
97
|
-
).ready!(@redis_wrap).announce(
|
98
|
-
:_time => Time.now.to_i,
|
85
|
+
:redis_prefix => "fnordmetric"
|
86
|
+
).ready!(@redis_wrap, @redis).announce(
|
87
|
+
:_time => Time.now.to_i,
|
99
88
|
:_type => "foobar",
|
100
89
|
:_session => "sess213"
|
101
90
|
)
|
@@ -104,11 +93,11 @@ describe FnordMetric::Namespace do
|
|
104
93
|
it "should add the event to the namespace-event-type-list" do
|
105
94
|
FnordMetric::Namespace.new(
|
106
95
|
:myns_215,
|
107
|
-
:redis_prefix => "fnordmetric"
|
108
|
-
).ready!(@redis_wrap).announce(
|
96
|
+
:redis_prefix => "fnordmetric"
|
97
|
+
).ready!(@redis_wrap, @redis).announce(
|
109
98
|
:_eid => "35r2423",
|
110
|
-
:_time => Time.now.to_i,
|
111
|
-
:_type => "fnordbar",
|
99
|
+
:_time => Time.now.to_i,
|
100
|
+
:_type => "fnordbar",
|
112
101
|
:_session => "sess213"
|
113
102
|
)
|
114
103
|
event_ids = @redis.lrange("fnordmetric-myns_215-type-fnordbar", 0, -1)
|
data/spec/util_spec.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
require ::File.expand_path('../spec_helper.rb', __FILE__)
|
2
|
+
require 'irb'
|
3
|
+
|
4
|
+
describe FnordMetric::Util do
|
5
|
+
|
6
|
+
describe "parse_time" do
|
7
|
+
|
8
|
+
it "should parse now" do
|
9
|
+
FnordMetric::Util.parse_time("now").should == Time.now.to_i
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should parse a timestamp" do
|
13
|
+
FnordMetric::Util.parse_time("1360437813").should == 1360437813
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should parse -secs" do
|
17
|
+
FnordMetric::Util.parse_time("-123").should == Time.now.to_i - 123
|
18
|
+
end
|
19
|
+
|
20
|
+
time_specs = {
|
21
|
+
"-5s" => 5,
|
22
|
+
"-5sec" => 5,
|
23
|
+
"-5secs" => 5,
|
24
|
+
"-5second" => 5,
|
25
|
+
"-5seconds" => 5,
|
26
|
+
"-5m" => (60 * 5),
|
27
|
+
"-5min" => (60 * 5),
|
28
|
+
"-5minute" => (60 * 5),
|
29
|
+
"-5minutes" => (60 * 5),
|
30
|
+
"-5h" => (3600 * 5),
|
31
|
+
"-5hour" => (3600 * 5),
|
32
|
+
"-5hours" => (3600 * 5),
|
33
|
+
"-5d" => (3600 * 24 * 5),
|
34
|
+
"-5day" => (3600 * 24 * 5),
|
35
|
+
"-5days" => (3600 * 24 * 5)
|
36
|
+
}
|
37
|
+
|
38
|
+
time_specs.each do |ts, ti|
|
39
|
+
it "should parse #{ts}" do
|
40
|
+
FnordMetric::Util.parse_time(ts).should == Time.now.to_i - ti
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
data/web/.gitignore
ADDED
data/web/build.sh
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
cp ../../fnordmetric-ui/fnordmetric-ui.js ./
|
4
|
+
cp ../../fnordmetric-ui/fnordmetric-ui.css ./
|
5
|
+
|
6
|
+
(
|
7
|
+
echo "/* this is an automatically generated file, don't modify it... */"
|
8
|
+
cat vendor/jquery-ui.min.js
|
9
|
+
cat vendor/jquery.maskedinput.js
|
10
|
+
cat vendor/jquery.combobox.js
|
11
|
+
cat js/fnordmetric.js
|
12
|
+
cat js/fnordmetric.util.js
|
13
|
+
cat js/fnordmetric.ui.js
|
14
|
+
cat js/fnordmetric.timeline_widget.js
|
15
|
+
cat js/fnordmetric.numbers_widget.js
|
16
|
+
cat js/fnordmetric.bars_widget.js
|
17
|
+
cat js/fnordmetric.pie_widget.js
|
18
|
+
cat js/fnordmetric.toplist_widget.js
|
19
|
+
cat js/fnordmetric.html_widget.js
|
20
|
+
cat js/fnordmetric.realtime_timeline_widget.js
|
21
|
+
cat js/fnordmetric.timeseries_widget.js
|
22
|
+
cat js/fnordmetric.overview_view.js
|
23
|
+
cat js/fnordmetric.gauge_view.js
|
24
|
+
cat js/fnordmetric.dashboard_view.js
|
25
|
+
cat js/fnordmetric.session_view.js
|
26
|
+
cat js/fnordmetric.gauge_explorer.js
|
27
|
+
) > fnordmetric-core.js
|
28
|
+
|
29
|
+
(
|
30
|
+
echo "/* this is an automatically generated file, don't modify it... */"
|
31
|
+
cat vendor/font-awesome/css/font-awesome.css
|
32
|
+
cat css/fnordmetric.core.css
|
33
|
+
) > fnordmetric-core.css
|
34
|
+
|
@@ -175,13 +175,13 @@ a.button.dark:active{
|
|
175
175
|
background:#ccc;
|
176
176
|
}
|
177
177
|
|
178
|
-
.navbar a.button.datepicker{
|
178
|
+
.navbar a.button.datepicker, a.button.datepicker_sa{
|
179
179
|
padding-left:0;
|
180
180
|
padding-right:10px;
|
181
181
|
margin-right:15px;
|
182
182
|
}
|
183
183
|
|
184
|
-
.navbar a.button.datepicker .date{
|
184
|
+
.navbar a.button.datepicker .date, a.button.datepicker_sa .date{
|
185
185
|
background: white;
|
186
186
|
padding: 0 13px;
|
187
187
|
border-right: 1px solid #DDD;
|
@@ -192,12 +192,38 @@ a.button.dark:active{
|
|
192
192
|
color:#555;
|
193
193
|
}
|
194
194
|
|
195
|
-
.navbar a.button.datepicker i{
|
195
|
+
.navbar a.button.datepicker i, a.button.datepicker_sa i{
|
196
196
|
font-size: 17px;
|
197
197
|
float: right;
|
198
198
|
margin-top: 0px;
|
199
199
|
}
|
200
200
|
|
201
|
+
a.button.datepicker_sa {
|
202
|
+
margin-top:0;
|
203
|
+
height: 35px;
|
204
|
+
float:none;
|
205
|
+
background-color: #F4F4F4;
|
206
|
+
background-image: -webkit-linear-gradient(top, #ffffff, #e9e9e9);
|
207
|
+
background-image: -moz-linear-gradient(top, #ffffff, #e9e9e9);
|
208
|
+
background-image: -ms-linear-gradient(top, #ffffff, #e9e9e9);
|
209
|
+
background-image: -o-linear-gradient(top, #ffffff, #e9e9e9);
|
210
|
+
background-image: linear-gradient(top, #ffffff, #e9e9e9);
|
211
|
+
filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffffff', EndColorStr='#e9e9e9');
|
212
|
+
}
|
213
|
+
|
214
|
+
a.button.datepicker_sa:hover {
|
215
|
+
background: #f4f4f4;
|
216
|
+
}
|
217
|
+
|
218
|
+
a.button.datepicker_sa .date {
|
219
|
+
height: 35px;
|
220
|
+
line-height: 37px;
|
221
|
+
}
|
222
|
+
|
223
|
+
a.button.datepicker_sa i {
|
224
|
+
margin-top:7px;
|
225
|
+
}
|
226
|
+
|
201
227
|
.navbar + h1{
|
202
228
|
margin-top:22px;
|
203
229
|
}
|
@@ -234,14 +260,14 @@ a.button.dark:active{
|
|
234
260
|
.ui_value.left{ float:left; }
|
235
261
|
|
236
262
|
.ui_toplist{ min-height:300px; }
|
237
|
-
.ui_toplist.loading{ opacity:0.5; background:url('/loader.gif') no-repeat center center; }
|
263
|
+
.ui_toplist.loading{ opacity:0.5; background:url('/img/loader.gif') no-repeat center center; }
|
238
264
|
|
239
265
|
.ui_toplist .toplist_item{ border-bottom:1px solid #dedede; height:42px; display:block; }
|
240
266
|
.ui_toplist .toplist_item:hover{ background:#fff; }
|
241
267
|
.ui_toplist .toplist_item .title{ float:left; line-height:42px; margin-left:20px; font-size:13px; color:#333; }
|
242
268
|
.ui_toplist .toplist_item .value{ float:right; line-height:42px; margin-right:20px; font-size:13px; font-weight:bold; width:70px; color:#666; }
|
243
269
|
.ui_toplist .toplist_item .value.large{ width:110px; }
|
244
|
-
.ui_toplist .toplist_item .percent{ float:right; line-height:42px; margin-right:30px; font-size:18px; font-weight:bold; color:#333; width:
|
270
|
+
.ui_toplist .toplist_item .percent{ float:right; line-height:42px; margin-right:30px; font-size:18px; font-weight:bold; color:#333; width:80px; white-space:nowrap; overflow:hidden; }
|
245
271
|
|
246
272
|
.ui_toplist .toplist_item .trend{ float:right; line-height:42px; margin-right:30px; font-size:18px; font-weight:bold; color:#333; width:70px; white-space:nowrap; }
|
247
273
|
|
@@ -352,7 +378,7 @@ text-shadow: 1px 0px 2px rgba(255, 255, 255, 1);
|
|
352
378
|
.number .value{ color:#444; font-size:20px; display:block; margin-bottom:5px; font-weight:bold; }
|
353
379
|
.number .desc{ color:#999; font-size:12px; margin-bottom:5px; display:block; white-space:nowrap; }
|
354
380
|
.number:last-child{ border-right:none; }
|
355
|
-
.numbers_container{ padding-right:0px; width:215px; float:left; margin:15px 0 -1px 20px; padding-bottom:5px;
|
381
|
+
.numbers_container{ padding-right:0px; width:215px; float:left; margin:15px 0 -1px 20px; padding-bottom:5px; }
|
356
382
|
|
357
383
|
.numbers_container.size_3{ width:258px; }
|
358
384
|
.numbers_container.size_4{ width:358px; }
|
@@ -444,7 +470,7 @@ ul.ui_tabs li.active a{
|
|
444
470
|
border: 1px solid #D0D0D0;
|
445
471
|
border-bottom:none;
|
446
472
|
color:#333;
|
447
|
-
background
|
473
|
+
background-color: #F4F4F4;
|
448
474
|
}
|
449
475
|
|
450
476
|
.gauge_viewport{ margin-top:30px; }
|
@@ -467,56 +493,6 @@ h1.head{ margin-top:70px; }
|
|
467
493
|
.gauge_viewport{ margin-top:30px; }
|
468
494
|
|
469
495
|
|
470
|
-
.rickshaw_graph .y_ticks path { stroke:#fff; }
|
471
|
-
.rickshaw_graph .y_grid .tick { stroke:rgba(0,0,0,.1); }
|
472
|
-
|
473
|
-
.rickshaw_graph .x_tick {
|
474
|
-
border-left: none;
|
475
|
-
}
|
476
|
-
|
477
|
-
.rickshaw_graph .x_tick.glow .title, .rickshaw_graph .y_ticks.glow text{
|
478
|
-
font-size:14px;
|
479
|
-
}
|
480
|
-
|
481
|
-
.rickshaw_legend {
|
482
|
-
font-family: "Gotham Narrow", Helvetica, sans-serif;
|
483
|
-
font-size: 12px;
|
484
|
-
color: #333;
|
485
|
-
background: none;
|
486
|
-
display: inline-block;
|
487
|
-
padding: 12px 5px;
|
488
|
-
border-radius: 2px;
|
489
|
-
position: relative;
|
490
|
-
}
|
491
|
-
|
492
|
-
.rickshaw_legend .ui-sortable {
|
493
|
-
margin-left:-10px;
|
494
|
-
}
|
495
|
-
|
496
|
-
.rickshaw_legend li.line{
|
497
|
-
float:left;
|
498
|
-
clear:none;
|
499
|
-
padding-right:0;
|
500
|
-
}
|
501
|
-
|
502
|
-
.rickshaw_legend a.action{
|
503
|
-
margin-right:5px;
|
504
|
-
display:none;
|
505
|
-
}
|
506
|
-
|
507
|
-
|
508
|
-
.rickshaw_legend li.line .label{
|
509
|
-
font.size:14px;
|
510
|
-
margin-left:5px;
|
511
|
-
color:#333;
|
512
|
-
position:relative;
|
513
|
-
top:-1px;
|
514
|
-
}
|
515
|
-
|
516
|
-
|
517
|
-
.rickshaw_graph .y_grid .tick { stroke:rgba(0,0,0,.15); stroke-dasharray:0; }
|
518
|
-
.rickshaw_graph .y_ticks text { fill:#333333; }
|
519
|
-
|
520
496
|
.modal_backdrop {
|
521
497
|
background-color: #000000;
|
522
498
|
position: fixed;
|
@@ -589,7 +565,7 @@ position: relative;
|
|
589
565
|
#sidebar ul li{ height:28px; line-height:28px; cursor:pointer; font-size:13px; padding-left:25px; }
|
590
566
|
#sidebar ul li a{ color:#ccc; text-decoration:none; }
|
591
567
|
/*#sidebar ul li:after{ content:'›'; display:block; float:right; margin-right:15px; color:#ccc; font-size:16px; line-height:27px; }*/
|
592
|
-
#sidebar ul li i{ margin-right:
|
568
|
+
#sidebar ul li i{ margin-right: 1px; color: #AAA; font-size: 11px; position: relative; left: -2px; top: -1px; display:none; }
|
593
569
|
#sidebar ul li:hover, #tabs ul li:hover:after{ color:#fff; }
|
594
570
|
#sidebar ul li:hover .picto{ opacity:1; }
|
595
571
|
#sidebar ul li.active i, #sidebar ul li.active a{ color:#eee; }
|
@@ -803,3 +779,90 @@ input.input.lopen{
|
|
803
779
|
.widget_histogram_bars rect:hover {
|
804
780
|
opacity: 0.9;
|
805
781
|
}
|
782
|
+
|
783
|
+
.ge_controlpanel {
|
784
|
+
height:85px;
|
785
|
+
padding:20px;
|
786
|
+
float:left;
|
787
|
+
border-right:1px solid #efefef;
|
788
|
+
margin-top:45px;
|
789
|
+
}
|
790
|
+
|
791
|
+
.ge_controlpanel label{
|
792
|
+
font-weight:bold;
|
793
|
+
display:block;
|
794
|
+
margin-bottom:5px;
|
795
|
+
}
|
796
|
+
|
797
|
+
.ui-autocomplete.ui-menu{
|
798
|
+
background:#fff;
|
799
|
+
border: 1px solid #bbb;
|
800
|
+
border-radius:3px;
|
801
|
+
box-shadow: 2px 0 4px rgba(0,0,0,.2);
|
802
|
+
float:left;
|
803
|
+
padding:0 0 0 0;
|
804
|
+
}
|
805
|
+
|
806
|
+
.ui-autocomplete.ui-menu li {
|
807
|
+
list-style-type:none;
|
808
|
+
line-height:30px;
|
809
|
+
font-size:110%;
|
810
|
+
padding-left:10px;
|
811
|
+
border-top:1px solid #fff;
|
812
|
+
border-bottom:1px solid #efefef;
|
813
|
+
}
|
814
|
+
|
815
|
+
.ui-autocomplete.ui-menu li:hover {
|
816
|
+
color:#fff;
|
817
|
+
cursor:pointer;
|
818
|
+
|
819
|
+
background: #7bb2ff; /* Old browsers */
|
820
|
+
background: -moz-linear-gradient(top, #7bb2ff 0%, #609ff8 44%, #4089ee 100%);
|
821
|
+
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#7bb2ff), color-stop(44%,#609ff8), color-stop(100%,#4089ee)); /* Chrome,Safari4+ */
|
822
|
+
background: -webkit-linear-gradient(top, #7bb2ff 0%,#609ff8 44%,#4089ee 100%);
|
823
|
+
background: -o-linear-gradient(top, #7bb2ff 0%,#609ff8 44%,#4089ee 100%);
|
824
|
+
background: -ms-linear-gradient(top, #7bb2ff 0%,#609ff8 44%,#4089ee 100%);
|
825
|
+
background: linear-gradient(top, #7bb2ff 0%,#609ff8 44%,#4089ee 100%);
|
826
|
+
|
827
|
+
border-top:1px solid #5F94DE;
|
828
|
+
border-bottom:1px solid #4E7DBF;
|
829
|
+
}
|
830
|
+
|
831
|
+
.ge_controlpanel .ui-helper-hidden-accessible {
|
832
|
+
display: none;
|
833
|
+
}
|
834
|
+
|
835
|
+
.ge_controlpanel .ui-combobox-input {
|
836
|
+
height:35px;
|
837
|
+
line-height:35px;
|
838
|
+
padding: 0 10px;
|
839
|
+
width:400px;
|
840
|
+
border-radius:3px;
|
841
|
+
border: 1px solid #979797;
|
842
|
+
box-shadow: 0 0 2px #ddd inset;
|
843
|
+
}
|
844
|
+
|
845
|
+
.ge_meta {
|
846
|
+
height:35px;
|
847
|
+
line-height:37px;
|
848
|
+
color:#999;
|
849
|
+
}
|
850
|
+
|
851
|
+
.ge_meta a {
|
852
|
+
margin-left: 10px;
|
853
|
+
font-size:110%;
|
854
|
+
color:#06c;
|
855
|
+
text-decoration:none;
|
856
|
+
}
|
857
|
+
|
858
|
+
.ge_meta a:hover {
|
859
|
+
text-decoration:underline;
|
860
|
+
}
|
861
|
+
|
862
|
+
.ge_empty {
|
863
|
+
display: block;
|
864
|
+
text-align: center;
|
865
|
+
line-height: 400px;
|
866
|
+
font-size: 16px;
|
867
|
+
color: #666;
|
868
|
+
}
|
data/web/haml/app.haml
CHANGED
@@ -3,28 +3,10 @@
|
|
3
3
|
%head
|
4
4
|
%title FnordMetric
|
5
5
|
%script{:src => "/vendor/jquery-1.6.2.min.js", :type => "text/javascript"}
|
6
|
-
%script{:src => "/
|
7
|
-
%
|
8
|
-
%script{:src => "/
|
9
|
-
%
|
10
|
-
%script{:src => "/js/fnordmetric.js", :type => "text/javascript"}
|
11
|
-
%script{:src => "/js/fnordmetric.util.js", :type => "text/javascript"}
|
12
|
-
%script{:src => "/js/fnordmetric.ui.js", :type => "text/javascript"}
|
13
|
-
%script{:src => "/js/fnordmetric.timeline_widget.js", :type => "text/javascript"}
|
14
|
-
%script{:src => "/js/fnordmetric.numbers_widget.js", :type => "text/javascript"}
|
15
|
-
%script{:src => "/js/fnordmetric.bars_widget.js", :type => "text/javascript"}
|
16
|
-
%script{:src => "/js/fnordmetric.pie_widget.js", :type => "text/javascript"}
|
17
|
-
%script{:src => "/js/fnordmetric.toplist_widget.js", :type => "text/javascript"}
|
18
|
-
%script{:src => "/js/fnordmetric.html_widget.js", :type => "text/javascript"}
|
19
|
-
%script{:src => "/js/fnordmetric.realtime_timeline_widget.js", :type => "text/javascript"}
|
20
|
-
%script{:src => "/js/fnordmetric.timeseries_widget.js", :type => "text/javascript"}
|
21
|
-
%script{:src => "/js/fnordmetric.overview_view.js", :type => "text/javascript"}
|
22
|
-
%script{:src => "/js/fnordmetric.gauge_view.js", :type => "text/javascript"}
|
23
|
-
%script{:src => "/js/fnordmetric.dashboard_view.js", :type => "text/javascript"}
|
24
|
-
%script{:src => "/js/fnordmetric.session_view.js", :type => "text/javascript"}
|
25
|
-
%link{:href => "/vendor/rickshaw.css", :rel => "stylesheet", :type => "text/css"}
|
26
|
-
%link{:href => "/vendor/font-awesome/css/font-awesome.css", :rel => "stylesheet", :type => "text/css"}
|
27
|
-
%link{:href => "/fnordmetric.css", :rel => "stylesheet", :type => "text/css"}
|
6
|
+
%script{:src => "/fnordmetric-ui.js", :type => "text/javascript"}
|
7
|
+
%link{:href => "/fnordmetric-ui.css", :rel => "stylesheet", :type => "text/css"}
|
8
|
+
%script{:src => "/fnordmetric-core.js", :type => "text/javascript"}
|
9
|
+
%link{:href => "/fnordmetric-core.css", :rel => "stylesheet", :type => "text/css"}
|
28
10
|
|
29
11
|
%body
|
30
12
|
#app.clearfix(style="overflow:hidden;")
|
File without changes
|
@@ -98,9 +98,9 @@ FnordMetric.widgets.barsWidget = function(){
|
|
98
98
|
});
|
99
99
|
}
|
100
100
|
|
101
|
-
graph = new
|
101
|
+
graph = new FnordMetric.rickshaw.Graph(gconfig);
|
102
102
|
|
103
|
-
new
|
103
|
+
new FnordMetric.rickshaw.Graph.Axis.Y({
|
104
104
|
graph: graph,
|
105
105
|
}).render();
|
106
106
|
|
@@ -111,7 +111,7 @@ FnordMetric.widgets.barsWidget = function(){
|
|
111
111
|
|
112
112
|
function announce(evt){
|
113
113
|
if(evt.widget_key == opts.widget_key){
|
114
|
-
if((evt.
|
114
|
+
if((evt.type == "widget_response") && (evt.cmd == "values_for")){
|
115
115
|
running_request = false;
|
116
116
|
$(opts.elem).css('opacity', 1);
|
117
117
|
values = evt.values;
|