X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=lib%2FMojoFacets%2FData.pm;h=bf150ee0828226b34156d37574165ba9ece302da;hb=4f8d628116b9c470c1d31148c2ec9954aeae4f4b;hp=c75fde5f2785f19618e45f15668ee499e3be88fc;hpb=d9f2a3c7d340f35f244d53d62ed2b4561a8b3174;p=MojoFacets.git diff --git a/lib/MojoFacets/Data.pm b/lib/MojoFacets/Data.pm index c75fde5..bf150ee 100644 --- a/lib/MojoFacets/Data.pm +++ b/lib/MojoFacets/Data.pm @@ -521,13 +521,20 @@ sub facet { my $all = $self->_perm_scalar('all', 1); - foreach my $i ( $self->_data_items($all) ) { - if ( ! exists $i->{$name} ) { + my $filter = $loaded->{$path}->{filters}->{$name}; + + my $data = $self->_loaded('data'); + foreach my $i ( 0 .. $#{ $data->{items} } ) { + if ( $filter && ! $all ) { + next unless defined $loaded->{$path}->{filters}->{$name}->{$i}; + } + my $item = $data->{items}->[$i]; + if ( ! exists $item->{$name} ) { $facet->{ _missing }++; - } elsif ( ref $i->{$name} eq 'ARRAY' ) { - $facet->{$_}++ foreach @{ $i->{$name} }; + } elsif ( ref $item->{$name} eq 'ARRAY' ) { + $facet->{$_}++ foreach @{ $item->{$name} }; } else { - $facet->{ $i->{$name} }++; + $facet->{ $item->{$name} }++; } }