X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?a=blobdiff_plain;f=yarrg%2Fweb%2Flookup;h=fd66f1a7b8ae8c3b1617b255a8309a244370407d;hb=ae926461ebeb67c806caa7be5d85d18a02a08177;hp=751a99aa1a6916382c3843c610eda6691a02868b;hpb=013f7a0ab3bf8d2b1100022e8fc868407c751720;p=ypp-sc-tools.main.git
diff --git a/yarrg/web/lookup b/yarrg/web/lookup
index 751a99a..fd66f1a 100755
--- a/yarrg/web/lookup
+++ b/yarrg/web/lookup
@@ -35,9 +35,9 @@
%doc>
<%perl>
-my %a;
my %ahtml;
my @vars;
+my %styles;
#---------- "mode" argument parsing and mode menu at top of page ----------
@@ -56,7 +56,39 @@ my @vars;
}, { Name => 'Query',
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' ],
+ [ 2, "Also be cautious about stalls'".
+ " poe reserves",
+ '[?]' ]
+ ],
+ QuerySpecific => 1,
+ }, { Name => 'RouteSearchType',
+ Before => 'Type of routes to search for: ',
+ Values => [ [ 0, 'Open-ended' ],
+ [ 1, 'Circular' ],
+ ],
+ QuerySpecific => 1,
});
foreach my $var (@vars) {
@@ -69,36 +101,78 @@ foreach my $var (@vars) {
$val= [ $val, encode_entities($val) ];
}
if (exists $ARGS{$lname}) {
- $a{$name}= $ARGS{$lname};
- my @html= grep { $_->[0] eq $a{$name} } @{ $var->{Values} };
+ $styles{$name}= $ARGS{$lname};
+ my @html= grep { $_->[0] eq $styles{$name} }
+ @{ $var->{Values} };
$ahtml{$name}= @html==1 ? $html[0][1] : '???';
} else {
- $a{$name}= $var->{Values}[0][0];
+ $styles{$name}= $var->{Values}[0][0];
$ahtml{$name}= $var->{Values}[0][1];
}
}
%perl>
-
<% ucfirst $ahtml{Query} %> - YARRG
-YARRG -
- Yet Another Revenue Research Gatherer
-|
-documentation
+<%shared>
+my %baseqf;
+my %queryqf;
+%shared>
+
+<%method formhidden>
+<%args>
+$ours
+%args>
+% foreach my $n (keys %baseqf, keys %queryqf) {
+% next if $ours->($n);
+% my $v= exists $baseqf{$n} ? $baseqf{$n} : $queryqf{$n};
+ value="<% $v |h %>">
+% }
+%method>
+
+<% ucfirst $ahtml{Query} %> - YARRG
+
+<&| script &>
+ function register_onload(f) {
+ var previous_onload= window.onload;
+ window.onload= function() {
+ if (previous_onload) previous_onload();
+ f();
+ };
+ }
+&script>
+
+
+% if (!printable($m)) {
+
+<& navbar &>
+% }
<%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;
@@ -110,15 +184,17 @@ my $quri= sub {
$uri->path_query();
};
-foreach my $var (@vars) {
+my $prselector_core= sub {
+ my ($var)= @_;
+ return if printable($m);
my $name= $var->{Name};
my $lname= lc $var->{Name};
my $delim= $var->{Before};
- my $canon= &{$var->{CmpCanon}}($a{$name});
+ my $canon= &{$var->{CmpCanon}}($styles{$name});
my $cvalix= 0;
foreach my $valr (@{ $var->{Values} }) {
print $delim; $delim= "\n|\n";
- my ($value,$html) = @$valr;
+ my ($value,$html,$finally) = @$valr;
my $iscurrent= &{$var->{CmpCanon}}($value) eq $canon;
my $after;
if ($iscurrent) {
@@ -127,6 +203,7 @@ foreach my $var (@vars) {
} else {
my %qf= (%baseqf,%queryqf);
delete $qf{$lname};
+ delete $qf{$_} foreach grep { m/^[A-Z]/ } keys %qf;
$qf{$lname}= $value if $cvalix;
%perl>
@@ -134,35 +211,76 @@ foreach my $var (@vars) {
$after= '';
}
print $html, $after;
+ print " ", $finally if defined $finally;
$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 $a{Query} =~ m/[^a-z]/;
+die if $styles{Query} =~ m/[^a-z]/;
+
+my $mydbh;
+my $dbh= ($mydbh= dbw_connect($styles{Ocean}));
-dbw_connect($a{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";
+};
%perl>
<%args>
$debug => 0
%args>
+% if (!printable($m)) {
+
+% }
-<& "query_$a{Query}", %baseqf, %queryqf, quri => $quri, a => \%a &>
-
-
+<& "query_$styles{Query}", %baseqf, %queryqf, %styles,
+ quri => $quri, dbh => $dbh,
+ baseqf => \%baseqf, 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;
+ }
+ &>
%#---------- debugging and epilogue ----------
% if ($debug) {
-
+
% }
<&| script &>
@@ -182,3 +300,8 @@ use HTML::Entities;
use URI::Escape;
%init>
+<%cleanup>
+
+$mydbh->rollback() if $mydbh;
+
+%cleanup>