/[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 907 by dpavlin, Fri Dec 26 01:32:09 2008 UTC
# Line 6  with 'Frey::Web'; Line 6  with 'Frey::Web';
6  #with 'Frey::Storage';  #with 'Frey::Storage';
7  with 'Frey::jQuery';  with 'Frey::jQuery';
8  with 'Frey::File'; # FIXME inline on demand?  with 'Frey::File'; # FIXME inline on demand?
9    with 'Frey::Web::IFrame';
10    
11  use DateTimeX::Easy;  use DateTimeX::Easy;
12    
# Line 13  use lib 'lib'; Line 14  use lib 'lib';
14  use Frey::Shell::sar;  use Frey::Shell::sar;
15  use JSON;  use JSON;
16    
17  has skeleton => (  has sar_command => (
18          is => 'rw',          is => 'rw',
19          isa => 'Str',          isa => 'Str',
20          required => 1,          required => 1,
21          default => 'skeleton',          default => 'ssh www.rot13.org sar -n 1',
22  );  );
23    
24  sub as_markup {  sub as_markup {
# Line 30  sub as_markup { Line 31  sub as_markup {
31                  <script language="javascript" type="text/javascript" src="/$path/jquery.flot.js"></script>                  <script language="javascript" type="text/javascript" src="/$path/jquery.flot.js"></script>
32          |);          |);
33    
34          $self->add_css("$path/layout.css");          my $sponge = Frey::Shell::sar->new( sar_command => $self->sar_command )->as_sponge;
35            #warn $self->dump( $sponge );
         my $sponge = Frey::Shell::sar->new( sar_command => 'sar -n 1' )->as_sponge;  
         warn $self->dump( $sponge );  
36    
37          my $by_col;          my $by_col;
38            my $unit_by_col;
39    
40          foreach my $row ( @{ $sponge->{rows} } ) {          foreach my $row ( @{ $sponge->{rows} } ) {
41                  my $x = DateTimeX::Easy->new( $row->[0] )->epoch * 1000; # ms                  my $x = DateTimeX::Easy->new( $row->[0] )->epoch * 1000; # ms
42                  foreach my $col ( 2 .. 8 ) {                  foreach my $col ( 1 .. $#$row ) {
43                          push @{ $by_col->{$col} }, [ $x, $row->[$col] ];                          my $v = $row->[$col];
44                            $unit_by_col->{$col} = $1 if $v =~ s{([M%])$}{};
45                            push @{ $by_col->{$col} }, [ $x, $v ];
46                  }                  }
47          }          }
48    
# Line 48  sub as_markup { Line 50  sub as_markup {
50          my @names;          my @names;
51          foreach my $nr ( keys %$by_col ) {          foreach my $nr ( keys %$by_col ) {
52                  my $name = $sponge->{NAME}->[$nr];                  my $name = $sponge->{NAME}->[$nr];
53                  $dataset->{ $name }->{label} ||= $name;                  $dataset->{ $name }->{label}
54                            ||= $name
55                              . ( $unit_by_col->{$nr} ? ' [' . $unit_by_col->{$nr} . ']' : '' )
56                              ;
57                  $dataset->{ $name }->{data} = $by_col->{$nr};                  $dataset->{ $name }->{data} = $by_col->{$nr};
58          }          }
59    
60          my $data_js = 'var datasets = ' . to_json( $dataset ) . ';';          my $placeholder = qq|<div class="frey-error">no data found</div>|;
61            my $data_js = '';
62            if ( $dataset ) {
63                    $data_js = 'var datasets = ' . to_json( $dataset ) . ";\n";
64                    $placeholder = qq|
65                            <div id="placeholder" style="width:600px;height:300px;"></div>
66                            <div id="selection">no selection</div>
67                    |
68                    . $self->iframe_html
69                    ;
70            }
71    
72            warn "# $data_js" if $self->debug;
73    
74            my $sar = $self->sar_command;
75            my $c = $sar;
76            $c =~ s{sar\s(-n\s*\d+)?(.*?)$}{sar $1};
77    
78            my $form = qq|
79                    <form method="post">
80                    <b>From</b> <input type="submit" value="refresh"><br>
81            |;
82    
83            my $flags = `atsar help 2>&1`;
84            $flags =~ s{^.+flags:\s+}{}s;
85            $flags =~ s{^\s*-[AS].+$}{}gm; # remove -A and -S flags which doesn't make sense
86            $flags =~ s{^\s+}{}s;
87    
88            foreach my $line ( split(/\s*\n\s*/, $flags ) ) {
89                    my ( $flag, $desc ) = split(/\s+/, $line, 2 );
90                    warn "# $flag | $desc";
91                    my $v = "$c $flag";
92                    my $checked = '';
93                    $checked = " checked" if $self->sar_command =~ m{$flag};
94                    $form .= qq|<input type="radio" name="sar_command" value="$v"$checked>$desc<br>\n|;
95            }
96    
97            $form .= qq|
98                    </form>
99            |;
100    
101            $self->add_css(q|
102                    #choices, form { float: left; }
103            |);
104    
105          warn "# $data_js";          return
106            qq|
107    
108          q|                  <code>$sar</code>
         <div id="placeholder" style="width:600px;height:300px;"></div>  
109    
110                  <div id="choices">Show:</div>                  $placeholder
111    
112                    $form
113    
114                    <div id="choices"><b>Show</b></div>
115    
116            | . q|
117                  <script id="source" language="javascript" type="text/javascript">                  <script id="source" language="javascript" type="text/javascript">
118                  $(function () {                  $(function () {
119                          var options = {                          var options = {
120                                  //selection: { mode: "x" },                                  selection: { mode: "x" },
121                                  //yaxis: { min: 0, max: 100 },                                  //yaxis: { min: 0, max: 100 },
122                                  xaxis: { mode: "time" }                                  xaxis: { mode: "time" }
123                          };                          };
# Line 77  sub as_markup { Line 130  sub as_markup {
130    
131                  });                  });
132                  </script>                  </script>
133    
134          |;          |;
135  }  }
136    

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

  ViewVC Help
Powered by ViewVC 1.1.26