}
my ($outer_idx, $inner_idx) = (0, 0);
+ my $next_border_top;
my @rows;
foreach my $row_set (@{ $self->{data} }) {
if ('HASH' eq ref $row_set) {
+ if ($row_set->{type} eq 'separator') {
+ if (! scalar @rows) {
+ $next_border_top = 1;
+ } else {
+ $rows[-1]->{BORDER_BOTTOM} = 1;
+ }
+
+ next;
+ }
+
my $row_data = {
'IS_CONTROL' => 1,
- 'IS_SEPARATOR' => $row_set->{type} eq 'separator',
'IS_COLSPAN_DATA' => $row_set->{type} eq 'colspan_data',
'NUM_COLUMNS' => scalar @visible_columns,
+ 'BORDER_TOP' => $next_border_top,
'data' => $row_set->{data},
};
push @rows, $row_data;
+ $next_border_top = 0;
+
next;
}
'data' => $self->html_format($col->{data}->[$i]),
'link' => $col->{link}->[$i],
};
- };
+ }
+
+ # Force at least a to be displayed so that browsers
+ # will format the table cell (e.g. borders etc).
+ if (!scalar @{ $col->{CELL_ROWS} }) {
+ push @{ $col->{CELL_ROWS} }, { 'data' => ' ' };
+ } elsif ((1 == scalar @{ $col->{CELL_ROWS} }) && !$col->{CELL_ROWS}->[0]->{data}) {
+ $col->{CELL_ROWS}->[0]->{data} = ' ';
+ }
}
my $row_data = {
'outer_idx' => $outer_idx,
'outer_idx_odd' => $outer_idx % 2,
'inner_idx' => $inner_idx,
+ 'BORDER_TOP' => $next_border_top,
};
push @rows, $row_data;
+
+ $next_border_top = 0;
}
}