History: Only show months and years with logged journeys
This commit is contained in:
parent
8c1888263b
commit
d6e6c9992e
6 changed files with 55 additions and 24 deletions
|
@ -1068,6 +1068,47 @@ sub startup {
|
|||
}
|
||||
);
|
||||
|
||||
$self->helper(
|
||||
'history_years' => sub {
|
||||
my ( $self, $uid ) = @_;
|
||||
$uid //= $self->current_user->{id},
|
||||
|
||||
my $res = $self->pg->db->select(
|
||||
'journeys',
|
||||
'distinct extract(year from real_departure) as year',
|
||||
{ user_id => $uid },
|
||||
{ order_by => { -asc => 'year' } }
|
||||
);
|
||||
|
||||
my @ret;
|
||||
for my $row ( $res->hashes->each ) {
|
||||
push( @ret, [ $row->{year}, $row->{year} ] );
|
||||
}
|
||||
return @ret;
|
||||
}
|
||||
);
|
||||
|
||||
$self->helper(
|
||||
'history_months' => sub {
|
||||
my ( $self, $uid ) = @_;
|
||||
$uid //= $self->current_user->{id},
|
||||
|
||||
my $res = $self->pg->db->select(
|
||||
'journeys',
|
||||
"distinct to_char(real_departure, 'YYYY.MM') as yearmonth",
|
||||
{ user_id => $uid },
|
||||
{ order_by => { -asc => 'yearmonth' } }
|
||||
);
|
||||
|
||||
my @ret;
|
||||
for my $row ( $res->hashes->each ) {
|
||||
my ( $year, $month ) = split( qr{[.]}, $row->{yearmonth} );
|
||||
push( @ret, [ "${year}/${month}", "${month}.${year}" ] );
|
||||
}
|
||||
return @ret;
|
||||
}
|
||||
);
|
||||
|
||||
$self->helper(
|
||||
'get_oldest_journey_ts' => sub {
|
||||
my ($self) = @_;
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<div class="row">
|
||||
<div class="col s12">
|
||||
<ul class="pagination">
|
||||
% while ($since < $now) {
|
||||
% my $link_to = $since->strftime('%Y/%m');
|
||||
% for my $month (history_months()) {
|
||||
% my $link_to = $month->[0];
|
||||
% my $text = $month->[1];
|
||||
% my $class = $link_to eq $current ? 'active' : 'waves-effect';
|
||||
<li class="<%= $class %>"><a href="/history/<%= $link_to %>"><%= $since->strftime('%m.%Y') %></a></li>
|
||||
% $since->add(months => 1)->set(day => 1, hour => 0, minute => 0, second => 0);
|
||||
<li class="<%= $class %>"><a href="/history/<%= $link_to %>"><%= $text %></a></li>
|
||||
% }
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<div class="row">
|
||||
<div class="col s12">
|
||||
<ul class="pagination">
|
||||
% while ($since < $now) {
|
||||
% my $link_to = $since->strftime('%Y');
|
||||
% for my $year (history_years()) {
|
||||
% my $link_to = $year->[0];
|
||||
% my $text = $year->[1];
|
||||
% my $class = $link_to eq $current ? 'active' : 'waves-effect';
|
||||
<li class="<%= $class %>"><a href="/history/<%= $link_to %>"><%= $since->strftime('%Y') %></a></li>
|
||||
% $since->add(years => 1)->set(month => 1, day => 1, hour => 0, minute => 0, second => 0);
|
||||
<li class="<%= $class %>"><a href="/history/<%= $link_to %>"><%= $text %></a></li>
|
||||
% }
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
@ -22,12 +22,8 @@
|
|||
</div>
|
||||
|
||||
<h2>Nach Jahr</h2>
|
||||
% my $since = get_oldest_journey_ts();
|
||||
% my $now = DateTime->now(time_zone => 'Europe/Berlin');
|
||||
% if ($since) {
|
||||
%= include '_history_years', current => '', since => $since->clone, now => $now;
|
||||
% }
|
||||
% else {
|
||||
%= include '_history_years', current => '';
|
||||
% if(0) {
|
||||
<div class="row">
|
||||
<div class="col s12">
|
||||
Noch keine Fahrten.
|
||||
|
@ -36,10 +32,8 @@
|
|||
% }
|
||||
|
||||
<h2>Nach Monat</h2>
|
||||
% if ($since) {
|
||||
%= include '_history_months', current => '', since => $since->clone, now => $now;
|
||||
% }
|
||||
% else {
|
||||
%= include '_history_months', current => '';
|
||||
% if(0) {
|
||||
<div class="row">
|
||||
<div class="col s12">
|
||||
Noch keine Fahrten.
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
% my $since = get_oldest_journey_ts();
|
||||
% my $now = DateTime->now(time_zone => 'Europe/Berlin');
|
||||
%= include '_history_months', current => "${year}/${month}", since => $since, now => $now;
|
||||
%= include '_history_months', current => "${year}/${month}";
|
||||
|
||||
<h1><%= stash('month_name') %> <%= stash('year') %></h1>
|
||||
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
% my $since = get_oldest_journey_ts();
|
||||
% my $now = DateTime->now(time_zone => 'Europe/Berlin');
|
||||
%= include '_history_years', current => $year, since => $since, now => $now;
|
||||
%= include '_history_years', current => $year;
|
||||
|
||||
<h1>Jahresrückblick <%= $year %></h1>
|
||||
|
||||
|
|
Loading…
Reference in a new issue