From 24aa54e6d528c93266cd397b0fe188dc7e255708 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Fri, 2 Apr 2010 17:31:47 +0200 Subject: [PATCH] edit facet filters --- lib/MojoFacets/Data.pm | 45 +++++++++++++++++++++++++++++++--- templates/data/columns.html.ep | 2 -- templates/data/facet.html.ep | 11 +++++++++ templates/data/table.html.ep | 7 ++++-- 4 files changed, 58 insertions(+), 7 deletions(-) diff --git a/lib/MojoFacets/Data.pm b/lib/MojoFacets/Data.pm index 64456b8..a10af70 100644 --- a/lib/MojoFacets/Data.pm +++ b/lib/MojoFacets/Data.pm @@ -73,6 +73,7 @@ sub columns { $self->render( message => 'Select columns to display', stats => $stats, + checked => $self->_checked( $self->_perm_array('columns') ), ); } @@ -83,8 +84,12 @@ sub _perm_array { if ( @array ) { $self->session($name => [ @array ]); - } else { - @array = @{ $self->session($name) }; + } elsif ( my $session = $self->session($name) ) { + if ( ref $session eq 'ARRAY' ) { + @array = @$session; + } else { + die "$name not array ",dump($session); + } } warn "# $name ",dump @array; return @array; @@ -111,6 +116,24 @@ sub _perm_scalar { return $scalar; } +sub filter { + my $self = shift; + + my $name = $self->param('filter_name') || die "name?"; + my @vals = $self->param('filter_vals'); + + warn "# filter $name vals ",dump(@vals); + + + my $filters = $self->session('filters'); + $filters->{$name} = [ @vals ]; + $self->session( 'filters' => $filters ); + + warn "# filters ",dump($self->session('filters')); + + $self->redirect_to('/data/table'); +} + sub table { my $self = shift; @@ -142,6 +165,7 @@ sub table { } + sub facet { my $self = shift; @@ -159,7 +183,22 @@ sub facet { # warn "# facet $name ",dump $facet; - $self->render( name => $name, facet => $facet ) + my $checked; + if ( my $f = $self->session('filters') ) { + if ( defined $f->{$name} ) { + $checked = $self->_checked( @{ $f->{$name} } ); + } + } + + $self->render( name => $name, facet => $facet, checked => $checked ); +} + +sub _checked { + my $self = shift; + my $checked; + $checked->{$_}++ foreach @_; + warn "# _checked ",dump($checked); + return $checked; } 1; diff --git a/templates/data/columns.html.ep b/templates/data/columns.html.ep index d55003d..5d3eb5b 100644 --- a/templates/data/columns.html.ep +++ b/templates/data/columns.html.ep @@ -4,8 +4,6 @@