beanstalkd_view 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -15,6 +15,11 @@ $(document).ready(function() {
15
15
  peek('buried');
16
16
  });
17
17
  }
18
+ if ($("#add_job_btn").length > 0) {
19
+ $("#add_job_btn").click(function() {
20
+ add_job();
21
+ });
22
+ }
18
23
 
19
24
  function peek(queue) {
20
25
  var tube = document.getElementById("form_tube_name").value;
@@ -33,6 +38,70 @@ $(document).ready(function() {
33
38
  .error(function() { alert("An error occurred while trying to peek at the next job."); })
34
39
  }
35
40
 
41
+ function add_job() {
42
+ var tube = document.getElementById("form_tube_name").value;
43
+ var priority = document.getElementById("form_job_priority").value;
44
+ var delay = document.getElementById("form_job_delay").value;
45
+ var ttr = document.getElementById("form_job_ttr").value;
46
+ var body = document.getElementById("form_job_body").value;
47
+ // Use defaults if empty
48
+ if (tube == "") {
49
+ tube = "default";
50
+ document.getElementById("form_tube_name").value = tube;
51
+ }
52
+ if (priority == "") {
53
+ priority = "65536";
54
+ document.getElementById("form_job_priority").value = priority;
55
+ }
56
+ if (delay == "") {
57
+ delay = "0"
58
+ document.getElementById("form_job_delay").value = delay;
59
+ }
60
+ if (ttr == "") {
61
+ ttr = "120"
62
+ document.getElementById("form_job_ttr").value = ttr;
63
+ }
64
+ if (body == "") {
65
+ body = "{}";
66
+ document.getElementById("form_job_body").value = body;
67
+ }
68
+ //Ensure valid body JSON
69
+ var parsed_body_json = null;
70
+ var body_parse_error = null;
71
+ try {
72
+ parsed_body_json = JSON.parse(body);
73
+ if (parsed_body_json.constructor == Array) {
74
+ throw "Job Body JSON must be a Hash"
75
+ }
76
+ } catch(e) {
77
+ body_parse_error = e;
78
+ }
79
+ if (body_parse_error != null) {
80
+ alert("Job Body JSON parse error: "+body_parse_error);
81
+ } else {
82
+ // Build the confirmation popup
83
+ data = {};
84
+ data["pri"] = priority;
85
+ data["delay"] = delay;
86
+ data["ttr"] = ttr;
87
+ data["body"] = JSON.stringify([tube, parsed_body_json]);
88
+ $("#job_info_popup_title").html(create_new_job_title());
89
+ $("#job_info_popup_body").html(create_job_info_table(data));
90
+ $("#job_info_popup_footer").html(create_new_job_buttons());
91
+ $("#confirm_add_job_btn").click(function() {
92
+ $("#add_job_form").submit();
93
+ });
94
+ $("[rel=tooltip]").tooltip(); //refresh tooltips
95
+ $("#job_info_popup").modal({});
96
+ }
97
+ }
98
+
99
+ function create_new_job_buttons() {
100
+ var job_info_buttons = "";
101
+ job_info_buttons += "<a id=\"confirm_add_job_btn\" href=\"javascript:false\" class=\"btn\">Add Job</a>";
102
+ return job_info_buttons;
103
+ }
104
+
36
105
  function create_job_info_buttons(tube, data, url_base) {
37
106
  var job_id = data["id"];
38
107
  var priority = data["pri"];
@@ -40,6 +109,10 @@ $(document).ready(function() {
40
109
  job_info_buttons += "<a href=\""+url_base+"delete/"+tube+"/"+job_id+"\" class=\"btn\">Delete Job</a>";
41
110
  return job_info_buttons;
42
111
  }
112
+
113
+ function create_new_job_title() {
114
+ return "<h3>Add new job?</h3>";
115
+ }
43
116
 
44
117
  function create_job_info_title(data) {
45
118
  var id = data["id"];
@@ -51,15 +124,29 @@ $(document).ready(function() {
51
124
  var job_info_table = "<table class=\"table\">";
52
125
  job_info_table += "<tbody>";
53
126
  job_info_table += create_job_info_row("pri", data["pri"], "The priority value set by the put, release, or bury commands.");
54
- job_info_table += create_job_info_row("age", data["age"], "The time in seconds since the put command that created this job.");
127
+ if ("age" in data) {
128
+ job_info_table += create_job_info_row("age", data["age"], "The time in seconds since the put command that created this job.");
129
+ }
55
130
  job_info_table += create_job_info_row("delay", data["delay"], "The delay value in seconds");
56
131
  job_info_table += create_job_info_row("ttr", data["ttr"], "The number of seconds to allow a worker to run this job. This time is counted from the moment a worker reserves this job. If the worker does not delete, release, or bury the job within ttr seconds, the job will time out and the server will release the job.");
57
- job_info_table += create_job_info_row("time-left", data["time-left"], "The number of seconds left until the server puts this job into the ready queue. This number is only meaningful if the job is reserved or delayed. If the job is reserved and this amount of time elapses before its state changes, it is considered to have timed out.");
58
- job_info_table += create_job_info_row("reserves", data["reserves"], "The number of times this job has been reserved");
59
- job_info_table += create_job_info_row("timeouts", data["timeouts"], "The number of times this job has timed out during a reservation.");
60
- job_info_table += create_job_info_row("releases", data["releases"], "The number of times a client has released this job from a reservation.");
61
- job_info_table += create_job_info_row("buries", data["buries"], " The number of times this job has been buried.");
62
- job_info_table += create_job_info_row("kicks", data["kicks"], "The number of times this job has been kicked.");
132
+ if ("time-left" in data) {
133
+ job_info_table += create_job_info_row("time-left", data["time-left"], "The number of seconds left until the server puts this job into the ready queue. This number is only meaningful if the job is reserved or delayed. If the job is reserved and this amount of time elapses before its state changes, it is considered to have timed out.");
134
+ }
135
+ if ("reserves" in data) {
136
+ job_info_table += create_job_info_row("reserves", data["reserves"], "The number of times this job has been reserved");
137
+ }
138
+ if ("timeouts" in data) {
139
+ job_info_table += create_job_info_row("timeouts", data["timeouts"], "The number of times this job has timed out during a reservation.");
140
+ }
141
+ if ("releases" in data) {
142
+ job_info_table += create_job_info_row("releases", data["releases"], "The number of times a client has released this job from a reservation.");
143
+ }
144
+ if ("buries" in data) {
145
+ job_info_table += create_job_info_row("buries", data["buries"], " The number of times this job has been buried.");
146
+ }
147
+ if ("kicks" in data) {
148
+ job_info_table += create_job_info_row("kicks", data["kicks"], "The number of times this job has been kicked.");
149
+ }
63
150
  job_info_table += create_job_info_row("body", data["body"], "The jobs body content.");
64
151
  job_info_table += "</tbody>";
65
152
  job_info_table += "</table>";
@@ -16,6 +16,25 @@ module BeanstalkdView
16
16
  end
17
17
  end
18
18
 
19
+ post "/add_job" do
20
+ begin
21
+ response = nil
22
+ body = JSON.parse(params[:body])
23
+ beanstalk.on_tube(params[:tube]) do |conn|
24
+ response = conn.put([ params[:tube], body ].to_json, params[:priority].to_i, params[:delay].to_i, params[:ttr].to_i)
25
+ end
26
+ if response
27
+ session[:message] = "Added job #{response.inspect}"
28
+ redirect url("/")
29
+ else
30
+ session[:message] = "Error adding job"
31
+ redirect url("/")
32
+ end
33
+ rescue Beanstalk::NotConnected => @error
34
+ erb :error
35
+ end
36
+ end
37
+
19
38
  get "/tube/:tube" do
20
39
  begin
21
40
  @stats = beanstalk.stats_tube(params[:tube])
@@ -1,3 +1,3 @@
1
1
  module BeanstalkdView
2
- VERSION = "0.1.6"
2
+ VERSION = "0.1.7"
3
3
  end
@@ -1,5 +1,256 @@
1
- <h1>Overview</h1>
1
+ <div class="row">
2
+ <div class="span6">
3
+ <h1>Overview</h1>
2
4
 
3
- <%= erb :tubes %>
5
+ <table class="table">
6
+ <thead>
7
+ <tr>
8
+ <th>Server</th>
9
+ <th>Tubes</th>
10
+ </tr>
11
+ </thead>
12
+ <tbody>
13
+ <% @tubes.keys.each do |key| %>
14
+ <% @tubes[key].each do |tube| %>
15
+ <tr>
16
+ <td><%= key %></td>
17
+ <td><a href="<%= url("/tube/#{tube}") %>"><%= tube %></a></td>
18
+ </tr>
19
+ <% end %>
20
+ <% end %>
21
+ </tbody>
22
+ </table>
4
23
 
5
- <%= erb :general_stats %>
24
+ <table class="table">
25
+ <thead>
26
+ <tr>
27
+ <th colspan="2">Current Jobs</th>
28
+ </tr>
29
+ </thead>
30
+ <tbody>
31
+ <tr rel="tooltip" title="The number of ready jobs with priority < 1024.">
32
+ <td>Urgent</td>
33
+ <% if @stats["current-jobs-urgent"] > 0 %>
34
+ <td class="data_cell"><span class="badge badge-warning"><%= @stats["current-jobs-urgent"] %></span></td>
35
+ <% else %>
36
+ <td class="data_cell"><%= @stats["current-jobs-urgent"] %></td>
37
+ <% end %>
38
+ </tr>
39
+ <tr rel="tooltip" title="The number of jobs in the ready queue.">
40
+ <td>Ready</td>
41
+ <td class="data_cell"><%= @stats["current-jobs-ready"] %></td>
42
+ </tr>
43
+ <tr rel="tooltip" title="The number of jobs reserved by all clients.">
44
+ <td>Reserved</td>
45
+ <td class="data_cell"><%= @stats["current-jobs-reserved"] %></td>
46
+ </tr>
47
+ <tr rel="tooltip" title="The number of delayed jobs.">
48
+ <td>Delayed</td>
49
+ <td class="data_cell"><%= @stats["current-jobs-delayed"] %></td>
50
+ </tr>
51
+ <tr rel="tooltip" title="he number of buried jobs.">
52
+ <td>Buried</td>
53
+ <% if @stats["current-jobs-buried"] > 0 %>
54
+ <td class="data_cell"><span class="badge badge-error"><%= @stats["current-jobs-buried"] %></span></td>
55
+ <% else %>
56
+ <td class="data_cell"><%= @stats["current-jobs-buried"] %></td>
57
+ <% end %>
58
+ </tr>
59
+ </tbody>
60
+ </table>
61
+
62
+ <table class="table">
63
+ <thead>
64
+ <tr>
65
+ <th colspan="2">Statistics</th>
66
+ </tr>
67
+ </thead>
68
+ <tbody>
69
+ <tr rel="tooltip" title="The cumulative count of times a job has timed out.">
70
+ <td>Job Timeouts</td>
71
+ <td class="data_cell"><%= @stats["job-timeouts"] %></td>
72
+ </tr>
73
+ <tr rel="tooltip" title="The cumulative count of jobs created.">
74
+ <td>Total Jobs</td>
75
+ <td class="data_cell"><%= @stats["total-jobs"] %></td>
76
+ </tr>
77
+ <tr rel="tooltip" title="The maximum number of bytes in a job.">
78
+ <td>Max Job Size</td>
79
+ <td class="data_cell"><%= @stats["max-job-size"] %></td>
80
+ </tr>
81
+ <tr rel="tooltip" title="The number of currently open connections.">
82
+ <td>Current Connections</td>
83
+ <td class="data_cell"><%= @stats["current-connections"] %></td>
84
+ </tr>
85
+ <tr rel="tooltip" title="The number of open connections that have each issued at least one put command.">
86
+ <td>Current Producers</td>
87
+ <td class="data_cell"><%= @stats["current-producers"] %></td>
88
+ </tr>
89
+ <tr rel="tooltip" title="The number of open connections that have each issued at least one reserve command.">
90
+ <td>Current Workers</td>
91
+ <td class="data_cell"><%= @stats["current-workers"] %></td>
92
+ </tr>
93
+ <tr rel="tooltip" title="The number of open connections that have issued a reserve command but not yet received a response.">
94
+ <td>Current Waiting</td>
95
+ <td class="data_cell"><%= @stats["current-waiting"] %></td>
96
+ </tr>
97
+ <tr rel="tooltip" title="The cumulative count of connections.">
98
+ <td>Total Connections</td>
99
+ <td class="data_cell"><%= @stats["total-connections"] %></td>
100
+ </tr>
101
+ <tr rel="tooltip" title="The process id of the server.">
102
+ <td>pid</td>
103
+ <td class="data_cell"><%= @stats["pid"] %></td>
104
+ </tr>
105
+ <tr rel="tooltip" title="The version string of the server.">
106
+ <td>Version</td>
107
+ <td class="data_cell"><%= @stats["version"] %></td>
108
+ </tr>
109
+ <tr rel="tooltip" title="The accumulated user CPU time of this process in seconds and microseconds.">
110
+ <td>rusage-utime</td>
111
+ <td class="data_cell"><%= @stats["rusage-utime"] %></td>
112
+ </tr>
113
+ <tr rel="tooltip" title="The accumulated system CPU time of this process in seconds and microseconds.">
114
+ <td>rusage-stime</td>
115
+ <td class="data_cell"><%= @stats["rusage-stime"] %></td>
116
+ </tr>
117
+ <tr rel="tooltip" title="The number of seconds since this server started running.">
118
+ <td>Uptime</td>
119
+ <td class="data_cell"><%= @stats["uptime"] %></td>
120
+ </tr>
121
+ </tbody>
122
+ </table>
123
+
124
+ <table class="table">
125
+ <thead>
126
+ <tr>
127
+ <th colspan="2">Binlog</th>
128
+ </tr>
129
+ </thead>
130
+ <tbody>
131
+ <tr rel="tooltip" title="The index of the oldest binlog file needed to store the current jobs.">
132
+ <td>Oldest Index</td>
133
+ <td class="data_cell"><%= @stats["binlog-oldest-index"] %></td>
134
+ </tr>
135
+ <tr rel="tooltip" title="The index of the current binlog file being written to. If binlog is not active this value will be 0.">
136
+ <td>Current Index</td>
137
+ <td class="data_cell"><%= @stats["binlog-current-index"] %></td>
138
+ </tr>
139
+ <tr rel="tooltip" title="The maximum size in bytes a binlog file is allowed to get before a new binlog file is opened.">
140
+ <td>Max Size</td>
141
+ <td class="data_cell"><%= @stats["binlog-max-size"] %></td>
142
+ </tr>
143
+ </tbody>
144
+ </table>
145
+
146
+ <hr/>
147
+
148
+ <table class="table">
149
+ <thead>
150
+ <tr>
151
+ <th colspan="2">API Call Histogram</th>
152
+ </tr>
153
+ </thead>
154
+ <tbody>
155
+ <tr rel="tooltip" title="The cumulative number of put commands.">
156
+ <td>put</td>
157
+ <td class="data_cell"><%= @stats["cmd-put"] %></td>
158
+ </tr>
159
+ <tr rel="tooltip" title="The cumulative number of peek commands.">
160
+ <td>peek</td>
161
+ <td class="data_cell"><%= @stats["cmd-peek"] %></td>
162
+ </tr>
163
+ <tr rel="tooltip" title="The cumulative number of peek-ready commands.">
164
+ <td>peek-ready</td>
165
+ <td class="data_cell"><%= @stats["cmd-peek-ready"] %></td>
166
+ </tr>
167
+ <tr rel="tooltip" title="The cumulative number of peek-delayed commands.">
168
+ <td>peek-delayed</td>
169
+ <td class="data_cell"><%= @stats["cmd-peek-delayed"] %></td>
170
+ </tr>
171
+ <tr rel="tooltip" title="The cumulative number of peek-buried commands.">
172
+ <td>peek-buried</td>
173
+ <td class="data_cell"><%= @stats["cmd-peek-buried"] %></td>
174
+ </tr>
175
+ <tr rel="tooltip" title="The cumulative number of reserve commands.">
176
+ <td>reserve</td>
177
+ <td class="data_cell"><%= @stats["cmd-reserve"] %></td>
178
+ </tr>
179
+ <tr rel="tooltip" title="The cumulative number of use commands.">
180
+ <td>use</td>
181
+ <td class="data_cell"><%= @stats["cmd-use"] %></td>
182
+ </tr>
183
+ <tr rel="tooltip" title="The cumulative number of watch commands.">
184
+ <td>watch</td>
185
+ <td class="data_cell"><%= @stats["cmd-watch"] %></td>
186
+ </tr>
187
+ <tr rel="tooltip" title="The cumulative number of ignore commands.">
188
+ <td>ignore</td>
189
+ <td class="data_cell"><%= @stats["cmd-ignore"] %></td>
190
+ </tr>
191
+ <tr rel="tooltip" title="The cumulative number of delete commands.">
192
+ <td>delete</td>
193
+ <td class="data_cell"><%= @stats["cmd-delete"] %></td>
194
+ </tr>
195
+ <tr rel="tooltip" title="The cumulative number of release commands.">
196
+ <td>release</td>
197
+ <td class="data_cell"><%= @stats["cmd-release"] %></td>
198
+ </tr>
199
+ <tr rel="tooltip" title="The cumulative number of bury commands.">
200
+ <td>bury</td>
201
+ <td class="data_cell"><%= @stats["cmd-bury"] %></td>
202
+ </tr>
203
+ <tr rel="tooltip" title="The cumulative number of kick commands.">
204
+ <td>kick</td>
205
+ <td class="data_cell"><%= @stats["cmd-kick"] %></td>
206
+ </tr>
207
+ <tr rel="tooltip" title="The cumulative number of stats commands.">
208
+ <td>stats</td>
209
+ <td class="data_cell"><%= @stats["cmd-stats"] %></td>
210
+ </tr>
211
+ <tr rel="tooltip" title="The cumulative number of stats-job commands.">
212
+ <td>stats-job</td>
213
+ <td class="data_cell"><%= @stats["cmd-stats-job"] %></td>
214
+ </tr>
215
+ <tr rel="tooltip" title="The cumulative number of stats-tube commands.">
216
+ <td>stats-tube</td>
217
+ <td class="data_cell"><%= @stats["cmd-stats-tube"] %></td>
218
+ </tr>
219
+ <tr rel="tooltip" title="The cumulative number of list-tubes commands.">
220
+ <td>list-tubes</td>
221
+ <td class="data_cell"><%= @stats["cmd-list-tubes"] %></td>
222
+ </tr>
223
+ <tr rel="tooltip" title="The cumulative number of list-tube-used commands.">
224
+ <td>list-tube-used</td>
225
+ <td class="data_cell"><%= @stats["cmd-list-tube-used"] %></td>
226
+ </tr>
227
+ <tr rel="tooltip" title="The cumulative number of list-tubes-watched commands.">
228
+ <td>list-tubes-watched</td>
229
+ <td class="data_cell"><%= @stats["cmd-list-tubes-watched"] %></td>
230
+ </tr>
231
+ <tr rel="tooltip" title="The cumulative number of pause-tube commands.">
232
+ <td>pause-tube</td>
233
+ <td class="data_cell"><%= @stats["cmd-pause-tube"] %></td>
234
+ </tr>
235
+ </tbody>
236
+ </table>
237
+ </div>
238
+
239
+ <div class="span6">
240
+ <div class="span6">
241
+ <h3>Add Job</h3>
242
+ <form id="add_job_form" class="well" name="add_job_form" action="<%= url('/add_job') %>" method="POST">
243
+ <input id="form_tube_name" type="text" class="span3" placeholder="Tube name" name="tube">
244
+ <input id="form_job_priority" type="text" class="span3" placeholder="Priority, e.g. 65536" name="priority">
245
+ <input id="form_job_delay" type="text" class="span3" placeholder="Delay, e.g. 0" name="delay">
246
+ <input id="form_job_ttr" type="text" class="span3" placeholder="TTR, e.g. 120" name="ttr">
247
+ <label class="control-label" for="textarea">Job Body JSON Hash, e.g. {} or {"id": 1, "name": "Bob"}</label>
248
+ <textarea id="form_job_body" class="input-xlarge" name="body" rows="3"></textarea>
249
+ <br/>
250
+ <a id="add_job_btn" href="javascript:false" class="btn">Add Job</a>
251
+ </form>
252
+ </div>
253
+ </div>
254
+ </div>
255
+
256
+ <%= erb :job_info_popup %>
@@ -8,6 +8,7 @@
8
8
  <meta http-equiv="content-type" content="text/html;charset=utf-8" />
9
9
  <script type="text/javascript" src="<%= url('/resources/js/jquery-1.7.1.min.js') %>"></script>
10
10
  <script type="text/javascript" src="<%= url('/resources/bootstrap/js/bootstrap.min.js') %>"></script>
11
+ <script type="text/javascript" src="<%= url('/resources/js/json2.js') %>"></script>
11
12
  <script type="text/javascript" src="<%= url('/resources/js/peek_jobs.js') %>"></script>
12
13
  <script type="text/javascript">
13
14
  <!-- Enable Tooltips -->
@@ -12,29 +12,29 @@
12
12
  <tr rel="tooltip" title="The number of ready jobs with priority < 1024 in this tube.">
13
13
  <td>Urgent</td>
14
14
  <% if @stats["current-jobs-urgent"] > 0 %>
15
- <td><span class="badge badge-warning"><%= @stats["current-jobs-urgent"] %></span></td>
15
+ <td class="data_cell"><span class="badge badge-warning"><%= @stats["current-jobs-urgent"] %></span></td>
16
16
  <% else %>
17
- <td><%= @stats["current-jobs-urgent"] %></td>
17
+ <td class="data_cell"><%= @stats["current-jobs-urgent"] %></td>
18
18
  <% end %>
19
19
  </tr>
20
20
  <tr rel="tooltip" title="The number of jobs in the ready queue in this tube.">
21
21
  <td>Ready</td>
22
- <td><%= @stats["current-jobs-ready"] %></td>
22
+ <td class="data_cell"><%= @stats["current-jobs-ready"] %></td>
23
23
  </tr>
24
24
  <tr rel="tooltip" title="The number of jobs reserved by all clients in this tube.">
25
25
  <td>Reserved</td>
26
- <td><%= @stats["current-jobs-reserved"] %></td>
26
+ <td class="data_cell"><%= @stats["current-jobs-reserved"] %></td>
27
27
  </tr>
28
28
  <tr rel="tooltip" title="The number of delayed jobs in this tube.">
29
29
  <td>Delayed</td>
30
- <td><%= @stats["current-jobs-delayed"] %></td>
30
+ <td class="data_cell"><%= @stats["current-jobs-delayed"] %></td>
31
31
  </tr>
32
32
  <tr rel="tooltip" title="The number of buried jobs in this tube.">
33
33
  <td>Buried</td>
34
34
  <% if @stats["current-jobs-buried"] > 0 %>
35
- <td><span class="badge badge-error"><%= @stats["current-jobs-buried"] %></span></td>
35
+ <td class="data_cell"><span class="badge badge-error"><%= @stats["current-jobs-buried"] %></span></td>
36
36
  <% else %>
37
- <td><%= @stats["current-jobs-buried"] %></td>
37
+ <td class="data_cell"><%= @stats["current-jobs-buried"] %></td>
38
38
  <% end %>
39
39
  </tr>
40
40
  </tbody>
@@ -49,22 +49,22 @@
49
49
  <tbody>
50
50
  <tr rel="tooltip" title="The cumulative count of jobs created in this tube.">
51
51
  <td>Total Jobs</td>
52
- <td><%= @stats["total-jobs"] %></td>
52
+ <td class="data_cell"><%= @stats["total-jobs"] %></td>
53
53
  </tr>
54
54
  <tr rel="tooltip" title="The number of open connections that have issued a reserve command while watching this tube but not yet received a response.">
55
55
  <td>Current Waiting</td>
56
- <td><%= @stats["current-waiting"] %></td>
56
+ <td class="data_cell"><%= @stats["current-waiting"] %></td>
57
57
  </tr>
58
58
  <tr rel="tooltip" title="The number of seconds the tube has been paused for.">
59
59
  <td>Time Paused</td>
60
- <td><%= @stats["pause"] %></td>
60
+ <td class="data_cell"><%= @stats["pause"] %></td>
61
61
  </tr>
62
62
  <tr rel="tooltip" title="The number of seconds until the tube is un-paused.">
63
63
  <td>Pause Time Left</td>
64
64
  <% if @stats["pause-time-left"] > 0 %>
65
- <td><span class="badge badge-warning"><%= @stats["pause-time-left"] %></span></td>
65
+ <td class="data_cell"><span class="badge badge-warning"><%= @stats["pause-time-left"] %></span></td>
66
66
  <% else %>
67
- <td><%= @stats["pause-time-left"] %></td>
67
+ <td class="data_cell"><%= @stats["pause-time-left"] %></td>
68
68
  <% end %>
69
69
  </tr>
70
70
  </tbody>
@@ -79,14 +79,14 @@
79
79
  <tbody>
80
80
  <tr rel="tooltip" title="The cumulative number of pause-tube commands for this tube.">
81
81
  <td>pause-tube</td>
82
- <td><%= @stats["cmd-pause-tube"] %></td>
82
+ <td class="data_cell"><%= @stats["cmd-pause-tube"] %></td>
83
83
  </tr>
84
84
  </tbody>
85
85
  </table>
86
86
  </div>
87
87
 
88
88
  <div class="span6">
89
- <h3>Pause Tube</h3>
89
+ <h3>Pause Tube</h3>
90
90
  <form class="well form-inline" name="pause_form" action="<%= url('/pause') %>" method="POST">
91
91
  <input id="form_tube_name" type="hidden" name="tube" value="<%= @stats["name"] %>">
92
92
  <input id="form_url_base" type="hidden" name="url_base" value="<%= url('/') %>">
@@ -94,16 +94,16 @@
94
94
  <button type="submit" class="btn">Pause</button>
95
95
  </form>
96
96
 
97
- <h3>Kick Tube</h3>
97
+ <h3>Kick Tube</h3>
98
98
  <form class="well form-inline" name="kick_form" action="<%= url('/kick') %>" method="POST">
99
99
  <input type="hidden" name="tube" value="<%= @stats["name"] %>">
100
100
  <input type="text" class="span3" placeholder="Number of jobs" name="bound">
101
101
  <button type="submit" class="btn">Kick</button>
102
102
  </form>
103
103
 
104
- <h3>Peek Jobs</h3>
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>
106
+ <a id="peek_ready_btn" href="javascript:false" class="btn">Peek Ready</a>
107
107
  <a id="peek_delayed_btn" href="javascript:false" class="btn">Peek Delayed</a>
108
108
  <a id="peek_buried_btn" href="javascript:false" class="btn">Peek Buried</a>
109
109
  </form>