pricecharts

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

commit 1a2ea4e0d6a5aea0924fce735a85796b07efa463
parent 7911b7fcdda5519e18075d6c67c58a16ccb518ea
Author: Kyle Milz <kyle@getaddrinfo.net>
Date:   Mon, 27 Oct 2014 21:44:08 -0600

gen_svg: calculate min, max smarter, guard against products with 0, 1 prices

Diffstat:
Mgen_svg.pl | 24+++++++++++++++---------
1 file changed, 15 insertions(+), 9 deletions(-)

diff --git a/gen_svg.pl b/gen_svg.pl @@ -3,6 +3,7 @@ use strict; use warnings; +use List::Util qw(min max); use SVG; use POSIX; @@ -29,17 +30,22 @@ mkdir $svg_dir; for my $part_num (@$part_nums) { vprint("$part_num:\n"); - my $query = "select min(date) from prices where part_num = ?"; - my $x_min = $dbh->selectrow_array($query, undef, $part_num); + my $query = "select distinct date from prices where part_num = ?"; + my $dates = $dbh->selectcol_arrayref($query, undef, $part_num); + $query = "select distinct price from prices where part_num = ?"; + my $prices = $dbh->selectcol_arrayref($query, undef, $part_num); - $query = "select max(date) from prices where part_num = ?"; - my $x_max = $dbh->selectrow_array($query, undef, $part_num); - - $query = "select min(price) from prices where part_num = ?"; - my $y_min = $dbh->selectrow_array($query, undef, $part_num); + if (@$dates == 0) { + vprintf("\tno price information, skipping\n"); + next; + } + elsif (@$dates == 1) { + vprintf("\tsingle price point, graphing will explode, skipping\n"); + next; + } - $query = "select max(price) from prices where part_num = ?"; - my $y_max = $dbh->selectrow_array($query, undef, $part_num); + my ($x_min, $x_max) = (min(@$dates), max(@$dates)); + my ($y_min, $y_max) = (min(@$prices), max(@$prices)); vprintf("\tdomain: $x_min - $x_max\n"); vprintf("\trange: $y_min - $y_max\n");