Author: spadkins
Date: Mon Oct 16 11:29:19 2006
New Revision: 7949

Modified:
   p5ee/trunk/App-Widget/lib/App/Widget/DataTable2.pm

Log:
add view_widget capability

Modified: p5ee/trunk/App-Widget/lib/App/Widget/DataTable2.pm
==============================================================================
--- p5ee/trunk/App-Widget/lib/App/Widget/DataTable2.pm  (original)
+++ p5ee/trunk/App-Widget/lib/App/Widget/DataTable2.pm  Mon Oct 16 11:29:19 2006
@@ -266,10 +266,10 @@
     $self->{context}->dbgprint("DataTable2->get_headings()")
         if ($App::DEBUG && $self->{context}->dbg(1));
     my ($table, $headings, $heading, $columns, $column, $lang);
-    $table = $self->get("table");
-    $columns = $self->get_columns();
-    $headings = $self->get("headings");
-    $lang = $self->{lang};
+    $table    = $self->{table};
+    $columns  = $self->get_columns();
+    $headings = $self->{headings};
+    $lang     = $self->{lang};
     my $column_attribs = $self->{column} || {};
     if (!defined $headings) {
         $headings = [];
@@ -299,7 +299,6 @@
         if ($App::DEBUG && $self->{context}->dbg(1));
     my ($data);
     $data = $self->{data};
-    $data = $self->get("data") if (! defined $data);
     if (!defined $data) {
         $self->load();
         $data = $self->{data};
@@ -318,16 +317,16 @@
     my ($startrow, $maxrows, $endrow, $keycolidx);
     my (%paramvalues, $filter, $column);
 
-    $repname = $self->get("repository");
+    $repname = $self->{repository};
     $context = $self->{context};
     $rep = $context->repository($repname);
     return if (! defined $rep);
 
-    $sql = $self->get("sql");
-    $data = $self->get("data");
+    $sql = $self->{sql};
+    $data = $self->{data};
 
     if ($sql) {
-        $paramvalues = $self->substitute($self->get("paramvalues"));
+        $paramvalues = $self->substitute($self->{paramvalues});
         $sql         = $self->substitute($sql, $paramvalues);
         $startrow    = $self->get("startrow", 1, 1);
         $maxrows     = $self->get("maxrows", 20, 1);
@@ -342,7 +341,7 @@
         $rows = $data;
     }
     else {
-        $table = $self->get("table");
+        $table = $self->{table};
 
         $columns = $self->get_columns();
         if (! defined $columns || $#$columns == -1) {
@@ -356,7 +355,7 @@
             $columns = [ @$columns ];
         }
 
-        $params      = $self->get("params");
+        $params      = $self->{params};
         $paramvalues = $self->substitute($self->get("paramvalues",{}));
         %paramvalues = %$paramvalues;
         $filter      = $self->get("filter",{});
@@ -416,9 +415,9 @@
             }
         }
 
-        my $order_by   = $self->get("order_by") || $self->get("ordercols");   
# ordercols is deprecated in favor of order_by
-        my $group_by   = $self->get("group_by");
-        my $direction  = $self->{direction} || $self->{directions} || {};
+        my $order_by   = $self->{order_by} || $self->{ordercols};   # 
ordercols is deprecated in favor of order_by
+        my $group_by   = $self->{group_by};
+        my $direction  = $self->{direction} || $self->{directions} || {}; # 
directions is deprecated in favor of direction
         $startrow      = $self->get("startrow", 1, 1);
         $maxrows       = $self->get("maxrows", 20, 1);
         $endrow        = ($maxrows != 0) ? ($startrow + $maxrows - 1) : 0;
@@ -1164,6 +1163,8 @@
     @edit_style = ();
     @column_length = ();
 
+    my ($view_widget_args, $view_widget, $view_width);
+
     if ($mode eq "edit") {
         # prepare the style attribute arrays
         push(@edit_style, "font_family", $font_face)  if ($font_face);
@@ -1191,7 +1192,7 @@
             # Removed because when a row is added without a selected row
             # the inputs would be set to the minimum length
             #if (($column ne "" && $self->{column_selected}{$column}) ||
-            #    ($self->{row_selected} && %{$self->{row_selected}})) {
+            #    ($self->{row_selected} && %{$self->{row_selected}})) { }
 
             if ($column ne "") {
                 for ($row = 0; $row <= $#$data; $row++) {
@@ -1386,21 +1387,55 @@
                 $html .= "$elem_end</td>\n";
             }
             else {
-                $elem = $self->html_escape($elem);
-                if (!defined $elem || $elem eq "") {
-                    $elem = "&nbsp;";
+                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 = $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\"";
+                    $elem = $self->html_escape($elem);
+                    if (!defined $elem || $elem eq "") {
+                        $elem = "&nbsp;";
                     }
                     else {
-                        $td_col_attrib = " align=\"left\"";
+                        $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";

Reply via email to