1 package SL::Controller::Helper::ReportGenerator::ControlRow;
 
   6 use SL::Controller::Helper::ReportGenerator::ControlRow::ALL;
 
  14 sub make_control_row {
 
  15   my ($type, %args) = @_;
 
  17   my $class  = $SL::Controller::Helper::ReportGenerator::ControlRow::ALL::type_to_class{$type} // croak "unknown type $type";
 
  18   my $obj    = $class->new(params => \%args);
 
  19   my @errors = $obj->validate_params;
 
  20   croak join("\n", @errors) if @errors;
 
  34 SL::Controller::Helper::ReportGenerator::ControlRow - an interface for
 
  35 report generator control rows
 
  39 ControlRow is an interface that allows generic control rows to be added
 
  40 to objects for the C<SL::Controller::Helper::ReportGenerator>.
 
  42 Each control row implementation can access the report and add data for a row.
 
  46   package SL::Controller::TimeRecording;
 
  48   use SL::Controller::Helper::ReportGenerator;
 
  49   use SL::Controller::Helper::ReportGenerator::ControlRow qw(make_control_row);
 
  54     # Set up the report generator instance. In this example this is
 
  55     # hidden in "prepare_report".
 
  56     my $report = $self->prepare_report;
 
  58     # Get objects from database.
 
  59     my $objects = SL::DB::Manager::TimeRecording->get_all(...);
 
  62     push @$objects, make_control_row("separator");
 
  65     my $total = sum0 map { _round_total($_->duration_in_hours) } @$objects;
 
  66     push @$objects, make_control_row("simple_data", data => {duration => $total});
 
  68     # Let report generator create the output.
 
  69     $self->report_generator_list_objects(
 
  76 =head1 WRITING OWN CONTROL ROW CLASSES
 
  78 See C<SL::Controller::Helper::ReportGenerator::ControlRow::Base>.
 
  84 =item C<make_control_row TYPE %PARAMS>
 
  86 Returns an instance of the control row class for the given type. This
 
  87 object can be used as an element of objects to the report generator helper
 
  88 (see C<SL::Controller::Helper::ReportGenerator>).
 
  90 Available types are 'separator', 'data, 'simple_data' for now.
 
  92 C<%PARAMS> depends on the type. See also:
 
  94 L<SL::Controller::Helper::ReportGenerator::ControlRow::ALL>
 
  95 L<SL::Controller::Helper::ReportGenerator::ControlRow::*>
 
 101 Bernd Bleßmann E<lt>bernd@kivitendo-premium.deE<gt>