chiark / gitweb /
New dataage mode actually works
[ypp-sc-tools.web-live.git] / yarrg / web / dataage
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>