changes so far for new moose / mop
[catagits/Reaction.git] / lib / Reaction / UI / ViewPort / GridView / Role / Pager.pm
CommitLineData
e22de101 1package Reaction::UI::ViewPort::GridView::Role::Pager;
2
3use Reaction::Role;
4
5use aliased 'Reaction::InterfaceModel::Collection';
6
b8faba69 7# XX This needs to be consumed after Ordered
e22de101 8role Pager, which {
9
b8faba69 10 #has paged_collection => (isa => Collection, is => 'rw', lazy_build => 1);
e22de101 11
12 has pager => (isa => 'Data::Page', is => 'rw', lazy_build => 1);
13 has page => (isa => 'Int', is => 'rw', lazy_build => 1, trigger_adopt('page'));
14 has per_page => (isa => 'Int', is => 'rw', lazy_build => 1, trigger_adopt('page'));
89939ff9 15 has per_page_max => (isa => 'Int', is => 'rw', lazy_build => 1);
e22de101 16
89939ff9 17 implements _build_page => as { 1 };
18 implements _build_per_page => as { 10 };
19 implements _build_per_page_max => as { 100 };
e22de101 20
89939ff9 21 implements _build_pager => as { shift->current_collection->pager };
e22de101 22
23 implements adopt_page => as {
24 my ($self) = @_;
b8faba69 25 #$self->clear_paged_collection;
89939ff9 26
e22de101 27 $self->clear_pager;
89939ff9 28 $self->clear_current_collection;
e22de101 29 };
30
89939ff9 31 around accept_events => sub { ('page','per_page', shift->(@_)); };
e22de101 32
b8faba69 33 #implements build_paged_collection => as {
34 # my ($self) = @_;
35 # my $collection = $self->current_collection;
36 # return $collection->where(undef, {rows => $self->per_page})->page($self->page);
37 #};
38
89939ff9 39 around _build_current_collection => sub {
b8faba69 40 my $orig = shift;
e22de101 41 my ($self) = @_;
b8faba69 42 my $collection = $orig->(@_);
e22de101 43 return $collection->where(undef, {rows => $self->per_page})->page($self->page);
44 };
45
46};
47
481;