From ae3ad986f7b985430edbd8a827469e7fb4048069 Mon Sep 17 00:00:00 2001 From: Oliver Gorwits Date: Tue, 24 Oct 2023 20:03:14 +0100 Subject: [PATCH] #969 add job queue totals to report --- .../Netdisco/Web/Plugin/AdminTask/JobQueue.pm | 17 +++++++++++++++++ share/config.yml | 2 +- share/views/ajax/admintask/jobqueue.tt | 7 +++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/lib/App/Netdisco/Web/Plugin/AdminTask/JobQueue.pm b/lib/App/Netdisco/Web/Plugin/AdminTask/JobQueue.pm index 9e2da36b..ed41d7f6 100644 --- a/lib/App/Netdisco/Web/Plugin/AdminTask/JobQueue.pm +++ b/lib/App/Netdisco/Web/Plugin/AdminTask/JobQueue.pm @@ -22,10 +22,27 @@ ajax '/ajax/control/admin/jobqueue/delall' => require_role admin => sub { jq_delete(); }; +sub commify { + my $text = reverse $_[0]; + $text =~ s/(\d\d\d)(?=\d)(?!\d*\.)/$1,/g; + return scalar reverse $text; +} + ajax '/ajax/content/admin/jobqueue' => require_role admin => sub { content_type('text/html'); + my $jq_total = schema(vars->{'tenant'})->resultset('Admin')->count(); + my $jq_queued = schema(vars->{'tenant'})->resultset('Admin')->search({status => 'queued'})->count(); + my $jq_running = schema(vars->{'tenant'})->resultset('Admin')->search({status => { -like => 'queued-%'}})->count(); + my $jq_done = schema(vars->{'tenant'})->resultset('Admin')->search({status => 'done'})->count(); + my $jq_errored = schema(vars->{'tenant'})->resultset('Admin')->search({status => 'error'})->count(); + template 'ajax/admintask/jobqueue.tt', { + jq_total => commify($jq_total || 0), + jq_queued => commify($jq_queued || 0), + jq_running => commify($jq_running || 0), + jq_done => commify($jq_done || 0), + jq_errored => commify($jq_errored || 0), results => [ jq_log ], }, { layout => undef }; }; diff --git a/share/config.yml b/share/config.yml index 3078a0ff..7d1a1c1c 100644 --- a/share/config.yml +++ b/share/config.yml @@ -171,7 +171,7 @@ sidebar_defaults: device_port_col_idx_left: 8 device_port_col_idx_mid: 20 device_port_col_idx_right: 24 -jobqueue_refresh: 10 +jobqueue_refresh: 5 safe_password_store: true reports: [] system_reports: diff --git a/share/views/ajax/admintask/jobqueue.tt b/share/views/ajax/admintask/jobqueue.tt index 91a0c1b1..1673eb61 100644 --- a/share/views/ajax/admintask/jobqueue.tt +++ b/share/views/ajax/admintask/jobqueue.tt @@ -1,6 +1,13 @@ [% IF NOT results.size %]
The job queue is empty.
[% ELSE %] +
+ Total: [% jq_total | html_entity %] / + Queued: [% jq_queued | html_entity %] / + Running: [% jq_running | html_entity %] / + Done: [% jq_done | html_entity %] / + Errored: [% jq_errored | html_entity %] +