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.
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;