riemann-dash 0.2.1 → 0.2.3

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 (49) hide show
  1. data/.gitignore +9 -0
  2. data/Gemfile +7 -0
  3. data/Gemfile.lock +52 -0
  4. data/README.markdown +29 -5
  5. data/Rakefile.rb +11 -0
  6. data/bin/riemann-dash +2 -2
  7. data/example/config.rb +17 -0
  8. data/lib/riemann/dash/app.rb +32 -0
  9. data/lib/riemann/dash/config.rb +154 -0
  10. data/lib/riemann/dash/controller/css.rb +1 -1
  11. data/lib/riemann/dash/controller/index.rb +6 -36
  12. data/lib/riemann/dash/public/dash.js +44 -18
  13. data/lib/riemann/dash/public/format.js +3 -3
  14. data/lib/riemann/dash/public/persistence.js +2 -2
  15. data/lib/riemann/dash/public/subs.js +63 -48
  16. data/lib/riemann/dash/public/util.js +37 -44
  17. data/lib/riemann/dash/public/vendor/backbone.js +1571 -0
  18. data/lib/riemann/dash/public/vendor/jquery/jquery-1.9.1.min.js +5 -0
  19. data/lib/riemann/dash/public/{jquery-ui-1.9.0.custom.min.js → vendor/jquery/jquery-ui-1.9.0.custom.min.js} +0 -0
  20. data/lib/riemann/dash/public/{jquery.quickfit.js → vendor/jquery/jquery.quickfit.js} +0 -0
  21. data/lib/riemann/dash/public/vendor/jquery/jquery.simplemodal.1.4.4.min.js +26 -0
  22. data/lib/riemann/dash/public/vendor/lodash.min.js +40 -0
  23. data/lib/riemann/dash/public/vendor/smoothie.js +376 -0
  24. data/lib/riemann/dash/public/{toastr.css → vendor/toastr/toastr.css} +1 -1
  25. data/lib/riemann/dash/public/{toastr.js → vendor/toastr/toastr.js} +0 -0
  26. data/lib/riemann/dash/public/views/gauge.js +8 -5
  27. data/lib/riemann/dash/public/views/grid.js +138 -67
  28. data/lib/riemann/dash/public/views/timeseries.js +230 -0
  29. data/lib/riemann/dash/public/views/title.js +6 -3
  30. data/lib/riemann/dash/version.rb +2 -2
  31. data/lib/riemann/dash/views/css.scss +52 -2
  32. data/lib/riemann/dash/views/index.erubis +38 -192
  33. data/lib/riemann/dash.rb +3 -97
  34. data/riemann-dash.gemspec +28 -0
  35. data/sh/c +1 -0
  36. data/sh/env.rb +2 -0
  37. data/sh/test +1 -0
  38. data/test/config_test.rb +114 -0
  39. data/test/fixtures/config/basic_config.rb +2 -0
  40. data/test/fixtures/config/ws_config.rb +1 -0
  41. data/test/fixtures/ws_config/dummy_config.json +1 -0
  42. data/test/fixtures/ws_config/pretty_printed_config.json +6 -0
  43. data/test/test_helper.rb +10 -0
  44. metadata +43 -18
  45. data/lib/riemann/dash/public/jquery-1.7.2.min.js +0 -4
  46. data/lib/riemann/dash/public/jquery.json-2.2.min.js +0 -31
  47. data/lib/riemann/dash/public/jquery.simplemodal.1.4.3.min.js +0 -26
  48. data/lib/riemann/dash/public/mustache.js +0 -597
  49. data/lib/riemann/dash/public/underscore-min.js +0 -5
@@ -1,202 +1,48 @@
1
- <!doctype html>
2
- <html>
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
3
  <head>
4
4
  <meta charset="UTF-8" />
5
- <title>Riemann</title>
6
- <link rel="stylesheet" href="/css" type="text/css" />
7
- <link rel="stylesheet" href="/toastr.css" type="text/css" />
5
+ <title>riemann</title>
6
+ <link rel="stylesheet" type="text/css" href="/vendor/toastr/toastr.css" />
7
+ <link rel="stylesheet" type="text/css" href="/css" />
8
8
  </head>
