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}; |