/[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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 224 - (show 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 package Sack::Server::HTML;
2
3 use warnings;
4 use strict;
5
6 #use lib '/srv/Sack/lib';
7
8 our $stat;
9
10 sub send_out {
11 my ( $send, $out, $key, $param ) = @_;
12
13
14 my $data;
15
16 $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 if ( $key =~ m{^date,} ) {
36 $data->{path} = "/tmp/sack.out.$key.txt";
37 open( $data->{fh}, '>', $data->{path} );
38 print {$data->{fh}} "## out key=$key\n";
39 }
40
41 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 my $v = $out->{$key}->{$name};
70 print $send qq|<tr><td>$name</td><td>$v</td></tr>\n|;
71
72 if ( $data ) {
73 print {$data->{fh}} "$name $v\n";
74 update_min_max 'key' => $name;
75 update_min_max 'val' => $v;
76 }
77
78 }
79
80 if ( $data ) {
81 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 close($data->{fh});
87 warn "data $data->{path} ", -s $data->{path}, " bytes\n";
88
89 }
90
91 print $send qq|</table>|; # return true
92
93 }
94
95 1;

  ViewVC Help
Powered by ViewVC 1.1.26