fnordmetric 1.0.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. data/Rakefile +1 -1
  2. data/fnordmetric.gemspec +1 -0
  3. data/lib/fnordmetric.rb +6 -13
  4. data/lib/fnordmetric/acceptors/acceptor.rb +20 -7
  5. data/lib/fnordmetric/acceptors/amqp_acceptor.rb +56 -0
  6. data/lib/fnordmetric/acceptors/fyrehose_acceptor.rb +43 -0
  7. data/lib/fnordmetric/acceptors/stomp_acceptor.rb +71 -0
  8. data/lib/fnordmetric/acceptors/tcp_acceptor.rb +1 -0
  9. data/lib/fnordmetric/acceptors/udp_acceptor.rb +2 -1
  10. data/lib/fnordmetric/context.rb +21 -9
  11. data/lib/fnordmetric/defaults.rb +16 -3
  12. data/lib/fnordmetric/gauge.rb +8 -3
  13. data/lib/fnordmetric/gauge_calculations.rb +8 -2
  14. data/lib/fnordmetric/gauge_modifiers.rb +5 -4
  15. data/lib/fnordmetric/gauges/server_health_gauge.rb +13 -0
  16. data/lib/fnordmetric/namespace.rb +53 -17
  17. data/lib/fnordmetric/util.rb +25 -0
  18. data/lib/fnordmetric/version.rb +1 -1
  19. data/lib/fnordmetric/web/app.rb +7 -66
  20. data/lib/fnordmetric/web/reactor.rb +32 -2
  21. data/lib/fnordmetric/web/websocket.rb +1 -1
  22. data/lib/fnordmetric/widgets/bars_widget.rb +1 -1
  23. data/lib/fnordmetric/widgets/numbers_widget.rb +28 -4
  24. data/lib/fnordmetric/widgets/timeseries_widget.rb +19 -9
  25. data/lib/fnordmetric/widgets/toplist_widget.rb +8 -4
  26. data/lib/fnordmetric/worker.rb +5 -1
  27. data/lib/fnordmetric/zero_config_gauge.rb +138 -0
  28. data/spec/context_spec.rb +4 -4
  29. data/spec/event_spec.rb +11 -11
  30. data/spec/gauge_modifiers_spec.rb +135 -29
  31. data/spec/gauge_spec.rb +7 -2
  32. data/spec/namespace_spec.rb +8 -19
  33. data/spec/util_spec.rb +46 -0
  34. data/web/.gitignore +4 -0
  35. data/web/build.sh +34 -0
  36. data/web/{fnordmetric.css → css/fnordmetric.core.css} +121 -58
  37. data/web/haml/app.haml +4 -22
  38. data/web/{loader.gif → img/loader.gif} +0 -0
  39. data/web/js/fnordmetric.bars_widget.js +3 -3
  40. data/web/js/fnordmetric.dashboard_view.js +1 -1
  41. data/web/js/fnordmetric.gauge_explorer.js +173 -0
  42. data/web/js/fnordmetric.js +93 -33
  43. data/web/js/fnordmetric.numbers_widget.js +15 -14
  44. data/web/js/fnordmetric.session_view.js +0 -1
  45. data/web/js/fnordmetric.timeline_widget.js +3 -3
  46. data/web/js/fnordmetric.timeseries_widget.js +46 -29
  47. data/web/js/fnordmetric.toplist_widget.js +23 -16
  48. data/web/js/fnordmetric.util.js +12 -8
  49. data/web/vendor/font-awesome/css/font-awesome-ie7.min.css +22 -0
  50. data/web/vendor/font-awesome/css/font-awesome.css +522 -221
  51. data/web/vendor/font-awesome/css/font-awesome.min.css +33 -0
  52. data/web/vendor/font-awesome/font/FontAwesome.otf +0 -0
  53. data/web/vendor/font-awesome/font/fontawesome-webfont.eot +0 -0
  54. data/web/vendor/font-awesome/font/fontawesome-webfont.svg +278 -169
  55. data/web/vendor/font-awesome/font/fontawesome-webfont.ttf +0 -0
  56. data/web/vendor/font-awesome/font/fontawesome-webfont.woff +0 -0
  57. data/web/vendor/jquery-ui.min.js +6 -413
  58. data/web/vendor/jquery.combobox.js +129 -0
  59. metadata +55 -48
  60. data/doc/V1.0-ROADMAP +0 -97
  61. data/doc/full_example.rb +0 -224
  62. data/doc/legacy_example.rb +0 -640
  63. data/doc/minimal_example.rb +0 -26
  64. data/doc/preview1.png +0 -0
  65. data/doc/preview2.png +0 -0
  66. data/doc/preview3.png +0 -0
  67. data/readme.md +0 -365
  68. data/web/vendor/d3.v2.js +0 -9382
  69. data/web/vendor/font-awesome/font/fontawesome-webfont.svgz +0 -0
  70. data/web/vendor/rickshaw.css +0 -286
  71. 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 == 3600
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
@@ -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
@@ -0,0 +1,4 @@
1
+ fnordmetric-core.js
2
+ fnordmetric-core.css
3
+ fnordmetric-ui.js
4
+ fnordmetric-ui.css
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:120px; white-space:nowrap; overflow:hidden; }
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; border-bottom:1px solid #dedede; }
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:#f4f4f4;
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: 5px; color: #AAA; font-size: 11px; position: relative; left: -2px; top: -1px; display:none; }
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 => "/vendor/jquery-ui.min.js", :type => "text/javascript"}
7
- %script{:src => "/vendor/jquery.maskedinput.js", :type => "text/javascript"}
8
- %script{:src => "/vendor/d3.v2.js", :type => "text/javascript"}
9
- %script{:src => "/vendor/rickshaw.fnordmetric.js", :type => "text/javascript"}
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 Rickshaw.Graph(gconfig);
101
+ graph = new FnordMetric.rickshaw.Graph(gconfig);
102
102
 
103
- new Rickshaw.Graph.Axis.Y({
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.class == "widget_response") && (evt.cmd == "values_for")){
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;