Commit 67ac0624 authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

only compute train details when needed by frontend

parent 3feabf25
Loading
Loading
Loading
Loading
+47 −24
Original line number Diff line number Diff line
@@ -25,6 +25,26 @@ my %default = (
	admode  => 'deparr',
);

sub result_is_train {
	my ( $result, $train ) = @_;

	if ( $result->can('train_id') ) {

		# IRIS
		if ( $train eq $result->type . ' ' . $result->train_no ) {
			return 1;
		}
		return 0;
	}
	else {
		# HAFAS
		if ( $train eq $result->type . ' ' . $result->train ) {
			return 1;
		}
		return 0;
	}
}

sub result_has_line {
	my ( $result, @lines ) = @_;
	my $line = $result->line;
@@ -332,6 +352,10 @@ sub handle_request {
		}
	}

	if ( my $train = $self->param('train') ) {
		@results = grep { result_is_train( $_, $train ) } @results;
	}

	if (@lines) {
		@results = grep { result_has_line( $_, @lines ) } @results;
	}
@@ -667,21 +691,6 @@ sub handle_request {
					train_line             => $result->line_no,
					train_no               => $result->train_no,
					via                    => [ $result->route_interesting(3) ],
					scheduled_route => [ $result->sched_route ],
					route_pre       => [ $result->route_pre ],
					route_pre_diff  => [
						$self->json_route_diff(
							[ $result->route_pre ],
							[ $result->sched_route_pre ]
						)
					],
					route_post      => [ $result->route_post ],
					route_post_diff => [
						$self->json_route_diff(
							[ $result->route_post ],
							[ $result->sched_route_post ]
						)
					],
					destination            => $result->destination,
					origin                 => $result->origin,
					platform               => $result->platform,
@@ -717,6 +726,23 @@ sub handle_request {
					: undef,
				}
			);
			if ( $self->param('train') ) {
				$departures[-1]{scheduled_route} = [ $result->sched_route ];
				$departures[-1]{route_pre}       = [ $result->route_pre ];
				$departures[-1]{route_pre_diff}  = [
					$self->json_route_diff(
						[ $result->route_pre ],
						[ $result->sched_route_pre ]
					)
				];
				$departures[-1]{route_post}      = [ $result->route_post ];
				$departures[-1]{route_post_diff} = [
					$self->json_route_diff(
						[ $result->route_post ],
						[ $result->sched_route_post ]
					)
				];
			}
		}
		else {
			push(
@@ -787,10 +813,7 @@ sub handle_request {
	elsif ( my $train = $self->param('train') ) {
		delete $self->stash->{layout};

		my ($departure) = grep {
			$train eq ( $_->{train_type} // '' ) . ' '
			  . ( $_->{train_no} // $_->{train} // '' )
		} @departures;
		my ($departure) = @departures;

		if ($departure) {