Revision 27bdd44b
Von Moritz Bunkus vor mehr als 17 Jahren hinzugefügt
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
ReportGenerator: Die Spaltendatenfelder 'data' und 'link' können jetzt auch Array-Referenzen sein, die in der Zelle zeilenweise ausgegeben werden.