From: Jeremy Harris Date: Thu, 1 Dec 2016 01:02:44 +0000 (+0000) Subject: More efficient html for detail column X-Git-Url: https://git.exim.org/buildfarm-server.git/commitdiff_plain/5e30c08ac3884e9699ed2c6339796f44083690bf More efficient html for detail column --- diff --git a/cgi-bin/show_status.pl b/cgi-bin/show_status.pl index baf9623..6bc9fc6 100755 --- a/cgi-bin/show_status.pl +++ b/cgi-bin/show_status.pl @@ -71,8 +71,39 @@ while (my $row = $sth->fetchrow_hashref) $row->{build_flags} =~ s/_PC\b//g; $row->{build_flags} = lc($row->{build_flags}); if (defined($row->{log_text})) - { # convert to a hash - $row->{log_text} = { split /\s+/, $row->{log_text} }; + { # convert to a hash, find ranges, output list of ranges + my $h = { split /\s+/, $row->{log_text} }; + my $i; + my $start; + my @ranges; + + foreach my $k (sort {$a<=>$b} keys %$h) + { + if (defined $start) + { + if ($h->{$k} ne $h->{$start}) + { + push @ranges, sprintf("%s %s %s", $h->{$start}, $start, $i); + $start = $k; + $i = 1; + } + else + { + $i++; + } + } + else + { + $start = $k; + $i = 1; + } + } + if (defined $start) + { + push @ranges, sprintf("%s %s %s", $h->{$start}, $start, $i); + } + + $row->{log_text} = \@ranges; } push(@$statrows,$row); } diff --git a/templates/status.tt b/templates/status.tt index f861f9b..29be4e3 100644 --- a/templates/status.tt +++ b/templates/status.tt @@ -45,7 +45,8 @@ See accompanying License file for license details [%- CASE 'OK' %]pass[% CASE 'ContribCheck' %]warn[% CASE [ 'Check' 'InstallCheck' ] %]warnx[% CASE %]fail[% END %]" [%- END -%] [%# The IF-backstop is ugly and I'm not understanding why the res_img lookup does not for for '.' -%] -[%- BLOCK test_result %][% r %][%- END -%] +[%- BLOCK colour ; IF res_imgs.$c.defined ; res_imgs.$c ; ELSE %]/img/t_notdone.gif [% END; END %] +[%- BLOCK colourbar %][% c %][%- END -%] [% WRAPPER 'page.tt' title = 'Exim BuildFarm Status' bodyclass = 'none' @@ -95,7 +96,8 @@ See accompanying License file for license details [%- IF row.stage != 'OK' %]Details[% ELSE %]Config[% END -%] [% FOREACH flag IN row.build_flags.split().sort() ; PROCESS img ; END %] - [% FOREACH test IN row.log_text.keys.nsort ; r = row.log_text.$test ; PROCESS test_result ; END %] + [% FOREACH range IN row.log_text ; + r = range.split(' '); c = r.0; st = r.1; w = r.2; PROCESS colourbar; END %] [% END %]