beanstalkd_view 0.1.8 → 0.1.9

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -51,8 +51,9 @@ bundle exec beanstalkd_view
51
51
 
52
52
  (This will use the vegas gem to launch the Sinatra app on an available port.)
53
53
 
54
-
55
- ![Screenshot](http://s9.postimage.org/tpfksm5kv/beanstalkd_view.png)
54
+ Screenshot
55
+ ------------------------
56
+ ![Screenshot](http://s15.postimage.org/burvb1tjv/i_OS_Simulator_Screen_shot_Apr_5_2012_3_31_51_PM.png)
56
57
 
57
58
  License
58
59
  ------------------------
@@ -1,22 +1,26 @@
1
1
  <!-- Enable Peek Job Button Handlers
2
2
  $(document).ready(function() {
3
3
  if ($("#peek_ready_btn").length > 0) {
4
- $("#peek_ready_btn").click(function() {
4
+ $("#peek_ready_btn").click(function(event) {
5
+ event.preventDefault();
5
6
  peek('ready');
6
7
  });
7
8
  }
8
9
  if ($("#peek_delayed_btn").length > 0) {
9
- $("#peek_delayed_btn").click(function() {
10
+ $("#peek_delayed_btn").click(function(event) {
11
+ event.preventDefault();
10
12
  peek('delayed');
11
13
  });
12
14
  }
13
15
  if ($("#peek_buried_btn").length > 0) {
14
- $("#peek_buried_btn").click(function() {
16
+ $("#peek_buried_btn").click(function(event) {
17
+ event.preventDefault();
15
18
  peek('buried');
16
19
  });
17
20
  }
18
21
  if ($("#add_job_btn").length > 0) {
19
- $("#add_job_btn").click(function() {
22
+ $("#add_job_btn").click(function(event) {
23
+ event.preventDefault();
20
24
  add_job();
21
25
  });
22
26
  }
@@ -8,7 +8,9 @@ module BeanstalkdView
8
8
  begin
9
9
  @tubes = beanstalk.list_tubes
10
10
  @stats = beanstalk.stats
11
- @total_jobs_data = get_total_jobs_data(@tubes)
11
+ chart_data = get_chart_data_hash(@tubes)
12
+ @total_jobs_data = chart_data["total_jobs_data"]
13
+ @buried_jobs_data = chart_data["buried_jobs_data"] if chart_data["buried_jobs_data"]["items"].size > 0
12
14
  @message = session[:message]
13
15
  session[:message] = nil
14
16
  erb :index
@@ -135,21 +137,34 @@ module BeanstalkdView
135
137
  send_file file
136
138
  end
137
139
 
138
- def get_total_jobs_data(tubes)
139
- total_jobs_data = Hash.new
140
- items = Array.new
140
+ def get_chart_data_hash(tubes)
141
+ chart_data = Hash.new
142
+ chart_data["total_jobs_data"] = Hash.new
143
+ chart_data["buried_jobs_data"] = Hash.new
144
+ chart_data["total_jobs_data"]["items"] = Array.new
145
+ chart_data["buried_jobs_data"]["items"] = Array.new
141
146
  tubes.keys.each do |key|
142
147
  tubes[key].each do |tube|
143
148
  stats = beanstalk.stats_tube(tube)
149
+ #total_jobs
144
150
  total_jobs = stats['total-jobs']
145
- datum = Hash.new
146
- datum["label"] = tube
147
- datum["data"] = total_jobs
148
- items << datum
151
+ if total_jobs > 0
152
+ total_datum = Hash.new
153
+ total_datum["label"] = tube
154
+ total_datum["data"] = total_jobs
155
+ chart_data["total_jobs_data"]["items"] << total_datum
156
+ end
157
+ #buried_jobs
158
+ buried_jobs = stats['current-jobs-buried']
159
+ if buried_jobs > 0
160
+ buried_datum = Hash.new
161
+ buried_datum["label"] = tube
162
+ buried_datum["data"] = buried_jobs
163
+ chart_data["buried_jobs_data"]["items"] << buried_datum
164
+ end
149
165
  end
150
166
  end
151
- total_jobs_data["items"] = items
152
- total_jobs_data
167
+ chart_data
153
168
  end
154
169
 
155
170
  end
@@ -1,3 +1,3 @@
1
1
  module BeanstalkdView
2
- VERSION = "0.1.8"
2
+ VERSION = "0.1.9"
3
3
  end
@@ -69,6 +69,7 @@
69
69
  <tr rel="tooltip" title="The rate of job bury calls to reserve calls.">
70
70
  <td>Bury Rate</td>
71
71
  <% bury_reserve_rate = (@stats["cmd-bury"].to_f / @stats["cmd-reserve"].to_f) %>
72
+ <% bury_reserve_rate = 0 if bury_reserve_rate.nan? %>
72
73
  <% if bury_reserve_rate > 0.01 %>
73
74
  <td class="data_cell"><span class="badge badge-error"><%= bury_reserve_rate %></span></td>
74
75
  <% else %>
@@ -78,6 +79,7 @@
78
79
  <tr rel="tooltip" title="The rate of job timeouts to reserve calls.">
79
80
  <td>Timeout Rate</td>
80
81
  <% timeout_reserve_rate = (@stats["job-timeouts"].to_f / @stats["cmd-reserve"].to_f) %>
82
+ <% timeout_reserve_rate = 0 if timeout_reserve_rate.nan? %>
81
83
  <% if timeout_reserve_rate > 0.01 %>
82
84
  <td class="data_cell"><span class="badge badge-error"><%= timeout_reserve_rate %></span></td>
83
85
  <% else %>
@@ -275,39 +277,64 @@
275
277
  <label class="control-label" for="textarea">Job Body JSON Hash, e.g. {} or {"id": 1, "name": "Bob"}</label>
276
278
  <textarea id="form_job_body" class="input-xlarge" name="body" rows="3"></textarea>
277
279
  <br/>
278
- <a id="add_job_btn" href="javascript:false" class="btn">Add Job</a>
280
+ <a id="add_job_btn" href="#" class="btn">Add Job</a>
279
281
  </form>
280
282
  </div>
281
283
 
282
284
  <div class="span6">
283
- <h3>Total Jobs</h3>
284
- <canvas id="total_jobs_chart"></canvas>
285
- </div>
285
+ <div id="total_jobs_container">
286
+ <h3>Total Jobs</h3>
287
+ <canvas id="total_jobs_chart"></canvas>
288
+ </div>
289
+ <div id="buried_jobs_container" style="visibility:hidden">
290
+ <br/>
291
+ <h3>Current Jobs Buried</h3>
292
+ <canvas id="buried_jobs_chart"></canvas>
293
+ </div>
294
+ </div>
286
295
  </div>
287
296
  </div>
288
297
 
289
298
  <script type="text/javascript">
290
299
  $(document).ready(function(){
291
- var data = <%= @total_jobs_data.to_json.html_safe %>
292
- //Create pie chart
293
- var bluffGraph = new Bluff.Pie('total_jobs_chart', 570);
294
- //Setup theme
295
- var colors = ['#6886B4', '#FDD84E', '#72AE6E', '#D1695E', '#8A6EAF', '#EFAA43', 'white'];
296
- bluffGraph.set_theme({
297
- colors: colors,
298
- marker_color: 'white',
299
- font_color: 'white',
300
- background_colors: ['#008000', '#008000']
301
- });
302
- bluffGraph.tooltips = true;
300
+
301
+ function draw_pie_chart(div, data) {
302
+ //Create pie charts
303
+ var chart = new Bluff.Bar(div, 460);
304
+ //Setup theme
305
+ var colors = ['#6886B4', '#FDD84E', '#72AE6E', '#D1695E', '#8A6EAF', '#EFAA43', 'white'];
306
+ chart.set_theme({
307
+ colors: colors,
308
+ marker_color: 'white',
309
+ font_color: 'white',
310
+ background_colors: ['#008000', '#008000']
311
+ });
312
+ chart.tooltips = true;
313
+ chart.hide_line_markers = false;
314
+ chart.minimum_value = 0;
315
+ var max_value = 0;
316
+ //Add each data item to chart
317
+ for (i in data.items) {
318
+ var item = data.items[i];
319
+ chart.data(item.label, item.data);
320
+ if (item.data > max_value) {
321
+ max_value = item.data;
322
+ }
323
+ }
324
+ chart.maximum_value = max_value;
325
+ //Finally draw the chart
326
+ chart.draw();
327
+ }
303
328
 
304
- for (i in data.items) {
305
- var item = data.items[i];
306
- //Add each data item to pie
307
- bluffGraph.data(item.label, item.data);
308
- }
309
- //Finally draw the chart
310
- bluffGraph.draw();
329
+ <% if @total_jobs_data %>
330
+ var total_jobs_data = <%= @total_jobs_data.to_json.html_safe %>
331
+ draw_pie_chart('total_jobs_chart', total_jobs_data);
332
+ <% end %>
333
+ <% if @buried_jobs_data %>
334
+ var buried_jobs_data = <%= @buried_jobs_data.to_json.html_safe %>
335
+ draw_pie_chart('buried_jobs_chart', buried_jobs_data);
336
+ $("#buried_jobs_container").css('visibility', 'visible');
337
+ <% end %>
311
338
  });
312
339
  </script>
313
340
 
@@ -103,9 +103,9 @@
103
103
 
104
104
  <h3>Peek Jobs</h3>
105
105
  <form class="well" name="peek_jobs">
106
- <a id="peek_ready_btn" href="javascript:false" class="btn">Peek Ready</a>
107
- <a id="peek_delayed_btn" href="javascript:false" class="btn">Peek Delayed</a>
108
- <a id="peek_buried_btn" href="javascript:false" class="btn">Peek Buried</a>
106
+ <a id="peek_ready_btn" href="#" class="btn">Peek Ready</a>
107
+ <a id="peek_delayed_btn" href="#" class="btn">Peek Delayed</a>
108
+ <a id="peek_buried_btn" href="#" class="btn">Peek Buried</a>
109
109
  </form>
110
110
 
111
111
  </div>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beanstalkd_view
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-05 00:00:00.000000000 Z
12
+ date: 2012-04-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sinatra
16
- requirement: &2156750980 !ruby/object:Gem::Requirement
16
+ requirement: &2156722560 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.1.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2156750980
24
+ version_requirements: *2156722560
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: beanstalk-client
27
- requirement: &2156750420 !ruby/object:Gem::Requirement
27
+ requirement: &2156722060 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.1.1
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2156750420
35
+ version_requirements: *2156722060
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: vegas
38
- requirement: &2156749960 !ruby/object:Gem::Requirement
38
+ requirement: &2156721580 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 0.1.2
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2156749960
46
+ version_requirements: *2156721580
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: json
49
- requirement: &2156749520 !ruby/object:Gem::Requirement
49
+ requirement: &2156721180 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *2156749520
57
+ version_requirements: *2156721180
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rake
60
- requirement: &2156748940 !ruby/object:Gem::Requirement
60
+ requirement: &2156720600 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2156748940
68
+ version_requirements: *2156720600
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rack-test
71
- requirement: &2156748520 !ruby/object:Gem::Requirement
71
+ requirement: &2156720060 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *2156748520
79
+ version_requirements: *2156720060
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rspec
82
- requirement: &2156748080 !ruby/object:Gem::Requirement
82
+ requirement: &2156719460 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *2156748080
90
+ version_requirements: *2156719460
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: capybara
93
- requirement: &2156747660 !ruby/object:Gem::Requirement
93
+ requirement: &2156718720 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,7 +98,7 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *2156747660
101
+ version_requirements: *2156718720
102
102
  description: A Sinatra app to view/manage beanstalkd queues that can be embedded in
103
103
  a Rails app similar to what's available in Resque
104
104
  email: dennis.kuczynski@gmail.com