commit 11f4ba566f2f73bfba6b842c271b204e7d376130
parent 580f92aaba9842dfb4d1642090115fb14058d0e1
Author: Kyle Milz <kyle@getaddrinfo.net>
Date: Wed, 22 Oct 2014 22:16:52 -0600
site_gen: use SVG module directly
Diffstat:
2 files changed, 59 insertions(+), 11 deletions(-)
diff --git a/html/search.html b/html/search.html
@@ -2,7 +2,8 @@
<p>Found <b>[% num_results %]</b> search results for <b>[% query
%]</b>:</p>
- [% FOREACH variable IN results %]
- [% variable %]<br>
+ [% FOREACH part_num IN results %]
+ <object data="/svg/[% part_num %].svg" type="image/svg+xml">
+ </object>
[% END %]
[% END %]
diff --git a/site_gen.pl b/site_gen.pl
@@ -4,8 +4,7 @@ use strict;
use warnings;
use File::Copy;
-use GD::SVG;
-use GD::Polyline;
+use SVG;
use Template;
use POSIX;
@@ -47,6 +46,9 @@ copy("html/pricechart.css", "www/htdocs/pricechart.css");
print $log strftime "%b %e %Y %H:%M ", localtime;
+my $svg_dir = "$cfg->{general}{var}/www/htdocs/svg";
+mkdir $svg_dir;
+
if ($args{p}) {
gen_chart($args{p});
print $log "$args{p} generated\n";
@@ -61,13 +63,58 @@ sub gen_chart
my $part_num = shift;
vprint("$part_num:\n");
- my $image = new GD::SVG::Image(800, 200);
- my $polyline = new GD::Polyline;
-
- $query = "select * from prices where part_num = ?";
- my $prices = $dbh->selectall_arrayref($query, undef, $part_num);
-
- vprintf("\t# prices = %i\n", scalar @$prices);
+ $query = "select min(date) from prices where part_num = ?";
+ my $x_min = $dbh->selectrow_array($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);
+
+ $query = "select max(price) from prices where part_num = ?";
+ my $y_max = $dbh->selectrow_array($query, undef, $part_num);
+
+ vprintf("\tdomain: $x_min - $x_max\n");
+ vprintf("\trange: $y_min - $y_max\n");
+
+ my $svg = SVG->new(width => 800, height => 200);
+
+ $query = "select distinct vendor from prices where part_num = ?";
+ my $vendors = $dbh->selectcol_arrayref($query, undef, $part_num);
+ vprintf("\tvendors: ");
+
+ for (@$vendors) {
+ $query = "select date from prices where " .
+ "part_num = ? and vendor = ? order by date";
+ my $dates = $dbh->selectcol_arrayref($query, undef,
+ $part_num, $_);
+ vprintf("\tdates found: " . scalar @$dates . "\n");
+ $query = "select price from prices where " .
+ "part_num = ? and vendor = ? order by date";
+ my $prices = $dbh->selectcol_arrayref($query, undef,
+ $part_num, $_);
+ vprintf("\tprices found: " . scalar @$prices . "\n");
+
+ my $points = $svg->get_path(x => $dates, y => $prices,
+ -closed => "false");
+
+ $svg->path(
+ %$points,
+ id => $_,
+ style => {
+ 'fill-opacity' => 0,
+ 'fill' => 'green',
+ 'stroke' => 'rgb(250, 123, 123)'
+ }
+ );
+ }
+
+ $svg->text(id => 'l1', x => 10, y => 30)->cdata($part_num);
+
+ open my $svg_fh, ">", "$svg_dir/$part_num.svg" or die $!;
+ print $svg_fh $svg->xmlify;
+ close $svg_fh;
}
close $log;