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> </td>\n" if ($mode eq "edit" &&
$rowSelectable);
+ $html .= " <td> </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> </td>\n" if ($mode eq "edit" &&
$rowSelectable);
+ $html .= " <td> </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\"> </td>\n" if ($mode eq "edit"
&& $rowSelectable);
+ $html .= " <td bgcolor=\"#ffaaaa\"> </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\"> </td>\n" if ($mode eq "edit" &&
$rowSelectable);
+ $html .= " <td bgcolor=\"$headingBgcolor\"> </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> </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 "") {