added action_filter
[catagits/Reaction.git] / lib / Reaction / UI / ViewPort / Collection / Role / Pager.pm
index 64752a6..42907a9 100644 (file)
@@ -6,14 +6,14 @@ use aliased 'Reaction::InterfaceModel::Collection';
 
 # XX This needs to be consumed after Ordered
 use namespace::clean -except => [ qw(meta) ];
-
+use MooseX::Types::Moose qw/Int/;
 
 #has paged_collection => (isa => Collection, is => 'rw', lazy_build => 1);
 
 has pager    => (isa => 'Data::Page', is => 'rw', lazy_build => 1);
-has page     => (isa => 'Int', is => 'rw', lazy_build => 1, trigger_adopt('page'));
-has per_page => (isa => 'Int', is => 'rw', lazy_build => 1, trigger_adopt('page'));
-has per_page_max => (isa => 'Int', is => 'rw', lazy_build => 1);
+has page     => (isa => Int, is => 'rw', lazy_build => 1, trigger_adopt('page'), clearer => 'clear_page');
+has per_page => (isa => Int, is => 'rw', lazy_build => 1, trigger_adopt('page'));
+has per_page_max => (isa => Int, is => 'rw', lazy_build => 1);
 sub _build_page { 1  };
 sub _build_per_page { 10 };
 sub _build_per_page_max { 100 };
@@ -26,6 +26,12 @@ sub adopt_page {
   $self->clear_current_collection;
 };
 
+after clear_page => sub {
+  my ($self) = @_;
+  $self->clear_pager;
+  $self->clear_current_collection;
+};
+
 around accept_events => sub { ('page','per_page', shift->(@_)); };
 
 #implements build_paged_collection => as {
@@ -41,6 +47,6 @@ around _build_current_collection => sub {
   return $collection->where(undef, {rows => $self->per_page})->page($self->page);
 };
 
-
-
 1;
+
+__END__;