Changeset 17500
- Timestamp:
- 08/12/08 13:57:14 (5 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
lang/perl/Google-Chart-DBIC/trunk/lib/Google/Chart/DBIC.pm
r17483 r17500 1 1 package Google::Chart::DBIC; 2 use Moose; 2 3 use Google::Chart (); 3 4 use Data::Dumper (); … … 6 7 our $VERSION = '0.01'; 7 8 8 my @color = qw(ff0000 00ff00 0000ff ffff00 ff00ff 00ffff); 9 has 'size' => ( 10 is => 'rw', 11 required => 1, 12 default => '400x400', 13 ); 9 14 10 sub new { 11 my ( $class, $args ) = @_; 12 my $self = {}; 13 bless $self, $class; 14 my $resultset = $args->{resultset}; 15 has 'type' => ( 16 is => 'rw', 17 required => 1, 18 default => 'line', 19 ); 20 21 has 'color' => ( 22 is => 'rw', 23 isa => 'ArrayRef[Str]', 24 required => 1, 25 default => sub { 26 [qw(ff0000 00ff00 0000ff ffff00 ff00ff 00ffff)]; 27 }, 28 ); 29 30 has 'resultset' => ( 31 is => 'rw', 32 isa => 'ArrayRef[Object]', 33 required => 1, 34 ); 35 36 has 'axis_x' => ( 37 is => 'rw', 38 isa => 'Str', 39 ); 40 41 has 'max_value' => ( 42 is => 'rw', 43 isa => 'Num', 44 ); 45 46 no Moose; 47 48 sub as_uri { 49 my $self = shift; 15 50 my $dataset = {}; 16 51 my $axis_x = []; 17 52 my $max_value = 0; 18 for my $row (@{$resultset}) { 19 if (!defined $args->{axis_x} && $row->has_column_loaded('axis_x')) { 20 push @$axis_x, $row->get_column('axis_x'); 53 for my $row (@{$self->resultset}) { 54 if (!defined $self->axis_x && $row->has_column_loaded('axis_x')) { 55 my $v = $row->get_column('axis_x'); 56 push @$axis_x, $v unless grep {$v} @$axis_x; 21 57 } 22 58 for ($row->columns) { 23 if (defined $args->{axis_x} && $_ eq $args->{axis_x}){ 24 push @$axis_x, $row->$_; 59 next unless $row->has_column_loaded($_); 60 my $v = $row->$_; 61 if (defined $self->axis_x && $_ eq $self->axis_x){ 62 push @$axis_x, $v unless grep {$v} @$axis_x; 25 63 next; 26 64 } 27 next unless $row->has_column_loaded($_); 28 next unless Scalar::Util::looks_like_number $row->$_; 29 push @{$dataset->{$_}}, Scalar::Util::looks_like_number $row->$_ ? $row->$_ : undef; 30 $max_value = $row->$_ if (defined $row->$_ && $row->$_ >= $max_value); 65 next unless Scalar::Util::looks_like_number $v; 66 push @{$dataset->{$_}}, Scalar::Util::looks_like_number $v ? $v : undef; 67 $max_value = $v if $v >= $max_value; 31 68 } 32 69 } 33 $max_value = $ args->{max_value}|| $max_value;34 $self->{chart}= Google::Chart->new(35 size => $ args->{size},36 type => $ args->{type},70 $max_value = $self->max_value || $max_value; 71 my $chart = Google::Chart->new( 72 size => $self->size, 73 type => $self->type, 37 74 axis => [ 38 75 { … … 52 89 }, 53 90 }, 54 color => $args->{color} || [@color[0 .. (scalar values %$dataset) - 1]],91 color => [@{$self->color}[0 .. (scalar values %$dataset) - 1]], 55 92 legend => [keys %$dataset], 56 93 ); 57 return $self; 58 } 59 60 sub as_uri { 61 my $self = shift; 62 $self->{chart}->as_uri; 94 return $chart->as_uri; 63 95 } 64 96
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)