update $checked in facet code eval
authorDobrica Pavlinusic <dpavlin@rot13.org>
Tue, 29 Jun 2010 12:18:32 +0000 (14:18 +0200)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Tue, 29 Jun 2010 12:18:32 +0000 (14:18 +0200)
README
lib/MojoFacets/Data.pm
templates/data/facet.html.ep

diff --git a/README b/README
index 28e99a8..56921c3 100644 (file)
--- a/README
+++ b/README
@@ -74,6 +74,7 @@ column will be shown.
 Facet code eval:
 
 Code snippet will be executed for each facet $value and will report $count and $checked state.
+You can also update $checked to programatically select part of facet values.
 
 
 Export data:
index d12b1a7..1426ba9 100644 (file)
@@ -951,19 +951,21 @@ sub facet {
                }
        }
 
-       my $checked = $self->_checked( @{ $filters->{$name} } ) if defined $filters->{$name};
+       my $checked_values = $self->_checked( @{ $filters->{$name} } ) if defined $filters->{$name};
 
        if ( my $code = $self->param('code') ) {
                my $out;
-               my $checked_values = $checked;
                foreach my $value ( keys %$facet ) {
                        my $count = $facet->{$value};
-                       my $checked = defined $checked_values->{$value};
+                       my $checked = $checked_values->{$value};
                        eval $code;
                        if ( $@ ) {
                                $out = $@;
                                warn "ERROR: $@\n$code\n";
                                last;
+                       } elsif ( $checked != $checked_values->{$value} ) {
+                               warn "checked $value $count -> $checked\n";
+                               $checked_values->{$value} = $checked;
                        }
                }
                warn "out ",dump( $out );
@@ -999,7 +1001,7 @@ sub facet {
                $result;
        } @facet_names;
 
-       $self->render( name => $name, facet => $facet, checked => $checked,
+       $self->render( name => $name, facet => $facet, checked => $checked_values,
                facet_names => \@facet_names, sort => $sort, numeric => $numeric,
        );
 }
index 3a4cc0a..20b91da 100644 (file)
@@ -62,6 +62,7 @@ Eval code on each facet <tt>$value</tt> and <tt>$count</tt>
 <pre>
 $out->{sum} += $value * $count;
 $out->{sum}->{ $checked ? 'on' : 'off' } += $count;
+$checked = 1 if $count > 10;
 </pre>
 </div>
 % if ( my $out = stash('out') ) {