fnordmetric 1.0.1 → 1.2.0
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/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;
|