% 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 %>"><i class="far fa-arrow-alt-circle-left"></i> Parents</a>
        % }
        % if (@$children) {
          % my $url = url_for('minion_jobs')->query(id => $children);
          <a class="dropdown-item" href="<%= $url %>"><i class="far fa-arrow-alt-circle-right"></i> Children</a>
        % }
        % if ($id) {
          % my $url = url_for('minion_workers')->query(id => $id);
          <a class="dropdown-item" href="<%= $url %>"><i class="fas fa-hard-hat"></i> 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 class="btn-group" role="group">
          <button class="btn btn-outline-secondary dropdown-toggle" type="button" id="dropdownMenu2"
            data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
            <i class="fas fa-traffic-light"></i> Signal
          </button>
          <div class="dropdown-menu" aria-labelledby="dropdownMenu2">
            <button class="dropdown-item" name="do" value="sig_int" type="submit">
              INT
            </button>
            <button class="dropdown-item" name="do" value="sig_term" type="submit">
              TERM
            </button>
            <button class="dropdown-item" name="do" value="sig_usr1" type="submit">
              USR1
            </button>
            <button class="dropdown-item" name="do" value="sig_usr2" type="submit">
              USR2
            </button>
          </div>
        </div>
      </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>Runtime</th>
            <th></th>
          </tr>
        </thead>
        % if (@$jobs) {
          % 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>
                % if (grep { $job->{state} eq $_ } qw(active finished failed)) {
                  % my $end = $job->{state} eq 'active' ? 'time' : 'finished';
                  % my $runtime = $job->{$end} - $job->{started};
                  <td class="accordion-toggle collapsed duration" data-toggle="collapse" data-target="#job<%= $i %>">
                    <%= $runtime %>
                  </td>
                % }
                % elsif ($job->{delayed} > $job->{time}) {
                  <td class="accordion-toggle collapsed" data-toggle="collapse" data-target="#job<%= $i %>">
                    <div class="d-inline duration">
                      <%= $job->{delayed} - $job->{time} %>
                    </div>
                    delay
                  </td>
                % }
                % else {
                  <td class="accordion-toggle collapsed" data-toggle="collapse" data-target="#job<%= $i %>">waiting</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="9" class="hiddenRow">
                  <div class="collapse" id="job<%= $i %>">
                    <pre class="border rounded"><%= Minion::_dump(Minion::_datetime($job)) %></pre>
                  </div>
                </td>
              </tr>
            </tbody>
          % }
        % }
        % else {
          <tr><td colspan="9"><p class="text-center"><i class="fas fa-info-circle"></i> No jobs found</p></td></tr>
        % }
      </table>
    </div>
  </div>
% end

<div class="d-flex justify-content-center">
  %= include 'minion/_pagination'
</div>