4WZQW2N6NJSIKSK7DCOV2YVEG5C45LLUM2FCCZRLISUXUGMBGF6QC OXHCJQDVBHQMRR4FYAREBPWVUEAHPHU24EJXTS2HSTLWUBZZMPBAC C5YJTWYMPVLRDDLE3XO7FD4Z24VC5GELPY54O5ZVCIZESJBT2IWQC OAA2HBFA4DFVVEDHVCEQY35HP56URFXI64K2J7SG3J24JZ2SCETAC IVEDB2LGMMWSMGGHNP7S2ANDKMJKRU66NN7SEOGY7YOMASX472MQC YPDYBK5GXGNHZMJWC2EHO3T4BIMYK5LMP2G3ABGHOKGIWV4ONIYAC 6KIJX24R5RRDR2UQMUAWHF3N6V6DKKL5URYSLB7IT4J5C3RO4G2AC IK53RV4VGOHLCZGQCCIKPB45M3C7M7YMNBOJFBGZJ4LWIZNU4QNQC JLDUSNUOOQNL63BOPXIWZOWFRQ5X35RWG33PJB3J3KMR6QR7TN7QC E5DMQRPO5BQ6KNA3C34U5JQQ5ZAZOJE2HTWM3JUVIG42LAVHPHFQC 2WUNXJGWGHQRE24ZJT4VIP35OHO2E4VCKA65TCCKU55BNBIPABCAC FXW2UR7FY7NPCEHSCAO4FTZHA47K5YACKHJJVKP6T3V42LJJTLAAC JTRG7RDQXKPSO4ESGDLSVAT5WIFGKDL424MN6YYCVTKCOR2FTXRQC O25D52TAMOPAK45N4II5XMWOBMPQJNHLW22M37COVY43EKNQBWJAC YAPITGB3ENS6PXRBFC647ESCQUYG442DKHUPM46PJKCKTMHWGVXAC YFPZ46YK4BOI6VH2H3F757UEGEYONURUAEDAYEIBLRY33PLSSO4AC H7CNGK4OJNRYZQGPLBGR72DULLEPFQ5UISF5J24D7IMA7SYW5LGQC GNIEG2GCT6BUYHY2WXUAQVKHSYB6TVQT52O5GEY6COLKFK4ODCCQC DE2DNCOIEVRA6OOSOSXI2USRPOWL4SC6XPCJFOUM54BS2ESCEWOAC 75XUS62YF7OK4S45RCZ5OOASXEBIEDNDBYEEMOCBDHVXV4GA3NLQC G5YSUSNZCQCKYKR267EZ63E3KIW42R2YZPY2CMIJPYAHPNW3KY3QC 7Z3YOKCVJE242IDO4HQVOBBLHFOXXCQIBIKDIUXQLTU5LY5QAORQC S5PV6IIMKJ7PGWIFLLXERHYF3BCP2UEGFRZEZLD6UUBLVEZXJLUAC 6FXGLP7TYUCKFF5LDNVF6X7X6FBWQ3D7RUMPZQQ3BO76MXQAEIRAC OEPUOUNBNTHTFZVDXREGBQCKFRCWMVP2MDVK4OA47VK2DBKEWVYAC U4TD3AIQXBJFFUORTMIC4IHZTVBORRKL2TZ2FSP4G665ECZOEMNAC 3PNG7NIBQQURUUPRVQXYL342OT7JUUYOMY2JJNP6YDX7SYJDZMYAC T6KISLR63EHMQ4QQI3Z46PSVQITCYNZL32K3AR2LKQ3K6ESOW3QQC J7EE2XZAB5EZICAZGZ6DKM4JDMH73A5AJIW6INYMWJHENIGVANQAC HPEG2RHVNHOPB5T4ZRXANIRBMVOVY3B5GFETJRYOTDJFVAYH2TQAC CVWQXYKMTLQSUFPTCYR4Q47IDX7TGGYPR2UKXB3NID6YMV3GRYMQC LVRSAUULBI7F6GFYCAAJ54GP3AYXMMNBSJ5IJRFFRGDKXS2X57WAC MAXVLN2KUSXLG4TEDTUSJJHOJV7T57ECTTJW5MN4UM7DWOM4WVCAC MOX7XJ2E3XISXA7V7T4W6GEAGECGWBZ4PYSLTYBVVR4VAKOI33CQC PTH265IXOZRYZNCF3NP7I5YOYIZIGNN7NCXJENF3YIWONUFBB2QQC FEMR2C5W2FSKICFY2C25NBHJH7EJBCBX75GETTKM3AKO5KM3273AC T2232OBSNVDGHY46RY5BBB2IET5LV5OLKSSBDYUF7KAEDBUOTC7QC RAKTHYAIX757GPYWCHOE5H5RD3QYKQW3QKLWUIUKPHQ5QGWQXWQQC QL55ECJ6KMMBUOWQ6LKSOVN7L43CH4S6SPE2AQ3VX3KSGC32RP4AC IE3SRMWZ4YT6EYKAOG2HH54MXG5TYYBW7OEBHNYJUGW7KILFXX2AC JFZNAYJXKCMXYHGCLTRH7Q6TOFGJ4BT6332GONCWVYRLNMDDG3KAC ODNCGFQ5FPKFI624BVMLW7PJ2EFJOR3TY66OCZM42UNNTWBCF2TQC JARRBLZDQ2JZWY7IUVPTOT7WJMBPMLFLF2MGLVGOYROAAISYGLSAC ZI535LI6PJMKSOBJE33B3RRZ5S2JVTR3XPUDTSXJW6BZNTAHS3GQC PCZHB5JU5EEBUHSCO4HP4RVXWXBW2YKK4YXVGNZNMFYTETWKRS2QC XHK7IGYISKWLHOOM3ZQAVLSRUNS2SV43TTKRX4XLPZZJ4DP3RWYAC 3SQCOHZNX4XUQU3KW6DXP65EQ2KHYZN6LTKVSKBXPTY4J3FKU2JQC KAZWI5G4DN2WUW7L2KWZR3D3QQJON4ISQYP7CRLC5HAOPIDYQGRQC 22JB5HNESA5OX5ABFISGCJCO6R7GF3AUTXDHGAT3PM7IDVIBKWWAC 2M7J26V4WXJTOVN7TIOMOLUD2QA4LNTFLNOUTJWKL4XEGE6W2GKQC SHYRGAWZFYGRWCRB54TYL2GTU3B4WMQ3J5H4ZHGV27W7PUQN3EWQC X5OIC5FFAUJDDVTBXUEVTLXHMT4PI2HSLO6YK7NPJLZHHRQIL3KAC 2B63JW6FYYHPV4JKU7K6RDTFH76JYUCFO23GAFZXAUHFGQTODOZQC PMNWRTGJ4GVSMSSAWSUD57B26PCRAHMZIQ5SIWJIK7A74ENKEQLAC Z4E37VQWO56TKKFZ6TJECTSXLFJMNLWPWQIOBCLPKQISC3DV5TGQC SMCOU72FKTPFNCDXFJAILVUWFE4DY33CJJE4436H5POKENFFDFFAC ZXJSQF6BWICW7YQJJLZVUVVWEUUDCCJOZ4QXHE765ZVQAEUIQLKQC Q4VDOA762MDHLJKNJMPLHFYRRACCT3DQXF66ZTVMETZCR52B72OQC RWFCW6ZNIE24XTEQUK5Y37K42BQER7EDGSSD4GQNFTGO5V4TY72QC BTYVIHF7GMTMJKNJQ7TX5R3Z5ABWAGBCEDJPLRHEWIR37OOYRCEAC KJC7RKIEGIR62HPUILVCORKOFYTIAVNPHU3U2CDS36ZEQA7T7UBAC 3U3CXCDWYL3MHNHANECWQBRDFXXH3QIR5V6WXJXERWOKVTFQMQZAC [% inputTypes ={ "svn" = "Subversion export", "svn-checkout" = "Subversion checkout", "bzr" = "Bazaar export", "bzr-checkout" = "Bazaar checkout", "git" = "Git checkout", "hg" = "Mercurial checkout", "string" = "String value", "boolean" = "Boolean", "path" = "Local path", "build" = "Build output", "sysbuild" = "Build output (same system)"}%]
inputTypes ={ "svn" = "Subversion export", "svn-checkout" = "Subversion checkout", "bzr" = "Bazaar export", "bzr-checkout" = "Bazaar checkout", "git" = "Git checkout", "hg" = "Mercurial checkout", "string" = "String value", "boolean" = "Boolean", "path" = "Local path", "build" = "Build output", "sysbuild" = "Build output (same system)"};
[% BLOCK renderFullJobNameOfBuild %][% INCLUDE renderFullJobName project=build.get_column("project") jobset = build.get_column("jobset") job = build.get_column("job") %][% END %]
BLOCK renderFullJobNameOfBuild;INCLUDE renderFullJobName project=build.get_column("project") jobset = build.get_column("jobset") job = build.get_column("job");END;
[% BLOCK renderDuration %][% IF duration >= 24 * 60 * 60 %][% duration div (24 * 60 * 60) %]d[% END %][% IF duration >= 60 * 60 %][% duration div (60 * 60) % 24 %]h[% END %][% IF duration >= 60 %][% duration div 60 % 60 %]m[% END %][% duration % 60 %]s[% END %]
BLOCK renderDuration;IF duration >= 24 * 60 * 60; duration div (24 * 60 * 60) %]d[% END;IF duration >= 60 * 60; duration div (60 * 60) % 24 %]h[% END;IF duration >= 60; duration div 60 % 60 %]m[% END;duration % 60 %]s[%END;
[% BLOCK renderBuildListBody %][% odd = 0 %][% FOREACH build IN builds %]<tr class="clickable[% IF showSchedulingInfo %][% IF build.busy %]runningBuild[% ELSIF build.disabled == 1 || build.get_column('enabled') == 0 %]disabledBuild[% END %][% ELSE %][% IF odd %] odd [% END; odd = !odd %][% END %]"onclick="if(event.which == 2) return true; window.location = '[% c.uri_for('/build' build.id) %]'">[% IF !hideResultInfo %]<td>[% INCLUDE renderBuildStatusIcon size=16 busy=(showSchedulingInfo ? 1 : 0) buildstatus=build.buildstatus %]</td>[% END %][% IF showSchedulingInfo %]<td>[% IF build.busy %]<span class="label label-success">Started</span>[% ELSE %]<span class="label">Queued</span>[% END %]</td>[% END %]<td><a href="[% c.uri_for('/build' build.id) %]">[% build.id %]</a></td>[% IF showSchedulingInfo %]<td>[% build.priority %]</td>[% END %][% IF !hideJobName %]<td>[% INCLUDE renderFullJobNameOfBuild %]</td>
BLOCK renderBuildListBody;odd = 0;FOREACH build IN builds; %]<tr class="clickable[% IF showSchedulingInfo %][% IF build.busy %]runningBuild[% ELSIF build.disabled == 1 || build.get_column('enabled') == 0 %]disabledBuild[% END %][% ELSE %][% IF odd %] odd [% END; odd = !odd %][% END %]"onclick="if(event.which == 2) return true; window.location = '[% c.uri_for('/build' build.id) %]'">[% IF !hideResultInfo %]<td>[% INCLUDE renderBuildStatusIcon size=16 busy=(showSchedulingInfo ? 1 : 0) buildstatus=build.buildstatus %]</td>[% END %][% IF showSchedulingInfo %]<td>[% IF build.busy %]<span class="label label-success">Started</span>[% ELSE %]<span class="label">Queued</span>[% END %]</td>[% END %]<td><a href="[% c.uri_for('/build' build.id) %]">[% build.id %]</a></td>[% IF showSchedulingInfo %]<td>[% build.priority %]</td>[% END %][% IF !hideJobName %]<td>[% INCLUDE renderFullJobNameOfBuild %]</td>[% END %]<td>[% !showSchedulingInfo and build.get_column('releasename') ? build.get_column('releasename') : build.nixname %]</td><td><tt>[% build.system %]</tt></td><td>[% date.format(build.timestamp, '%Y-%m-%d %H:%M:%S') %]</td>[% IF showStatusChange %]<td>[% IF build.get_column('statusChangeTime') %]<a href="[% c.uri_for('/build' build.get_column('statusChangeId')) %]">[% date.format(build.get_column('statusChangeTime'), '%Y-%m-%d %H:%M:%S') %]</a>[% ELSE %]<em>never</em>
<td>[% !showSchedulingInfo and build.get_column('releasename') ? build.get_column('releasename') : build.nixname %]</td><td><tt>[% build.system %]</tt></td><td>[% date.format(build.timestamp, '%Y-%m-%d %H:%M:%S') %]</td>[% IF showStatusChange %]<td>[% IF build.get_column('statusChangeTime') %]<a href="[% c.uri_for('/build' build.get_column('statusChangeId')) %]">[% date.format(build.get_column('statusChangeTime'), '%Y-%m-%d %H:%M:%S') %]</a>[% ELSE %]<em>never</em>[% END %]</td>[% END %][% IF showDescription %]<td>[% build.description %]</td>[% END %]</tr>
</td>[% END %][% IF showDescription %]<td>[% build.description %]</td>
[% BLOCK renderBuildList %][% INCLUDE renderBuildListHeader %][% INCLUDE renderBuildListBody %][% INCLUDE renderBuildListFooter %][% END %]
BLOCK renderBuildList;INCLUDE renderBuildListHeader;INCLUDE renderBuildListBody;INCLUDE renderBuildListFooter;END;
[% BLOCK maybeButton %][% IF uri %]<a class="btn btn-mini" [% HTML.attributes(href => uri) %][% IF confirmmsg %]onclick="javascript:return confirm('[% confirmmsg %]')"[% END %]>[% content %]</a>[% ELSE; content; END %][% END %]
BLOCK maybeButton;IF uri %]<a class="btn btn-mini" [% HTML.attributes(href => uri); IF confirmmsg %]onclick="javascript:return confirm('[% confirmmsg %]')"[% END; content %]</a>[% ELSE; content; END;END;
[% BLOCK renderFullBuildLink %][% INCLUDE renderFullJobNameOfBuild build=build %] <a href="[% c.uri_for('/build' build.id) %]">build [% build.id %]</a>[% %][% END %]
BLOCK renderFullBuildLink;INCLUDE renderFullJobNameOfBuild build=build %] <a href="[% c.uri_for('/build' build.id) %]">build [% build.id %]</a>[%END;
[% BLOCK renderBuildStatusIcon %][% finished = build != undef ? build.finished : 1 %][% busy = busy != undef ? busy : build.busy %][% buildstatus = buildstatus != undef ? buildstatus : build.buildstatus %][% IF finished %][% IF buildstatus == 0 %]
BLOCK renderBuildStatusIcon;finished = build != undef ? build.finished : 1;busy = busy != undef ? busy : build.busy;buildstatus = buildstatus != undef ? buildstatus : build.buildstatus;IF finished;IF buildstatus == 0 %]
[% BLOCK renderStatus %][% IF build.finished %][% buildstatus = build.buildstatus %][% IF icon; INCLUDE renderBuildStatusIcon size=16; END %][% IF buildstatus == 0 %]
BLOCK renderStatus;IF build.finished;buildstatus = build.buildstatus;IF icon; INCLUDE renderBuildStatusIcon size=16; END;IF buildstatus == 0 %]
[% END;END;BLOCK renderInputValue;IF input.type == "build" || input.type == "sysbuild";INCLUDE renderFullBuildLink build=input.dependency;ELSIF input.type == "string" || input.type == "boolean" %]<tt>"[% input.value %]"</tt>[% ELSE %]<tt>[% input.uri %][% IF input.revision %] (r[% input.revision %])[% END %]</tt>[% END;END;BLOCK renderShortInputValue;IF input.type == "build" || input.type == "sysbuild" %]<a href="[% c.uri_for('/build' input.dependency.id) %]">[% input.dependency.id %]</a>[% ELSIF input.type == "string" || input.type == "boolean" %]<tt>"[% input.value %]"</tt>[% ELSE %]<tt>[% input.uri %][% IF input.revision %] (r[% input.revision %])[% END %]</tt>
[% BLOCK renderInputValue %][% IF input.type == "build" || input.type == "sysbuild" %][% INCLUDE renderFullBuildLink build=input.dependency %]</a>[% ELSIF input.type == "string" || input.type == "boolean" %]<tt>"[% input.value %]"</tt>[% ELSE %]<tt>[% input.uri %][% IF input.revision %] (r[% input.revision %])[% END %]</tt>[% END %][% END %]
[% BLOCK renderShortInputValue %][% IF input.type == "build" || input.type == "sysbuild" %]<a href="[% c.uri_for('/build' input.dependency.id) %]">[% input.dependency.id %]</a>[% ELSIF input.type == "string" || input.type == "boolean" %]<tt>"[% input.value %]"</tt>[% ELSE %]<tt>[% input.uri %][% IF input.revision %] (r[% input.revision %])[% END %]</tt>[% END %][% END %]
BLOCK renderDiffUri;nouri = 1;FOREACH m IN mappers;base = m.baseuri;url = bi1.uri;path = url.replace(base, '');IF url.match(base) %]<a target="_new" href="[% m.uri.replace('_path_', path).replace('_1_', bi1.revision).replace('_2_', bi2.revision) %]">[% contents %]</a>[% nouri = 0;END;END;IF nouri;res = bi1.uri.split(' ');url = res.0;branch = res.1;IF bi1.type == "hg" || bi1.type == "git" %]<a target="_new" href="/api/scmdiff?uri=[% url %]&rev1=[% bi1.revision %]&rev2=[% bi2.revision %]&type=[% bi1.type %]&branch=[% branch %]">[% contents %]</a>[% ELSE;contents;END;END;END;
[% BLOCK renderDiffUri; %][% nouri = 1 %][% FOREACH m IN mappers %][% base = m.baseuri %][% url = bi1.uri %][% path = url.replace(base, '') %][% IF url.match(base) %]<a target="_new" href="[% m.uri.replace('_path_', path).replace('_1_', bi1.revision).replace('_2_', bi2.revision) %]">[% contents %]</a>[% nouri = 0 %][% END %][% END %][% IF nouri %][% res = bi1.uri.split(' ') %][% url = res.0 %][% branch = res.1 %][% IF bi1.type == "hg" || bi1.type == "git" %]<a target="_new" href="/api/scmdiff?uri=[% url %]&rev1=[% bi1.revision %]&rev2=[% bi2.revision %]&type=[% bi1.type %]&branch=[% branch %]">[% contents %]</a>[% ELSE %][% contents %][% END %][% END %][% END %]
[% IF nestLevel <= 3 %][% FOREACH bi1 IN build1.inputs %][% deletedInput = 1 %][% FOREACH bi2 IN build2.inputs %][% IF bi1.name == bi2.name %][% IF bi1.type == bi2.type %][% IF bi1.value != bi2.value || bi1.uri != bi2.uri %]<tr><td><b>[% bi1.name %]</b></td><td><tt>[% INCLUDE renderShortInputValue input=bi1 %]</tt> to <tt>[% INCLUDE renderShortInputValue input=bi2 %]</tt></td></tr>[% ELSIF bi1.uri == bi2.uri && bi1.revision != bi2.revision %][% IF bi1.type == "git" %]<tr><td><b>[% bi1.name %]</b></td><td><tt>[% INCLUDE renderDiffUri contents=(bi1.revision.substr(0, 6) _ ' to ' _ bi2.revision.substr(0, 6)) %]</tt></td></tr>[% ELSE %]<tr><td><b>[% bi1.name %]</b></td><td><tt>[% INCLUDE renderDiffUri contents=(bi1.revision _ ' to ' _ bi2.revision) %]</tt></td></tr>[% END %][% ELSIF bi1.dependency.id != bi2.dependency.id || bi1.path != bi2.path %]<tr><td><b>[% bi1.name %]</b></td><td><tt>[% INCLUDE renderShortInputValue input=bi1 %]</tt> to <tt>[% INCLUDE renderShortInputValue input=bi2 %]</tt><br/><br/>[% INCLUDE renderInputDiff build1=bi1.dependency, build2=bi2.dependency, nestedDiff=1, nestLevel=nestLevel+1 %]</td></tr>[% END %]
IF nestLevel <= 3;FOREACH bi1 IN build1.inputs;deletedInput = 1;FOREACH bi2 IN build2.inputs;IF bi1.name == bi2.name;IF bi1.type == bi2.type;IF bi1.value != bi2.value || bi1.uri != bi2.uri %]<tr><td><b>[% bi1.name %]</b></td><td><tt>[% INCLUDE renderShortInputValue input=bi1 %]</tt> to <tt>[% INCLUDE renderShortInputValue input=bi2 %]</tt></td></tr>[% ELSIF bi1.uri == bi2.uri && bi1.revision != bi2.revision %][% IF bi1.type == "git" %]<tr><td><b>[% bi1.name %]</b></td><td><tt>[% INCLUDE renderDiffUri contents=(bi1.revision.substr(0, 6) _ ' to ' _ bi2.revision.substr(0, 6)) %]</tt></td></tr>
<tr><td><b>[% bi1.name %]</b></td><td>Changed input type from '[% type = bi1.type; inputTypes.$type %]' to '[% type = bi2.type; inputTypes.$type %]'</td></tr>
<tr><td><b>[% bi1.name %]</b></td><td><tt>[% INCLUDE renderDiffUri contents=(bi1.revision _ ' to ' _ bi2.revision) %]</tt></td></tr>
[% deletedInput = 0 %][% END %][% END %][% IF deletedInput == 1 %]<tr><td><b>[% bi1.name %]</b></td><td>Input not present in this build.</td></tr>[% END %][% END %][% END %]</table>
[% ELSIF bi1.dependency.id != bi2.dependency.id || bi1.path != bi2.path %]<tr><td><b>[% bi1.name %]</b></td><td><tt>[% INCLUDE renderShortInputValue input=bi1 %]</tt> to <tt>[% INCLUDE renderShortInputValue input=bi2 %]</tt><br/><br/>[% INCLUDE renderInputDiff build1=bi1.dependency, build2=bi2.dependency, nestedDiff=1, nestLevel=nestLevel+1 %]</td></tr>[% END %][% ELSE %]<tr><td><b>[% bi1.name %]</b></td><td>Changed input type from '[% type = bi1.type; inputTypes.$type %]' to '[% type = bi2.type; inputTypes.$type %]'</td></tr>[% END;deletedInput = 0;END;END;IF deletedInput == 1 %]<tr><td><b>[% bi1.name %]</b></td><td>Input not present in this build.</td></tr>[% END;END;END %]</table>[% END;
[% BLOCK hydraStatus %]<table class="tablesorter table table-striped table-condensed"><thead><tr><th>Machine</th><th>Job</th><th>Type</th><th>Build</th><th>Step</th><th>What</th><th>Since</th></tr></thead><tbody>[% FOREACH step IN steps %]<tr><td><tt>[% IF step.machine; step.machine.match('@(.*)').0; ELSE; 'localhost'; END %]</tt></td><td><tt>[% INCLUDE renderFullJobName project = step.build.project.name jobset = step.build.jobset.name job = step.build.job.name %]</tt></td><td><tt>[% step.system %]</tt></td><td><a href="[% c.uri_for('/build' step.build.id) %]">[% step.build.id %]</a></td><td><a href="[% c.uri_for('/build' step.build.id 'nixlog' step.stepnr 'tail-reload') %]">[% step.stepnr %]</a></td><td><tt>[% step.drvpath.match('-(.*)').0 %]</tt></td><td class='right'>[% INCLUDE renderDuration duration = curTime - step.starttime %] </td></tr>[% END %]</tbody></table>[% END %]
BLOCK hydraStatus %]<table class="tablesorter table table-striped table-condensed"><thead><tr><th>Machine</th><th>Job</th><th>Type</th><th>Build</th><th>Step</th><th>What</th><th>Since</th></tr></thead><tbody>[% FOREACH step IN steps %]<tr><td><tt>[% IF step.machine; step.machine.match('@(.*)').0; ELSE; 'localhost'; END %]</tt></td><td><tt>[% INCLUDE renderFullJobName project = step.build.project.name jobset = step.build.jobset.name job = step.build.job.name %]</tt></td><td><tt>[% step.system %]</tt></td><td><a href="[% c.uri_for('/build' step.build.id) %]">[% step.build.id %]</a></td><td><a href="[% c.uri_for('/build' step.build.id 'nixlog' step.stepnr 'tail-reload') %]">[% step.stepnr %]</a></td><td><tt>[% step.drvpath.match('-(.*)').0 %]</tt></td><td class='right'>[% INCLUDE renderDuration duration = curTime - step.starttime %] </td></tr>[% END %]</tbody></table>[% END;
[% BLOCK renderShortEvalInput %][% IF input.type == "svn" || input.type == "svn-checkout" || input.type == "bzr" || input.type == "bzr-checkout" %]
BLOCK renderShortEvalInput;IF input.type == "svn" || input.type == "svn-checkout" || input.type == "bzr" || input.type == "bzr-checkout" %]
[% BLOCK renderEvals %]<table class="tablesorter table table-condensed table-striped"><thead><tr><th>#</th><th>Date</th><th>Input changes</th><th colspan='2'>Success</th></tr></thead><tbody>[% FOREACH e IN evals; eval = e.eval;
BLOCK renderEvals %]<table class="tablesorter table table-condensed table-striped"><thead><tr><th>#</th><th>Date</th><th>Input changes</th><th colspan='2'>Success</th></tr></thead><tbody>[% FOREACH e IN evalseval = e.eval;
<tr class="clickable" onclick="window.location = '[% link %]'"><td><a href="[% link %]">[% eval.id %]</a> </td><td>[% INCLUDE renderDateTime timestamp = eval.timestamp %] </td><td>[% IF e.changedInputs.size > 0 %][% sep=''; FOREACH input IN e.changedInputs %][% sep %] [% input.name %] → [% INCLUDE renderShortEvalInput input=input %][% sep=','; END %][% ELSE %]-[% END %]</td><td align='right'><span class="label label-success">[% e.nrSucceeded %]</span><span class="label label-important">[% e.nrFailed %]</span>[% IF e.nrScheduled > 0 %]<span class="label">[% e.nrScheduled %]</span>[% END %]</td><td align='right'>[% IF e.diff > 0 %]<span class='label label-success'><strong>+[% e.diff %]</strong></span>[% ELSIF e.diff < 0 && e.nrScheduled == 0 %]<span class='label label-important'><strong>[% e.diff %]</strong></span>[% END %]</td></tr>[% END %][% IF linkToAll %]<tr><td class="centered" colspan=54"><a href="[% linkToAll %]"><em>More...</em></a></td></tr>[% END %]</tbody></table>[% END %]
<tr class="clickable" onclick="window.location = '[% link %]'"><td><a href="[% link %]">[% eval.id %]</a> </td><td>[% INCLUDE renderDateTime timestamp = eval.timestamp %] </td><td>[% IF e.changedInputs.size > 0;sep='';FOREACH input IN e.changedInputs;sep; %] [% input.name %] → [% INCLUDE renderShortEvalInput input=input;sep=',';END;ELSE %]-[% END %]</td><td align='right'><span class="label label-success">[% e.nrSucceeded %]</span><span class="label label-important">[% e.nrFailed %]</span>[% IF e.nrScheduled > 0 %]<span class="label">[% e.nrScheduled %]</span>[% END %]</td><td align='right'>[% IF e.diff > 0 %]<span class='label label-success'><strong>+[% e.diff %]</strong></span>[% ELSIF e.diff < 0 && e.nrScheduled == 0 %]<span class='label label-important'><strong>[% e.diff %]</strong></span>[% END %]</td></tr>[% END;IF linkToAll %]<tr><td class="centered" colspan=54"><a href="[% linkToAll %]"><em>More...</em></a></td></tr>[% END %]</tbody></table>[% END;