X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?a=blobdiff_plain;f=yarrg%2Fweb%2Flookup;h=365ed58129407277626411e60f96b8bc8fe2ba1e;hb=59316f0dcddd4e5d15e47dfde36f513e1685c4ae;hp=9c00a65466481bd3e6e1633fa3fe0c7fbf418f9a;hpb=555fcf1a304c5f1aef9384c3c4d07d5255a0f05d;p=ypp-sc-tools.db-test.git
diff --git a/yarrg/web/lookup b/yarrg/web/lookup
old mode 100644
new mode 100755
index 9c00a65..365ed58
--- a/yarrg/web/lookup
+++ b/yarrg/web/lookup
@@ -1,17 +1,43 @@
-
Route - YARRG
+<%doc>
-YARRG -
- Yet Another Revenue Research Gatherer
-
+ This is part of the YARRG website. YARRG is a tool and website
+ for assisting players of Yohoho Puzzle Pirates.
+
+ Copyright (C) 2009 Ian Jackson
+ Copyright (C) 2009 Clare Boothby
+
+ YARRG's client code etc. is covered by the ordinary GNU GPL (v3 or later).
+ The YARRG website is covered by the GNU Affero GPL v3 or later, which
+ basically means that every installation of the website will let you
+ download the source.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as
+ published by the Free Software Foundation, either version 3 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see .
+
+ Yohoho and Puzzle Pirates are probably trademarks of Three Rings and
+ are used without permission. This program is not endorsed or
+ sponsored by Three Rings.
+
+
+ This Mason component generates the main `lookup' page, including
+ all the entry boxes etc. for every query.
+
+
+%doc>
<%perl>
-my %a;
+my %ahtml;
my @vars;
-
-# for output:
-my @archipelagoes;
-my @islandids;
-my %islandid2;
+my %styles;
#---------- "mode" argument parsing and mode menu at top of page ----------
@@ -27,6 +53,39 @@ my %islandid2;
CmpCanon => sub { !!$_[0] },
Values => [ [ 0, 'Type in names' ],
[ 4, 'Select from menus' ] ]
+ }, { 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' ],
+ ],
+ QuerySpecific => 1,
+ }, { Name => 'RouteSearchType',
+ Before => 'Type of routes to search for: ',
+ Values => [ [ 0, 'Open-ended' ],
+ [ 1, 'Circular' ],
+ ],
+ QuerySpecific => 1,
});
foreach my $var (@vars) {
@@ -39,36 +98,103 @@ foreach my $var (@vars) {
$val= [ $val, encode_entities($val) ];
}
if (exists $ARGS{$lname}) {
- $a{$name}= $ARGS{$lname};
+ $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>
+
+<%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)) {
+
-
-
-<%perl>
-#========== result computations ==========
-
-my $results_head;
-$results_head= sub {
- print "
Results
\n";
- $results_head= sub { };
-};
+#---------- initial checks, startup, main entry form ----------
-#---------- result computation - textstring ----------
-if (!$a{Dropdowns}) {
- if (length $routestring) {
- $results_head->();
- my $rsr= $m->comp('routetextstring',
- ocean => $a{Ocean},
- string => $routestring,
- format => 'return'
- );
- if (length $rsr->{Error}) {
- print encode_entities($rsr->{Error});
- } else {
- foreach my $entry (@{ $rsr->{Results} }) {
- push @archipelagoes,
- defined $entry->[1] ? undef : $entry->[0];
- push @islandids, $entry->[1];
- }
- }
- }
+die if $styles{Query} =~ m/[^a-z]/;
-} else { #---------- results - dropdowns ----------
+my $mydbh;
+my $dbh= ($mydbh= dbw_connect($styles{Ocean}));
-my $argorundef= sub {
- my ($dd,$base) = @_;
- my $thing= $ARGS{"${base}${dd}"};
- $thing= undef if defined $thing and $thing eq 'none';
- return $thing;
+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";
};
-for my $dd (0..$a{Dropdowns}-1) {
- my $arch= $argorundef->($dd,'archipelago');
- my $island= $argorundef->($dd,'islandid');
- next unless defined $arch or defined $island;
- if (defined $island and defined $arch) {
- my $ii= $islandid2{$island};
- my $iarch= $ii->{Arch};
- if ($iarch ne $arch) {
- $results_head->();
-%perl>
- Specified archipelago <% $arch %> but
- island <% $ii->{Name} %>
- which is in <% $iarch %>; using the island.
-<%perl>
- }
- $arch= undef;
- }
- push @archipelagoes, $arch;
- push @islandids, $island;
-}
-
-}#---------- result processing, common stuff
%perl>
+<%args>
+$debug => 0
+%args>
-% if (@islandids) {
-% $results_head->();
-
-<& routetrade, islandids => \@islandids, archipelagoes => \@archipelagoes &>
-
+% if (!printable($m)) {
+