<!doctype html><html>
<head>
<title><%= title() || 'Minion' %></title>
<meta name="viewport" content="width=device-width, initial-scale=1">
%= javascript '/minion/jquery/jquery.js'
%= javascript '/minion/bootstrap/bootstrap.js'
%= stylesheet '/minion/bootstrap/bootstrap.css'
%= javascript '/minion/moment/moment.js'
%= javascript '/minion/d3/d3.js'
%= javascript '/minion/epoch/epoch.js'
%= stylesheet '/minion/epoch/epoch.css'
%= stylesheet '/minion/fontawesome/fontawesome.css'
%= stylesheet '/minion/app.css'
%= javascript '/minion/app.js'
<script>
$(() => {
checkAll();
humanTime();
pollStats('<%= url_for "minion_stats" %>');
});
</script>
%= content_for 'head'
</head>
<body class="d-flex flex-column h-100">
<nav class="navbar navbar-expand-lg navbar-light bg-light mb-3 border-bottom">
<div class="container">
%= link_to 'minion_dashboard' => (class => 'navbar-brand') => begin
<picture>
<img src="<%= url_for '/minion/logo-black.png' %>" srcset="<%= url_for '/minion/logo-black-2x.png' %> 2x">
</picture>
% end
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
% my $jobs = url_for 'minion_jobs';
<li class="nav-item">
<a class="nav-link" href="<%= $jobs->query(state => 'inactive') %>">
Inactive <span class="badge badge-pill badge-secondary minion-stats-inactive-jobs">0</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="<%= $jobs->query(state => 'active') %>">
Active <span class="badge badge-pill badge-primary minion-stats-active-jobs">0</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="<%= $jobs->query(state => 'finished') %>">
Finished <span class="badge badge-pill badge-success minion-stats-finished-jobs">0</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="<%= $jobs->query(state => 'failed') %>">
Failed <span class="badge badge-pill badge-danger minion-stats-failed-jobs">0</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="<%= url_for 'minion_locks' %>">
Locks <span class="badge badge-pill badge-secondary minion-stats-active-locks">0</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="<%= url_for 'minion_workers' %>">
Workers <span class="badge badge-pill badge-secondary minion-stats-workers">0</span>
</a>
</li>
</ul>
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" href="#searchModal" data-toggle="modal" data-target="#searchModal">
<i class="fas fa-search"></i> Search
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="<%= url_for $return_to %>">
<i class="fas fa-sign-out-alt" aria-hidden="true"></i> Back to Site
</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container flex-grow-1">
<div class="modal fade" id="searchModal" tabindex="-1" role="dialog" aria-labelledby="searchModalLabel"
aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form action="<%= url_for 'minion_jobs' %>">
<div class="modal-header">
<h5 class="modal-title" id="searchModalLabel">Search jobs</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<div class="form-group">
<label for="state">Task</label>
<select class="custom-select" id="state" name="task">
<option selected></option>
% for my $task (sort keys %{minion->tasks}) {
<option><%= $task %></option>
% }
</select>
</div>
<div class="form-group">
<label for="state">State</label>
<select class="custom-select" id="state" name="state">
<option selected></option>
<option>inactive</option>
<option>active</option>
<option>finished</option>
<option>failed</option>
</select>
</div>
<div class="form-group">
<label for="queue">Queue</label>
<input type="text" class="form-control" id="queue" name="queue">
</div>
<div class="form-group">
<label for="note">Note</label>
<input type="text" class="form-control" id="note" name="note">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="submit" class="btn btn-primary">Search</button>
</div>
</form>
</div>
</div>
</div>
%= content
</div>
<footer>
<div class="container-fluid p-3 mojo-footer">
<div class="container">
<div class="row">
<div class="col-sm align-self-center text-center">
<b>Free</b> and <b>Open Source</b>.
</div>
<div class="col-sm align-self-center text-center mojo-copy">
<i class="far fa-copyright"></i> 2014-2024 Sebastian Riedel and the
<a href="https://docs.mojolicious.org/Minion#AUTHORS">Minion contributors</a>.
</div>
<div class="col-sm align-self-center text-center mojo-social">
<a alt="GitHub" href="https://github.com/mojolicious/minion"><i class="fab fa-github-alt"></i></a>
<a alt="Mastodon" href="https://fosstodon.org/@mojolicious"><i class="fab fa-mastodon"></i></a>
<a alt="LinkedIn" href="https://www.linkedin.com/groups/8963713/"><i class="fab fa-linkedin"></i></a>
</div>
</div>
</div>
</div>
</footer>
</body>
</html>