Commit | Line | Data |
ddccc6a2 |
1 | package Reaction::UI::ViewPort::Collection::Role::Pager; |
e22de101 |
2 | |
3 | use Reaction::Role; |
4 | |
5 | use aliased 'Reaction::InterfaceModel::Collection'; |
6 | |
b8faba69 |
7 | # XX This needs to be consumed after Ordered |
81393881 |
8 | use namespace::clean -except => [ qw(meta) ]; |
7b5e71ad |
9 | use MooseX::Types::Moose qw/Int/; |
e22de101 |
10 | |
81393881 |
11 | #has paged_collection => (isa => Collection, is => 'rw', lazy_build => 1); |
e22de101 |
12 | |
81393881 |
13 | has pager => (isa => 'Data::Page', is => 'rw', lazy_build => 1); |
7b5e71ad |
14 | has page => (isa => Int, is => 'rw', lazy_build => 1, trigger_adopt('page'), clearer => 'clear_page'); |
15 | has per_page => (isa => Int, is => 'rw', lazy_build => 1, trigger_adopt('page')); |
16 | has per_page_max => (isa => Int, is => 'rw', lazy_build => 1); |
81393881 |
17 | sub _build_page { 1 }; |
18 | sub _build_per_page { 10 }; |
19 | sub _build_per_page_max { 100 }; |
20 | sub _build_pager { shift->current_collection->pager }; |
21 | sub 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 |
29 | after clear_page => sub { |
30 | my ($self) = @_; |
31 | $self->clear_pager; |
32 | $self->clear_current_collection; |
33 | }; |
34 | |
81393881 |
35 | around 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 |
43 | around _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 |
50 | 1; |
1d97ac81 |
51 | |
52 | __END__; |