Add jobs and alerts interface.

master
Manager Bot 3 years ago
parent 6132c9b409
commit 5feb6e1d91
  1. 3
      Web/lib/MJB/Web.pm
  2. 6
      Web/templates/admin/_nav.html.ep
  3. 13
      Web/templates/admin/alerts.html.ep
  4. 152
      Web/templates/admin/jobs.html.ep

@ -223,6 +223,9 @@ sub startup ($self) {
$admin->get ( '/admin/invites' )->to('Admin#invites' )->name('show_admin_invites' ); $admin->get ( '/admin/invites' )->to('Admin#invites' )->name('show_admin_invites' );
$admin->post( '/admin/invite' )->to('Admin#do_invite' )->name('do_admin_invite' ); $admin->post( '/admin/invite' )->to('Admin#do_invite' )->name('do_admin_invite' );
$admin->post( '/admin/invite/remove' )->to('Admin#do_invite_remove' )->name('do_admin_invite_remove' ); $admin->post( '/admin/invite/remove' )->to('Admin#do_invite_remove' )->name('do_admin_invite_remove' );
$admin->get ( '/admin/alerts' )->to('Admin#alerts' )->name('show_admin_alerts' );
$admin->post( '/admin/alert/:id' )->to('Admin#do_alert_read' )->name('do_admin_alert_read' );
$admin->get ( '/admin/jobs' )->to('Admin#jobs' )->name('show_admin_jobs' );
} }

@ -30,6 +30,12 @@
<div class="flex-grow-1 text-right"></div> <div class="flex-grow-1 text-right"></div>
<li class="nav-item">
<a class="nav-link <%= $page eq 'jobs' ? 'active' : '' %>" href="<%= $c->url_for( 'show_admin_jobs' ) %>">Jobs</a>
</li>
<li class="nav-item">
<a class="nav-link <%= $page eq 'alerts' ? 'active' : '' %>" href="<%= $c->url_for( 'show_admin_alerts' ) %>">Alerts</a>
</li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link <%= $page eq 'servers' ? 'active' : '' %>" href="<%= $c->url_for( 'show_admin_servers' ) %>">Servers</a> <a class="nav-link <%= $page eq 'servers' ? 'active' : '' %>" href="<%= $c->url_for( 'show_admin_servers' ) %>">Servers</a>
</li> </li>

@ -0,0 +1,13 @@
% layout 'standard', title => 'Dashboard', sb_active => 'admin';
%= include 'admin/_nav', page => 'alerts'
%= include '_base/status_window';
% for my $alert ( $c->db->system_notes( { is_read => 0 } )->all ) {
<div class="mt-3 alert alert-success" role="alert">
<%= $alert->content %>
<%= $alert->source %>
</div>
% }

