From 3f99b04acd8cf6080069b542206f9f3de049f58a Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 23 Aug 2009 15:39:49 +0100 Subject: [PATCH] Compress flow ids --- yarrg/web/lookup | 2 +- yarrg/web/query_route | 2 +- yarrg/web/routetrade | 71 +++++++++++++++++++++++++++++++++++++------ 3 files changed, 63 insertions(+), 12 deletions(-) diff --git a/yarrg/web/lookup b/yarrg/web/lookup index 8475f68..cfffd14 100755 --- a/yarrg/web/lookup +++ b/yarrg/web/lookup @@ -139,7 +139,7 @@ foreach my $var (keys %ARGS) { islandid \d | archipelago \d | debug | - rtsel[ag]_\w+ + [RT]\w+ )$/x; my $val= $ARGS{$var}; next if $val eq 'none'; diff --git a/yarrg/web/query_route b/yarrg/web/query_route index 18c3ecb..adcb89d 100644 --- a/yarrg/web/query_route +++ b/yarrg/web/query_route @@ -166,7 +166,7 @@ function ms_Setarch(dd) { % } #---------- end of dropdowns, now common middle of page code ---------- -% my $ours= sub { $_[0] =~ m/^island|^archipelago|^routestring|^rtsel[ag]_/; }; +% my $ours= sub { $_[0] =~ m/^island|^archipelago|^routestring|^[RT]/; }; <& "lookup:formhidden", ours => $ours &> <%perl> diff --git a/yarrg/web/routetrade b/yarrg/web/routetrade index dcf3671..e200aa5 100644 --- a/yarrg/web/routetrade +++ b/yarrg/web/routetrade @@ -186,13 +186,66 @@ push @columns, qw(commodname foreach my $od (qw(org dst)) { push @uid, $f->{"${od}_id"}, - $f->{"${od}_price"}, - $f->{"${od}_stallid"}; + $f->{"${od}_price"}; + push @uid, + $f->{"${od}_stallid"} + if $qa->{ShowStalls}; } - $f->{Uid}= join '_', @uid; + $f->{UidLong}= join '_', @uid; + + my $base= 31; + my $cmpu= ''; + map { + my $uue= $_; + my $first= $base; + do { + my $this= $uue % $base; +print STDERR "uue=$uue this=$this "; + $uue -= $this; + $uue /= $base; + $this += $first; + $first= 0; + $cmpu .= chr($this + ($this < 26 ? ord('a') : + $this < 52 ? ord('A')-26 + : ord('0')-52)); +print STDERR " uue=$uue this=$this cmpu=$cmpu\n"; +die "$cmpu $uue ?" if length $cmpu > 20; + } while ($uue); + $cmpu; + } @uid; + $f->{UidShort}= $cmpu; + + if ($qa->{'debug'}) { + my @outuid; + $_= $f->{UidShort}; + my $mul; + while (m/./) { + my $v= m/^[a-z]/ ? ord($&)-ord('a') : + m/^[A-Z]/ ? ord($&)-ord('A')+26 : + m/^[0-9]/ ? ord($&)-ord('0')+52 : + die "$_ ?"; + if ($v >= $base) { + push @outuid, 0; + $v -= $base; + $mul= 1; +#print STDERR "(next)\n"; + } + die "$f->{UidShort} $_ ?" unless defined $mul; + $outuid[$#outuid] += $v * $mul; - if ($qa->{"rtsela_$f->{Uid}"} && - !$qa->{"rtselg_$f->{Uid}"}) { +#print STDERR "$f->{UidShort} $_ $& v=$v mul=$mul ord()=".ord($&). +# "[vs.".ord('a').",".ord('A').",".ord('0')."]". +# " outuid=@outuid\n"; + + $mul *= $base; + s/^.//; + } + my $recons_long= join '_', @outuid; + $f->{UidLong} eq $recons_long or + die "$f->{UidLong} = $f->{UidShort} = $recons_long ?"; + } + + if ($qa->{"R$f->{UidShort}"} && !$qa->{"T$f->{UidShort}"}) { $f->{Suppress}= 1; } @@ -228,7 +281,7 @@ Maximize totalprofit: ".(join " + - ", map { "$_->{unit_profit} $_->{Var}" } @flows)." + ", map { "$_->{unitprofit} $_->{Var}" } @flows)." Subject To "; @@ -311,8 +364,6 @@ if ($qa->{'debug'}) { die unless $found_section; }; -print join ' ', map { $_->{Optimal} } @flows; - push @columns, qw(OptQty OptCapital OptProfit); @@ -359,8 +410,8 @@ push @columns, qw(OptQty OptCapital OptProfit); % foreach my $flow (@flows) { -{Uid} %> value=1> - {Uid} %> value=1 +{UidShort} %> value=""> + {UidShort} %> value="" <% $flow->{Suppress} ? '' : 'checked' %> > % foreach my $col (@columns) { <% $flow->{$col} |h %> -- 2.30.2