# NAME
HTML::D3 - A simple Perl module for generating charts using D3.js.
# VERSION
Version 0.10
# SYNOPSIS
use HTML::D3;
my $chart = HTML::D3->new(
width => 1024,
height => 768,
title => 'Sample Bar Chart'
);
my $data = [
['Category 1', 10],
['Category 2', 20],
['Category 3', 30]
];
my $html = $chart->render_bar_chart($data);
print $html;
$chart = HTML::D3->new(title => 'Sales Data');
$data = [
['Product A', 100],
['Product B', 150],
['Product C', 200]
];
$html = $chart->render_line_chart($data);
print $html;
# DESCRIPTION
HTML::D3 is a Perl module that provides functionality to create simple charts using D3.js.
The module generates HTML and JavaScript code to render the chart in a web browser.
# METHODS
## new
my $chart = HTML::D3->new(%args);
Creates a new HTML::D3 object.
Accepts the following optional arguments:
- `width` - The width of the chart (default: 800).
- `height` - The height of the chart (default: 600).
- `title` - The title of the chart (default: 'Chart').
## render\_bar\_chart
my $html = $chart->render_bar_chart($data);
Generates HTML and JavaScript code to render a bar chart. Accepts the following arguments:
- `$data` - An array reference containing data points. Each data point should
be an array reference with two elements: the label (string) and the value (numeric).
Returns a string containing the HTML and JavaScript code for the chart.
### Errors
- Throws `Data is not optional` when `$data` is `undef`.
- Throws `Data must be an array of arrays` when `$data` is not an ARRAY reference.
### Side Effects
None.
### API SPECIFICATION
#### Input
$self : HTML::D3 -- required
$data : ArrayRef[ ArrayRef[Str, Num] ] -- required; undef dies
#### Output
Str -- complete HTML5 document starting with C<< >>;
D3.js loaded from CDN; bar chart rendered with C.
## render\_line\_chart
my $html = $chart->render_line_chart($data);
Generates HTML and JavaScript code to render a line chart. Accepts the following arguments:
- `$data` - An array reference containing data points. Each data point should
be an array reference with two elements: the label (string) and the value (numeric).
Returns a string containing the HTML and JavaScript code for the chart.
### Errors
- Throws `Data must be an array of arrays` when `$data` is not an ARRAY reference.
### Side Effects
None.
### API SPECIFICATION
#### Input
$self : HTML::D3 -- required
$data : ArrayRef[ ArrayRef[Str, Num] ] -- required (undef dies)
#### Output
Str -- complete HTML5 document; line chart with C and C.
## render\_line\_chart\_with\_tooltips
$html = $chart->render_line_chart_with_tooltips($data);
Generates HTML and JavaScript code to render a line chart with mouseover tooltips.
Accepts the following arguments:
- `$data` - An array reference containing data points. Each data point should
be an array reference with two elements: the label (string) and the value (numeric).
Returns a string containing the HTML and JavaScript code for the chart.
The JavaScript tooltip strings use `<\/b>` (with a backslash) rather than
`` to satisfy html-tidy's requirement that `` followed by a
letter not appear literally inside `
Accepts the following arguments:
- `$data` - An array reference of data points. Each point is an array
reference with two required elements - the label (string) and the value
(numeric) - and an optional third element: a hash reference of extra key/value
pairs to display in the tooltip after the label and value rows.
[$x, $y] # basic point
[$x, $y, \%row] # point with extra tooltip data
Returns a hash reference with:
- `svg_id` - The `id` attribute used on the `