pricecharts

track prices of consumer electronics
Log | Files | Refs | README

commit d8ccb6f7872b19c023ad24d20ae28e06aad8290a
parent a4d7a03301999e3d34e0189ca6147f4492188b31
Author: Kyle Milz <kyle@getaddrinfo.net>
Date:   Sat,  1 Nov 2014 15:16:18 -0600

gen_svg: use variables instead of hardcoded values

Diffstat:
Mgen_svg.pl | 22++++++++++++++++------
1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/gen_svg.pl b/gen_svg.pl @@ -27,6 +27,12 @@ else { my $svg_dir = "$cfg->{general}{var}/www/htdocs/svg"; mkdir $svg_dir; +my ($width, $height) = (900, 210); +my ($margin_left, $margin_right) = (30, 70); +my ($margin_top, $margin_bottom) = (20, 20); +my $total_width = $width + $margin_right + $margin_left; +my $total_height = $height + $margin_top + $margin_bottom; + for my $part_num (@$part_nums) { vprint("$part_num:\n"); @@ -49,8 +55,10 @@ for my $part_num (@$part_nums) { vprintf("\tdomain: $x_min - $x_max\n"); vprintf("\trange: $y_min - $y_max\n"); + my $domain = $x_max - $x_min; + my $range = $y_max - $y_min; - my $svg = SVG->new(viewBox => "0 0 1000 250"); + my $svg = SVG->new(viewBox => "0 0 $total_width $total_height"); $query = "select distinct vendor from prices where part_num = ?"; my $vendors = $dbh->selectcol_arrayref($query, undef, $part_num); @@ -70,8 +78,10 @@ for my $part_num (@$part_nums) { $part_num, $_); vprintf("\t\tprices found: " . @$prices . "\n"); - my @xs = map { ($_ - $x_min) / ($x_max - $x_min) * 900 + 30 } @$dates; - my @ys = map { ($_ - $y_min) / ($y_max - $y_min) * 210 + 20 } @$prices; + my $x_scale = $domain * $width; + my $y_scale = $range * $height; + my @xs = map { ($_ - $x_min) / $x_scale + $margin_left } @$dates; + my @ys = map { ($_ - $y_min) / $y_scale + $margin_top } @$prices; my $vendor_color = "#$cfg->{vendors}{$_}{color}"; @@ -102,8 +112,8 @@ for my $part_num (@$part_nums) { } for my $i (0..5) { - my $price = $y_max - $i * ($y_max - $y_min) / 5; - my $y = 20 + $i * (210 / 5); + my $price = $y_max - $range * $i / 5; + my $y = $margin_top + $height * $i / 5; $svg->text(id => $i, x => 950, y => $y, style => "font-size: 12px; fill: #666", "text-anchor" => "start")->cdata("\$$price"); @@ -116,7 +126,7 @@ for my $part_num (@$part_nums) { } for my $i (0..5) { - my $time = $x_min + $i * ($x_max - $x_min) / 5; + my $time = $x_min + $i * $domain / 5; my $date = strftime "%b %e %Y", localtime($time); my $x = 30 + $i * 900 / 5; $svg->text(id => $time, x => $x, y => 250,