[svn:p5ee] r7949 - p5ee/trunk/App-Widget/lib/App/Widget

[email protected]
Newsgroups perl.cvs.p5ee
Message-ID <[email protected]>
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";
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.