package Gruntmaster::Page::Log::Entry;

use 5.014000;
use strict;
use warnings;
use parent qw/Exporter/;
our @EXPORT_OK = qw/generate/;
our $VERSION = '0.001';

use HTML::Template::Compiled;
use POSIX qw/strftime/;
use Gruntmaster::Page::Common qw/cook_templates reload_templates/;
use Gruntmaster::Data qw/job_results/;

my %orig_templates = (
	en => <<'HTML',
<table border>
<thead>
<tr><th>Test number<th>Result<th>Time
<tbody>
<tmpl_loop tests><tr><td><tmpl_var id><td class="r<tmpl_var result>"><tmpl_var result_text><td><tmpl_var time>
</tmpl_loop>
</table>
HTML
);

my %templates = cook_templates %orig_templates, log_entry => 'Job <tmpl_var id>';

sub generate{
	%templates = cook_templates %orig_templates, log_entry => 'Job <tmpl_var id>' if reload_templates;
	$_[0] =~ m,^(?:ct/([^/]+)/)?log/job/([^/]+)\.html$,;
	local $Gruntmaster::Data::contest = $1;
	my $id = $2;

	my $htc = HTML::Template::Compiled->new(scalarref => \$templates{$_[1]});

	my @tests = map {
		$_->{time} = sprintf "%.4fs", $_->{time};
		$_
	} @{job_results $id};

	$htc->param(id => $id);
	$htc->param(tests => \@tests);
	$htc->output
}

1
