You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by jm...@apache.org on 2006/08/01 16:03:39 UTC
svn commit: r427582 - /spamassassin/trunk/masses/rule-qa/automc/ruleqa.cgi
Author: jm
Date: Tue Aug 1 07:03:38 2006
New Revision: 427582
URL: http://svn.apache.org/viewvc?rev=427582&view=rev
Log:
bug 4986: better UI for daterev selection in ruleqa web app
Modified:
spamassassin/trunk/masses/rule-qa/automc/ruleqa.cgi
Modified: spamassassin/trunk/masses/rule-qa/automc/ruleqa.cgi
URL: http://svn.apache.org/viewvc/spamassassin/trunk/masses/rule-qa/automc/ruleqa.cgi?rev=427582&r1=427581&r2=427582&view=diff
==============================================================================
--- spamassassin/trunk/masses/rule-qa/automc/ruleqa.cgi (original)
+++ spamassassin/trunk/masses/rule-qa/automc/ruleqa.cgi Tue Aug 1 07:03:38 2006
@@ -41,6 +41,7 @@
use Date::Manip;
use XML::Simple;
use URI::Escape;
+use Time::Local;
use POSIX qw();
# daterevs -- e.g. "20060429/r239832-r" -- are aligned to just before
@@ -322,12 +323,27 @@
padding: 1px 3px 1px 5px;
}
+ td.daterevcommittd {
+ font-size: 75%;
+ padding: 1px 3px 1px 5px;
+ background: #ffc;
+ }
+
+ div.commitmsgdiv {
+ font-size: 50%;
+ overflow: auto;
+ }
+
+ td.daterevtdempty {
+ background: #eec;
+ }
+
tr.daterevtr {
background: #fff;
}
tr.daterevdesc {
- background: #f0e0a0;
+ background: #fea;
}
@@ -451,60 +467,35 @@
};
- my $days = {
- neg3 => -3,
- neg2 => -2,
- neg1 => -1,
- pls1 => 1,
- pls2 => 2,
- pls3 => 3
- };
-
my @drs = ();
- my ($key, $daycount);
- while (($key, $daycount) = each %{$days}) {
- my $dr = $self->date_in_direction($self->{daterev}, $daycount);
- if ($dr) { push @drs, $dr; }
- }
-
- $tmpl =~ s,!daylinkstable!,
- $self->get_daterev_html_table(\@drs);
- ,ges;
-
- if (0) {
- {
- my $dr = $self->{daterev};
- my $drtext = $dr;
-
- if (!$dr) {
- $tmpl =~ s,!daylink${key}!,
+ {
+ my $origdr = $self->{daterev} || $self->{daterevs}->[-1];
+ $origdr =~ /^(\d+)[\/-]/;
+ my $date = $1;
- <td colspan=6 class=daterevtd>
- <em>(no logs available)</em>
- </td>
+ my $dr_after = date_offset($date, -1);
+ my $dr_before = date_offset($date, 1);
- ,gs;
- }
- else {
- $dr = $self->gen_switch_url("daterev", $dr);
- my $drtext = $self->get_daterev_masscheck_description($drtext);
- $drtext =~ s/!drhref!/$dr/gs;
-
- $tmpl =~ s,!daylink${key}!,
- $drtext
- ,gs;
+ foreach my $dr (@{$self->{daterevs}}) {
+ next unless ($dr =~ /^(\d+)[\/-]/);
+ my $date = $1;
+ next unless ($date >= $dr_after);
+ next unless ($date <= $dr_before);
+ push @drs, $dr;
}
}
- $self->{daterev} = $self->date_in_direction($self->{daterev}, 0);
- {
- my $todaytext = $self->get_daterev_masscheck_description($self->{daterev});
- my $dr = $self->gen_switch_url("daterev", $self->{daterev});
- $todaytext =~ s/!drhref!/$dr/gs;
- $tmpl =~ s/!todaytext!/$todaytext/gs;
- }
- }
+sub date_offset {
+ my ($yyyymmdd, $offset_days) = @_;
+ $yyyymmdd =~ /^(....)(..)(..)$/;
+ my $time = timegm(0,0,0,$3,$2-1,$1);
+ $time += (24 * 60 * 60) * $offset_days;
+ return POSIX::strftime "%Y%m%d", gmtime $time;
+}
+ $tmpl =~ s{!daylinkstable!}{
+ $self->get_daterev_html_table(\@drs, 0, 0);
+ }ges;
my $dranchor = "r".$self->{daterev}; $dranchor =~ s/[^A-Za-z0-9]/_/gs;
my $ldlurl = $self->gen_switch_url("longdatelist", 1)."#".$dranchor;
@@ -1220,7 +1211,7 @@
}
sub get_daterev_metadata {
- my ($self, $dr) = @_;
+ my ($self, $dr, $ignore_logmds) = @_;
if ($self->{daterev_metadata}->{$dr}) {
return $self->{daterev_metadata}->{$dr};
@@ -1236,6 +1227,11 @@
my $fname = $self->get_datadir_for_daterev($dr)."/info.xml";
my $fastfname = $self->get_datadir_for_daterev($dr)."/fastinfo.xml";
+ $dr =~ /^(\d+)-r(\d+)-(\S+)$/;
+ my $date = $1;
+ my $rev = $2;
+ my $tag = $3;
+
if (-f $fname && -f $fastfname) {
eval {
my $info = XMLin($fname);
@@ -1243,7 +1239,7 @@
# use Data::Dumper; print Dumper $info;
my $mds_as_text;
- if ($fastinfo->{mclogmds}) {
+ if ($fastinfo->{mclogmds} && !$ignore_logmds) {
$mds_as_text = $self->get_mds_as_text($fastinfo->{mclogmds});
}
@@ -1255,7 +1251,11 @@
$drtitle =~ s/\s+/ /gs;
$drtitle =~ s/^(.{0,160}).*$/$1/gs;
- $meta->{rev} = $fastinfo->{rev};
+ if ($rev ne $fastinfo->{rev}) {
+ warn "dr and fastinfo disagree: ($rev ne $fastinfo->{rev})";
+ }
+
+ $meta->{rev} = $rev;
$meta->{cdate} = $cdate;
$meta->{drtitle} = $drtitle;
$meta->{mds_as_text} = $mds_as_text || '';
@@ -1263,10 +1263,10 @@
$meta->{date} = $fastinfo->{date};
$meta->{submitters} = $fastinfo->{submitters};
$meta->{author} = $info->{author};
- $meta->{tag} = $info->{tag};
+ $meta->{tag} = $tag;
my $type;
- if ($meta->{tag} eq 'b') {
+ if ($meta->{tag} && $meta->{tag} eq 'b') {
$type = 'preflight';
} elsif ($meta->{includes_net}) {
$type = 'net';
@@ -1286,11 +1286,6 @@
# if that failed, just use the info that can be gleaned from the
# daterev itself.
-
- $dr =~ /^(\d+)-r(\d+)-(\S+)$/;
- my $date = $1;
- my $rev = $2;
- my $tag = $3;
my $drtitle = "(no info)";
{
@@ -1348,25 +1343,32 @@
return qq{
+ <a href="javascript:show_header('$id')">[+]</a>
<div id='$id' class='mclogmds' style='display: none'>
<p class=headclosep align=right><a
href="javascript:hide_header('$id')">[-]</a></p>
$all
- </div> <a href="javascript:show_header('$id')">[+]</a>
+ </div>
};
}
sub get_daterev_code_description {
- my ($self, $dr) = @_;
- my $meta = $self->get_daterev_metadata($dr);
+ my ($self, $dr, $ignore_logmds) = @_;
+ my $meta = $self->get_daterev_metadata($dr, $ignore_logmds);
+
return qq{
- <td class="daterevtd">
+ <td class="daterevcommittd" width='30%'>
<span class="daterev_code_description">
- <a title="$meta->{author}: $meta->{drtitle} ($meta->{cdate})"
- href="!drhref!">$meta->{rev}</a>
+ <p>
+ <a title="$meta->{author}: $meta->{drtitle} ($meta->{cdate})"
+ href="!drhref!"><strong>$meta->{rev}</strong>: $meta->{cdate}</a>
+ </p>
+ <p><div class='commitmsgdiv'>
+ $meta->{author}: $meta->{drtitle}
+ </div></p>
</span>
</td>
@@ -1374,13 +1376,13 @@
}
sub get_daterev_masscheck_description {
- my ($self, $dr) = @_;
- my $meta = $self->get_daterev_metadata($dr);
+ my ($self, $dr, $ignore_logmds) = @_;
+ my $meta = $self->get_daterev_metadata($dr, $ignore_logmds);
my $net = $meta->{includes_net} ? "[net]" : "";
return qq{
- <td class="daterevtd">
+ <td class="daterevtd" width='20%'>
<span class="daterev_masscheck_description">
<p>
<a name="$meta->{dranchor}"
@@ -1390,9 +1392,9 @@
</p>
<p>
<em><span class="mcsubmitters">$meta->{submitters}</span></em>
- $meta->{mds_as_text}
- <em><span class="mcwasnet">$net</span></em>
+ $meta->{mds_as_text}</x>
</p>
+ <!-- <span class="mcwasnet">$net</span> -->
<!-- <span class="mcauthor">$meta->{author}</span> -->
<!-- tag=$meta->{tag} -->
</span>
@@ -1402,12 +1404,12 @@
}
sub get_daterev_html_table {
- my ($self, $daterev_list) = @_;
+ my ($self, $daterev_list, $ignore_logmds, $reverse) = @_;
my $rows = { };
foreach my $dr (@{$daterev_list}) {
next unless $dr;
- my $meta = $self->get_daterev_metadata($dr);
+ my $meta = $self->get_daterev_metadata($dr, $ignore_logmds);
my $colidx;
my $type = $meta->{type};
@@ -1424,24 +1426,38 @@
$rows->{$meta->{cdate}}->[$colidx] = $meta;
}
+ my @rowkeys = sort keys %{$rows};
+ if ($reverse) { @rowkeys = reverse @rowkeys; }
+
my @html = ();
- foreach my $rowdate (sort keys %{$rows}) {
+ foreach my $rowdate (@rowkeys) {
my $row = $rows->{$rowdate};
+
+ my $meta;
+ foreach my $col (0 .. 2) {
+ if ($row->[$col]) {
+ $meta = $row->[$col];
+ last;
+ }
+ }
+
+ next unless $meta; # no entries in the row
+
push @html, qq{
<tr class=daterevtr>
- };
- foreach my $col (0 .. 2) {
- my $meta = $row->[$col];
+ }, $self->gen_daterev_html_commit_td($meta, $ignore_logmds);
+ foreach my $col (0 .. 2) {
+ $meta = $row->[$col];
if ($meta) {
- push @html, $self->gen_daterev_html_table_td($meta);
+ push @html, $self->gen_daterev_html_table_td($meta, $ignore_logmds);
}
else {
push @html, qq{
- <td class='daterevtd'></td>
+ <td class='daterevtdempty' width='20%'></td>
};
}
@@ -1456,8 +1472,23 @@
return join '', @html;
}
+sub gen_daterev_html_commit_td {
+ my ($self, $meta, $ignore_logmds) = @_;
+
+ my $dr = $meta->{daterev};
+ my @parms = $self->get_params_except(qw(
+ daterev longdatelist
+ ));
+ my $drhref = $self->assemble_url("daterev=".$dr, @parms);
+
+ my $text = $self->get_daterev_code_description($dr, $ignore_logmds) || '';
+ $text =~ s/!drhref!/$drhref/gs;
+
+ return $text;
+}
+
sub gen_daterev_html_table_td {
- my ($self, $meta) = @_;
+ my ($self, $meta, $ignore_logmds) = @_;
my $dr = $meta->{daterev};
my @parms = $self->get_params_except(qw(
@@ -1465,7 +1496,7 @@
));
my $drhref = $self->assemble_url("daterev=".$dr, @parms);
- my $text = $self->get_daterev_masscheck_description($dr) || '';
+ my $text = $self->get_daterev_masscheck_description($dr, $ignore_logmds) || '';
$text =~ s/!drhref!/$drhref/gs;
return $text;
@@ -1478,7 +1509,6 @@
print $self->show_default_header($title);
my $max_listings = 300;
-
my @drs = @{$self->{daterevs}};
if (scalar @drs > $max_listings) {
splice @drs, 0, -$max_listings;
@@ -1498,7 +1528,7 @@
<th> Network Mass-Checks </th>
</tr>
- }. $self->get_daterev_html_table(\@drs);
+ }. $self->get_daterev_html_table(\@drs, 1, 1);
}
=cut