9
9
  <body>
10
10
  <div id="toolbar"></div>
11
11
  <div id="view"></div>
12
12
 
13
- <script type="text/javascript" src="/underscore-min.js"></script>
14
- <script type="text/javascript" src="/jquery-1.7.2.min.js"></script>
15
- <script type="text/javascript" src="/jquery-ui-1.9.0.custom.min.js"></script>
16
- <script type="text/javascript" src="/jquery.json-2.2.min.js"></script>
17
- <script type="text/javascript" src="/jquery.simplemodal.1.4.3.min.js"></script>
18
- <script type="text/javascript" src="/toastr.js"></script>
19
- <script type="text/javascript" src="/jquery.quickfit.js"></script>
20
- <script type="text/javascript" src="/util.js"></script>
21
- <script type="text/javascript" src="/mustache.js"></script>
22
- <script src="http://d3js.org/d3.v2.js"></script>
23
- <script type="text/javascript" src="/profile.js"></script>
24
- <script type="text/javascript" src="/clock.js"></script>
25
- <script type="text/javascript" src="/persistence.js"></script>
26
- <script type="text/javascript" src="/keys.js"></script>
27
- <script type="text/javascript" src="/subs.js"></script>
28
- <script type="text/javascript" src="/format.js"></script>
29
- <script type="text/javascript" src="/toolbar.js"></script>
30
- <script type="text/javascript" src="/view.js"></script>
31
- <script type="text/javascript" src="/views/title.js"></script>
32
- <script type="text/javascript" src="/views/help.js"></script>
33
- <script type="text/javascript" src="/views/gauge.js"></script>
34
- <script type="text/javascript" src="/views/grid.js"></script>
35
- <script type="text/javascript" src="/dash.js"></script>
36
-
37
- <script type="text/javascript">
38
- function logTable(container, query) {
39
- var $container = $(container);
40
- $container.addClass("log-table");
41
- $container.append('<input type="text" class="query"></input>');
42
- var prompt = $container.find('input');
43
- $container.append('<div class="scroll"><table><thead><tr>' +
44
- '<th>host</th>' +
45
- '<th>service</th>' +
46
- '<th>state</th>' +
47
- '<th>metric</th>' +
48
- '<th>description</th>' +
49
- '</tr></thead><tbody></tbody></table></div>');
50
- var scroll = $container.find('.scroll');
51
- var log = $container.find('tbody');
52
- var sub = null;
53
- var tracking = true;
54
-
55
- var template = "<tr><td>{{host}}</td><td>{{service}}</td><td>{{state}}</td><td>{{{metric}}}</td><td>{{description}}</td></tr>";
56
-
57
- // Are we following the bottom of the log?
58
- scroll.scroll(function(e) {
59
- if (scroll.scrollTop() > (log.height() - scroll.height())) {
60
- tracking = true;
61
- } else {
62
- tracking = false;
63
- }
64
- });
65
-
66
- var scrollToBottom = function() {
67
- scroll.stop().animate({
68
- scrollTop: (log.height() - scroll.height() + 20)
69
- }, 1000, "swing");
70
- }
71
-
72
- var atBottom = function() {
73
- console.log(scroll.scrollTop());
74
- console.log(log.height() - scroll.height());
75
- return (scroll.scrollTop() > (log.height() - scroll.height()));
76
- }
77
-
78
- // Add an event
79
- var append = function(e) {
80
- $.extend(e, {
81
- metric: format.metric(e)
82
- });
83
- log.append(Mustache.render(template, e));
84
- if (tracking) { scrollToBottom() };
85
- }
86
-
87
- // Set up our query
88
- var startQuery = function(query) {
89
- // Cancel existing sub
90
- if (sub != null) { sub.close(); }
91
-
92
- // Subscribe
93
- sub = subs.subscribe(query, function(e) {
94
- e.time = d3.time.format.iso.parse(e.time);
95
- clock.advance(e.time);
96
- append(e);
97
- });
98
- }
99
-
100
- // Initial subscription
101
- if (query) { prompt[0].value = query; startQuery(query); }
102
-
103
- // Prompt entry
104
- prompt.change(function() { startQuery(this.value) });
105
- }
106
-
107
-
108
- function timeSeries(container) {
109
- // Container
110
- var $container = $(container);
111
- var container = d3.select(container);
112
- $container.append('<input type=\"text\" style="display: block"></input>');
113
- var prompt = $container.children().last();
114
-
115
- // Data structures
116
- var data = [];
117
- var n = 60;
118
- var sub = null;
119
-
120
- // Scale
121
- var w = 20;
122
- var h = 80;
123
-
124
- var x = d3.time.scale()
125
- .domain([0,1])
126
- .range([0, w * n]);
127
- var y = d3.scale.linear()
128
- .domain([0,100])
129
- .rangeRound([0,h]);
130
-
131
- var updateTime = function(max) {
132
- var min = d3.time.minute.offset(max, -1);
133
- x.domain([min, max]);
134
- }
135
- updateTime(new Date());
136
-
137
- // Chart itself
138
- var chart = container.append("svg")
139
- .attr("class", "timeSeries")
140
- .attr("width", w * (n - 1))
141
- .attr("height", h);
142
-
143
- // Baseline
144
- chart.append("line")
145
- .attr("x1", 0)
146
- .attr("x2", w * n)
147
- .attr("y1", h - .5)
148
- .attr("y2", h - .5)
149
- .style("stroke", "#000");
150
-
151
- // Subscribe
152
- prompt.change(function() {
153
- if (sub != null) { sub.close(); }
154
-
155
- sub = subscribe(this.value, function(e) {
156
- // Move time
157
- e.time = d3.time.format.iso.parse(e.time);
158
- clock.advance(e.time);
159
-
160
- // Append to window
161
- if (data.length >= n) {
162
- data.shift();
163
- }
164
- data.push(e);
165
-
166
- console.log(e.time, "maps to", x(e.time), "in", x.domain(), x.range());
167
- });
168
- });
169
-
170
- var clockSub = clock.register(function(t) {
171
- updateTime(t);
172
-
173
- // Move events
174
- var rect = chart.selectAll("rect")
175
- .data(data, function(e) { if (e) { return e.time } });
176
-
177
- rect.enter().insert("rect", "line")
178
- .attr("x", function(e, i) {
179
- return x(e.time) - .5; })
180
- .attr("y", function(e) { return h - y(e.metric) - .5 })
181
- .attr("width", w)
182
- .attr("height", function(e) { return y(e.metric); })
183
- .transition()
184
- .duration(1000)
185
- .attr("x", function(e, i) { return x(e.time) - .5 });
186
-
187
- rect.transition()
188
- .duration(1000)
189
- .attr("x", function(e) { return x(e.time) - .5; });
190
-
191
- rect.exit().transition()
192
- .duration(1000)
193
- .attr("x", function(e) { return x(e.time) - .5 })
194
- .remove();
195
- });
196
-
197
- }
198
-
199
- dash.reload();
13
+ <!-- begin third party dependencies -->
14
+ <script src="/vendor/smoothie.js"></script>
15
+ <script src="/vendor/lodash.min.js"></script>
16
+ <script src="/vendor/jquery/jquery-1.9.1.min.js"></script>
17
+ <script src="/vendor/backbone.js"></script>
18
+ <script src="/vendor/jquery/jquery-ui-1.9.0.custom.min.js"></script>
19
+ <script src="/vendor/jquery/jquery.simplemodal.1.4.4.min.js"></script>
20
+ <script src="/vendor/jquery/jquery.quickfit.js"></script>
21
+ <script src="/vendor/toastr/toastr.js"></script>
22
+ <script> // turn underscore templates into mustache style templates
23
+ _.templateSettings = {
24
+ evaluate : /\{\%([\s\S]+?)\%\}/g, // {% eval(js); %}
25
+ interpolate : /\{\{([\s\S]+?)\}\}/g // {{ interpolate }}
26
+ };
200
27
  </script>
