X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?a=blobdiff_plain;f=yarrg%2Fweb%2Flookup;h=38d87d6352d9b96c4a82f059e171c1a336f0d176;hb=aed32e2dcb952bcfc9678eef4125e269f538edf2;hp=e062e60c6c4b072ca6daf1f96709f0d111e87cad;hpb=63f1acf6e7821a94d3a906ba831203ff916e7893;p=ypp-sc-tools.web-live.git
diff --git a/yarrg/web/lookup b/yarrg/web/lookup
old mode 100644
new mode 100755
index e062e60..38d87d6
--- a/yarrg/web/lookup
+++ b/yarrg/web/lookup
@@ -1,18 +1,44 @@
-
+ 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.
-YARRG -
- Yet Another Revenue Research Gatherer
-
+ 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;
-
#---------- "mode" argument parsing and mode menu at top of page ----------
# for debugging, invoke as
@@ -27,6 +53,10 @@ my %islandid2;
CmpCanon => sub { !!$_[0] },
Values => [ [ 0, 'Type in names' ],
[ 4, 'Select from menus' ] ]
+ }, { Name => 'Query',
+ Before => 'Query: ',
+ Values => [ [ 'route', 'Trades for route' ],
+ [ 'age', 'Data age' ] ]
});
foreach my $var (@vars) {
@@ -40,11 +70,24 @@ foreach my $var (@vars) {
}
if (exists $ARGS{$lname}) {
$a{$name}= $ARGS{$lname};
+ my @html= grep { $_->[0] eq $a{$name} } @{ $var->{Values} };
+ $ahtml{$name}= @html==1 ? $html[0][1] : '???';
} else {
$a{$name}= $var->{Values}[0][0];
+ $ahtml{$name}= $var->{Values}[0][1];
}
}
+%perl>
+
<% ucfirst $ahtml{Query} %> - YARRG
+
+YARRG -
+ Yet Another Revenue Research Gatherer
+|
+documentation
+
+<%perl>
+
my %baseqf;
foreach my $var (@vars) {
my $lname= lc $var->{Name};
@@ -56,11 +99,16 @@ my %queryqf;
foreach my $var (keys %ARGS) {
next unless $var =~
m/^(?:routestring|islandid\d|archipelago\d|debug)$/;
- $queryqf{$var}= $ARGS{$var};
+ my $val= $ARGS{$var};
+ next if $val eq 'none';
+ $queryqf{$var}= $val;
}
-my $uri= URI->new($m->current_comp()->name());
-my $quri= sub { $uri->query_form(@_); $uri->path_query(); };
+my $quri= sub {
+ my $uri= URI->new('lookup');
+ $uri->query_form(@_);
+ $uri->path_query();
+};
foreach my $var (@vars) {
my $name= $var->{Name};
@@ -80,7 +128,9 @@ foreach my $var (@vars) {
my %qf= (%baseqf,%queryqf);
delete $qf{$lname};
$qf{$lname}= $value if $cvalix;
- print '';
+%perl>
+
+<%perl>
$after= '';
}
print $html, $after;
@@ -96,231 +146,21 @@ dbw_connect($a{Ocean});
%perl>
<%args>
$debug => 0
-$routestring => ''
%args>
-
Specify route
-
-
-<%perl>
-#========== result computations ==========
+<& query_route, %baseqf, %queryqf, quri => $quri, a => \%a &>
-my $results_head;
-$results_head= sub {
- print "Results
\n";
- $results_head= sub { };
-};
-
-#---------- 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];
- }
- }
- }
-
-} else { #---------- results - dropdowns ----------
-
-my $argorundef= sub {
- my ($dd,$base) = @_;
- my $thing= $ARGS{"${base}${dd}"};
- $thing= undef if defined $thing and $thing eq 'none';
- return $thing;
-};
-
-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;
-}
+% } elsif ($a{Query} eq 'age') {
+% ########### query `age' ##########
-}#---------- result processing, common stuff
-%perl>
+<& query_age, %baseqf, %queryqf &>
-% if (@islandids) {
-% $results_head->();
-
-<& routetrade, islandids => \@islandids, archipelagoes => \@archipelagoes &>
-
-% }
+% } ########## end of `age' query ##########
%#---------- debugging and epilogue ----------
@@ -331,19 +171,20 @@ Debug log:
% }
-
+&script>
+
+<& footer &>
<%init>
use CommodsWeb;
use HTML::Entities;
use URI::Escape;
-use JSON;
%init>