[% WRAPPER layout.tt title="Evaluation $eval.id of jobset $project.name:$jobset.name " %] [% PROCESS common.tt %] <div class="btn-group pull-right"> <a class="btn btn-primary dropdown-toggle" data-toggle="dropdown" href="#"><i class="icon-white icon-eye-open"></i> Compare to...</a> <ul class="dropdown-menu"> <li><a href="?">Preceding evaluation in the same jobset</tt></a></li> [% IF project.jobsets_rs.count > 1 %] <li class="divider"></li> [% FOREACH j IN project.jobsets; IF j.name != jobset.name %] <li><a href="?compare=[% j.name %]">Jobset <tt>[% project.name %]:[% j.name %]</tt></a></li> [% END; END %] [% END %] </ul> </div> [% IF otherEval %] <p>Comparisons are relative to [% INCLUDE renderFullJobsetName project=otherEval.jobset.project.name jobset=otherEval.jobset.name %] evaluation <a href="[% c.uri_for(c.controller('JobsetEval').action_for('view'), [otherEval.id]) %]">[% otherEval.id %]</a>.</p> [% END %] <ul class="nav nav-tabs"> <li class="active"><a href="#tabs-status" data-toggle="tab">Job status</a></li> <li><a href="#tabs-inputs" data-toggle="tab">Inputs</a></li> </ul> <div class="tab-content"> <div id="tabs-status" class="tab-pane active"> [% BLOCK renderSome %] [% size = builds.size; max = full ? size : 30; %] [% INCLUDE renderBuildListBody builds=builds.slice(0, (size > max ? max : size) - 1) hideProjectName=1 hideJobsetName=1 %] [% IF size > max; params = c.req.params; params.full = 1 %] <tr><td class="centered" colspan="6"><a href="[% c.uri_for(c.controller('JobsetEval').action_for('view'), [eval.id], params) %]"><em>([% size - max %] more builds omitted)</em></a></td></tr> [% END %] [% END %] [% INCLUDE renderBuildListHeader unsortable=1 %] [% IF unfinished.size > 0 %] <tr><th class="subheader" colspan="6"><strong>Queued</strong> jobs</th></tr> [% INCLUDE renderSome builds=unfinished %] [% END %] [% IF new.size > 0 %] <tr><th class="subheader" colspan="6"><strong>New</strong> jobs</th></tr> [% INCLUDE renderSome builds=new %] [% END %] [% IF removed.size > 0 %] <tr><th class="subheader" colspan="6"><strong>Removed</strong> jobs</th></tr> [% size = removed.size; max = full ? size : 30; %] [% FOREACH j IN removed.slice(0,(size > max ? max : size) - 1) %] <tr> <td colspan="2"></td> <td colspan="2">[% INCLUDE renderJobName project=project.name jobset=jobset.name job=j.job %]</td> <td colspan="2"><tt>[% j.system %]</tt></td> </tr> [% END %] [% IF size > max; params = c.req.params; params.full = 1 %] <tr><td class="centered" colspan="6"><a href="[% c.uri_for(c.controller('JobsetEval').action_for('view'), [eval.id], params) %]"><em>([% size - max %] more jobs omitted)</em></a></td></tr> [% END %] [% END %] [% IF nowFail.size > 0 %] <tr><th class="subheader" colspan="6">Jobs that now <strong>fail</strong></th></tr> [% INCLUDE renderSome builds=nowFail %] [% END %] [% IF nowSucceed.size > 0 %] <tr><th class="subheader" colspan="6">Jobs that now <strong>succeed</strong></th></tr> [% INCLUDE renderSome builds=nowSucceed %] [% END %] [% IF stillFail.size > 0 %] <tr><th class="subheader" colspan="6">Jobs that still <strong>fail</strong></th></tr> [% INCLUDE renderSome builds=stillFail %] [% END %] [% IF stillSucceed.size > 0 %] <tr><th class="subheader" colspan="6">Jobs that still <strong>succeed</strong></th></tr> [% INCLUDE renderSome builds=stillSucceed %] [% END %] [% INCLUDE renderBuildListFooter %] [% IF c.user_exists %] <p> <a class="btn" href="[% c.uri_for(c.controller('JobsetEval').action_for('release'), [eval.id]) %]">Release</a> </p> [% END %] </div> <div id="tabs-inputs" class="tab-pane"> [% INCLUDE renderInputs inputs=eval.jobsetevalinputs %] [% IF otherEval %] <h3>Changes</h3> [% INCLUDE renderInputDiff inputs2=eval.jobsetevalinputs inputs1=otherEval.jobsetevalinputs %] [% END %] </div> </div> [% END %]