cvsuser     02/03/06 15:00:14

  Modified:    P5EEx/Blue/P5EEx/Blue/Widget/HTML DataTable.pm
  Log:
  seriously enhanced, but still not editing
  
  Revision  Changes    Path
  1.4       +80 -31    p5ee/P5EEx/Blue/P5EEx/Blue/Widget/HTML/DataTable.pm
  
  Index: DataTable.pm
  ===================================================================
  RCS file: /cvs/public/p5ee/P5EEx/Blue/P5EEx/Blue/Widget/HTML/DataTable.pm,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -w -r1.3 -r1.4
  --- DataTable.pm      2 Mar 2002 03:07:47 -0000       1.3
  +++ DataTable.pm      6 Mar 2002 23:00:14 -0000       1.4
  @@ -1,10 +1,10 @@
   
   ######################################################################
  -## $Id: DataTable.pm,v 1.3 2002/03/02 03:07:47 spadkins Exp $
  +## $Id: DataTable.pm,v 1.4 2002/03/06 23:00:14 spadkins Exp $
   ######################################################################
   
   package P5EEx::Blue::Widget::HTML::DataTable;
  -$VERSION = do { my @r=(q$Revision: 1.3 $=~/\d+/g); sprintf "%d."."%02d"x$#r,@r};
  +$VERSION = do { my @r=(q$Revision: 1.4 $=~/\d+/g); sprintf "%d."."%02d"x$#r,@r};
   
   use P5EEx::Blue::P5EE;
   use P5EEx::Blue::Widget::HTML;
  @@ -130,7 +130,7 @@
           ($colnum, $direction) = @args;
   
           my ($columns, $directions, $ordercols, $column, $i);
  -        $columns    = $self->get("columns");
  +        $columns    = $self->get("columns",[]);
           $column     = $columns->[$colnum];
   
           $ordercols = $self->get("ordercols");
  @@ -353,15 +353,22 @@
       $wc   = $self->{context};
       $name = $self->{name};
   
  +    my ($key, $column);
  +
       my ($numcols, $table, $title);
       my ($width, $border, $cellspacing, $cellpadding);
       my ($bgcolor, $align, $valign, $nowrap);
       my ($fontFace, $fontSize, $fontColor);
       my ($headingBgcolor, $headingAlign, $headingValign, $headingNowrap);
  -    my ($headings, $scrollable, $sortable, $filterable, $editable, $mode, $sql);
  +    my ($columns, $headings, $scrollable, $sortable, $filterable, $editable);
  +    my ($startrow, $numrow, $numbered);
  +    my ($keys, $mode, $sql);
  +    my ($columnSelectable, $rowSelectable);
   
  +    $columns          = $self->get("columns");
       $headings       = $self->get_headings();
       $data           = $self->get_data();
  +    $startrow         = $self->get("startrow",         1);
       $title          = $self->get("title");
       $table          = $self->get("table");
       $width          = $self->get("width");
  @@ -384,6 +391,10 @@
       $sortable       = $self->get("sortable",       0);
       $filterable     = $self->get("filterable",     0);
       $editable       = $self->get("editable",       0);
  +    $numbered         = $self->get("numbered",         1);
  +    $columnSelectable = $self->get("columnSelectable", 1);
  +    $rowSelectable    = $self->get("rowSelectable",    1);
  +    $keys             = $self->get("keys");
       $sql            = $self->get("sql");
   
       # only needed for subtotals
  @@ -412,7 +423,7 @@
   
       $numcols = $#$headings + 1;
   
  -    if ($scrollable || $sortable || $filterable) {
  +    if ($scrollable || $sortable || $filterable || $mode eq "edit") {
   
           $elem_begin = "";
           $elem_end = "";
  @@ -488,6 +499,9 @@
           if (!$sql) {
               if ($sortable) {
                   $html .= "<tr>\n";
  +                $html .= "  <td>&nbsp;</td>\n" if ($mode eq "edit" && 
$rowSelectable);
  +                $html .= "  <td>&nbsp;</td>\n" if ($numbered);
  +
                   for ($col = 0; $col < $numcols; $col++) {
                       $elem = $wc->widget("$name.sort$col",
                                   widgetClass => 
"P5EEx::Blue::Widget::HTML::ImageButton",
  @@ -504,6 +518,8 @@
               }
               if ($filterable) {
                   $html .= "<tr>\n";
  +                $html .= "  <td>&nbsp;</td>\n" if ($mode eq "edit" && 
$rowSelectable);
  +                $html .= "  <td>&nbsp;</td>\n" if ($numbered);
                   for ($col = 0; $col < $numcols; $col++) {
                       $elem = $wc->widget("$name\{filter}[$col]",
                                   widgetClass => 
"P5EEx::Blue::Widget::HTML::TextField",
  @@ -515,6 +531,19 @@
                   $html .= "</tr>\n";
               }
           }
  +        if ($mode eq "edit" && $columnSelectable) {
  +            $html .= "<tr>\n";
  +            $html .= "  <td bgcolor=\"#ffaaaa\">&nbsp;</td>\n" if ($mode eq "edit" 
&& $rowSelectable);
  +            $html .= "  <td bgcolor=\"#ffaaaa\">&nbsp;</td>\n" if ($numbered);
  +            for ($col = 0; $col < $numcols; $col++) {
  +                $column = $columns->[$col];
  +                $elem = $wc->widget("$name\{columnSelected}{$column}",
  +                            widgetClass => "P5EEx::Blue::Widget::HTML::Checkbox",
  +                        )->display();
  +                $html .= "  <td bgcolor=\"#ffaaaa\" valign=\"bottom\" 
align=\"center\">$elem</td>\n";
  +            }
  +            $html .= "</tr>\n";
  +        }
       }
       else {
           $html .= $table_begin;
  @@ -538,6 +567,8 @@
       $td_row_attrib .= " nowrap" if ($headingNowrap);
   
       $html .= "<tr>\n";
  +    $html .= "  <td bgcolor=\"#ffaaaa\">&nbsp;</td>\n" if ($mode eq "edit" && 
$rowSelectable);
  +    $html .= "  <td bgcolor=\"$headingBgcolor\">&nbsp;</td>\n" if ($numbered);
       for ($col = 0; $col < $numcols; $col++) {
           $td_col_attrib = "";
           $elem = $headings->[$col];
  @@ -553,7 +584,25 @@
       $td_row_attrib .= " nowrap" if ($nowrap);
   
       for ($row = 0; $row <= $#$data; $row++) {
  +        $numrow = $startrow + $row;
  +
           $html .= "<tr>\n";
  +
  +        if ($mode eq "edit" && $rowSelectable) {
  +            if (defined $keys && defined $keys->[$row]) {
  +                $key = join(",", @{$keys->[$row]});   # need to HTML-escape these!
  +                $html .= "  <td bgcolor=\"#ffaaaa\" valign=\"middle\" 
align=\"center\">\n";
  +                $html .= $wc->widget("$name\{rowSelected}{$key}",
  +                             widgetClass => "P5EEx::Blue::Widget::HTML::Checkbox",
  +                         )->display();
  +                $html .= "  </td>\n";
  +            }
  +            else {
  +                $html .= "  <td>&nbsp;</td>\n";
  +            }
  +        }
  +        $html .= "  <td bgcolor=\"$headingBgcolor\" 
align=\"right\">$elem_begin$numrow$elem_end</td>\n" if ($numbered);
  +
           for ($col = 0; $col < $numcols; $col++) {
               $elem = $data->[$row][$col];
               if (!defined $elem || $elem eq "") {
  
  
  


Reply via email to