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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 920 - (hide annotations)
Mon Jan 5 20:22:37 2009 UTC (15 years, 4 months ago) by dpavlin
File size: 3033 byte(s)
make sponge param with new validation role Frey::Sponge
1 dpavlin 860 package Frey::jQuery::flot;
2     use Moose;
3    
4     extends 'Frey';
5     with 'Frey::Web';
6     #with 'Frey::Storage';
7     with 'Frey::jQuery';
8 dpavlin 869 with 'Frey::File'; # FIXME inline on demand?
9 dpavlin 907 with 'Frey::Web::IFrame';
10 dpavlin 860
11 dpavlin 868 use DateTimeX::Easy;
12    
13     use lib 'lib';
14     use Frey::Shell::sar;
15     use JSON;
16    
17 dpavlin 870 has sar_command => (
18 dpavlin 860 is => 'rw',
19     isa => 'Str',
20     required => 1,
21 dpavlin 870 default => 'ssh www.rot13.org sar -n 1',
22 dpavlin 860 );
23    
24 dpavlin 920 with 'Frey::Sponge'; # has sponge
25    
26 dpavlin 860 sub as_markup {
27     my ($self) = @_;
28    
29     my $path = 'static/js/flot';
30    
31     $self->add_js(qq|
32     <!--[if IE]><script language="javascript" type="text/javascript" src="/$path/excanvas.pack.js"></script><![endif]-->
33     <script language="javascript" type="text/javascript" src="/$path/jquery.flot.js"></script>
34     |);
35    
36 dpavlin 920 my $sponge = $self->sponge;
37 dpavlin 868
38     my $by_col;
39 dpavlin 871 my $unit_by_col;
40 dpavlin 868
41     foreach my $row ( @{ $sponge->{rows} } ) {
42 dpavlin 920 my $time = eval {
43     DateTimeX::Easy->new( $row->[0] )->epoch * 1000; # ms
44     };
45     die "FATAL: sponge first column ", $self->dump( $row->[0] ), " isn't valid time because of: $@" if $@;
46 dpavlin 871 foreach my $col ( 1 .. $#$row ) {
47     my $v = $row->[$col];
48     $unit_by_col->{$col} = $1 if $v =~ s{([M%])$}{};
49 dpavlin 920 push @{ $by_col->{$col} }, [ $time, $v ];
50 dpavlin 868 }
51     }
52    
53 dpavlin 869 my $dataset;
54 dpavlin 868 my @names;
55     foreach my $nr ( keys %$by_col ) {
56 dpavlin 869 my $name = $sponge->{NAME}->[$nr];
57 dpavlin 871 $dataset->{ $name }->{label}
58     ||= $name
59     . ( $unit_by_col->{$nr} ? ' [' . $unit_by_col->{$nr} . ']' : '' )
60     ;
61 dpavlin 869 $dataset->{ $name }->{data} = $by_col->{$nr};
62 dpavlin 868 }
63    
64 dpavlin 873 my $placeholder = qq|<div class="frey-error">no data found</div>|;
65     my $data_js = '';
66     if ( $dataset ) {
67     $data_js = 'var datasets = ' . to_json( $dataset ) . ";\n";
68 dpavlin 878 $placeholder = qq|
69     <div id="placeholder" style="width:600px;height:300px;"></div>
70     <div id="selection">no selection</div>
71 dpavlin 907 |
72     . $self->iframe_html
73     ;
74 dpavlin 873 }
75 dpavlin 869
76 dpavlin 870 warn "# $data_js" if $self->debug;
77 dpavlin 868
78 dpavlin 871 my $sar = $self->sar_command;
79     my $c = $sar;
80 dpavlin 903 $c =~ s{sar\s(-n\s*\d+)?(.*?)$}{sar $1};
81 dpavlin 870
82     my $form = qq|
83     <form method="post">
84 dpavlin 871 <b>From</b> <input type="submit" value="refresh"><br>
85 dpavlin 870 |;
86    
87     my $flags = `atsar help 2>&1`;
88     $flags =~ s{^.+flags:\s+}{}s;
89 dpavlin 873 $flags =~ s{^\s*-[AS].+$}{}gm; # remove -A and -S flags which doesn't make sense
90     $flags =~ s{^\s+}{}s;
91 dpavlin 870
92     foreach my $line ( split(/\s*\n\s*/, $flags ) ) {
93 dpavlin 871 my ( $flag, $desc ) = split(/\s+/, $line, 2 );
94 dpavlin 920 warn "# $flag | $desc" if $self->debug;
95 dpavlin 870 my $v = "$c $flag";
96 dpavlin 871 my $checked = '';
97 dpavlin 878 $checked = " checked" if $self->sar_command =~ m{$flag};
98 dpavlin 871 $form .= qq|<input type="radio" name="sar_command" value="$v"$checked>$desc<br>\n|;
99 dpavlin 870 }
100    
101     $form .= qq|
102     </form>
103     |;
104    
105     $self->add_css(q|
106 dpavlin 871 #choices, form { float: left; }
107 dpavlin 870 |);
108    
109 dpavlin 873 return
110 dpavlin 870 qq|
111    
112 dpavlin 876 <code>$sar</code>
113    
114 dpavlin 873 $placeholder
115    
116 dpavlin 871 $form
117 dpavlin 873
118 dpavlin 871 <div id="choices"><b>Show</b></div>
119 dpavlin 860
120 dpavlin 870 | . q|
121 dpavlin 860 <script id="source" language="javascript" type="text/javascript">
122     $(function () {
123 dpavlin 868 var options = {
124 dpavlin 870 selection: { mode: "x" },
125 dpavlin 869 //yaxis: { min: 0, max: 100 },
126     xaxis: { mode: "time" }
127 dpavlin 868 };
128 dpavlin 869
129     |
130     . $data_js
131     . $self->read_file('static/Frey/jQuery/flot/dataset_checkboxes.js')
132     .
133     q|
134    
135 dpavlin 860 });
136     </script>
137 dpavlin 870
138 dpavlin 860 |;
139     }
140    
141     1;

  ViewVC Help
Powered by ViewVC 1.1.26