Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 27bdd44b

Von Moritz Bunkus vor mehr als 17 Jahren hinzugefügt

  • ID 27bdd44b8c9c45f438138076938935df43977f86
  • Vorgänger a45bac39
  • Nachfolger 68bd0229

ReportGenerator: Die Spaltendatenfelder 'data' und 'link' können jetzt auch Array-Referenzen sein, die in der Zelle zeilenweise ausgegeben werden.

Unterschiede anzeigen:

SL/ReportGenerator.pm
93 93
  my $last_row_set;
94 94

  
95 95
  while (my $arg = shift) {
96
    my $row_set;
97

  
96 98
    if ('ARRAY' eq ref $arg) {
97
      push @{ $self->{data} }, $arg;
98
      $last_row_set = $arg;
99
      $row_set = $arg;
99 100

  
100 101
    } elsif ('HASH' eq ref $arg) {
101
      my $row_set = [ $arg ];
102
      push @{ $self->{data} }, $row_set;
103
      $last_row_set = $row_set;
102
      $row_set = [ $arg ];
104 103

  
105 104
    } else {
106 105
      $self->{form}->error('Incorrect usage -- expecting hash or array ref');
107 106
    }
107

  
108
    foreach my $row (@{ $row_set }) {
109
      foreach my $field (qw(data link)) {
110
        map { $row->{$_}->{$field} = [ $row->{$_}->{$field} ] if (ref $row->{$_}->{$field} ne 'ARRAY') } keys %{ $row };
111
      }
112
    }
113

  
114
    push @{ $self->{data} }, $row_set;
115
    $last_row_set = $row_set;
108 116
  }
109 117

  
110 118
  return $last_row_set;
......
259 267
    foreach my $row (@{ $row_set }) {
260 268
      $inner_idx++;
261 269

  
262
      map { $row->{$_}->{data} = $self->html_format($row->{$_}->{data}) } @visible_columns;
270
      foreach my $col_name (@visible_columns) {
271
        my $col = $row->{$col_name};
272
        $col->{CELL_ROWS} = [ ];
273
        foreach my $i (0 .. scalar(@{ $col->{data} })) {
274
          push @{ $col->{CELL_ROWS} }, {
275
            'data' => $self->html_format($col->{data}->[$i]),
276
            'link' => $col->{link}->[$i],
277
          };
278
        };
279
      }
263 280

  
264 281
      my $row_data = {
265 282
        'COLUMNS'       => [ map { $row->{$_} } @visible_columns ],
......
458 475
  foreach my $row_set (@{ $self->{data} }) {
459 476
    next if ('ARRAY' ne ref $row_set);
460 477
    foreach my $row (@{ $row_set }) {
461
      map { $row->{$_}->{data} =~ s/\r?\n/$eol/g } @visible_columns;
462
      $csv->print($stdout, [ map { $row->{$_}->{data} } @visible_columns ]);
478
      my @data;
479
      foreach my $col (@visible_columns) {
480
        push @data, join($eol, map { s/\r?\n/$eol/g; $_ } @{ $row->{$col}->{data} });
481
      }
482
      $csv->print($stdout, \@data);
463 483
    }
464 484
  }
465 485
}

Auch abrufbar als: Unified diff