This allows us to have huge faceted filters.
We stored filters in cookie and that works until whole session
(including all filtered values) is smaller than 4K which is
limit of cookie size (session in stored in cookie)
warn "# filter $name vals ",dump(@vals);
warn "# filter $name vals ",dump(@vals);
- my $filters = $self->session('filters');
+ my $path = $self->session('path');
+ my $filters = $loaded->{$path}->{filters};
if ( @vals ) {
$filters->{$name} = [ @vals ];
} else {
delete $filters->{$name};
}
if ( @vals ) {
$filters->{$name} = [ @vals ];
} else {
delete $filters->{$name};
}
- $self->session( 'filters' => $filters );
+ $loaded->{$path}->{filters} = $filters;
- warn "# filters ",dump($self->session('filters'));
+ warn "# filters ",dump($filters);
$self->session( 'offset' => 0 );
$self->session( 'offset' => 0 );
sub _data_items {
my $self = shift;
sub _data_items {
my $self = shift;
- my $all_filters = $self->session('filters');
+ my $path = $self->session('path') || $self->redirect_to( '/data/index' );
+ my $all_filters = $loaded->{$path}->{filters};
warn "# all_filters ",dump($all_filters);
my $filters;
$filters->{ $_ } = $all_filters->{ $_ }
warn "# all_filters ",dump($all_filters);
my $filters;
$filters->{ $_ } = $all_filters->{ $_ }
sub facet {
my $self = shift;
sub facet {
my $self = shift;
+ my $path = $self->session('path') || $self->redirect_to( '/data/index' );
+
if ( my $remove = $self->param('remove') ) {
if ( my $remove = $self->param('remove') ) {
- my $f = $self->session('filters');
- delete $f->{$remove};
- $self->session( 'filters' => $f );
+ delete $loaded->{$path}->{filters}->{$remove};
$self->redirect_to( '/data/items' );
}
$self->redirect_to( '/data/items' );
}
# warn "# facet $name ",dump $facet;
my $checked;
# warn "# facet $name ",dump $facet;
my $checked;
- if ( my $f = $self->session('filters') ) {
+ if ( my $f = $loaded->{$path}->{filters} ) {
if ( defined $f->{$name} ) {
$checked = $self->_checked( @{ $f->{$name} } );
}
if ( defined $f->{$name} ) {
$checked = $self->_checked( @{ $f->{$name} } );
}