28
+ <!-- end third party deps -->
29
+
30
+ <script src="/util.js"></script>
31
+ <script src="/format.js"></script>
32
+ <script src="/profile.js"></script>
33
+ <script src="/clock.js"></script>
34
+ <script src="/persistence.js"></script>
35
+ <script src="/keys.js"></script>
36
+ <script src="/subs.js"></script>
37
+ <script src="/toolbar.js"></script>
38
+ <script src="/view.js"></script>
39
+ <script src="/views/timeseries.js"></script>
40
+ <script src="/views/title.js"></script>
41
+ <script src="/views/help.js"></script>
42
+ <script src="/views/gauge.js"></script>
43
+ <script src="/views/grid.js"></script>
44
+ <script src="/dash.js"></script>
45
+
46
+ <script>dash.reload()</script>
201
47
  </body>
202
48
  </html>
data/lib/riemann/dash.rb CHANGED
@@ -1,99 +1,5 @@
1
1
  require 'rubygems'
2
2
  require 'sinatra/base'
3
-
4
- module Riemann
5
- class Dash < Sinatra::Base
6
- # A little dashboard sinatra application.
7
-
8
- require 'yaml'
9
- require 'find'
10
- require 'erubis'
11
- require 'sass'
12
-
13
- def self.config
14
- @config ||= {
15
- :controllers => [File.join(File.dirname(__FILE__), 'dash', 'controller')],
16
- :views => File.join(File.dirname(__FILE__), 'dash', 'views')
17
- }
18
- end
19
-
20
- def self.load(filename)
21
- unless load_config(filename || 'config.rb')
22
- # Configuration failed; load a default view.
23
- puts "No configuration loaded; using defaults."
24
- end
25
-
26
- config[:controllers].each { |d| load_controllers d }
27
- set :views, File.expand_path(config[:views])
28
-
29
- # Fallback pub dir
30
- public_dir(File.join(File.dirname(__FILE__), 'dash', 'public'))
31
- end
32
-
33
- # Executes the configuration file.
34
- def self.load_config(filename)
35
- begin
36
- instance_eval File.read(filename)
37
- true
38
- rescue Errno::ENOENT
39
- false
40
- end
41
- end
42
-
43
- # Load controllers.
44
- # Controllers can be regular old one-file-per-class, but
45
- # if you prefer a little more modularity, this method will allow you to
46
- # define all controller methods in their own files. For example, get
47
- # "/posts/*/edit" can live in controller/posts/_/edit.rb. The sorting
48
- # system provided here requires files in the correct order to handle
49
- # wildcards appropriately.
50
- def self.load_controllers(dir)
51
- rbs = []
52
- Find.find(
53
- File.expand_path(dir)
54
- ) do |path|
55
- rbs << path if path =~ /\.rb$/
56
- end
57
-
58
- # Sort paths with _ last, becase those are wildcards.
59
- rbs.sort! do |a, b|
60
- as = a.split File::SEPARATOR
61
- bs = b.split File::SEPARATOR
62
-
63
- # Compare common subpaths
64
- l = [as.size, bs.size].min
65
- catch :x do
66
- (0...l).each do |i|
67
- a, b = as[i], bs[i]
68
- if a[/^_/] and not b[/^_/]
69
- throw :x, 1
70
- elsif b[/^_/] and not a[/^_/]
71
- throw :x, -1
72
- elsif ord = (a <=> b) and ord != 0
73
- throw :x, ord
74
- end
75
- end
76
-
77
- # All subpaths are identical; sort longest first
78
- if as.size > bs.size
79
- throw :x, -1
80
- elsif as.size < bs.size
81
- throw :x, -1
82
- else
83
- throw :x, 0
84
- end
85
- end
86
- end
87
-
88
- rbs.each do |r|
89
- require r
90
- end
91
- end
92
-
93
- # Add an additional public directory.
94
- def self.public_dir(dir)
95
- require 'riemann/dash/rack/static'
96
- use Riemann::Dash::Static, :root => dir
97
- end
98
- end
99
- end
3
+ require 'riemann/dash/version'
4
+ require 'riemann/dash/config'
5
+ require 'riemann/dash/app'
@@ -0,0 +1,28 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'riemann/dash/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.rubyforge_project = 'riemann-dash'
8
+
9
+ gem.name = "riemann-dash"
10
+ gem.version = Riemann::Dash::VERSION
11
+ gem.authors = ["Kyle Kingsbury"]
12
+ gem.email = ['aphyr@aphyr.com']
13
+ gem.description = %q{HTTP dashboard for the distributed event system Riemann.}
14
+ gem.summary = gem.description
15
+ gem.homepage = 'https://github.com/aphyr/riemann-dash'
16
+ gem.platform = Gem::Platform::RUBY
17
+
18
+ gem.add_dependency 'riemann-client', '>= 0.0.7'
19
+ gem.add_dependency 'erubis', '>= 2.7.0'
20
+ gem.add_dependency 'sinatra', '>= 1.3.2'
21
+ gem.add_dependency 'sass', '>= 3.1.14'
22
+ gem.add_dependency 'thin', '>= 1.3.1'
23
+ gem.add_dependency 'multi_json', '1.3.6'
24
+ gem.files = `git ls-files`.split($/)
25
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
26
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
27
+ gem.require_paths = ["lib"]
28
+ end
data/sh/c ADDED
@@ -0,0 +1 @@
1
+ irb -r ./sh/env.rb
data/sh/env.rb ADDED
@@ -0,0 +1,2 @@
1
+ $LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib')))
2
+ require 'riemann/dash'
data/sh/test ADDED
@@ -0,0 +1 @@
1
+ rake
@@ -0,0 +1,114 @@
1
+ require './test/test_helper'
2
+
3
+
4
+ describe "Riemann::Dash::Config" do
5
+ before do
6
+ @config = Riemann::Dash::Config.instance
7
+ end
8
+
9
+ after do
10
+ Riemann::Dash::Config.reset!
11
+ end
12
+
13
+ it "is loaded" do
14
+ @config.wont_be_nil
15
+ end
16
+
17
+ describe :load_config do
18
+ it "will apply configs from specified file to sinatra app" do
19
+ @config.load_config("test/fixtures/config/basic_config.rb")
20
+ Riemann::Dash::App.settings.settings_loaded.must_equal "yes"
21
+ end
22
+
23
+ it "will apply settings from file to self" do
24
+ @config.store[:views].wont_equal "/some/path/to/views"
25
+ @config.load_config("test/fixtures/config/basic_config.rb")
26
+ @config.store[:views].must_equal "/some/path/to/views"
27
+ end
28
+ end
29
+
30
+ describe :setup_default_values do
31
+ it "has controllers path" do
32
+ @config.store[:controllers].first.must_match %r{/lib/riemann/dash/controller}
33
+ @config.store[:controllers].class.must_equal Array
34
+ end
35
+
36
+ it "has view path" do
37
+ @config.store[:views].must_match %r{/lib/riemann/dash/view}
38
+ end
39
+
40
+ it "has public path" do
41
+ @config.store[:public].must_match %r{/lib/riemann/dash/public}
42
+ end
43
+
44
+ it "has workspace config" do
45
+ @config.store[:ws_config].must_match %r{/config/config.json}
46
+ end
47
+
48
+ end
49
+
50
+ describe "applying to sinatra app" do
51
+ describe :load_controllers do
52
+
53
+ end
54
+
55
+ describe :setup_views do
56
+
57
+ end
58
+
59
+
60
+ describe :setup_public_dir do
61
+
62
+ end
63
+ end
64
+
65
+ describe "workspace config" do
66
+ before do
67
+ FileUtils.rm_rf "test/tmp/"
68
+ end
69
+
70
+
71
+ describe :read_ws_config do
72
+ =begin
73
+ # this test fails if the config living at config/config.json has
74
+ # been overwritten with user content -- this happens for people
75
+ # who had previously run their riemann-dash instance via simply
76
+ # cd riemann-dash && bin/riemann-dash -- it would also fail once
77
+ # you save your config in the default location
78
+ it "retuns hash for empty configs" do
79
+ @config.read_ws_config.must_equal "{}"
80
+ end
81
+ =end
82
+
83
+ it "reads the file, if present" do
84
+ @config.load_config("test/fixtures/config/ws_config.rb").must_equal true
85
+ @config.store[:ws_config].must_equal "test/fixtures/ws_config/dummy_config.json"
86
+ @config.read_ws_config.must_equal %Q{{hey: \"ho\"}}
87
+ end
88
+ end
89
+
90
+ describe :update_ws_config do
91
+ it "works" do
92
+ @config.store[:ws_config] = "test/tmp/config.json"
93
+ @config.update_ws_config("{\"server\":\"10.10.10.10\",\"workspaces\":[]}")
94
+ end
95
+
96
+ it "pretty-prints the config" do
97
+ @config.store[:ws_config] = "test/tmp/config.json"
98
+ @config.update_ws_config("{\"server\":\"10.10.10.10\",\"workspaces\":[]}")
99
+ File.read("test/tmp/config.json").must_equal File.read("test/fixtures/ws_config/pretty_printed_config.json")
100
+ end
101
+ end
102
+ end
103
+
104
+ describe "backwards compatible :[] and :[]= forwarders to `store` variable" do
105
+ it "reading works" do
106
+ @config[:ws_config].must_match %r{config/config.json}
107
+ end
108
+
109
+ it "writing works" do
110
+ @config[:ws_config] = "something"
111
+ @config[:ws_config].must_match %r{something}
112
+ end
113
+ end
114
+ end
@@ -0,0 +1,2 @@
1
+ set :settings_loaded, "yes"
2
+ config.store[:views] = "/some/path/to/views"
@@ -0,0 +1 @@
1
+ config.store[:ws_config] = "test/fixtures/ws_config/dummy_config.json"
@@ -0,0 +1 @@
1
+ {hey: "ho"}
@@ -0,0 +1,6 @@
1
+ {
2
+ "server": "10.10.10.10",
3
+ "workspaces": [
4
+
5
+ ]
6
+ }
@@ -0,0 +1,10 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ Bundler.setup(:default, :test)
4
+
5
+ require 'minitest/autorun'
6
+ require 'minitest/spec'
7
+ #require "mocha/setup"
8
+
9
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
10
+ require 'riemann/dash'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riemann-dash
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-19 00:00:00.000000000 Z
12
+ date: 2013-04-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: riemann-client
@@ -107,38 +107,50 @@ dependencies:
107
107
  - - '='
108
108
  - !ruby/object:Gem::Version
109
109
  version: 1.3.6
110
- description:
111
- email: aphyr@aphyr.com
110
+ description: HTTP dashboard for the distributed event system Riemann.
111
+ email:
112
+ - aphyr@aphyr.com
112
113
  executables:
113
114
  - riemann-dash
114
115
  extensions: []
115
116
  extra_rdoc_files: []
116
117
  files:
118
+ - .gitignore
119
+ - Gemfile
120
+ - Gemfile.lock
121
+ - LICENSE
122
+ - README.markdown
123
+ - Rakefile.rb
124
+ - bin/riemann-dash
125
+ - example/config.rb
117
126
  - lib/riemann/dash.rb
127
+ - lib/riemann/dash/app.rb
128
+ - lib/riemann/dash/config.rb
118
129
  - lib/riemann/dash/controller/css.rb
119
130
  - lib/riemann/dash/controller/index.rb
120
131
  - lib/riemann/dash/public/clock.js
121
132
  - lib/riemann/dash/public/dash.js
122
133
  - lib/riemann/dash/public/format.js
123
- - lib/riemann/dash/public/jquery-1.7.2.min.js
124
- - lib/riemann/dash/public/jquery-ui-1.9.0.custom.min.js
125
- - lib/riemann/dash/public/jquery.json-2.2.min.js
126
- - lib/riemann/dash/public/jquery.quickfit.js
127
- - lib/riemann/dash/public/jquery.simplemodal.1.4.3.min.js
128
134
  - lib/riemann/dash/public/keys.js
129
- - lib/riemann/dash/public/mustache.js
130
135
  - lib/riemann/dash/public/persistence.js
131
136
  - lib/riemann/dash/public/profile.js
132
137
  - lib/riemann/dash/public/subs.js
133
- - lib/riemann/dash/public/toastr.css
134
- - lib/riemann/dash/public/toastr.js
135
138
  - lib/riemann/dash/public/toolbar.js
136
- - lib/riemann/dash/public/underscore-min.js
137
139
  - lib/riemann/dash/public/util.js
140
+ - lib/riemann/dash/public/vendor/backbone.js
141
+ - lib/riemann/dash/public/vendor/jquery/jquery-1.9.1.min.js
142
+ - lib/riemann/dash/public/vendor/jquery/jquery-ui-1.9.0.custom.min.js
143
+ - lib/riemann/dash/public/vendor/jquery/jquery.quickfit.js
144
+ - lib/riemann/dash/public/vendor/jquery/jquery.simplemodal.1.4.4.min.js
145
+ - lib/riemann/dash/public/vendor/lodash.min.js
146
+ - lib/riemann/dash/public/vendor/smoothie.js
147
+ - lib/riemann/dash/public/vendor/toastr/toastr.css
148
+ - lib/riemann/dash/public/vendor/toastr/toastr.js
138
149
  - lib/riemann/dash/public/view.js
139
150
  - lib/riemann/dash/public/views/gauge.js
140
151
  - lib/riemann/dash/public/views/grid.js
141
152
  - lib/riemann/dash/public/views/help.js
153
+ - lib/riemann/dash/public/views/timeseries.js
142
154
  - lib/riemann/dash/public/views/title.js
143
155
  - lib/riemann/dash/public/x.png
144
156
  - lib/riemann/dash/rack/static.rb
@@ -146,9 +158,16 @@ files:
146
158
  - lib/riemann/dash/views/css.scss
147
159
  - lib/riemann/dash/views/index.erubis
148
160
  - lib/riemann/dash/views/layout.erubis
149
- - bin/riemann-dash
150
- - LICENSE
151
- - README.markdown
161
+ - riemann-dash.gemspec
162
+ - sh/c
163
+ - sh/env.rb
164
+ - sh/test
165
+ - test/config_test.rb
166
+ - test/fixtures/config/basic_config.rb
167
+ - test/fixtures/config/ws_config.rb
168
+ - test/fixtures/ws_config/dummy_config.json
169
+ - test/fixtures/ws_config/pretty_printed_config.json
170
+ - test/test_helper.rb
152
171
  homepage: https://github.com/aphyr/riemann-dash
153
172
  licenses: []
154
173
  post_install_message:
@@ -160,7 +179,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
160
179
  requirements:
161
180
  - - ! '>='
162
181
  - !ruby/object:Gem::Version
163
- version: 1.8.7
182
+ version: '0'
164
183
  required_rubygems_version: !ruby/object:Gem::Requirement
165
184
  none: false
166
185
  requirements:
@@ -173,4 +192,10 @@ rubygems_version: 1.8.25
173
192
  signing_key:
174
193
  specification_version: 3
175
194
  summary: HTTP dashboard for the distributed event system Riemann.
176
- test_files: []
195
+ test_files:
196
+ - test/config_test.rb
197
+ - test/fixtures/config/basic_config.rb
198
+ - test/fixtures/config/ws_config.rb
199
+ - test/fixtures/ws_config/dummy_config.json
200
+ - test/fixtures/ws_config/pretty_printed_config.json
201
+ - test/test_helper.rb