cvsuser 02/08/30 10:55:18
Modified: P5EEx/Blue/P5EEx/Blue/Widget/HTML DataTable.pm
Log:
added hidden columns and multiple comparison ops in the parametervalue
Revision Changes Path
1.17 +56 -8 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.16
retrieving revision 1.17
diff -u -w -r1.16 -r1.17
--- DataTable.pm 26 Jul 2002 04:31:27 -0000 1.16
+++ DataTable.pm 30 Aug 2002 17:55:18 -0000 1.17
@@ -1,10 +1,10 @@
######################################################################
-## $Id: DataTable.pm,v 1.16 2002/07/26 04:31:27 spadkins Exp $
+## $Id: DataTable.pm,v 1.17 2002/08/30 17:55:18 spadkins Exp $
######################################################################
package P5EEx::Blue::Widget::HTML::DataTable;
-$VERSION = do { my @r=(q$Revision: 1.16 $=~/\d+/g); sprintf "%d."."%02d"x$#r,@r};
+$VERSION = do { my @r=(q$Revision: 1.17 $=~/\d+/g); sprintf "%d."."%02d"x$#r,@r};
use P5EEx::Blue::P5EE;
use P5EEx::Blue::Widget::HTML;
@@ -252,7 +252,8 @@
$self->{context}->dbgprint("DataTable->load()")
if ($P5EEx::Blue::DEBUG && $self->{context}->dbg(1));
my ($context, $repname, $rep, $rows, $table, $columns, $sql, $error, $data);
- my ($params, $paramvalues, $ordercols, $startrow, $maxrows, $endrow,
$directions, $keycolidx);
+ my ($params, $paramvalues, $param, $paramvalue, @paramvalues);
+ my ($ordercols, $startrow, $maxrows, $endrow, $directions, $keycolidx);
my (%paramvalues, $filter, $column);
$repname = $self->get("repository");
@@ -302,11 +303,58 @@
$self->substitute(\%paramvalues);
$filter = $self->get("filter",{});
foreach $column (%$filter) {
- if (defined $filter->{$column} && $filter->{$column} ne "") {
- if (!defined $paramvalues{"$column.contains"} && defined $params) {
- push(@$params,"$column.contains");
+ $param = $column;
+ $paramvalue = $filter->{$column};
+ if (defined $paramvalue && $paramvalue ne "") {
+ if ($param =~ /\./) {
+ if (!defined $paramvalues{$param} && defined $params) {
+ push(@$params,$param);
+ }
+ $paramvalues{$param} = $paramvalue;
+ }
+ elsif ($paramvalue =~ /^ *[=~!<>\/]/) {
+ @paramvalues = split(/ *([=~!<>\/]+) */,$paramvalue);
+ my ($i, $op);
+ for ($i = 1; $i < $#paramvalues; $i += 2) {
+ $op = "";
+ if ($paramvalues[$i] eq "=") { $op = "eq"; }
+ elsif ($paramvalues[$i] eq "==") { $op = "eq"; }
+ elsif ($paramvalues[$i] eq "!=") { $op = "ne"; }
+ elsif ($paramvalues[$i] eq "<>") { $op = "ne"; }
+ elsif ($paramvalues[$i] eq "<") { $op = "lt"; }
+ elsif ($paramvalues[$i] eq "<=") { $op = "le"; }
+ elsif ($paramvalues[$i] eq ">") { $op = "gt"; }
+ elsif ($paramvalues[$i] eq ">=") { $op = "ge"; }
+ elsif ($paramvalues[$i] eq "~") { $op = "contains"; }
+ elsif ($paramvalues[$i] eq "~=") { $op = "contains"; }
+ elsif ($paramvalues[$i] eq "=~") { $op = "contains"; }
+ elsif ($paramvalues[$i] eq "/") { $op = "matches"; }
+
+ $paramvalue = $paramvalues[$i+1];
+
+ if ($op) {
+ $param = "$column.$op";
+ if (!defined $paramvalues{$param}) {
+ push(@$params,$param) if (defined $params);
+ $paramvalues{$param} = $paramvalue;
+ }
+ }
+ }
+ }
+ elsif ($paramvalue =~ /,/) {
+ $param = "$column.in";
+ if (!defined $paramvalues{$param}) {
+ push(@$params,$param) if (defined $params);
+ $paramvalues{$param} = $paramvalue;
+ }
+ }
+ else {
+ $param = "$column.contains";
+ if (!defined $paramvalues{$param} && defined $params) {
+ push(@$params,$param);
+ }
+ $paramvalues{$param} = $paramvalue;
}
- $paramvalues{"$column.contains"} = $filter->{$column};
}
}
@@ -546,7 +594,7 @@
$html .= $title;
}
- $numcols = $#$headings + 1;
+ $numcols = $self->{numcols} || $#$headings + 1;
if ($scrollable || $sortable || $filterable || $mode eq "edit") {