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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 870 - (show annotations)
Wed Dec 17 14:23:35 2008 UTC (15 years, 4 months ago) by dpavlin
File size: 2380 byte(s)
configurable sar command by parsing flags: help output from sar
1 package Frey::jQuery::flot;
2 use Moose;
3
4 extends 'Frey';
5 with 'Frey::Web';
6 #with 'Frey::Storage';
7 with 'Frey::jQuery';
8 with 'Frey::File'; # FIXME inline on demand?
9
10 use DateTimeX::Easy;
11
12 use lib 'lib';
13 use Frey::Shell::sar;
14 use JSON;
15
16 has sar_command => (
17 is => 'rw',
18 isa => 'Str',
19 required => 1,
20 default => 'ssh www.rot13.org sar -n 1',
21 );
22
23 sub as_markup {
24 my ($self) = @_;
25
26 my $path = 'static/js/flot';
27
28 $self->add_js(qq|
29 <!--[if IE]><script language="javascript" type="text/javascript" src="/$path/excanvas.pack.js"></script><![endif]-->
30 <script language="javascript" type="text/javascript" src="/$path/jquery.flot.js"></script>
31 |);
32
33 $self->add_css("$path/layout.css");
34
35 my $sponge = Frey::Shell::sar->new( sar_command => $self->sar_command )->as_sponge;
36 #warn $self->dump( $sponge );
37
38 my $by_col;
39
40 foreach my $row ( @{ $sponge->{rows} } ) {
41 my $x = DateTimeX::Easy->new( $row->[0] )->epoch * 1000; # ms
42 foreach my $col ( 2 .. 8 ) {
43 push @{ $by_col->{$col} }, [ $x, $row->[$col] ];
44 }
45 }
46
47 my $dataset;
48 my @names;
49 foreach my $nr ( keys %$by_col ) {
50 my $name = $sponge->{NAME}->[$nr];
51 $dataset->{ $name }->{label} ||= $name;
52 $dataset->{ $name }->{data} = $by_col->{$nr};
53 }
54
55 my $data_js = 'var datasets = ' . to_json( $dataset ) . ';';
56
57 warn "# $data_js" if $self->debug;
58
59 my $c = $self->sar_command;
60 $c =~ s{(-n\s*\d+).*}{$1};
61
62 my $form = qq|
63 <form method="post">
64 <select name="sar_command">
65 |;
66
67 my $flags = `atsar help 2>&1`;
68 $flags =~ s{^.+flags:\s+}{}s;
69
70 foreach my $line ( split(/\s*\n\s*/, $flags ) ) {
71 my ( $flag, $desc ) = split(/\s+/, $line );
72 warn "# $flag | $desc";
73 my $v = "$c $flag";
74 my $selected = '';
75 $selected = " selected" if $v eq $self->sar_command;
76 $form .= qq|<option value="$v"$selected>$desc</option>|;
77 }
78
79 $form .= qq|
80 </select>
81 <input type="submit" value="reload">
82 </form>
83 |;
84
85 $self->add_css(q|
86 #choices { float: right }
87 |);
88
89 qq|
90
91 <div id="choices">Show $form</div>
92
93 <div id="placeholder" style="width:600px;height:300px;"></div>
94
95 | . q|
96 <script id="source" language="javascript" type="text/javascript">
97 $(function () {
98 var options = {
99 selection: { mode: "x" },
100 //yaxis: { min: 0, max: 100 },
101 xaxis: { mode: "time" }
102 };
103
104 |
105 . $data_js
106 . $self->read_file('static/Frey/jQuery/flot/dataset_checkboxes.js')
107 .
108 q|
109
110 });
111 </script>
112
113 |;
114 }
115
116 1;

  ViewVC Help
Powered by ViewVC 1.1.26