visage-app 2.0.5 → 2.1.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/.gitignore +1 -0
- data/AUTHORS +1 -0
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +1 -1
- data/README.md +5 -5
- data/Rakefile +1 -1
- data/features/json.feature +10 -6
- data/features/profiles.feature +4 -9
- data/features/step_definitions/cli_steps.rb +2 -2
- data/features/step_definitions/json_steps.rb +26 -3
- data/features/step_definitions/site_steps.rb +0 -1
- data/lib/visage-app.rb +18 -10
- data/lib/visage-app/collectd/json.rb +124 -24
- data/lib/visage-app/profile.rb +13 -7
- data/lib/visage-app/public/javascripts/builder.js +48 -5
- data/lib/visage-app/public/javascripts/graph.js +144 -9
- data/lib/visage-app/public/javascripts/highcharts-mootools-adapter.js +12 -0
- data/lib/visage-app/public/javascripts/highcharts-mootools-adapter.src.js +298 -0
- data/lib/visage-app/public/javascripts/highcharts.js +198 -131
- data/lib/visage-app/public/javascripts/highcharts.src.js +13543 -8724
- data/lib/visage-app/version.rb +1 -1
- data/lib/visage-app/views/builder.haml +2 -32
- data/lib/visage-app/views/builder_form.haml +7 -0
- data/lib/visage-app/views/layout.haml +1 -0
- data/lib/visage-app/views/profile.haml +14 -24
- data/lib/visage-app/views/profiles.haml +8 -5
- metadata +49 -47
data/lib/visage-app/version.rb
CHANGED
@@ -5,37 +5,7 @@
|
|
5
5
|
new ChartBuilder('chart-builder');
|
6
6
|
});
|
7
7
|
|
8
|
-
|
9
|
-
%div#hosts.builder
|
10
|
-
%h2 Hosts
|
11
|
-
%img{:src => link_to("/images/hosts.png"), :class => "icon hosts"}
|
12
|
-
%div.search
|
13
|
-
|
14
|
-
%div#metrics.builder
|
15
|
-
%h2 Metrics
|
16
|
-
%img{:src => link_to("/images/metrics.png"), :class => "icon metrics"}
|
17
|
-
%div.search
|
18
|
-
|
19
|
-
%input#show{:value => "Show graphs", :type => "button", :class => "button"}
|
20
|
-
|
21
|
-
%div{:style => "text-align: left; margin-left: 24px;"}
|
22
|
-
%strong{:style => "font-family: sans-serif; font-size: 12px;"}
|
23
|
-
Global Time Period:
|
24
|
-
<select id="timescale" class="date timescale" style="margin-bottom: 3px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); "><option value="start=1321692809">last 1 hour</option><option value="start=1321689209">last 2 hours</option><option value="start=1321674809">last 6 hours</option><option value="start=1321653209">last 12 hours</option><option value="start=1321610009">last 1 day</option><option value="start=1321523609">last 2 days</option><option value="start=1321437209">last 3 days</option><option value="start=1321091609">last 1 week</option><option value="start=1320486809">last 2 weeks</option><option value="start=1318910009">last 1 month</option><option value="start=1290160409">last 1 year</option><option value="start=1258624409">last 2 years</option></select>
|
25
|
-
:javascript
|
26
|
-
window.addEvent('domready', function() {
|
27
|
-
var timescale = $('timescale');
|
28
|
-
timescale.addEvent('change', function(e) {
|
29
|
-
e.stop();
|
30
|
-
window.Graphs.each(function(graph) {
|
31
|
-
var selected = timescale.getSelected()[0]
|
32
|
-
|
33
|
-
graph.setTimePeriodTo(selected);
|
34
|
-
});
|
35
|
-
|
36
|
-
});
|
37
|
-
});
|
38
|
-
|
39
|
-
%div#graphs
|
8
|
+
= haml :builder_form
|
40
9
|
|
10
|
+
%div#graphs
|
41
11
|
|
@@ -9,6 +9,13 @@
|
|
9
9
|
%img{:src => link_to("/images/metrics.png"), :class => "icon metrics"}
|
10
10
|
%div.search
|
11
11
|
|
12
|
+
%div#profile-options.builder
|
13
|
+
%h2 Profile Options
|
14
|
+
%div.percentiles
|
15
|
+
/%strong{:style => "font-family: sans-serif; font-size: 12px;"}
|
16
|
+
95th Percentile:
|
17
|
+
|
12
18
|
%input#show{:value => "Show graphs", :type => "button", :class => "button"}
|
13
19
|
|
14
20
|
%div#graph
|
21
|
+
|
@@ -7,6 +7,7 @@
|
|
7
7
|
%link{:rel => 'stylesheet', :href => '/stylesheets/message.css', :type => 'text/css'}
|
8
8
|
%script{:type => "text/javascript", :src => link_to("/javascripts/mootools-core-1.4.0-full-compat.js")}
|
9
9
|
%script{:type => "text/javascript", :src => link_to("/javascripts/mootools-more-1.4.0.1.js")}
|
10
|
+
%script{:type => "text/javascript", :src => link_to("/javascripts/highcharts-mootools-adapter.js")}
|
10
11
|
%script{:type => "text/javascript", :src => link_to("/javascripts/highcharts.js")}
|
11
12
|
%script{:type => "text/javascript", :src => link_to("/javascripts/graph.js")}
|
12
13
|
%script{:type => "text/javascript", :src => link_to("/javascripts/keyboard.js")}
|
@@ -6,11 +6,23 @@
|
|
6
6
|
%div#chart-builder-slider
|
7
7
|
= haml :builder_form
|
8
8
|
|
9
|
+
- if @profile.options[:percentiles]
|
10
|
+
- percentiles = @profile.options[:percentiles]
|
11
|
+
- else
|
12
|
+
- percentiles = []
|
13
|
+
|
14
|
+
- if percentiles.length > 0
|
15
|
+
- percentiles_js = "'#{percentiles.join(',') }'"
|
16
|
+
- else
|
17
|
+
- percentiles_js = ''
|
18
|
+
|
9
19
|
:javascript
|
10
20
|
window.addEvent('domready', function() {
|
11
21
|
var builder = new ChartBuilder('chart-builder', {
|
12
|
-
hosts:
|
13
|
-
metrics:
|
22
|
+
hosts: ['#{@profile.options[:hosts].join("','") }'],
|
23
|
+
metrics: ['#{@profile.options[:metrics].join("','") }'],
|
24
|
+
percentiles: [#{percentiles_js}]
|
25
|
+
|
14
26
|
});
|
15
27
|
|
16
28
|
$('chart-builder-slider').fade('hide').setStyle('height', '0');
|
@@ -25,28 +37,6 @@
|
|
25
37
|
%div#profile
|
26
38
|
%h2#name= profile_name
|
27
39
|
%div#graphs
|
28
|
-
- @profile.graphs.each do |graph|
|
29
|
-
- id = URI.escape(graph.id)
|
30
|
-
- host = URI.escape(graph.host)
|
31
|
-
- plugin = URI.escape(graph.plugin)
|
32
|
-
- instance = URI.escape(graph.instances.join(','))
|
33
|
-
%div{:id => id, :class => 'graph'}
|
34
|
-
%img{:src => link_to("/images/loader.gif")}
|
35
|
-
:javascript
|
36
|
-
window.addEvent('domready', function() {
|
37
|
-
var graph = new VisageGraph('#{id}', '#{host}', '#{plugin}', {
|
38
|
-
pluginInstance: '#{instance}',
|
39
|
-
#{ "baseurl: '" + ENV['BASE_URL'].gsub(/^\//, '') if ENV['BASE_URL'] }
|
40
|
-
});
|
41
|
-
});
|
42
|
-
- if @profile.graphs.size == 0
|
43
|
-
%div.graph
|
44
|
-
%h4.error Oops! Looks like there aren't any graphs matching the specified patterns.
|
45
|
-
%p These are the patterns:
|
46
|
-
%pre
|
47
|
-
:preserve
|
48
|
-
Host: #{@profile.options[:hosts]}
|
49
|
-
Metrics: #{@profile.options[:metrics]}
|
50
40
|
|
51
41
|
%div#bottom_nav
|
52
42
|
%a{:href => link_to("/profiles")} ← Back to profiles
|
@@ -2,11 +2,14 @@
|
|
2
2
|
|
3
3
|
%div#profiles
|
4
4
|
%h2 Profiles
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
5
|
+
/ FIXME - disabling sort links as default is now sorted by profile name
|
6
|
+
/ and there's no ability to sort by created time (until it's saved with
|
7
|
+
/ profiles on creation)
|
8
|
+
/%div#sort
|
9
|
+
/ Sort by:
|
10
|
+
/ %a{:href => link_to("/profiles?sort=name")} name
|
11
|
+
/ |
|
12
|
+
/ %a{:href => link_to("/profiles?sort=created")} created
|
10
13
|
|
11
14
|
%ul#navigation
|
12
15
|
- @profiles.each_with_index do |prof,index|
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 2
|
7
|
+
- 1
|
7
8
|
- 0
|
8
|
-
|
9
|
-
version: 2.0.5
|
9
|
+
version: 2.1.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Lindsay Holmwood
|
@@ -14,14 +14,11 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2012-
|
17
|
+
date: 2012-04-20 00:00:00 +10:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
|
-
|
22
|
-
name: haml
|
23
|
-
type: :runtime
|
24
|
-
version_requirements: &id001 !ruby/object:Gem::Requirement
|
21
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
22
|
requirements:
|
26
23
|
- - "="
|
27
24
|
- !ruby/object:Gem::Version
|
@@ -30,12 +27,12 @@ dependencies:
|
|
30
27
|
- 1
|
31
28
|
- 4
|
32
29
|
version: 3.1.4
|
33
|
-
requirement: *id001
|
34
|
-
- !ruby/object:Gem::Dependency
|
35
30
|
prerelease: false
|
36
|
-
name:
|
31
|
+
name: haml
|
37
32
|
type: :runtime
|
38
|
-
version_requirements:
|
33
|
+
version_requirements: *id001
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
36
|
requirements:
|
40
37
|
- - "="
|
41
38
|
- !ruby/object:Gem::Version
|
@@ -44,12 +41,12 @@ dependencies:
|
|
44
41
|
- 3
|
45
42
|
- 3
|
46
43
|
version: 1.3.3
|
47
|
-
requirement: *id002
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
44
|
prerelease: false
|
50
|
-
name:
|
45
|
+
name: tilt
|
51
46
|
type: :runtime
|
52
|
-
version_requirements:
|
47
|
+
version_requirements: *id002
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
53
50
|
requirements:
|
54
51
|
- - "="
|
55
52
|
- !ruby/object:Gem::Version
|
@@ -58,12 +55,12 @@ dependencies:
|
|
58
55
|
- 3
|
59
56
|
- 2
|
60
57
|
version: 1.3.2
|
61
|
-
requirement: *id003
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
58
|
prerelease: false
|
64
|
-
name:
|
59
|
+
name: sinatra
|
65
60
|
type: :runtime
|
66
|
-
version_requirements:
|
61
|
+
version_requirements: *id003
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
67
64
|
requirements:
|
68
65
|
- - "="
|
69
66
|
- !ruby/object:Gem::Version
|
@@ -72,12 +69,12 @@ dependencies:
|
|
72
69
|
- 7
|
73
70
|
- 3
|
74
71
|
version: 0.7.3
|
75
|
-
requirement: *id004
|
76
|
-
- !ruby/object:Gem::Dependency
|
77
72
|
prerelease: false
|
78
|
-
name:
|
73
|
+
name: errand
|
79
74
|
type: :runtime
|
80
|
-
version_requirements:
|
75
|
+
version_requirements: *id004
|
76
|
+
- !ruby/object:Gem::Dependency
|
77
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
81
78
|
requirements:
|
82
79
|
- - "="
|
83
80
|
- !ruby/object:Gem::Version
|
@@ -86,79 +83,82 @@ dependencies:
|
|
86
83
|
- 1
|
87
84
|
- 0
|
88
85
|
version: 1.1.0
|
89
|
-
|
86
|
+
prerelease: false
|
87
|
+
name: yajl-ruby
|
88
|
+
type: :runtime
|
89
|
+
version_requirements: *id005
|
90
90
|
- !ruby/object:Gem::Dependency
|
91
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - ">="
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
segments:
|
96
|
+
- 0
|
97
|
+
version: "0"
|
91
98
|
prerelease: false
|
92
99
|
name: shotgun
|
93
100
|
type: :development
|
94
|
-
version_requirements:
|
101
|
+
version_requirements: *id006
|
102
|
+
- !ruby/object:Gem::Dependency
|
103
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
95
104
|
requirements:
|
96
105
|
- - ">="
|
97
106
|
- !ruby/object:Gem::Version
|
98
107
|
segments:
|
99
108
|
- 0
|
100
109
|
version: "0"
|
101
|
-
requirement: *id006
|
102
|
-
- !ruby/object:Gem::Dependency
|
103
110
|
prerelease: false
|
104
111
|
name: rack-test
|
105
112
|
type: :development
|
106
|
-
version_requirements:
|
113
|
+
version_requirements: *id007
|
114
|
+
- !ruby/object:Gem::Dependency
|
115
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
107
116
|
requirements:
|
108
117
|
- - ">="
|
109
118
|
- !ruby/object:Gem::Version
|
110
119
|
segments:
|
111
120
|
- 0
|
112
121
|
version: "0"
|
113
|
-
requirement: *id007
|
114
|
-
- !ruby/object:Gem::Dependency
|
115
122
|
prerelease: false
|
116
123
|
name: rspec
|
117
124
|
type: :development
|
118
|
-
version_requirements:
|
125
|
+
version_requirements: *id008
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
119
128
|
requirements:
|
120
129
|
- - ">="
|
121
130
|
- !ruby/object:Gem::Version
|
122
131
|
segments:
|
123
132
|
- 0
|
124
133
|
version: "0"
|
125
|
-
requirement: *id008
|
126
|
-
- !ruby/object:Gem::Dependency
|
127
134
|
prerelease: false
|
128
135
|
name: cucumber
|
129
136
|
type: :development
|
130
|
-
version_requirements:
|
137
|
+
version_requirements: *id009
|
138
|
+
- !ruby/object:Gem::Dependency
|
139
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
131
140
|
requirements:
|
132
141
|
- - ">="
|
133
142
|
- !ruby/object:Gem::Version
|
134
143
|
segments:
|
135
144
|
- 0
|
136
145
|
version: "0"
|
137
|
-
requirement: *id009
|
138
|
-
- !ruby/object:Gem::Dependency
|
139
146
|
prerelease: false
|
140
147
|
name: webrat
|
141
148
|
type: :development
|
142
|
-
version_requirements:
|
149
|
+
version_requirements: *id010
|
150
|
+
- !ruby/object:Gem::Dependency
|
151
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
143
152
|
requirements:
|
144
153
|
- - ">="
|
145
154
|
- !ruby/object:Gem::Version
|
146
155
|
segments:
|
147
156
|
- 0
|
148
157
|
version: "0"
|
149
|
-
requirement: *id010
|
150
|
-
- !ruby/object:Gem::Dependency
|
151
158
|
prerelease: false
|
152
159
|
name: colorize
|
153
160
|
type: :development
|
154
|
-
version_requirements:
|
155
|
-
requirements:
|
156
|
-
- - ">="
|
157
|
-
- !ruby/object:Gem::Version
|
158
|
-
segments:
|
159
|
-
- 0
|
160
|
-
version: "0"
|
161
|
-
requirement: *id011
|
161
|
+
version_requirements: *id011
|
162
162
|
description: Visage is a web interface for viewing collectd statistics. It also provides a JSON interface onto collectd's RRD data, giving you an easy way to mash up the data.
|
163
163
|
email:
|
164
164
|
- lindsay@holmwood.id.au
|
@@ -215,6 +215,8 @@ files:
|
|
215
215
|
- lib/visage-app/public/images/search.png
|
216
216
|
- lib/visage-app/public/javascripts/builder.js
|
217
217
|
- lib/visage-app/public/javascripts/graph.js
|
218
|
+
- lib/visage-app/public/javascripts/highcharts-mootools-adapter.js
|
219
|
+
- lib/visage-app/public/javascripts/highcharts-mootools-adapter.src.js
|
218
220
|
- lib/visage-app/public/javascripts/highcharts.js
|
219
221
|
- lib/visage-app/public/javascripts/highcharts.src.js
|
220
222
|
- lib/visage-app/public/javascripts/keyboard.js
|