Author: spadkins
Date: Tue Jan 16 09:25:10 2007
New Revision: 8593
Modified:
p5ee/trunk/App-Widget-ChartDirector/lib/App/Widget/ChartDirector.pm
Log:
Fixed pie chart, performance meter and clipped bars. Work may still need to be done on various graphs.
Modified: p5ee/trunk/App-Widget-ChartDirector/lib/App/Widget/ChartDirector.pm
==============================================================================
--- p5ee/trunk/App-Widget-ChartDirector/lib/App/Widget/ChartDirector.pm (original)
+++ p5ee/trunk/App-Widget-ChartDirector/lib/App/Widget/ChartDirector.pm Tue Jan 16 09:25:10 2007
@@ -310,6 +310,10 @@
my ($self, $spec) = @_;
require "perlchartdir.pm";
+ my $bgcolor = $self->get_theme_value("bgcolor", "0x3f65b8");
+ my $titlecolor = $self->get_theme_value("titlecolor", "0xfffcf0");
+ my $labelcolor = $self->get_theme_value("x_labelcolor", "0xfffcf0");
+
my $x = $self->get_x($spec);
my $width = $spec->{width} || 250;
my $height = $spec->{height} || 250;
@@ -330,13 +334,15 @@
if (!$left_margin) {
$left_margin = 20;
}
- my $c = new PieChart($width, $height);
+
+ my $c = new PieChart($width, $height, hex($bgcolor));
my $center_x = int($width/2);
my $center_y = int(($height - 20)/2);
my $radius = (($center_x > $center_y) ? $center_y : $center_x) - 40;
$c->setPieSize($center_x, $center_y, $radius);
- $c->addTitle($spec->{title}) if ($spec->{title});
+ $c->addTitle($spec->{title}, "arialbd.ttf", 12, hex($titlecolor)) if ($spec->{title});
+ $c->setLabelStyle("arial.ttf", 10, hex($labelcolor));
&App::sub_exit($c) if ($App::trace);
return($c);
@@ -347,6 +353,10 @@
my ($self, $spec) = @_;
require "perlchartdir.pm";
+ my $bgcolor = $self->get_theme_value("bgcolor", "0x3f65b8");
+ my $titlecolor = $self->get_theme_value("titlecolor", "0xfffcf0");
+ my $labelcolor = $self->get_theme_value("x_labelcolor", "0xfffcf0");
+
my $x = $self->get_x($spec);
my $width = $spec->{width} || 250;
my $height = $spec->{height} || 180;
@@ -367,7 +377,7 @@
$bottom_margin += 9 if (!$spec->{registered});
$bottom_margin += 15 if ($x);
}
- my $c = new AngularMeter($width, $height, perlchartdir::metalColor(0xaaaaff), 0x0, 2);
+ my $c = new AngularMeter($width, $height, hex($bgcolor));
my $max_width_radius = int(($width - $left_margin - $right_margin)/2);
my $max_height_radius = $height - $top_margin - $bottom_margin;
my $radius = ($max_width_radius > $max_height_radius) ? $max_height_radius : $max_width_radius;
@@ -377,8 +387,9 @@
$spec->{center_x} = $center_x;
$spec->{center_y} = $center_y;
$c->setMeter($center_x, $center_y, $radius, -90, 90);
+ #$c->setRoundedFrame();
- $c->addTitle($spec->{title}) if ($spec->{title});
+ $c->addTitle($spec->{title}, "arialbd.ttf", 12, hex($titlecolor)) if ($spec->{title});
&App::sub_exit($c) if ($App::trace);
return($c);
@@ -444,8 +455,8 @@
if ($x && $#$x > -1) {
my ($begin_datetime, $end_datetime, $begin_time, $end_time, $begin_yr, $end_yr);
if ($x->[0] =~ /^[0-9]{4}-[0-9]{2}-[0-9]{2}$/) {
- #my $bar_offset = ($spec->{graphtype} =~ /bar/) ? 24*3600 : 0;
- my $bar_offset = 0;
+ my $bar_offset = ($spec->{graphtype} =~ /bar/) ? 24*3600 : 0;
+ #my $bar_offset = 0;
$begin_datetime = $bar_offset ? time2str("%Y-%m-%d", str2time($x->[0]) - $bar_offset) : $x->[0];
if ($begin_datetime =~ /^([0-9]{4})-([0-9]{2})-([0-9]{2})$/) {
$begin_yr = $1;
@@ -593,12 +604,16 @@
my $c = $self->new_meter_chart($spec);
my $x = $self->get_x($spec);
my $yn = $self->get_y($spec) || [[]];
+
my $value = $yn->[0][0];
+
my $radius = $spec->{radius};
my $center_x = $spec->{center_x};
my $center_y = $spec->{center_y};
- my $y_max = $spec->{y_max} || 100;
+ #my $y_max = $spec->{y_max} || 100;
+ my $y_max = $value || 100;
+
my ($major_tick, $minor_tick, $micro_tick);
{
my $y_mantissa = $y_max;
@@ -625,18 +640,22 @@
$major_tick = $y_max/5;
}
- my $y_red = $spec->{y_red} || ($y_max * 0.80);
+ my $y_red = $spec->{y_red} || ($y_max * 0.80);
my $y_yellow = $spec->{y_yellow} || ($y_max * 0.60);
#Meter scale is 0 - 100, with major tick every 20 units, minor tick every 10
#units, and micro tick every 5 units
$c->setScale(0, $y_max, $major_tick, $minor_tick, $micro_tick);
+
#Set 0 - 60 as green (66FF66) zone
$c->addZone(0, $y_yellow, 0, $radius, 0x66ff66);
+
#Set 60 - 80 as yellow (FFFF33) zone
$c->addZone($y_yellow, $y_red, 0, $radius, 0xffff33);
+
#Set 80 - 100 as red (FF6666) zone
$c->addZone($y_red, $y_max, 0, $radius, 0xff6666);
+
#Add a text label centered at (100, 60) with 12 pts Arial Bold font
if ($spec->{y_title}) {
$c->addText($center_x, $center_y-int($radius * 0.35), $spec->{y_title},
@@ -674,7 +693,6 @@
$value = $y_max if ($value > $y_max);
$value = 0 if ($value < 0);
$c->addPointer($value, 0x40666699, 0x0);
- $c->xAxis()->setLabels($x);
$c->makeChart($spec->{image_path});
&App::sub_exit() if ($App::trace);
}
@@ -682,15 +700,27 @@
sub write_pie_graph_image {
&App::sub_entry if ($App::trace);
my ($self, $spec) = @_;
- my $c = $self->new_pie_chart($spec);
- my $x = $self->get_x($spec);
+
+ my $c = $self->new_pie_chart($spec);
+ my $x = $self->get_x($spec);
my $yn = $self->get_y($spec);
- my $y = $yn->[0];
- if ($#$yn > 0) {
+
+ my $data;
+ foreach my $y (@$yn) { push (@$data, @{$y}); }
+
+ if ($#$x > 0) {
+ $c->setData($data, $x);
+ }
+ else {
+ $c->setData($data, $spec->{y_labels});
}
- $c->setData($y, $x);
+
+ # The depths for the sectors
+ #my $depths = [30, 20, 10, 10];
+ #$c->set3D2($depths);
+ #$c->setStartAngle(225);
+
$c->set3D() if ($spec->{"3D"});
- $c->xAxis()->setLabels($x);
$c->makeChart($spec->{image_path});
&App::sub_exit() if ($App::trace);
}
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.