--- /dev/null
+#**************************************************************************
+# Copyright (C) 2006 by Michael Andreen <harvATruinDOTnu> *
+# *
+# This program is free software; you can redistribute it and/or modify *
+# it under the terms of the GNU General Public License as published by *
+# the Free Software Foundation; either version 2 of the License, or *
+# (at your option) any later version. *
+# *
+# This program is distributed in the hope that it will be useful, *
+# but WITHOUT ANY WARRANTY; without even the implied warranty of *
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+# GNU General Public License for more details. *
+# *
+# You should have received a copy of the GNU General Public License *
+# along with this program; if not, write to the *
+# Free Software Foundation, Inc., *
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+#**************************************************************************/
+
+package ND::Web::Graph;
+use strict;
+use warnings;
+use ND::Include;
+use GD::Graph::lines;
+require Exporter;
+
+our @ISA = qw/Exporter/;
+
+our @EXPORT = qw/graphFromQuery/;
+
+sub graphFromQuery {
+ my ($x,$y,$settings,$query,) = @_;
+
+ my %graph_settings = (
+ line_width => 1,
+ y_number_format => sub { prettyValue abs $_[0]},
+ legend_placement => 'BL',
+ #zero_axis => 1,
+ box_axis => 0,
+ boxclr => 'black',
+ axislabelclr => 'black',
+ );
+
+ my $fields = $query->{NUM_OF_FIELDS};
+ my @fields;
+ for (my $i = 0; $i < $fields; $i++){
+ push @fields,[];
+ }
+ while (my @result = $query->fetchrow){
+ for (my $i = 0; $i < $fields; $i++){
+ push @{$fields[$i]},$result[$i];
+ }
+
+ }
+ $graph_settings{x_label_skip} = int(($#{$fields[0]}) / 10);
+
+ my $graph = GD::Graph::lines->new($x,$y);
+ $graph->set_legend(@{$query->{NAME}}[1..$fields]) or die $graph->error;
+
+ for my $key (keys %{$settings}){
+ $graph_settings{$key} = $settings->{$key};
+ }
+
+ $graph->set(%graph_settings);
+ my $gd = $graph->plot(\@fields) or die $graph->error;
+ return $gd->png;
+}
+
+1;