Commit ae9051b8 authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

color additional/cancelled stops green/red in IRIS+clean detail view

parent 9b6efdb7
Loading
Loading
Loading
Loading
+75 −60
Original line number Diff line number Diff line
@@ -74,6 +74,67 @@ helper 'is_important' => sub {
	return;
};

helper 'json_route_diff' => sub {
	my ( $self, $route, $sched_route ) = @_;
	my @json_route;
	my @route       = @{$route};
	my @sched_route = @{$sched_route};

	my $route_idx = 0;
	my $sched_idx = 0;

	while ( $route_idx <= $#route and $sched_idx <= $#sched_route ) {
		if ( $route[$route_idx] eq $sched_route[$sched_idx] ) {
			push( @json_route, { name => $route[$route_idx] } );
			$route_idx++;
			$sched_idx++;
		}

		# this branch is inefficient, but won't be taken frequently
		elsif ( not( $route[$route_idx] ~~ \@sched_route ) ) {
			push(
				@json_route,
				{
					name         => $route[$route_idx],
					isAdditional => 1
				}
			);
			$route_idx++;
		}
		else {
			push(
				@json_route,
				{
					name        => $sched_route[$sched_idx],
					isCancelled => 1
				}
			);
			$sched_idx++;
		}
	}
	while ( $route_idx++ < $#route ) {
		push(
			@json_route,
			{
				name         => $route[ $route_idx++ ],
				isAdditional => 1,
				isCancelled  => 0
			}
		);
	}
	while ( $sched_idx++ < $#sched_route ) {
		push(
			@json_route,
			{
				name         => $route[ $route_idx++ ],
				isAdditional => 0,
				isCancelled  => 1
			}
		);
	}
	return @json_route;
};

sub handle_request {
	my $self    = shift;
	my $station = $self->stash('station');
@@ -374,60 +435,8 @@ sub handle_request {
		}

		if ( $template eq 'marudor' ) {
			my ( $route_idx, $sched_idx ) = ( 0, 0 );
			my @json_route;
			my @route       = $result->route;
			my @sched_route = $result->sched_route;

			while ( $route_idx <= $#route and $sched_idx <= $#sched_route ) {
				if ( $route[$route_idx] eq $sched_route[$sched_idx] ) {
					push( @json_route, { name => $route[$route_idx] } );
					$route_idx++;
					$sched_idx++;
				}

				# this branch is inefficient, but won't be taken frequently
				elsif ( not( $route[$route_idx] ~~ \@sched_route ) ) {
					push(
						@json_route,
						{
							name         => $route[$route_idx],
							isAdditional => 1
						}
					);
					$route_idx++;
				}
				else {
					push(
						@json_route,
						{
							name        => $sched_route[$sched_idx],
							isCancelled => 1
						}
					);
					$sched_idx++;
				}
			}
			while ( $route_idx++ < $#route ) {
				push(
					@json_route,
					{
						name         => $route[ $route_idx++ ],
						isAdditional => 1,
						isCancelled  => 0
					}
				);
			}
			while ( $sched_idx++ < $#sched_route ) {
				push(
					@json_route,
					{
						name         => $route[ $route_idx++ ],
						isAdditional => 0,
						isCancelled  => 1
					}
				);
			}
			my @json_route = $self->json_route_diff( [ $result->route ],
				[ $result->sched_route ] );

			push(
				@departures,
@@ -480,6 +489,12 @@ sub handle_request {
					via             => [ $result->route_interesting(3) ],
					scheduled_route => [ $result->sched_route ],
					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     => $platform,
+8 −0
Original line number Diff line number Diff line
@@ -163,6 +163,14 @@ div.displayclean li .moreinfo .mroute .generic-stop {
	color: #555555;
}

div.displayclean li .moreinfo .mroute .additional-stop {
	color: #009900;
}

div.displayclean li .moreinfo .mroute .cancelled-stop {
	color: #cc0000;
}

div.displayclean li .dest {
	color:#000000;
	/*font-weight:bold;*/
+11 −5
Original line number Diff line number Diff line
@@ -90,19 +90,25 @@
%     }
      </div> <!-- timeinfo -->
%   }
%   if ($departure->{route_post} and @{$departure->{route_post}}) {
%   if ($departure->{route_post_diff} and @{$departure->{route_post_diff}}) {
      <div class="mroute">
      Über:
%       my $first = 0;
%       for my $stop (@{$departure->{route_post} // q{???}}) {
%       for my $stop (@{$departure->{route_post_diff} // q{???}}) {
%         if ($first++) {
            <span class="separator">–</span>
%         }
%         if ($self->is_important($stop)) {
            <span class="important-stop"><%= $stop %></span>
%         if ($stop->{isAdditional}) {
            <span class="additional-stop"><%= $stop->{name} %></span>
%         }
%         elsif ($stop->{isCancelled}) {
            <span class="cancelled-stop"><%= $stop->{name} %></span>
%         }
%         elsif ($self->is_important($stop->{name})) {
            <span class="important-stop"><%= $stop->{name} %></span>
%         }
%         else {
            <span class="generic-stop"><%= $stop %></span>
            <span class="generic-stop"><%= $stop->{name} %></span>
%         }
%       }
      </div> <!-- mroute -->