diff options
Diffstat (limited to 'templates/_public_status_card.html.ep')
-rw-r--r-- | templates/_public_status_card.html.ep | 125 |
1 files changed, 88 insertions, 37 deletions
diff --git a/templates/_public_status_card.html.ep b/templates/_public_status_card.html.ep index 2ff7ac1..b463d15 100644 --- a/templates/_public_status_card.html.ep +++ b/templates/_public_status_card.html.ep @@ -1,36 +1,47 @@ -<div class="autorefresh"> +<div class="autorefresh" data-from-profile="<%= stash('from_profile') ? 1 : 0 %>"> % if ($journey->{checked_in}) { <div class="card"> <div class="card-content"> - <i class="material-icons small right sync-failed-marker grey-text" style="display: none;">sync_problem</i> - <span class="card-title"><%= $name %> ist unterwegs</span> - % if ($public_level & 0x04 and $journey->{comment}) { + <i class="material-icons right sync-failed-marker grey-text" style="display: none;">sync_problem</i> + <span class="card-title"> + % if (stash('from_profile')) { + Unterwegs mit <%= include '_format_train', journey => $journey %> + % } + % elsif (stash('from_timeline')) { + <a href="/p/<%= $name %>"><%= $name %></a>: <%= include '_format_train', journey => $journey %> + % } + % else { + <a href="/p/<%= $name %>"><%= $name %></a> ist unterwegs + % } + <i class="material-icons right"><%= visibility_icon($journey->{effective_visibility_str}) %></i> + % if (not $journey->{extra_data}{rt}) { + <i class="material-icons right grey-text">gps_off</i> + % } + </span> + % if ($privacy->{comments_visible} and $journey->{comment}) { <p>„<%= $journey->{comment} %>“</p> % } <p> - % my $url = 'https://marudor.de/details/' . $journey->{train_type} . ' ' . $journey->{train_no} . '/' . DateTime->now(time_zone => 'Europe/Berlin')->epoch . '000'; - % if ($journey->{train_line}) { - <div class="center-align"><a href="<%= $url %>"><b><%= $journey->{train_type} %> <%= $journey->{train_line} %></b> <%= $journey->{train_no} %></a></div> - % } - % else { - <div class="center-align"><a href="<%= $url %>"><b><%= $journey->{train_type} %> <%= $journey->{train_no} %></b></a></div> + % if (not stash('from_profile') and not stash('from_timeline')) { + <div class="center-align"> + %= include '_format_train', journey => $journey + </div> % } <div class="center-align countdown" data-duration="<%= $journey->{journey_duration} // 0 %>" - data-arrival="<%= $journey->{real_arrival}->epoch %>"> - % if ($journey->{departure_countdown} > 120) { - Abfahrt in <%= sprintf('%.f', $journey->{departure_countdown} / 60) %> Minuten + % if (param('token')) { + data-token="<%= $journey->{dep_eva} %>-<%= $journey->{timestamp}->epoch % 337 %>-<%= $journey->{sched_departure}->epoch %>" % } - % elsif ($journey->{departure_countdown} > 60) { - Abfahrt in einer Minute + data-arrival="<%= $journey->{real_arrival}->epoch %>"> + % if ($journey->{departure_countdown} > 60) { + Abfahrt in <%= journeys->min_to_human(int($journey->{departure_countdown} / 60)) %> % } % elsif ($journey->{departure_countdown} > 0) { Abfahrt in weniger als einer Minute % } % elsif (defined $journey->{arrival_countdown}) { % if ($journey->{arrival_countdown} > 60) { - Ankunft in <%= sprintf('%.f', $journey->{arrival_countdown} / 60) %> - Minute<%= sprintf('%.f', $journey->{arrival_countdown} / 60) == 1 ? '' : 'n' %> + Ankunft in <%= journeys->min_to_human(int($journey->{arrival_countdown} / 60)) %> % } % elsif ($journey->{arrival_countdown} > 0) { Ankunft in weniger als einer Minute @@ -80,19 +91,21 @@ % if ($journey->{arr_name} and $station->[0] eq $journey->{arr_name}) { % last; % } - % if (($station->[1]{rt_arr_countdown} // 0) > 0) { - <%= $station->[0] %><br/><%= $station->[1]{rt_arr}->strftime('%H:%M') %> - % if ($station->[1]{sched_arr}->epoch != $station->[1]{rt_arr}->epoch) { - %= sprintf('(%+d)', ($station->[1]{rt_arr}->epoch - $station->[1]{sched_arr}->epoch ) / 60); + % if (($station->[2]{arr_countdown} // 0) > 0 and $station->[2]{arr}) { + <%= $station->[0] %><br/><%= $station->[2]{arr}->strftime('%H:%M') %> + % if ($station->[2]{arr_delay}) { + %= sprintf('(%+d)', $station->[2]{arr_delay} / 60); % } % last; % } - % if (($station->[1]{rt_dep_countdown} // 0) > 0) { + % if (($station->[2]{dep_countdown} // 0) > 0 and $station->[2]{dep}) { <%= $station->[0] %><br/> - <%= $station->[1]{rt_arr}->strftime('%H:%M') %> → - <%= $station->[1]{rt_dep}->strftime('%H:%M') %> - % if ($station->[1]{sched_dep}->epoch != $station->[1]{rt_dep}->epoch) { - %= sprintf('(%+d)', ($station->[1]{rt_dep}->epoch - $station->[1]{sched_dep}->epoch ) / 60); + % if ($station->[2]{arr}) { + <%= $station->[2]{arr}->strftime('%H:%M') %> → + % } + %= $station->[2]{dep}->strftime('%H:%M') + % if ($station->[2]{dep_delay}) { + %= sprintf('(%+d)', $station->[2]{dep_delay} / 60); % } % last; % } @@ -105,27 +118,34 @@ % if ($journey->{arr_name} and $station->[0] eq $journey->{arr_name}) { % last; % } - % if (($station->[1]{rt_arr_countdown} // 0) > 0) { + % if (($station->[2]{arr_countdown} // 0) > 0 and $station->[2]{arr}) { Nächster Halt:<br/> - <%= $station->[0] %><br/><%= $station->[1]{rt_arr}->strftime('%H:%M') %> - % if ($station->[1]{sched_arr}->epoch != $station->[1]{rt_arr}->epoch) { - %= sprintf('(%+d)', ($station->[1]{rt_arr}->epoch - $station->[1]{sched_arr}->epoch ) / 60); + <%= $station->[0] %><br/><%= $station->[2]{arr}->strftime('%H:%M') %> + % if ($station->[2]{arr_delay}) { + %= sprintf('(%+d)', $station->[2]{arr_delay} / 60); % } % last; % } - % if (($station->[1]{rt_dep_countdown} // 0) > 0) { + % if (($station->[2]{dep_countdown} // 0) > 0 and $station->[2]{arr} and $station->[2]{dep}) { Aktueller Halt:<br/> <%= $station->[0] %><br/> - <%= $station->[1]{rt_arr}->strftime('%H:%M') %> → - <%= $station->[1]{rt_dep}->strftime('%H:%M') %> - % if ($station->[1]{sched_dep}->epoch != $station->[1]{rt_dep}->epoch) { - %= sprintf('(%+d)', ($station->[1]{rt_dep}->epoch - $station->[1]{sched_dep}->epoch ) / 60); + <%= $station->[2]{arr}->strftime('%H:%M') %> → + <%= $station->[2]{dep}->strftime('%H:%M') %> + % if ($station->[2]{dep_delay}) { + %= sprintf('(%+d)', $station->[2]{dep_delay} / 60); % } % last; % } % } </div> </p> + % if ($journey->{extra_data}{cancelled_destination}) { + <p style="margin-bottom: 2ex;"> + <i class="material-icons tiny" aria-hidden="true">error</i> + Der Halt an der Zielstation <b><%= + $journey->{extra_data}{cancelled_destination} %></b> entfällt. + </p> + % } % if (@{$journey->{messages} // []} > 0 and $journey->{messages}[0]) { <p style="margin-bottom: 2ex;"> <ul> @@ -134,19 +154,50 @@ <li> <i class="material-icons tiny">warning</i> <%= $message->[0]->strftime('%H:%M') %>: <%= $message->[1] %></li> % } % } + % for my $message (@{$journey->{extra_data}{qos_msg} // []}) { + <li> <i class="material-icons tiny">info</i> <%= $message->[0]->strftime('%H:%M') %>: <%= $message->[1] %></li> + % } </ul> </p> % } </div> + % if (not stash('from_timeline')) { + <div class="card-action"> + % if ($journey->{traewelling_url}) { + <a style="margin-right: 0;" href="<%= $journey->{traewelling_url} %>"><i class="material-icons left">timeline</i> Träwelling</a> + % } else { + % my $url = 'https://bahn.expert/details/' . $journey->{train_type} . ' ' . $journey->{train_no} . '/' . DateTime->now(time_zone => 'Europe/Berlin')->epoch . '000'; + <a style="margin-right: 0;" href="<%= $url %>"><i class="material-icons left">timeline</i> Zuglauf</a> + % } + % if ($journey->{extra_data}{trip_id}) { + <a class="right" style="margin-right: 0;" href="https://dbf.finalrewind.org/map/<%= $journey->{extra_data}{trip_id} %>/<%= $journey->{train_line} || 0 %>?from=<%= $journey->{dep_name} %>&to=<%= $journey->{arr_name} // '' %>"><i class="material-icons left">map</i> Karte</a> + % } + </div> + % } </div> % } % else { <div class="card"> <div class="card-content"> <i class="material-icons small right sync-failed-marker grey-text" style="display: none;">sync_problem</i> - <span class="card-title"><%= $name %> ist gerade nicht eingecheckt</span> + % if (stash('from_profile')) { + <span class="card-title">Aktuell nicht eingecheckt</span> + % } + % else { + <span class="card-title"><a href="/p/<%= $name %>"><%= $name %></a> ist gerade nicht eingecheckt</span> + % } <p> - Zuletzt gesehen in <%= $journey->{arr_name} %>. + % if ($journey->{arr_name}) { + Zuletzt gesehen + % if ($journey->{real_arrival}->epoch) { + %= $journey->{real_arrival}->strftime('am %d.%m.%Y') + in <b><%= $journey->{arr_name} %></b> + %= $journey->{real_arrival}->strftime('(Ankunft um %H:%M Uhr)') + % } + % else { + in <b><%= $journey->{arr_name} %></b> + % } + % } </p> </div> </div> |