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.267 second using v1.01-cache-2.11-cpan-454fe037f31 )