Values => [ [ 'route', 'Trades for route' ],
[ 'commod', 'Prices for commodity' ],
[ '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 amount at each price' ],
+ [ 1, 'Show individual stalls' ],
+ ],
+ QuerySpecific => 1,
});
foreach my $var (@vars) {
foreach my $var (keys %ARGS) {
next unless $var =~
- m/^(?:(?:route|commod)string|islandid\d|archipelago\d|debug)$/;
+ m/^(?: (?:route|commod)string |
+ islandid \d |
+ archipelago \d |
+ debug |
+ [RT]\w+
+ )$/x;
my $val= $ARGS{$var};
next if $val eq 'none';
$queryqf{$var}= $val;
$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};
$cvalix++;
}
print "<p>\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 $styles{Query} =~ m/[^a-z]/;
-dbw_connect($styles{Ocean});
+my $mydbh;
+my $dbh= ($mydbh= dbw_connect($styles{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<h1>$h</h1>\n";
+};
</%perl>
<%args>
<hr>
-<& "query_$styles{Query}", %baseqf, %queryqf, %styles, quri => $quri &>
+<& "query_$styles{Query}", %baseqf, %queryqf, %styles,
+ quri => $quri, dbh => $dbh,
+ prselector => $prselector,
+ someresults => $someresults,
+ emsgokorprint => sub {
+ my ($emsg) = @_;
+ return 1 unless defined $emsg and length $emsg;
+ $someresults->();
+ print $emsg;
+ return 0;
+ }
+ &>
<p>
use URI::Escape;
</%init>
+<%cleanup>
+
+$mydbh->rollback() if $mydbh;
+
+</%cleanup>