% layout 'minion', title => 'Minion - Jobs';
% my $related = begin
% my $job = shift;
% my ($parents, $children, $id) = @{$job}{qw(parents children worker)};
% if (@$parents || @$children || $id) {
<div class="dropdown">
<button type="button"
class="btn btn-sm btn-outline-secondary dropdown-toggle"
id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true"
aria-expanded="false">
Related
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
% if (@$parents) {
% my $url = url_for('minion_jobs')->query(id => $parents);
<a class="dropdown-item" href="<%= $url %>">Parents</a>
% }
% if (@$children) {
% my $url = url_for('minion_jobs')->query(id => $children);
<a class="dropdown-item" href="<%= $url %>">Children</a>
% }
% if ($id) {
% my $url = url_for('minion_workers')->query(id => $id);
<a class="dropdown-item" href="<%= $url %>">Worker</a>
% }
</div>
</div>
% }
% end
%= include 'minion/_notifications'
%= form_for 'minion_manage_jobs' => begin
<div class="d-flex justify-content-between">
<div>
<div class="btn-group" role="group">
<button class="btn btn-outline-secondary" name="do" value="retry"
type="submit">
<i class="fas fa-redo" aria-hidden="true"></i> Retry
</button>
<button class="btn btn-outline-secondary" name="do" value="stop"
type="submit">
<i class="fas fa-ban" aria-hidden="true"></i> Stop
</button>
<button class="btn btn-outline-secondary" name="do" value="remove"
type="submit">
<i class="fas fa-times" aria-hidden="true"></i> Remove
</button>
</div>
</div>
<p class="align-middle">
% if (@$jobs) {
<%= $offset + 1 %>-<%= $offset + @$jobs %> of <%= $total %>
% }
</p>
%= include 'minion/_limit'
</div>
<div class="row">
<div class="col-md-12">
<table class="table">
<thead>
<tr>
<th><input class="checkall" data-check="id" type="checkbox"></th>
<th>Job ID</th>
<th>Task</th>
<th>Queue</th>
<th>Created</th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
% my $i = 0;
% for my $job (@$jobs) {
% $i++;
% my $base = url_with->query([offset => 0]);
<tbody>
<tr>
<td>
<input type="checkbox" name="id" value="<%= $job->{id} %>">
</td>
<td>
<a href="<%= url_for->query([id => $job->{id}]) %>">
<%= $job->{id} %>
</a>
</td>
<td>
<a href="<%= $base->clone->query([task => $job->{task}]) %>">
<%= $job->{task} %>
</a>
</td>
<td>
<a href="<%= $base->clone->query([queue => $job->{queue}]) %>">
<%= $job->{queue} %>
</a>
</td>
<td class="from-now"><%= $job->{created} %></td>
<td><%= $related->($job) %></td>
<td class="accordion-toggle collapsed" data-toggle="collapse"
data-target="#job<%= $i %>">
% if ($job->{state} eq 'active') {
<span class="badge badge-primary">active</span>
% }
% elsif ($job->{state} eq 'failed') {
<span class="badge badge-danger">failed</span>
% }
% elsif ($job->{state} eq 'finished') {
<span class="badge badge-success">finished</span>
% }
% else {
<span class="badge badge-secondary">inactive</span>
% }
</td>
<td class="accordion-toggle collapsed expand"
data-toggle="collapse" data-target="#job<%= $i %>">
<span class="fas fa-lg expand-icon"></span>
</td>
</tr>
<tr>
<td colspan="8" class="hiddenRow">
<div class="collapse" id="job<%= $i %>">
<pre class="border rounded"><%= dumper Minion::_datetime $job %></pre>
</div>
</td>
</tr>
</tbody>
% }
</table>
</div>
</div>
% end
<div class="d-flex justify-content-center">
%= include 'minion/_pagination'
</div>