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}" || "&nbsp;";
                    $html .= "  <td bgcolor=\"#ffaaaa\" class=\"App-DataTable-td_select\">$errmsg</td>\n";
                }
                if ($row_single_selectable) {
                    $html .= "  <td bgcolor=\"$heading_bgcolor\">&nbsp;</td>\n";
                }
                $html .= "  <td bgcolor=\"$heading_bgcolor\">&nbsp;</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 .= "&nbsp;";
                    }
                    $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+/&nbsp;/g;  $data =~ s/,&nbsp;/, /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 = "&nbsp;";
                    }
                    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 )