App-Widget
view release on metacpan or search on metacpan
lib/App/Widget/DataTable2.pm view on Meta::CPAN
my ($format, $scale_factor, $edit_widget_args, $edit_widget);
$html .= "<tr class=\"App-DataTable-tr_add\">\n";
$html .= " <td bgcolor=\"$heading_bgcolor\" align=\"right\">Add</td>\n" if ($numbered);
if ($row_selectable) {
$errmsg = "<br />$row->{row_error}" || " ";
$html .= " <td bgcolor=\"#ffaaaa\" class=\"App-DataTable-td_select\">$errmsg</td>\n";
}
if ($row_single_selectable) {
$html .= " <td bgcolor=\"$heading_bgcolor\"> </td>\n";
}
$html .= " <td bgcolor=\"$heading_bgcolor\"> </td>\n" if ($#row_actions > -1);
my $key = $i;
for ($col = 0; $col < $numcols; $col++) {
if (defined $columns && defined $columns->[$col]) {
$column = $columns->[$col];
$format = $view_column_defs->{$column}{format} || $table_column_defs->{$column}{format};
$scale_factor = $view_column_defs->{$column}{scale_factor} || $table_column_defs->{$column}{scale_factor};
$align = $view_column_defs->{$column}{align} ||
$table_column_defs->{$column}{align};
if (!$align && defined $table_column_defs->{$column}{quoted}) {
$align = ($table_column_defs->{$column}{quoted} ? "left" : "right");
}
}
$html .= " <td>";
$edit_widget_args = $self->{edit_widget}{$column} ||
{
class => "App::Widget::TextField",
size => $column_length[$col]+2, # add 2 just to give some visual space
maxlength => 255,
padding => 0,
@edit_style,
}
;
$edit_widget_args->{size} = $column_length[$col]+2 if ($edit_widget_args->{auto_size});
if ( ! defined $edit_widget_args->{readonly} ) {
$edit_widget = $context->widget("$name\{add_data}[$key]{$column}", %$edit_widget_args,
style_class => "App-DataTable-add");
$html .= $edit_widget->html();
} else {
$html .= " ";
}
$html .= "</td>\n";
}
$html .= "</tr>\n";
}
}
}
my ($format, $scale_factor, $edit_widget_args, $edit_widget);
for ($row = 0; $row <= $#$data; $row++) {
$numrow = $startrow + $row;
$key = "";
if (defined $keys && defined $keys->[$row]) {
$key = join(",", @{$keys->[$row]}); # need to HTML-escape these!
}
$html .= $self->{row_selected}{$key} ? "<tr class=\"App-DataTable-tr_selected\">" : "<tr>\n";
$html .= " <td bgcolor=\"$heading_bgcolor\" align=\"right\">$elem_begin$numrow$elem_end</td>\n" if ($numbered);
if ($row_selectable) {
$html .= " <td bgcolor=\"#ffaaaa\" valign=\"middle\" align=\"center\" class=\"App-DataTable-td_select\">\n";
$html .= $context->widget("$name\{row_selected}{$key}",
class => "App::Widget::Checkbox",
)->html();
$html .= "<br />$self->{row_error}{$key}" if ($self->{row_error}{$key});
$html .= " </td>\n";
}
if ($row_single_selectable) {
$html .= " <td bgcolor=\"#ffaaaa\" valign=\"middle\" align=\"center\" class=\"App-DataTable-td_single_select\">\n";
$html .= $context->widget("$name\{row_single_selected}",
class => "App::Widget::RadioButton",
override => 1,
value => $key,
)->html();
$html .= " </td>\n";
}
if ($#row_actions > -1) {
my (%args);
$html .= " <td bgcolor=\"$heading_bgcolor\">";
foreach $rowaction (@row_actions) {
%args = (
override => 1,
class => "App::Widget::ImageButton",
image_script => 'App/app-button',
volatile => 1,
height => 17,
width => 50,
bevel => 2,
);
$rowactiondef = $rowactiondefs->{$rowaction};
if ($rowactiondef) {
foreach (keys %$rowactiondef) {
$args{$_} = $rowactiondef->{$_};
}
}
$html .= $context->widget("$name.${rowaction}", %args, args => $key)->html();
}
$html .= "</td>\n";
}
for ($col = 0; $col < $numcols; $col++) {
$elem = $data->[$row][$col];
$column = "";
$format = "";
$scale_factor = "";
$align = "";
if (defined $columns && defined $columns->[$col]) {
$column = $columns->[$col];
$format = $view_column_defs->{$column}{format} || $table_column_defs->{$column}{format};
$scale_factor = $view_column_defs->{$column}{scale_factor} || $table_column_defs->{$column}{scale_factor};
lib/App/Widget/DataTable2.pm view on Meta::CPAN
$elem = sprintf($format, $elem) if ($format);
}
if (! defined $self->{editdata}{$key}{$column}) {
$self->{editdata}{$key}{$column} = $elem
}
$html .= " <td $td_row_attrib$td_col_attrib>${elem_begin}";
$edit_widget_args = $self->{edit_widget}{$column} ||
{
class => "App::Widget::TextField",
size => $column_length[$col]+2, # add 2 just to give some visual space
maxlength => 255,
padding => 0,
@edit_style,
}
;
$edit_widget_args->{size} = $column_length[$col]+2 if ($edit_widget_args->{auto_size});
if ( ! defined $edit_widget_args->{readonly} ) {
$edit_widget = $context->widget("$name\{editdata}{$key}{$column}", %$edit_widget_args,
style_class => "App-DataTable-edit");
$html .= $edit_widget->html();
} else {
$html .= $elem;
}
$html .= "$elem_end</td>\n";
}
else {
if ($self->{view_widget}{$column}) {
$view_widget_args = $self->{view_widget}{$column};
$view_widget = $context->widget("$name-temp_$column",
lightweight => 1,
override => 1,
%$view_widget_args,
style_class => "App-DataTable-view",
);
$context->so_set($name, "temp_$column", $data->[$row][$col]);
if ($view_widget_args->{needs_row_columns}) {
$view_width = "width=\"400\""; # For IE
$view_widget->{row} = $data->[$row];
$view_widget->{columns} = $columns;
}
if ($view_widget_args->{wrap}) {
my $data = $view_widget->html();
if ($data ne "") {
$view_width = "width=\"400\""; # For IE
$data =~ s/\s+/ /g; $data =~ s/, /, /g;
$elem = "<span style=\"white-space: normal\">".$data."</span>";
}
}
elsif ($view_widget_args->{nowrap}) {
my $data = $view_widget->html();
if ($data ne "") {
$elem = "<span style=\"white-space: nowrap\">".$data."</span>";
}
}
else {
$elem = $view_widget->html();
}
}
else {
$elem = $self->html_escape($elem);
if (!defined $elem || $elem eq "") {
$elem = " ";
}
else {
$elem = $elem * $scale_factor if ($scale_factor);
$elem = sprintf($format, $elem) if ($format);
if ($align) {
$td_col_attrib = " align=\"$align\"";
}
elsif ($elem =~ /^[-0-9.,%]+$/) {
$td_col_attrib = " align=\"right\"";
}
else {
$td_col_attrib = " align=\"left\"";
}
}
}
$html .= " <td$td_row_attrib$td_col_attrib>$elem_begin$elem$elem_end</td>\n";
}
}
$html .= "</tr>\n";
}
$html .= "</table>\n";
if (1) {
$html .= "<!-- SQL used in table query\n";
$html .= $rep->{sql};
$html .= "-->\n";
}
$html .= "</div>\n";
&App::sub_exit("<html ...>") if ($App::trace);
$html;
}
1;
( run in 0.800 second using v1.01-cache-2.11-cpan-437f7b0c052 )