+ my $report_name = $self->query->name;
+ $report_name =~ s{[^[:word:]]+}{_}ig;
+ $report_name .= strftime('_%Y-%m-%d_%H-%M-%S', localtime());
+
+ $report->set_options(
+ std_column_visibility => 1,
+ controller_class => 'CustomDataExport',
+ output_format => 'HTML',
+ top_info_text => $self->query->name,
+ title => $self->query->name,
+ allow_pdf_export => 1,
+ allow_csv_export => 1,
+ allow_chart_export => 1,
+ attachment_basename => $report_name,
+ );
+
+ my %column_defs;
+ foreach my $key (@{ $self->rows->[0] }) {
+ $column_defs{$key} = { text => $key, sub => sub { $_[0]->{$key} } };
+ }
+
+ $report->set_columns(%column_defs);
+ $report->set_column_order(@{ $self->rows->[0] });
+
+ $report->set_export_options(qw(export id parameters_set parameters));
+ $report->set_options_from_form;
+
+ # Setup data objects (which in this case is an array of hashes).
+ my @objects;
+ foreach my $set_idx (1..$#{ $self->rows }) {
+ my %row_set;
+ foreach my $key_idx (0..$#{ $self->rows->[0] }) {
+ my $key = $self->rows->[0]->[$key_idx];
+ my $value = $self->rows->[$set_idx]->[$key_idx];
+ $row_set{$key} = $value;
+ }
+ push @objects, \%row_set;
+ }
+
+ $self->report_generator_list_objects(report => $report,
+ objects => \@objects,
+ options => {
+ action_bar_additional_submit_values => { id => $::form->{id}, },
+ },
+ );