# This is a submodule of the Relations Display module. It's
# used to store info used to generate a Display object.
package Relations::Display::Table;
require Exporter;
require DBI;
require 5.004;
require Relations;
use Relations;
# Copyright 2001 GAF-3 Industries, Inc. All rights reserved.
# Written by George A. Fitch III (aka Gaffer), gaf3@gaf3.com
# This program is free software, you can redistribute it and/or modify it under
# the same terms as Perl istelf
$Relations::Display::Table::VERSION = '0.92';
@ISA = qw(Exporter);
@EXPORT = ();
@EXPORT_OK = qw();
%EXPORT_TAGS = ();
# From here on out, be strict and clean.
use strict;
### Create a Relations::Family::Table object. This
### object holds data in a format that is useful to
### Relations::Display
sub new {
# Get the type we were sent
my ($type) = shift;
# Get all the arguments passed
my ($title,
$x_label,
$y_label,
$legend_label,
$x_axis_values,
$legend_values,
$x_axis_titles,
$legend_titles,
$y_axis_values) = rearrange(['TITLE',
'X_LABEL',
'Y_LABEL',
'LEGEND_LABEL',
'X_AXIS_VALUES',
'LEGEND_VALUES',
'X_AXIS_TITLES',
'LEGEND_TITLES',
'Y_AXIS_VALUES'],@_);
# $title - Label for the table
# $x_label - Label for the x axis data
# $y_label - Label for the y axis data
# $legend_label - Label for the legend data
# $x_axis_values - Array ref of the actual x axis values,
# what they're stored as.
# $legend_values - Array ref of the actual legend values
# what they're stored as.
# $x_axis_titles - Hash ref of the displayed x axis values,
# what's shown on the graph.
# $legend_titles - Hash ref of the displayed legend values,
# what's shown on the graph.
# $y_axis_values - 2D Hash ref of the y axis values keyed by
# x_axis and legend values.
# Create the hash to hold all the vars
# for this object.
my $self = {};
# Bless it with the type sent (I think this
# makes it a full fledged object)
bless $self, $type;
# Add the info into the self hash
$self->{title} = $title if $title;
$self->{x_label} = $x_label if $x_label;
$self->{y_label} = $y_label if $y_label;
$self->{legend_label} = $legend_label if $legend_label;
$self->{x_axis_values} = to_array($x_axis_values) if $x_axis_values;
$self->{legend_values} = to_array($legend_values) if $legend_values;
$self->{x_axis_titles} = to_hash($x_axis_titles) if $x_axis_titles;;
$self->{legend_titles} = to_hash($legend_titles) if $legend_titles;
# If they sent a $y_axis_values argument, we
# have to make sure we clone both dimensions
# of the hash.
if ($y_axis_values) {
# Clone the first dimension.
$y_axis_values = to_hash($y_axis_values);
# Go through all second dimensions.
foreach my $key (keys %$y_axis_values) {
# Clone the second dimension.
$y_axis_values->{$key} = to_hash($y_axis_values->{$key});
}
# Set our data to this complete clone.
$self->{y_axis_values} = $y_axis_values;
}
# Return thyself
return $self;
}
### Create a copy of this table
sub clone {
# Know thyself
my ($self) = shift;
# Return a new table object
return new Relations::Display::Table(-title => $self->{title},
-x_label => $self->{x_label},
-y_label => $self->{y_label},
-legend_label => $self->{legend_label},
-x_axis_values => $self->{x_axis_values},
-legend_values => $self->{legend_values},
-x_axis_titles => $self->{x_axis_titles},
-legend_titles => $self->{legend_titles},
-y_axis_values => $self->{y_axis_values});
}
$Relations::Display::Table::VERSION;