chiark / gitweb /
New dataage mode actually works
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 13 Aug 2009 14:00:29 +0000 (15:00 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 13 Aug 2009 14:00:29 +0000 (15:00 +0100)
yarrg/web/dataage [new file with mode: 0644]
yarrg/web/lookup

diff --git a/yarrg/web/dataage b/yarrg/web/dataage
new file mode 100644 (file)
index 0000000..b6ba584
--- /dev/null
@@ -0,0 +1,92 @@
+<%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;
+my $sth= $dbh->prepare("SELECT archipelago, islandid, islandname, timestamp
+                               FROM uploads NATURAL JOIN islands
+                               ORDER BY archipelago, islandid");
+$sth->execute();
+
+</%perl>
+
+<script type="text/javascript">
+da_pageload= Date.now();
+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];
+    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);
+% }
+    el.innerHTML= newhtml;
+  }
+}
+</script>
+
+<table>
+<tr>
+<th>Archipelago
+<th>Island
+<th>Age
+</tr>
+% while ($row=$sth->fetchrow_hashref) {
+%      my $elid= "daid_$row->{'islandid'}";
+%      my $age= $now - $row->{'timestamp'};
+<tr> <td><% $row->{'archipelago'} |h
+ %>  <td><% $row->{'islandname'} |h
+ %>  <td id="<% $elid %>"><% $prettyprint_age->($age) %> </tr>
+<script type="text/javascript"> da_ages['<% $elid %>']= <% $age %>; </script>
+% }
+</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>
+
+<script type="text/javascript">
+da_ages['daid_loaded']= 0;
+window.onload= da_Refresh;
+window.setInterval(da_Refresh, 10000);
+</script>
+
+<%init>
+use POSIX;
+use CommodsWeb;
+my $dbh= dbw_connect('Midnight');
+</%init>
index ae22b33..469f228 100644 (file)
@@ -50,7 +50,7 @@ foreach my $var (@vars) {
 </%perl>
 <html><head><title><% ucfirst $ahtml{Query} %> - YARRG</title></head><body>
 
-<a href="<% $m->current_comp()->name() %>">YARRG</a> -
+<a href="<% $m->current_comp()->name() |u %>">YARRG</a> -
  Yet Another Revenue Research Gatherer
 <p>
 <%perl>
@@ -72,7 +72,7 @@ foreach my $var (keys %ARGS) {
 }
 
 my $quri= sub {
-       my $uri= URI->new($m->current_comp()->name());
+       my $uri= URI->new('lookup');
        $uri->query_form(@_);
        $uri->path_query();
 };
@@ -226,7 +226,7 @@ foreach my $arch (keys %islandlistdata) {
 
 </%perl>
 
-<input type=hidden name=dropdowns value="<% $a{Dropdowns} %>">
+<input type=hidden name=dropdowns value="<% $a{Dropdowns} |h %>">
 
 <script type="text/javascript">
 ms_lists= <% to_json(\%resetislandlistdata) %>;
@@ -344,6 +344,7 @@ for my $dd (0..$a{Dropdowns}-1) {
 % ########### query `age' ##########
 
 <h1>Market data age</h1>
+<& dataage, %baseqf, %queryqf &>
 
 % } ########## end of `age' query ##########