AK2UZDS2IRVBZP3GRNZS2SIKMKEFUBPIVSA45EZBH4UYFKWI2HCAC 225GEK4NN53NJ6EBDAJNECR76FILAHV7KNEG23TDQ2KYMG7NFEUAC EVYSAFB2LYZWBCFCEZSV6JVGRMYN3ALIZCBZG3IZVUDUXCLFYELAC CQQSJLONTAKIWT4AEEDZFLFAFCSIPEGWLBJDJIS7VJK6FJ3LZ2RAC DEMSSSB22UI2ZN26C56UYO4NZWMDCRYKLAQARGOTSORSDXX3ZNNQC QTC3SYBMNNTPZHQGXRMV5GU5KDODGXPIM3TIGWBAF7HDKNDKTCXQC 3HZY24CX4U2TO74HOY4YX3LBJIYF4DLXHCIY7J2RASAC4COMSMZAC 6QRHXIM3XHCDLSIIBEGETDV67V6LTV55QMHC64ZPBMLTAECM5N3QC TJPIS3UPRE4ZIPXGRO7B4KOPR7P6UDYWUKCNY6UHJQEQDXWS4XVAC D5QIOJGPKQJIYBUCSC3MFJ3TXLPNZ2XMI37GXMFRVRFWWR2VMTFAC OX6NYJDVCDX2UCJ4QQMTRJVZ535NOMCJGYCHDLCADJPQI7RMCXPQC ODNCGFQ5FPKFI624BVMLW7PJ2EFJOR3TY66OCZM42UNNTWBCF2TQC TFK74CQRYCOR2RAUZ6LATA3IJVR7QCWSPCMTXCJPPDPIRS7D5UTQC 3PNG7NIBQQURUUPRVQXYL342OT7JUUYOMY2JJNP6YDX7SYJDZMYAC if (!defined $activeJobs{$job->name}) {push @{$c->stash->{inactiveJobs}}, $job->name;}
push @{$c->stash->{jobs}}, $job->name;}}sub job_status_tab : Chained('jobsetChain') PathPart('job-status-tab') Args(0) {my ($self, $c) = @_;$c->stash->{template} = 'jobset-job-status-tab.tt';$c->stash->{filter} = $c->request->params->{filter} // "";my @evals = $c->stash->{jobset}->jobsetevals->search({ hasnewbuilds => 1}, { order_by => "id desc", rows => 20 });my $evals = {};my %jobs;my $nrBuilds = 0;foreach my $eval (@evals) {my @builds = $eval->builds->search({ job => { ilike => "%" . $c->stash->{filter} . "%" } },{ columns => ['id', 'job', 'finished', 'buildstatus'] });foreach my $b (@builds) {my $jobName = $b->get_column('job');$evals->{$eval->id}->{$jobName} ={ id => $b->id, finished => $b->finished, buildstatus => $b->buildstatus };$jobs{$jobName} = 1;$nrBuilds++;}last if $nrBuilds >= 10000;
[% PROCESS common.tt; USE Math %]<form class="form-search" id="filter-jobs"><input name="filter" type="text" class="input-large search-query" placeholder="Filter jobs..." [% HTML.attributes(value => filter) %]></input></form><script>$('#filter-jobs').submit(function() {$('#tabs-job-status').load("[% c.uri_for('/jobset' project.name jobset.name "job-status-tab") %]", $('#filter-jobs').serialize(), function(response, status, xhr) {if (status == "error") {$('#[% tabName %]').html("<div class='alert alert-error'>Error loading tab: " + xhr.status + " " + xhr.statusText + "</div>");}});return false;});</script>[% IF jobs.size == 0 %]<div class="alert">There are no matching jobs.</div>[% ELSE %][% evalIds = evals.keys.nsort.reverse %]<table class="table table-striped table-condensed table-header-rotated"><thead><tr><th style="width: 1em;">Job</th>[% FOREACH eval IN evalIds %]<th class="rotate-45"><div><span><a href="[% c.uri_for('/eval' eval) %]">[% eval %]</a></span></div></th>[% END %]</tr></thead><tbody>[% FOREACH j IN jobs-%]<tr><th>[% INCLUDE renderJobName project=project.name jobset=jobset.name job=j %]</th>[% FOREACH eval IN evalIds %]<td>[% r = evals.$eval.$j; IF r.id %]<a href="[% c.uri_for('/build' r.id) %]">[% INCLUDE renderBuildStatusIcon size=16 build=r %]</a>[% END %]</td>[% END %]</tr>[% END %]</tbody></table>[% END %]
<p>This jobset currently contains the following [% activeJobs.size %] jobs:<blockquote>[% IF activeJobs.size == 0 %]<em>(none)</em>[% END %][% FOREACH j IN activeJobs %][% INCLUDE renderJobName project=project.name jobset=jobset.name job=j %]<br/>[% END %]</blockquote></p>
[% IF jobs.size == 0 %]<div class="alert">This jobset has no jobs yet.</div>[% ELSE %]<div class="well well-small">Below is the list of all [% jobs.size%] jobs that have ever existed in this jobset. Jobs that are nolonger part of the jobset (i.e., that don't appear in the latestevaluation of the jobset) are <span class="muted">grayed out</span>.</div>
<p>This jobset used to contain the following [% inactiveJobs.size %] jobs:<blockquote>[% IF inactiveJobs.size == 0 %]<em>(none)</em>[% END %][% FOREACH j IN inactiveJobs %][% INCLUDE renderJobName project=project.name jobset=jobset.name job=j %]<br/>[% END %]</blockquote></p>
<table class="table table-striped table-condensed"><thead><tr><th>Job name</th></tr></thead><tbody>[% FOREACH j IN jobs %]<tr><td><span class="[% IF !activeJobs.$j %]muted override-link[% END %]">[% INCLUDE renderJobName project=project.name jobset=jobset.name job=j %]</span></td></tr>[% END %]</tbody></table>[% END %]