diff --git a/lib/Pear/LocalLoop.pm b/lib/Pear/LocalLoop.pm index 5771d9e..1b435da 100644 --- a/lib/Pear/LocalLoop.pm +++ b/lib/Pear/LocalLoop.pm @@ -33,6 +33,7 @@ sub startup { push @{ $self->commands->namespaces }, __PACKAGE__ . '::Command'; + $self->plugin('Pear::LocalLoop::Plugin::BootstrapPagination', { bootstrap4 => 1 } ); $self->plugin('Pear::LocalLoop::Plugin::Validators'); $self->plugin('Authentication' => { diff --git a/lib/Pear/LocalLoop/Command/dev_data.pm b/lib/Pear/LocalLoop/Command/dev_data.pm index 33d6326..70a5673 100644 --- a/lib/Pear/LocalLoop/Command/dev_data.pm +++ b/lib/Pear/LocalLoop/Command/dev_data.pm @@ -25,18 +25,6 @@ sub run { my $schema = $self->app->schema; - $schema->resultset('Leaderboard')->populate([ - [ qw/ name type / ], - [ 'Daily Total', 'daily_total' ], - [ 'Daily Count', 'daily_count' ], - [ 'Weekly Total', 'weekly_total' ], - [ 'Weekly Count', 'weekly_count' ], - [ 'Monthly Total', 'monthly_total' ], - [ 'Monthly Count', 'monthly_count' ], - [ 'All Time Total', 'all_time_total' ], - [ 'All Time Count', 'all_time_count' ], - ]); - $schema->resultset('User')->create({ email => 'test@example.com', password => 'abc123', diff --git a/lib/Pear/LocalLoop/Controller/Admin/Organisations.pm b/lib/Pear/LocalLoop/Controller/Admin/Organisations.pm index 55f90f5..1dffdc9 100644 --- a/lib/Pear/LocalLoop/Controller/Admin/Organisations.pm +++ b/lib/Pear/LocalLoop/Controller/Admin/Organisations.pm @@ -18,13 +18,31 @@ sub list { sub valid_read { my $c = shift; my $valid_org = $c->schema->resultset('Organisation')->find( $c->param('id') ); - $c->stash( valid_org => $valid_org ); + my $transactions = $valid_org->transactions->search( + undef, { + page => $c->param('page') || 1, + rows => 10, + }, + ); + $c->stash( + valid_org => $valid_org, + transactions => $transactions, + ); } sub pending_read { my $c = shift; my $pending_org = $c->schema->resultset('PendingOrganisation')->find( $c->param('id') ); - $c->stash( pending_org => $pending_org ); + my $transactions = $pending_org->transactions->search( + undef, { + page => $c->param('page') || 1, + rows => 10, + }, + ); + $c->stash( + pending_org => $pending_org, + transactions => $transactions, + ); } sub pending_approve { diff --git a/lib/Pear/LocalLoop/Plugin/BootstrapPagination.pm b/lib/Pear/LocalLoop/Plugin/BootstrapPagination.pm new file mode 100644 index 0000000..6f94a03 --- /dev/null +++ b/lib/Pear/LocalLoop/Plugin/BootstrapPagination.pm @@ -0,0 +1,216 @@ +package Pear::LocalLoop::Plugin::BootstrapPagination; +# nabbed from Mojolicious::Plugin::BootstrapPagination - +# https://github.com/csroli/Mojolicious-Plugin-BootstrapPagination +use Mojo::Base 'Mojolicious::Plugin'; +use POSIX( qw/ceil/ ); +use Mojo::ByteStream 'b'; + +use strict; +use warnings; + +our $VERSION = "0.14"; + +# Homer: Well basically, I just copied the plant we have now. +# Then, I added some fins to lower wind resistance. +# And this racing stripe here I feel is pretty sharp. +# Burns: Agreed. First prize! +sub register{ + my ( $self, $app, $args ) = @_; + $args ||= {}; + + $app->helper( bootstrap_pagination => sub{ + my ( $self, $actual, $count, $opts ) = @_; + my %bs4classes = (list_class => "page-item", anchor_class => "page-link"); + + my $localize = ( $opts->{localize} || $args->{localize} ) ? + ( $opts->{localize} || $args->{localize} ) : undef; + + $count = ceil($count); + return "" unless $count > 1; + $opts = {} unless $opts; + my $round = $opts->{round} || $args->{round} || 4; + my $param = $opts->{param} || $args->{param} || "page"; + my $class = $opts->{class} || $args->{class} || ""; + my $bs4 = $opts->{bootstrap4} || $args->{bootstrap4} || undef; + + if ($class ne ""){ + $class = " " . $class; + } + my $outer = $opts->{outer} || $args->{outer} || 2; + my $query = exists $opts->{query} ? $opts->{query} : $args->{query} || ""; + my $start = $opts->{start} // $args->{start} // 1; + my @current = ( $actual - $round .. $actual + $round ); + my @first = ($start.. $start + $outer - 1); + my @tail = ( $count - $outer + 1 .. $count ); + my @ret = (); + my $last = undef; + foreach my $number( sort { $a <=> $b } @current, @first, @tail ){ + next if ( $last && $last == $number && $start > 0 ) || ( defined $last && $last == $number && $start == 0 ); + next if ( $number <= 0 && $start > 0) || ( $number < 0 && $start == 0 ); + last if ( $number > $count && $start > 0 ) || ( $number >= $count && $start == 0 ); + push @ret, ".." if( $last && $last + 1 != $number ); + push @ret, $number; + $last = $number; + } + my $html = "