Q4VDOA762MDHLJKNJMPLHFYRRACCT3DQXF66ZTVMETZCR52B72OQC N45RZUQ6E7XXUPVWMR2SSZZB57ZD236PEMBCCOCAQOUOYFVJDBXQC DE2DNCOIEVRA6OOSOSXI2USRPOWL4SC6XPCJFOUM54BS2ESCEWOAC GEL2WHSU2OFBNMGPEJ7RIJEGGRSGJOQHVDFJTGMYFPM2H2VPK2EAC ODNCGFQ5FPKFI624BVMLW7PJ2EFJOR3TY66OCZM42UNNTWBCF2TQC UMFB2767NMAG46NAG3XHMYQMCLF5TMVN46SST4AM2CFUEMNZH3WQC 3HZY24CX4U2TO74HOY4YX3LBJIYF4DLXHCIY7J2RASAC4COMSMZAC AKAXJDMWEPMXMUY5R53AOVYAGSV42ZZ53URH7HAPUB5KZZV56TPAC 6QRHXIM3XHCDLSIIBEGETDV67V6LTV55QMHC64ZPBMLTAECM5N3QC JXPHAZMVKLQZ6NHALF3IH4EP34ZGP7QW75OMUTAJYK4YGU3FRGOAC ZI535LI6PJMKSOBJE33B3RRZ5S2JVTR3XPUDTSXJW6BZNTAHS3GQC HPEG2RHVNHOPB5T4ZRXANIRBMVOVY3B5GFETJRYOTDJFVAYH2TQAC OEPUOUNBNTHTFZVDXREGBQCKFRCWMVP2MDVK4OA47VK2DBKEWVYAC IK53RV4VGOHLCZGQCCIKPB45M3C7M7YMNBOJFBGZJ4LWIZNU4QNQC U4TD3AIQXBJFFUORTMIC4IHZTVBORRKL2TZ2FSP4G665ECZOEMNAC 22JB5HNESA5OX5ABFISGCJCO6R7GF3AUTXDHGAT3PM7IDVIBKWWAC L7NUCXKSELV2XQBSETAN2KSXN5ONX3ESJDHZL6737LMK4KPGQANQC TJPIS3UPRE4ZIPXGRO7B4KOPR7P6UDYWUKCNY6UHJQEQDXWS4XVAC G5YSUSNZCQCKYKR267EZ63E3KIW42R2YZPY2CMIJPYAHPNW3KY3QC PC6UOHH72AUR64GFBIXXLKGP2CLEUWCI3E3QMKNYCZHRMNCHUDVAC SGNXIOI4SO56F4YCGVMGZZO3AYXGPDL4FL75RDXAK5Y22IYWPPAQC 7YBYT2LQML2PKEO6UO4444AGSASS664UCDXW2YO3ALB7THQHCEBQC QTFVCDIFHTF36AGU4UGNCTWSHQYTM2KERXS26TPAJK7IDJHL7BVAC QL55ECJ6KMMBUOWQ6LKSOVN7L43CH4S6SPE2AQ3VX3KSGC32RP4AC $c->stash->{evals} = [ $c->stash->{jobset}->jobsetevals->search({ hasnewbuilds => 1 },{ order_by => "id DESC", '+select' => # !!! Slow - should precompute this.[ "(select count(*) from JobsetEvalMembers where eval = me.id)", "(select count(*) from JobsetEvalMembers where eval = me.id and exists(select 1 from Builds b where b.id = build and b.finished = 0))", "(select count(*) from JobsetEvalMembers where eval = me.id and exists(select 1 from Builds b where b.id = build and b.finished = 1))", "(select count(*) from JobsetEvalMembers where eval = me.id and exists(select 1 from Builds b where b.id = build and b.finished = 1 and b.buildStatus = 0))"], '+as' => [ "nrBuilds", "nrScheduled", "nrFinished", "nrSucceeded" ], rows => 5}) ];
[% IF page * resultsPerPage < total %][<a href="[% "$baseUri?page="; (page + 1) %]">Next</a>][% END %][<a href="[% "$baseUri?page="; (total - 1) div resultsPerPage + 1 %]">Last</a>]</p>-->[% END %]
[% BLOCK renderEvals %]<table class="tablesorter table table-condensed table-striped"><thead><tr><th>#</th><th>Date</th><th colspan='2'>Success</th></tr></thead><tbody>[% last = nrShown - 1; FOREACH n IN [0..last]; eval = evals.$n; m = n + 1; next = evals.$m; %]<tr><td><a href="[% c.uri_for(c.controller('JobsetEval').action_for('view'), [eval.id]) %]">[% eval.id %]</a> </td><td>[% INCLUDE renderDateTime timestamp = eval.timestamp %] </td><td align='right'><span class="label label-success">[% eval.get_column('nrSucceeded') %]</span><span class="label label-important">[% eval.get_column('nrBuilds') - eval.get_column('nrSucceeded') - eval.get_column('nrScheduled') %]</span>[% IF eval.get_column('nrScheduled') > 0 %]<span class="label">[% eval.get_column('nrScheduled') %]</span>[% END %]</td><td align='right'>[% diff = eval.get_column('nrSucceeded') - next.get_column('nrSucceeded');IF diff > 0 %]<span class='label label-success'><strong>+[% diff %]</strong></span>[% ELSIF diff < 0 && eval.get_column('nrScheduled') == 0 %]<span class='label label-important'><strong>[% diff %]</strong></span>[% END %]</td></tr>[% END %]</tbody></table>
[% END %]
<table class="tablesorter table table-condensed table-striped"><thead><tr><th>#</th><th>Date</th><th colspan='2'>Success</th></tr></thead><tbody>[% last = nrShown - 1; FOREACH n IN [0..last]; eval = evals.$n; m = n + 1; next = evals.$m; %]<tr><td><a href="[% c.uri_for(c.controller('JobsetEval').action_for('view'), [eval.id]) %]">[% eval.id %]</a> </td><td>[% INCLUDE renderDateTime timestamp = eval.timestamp %] </td><td align='right'><span class="label label-success">[% eval.get_column('nrSucceeded') %]</span><span class="label label-important">[% eval.get_column('nrBuilds') - eval.get_column('nrSucceeded') - eval.get_column('nrScheduled') %]</span>[% IF eval.get_column('nrScheduled') > 0 %]<span class="label">[% eval.get_column('nrScheduled') %]</span>[% END %]</td><td align='right'>[% diff = eval.get_column('nrSucceeded') - next.get_column('nrSucceeded');IF diff > 0 %]<span class='label label-success'><strong>+[% diff %]</strong></span>[% ELSIF diff < 0 && eval.get_column('nrScheduled') == 0 %]<span class='label label-important'><strong>[% diff %]</strong></span>[% END %]</td></tr>[% END %]</tbody></table>
[% INCLUDE renderEvals %]
[% IF lastBuilds %]<h2>Most recent builds</h2>[% INCLUDE renderBuildList builds=lastBuilds hideProjectName=1 hideJobsetName=1 %][% END %]
<h2>Most recent evaluations</h2>[% INCLUDE renderEvals nrShown=5 %]<a href="c.uri_for(c.controller('Jobset').action_for('evals'), [project.name, jobset.name])" class="btn">All evaluations</a><br /><br />
[% IF c.check_user_roles('admin') %]<td>[% INCLUDE maybeButton uri = c.uri_for(c.controller('Admin').action_for('force_eval'), project.name, j.name) content = "Evaluate" confirmmsg = ("Are you sure you want to force evaluation of jobset " _ project.name _ ":" _ j.name _ "?") %][% IF j.hidden %][% INCLUDE maybeButton uri = c.uri_for('/jobset' project.name j.name 'unhide') content = "Unhide" %][% ELSE %][% INCLUDE maybeButton uri = c.uri_for('/jobset' project.name j.name 'hide') content = "Hide" %][% END %]</td>[% END%]
[% INCLUDE menuItem uri = c.uri_for('/jobset' project.name jobset.name 'clone') title="Clone jobset" %]
[% INCLUDE maybeLink uri = c.uri_for(c.controller('Admin').action_for('force_eval'), project.name, j.name) content = "Evaluate" confirmmsg = ("Are you sure you want to force evaluation of jobset " _ project.name _ ":" _ j.name _ "?") %][% IF j.hidden %][% INCLUDE menuItem uri = c.uri_for('/jobset' project.name j.name 'unhide') title = "Unhide" %][% ELSE %][% INCLUDE menuItem uri = c.uri_for('/jobset' project.name j.name 'hide') title = "Hide" %][% END %]