From 7409c4c81245aca07a321661a507c563defed846 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Tue, 29 Jun 2010 14:18:32 +0200 Subject: [PATCH] update $checked in facet code eval --- README | 1 + lib/MojoFacets/Data.pm | 10 ++++++---- templates/data/facet.html.ep | 1 + 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/README b/README index 28e99a8..56921c3 100644 --- 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: diff --git a/lib/MojoFacets/Data.pm b/lib/MojoFacets/Data.pm index d12b1a7..1426ba9 100644 --- a/lib/MojoFacets/Data.pm +++ b/lib/MojoFacets/Data.pm @@ -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, ); } diff --git a/templates/data/facet.html.ep b/templates/data/facet.html.ep index 3a4cc0a..20b91da 100644 --- a/templates/data/facet.html.ep +++ b/templates/data/facet.html.ep @@ -62,6 +62,7 @@ Eval code on each facet $value and $count
 $out->{sum} += $value * $count;
 $out->{sum}->{ $checked ? 'on' : 'off' } += $count;
+$checked = 1 if $count > 10;
 
% if ( my $out = stash('out') ) { -- 2.20.1