X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?p=ypp-sc-tools.main.git;a=blobdiff_plain;f=yarrg%2Fweb%2Flookup;h=2f67760c487d6f1281b37bcb819ca6a7b2dd3d01;hp=a118de0905a4d1e58cd500fcc732b20811f847ef;hb=a1fb96b672d234f5961a397215c19c2c631c5cc3;hpb=b6d8c4a781c0bedf79a4b13af5afe9ad47de97ed diff --git a/yarrg/web/lookup b/yarrg/web/lookup index a118de0..2f67760 100755 --- a/yarrg/web/lookup +++ b/yarrg/web/lookup @@ -37,7 +37,7 @@ <%perl> my %ahtml; my @vars; -my %styleqf; +my %styles; #---------- "mode" argument parsing and mode menu at top of page ---------- @@ -57,7 +57,35 @@ my %styleqf; Before => 'Query: ', Values => [ [ 'route', 'Trades for route' ], [ 'commod', 'Prices for commodity' ], + [ 'offers', 'Offers at location' ], + [ 'routesearch', 'Find profitable route' ], [ 'age', 'Data age' ] ] + }, { Name => 'BuySell', + Before => '', + Values => [ [ 'buy_sell', 'Buy and sell' ], + [ 'sell_buy', 'Sell and buy' ], + [ 'buy', 'Buy offers only' ], + [ 'sell', 'Sell offers only' ], + ], + QuerySpecific => 1, + }, { Name => 'ShowBlank', + Before => '', + Values => [ [ 0, 'Omit islands with no offers' ], + [ 'show', 'Show all islands' ], + ], + QuerySpecific => 1, + }, { Name => 'ShowStalls', + Before => '', + Values => [ [ 0, 'Show total quantity at each price' ], + [ 1, 'Show individual stalls' ], + ], + QuerySpecific => 1, + }, { Name => 'RouteSearchType', + Before => 'Type of routes to search for: ', + Values => [ [ 0, 'Open-ended' ], + [ 1, 'Circular' ], + ], + QuerySpecific => 1, }); foreach my $var (@vars) { @@ -70,37 +98,81 @@ foreach my $var (@vars) { $val= [ $val, encode_entities($val) ]; } if (exists $ARGS{$lname}) { - $styleqf{$name}= $ARGS{$lname}; - my @html= grep { $_->[0] eq $styleqf{$name} } + $styles{$name}= $ARGS{$lname}; + my @html= grep { $_->[0] eq $styles{$name} } @{ $var->{Values} }; $ahtml{$name}= @html==1 ? $html[0][1] : '???'; } else { - $styleqf{$name}= $var->{Values}[0][0]; + $styles{$name}= $var->{Values}[0][0]; $ahtml{$name}= $var->{Values}[0][1]; } } -<% ucfirst $ahtml{Query} %> - YARRG + +<%shared> +my %baseqf; +my %queryqf; + + +<%method formhidden> +<%args> +$ours + +% foreach my $n (keys %baseqf, keys %queryqf) { +% next if $ours->($n); +% my $v= exists $baseqf{$n} ? $baseqf{$n} : $queryqf{$n}; + value="<% $v |h %>"> +% } + + +<% ucfirst $ahtml{Query} %> - YARRG + +<&| script &> + function register_onload(f) { + var previous_onload= window.onload; + window.onload= function() { + if (previous_onload) previous_onload(); + f(); + }; + } + + YARRG - Yet Another Revenue Research Gatherer | +introduction +| documentation +| +development

<%perl> -my %baseqf; foreach my $var (@vars) { my $lname= lc $var->{Name}; next unless exists $ARGS{$lname}; $baseqf{$lname}= $ARGS{$lname}; } -my %queryqf; foreach my $var (keys %ARGS) { next unless $var =~ - m/^(?:routestring|islandid\d|archipelago\d|debug)$/; + m/^(?: (?:route|commod|capacity|capital|island)string | + lossperleague | distance | + commodid | + islandid \d | + archipelago \d | + debug | + [RT]\w+ + )$/x; my $val= $ARGS{$var}; next if $val eq 'none'; $queryqf{$var}= $val; @@ -112,11 +184,12 @@ my $quri= sub { $uri->path_query(); }; -foreach my $var (@vars) { +my $prselector_core= sub { + my ($var)= @_; my $name= $var->{Name}; my $lname= lc $var->{Name}; my $delim= $var->{Before}; - my $canon= &{$var->{CmpCanon}}($styleqf{$name}); + my $canon= &{$var->{CmpCanon}}($styles{$name}); my $cvalix= 0; foreach my $valr (@{ $var->{Values} }) { print $delim; $delim= "\n|\n"; @@ -139,13 +212,39 @@ foreach my $var (@vars) { $cvalix++; } print "

\n\n"; +}; + +my $prselector= sub { + my ($name)= @_; + foreach my $var (@vars) { + if ($var->{Name} eq $name) { + $prselector_core->($var); + return; + } + } + die $name; +}; + +foreach my $var (@vars) { + next if $var->{QuerySpecific}; + $prselector_core->($var); } #---------- initial checks, startup, main entry form ---------- -die if $styleqf{Query} =~ m/[^a-z]/; +die if $styles{Query} =~ m/[^a-z]/; + +my $mydbh; +my $dbh= ($mydbh= dbw_connect($styles{Ocean})); -dbw_connect($styleqf{Ocean}); +my $results_head_done=0; +my $someresults= sub { + return if $results_head_done; + $results_head_done=1; + my ($h)= @_; + $h= 'Results' if !$h; + print "\n

$h

\n"; +}; <%args> @@ -154,7 +253,18 @@ $debug => 0
-<& "query_$styleqf{Query}", %baseqf, %queryqf, %styleqf, quri => $quri &> +<& "query_$styles{Query}", %baseqf, %queryqf, %styles, + quri => $quri, dbh => $dbh, queryqf => \%queryqf, allargs => \%ARGS, + prselector => $prselector, + someresults => $someresults, + emsgokorprint => sub { + my ($emsg) = @_; + return 1 unless defined $emsg and length $emsg; + $someresults->(); + print $emsg; + return 0; + } + &>

@@ -184,3 +294,8 @@ use HTML::Entities; use URI::Escape; +<%cleanup> + +$mydbh->rollback() if $mydbh; + +