From: Ian Jackson Date: Sun, 23 Aug 2009 20:48:57 +0000 (+0100) Subject: Sortable trades table X-Git-Tag: 3.4~120 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?p=ypp-sc-tools.db-live.git;a=commitdiff_plain;h=e9609637b8acfaf47a176e6d0c934d1f907e27a8 Sortable trades table --- diff --git a/yarrg/web/routetrade b/yarrg/web/routetrade index 8d42537..2438059 100644 --- a/yarrg/web/routetrade +++ b/yarrg/web/routetrade @@ -37,8 +37,6 @@ 16:39 Also, maybe colour to highlight the suggested trades? -16:40 columns should be sortable with the small arrows as before - 16:46 Also trading plan not functional but I guess you know that :-) use POST for update. Hrrm. @@ -167,12 +165,14 @@ my $sth= $dbh->prepare($stmt); $sth->execute(@query_params); my @flows; -my @cols; +my @cols= ({ NoSort => 1 }); my $addcols= sub { my $base= shift @_; foreach my $name (@_) { - push @cols, { Name => $name, %$base }; + my $col= { Name => $name, %$base }; + $col->{Numeric}=1 if !$col->{Text}; + push @cols, $col; } }; @@ -187,7 +187,7 @@ if ($qa->{ShowStalls}) { )); } $addcols->({ Text => 1 }, qw(commodname)); -$addcols->({}, +$addcols->({ DoReverse => 1 }, qw( org_price org_qty dst_price dst_qty Margin unitprofit MaxQty MaxCapital MaxProfit @@ -411,10 +411,10 @@ if ($qa->{'debug'}) { die unless $found_section; }; -$addcols->({}, qw( +$addcols->({ DoReverse => 1 }, qw( OptQty )); -$addcols->({ Total => 0 }, qw( +$addcols->({ Total => 0, DoReverse => 1 }, qw( OptCapital OptProfit )); @@ -422,10 +422,11 @@ $addcols->({ Total => 0 }, qw( % } # ========== OPTIMISATION ========== +% my %ts_sortkeys; % { % my $cdspan= $qa->{ShowStalls} ? ' colspan=2' : ''; % my $cdstall= $qa->{ShowStalls} ? 'Stall' : ''; - +
<% $qa->{ShowStalls} ? '' : '' %> @@ -471,23 +472,30 @@ $addcols->({ Total => 0 }, qw( % } % } + +% foreach my $col (@cols) { + +% my $rowid= "id_row_$flow->{UidShort}"; + +
+% } + % foreach my $flow (@flows) { -
{UidShort} %> value=""> {UidShort} %> value="" <% $flow->{Suppress} ? '' : 'checked' %> > -% foreach my $ci (0..$#cols) { +% foreach my $ci (1..$#cols) { % my $col= $cols[$ci]; % my $v= $flow->{$col->{Name}}; % $col->{Total} += $v if defined $col->{Total}; % $v='' if !$col->{Text} && !$v; +% $ts_sortkeys{$ci}{$rowid}= $v; {Text} ? '' : 'align=right' %>><% $v |h %> % } % } -
Total -% foreach my $ci (2..$#cols) { +% foreach my $ci (3..$#cols) { % my $col= $cols[$ci]; % if (defined $col->{Total}) { @@ -496,6 +504,16 @@ $addcols->({ Total => 0 }, qw( % }
+<& tabsort, cols => \@cols, table => 'trades', + throw => 'trades_sort', tbrow => 'trades_total' &> +<&| script &> + ts_sortkeys= <% to_json_protecttags(\%ts_sortkeys) %>; + function all_onload() { + ts_onload__trades(); + } + window.onload= all_onload; + + % if ($optimise) { # ========== TRADING PLAN ========== @@ -525,7 +543,7 @@ Sail to <% $islandname |h %> % next if $f->{Suppress}; % next unless $f->{"${od}_id"} == $islandids[$i]; % next unless $f->{OptQty}; -Buy or sell flow +Buy or sell flow % } % } % }