do not include .git directory
[catagits/Reaction.git] / lib / Reaction / UI / ViewPort / Collection / Role / Pager.pm
CommitLineData
ddccc6a2 1package Reaction::UI::ViewPort::Collection::Role::Pager;
e22de101 2
3use Reaction::Role;
4
5use aliased 'Reaction::InterfaceModel::Collection';
6
b8faba69 7# XX This needs to be consumed after Ordered
81393881 8use namespace::clean -except => [ qw(meta) ];
7b5e71ad 9use MooseX::Types::Moose qw/Int/;
e22de101 10
81393881 11#has paged_collection => (isa => Collection, is => 'rw', lazy_build => 1);
e22de101 12
81393881 13has pager => (isa => 'Data::Page', is => 'rw', lazy_build => 1);
7b5e71ad 14has page => (isa => Int, is => 'rw', lazy_build => 1, trigger_adopt('page'), clearer => 'clear_page');
15has per_page => (isa => Int, is => 'rw', lazy_build => 1, trigger_adopt('page'));
16has per_page_max => (isa => Int, is => 'rw', lazy_build => 1);
81393881 17sub _build_page { 1 };
18sub _build_per_page { 10 };
19sub _build_per_page_max { 100 };
20sub _build_pager { shift->current_collection->pager };
21sub adopt_page {
22 my ($self) = @_;
23 #$self->clear_paged_collection;
e22de101 24
81393881 25 $self->clear_pager;
26 $self->clear_current_collection;
27};
89939ff9 28
cf6fb234 29after clear_page => sub {
30 my ($self) = @_;
31 $self->clear_pager;
32 $self->clear_current_collection;
33};
34
81393881 35around accept_events => sub { ('page','per_page', shift->(@_)); };
e22de101 36
81393881 37#implements build_paged_collection => as {
38# my ($self) = @_;
39# my $collection = $self->current_collection;
40# return $collection->where(undef, {rows => $self->per_page})->page($self->page);
41#};
e22de101 42
81393881 43around _build_current_collection => sub {
44 my $orig = shift;
45 my ($self) = @_;
46 my $collection = $orig->(@_);
47 return $collection->where(undef, {rows => $self->per_page})->page($self->page);
48};
b8faba69 49
e22de101 501;
1d97ac81 51
52__END__;