/[Sack]/trunk/lib/Sack/Server/HTML.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /trunk/lib/Sack/Server/HTML.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 224 - (hide annotations)
Mon Nov 23 19:13:33 2009 UTC (14 years, 6 months ago) by dpavlin
File size: 1914 byte(s)
record key and value min/max

1 dpavlin 213 package Sack::Server::HTML;
2    
3     use warnings;
4     use strict;
5    
6 dpavlin 223 #use lib '/srv/Sack/lib';
7 dpavlin 218
8 dpavlin 224 our $stat;
9    
10 dpavlin 213 sub send_out {
11     my ( $send, $out, $key, $param ) = @_;
12    
13 dpavlin 224
14 dpavlin 223 my $data;
15 dpavlin 218
16 dpavlin 224 $stat = {};
17     sub update_min_max {
18     my ( $name, $v ) = @_;
19    
20     $stat->{$name}->{'min'} = $v
21     if ! defined $stat->{$name}->{'min'}
22     || $v =~ m{^\d+$}
23     && $v < $stat->{$name}->{'min'}
24     || $v lt $stat->{$name}->{'min'}
25     ;
26    
27     $stat->{$name}->{'max'} = $v
28     if ! defined $stat->{$name}->{'max'}
29     || $v =~ m{^\d+$}
30     && $v > $stat->{$name}->{'max'}
31     || $v gt $stat->{$name}->{'max'}
32     ;
33     }
34    
35 dpavlin 223 if ( $key =~ m{^date,} ) {
36 dpavlin 224 $data->{path} = "/tmp/sack.out.$key.txt";
37 dpavlin 223 open( $data->{fh}, '>', $data->{path} );
38 dpavlin 224 print {$data->{fh}} "## out key=$key\n";
39 dpavlin 223 }
40    
41 dpavlin 213 my $sort = $param->{sort} || 'k';
42     my $order = $param->{order} || 'd';
43    
44     my $o = $order eq 'u' ? 'd' : 'u';
45     my $s = $sort eq 'k' ? 'v' : 'k';
46    
47     print $send qq|<h1>$key</h1>\n<table>\n<tr>|;
48    
49     print $send map {
50     if ( $sort eq $_ ) {
51     qq|<th>$_ <a href="?sort=$_;order=$o">&${o}arr;</th>|
52     } else {
53     qq|<th><a href="?sort=$s;order=d">$_ &darr;</a></th>|
54     }
55     } ( 'k', 'v' );
56    
57     print $send qq|</tr>\n|;
58    
59     foreach my $name (
60     sort {
61     $sort eq 'k'
62     ? ( $order eq 'd' ? $a cmp $b : $b cmp $a )
63     : ( $order eq 'd' ? $out->{$key}->{$a} <=> $out->{$key}->{$b}
64     : $out->{$key}->{$b} <=> $out->{$key}->{$a} )
65     ;
66     }
67     keys %{ $out->{$key} }
68     ) {
69 dpavlin 218 my $v = $out->{$key}->{$name};
70     print $send qq|<tr><td>$name</td><td>$v</td></tr>\n|;
71    
72 dpavlin 224 if ( $data ) {
73     print {$data->{fh}} "$name $v\n";
74     update_min_max 'key' => $name;
75     update_min_max 'val' => $v;
76     }
77 dpavlin 223
78 dpavlin 213 }
79 dpavlin 218
80 dpavlin 223 if ( $data ) {
81 dpavlin 224 foreach my $k ( keys %$stat ) {
82     foreach my $sk ( keys %{ $stat->{$k} } ) {
83     print {$data->{fh}} "# $k.$sk=", $stat->{$k}->{$sk}, "\n";
84     }
85     }
86 dpavlin 223 close($data->{fh});
87     warn "data $data->{path} ", -s $data->{path}, " bytes\n";
88 dpavlin 224
89 dpavlin 223 }
90    
91     print $send qq|</table>|; # return true
92    
93 dpavlin 213 }
94    
95     1;

  ViewVC Help
Powered by ViewVC 1.1.26