@ -0,0 +1,152 @@
% layout 'standard', title => 'Dashboard', sb_active => 'admin';
%# if ( $c->minion->jobs({ states => [ 'inactive', 'active' ], notes => [ '_bid_' . $blog->id ] } )->total >= 1 ) {
%# $c->stash->{http_refresh} = 5;
%# }
%= include 'admin/_nav', page => 'jobs'
%= include '_base/status_window';
% if ( $c->stash->{success} ) {
<div style="margin-top: 2em" class="alert alert-success" role="alert">
<%= $c->stash->{success_message} %>
</div>
% }
% if ( $c->stash->{errors} ) {
<div style="margin-top: 2em" class="alert alert-danger" role="alert">
There were errors with your request that could not be resolved:
<ul>
% for my $error ( @{$c->stash->{errors}} ) {
<li><%= $error %></li>
% }
</ul>
</div>
% }
%# Job Panel %
% my $index = 0;
% foreach my $build ( $c->db->admin_jobs->all ) {
% $index++;
% if ( my $build_job = $c->minion->job( $build->{job_id} ) ) {
% my $job = $build_job->info;
% if ( $job->{state} eq 'finished' ) {
<div class="card mt-4">
<div class="card-header alert-success">
%= include '_svg/checkmark'
Build job <%= $build->{id} %>/<%= $job->{task} %> completed successfully. (Queued: <%= $build->{date} %>)
<button class="btn" data-bs-toggle="collapse" data-bs-target="#job_window_<%= $job->{id} %>">
%= include '_svg/chevron'
</button>
</div>
<div id="job_window_<%= $job->{id} %>" class="card-body <%= $index == 1 ? '' : 'collapse' %>">
%= include 'dashboard/_milestone', milestone => { is_complete => $job->{notes}->{is_deploy_complete}, text => 'Deploy to Webserver' };
%= include 'dashboard/_milestone', milestone => { is_complete => $job->{notes}->{is_build_complete}, text => 'Build Website' };
%= include 'dashboard/_milestone', milestone => { is_complete => $job->{notes}->{is_clone_complete}, text => 'Clone Repo & Check Settings' };
<hr />
<button class="btn btn-sm btn-primary" data-bs-toggle="collapse" data-bs-target="#job_log_window_<%= $job->{id} %>">View Logs</button>
<div id="job_log_window_<%= $job->{id} %>" class="card-body collapse">
<hr />
<pre>
% for my $line ( @{$job->{notes}{logs}} ) {
<%= "$line\n" =%>
% }
</pre>
</div>
</div>
</div>
% } elsif ( $job->{state} eq 'inactive' ) {
<div class="card mb-4 alert-warning">
<div class="card-header">
<div class="spinner-grow spinner-grow-sm" role="status">
<span class="visually-hidden">Waiting...</span>
</div>
Build <%= $build->{id} %> pending build. (Queued: <%= $build->{date} %>)
</div>
</div>
% } elsif ( $job->{state} eq 'failed' ) {
<div class="card mt-4">
<div class="card-header alert-warning">
%= include '_svg/failed'
Build <%= $build->{id} %> failed. (Queued: <%= $build->{date} %>)
<button class="btn" data-bs-toggle="collapse" data-bs-target="#job_window_<%= $job->{id} %>">
%= include '_svg/chevron'
</button>
</div>
<div id="job_window_<%= $job->{id} %>" class="card-body <%= $index == 1 ? '' : 'collapse' %>">
%= include 'dashboard/_website/milestone', milestone => { is_complete => $job->{notes}->{is_deploy_complete}, text => 'Deploy to Webserver' };
%= include 'dashboard/_website/milestone', milestone => { is_complete => $job->{notes}->{is_build_complete}, text => 'Build Website' };
%= include 'dashboard/_website/milestone', milestone => { is_complete => $job->{notes}->{is_clone_complete}, text => 'Clone Repo & Check Settings' };
<hr />
% if ( ! ref $job->{result} ) {
<p class="text-danger"><strong>System Error: <%= $job->{result} %></strong></p>
% } else {
<p class="text-danger"><strong>Error: <%= $job->{result}{error} %></strong></p>
% }
<button class="btn" data-bs-toggle="collapse" data-bs-target="#job_log_window_<%= $job->{id} %>">View Logs</button>
<div id="job_log_window_<%= $job->{id} %>" class="card-body collapse">
<hr />
<pre>
% for my $line ( @{$job->{notes}{logs}} ) {
<%= "$line\n" =%>
% }
</pre>
</div>
</div>
</div>
% } elsif ( $job->{state} eq 'active' ) {
<div class="card mt-4">
<div class="card-header alert-warning">
<div class="spinner-grow spinner-grow-sm" role="status">
<span class="visually-hidden">Building...</span>
</div>
Building job <%= $build->{id} %>/<%= $job->{task} %>... (Queued: <%= $build->{date} %>)
</div>
<div id="job_window_<%= $job->{id} %>" class="card-body">
%= include 'dashboard/_milestone', milestone => { is_complete => $job->{notes}->{is_deploy_complete}, text => 'Deploy to Webserver' };
%= include 'dashboard/_milestone', milestone => { is_complete => $job->{notes}->{is_build_complete}, text => 'Build Website' };
%= include 'dashboard/_milestone', milestone => { is_complete => $job->{notes}->{is_clone_complete}, text => 'Clone Repo & Check Settings' };
<hr />
<div id="job_log_window_<%= $job->{id} %>" class="card-body">
<hr />
<pre>
% for my $line ( @{$job->{notes}{logs}} ) {
<%= "$line\n" =%>
% }
</pre>
</div>
</div>
</div>
% } else {
Job in unknown state: <%= $build->{job_id} %>
%= $job->{state}
% }
% } else {
Job not found: <%= $build->{job_id} %>
% }
% }
Loading…
Cancel
Save