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") {
   
  
  
  


Reply via email to