</%doc>
+
+<%args>
+$quri
+$dbh
+</%args>
+
<%once>
-my $meta_prettyprint_age= sub {
- my ($age,$floor,$plus) = @_;
- return <<END;
- $age < 60 ? 'less than a minute' :
- $age < 60*2 ? '1 minute' :
- $age < 3600*2 ? $floor ($age/60) $plus' minutes' :
- $age < 86400*2 ? $floor ($age/3600) $plus ' hours' :
- $floor ($age/86400) $plus ' days';
-END
-};
-
-my $prettyprint_age;
-eval '
- $prettyprint_age= sub {
- my ($age) = @_;
- '.$meta_prettyprint_age->('$age','floor','.').'
- };
-' or die "$@";
</%once>
<%perl>
-
my $now= time;
my $row;
<h1>Market data age</h1>
-<table>
+<table id="ts_table">
<tr>
<th>Archipelago
<th>Island
<th>Age
</tr>
% my %da_ages;
-% $da_ages{'daid_loaded'}= 0;
+% my %ts_sortkeys;
+% $da_ages{'id_loaded'}= 0;
+% my $rowix= 0;
% while ($row=$sth->fetchrow_hashref) {
-% my $elid= "daid_$row->{'islandid'}";
+% my $rowid= "id_$row->{'islandid'}";
+% my $cellid= "c$rowid";
% my $age= $now - $row->{'timestamp'};
-% $da_ages{$elid}= $age;
-<tr> <td><% $row->{'archipelago'} |h
- %> <td><% $row->{'islandname'} |h
- %> <td id="<% $elid %>"><% $prettyprint_age->($age) %> </tr>
+% $ts_sortkeys{'0'}{$rowid}= $row->{'archipelago'};
+% $ts_sortkeys{'1'}{$rowid}= $row->{'islandname'};
+% $da_ages{$rowid}= $age;
+<tr id=<% $rowid %> class="<% 'datarow'.($rowix & 1) %>"
+ > <td><% $row->{'archipelago'} |h
+ %> <td><% $row->{'islandname'} |h
+ %> <td id="<% $cellid %>"><% prettyprint_age($age) %> </tr>
+% $rowix++;
% }
</table>
-<p>
-Time since this page loaded:
-<span id="daid_loaded">(not known; times above not updating)</span>
-
-<form action="lookup" method="get">
-% foreach my $a (keys %ARGS) {
-<input type="hidden" name="<% $a |h %>" value="<% $ARGS{$a} |h %>">
-% }
-<input type=submit name=submit value="Reload">
-</form>
-
+<& SELF:dataages, id2age => \%da_ages, elemidprefix => "'c'+" &>
+<%method dataages>
+<%args>
+ $id2age
+ $elemidprefix => ''
+</%args>
<&| script &>
- da_ages= <% to_json_protecttags(\%da_ages) %>;
-
function da_Refresh() {
var now= Date.now();
debug('updating now='+now);
- for (var elid in da_ages) {
- var el= document.getElementById(elid);
- var oldage= da_ages[elid];
+ for (var ageid in da_ages) {
+ var oldage= da_ages[ageid];
+ var el= document.getElementById(<% $elemidprefix %>ageid);
var age= oldage + (now - da_pageload) / 1000;
- var newhtml= <% $meta_prettyprint_age->('age','Math.floor','+') %>
-% if ($ARGS{debug}) {
- if (elid == 'daid_loaded')
- debug('element elid='+elid+' oldage='+oldage+' age='+age+': '+newhtml);
-% }
+ var newhtml= <% meta_prettyprint_age('age','Math.floor','+') %>;
el.innerHTML= newhtml;
}
}
-
- window.onload= da_Refresh;
+ da_ages= <% to_json_protecttags($id2age) %>;
window.setInterval(da_Refresh, 10000);
-</&script>
+ register_onload(da_Refresh);
+</&>
+</%method>
+
+<&| tabsort, table => 'ts_table', rowclass => 'datarow', cols => [
+ {}, {},
+ { DoReverse => 1,
+ Numeric => 1,
+ SortKey => "da_ages[rowid]" }]
+ &>
+ ts_sortkeys= <% to_json_protecttags(\%ts_sortkeys) %>;
+</&tabsort>
+
+<p>
+Time since this page loaded:
+<span id="cid_loaded">(not known; times above not updating)</span>
+
+<form action="lookup" method="get">
+<input type=submit name=submit value="Reload">
+<& "lookup:formhidden", ours => sub { 0; } &>
+</form>
<%init>
use POSIX;
use CommodsWeb;
-my $dbh= dbw_connect('Midnight');
</%init>
-<%cleanup>
-$dbh->rollback();
-</%cleanup>