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 )