#!/usr/bin/perl
######################################################################
# (c) Michael Schilli 1999
######################################################################

@days    = qw/Mo Di Mi Do Fr Sa So/;      # X-Wertesatz
@sales_a = qw/ 3  4  3  6  8 10 15/;      # 1. Y-Wertesatz
@sales_b = qw/ 5  5  5  6  6  7  7/;      # 2. Y-Wertesatz

use CGI qw/:standard/;

# Ohne Parameter aufgerufen - HTML-Seite ausgeben
if(!defined param("graph")) {
    print header, start_html(-title => 'Chart Test');
    for (qw/bars stackedbars pie lines points 
            linespoints pareto/) {
        print img({src => "$ENV{SCRIPT_NAME}?graph=$_",
                   border => 3, 
                   hspace => 3,
                   vspace => 3}), "\n";
    }
    print end_html;

} elsif(param("graph") eq "bars") {     # Balkengraphik

    use Chart::Bars;                    # Paket einbinden
    my $g = Chart::Bars->new(200,200);  # Objekt erzeugen
    $g->set('title' => 'Chart::Bars');  # Titel setzen
    $g->add_dataset(@days);             # X-Datensatz
    $g->add_dataset(@sales_a);          # Erster Y-Datensatz
    $g->add_dataset(@sales_b);          # Zweiter Y-Datensatz
    $g->cgi_gif();                      # Gif ausgeben

} elsif(param("graph") eq "stackedbars") {

    use Chart::StackedBars;             # Paket einbinden
    my $g = Chart::StackedBars->new(200,200); # Objekt erzeugen
    $g->set ('title' => 'Chart::StackedBars');# Titel setzen
    $g->set('x_label' => "Woche");      # Beschriftung X-Achse
    $g->set('y_label' => "Verkauf");    # Beschriftung Y-Achse
    $g->set('grid_lines' => "true");    # Gitter zeichnen
    $g->set('max_val' => 30);           # Maximaler Y-Wert
                                        # Farben: Rot und Grün
    $g->set('colors' => [[255,0,0], [0,255,0]]);
    $g->add_dataset(@days);             # X-Datensatz
    $g->add_dataset(@sales_a);          # Erster Y-Datensatz
    $g->add_dataset(@sales_b);          # Zweiter Y-Datensatz
                                     # Beschriftung Datensätze
    $g->set('legend_labels' => ["Produkt A", "Produkt B"]);
    $g->cgi_gif();

} elsif(param("graph") eq "pie") {      # Kuchengraphik

    use Chart::Pie;                     # Paket einbinden
    my $g = Chart::Pie->new(200,200);   # Objekt erzeugen
    $g->set ('title' => 'Chart::Pie');  # Titel setzen
    $g->add_dataset(@days);             # Anteil-Beschreibungen
    $g->add_dataset(@sales_a);          # Anteil-Werte
    $g->cgi_gif();                      # Gif ausgeben

                                        # Linien mit 
                                        # Stützpunkten
} elsif(param("graph") eq "lines") {

    use Chart::Lines;
    my $g = Chart::Lines->new(200,200);
    $g->set ('title' => 'Chart::Lines');
    $g->add_dataset(@days);
    $g->add_dataset(@sales_a);
    $g->add_dataset(@sales_b);
    $g->cgi_gif();                      # Gif ausgeben

                                        # Gestaffelte Balken
} elsif(param("graph") eq "points") {

    use Chart::Points;
    my $g = Chart::Points->new(200,200);
    $g->set ('title' => 'Chart::Points');
    $g->add_dataset(@days);
    $g->add_dataset(@sales_a);
    $g->add_dataset(@sales_b);
    $g->cgi_gif();                      # Gif ausgeben

                                        # Gestaffelte Balken
} elsif(param("graph") eq "linespoints") {

    use Chart::LinesPoints;             # Paket einbinden
    my $g = Chart::LinesPoints->new(200,200); # Objekt erzeugen
    $g->set ('title' => 'Chart::LinesPoints');# Titel setzen
    $g->add_dataset(@days);             # X-Datensatz
    $g->add_dataset(@sales_a);          # Erster Y-Datensatz
    $g->add_dataset(@sales_b);          # Zweiter Y-Datensatz
    $g->cgi_gif();                      # Gif ausgeben

                                        # Gestaffelte Balken
} elsif(param("graph") eq "pareto") {
    use Chart::Pareto;                  # Paket einbinden
    my $g = Chart::Pareto->new(630,200);   # Objekt erzeugen
    $g->set ('title' => 'Chart::Pareto');  # Titel setzen
    $g->set ('cutoff' => 3);            # Nach 3 Werten 
                                        # abbrechen
    $g->add_dataset(@days);             # X-Datensatz
    $g->add_dataset(@sales_a);          # Erster Y-Datensatz
    $g->cgi_gif();                      # Gif ausgeben
}
