From 64f37d1c80bfd082dab4a11db206515890af6f44 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 11 Oct 2009 18:01:49 +0100 Subject: [PATCH] Break advanced route options out into new component --- yarrg/web/enter_advrouteopts | 91 ++++++++++++++++++++++++++++++++++++ yarrg/web/query_route | 46 ++---------------- yarrg/web/routetrade | 21 ++++----- 3 files changed, 104 insertions(+), 54 deletions(-) create mode 100644 yarrg/web/enter_advrouteopts diff --git a/yarrg/web/enter_advrouteopts b/yarrg/web/enter_advrouteopts new file mode 100644 index 0000000..1e03733 --- /dev/null +++ b/yarrg/web/enter_advrouteopts @@ -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 + 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 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} + + + +<%args> +$qa +$dbh +$routeparams + + +
+ +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 + + + +  +  + + +Expected losses: + +<&| qtextstring, qa => $qa, dbh => $dbh, prefix => 'll', + thingstring => 'lossperleague', emsgstore => $routeparams->{EmsgRef}, + helpref => 'losses', + onresults => sub { ($routeparams->{LossPerLeaguePct})= @_; } + &> + size=9 + + +
+ + +
Available capital: + +<&| qtextstring, qa => $qa, dbh => $dbh, prefix => 'ac', + thingstring => 'capitalstring', emsgstore => $routeparams->{EmsgRef}, + helpref => 'capital', + onresults => sub { ($routeparams->{MaxCapital})= @_; } + &> + size=9 + + +
diff --git a/yarrg/web/query_route b/yarrg/web/query_route index 62c2aab..53167ac 100644 --- a/yarrg/web/query_route +++ b/yarrg/web/query_route @@ -90,50 +90,13 @@ my $goupdate= sub { $be_post ? 'Update' : 'Go' }; &> %#---------- textboxes, user enters details as strings ---------- +% my $routeparams= { EmsgRef => \$emsg }; % if (!$qa->{Dropdowns}) { Advanced options - you may leave these blank:

-
-Vessel or capacity: -<&| qtextstring, qa => $qa, dbh => $dbh, prefix => 'cs', - thingstring => 'capacitystring', emsgstore => \$emsg, - helpref => 'capacity', - onresults => sub { ($max_mass,$max_volume) = @_; } - &> - size=40 - - - -  -  - - -Expected losses: - -<&| qtextstring, qa => $qa, dbh => $dbh, prefix => 'll', - thingstring => 'lossperleague', emsgstore => \$emsg, - helpref => 'losses', - onresults => sub { ($lossperleaguepct)= @_; } - &> - size=9 - - -
- - -
Available capital: - -<&| qtextstring, qa => $qa, dbh => $dbh, prefix => 'ac', - thingstring => 'capitalstring', emsgstore => \$emsg, - helpref => 'capital', - onresults => sub { ($capital)= @_; } - &> - size=9 - - -
+<& 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 &> % } diff --git a/yarrg/web/routetrade b/yarrg/web/routetrade index f9ebfea..d66e8b1 100644 --- a/yarrg/web/routetrade +++ b/yarrg/web/routetrade @@ -38,10 +38,7 @@ $dbh @islandids @archipelagoes $qa -$max_mass -$max_volume -$lossperleaguepct -$max_capital +$routeparams <&| 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); -- 2.30.2