/[Frey]/trunk/lib/Frey/jQuery/flot.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

Diff of /trunk/lib/Frey/jQuery/flot.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 869 by dpavlin, Tue Dec 16 23:03:21 2008 UTC revision 871 by dpavlin, Wed Dec 17 17:59:59 2008 UTC
# Line 13  use lib 'lib'; Line 13  use lib 'lib';
13  use Frey::Shell::sar;  use Frey::Shell::sar;
14  use JSON;  use JSON;
15    
16  has skeleton => (  has sar_command => (
17          is => 'rw',          is => 'rw',
18          isa => 'Str',          isa => 'Str',
19          required => 1,          required => 1,
20          default => 'skeleton',          default => 'ssh www.rot13.org sar -n 1',
21  );  );
22    
23  sub as_markup {  sub as_markup {
# Line 32  sub as_markup { Line 32  sub as_markup {
32    
33          $self->add_css("$path/layout.css");          $self->add_css("$path/layout.css");
34    
35          my $sponge = Frey::Shell::sar->new( sar_command => 'sar -n 1' )->as_sponge;          my $sponge = Frey::Shell::sar->new( sar_command => $self->sar_command )->as_sponge;
36          warn $self->dump( $sponge );          #warn $self->dump( $sponge );
37    
38          my $by_col;          my $by_col;
39            my $unit_by_col;
40    
41          foreach my $row ( @{ $sponge->{rows} } ) {          foreach my $row ( @{ $sponge->{rows} } ) {
42                  my $x = DateTimeX::Easy->new( $row->[0] )->epoch * 1000; # ms                  my $x = DateTimeX::Easy->new( $row->[0] )->epoch * 1000; # ms
43                  foreach my $col ( 2 .. 8 ) {                  foreach my $col ( 1 .. $#$row ) {
44                          push @{ $by_col->{$col} }, [ $x, $row->[$col] ];                          my $v = $row->[$col];
45                            $unit_by_col->{$col} = $1 if $v =~ s{([M%])$}{};
46                            push @{ $by_col->{$col} }, [ $x, $v ];
47                  }                  }
48          }          }
49    
# Line 48  sub as_markup { Line 51  sub as_markup {
51          my @names;          my @names;
52          foreach my $nr ( keys %$by_col ) {          foreach my $nr ( keys %$by_col ) {
53                  my $name = $sponge->{NAME}->[$nr];                  my $name = $sponge->{NAME}->[$nr];
54                  $dataset->{ $name }->{label} ||= $name;                  $dataset->{ $name }->{label}
55                            ||= $name
56                              . ( $unit_by_col->{$nr} ? ' [' . $unit_by_col->{$nr} . ']' : '' )
57                              ;
58                  $dataset->{ $name }->{data} = $by_col->{$nr};                  $dataset->{ $name }->{data} = $by_col->{$nr};
59          }          }
60    
61          my $data_js = 'var datasets = ' . to_json( $dataset ) . ';';          my $data_js = 'var datasets = ' . to_json( $dataset ) . ";\n";
62    
63          warn "# $data_js";          warn "# $data_js" if $self->debug;
64    
65          q|          my $sar = $self->sar_command;
66            my $c = $sar;
67            $c =~ s{(-n\s*\d+).*}{$1};
68    
69            my $form = qq|
70                    <form method="post">
71                    <b>From</b> <input type="submit" value="refresh"><br>
72            |;
73    
74            my $flags = `atsar help 2>&1`;
75            $flags =~ s{^.+flags:\s+}{}s;
76    
77            foreach my $line ( split(/\s*\n\s*/, $flags ) ) {
78                    my ( $flag, $desc ) = split(/\s+/, $line, 2 );
79                    warn "# $flag | $desc";
80                    my $v = "$c $flag";
81                    my $checked = '';
82                    $checked = " checked" if $v eq $self->sar_command;
83                    $form .= qq|<input type="radio" name="sar_command" value="$v"$checked>$desc<br>\n|;
84            }
85    
86            $form .= qq|
87                    </form>
88            |;
89    
90            $self->add_css(q|
91                    #choices, form { float: left; }
92            |);
93    
94            qq|
95          <div id="placeholder" style="width:600px;height:300px;"></div>          <div id="placeholder" style="width:600px;height:300px;"></div>
96    
97                  <div id="choices">Show:</div>                  <br><tt>$sar</tt>
98    
99                    $form
100                    <div id="choices"><b>Show</b></div>
101    
102            | . q|
103                  <script id="source" language="javascript" type="text/javascript">                  <script id="source" language="javascript" type="text/javascript">
104                  $(function () {                  $(function () {
105                          var options = {                          var options = {
106                                  //selection: { mode: "x" },                                  selection: { mode: "x" },
107                                  //yaxis: { min: 0, max: 100 },                                  //yaxis: { min: 0, max: 100 },
108                                  xaxis: { mode: "time" }                                  xaxis: { mode: "time" }
109                          };                          };
# Line 77  sub as_markup { Line 116  sub as_markup {
116    
117                  });                  });
118                  </script>                  </script>
119    
120          |;          |;
121  }  }
122    

Legend:
Removed from v.869  
changed lines
  Added in v.871

  ViewVC Help
Powered by ViewVC 1.1.26