%doc> Example: include( '/elements/customer-table.html', ### # required ### #listrefs... 'header' => [ '#', 'Item' ], 'fields' => [ 'column', sub { my ($row,$param) = @_; $param->{"column$row"}; }, ], ### # optional ### 'name_singular' => 'customer', #label #listrefs 'types' => ['immutable', ''], # immutable or ''/text 'align' => [ 'c', 'l', 'r', '' ], 'size' => [], # sizes ignored for immutable 'color' => [], 'footer' => ['string', '_TOTAL'], # strings or the special #value _TOTAL 'footer_align' => [ 'c', 'l', 'r', '' ], 'param' => { column0 => 1 }, # preset column of row 0 to 1 ) %doc>
Cust # | Customer | % foreach my $header ( @{$opt{header}} ) {<% $header %> | % }|
---|---|---|---|
" rownum = "<% $row %>" > | " rownum="<% $row %>"> | % my $col = 0; % foreach my $field ( @{$opt{fields}} ) { % my $value; % if ( ref($field) eq 'CODE' ) { % $value = &{$field}($row,$param); % } else { % $value = $param->{"$field$row"}; % } % my $name = (ref($field) eq 'CODE') ? "column${col}_$row" : "$field$row"; % my $align = $align{ $opt{align}->[$col] || 'l' }; % my $size = $sizes->[$col] || 10; % my $color = $opt{color}->[$col]; % my $font = $color ? qq() : ''; % my $onchange = ''; % if ( $opt{footer}->[$col] eq '_TOTAL' ) { % $total[$col] += $value; % $onchange = $opt{prefix}. "calc_total$col();"; % $onchange = qq(onchange="$onchange" onkeyup="$onchange"); % }% if (! $types->[$col] || $types->[$col] eq 'text') { > % } elsif ($types->[$col] eq 'immutable') { <% $font %><% $value %><% $font ? '' : '' %> % } else { Cannot represent unknown type: <% $types->[$col] %> % } | % $col++; % }|
Total <% $row ? $row-1 : 0 %> <% PL($opt{name_singular} || 'customer', ( $row ? $row-1 : 0 ) ) %> | % my $col = 0; % foreach my $footer ( @{$opt{footer}} ) { % my $align = $align{ $opt{'footer_align'}->[$col] || 'c' }; % if ($footer eq '_TOTAL' ) { % my $id = $opt{'fields'}->[$col]; % $id = ref($id) ? "column${col}_TOTAL" : "${id}_TOTAL";<% sprintf('%.2f', $total[$col] ) %> | % } else {<% $footer %> | % } % $col++; % }