[%
USE date;
USE String;
USE HTML;
USE Math;
USE mibs=format("%.2f");
# Formatted date time, in hydra-local timezone.
# Use only where an HTML element cannot be used.
BLOCK dateTimeText;
date.format(timestamp, '%Y-%m-%d %H:%M:%S');
END;
# HTML-rendered date. Formatted in hydra-local timezone.
# It is enhanced with JavaScript to show user-local and UTC time zones.
BLOCK renderDateTime %]
[% END;
# Relative date, as text.
# Use only where an HTML element cannot be used.
BLOCK relativeDateText;
ago = date.now - timestamp;
IF ago >= 0 && ago < 60; THEN;
ago _ 's ago';
ELSIF ago >= 0 && ago < 60 * 60; THEN;
Math.int(ago / 60) _ 'm ago';
ELSIF ago >= 0 && ago < 24 * 60 * 60; THEN;
Math.int(ago / (60 * 60)) _ 'h ago';
ELSIF ago >= 0 && ago < 7 * 24 * 60 * 60; THEN;
Math.int(ago / (24 * 60 * 60)) _ 'd ago';
ELSE;
date.format(timestamp, '%Y-%m-%d');
END;
END;
# HTML-rendered relative date.
# It is enhanced with JavaScript to show user-local and UTC time zones.
BLOCK renderRelativeDate %]
[% END;
BLOCK renderProjectName %]
[% project %]
[% END;
BLOCK renderJobsetName %]
[% jobset %]
[% END;
BLOCK renderJobName %]
[% job %]
[% END;
BLOCK renderFullJobsetName %]
[% INCLUDE renderProjectName inRow=0 %]:[% INCLUDE renderJobsetName %]
[% END;
BLOCK renderFullJobName %]
[% IF !hideProjectName; INCLUDE renderProjectName inRow=0 %]:[% END; IF !hideJobsetName; INCLUDE renderJobsetName inRow=0 %]:[% END; INCLUDE renderJobName %]
[% END;
BLOCK renderFullJobNameOfBuild;
INCLUDE renderFullJobName project=build.jobset.get_column("project") jobset = build.jobset.get_column("name") 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 renderBuildListHeader %]
[% IF !hideResultInfo %]
[% END %]
[% IF showSchedulingInfo %]
[% END %]
#
[% IF !hideJobName %]
Job
[% END %]
[% IF showSchedulingInfo %]Queued at[% ELSE %]Finished at[% END %]
Package/release name
System
[% IF showDescription %]
Description
[% END %]
[% END;
BLOCK renderBuildListBody;
FOREACH build IN builds; link = c.uri_for('/build' build.id) %]
[% IF !hideResultInfo %]
[% INCLUDE renderBuildStatusIcon size=16 buildstatus=build.buildstatus %]
[% IF showProject; INCLUDE renderFullJobsetName project=j.get_column('project') jobset=j.name inRow=1; ELSE; INCLUDE renderJobsetName project=j.get_column('project') jobset=j.name inRow=1; END %]
[% HTML.escape(j.description) %]
[% IF j.lastcheckedtime;
INCLUDE renderDateTime timestamp = j.lastcheckedtime;
IF j.errormsg || j.fetcherrormsg; %] Error[% END;
ELSE; "-";
END %]
[% IF j.get_column('nrtotal') > 0 %]
[% successrate = ( j.get_column('nrsucceeded') / j.get_column('nrtotal') )*100 %]
[% IF j.get_column('nrscheduled') > 0 %]
[% class = 'badge badge-secondary' %]
[% ELSIF successrate < 25 %]
[% class = 'badge badge-danger' %]
[% ELSIF successrate < 75 %]
[% class = 'badge badge-warning' %]
[% ELSIF successrate <= 100 %]
[% class = 'badge badge-success' %]
[% END %]
[% END %]
[% successrate FILTER format('%d') %]%
[% IF j.get_column('nrsucceeded') > 0 %]
[% j.get_column('nrsucceeded') %]
[% END %]
[% IF j.get_column('nrfailed') > 0 %]
[% j.get_column('nrfailed') %]
[% END %]
[% IF j.get_column('nrscheduled') > 0 %]
[% j.get_column('nrscheduled') %]
[% END %]