SVG-Timeline-Compact
view release on metacpan or search on metacpan
lib/SVG/Timeline/Compact.pm view on Meta::CPAN
$def->line(x1=>"1",y1=>"0",x2=>"-8",y2=>"4");
my ($y0,$y1,$x0,$maxX)=(0,$self->min_height,0,0);
foreach my $slot (@slot){
#p @slot;
foreach my $ev (@{$slot}){
#p $ev;
$x0=$ev->x0;
my $width=$ev->width;
my $color=$ev->color;
my $rect=$bars->rect(x=>$x0."px",y=>$y0."px",width=>$width."px",height=>$y1."px", fill=>$color,stroke=>"#000");
$bars->text(x=>$x0+$width/2,y=>($y0-2+$self->min_height),"text-anchor"=>"middle")->cdata($ev->name);
$rect->title->cdata($ev->tooltip.", Start: ". $ev->start.", End ". $ev->end);
$maxX=$x0+$width if ($maxX<$x0+$width);
}
$y0+=$y1*1.5;
}
#$y0+=$y1*1.5;
$maxX=$self->units if($maxX<$self->units);
my $border=$bbox->rect(x=>0,"fill-opacity"=>"0.1",y=>0,width=>$maxX."px",height=>$y0."px");
my $x=0 ;
my$dim=$bbox->group(id=>"dim");
$dim->line(x1=>0,y1=>($y0+$self->min_height),x2=>800,y2=>($y0+$self->min_height));
$dim->use("xlink:href"=>"#arrow",x=>0,y=>($y0+$self->min_height));
$dim->use("xlink:href"=>"#arrow",x=>800,y=>($y0+$self->min_height));
#$dim->text(x=>$maxX/2,y=>($y0+$self->min_height),"text-anchor"=>"middle")->cdata("<-------------- ". $self->_resolution. " --------------->");
#<use stroke="#000000" xlink:href="#ah" transform="translate(354.4 119.4)rotate(90)"/>
$bbox->text(x=>$maxX+10,y=>$self->min_height)->cdata("Min:\t".$self->_min->format_cldr("yyyy/MM/dd h:m"));
$bbox->text(x=>$maxX+10,y=>2*$self->min_height)->cdata("Max:\t".$self->_max->format_cldr("yyyy/MM/dd h:m"));
my $unit;
$unit= $self->_resolution->in_units('months')." Months" if ($self->_resolution->in_units('months')>0);
$unit= $self->_resolution->in_units('days')." Days" if ($self->_resolution->in_units('days')>0);
$unit= $self->_resolution->in_units('minutes')." Minutes" if ($self->_resolution->in_units('minutes')>0);
$bbox->text(x=>$maxX+10,y=>3*$self->min_height)->cdata("Scale:\t ".$unit);
while($x<=$maxX){
if($x%100 == 0){
$bbox->line(x1=>$x,x2=>$x,y1=>$y0,y2=>0 ,style=>"stroke:#000;stroke-width:1px" );
$dim->text(x=>$x,y=>($y0+$self->min_height),"text-anchor"=>"middle")->cdata("$x");
}else{
$bbox->line(x1=>$x,x2=>$x,y1=>$y0,y2=>0 ,style=>"stroke:#fff;stroke-width:1px" );
}
$x=$x+10;
}
return $svg->xmlify;
}
sub _set_resolution{
#We desire that atleast 50% of the graph is utilized. and we do not overflow.
( run in 0.797 second using v1.01-cache-2.11-cpan-454fe037f31 )