summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/DBInfoscreen/Controller/Stationboard.pm35
-rw-r--r--templates/_train_details.html.ep2
-rw-r--r--templates/wagenreihung.html.ep14
3 files changed, 39 insertions, 12 deletions
diff --git a/lib/DBInfoscreen/Controller/Stationboard.pm b/lib/DBInfoscreen/Controller/Stationboard.pm
index 1935c25..79538a0 100644
--- a/lib/DBInfoscreen/Controller/Stationboard.pm
+++ b/lib/DBInfoscreen/Controller/Stationboard.pm
@@ -102,6 +102,29 @@ sub log_api_access {
return;
}
+sub check_wagonorder {
+ my ( $ua, $cache, $train, $wr_link ) = @_;
+
+ my $url
+ = "https://lib.finalrewind.org/dbdb/has_wagonorder/${train}/${wr_link}";
+
+ if ( my $content = $cache->get($url) ) {
+ return $content eq 'y' ? 1 : undef;
+ }
+
+ $ua->request_timeout(2);
+ my $res = $ua->head($url)->result;
+
+ if ( $res->is_error ) {
+ $cache->set( $url, 'n' );
+ return;
+ }
+ else {
+ $cache->set( $url, 'y' );
+ return 1;
+ }
+}
+
sub hafas_json_req {
my ( $ua, $cache, $url ) = @_;
@@ -946,6 +969,18 @@ sub handle_request {
[ $result->sched_route_post ]
)
];
+
+ if (
+ $departures[-1]{wr_link}
+ and not check_wagonorder(
+ $self->ua, $self->app->cache_iris_main,
+ $result->train_no, $departures[-1]{wr_link}
+ )
+ )
+ {
+ $departures[-1]{wr_link} = undef;
+ }
+
my ( $route_ts, $route_info ) = get_route_timestamps(
$self->ua,
$self->app->cache_iris_main,
diff --git a/templates/_train_details.html.ep b/templates/_train_details.html.ep
index 5bff90f..44cf01d 100644
--- a/templates/_train_details.html.ep
+++ b/templates/_train_details.html.ep
@@ -73,7 +73,7 @@
% }
% }
</div> <!-- timeinfo -->
-% if (($linetype eq 'fern' or $linetype eq 'ext') and $departure->{wr_link}) {
+% if ($departure->{wr_link}) {
<div class="verbose">
<a href="/_wr/<%= $departure->{train_no} %>/<%= $departure->{wr_link} %>">Wagenreihung</a>
</div>
diff --git a/templates/wagenreihung.html.ep b/templates/wagenreihung.html.ep
index ce028d3..fd20196 100644
--- a/templates/wagenreihung.html.ep
+++ b/templates/wagenreihung.html.ep
@@ -14,19 +14,11 @@
%= join( ' / ', map { $_->{name} } $wr->destinations )
</div>
<%= $wr->station_name %> Gleis <%= $wr->platform %><br/>
- Zugtyp: <%= $wr->train_subtype // 'IC?' %>
+ % if ($wr->train_type =~ m{^IC|EC}) {
+ Zugtyp: <%= $wr->train_subtype // 'IC?' %>
+ % }
</div>
</div>
-% if ($wr->train_type ne 'ICE') {
- <div class="container">
- <div class="warning">
- <strong>⚠ Keine zuverlässigen Daten vorhanden.</strong>
- IC/EC-Wagenreihungen werden vom Backend noch nicht offiziell unterstützt.
- Sowohl die hier angegebenen Daten als auch die am Bahnsteig angezeigte
- Wagenreihung können fehlerhaft sein.
- </div>
- </div>
-% }
<div class="container">
<div style="position: relative; width: 100%; height: 70ex;">
% if (not $wr->has_bad_wagons) {