|
From: <jgr...@us...> - 2003-04-07 17:56:31
|
Update of /cvsroot/popfile/engine/UI
In directory sc8-pr-cvs1:/tmp/cvs-serv11970/UI
Modified Files:
HTML.pm
Log Message:
Implement the Advanced and Buckets pages in the UI; bucket page is now indexed and sorted by word scores; add new stopword APIs to Bayes; remove hard coded English APIs; port Windows code so that we now have a working popup menu and tray icon
Index: HTML.pm
===================================================================
RCS file: /cvsroot/popfile/engine/UI/HTML.pm,v
retrieving revision 1.120
retrieving revision 1.121
diff -C2 -d -r1.120 -r1.121
*** HTML.pm 27 Mar 2003 04:08:50 -0000 1.120
--- HTML.pm 7 Apr 2003 17:55:54 -0000 1.121
***************
*** 1114,1139 ****
my $deletemessage = '';
if ( defined($self->{form_}{newword}) ) {
! $self->{form_}{newword} = lc($self->{form_}{newword});
! if ( defined($self->{classifier__}->{parser}->{mangle}->{stop}{$self->{form_}{newword}}) ) {
! $add_message = "<blockquote><div class=\"error02\"><b>". sprintf( $self->{language__}{Advanced_Error1}, $self->{form_}{newword} ) . "</b></div></blockquote>";
! } else {
! if ( $self->{form_}{newword} =~ /[^[:alpha:][0-9]\._\-@]/ ) {
! $add_message = "<blockquote><div class=\"error02\"><b>$self->{language__}{Advanced_Error2}</b></div></blockquote>";
! } else {
! $self->{classifier__}->{parser}->{mangle}->{stop}{$self->{form_}{newword}} = 1;
! $self->{classifier__}->{parser}->{mangle}->save_stop_words();
! $add_message = "<blockquote>" . sprintf( $self->{language__}{Advanced_Error3}, $self->{form_}{newword} ) . "</blockquote>";
! }
}
}
if ( defined($self->{form_}{word}) ) {
! $self->{form_}{word} = lc($self->{form_}{word});
! if ( !defined($self->{classifier__}->{parser}->{mangle}->{stop}{$self->{form_}{word}}) ) {
! $deletemessage = "<blockquote><div class=\"error02\"><b>" . sprintf( $self->{language__}{Advanced_Error4} , $self->{form_}{word} ) . "</b></div></blockquote>";
! } else {
! delete $self->{classifier__}->{parser}->{mangle}->{stop}{$self->{form_}{word}};
! $self->{classifier__}->{parser}->{mangle}->save_stop_words();
! $deletemessage = "<blockquote>" . sprintf( $self->{language__}{Advanced_Error5}, $self->{form_}{word} ) . "</blockquote>";
}
}
--- 1114,1128 ----
my $deletemessage = '';
if ( defined($self->{form_}{newword}) ) {
! my $result = $self->{classifier__}->add_stopword( $self->{form_}{newword} );
! if ( $result == 0 ) {
! $add_message = "<blockquote><div class=\"error02\"><b>$self->{language__}{Advanced_Error2}</b></div></blockquote>";
}
}
if ( defined($self->{form_}{word}) ) {
! $self->log_($self->{form_}{word} );
! my $result = $self->{classifier__}->remove_stopword( $self->{form_}{word} );
! if ( $result == 0 ) {
! $deletemessage = "<blockquote><div class=\"error02\"><b>$self->{language__}{Advanced_Error2}</b></div></blockquote>";
}
}
***************
*** 1149,1153 ****
my $groupSize = 5;
my $firstRow = 1;
! for my $word (sort keys %{$self->{classifier__}->{parser}->{mangle}->{stop}}) {
$word =~ /^(.)/;
if ( $1 ne $last ) {
--- 1138,1142 ----
my $groupSize = 5;
my $firstRow = 1;
! for my $word (sort keys %{$self->{classifier__}->get_stop_word_list()}) {
$word =~ /^(.)/;
if ( $1 ne $last ) {
***************
*** 1362,1370 ****
my ( $self, $client ) = @_;
my $body = "<h2 class=\"buckets\">";
$body .= sprintf( $self->{language__}{SingleBucket_Title}, "<font color=\"" . $self->{classifier__}->get_bucket_color($self->{form_}{showbucket}) . "\">$self->{form_}{showbucket}</font>");
$body .= "</h2>\n<table summary=\"\">\n<tr>\n<th scope=\"row\" class=\"bucketsLabel\">$self->{language__}{SingleBucket_WordCount}</th>\n";
$body .= "<td> </td>\n<td align=\"right\">\n";
! $body .= pretty_number( $self, $self->{classifier__}->get_bucket_word_count($self->{form_}{showbucket}));
$body .= "</td>\n<td>\n(" . sprintf( $self->{language__}{SingleBucket_Unique}, pretty_number( $self, $self->{classifier__}->get_bucket_unique_count($self->{form_}{showbucket})) ). ")";
$body .= "</td>\n</tr>\n<tr>\n<th scope=\"row\" class=\"bucketsLabel\">$self->{language__}{SingleBucket_TotalWordCount}</th>\n";
--- 1351,1361 ----
my ( $self, $client ) = @_;
+ my $bucket_count = $self->{classifier__}->get_bucket_word_count( $self->{form_}{showbucket} );
+
my $body = "<h2 class=\"buckets\">";
$body .= sprintf( $self->{language__}{SingleBucket_Title}, "<font color=\"" . $self->{classifier__}->get_bucket_color($self->{form_}{showbucket}) . "\">$self->{form_}{showbucket}</font>");
$body .= "</h2>\n<table summary=\"\">\n<tr>\n<th scope=\"row\" class=\"bucketsLabel\">$self->{language__}{SingleBucket_WordCount}</th>\n";
$body .= "<td> </td>\n<td align=\"right\">\n";
! $body .= pretty_number( $self, $bucket_count);
$body .= "</td>\n<td>\n(" . sprintf( $self->{language__}{SingleBucket_Unique}, pretty_number( $self, $self->{classifier__}->get_bucket_unique_count($self->{form_}{showbucket})) ). ")";
$body .= "</td>\n</tr>\n<tr>\n<th scope=\"row\" class=\"bucketsLabel\">$self->{language__}{SingleBucket_TotalWordCount}</th>\n";
***************
*** 1373,1377 ****
my $percent = "0%";
if ( $self->{classifier__}->get_word_count() > 0 ) {
! $percent = int( 10000 * $self->{classifier__}->get_bucket_word_count($self->{form_}{showbucket}) / $self->{classifier__}->get_word_count() ) / 100;
$percent = "$percent%";
}
--- 1364,1368 ----
my $percent = "0%";
if ( $self->{classifier__}->get_word_count() > 0 ) {
! $percent = int( 10000 * $bucket_count / $self->{classifier__}->get_word_count() ) / 100;
$percent = "$percent%";
}
***************
*** 1383,1416 ****
$body .= sprintf( $self->{language__}{SingleBucket_WordTable}, "<font color=\"" . $self->{classifier__}->get_bucket_color($self->{form_}{showbucket}) . "\">$self->{form_}{showbucket}" ) ;
$body .= "</font>\n</h2>\n$self->{language__}{SingleBucket_Message1}\n<br /><br />\n<table summary=\"$self->{language__}{Bucket_WordListTableSummary}\">\n";
for my $i (@{$self->{classifier__}->get_bucket_word_list($self->{form_}{showbucket})}) {
! if ( defined($i) ) {
my $j = $i;
! # Split the entries on the double bars, get rid of any extra bars, then grab a copy of the first char
! $j =~ s/\|\|/, /g;
! $j =~ s/\|//g;
! $j =~ /^(.)/;
! my $first = $1;
! # Highlight any words used this session
! $j =~ s/([^ ]+) (L\-[\.\d]+)/\*$1 $2<\/font>/g;
! $j =~ s/L(\-[\.\d]+)/int( $self->{classifier__}->get_bucket_word_count($self->{form_}{showbucket}) * exp($1) + 0.5 )/ge;
! # Add the link to the corpus lookup
! $j =~ s/([^ ,\*]+) ([^ ,\*]+)/"<a class=\"wordListLink\" href=\"\/buckets\?session=$self->{session_key__}\&lookup=Lookup\&word=" . url_encode_($self,$1) . "#Lookup\">$1<\/a> $2"/ge;
! # Add the bucket color if this word was used this session. IMPORTANT: this regex relies
! # on the fact that Classifier::WordMangle (mangle) removes astericks from all corpus words
! # and therefore assumes that any asterick was placed the by the highlight regex several
! # lines above.
! # TODO $j =~ s/([\*])/<font color=\"" . $self->{classifier__}->get_bucket_color($self->{form_}{showbucket}) . "\">$1/g;
! $body .= "<tr>\n<td valign=\"top\">\n<b>$first</b>\n</td>\n<td valign=\"top\">\n$j</td>\n</tr>\n";
}
}
$body .= "</table>\n";
--- 1374,1416 ----
$body .= sprintf( $self->{language__}{SingleBucket_WordTable}, "<font color=\"" . $self->{classifier__}->get_bucket_color($self->{form_}{showbucket}) . "\">$self->{form_}{showbucket}" ) ;
$body .= "</font>\n</h2>\n$self->{language__}{SingleBucket_Message1}\n<br /><br />\n<table summary=\"$self->{language__}{Bucket_WordListTableSummary}\">\n";
+ $body .= "<tr><td colspan=2>";
for my $i (@{$self->{classifier__}->get_bucket_word_list($self->{form_}{showbucket})}) {
! if ( defined($i) ) {
my $j = $i;
+ $j =~ /^\|(.)/;
+ my $first = $1;
! if ( defined( $self->{form_}{showletter} ) && ( $first eq $self->{form_}{showletter} ) ) {
! # Split the entries on the double bars
! my %temp;
! while ( $j =~ m/\G\|(.*?) L?\-?[\.\d]+\|/g ) {
! my $word = $1;
! $temp{$word} = int( exp( $self->{classifier__}->get_value_( $self->{form_}{showbucket}, $word ) ) * $bucket_count + 1 );
! }
! $body .= "</td></tr><tr><td colspan=2> </td></tr><tr>\n<td valign=\"top\">\n<b>$first</b>\n</td>\n<td valign=\"top\">\n<table><tr valign=\"top\">";
! my $count = 0;
! for my $word (sort { $temp{$b} <=> $temp{$a} } keys %temp) {
! $body .= "</tr><tr valign=\"top\">" if ( ( $count % 6 ) == 0 );
! $body .= "<td><a class=\"wordListLink\" href=\"\/buckets\?session=$self->{session_key__}\&lookup=Lookup\&word=$word#Lookup\"><b>$word</b><\/a></td><td>$temp{$word}</td><td> </td>";
! $count += 1;
! }
! $body .= "</tr></table></td>\n</tr>\n<tr><td colspan=2> </td></tr><tr><td colspan=2>";
! } else {
! $j = '';
!
! $body .= "<a href=/buckets?session=$self->{session_key__}\&showbucket=$self->{form_}{showbucket}\&showletter=$first><b>$first</b></a>\n";
! }
}
}
+
+ $body .= "</td></tr>";
$body .= "</table>\n";
***************
*** 2481,2490 ****
$self->{form_}{search} = '' if ( !defined( $self->{form_}{search} ) );
$self->{form_}{filter} = '' if ( !defined( $self->{form_}{filter} ) );
!
# Information from submit buttons isn't always preserved if the buttons aren't
# pressed. This compares values in some fields and sets the button-values as
# though they had been pressed
!
! # Set setsearch if search changed and setsearch is undefined
$self->{form_}{setsearch} = 'on' if ( ( ( !defined($self->{old_search__}) && ($self->{form_}{search} ne '') ) || ( defined($self->{old_search__}) && ( $self->{old_search__} ne $self->{form_}{search} ) ) ) && !defined($self->{form_}{setsearch} ) );
$self->{old_search__} = $self->{form_}{search};
--- 2481,2490 ----
$self->{form_}{search} = '' if ( !defined( $self->{form_}{search} ) );
$self->{form_}{filter} = '' if ( !defined( $self->{form_}{filter} ) );
!
# Information from submit buttons isn't always preserved if the buttons aren't
# pressed. This compares values in some fields and sets the button-values as
# though they had been pressed
!
! # Set setsearch if search changed and setsearch is undefined
$self->{form_}{setsearch} = 'on' if ( ( ( !defined($self->{old_search__}) && ($self->{form_}{search} ne '') ) || ( defined($self->{old_search__}) && ( $self->{old_search__} ne $self->{form_}{search} ) ) ) && !defined($self->{form_}{setsearch} ) );
$self->{old_search__} = $self->{form_}{search};
|