YTSIRIMKV2EN6CMO6LFX5J3NBJJYWBJKYDU3Z53CGXCIWP3FYI2QC TP3PFR5KVAORTBLZI6EMZYZSQJI3BUEH3YRVTQJ5EM4M6VCSH5EAC IE3SRMWZ4YT6EYKAOG2HH54MXG5TYYBW7OEBHNYJUGW7KILFXX2AC J5UVLXOK6EDIL5I7VKWH4V2QDS4DPD7FHRK6XBWSXFRQS4JKXFZQC L2E6EVE2RVFVDCUNRJ4CZYSQNS2DZUA5DTBETHBDUQUV2KQQRAOQC H7CNGK4OJNRYZQGPLBGR72DULLEPFQ5UISF5J24D7IMA7SYW5LGQC JLDUSNUOOQNL63BOPXIWZOWFRQ5X35RWG33PJB3J3KMR6QR7TN7QC 2AUODJBTW2UJ47UB3SREZ7O7UTTJDQ4AGUQMPZAI4F3Y6BUF6LUQC US27ZTX5HCH53SQN2KFSCV2GL2625XL5J3WCDR7D5HLPA7ZSPX5AC IK53RV4VGOHLCZGQCCIKPB45M3C7M7YMNBOJFBGZJ4LWIZNU4QNQC TQKGQ5R36VOLLJ3SR2WWIQ6VSN245N3QG4JHI2ZCP5T6RXN3PJWAC WHAFVCEIHCWHKY2UVRGRQORERUAK6SZJI7ZENA367ZX4EXDIQMDQC WYN733STK5DUQSWHSS6EYZK32KPZII64HLX4NS7TYUSFZ6AAFLGAC ELCI5T2ALF37VXYM5POHPO3CAMMPRB65BXGDRVUAZG53NKKLGIEAC UVMFS73TI6RARMAAGY2UVS5LCPZUKLQECXQQVER4F7S4BNUXQQ3AC BA46C5LNEQ57N52IJTCEXW4J74F33KKNYHYXE6ZJLQ5ARMCJPUHAC PBFZEQLZXMOBQIWL5WQWH7D62XG6M7ROEEAH6PWAKKKOM3W5I3RQC 7YBYT2LQML2PKEO6UO4444AGSASS664UCDXW2YO3ALB7THQHCEBQC W6DC6K4INJQOJYR553ISCKZV7YIOGHEM3FZQPOLAPSZQ3KSJDMRQC JD27RBKM7ROBUKBEQDFSCPO3MDE2AFZ6DSSKFUPJ7IC2MCGDVFGAC LQNBKF3DKVYK3NPDGK7OLOTIWIF4HR3EKLRYNLZJB4G3NMIVBCEAC $c->stash->{allBuilds} = [$c->model('DB::Builds')->search({finished => 1}, {order_by => "timestamp DESC"})];# Get the latest finished build for each unique job.$c->stash->{latestBuilds} = [$c->model('DB::Builds')->search(undef,{ join => 'resultInfo', where => "finished != 0 and timestamp = (select max(timestamp) from Builds " ."where project == me.project and attrName == me.attrName and finished != 0 and system == me.system)", order_by => "project, attrname, system"})];
}sub jobstatus :Local {my ($self, $c) = @_;$c->stash->{template} = 'jobstatus.tt';# Get the latest finished build for each unique job.$c->stash->{latestBuilds} = [$c->model('DB::Builds')->search(undef,{ join => 'resultInfo', where => "finished != 0 and timestamp = (select max(timestamp) from Builds " ."where project == me.project and attrName == me.attrName and finished != 0 and system == me.system)", order_by => "project, attrname, system"})];}sub all :Local {my ($self, $c, $page) = @_;$c->stash->{template} = 'all.tt';$page = int($page) || 1;my $resultsPerPage = 50;my $nrBuilds = scalar($c->model('DB::Builds')->search({finished => 1}));$c->stash->{page} = $page;$c->stash->{resultsPerPage} = $resultsPerPage;$c->stash->{totalBuilds} = $nrBuilds;$c->stash->{builds} = [$c->model('DB::Builds')->search({finished => 1}, {order_by => "timestamp DESC", rows => $resultsPerPage, page => $page})];
[% WRAPPER layout.tt title="All Builds" %][% PROCESS common.tt %]<h1>All Builds</h1><p>Showing builds [% (page - 1) * resultsPerPage + 1 %] - [% (page - 1) * resultsPerPage + builds.size %]out of [% totalBuilds %] in order of descending timestamp.</p>[% PROCESS renderBuildList %][<a href="[% c.uri_for('/all' 1) %]">First</a>][% IF page > 1 %][<a href="[% c.uri_for('/all' (page - 1)) %]">Prev</a>][% END %][% IF page * resultsPerPage < totalBuilds %][<a href="[% c.uri_for('/all' (page + 1)) %]">Next</a>][% END %][<a href="[% c.uri_for('/all' (totalBuilds - 1) div resultsPerPage + 1) %]">Last</a>][% END %]
<h2>Job status</h2><p>Below are the latest builds for each job.</p>[% PROCESS renderBuildList builds=latestBuilds %]<h2>All builds</h2><p>Number of builds: [% allBuilds.size %]</p>[% PROCESS renderBuildList builds=allBuilds %]
[% WRAPPER layout.tt title="Job Status" %][% PROCESS common.tt %]<h1>Job Status</h1><p>Below are the latest builds for each job.</p>[% PROCESS renderBuildList builds=latestBuilds %][% END %]
[% IF jobNames && jobNames.size > 0 %]<ul>[% FOREACH jobName IN jobNames -%]<li><a href="[% c.uri_for('/job' curProject.name jobName.attrname) %]"><tt>[% jobName.attrname %]</tt></a></li>[% END %]</ul>[% ELSE %]<p>No builds have been performed or scheduled.</p>[% END %]<h2>Statistics</h2>[% PROCESS showBuildStats %][% END %]