CGI-OptimalQuery

 view release on metacpan or  search on metacpan

lib/CGI/OptimalQuery/InteractiveFilter.pm  view on Meta::CPAN

package CGI::OptimalQuery::InteractiveFilter;

use strict;
use warnings;
no warnings qw( uninitialized );
use base 'CGI::OptimalQuery::Base';
use Data::Dumper;
use DBIx::OptimalQuery();
use CGI();


my $DEFAULT_CSS = <<'TILEND';
<STYLE type="text/css">
/* ----- base functionality ----- */

form.filterForm td.lp_col, 
form.filterForm td.rp_col {
  text-align: center; 
}

form.filterForm td.lp_col input, 
form.filterForm td.rp_col input { 
  color: #999999; 
  background-color: white; 
  border: 1px solid #efefef; 
  font-size: 1em; 
  width: 2em;
}

form.filterForm td.l_col input.colvalbtn { display: none; }
form.filterForm td.d_col input { color: #990000; background-color: white; border: 1px solid white;}
form.filterForm tr.footer td.d_col input { background-color: #990000; color: white; border: 1px solid #666666;}
form.filterForm .d_col { color: #990000; }

div.RO_NAMED_FILTER {
  background-color: #efefef;
  color: #222222;
  font-size: 1.1em;
  text-align: center; 
  border: 1px solid #666666;
}

form.filterForm input, 
form.filterForm select { 
  border: 1px solid #666666; 
  background-color: #efefef; 
  padding: 2px; 
  vertical-align: middle; 
}

td.f_col { text-align: center; }


form.filterForm .hide { display: none; }


/* -------------------- prefs -------------------- */
form.filterForm .submit_off,.add_off { display: none; }
form.filterForm .c_col { text-align: center; }
form.filterForm input.submit_ok { background-color: lightgreen; }
form.filterForm input.submit_off { background-color: yellow; }
form.filterForm .paren_warn { text-align: center; background-color: yellow; }
form.filterForm .paren_match { display: none; }
form.filterForm .delbtn { color: white; background-color: #990000; }
form.filterForm .noparen { color: white; }
</STYLE>
TILEND

=comment CSS MORE POSSIBILITIES
# Simplest mode 
form.filterForm .colvalbtn { display:none; }
form.filterForm .noparen { display:none; }
form.filterForm #paren_warn { display:none; }

# Disable deleting controls
form.filterForm .d_col { display:none; }

# other possibilities ...
form.filterForm label:after { content: " mark"; }
<!-- Different Style Sheet possibilites (see documentation) -->
<link title="full" rel="stylesheet" type="text/css" href="http:///css/OQfilter_full.css" />
<link title="simplest" rel="alternate stylesheet" type="text/css" href="http:///css/OQfilter_simplest.css" />
<link title="test" rel="alternate stylesheet" type="text/css" href="http:///css/OQfilter_test.css" />
=cut




# ------------------------- new -------------------------
sub new {
  my $pack = shift;
  my $o = $pack->SUPER::new(@_);
  $$o{view} = '';
  $$o{schema}{options}{'CGI::OptimalQuery::InteractiveFilter'}{css} ||= $DEFAULT_CSS;
  $o->process_actions();
  return $o;
}


# ------------------------- print -------------------------
sub output {
  my $o = shift;
  $$o{output_handler}->($$o{httpHeader}->());
  my $view = $$o{view};
  $$o{output_handler}->($o->$view()) if $o->can($view);
  return undef;
}




=comment
  Grammar Translations: basically this describes how to convert rules 
  into elements of an expression array. Each element in this array
  is a hash ref with keys: L_PAREN, R_PAREN, ANDOR, CMPOP, R_VALUE,
  L_COLMN, R_COLMN, FUNCT, ARG_XYZ. Later this array can be translated
  to CGI params that represent the filter for an HTML form.



( run in 1.027 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )