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

  ViewVC Help
Powered by ViewVC 1.1.26