chiark / gitweb /
New dataage mode actually works
[ypp-sc-tools.db-test.git] / yarrg / web / dataage
1 <%once>
2 my $meta_prettyprint_age= sub {
3     my ($age,$floor,$plus) = @_;
4     return <<END;
5         $age < 60 ?             'less than a minute'                    :
6         $age < 60*2 ?           '1 minute'                              :
7         $age < 3600*2 ?         $floor ($age/60) $plus' minutes'        :
8         $age < 86400*2 ?        $floor ($age/3600) $plus ' hours'       :
9                                 $floor ($age/86400) $plus ' days';
10 END
11 };
12
13 my $prettyprint_age;
14 eval '
15   $prettyprint_age= sub {
16                 my ($age) = @_;
17                 '.$meta_prettyprint_age->('$age','floor','.').'
18   };
19 ' or die "$@";
20
21 </%once>
22
23 <%perl>
24
25 my $now= time;
26
27 my $row;
28 my $sth= $dbh->prepare("SELECT archipelago, islandid, islandname, timestamp
29                                 FROM uploads NATURAL JOIN islands
30                                 ORDER BY archipelago, islandid");
31 $sth->execute();
32
33 </%perl>
34
35 <script type="text/javascript">
36 da_pageload= Date.now();
37 da_ages= { };
38 function da_Refresh() {
39   var now= Date.now();
40   debug('updating now='+now);
41   for (var elid in da_ages) {
42     var el= document.getElementById(elid);
43     var oldage= da_ages[elid];
44     var age= oldage + (now - da_pageload) / 1000;
45     var newhtml= <% $meta_prettyprint_age->('age','Math.floor','+') %>
46 % if ($ARGS{debug}) {
47     if (elid == 'daid_loaded')
48       debug('element elid='+elid+' oldage='+oldage+' age='+age+': '+newhtml);
49 % }
50     el.innerHTML= newhtml;
51   }
52 }
53 </script>
54
55 <table>
56 <tr>
57 <th>Archipelago
58 <th>Island
59 <th>Age
60 </tr>
61 % while ($row=$sth->fetchrow_hashref) {
62 %       my $elid= "daid_$row->{'islandid'}";
63 %       my $age= $now - $row->{'timestamp'};
64 <tr> <td><% $row->{'archipelago'} |h
65  %>  <td><% $row->{'islandname'} |h
66  %>  <td id="<% $elid %>"><% $prettyprint_age->($age) %> </tr>
67 <script type="text/javascript"> da_ages['<% $elid %>']= <% $age %>; </script>
68 % }
69 </table>
70
71 <p>
72 Time since this page loaded:
73 <span id="daid_loaded">(not known; times above not updating)</span>
74
75 <form action="lookup" method="get">
76 % foreach my $a (keys %ARGS) {
77 <input type="hidden" name="<% $a |h %>" value="<% $ARGS{$a} |h %>">
78 % }
79 <input type=submit name=submit value="Reload">
80 </form>
81
82 <script type="text/javascript">
83 da_ages['daid_loaded']= 0;
84 window.onload= da_Refresh;
85 window.setInterval(da_Refresh, 10000);
86 </script>
87
88 <%init>
89 use POSIX;
90 use CommodsWeb;
91 my $dbh= dbw_connect('Midnight');
92 </%init>