chiark / gitweb /
Break advanced route options out into new component
authorIan Jackson <ian@liberator.(none)>
Sun, 11 Oct 2009 17:01:49 +0000 (18:01 +0100)
committerIan Jackson <ian@liberator.(none)>
Sun, 11 Oct 2009 17:04:09 +0000 (18:04 +0100)
yarrg/web/enter_advrouteopts [new file with mode: 0644]
yarrg/web/query_route
yarrg/web/routetrade

diff --git a/yarrg/web/enter_advrouteopts b/yarrg/web/enter_advrouteopts
new file mode 100644 (file)
index 0000000..1e03733
--- /dev/null
@@ -0,0 +1,91 @@
+<%doc>
+
+ 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 <ijackson@chiark.greenend.org.uk>
+ 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 <http://www.gnu.org/licenses/>.
+
+ 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 entry fields for route planning
+ advanced parameters (capacity limits, etc).
+
+ The results are returned in $routeparams:
+       ${ $routeparams->{EmsgRef} }
+       $routeparams->{LossPerLeaguePct}
+       $routeparams->{MaxMass}
+       $routeparams->{MaxVolume}
+       $routeparams->{MaxCapital}
+
+
+</%doc>
+<%args>
+$qa
+$dbh
+$routeparams
+</%args>
+
+<table><tr><td>
+
+Vessel or capacity:
+<&| qtextstring, qa => $qa, dbh => $dbh, prefix => 'cs',
+    thingstring => 'capacitystring', emsgstore => $routeparams->{EmsgRef},
+    helpref => 'capacity',
+    onresults => sub {
+       ($routeparams->{MaxMass}, $routeparams->{MaxVolume}) = @_;
+    }
+ &>
+ size=40
+</&>
+
+<td>
+&nbsp;
+&nbsp;
+
+<td>
+Expected losses:
+
+<&| qtextstring, qa => $qa, dbh => $dbh, prefix => 'll',
+    thingstring => 'lossperleague', emsgstore => $routeparams->{EmsgRef},
+    helpref => 'losses',
+    onresults => sub { ($routeparams->{LossPerLeaguePct})= @_; }
+ &>
+ size=9
+</&>
+
+</table>
+<table><tr>
+
+<td>Available capital:
+
+<&| qtextstring, qa => $qa, dbh => $dbh, prefix => 'ac',
+    thingstring => 'capitalstring', emsgstore => $routeparams->{EmsgRef},
+    helpref => 'capital',
+    onresults => sub { ($routeparams->{MaxCapital})= @_; }
+ &>
+ size=9
+</&>
+
+</table>
index 62c2aab..53167ac 100644 (file)
@@ -90,50 +90,13 @@ my $goupdate= sub { $be_post ? 'Update' : 'Go' };
  &>
 
 %#---------- textboxes, user enters details as strings ----------
+% my $routeparams= { EmsgRef => \$emsg };
 % if (!$qa->{Dropdowns}) {
 
 <strong>Advanced options - you may leave these blank:</strong>
 <p>
-<table><tr><td>
 
-Vessel or capacity:
-<&| qtextstring, qa => $qa, dbh => $dbh, prefix => 'cs',
-    thingstring => 'capacitystring', emsgstore => \$emsg,
-    helpref => 'capacity',
-    onresults => sub { ($max_mass,$max_volume) = @_; }
- &>
- size=40
-</&>
-
-<td>
-&nbsp;
-&nbsp;
-
-<td>
-Expected losses:
-
-<&| qtextstring, qa => $qa, dbh => $dbh, prefix => 'll',
-    thingstring => 'lossperleague', emsgstore => \$emsg,
-    helpref => 'losses',
-    onresults => sub { ($lossperleaguepct)= @_; }
- &>
- size=9
-</&>
-
-</table>
-<table><tr>
-
-<td>Available capital:
-
-<&| qtextstring, qa => $qa, dbh => $dbh, prefix => 'ac',
-    thingstring => 'capitalstring', emsgstore => \$emsg,
-    helpref => 'capital',
-    onresults => sub { ($capital)= @_; }
- &>
- size=9
-</&>
-
-</table>
+<& enter_advrouteopts, qa=>$qa, dbh=>$dbh, routeparams=>$routeparams &>
 
 % } #---------- end of dropdowns, now common middle of page code ----------
 
@@ -162,10 +125,7 @@ foreach my $warningf (@warningfs) {
    islandids => \@islandids,
    archipelagoes => \@archipelagoes,
    qa => $qa,
-   max_mass => $max_mass,
-   max_volume => $max_volume,
-   lossperleaguepct => $lossperleaguepct,
-   max_capital => $capital
+   routeparams => $routeparams
  &>
 % }
 </form>
index f9ebfea..d66e8b1 100644 (file)
@@ -38,10 +38,7 @@ $dbh
 @islandids
 @archipelagoes
 $qa
-$max_mass
-$max_volume
-$lossperleaguepct
-$max_capital
+$routeparams
 </%args>
 <&| script &>
   da_pageload= Date.now();
@@ -49,7 +46,8 @@ $max_capital
 
 <%perl>
 
-my $loss_per_league= defined $lossperleaguepct ? $lossperleaguepct*0.01 : 1e-7;
+my $loss_per_league= defined $routeparams->{LossPerLeaguePct}
+       ? $routeparams->{LossPerLeaguePct}*0.01 : 1e-7;
 my $loss_per_delay_slot= 1e-8;
 
 my $now= time;
@@ -468,7 +466,8 @@ foreach my $ci (0..($#islandids-1)) {
        }
 
        my $applylimit= sub {
-               my ($mv, $max, $f2val) = @_;
+               my ($mv, $f2val) = @_;
+               my $max= $routeparams->{"Max".ucfirst $mv};
                $max= 1e9 unless defined $max;
 #print " DEFINED MAX $mv $max ";
                $cplex .= "
@@ -480,9 +479,9 @@ foreach my $ci (0..($#islandids-1)) {
                " <= $max";
        };
 
-       $applylimit->('mass',   $max_mass,   sub { $_[0]{'unitmass'}  *1e-3 });
-       $applylimit->('volume', $max_volume, sub { $_[0]{'unitvolume'}*1e-3 });
-       $applylimit->('capital',$max_capital,sub { $_[0]{'org_price'}       });
+       $applylimit->('mass',    sub { $_[0]{'unitmass'}  *1e-3 });
+       $applylimit->('volume',  sub { $_[0]{'unitvolume'}*1e-3 });
+       $applylimit->('capital', sub { $_[0]{'org_price'}       });
        $cplex.= "\n";
 }
 
@@ -865,8 +864,8 @@ $addcols->({ Total => 0, DoReverse => 1, TotalSubflows => 1 }, qw(
                $totals .= sprintf "%g %s", ($max-$got), $units;
                $delim= ', ';
        };
-       $domv->($max_mass,   $sail_total[$i]{mass},   'kg');
-       $domv->($max_volume, $sail_total[$i]{volume}, 'l');
+       $domv->($routeparams->{MaxMass},   $sail_total[$i]{mass},   'kg');
+       $domv->($routeparams->{MaxVolume}, $sail_total[$i]{volume}, 'l');
        $totals .= ".\n";
      }
      $show_total_now->($totals);