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 = " ";
+ 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 = $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 = " ";
}
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";