Commit 531f3b0a authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

show cancelled trains in history

parent 01df965d
Loading
Loading
Loading
Loading
+27 −6
Original line number Diff line number Diff line
@@ -808,6 +808,11 @@ helper 'get_user_travels' => sub {
	else {
		$query->execute($uid);
	}
	my @match_actions = ( $action_type{checkout}, $action_type{checkin} );
	if ( $opt{cancelled} ) {
		@match_actions
		  = ( $action_type{cancelled_to}, $action_type{cancelled_from} );
	}

	my @travels;
	my $prev_action = 0;
@@ -823,7 +828,9 @@ helper 'get_user_travels' => sub {
		$raw_route    = decode( 'UTF-8', $raw_route );
		$raw_messages = decode( 'UTF-8', $raw_messages );

		if ( $action == $action_type{checkout} ) {
		if ( $action == $match_actions[0]
			or ( $opt{checkout_epoch} and $raw_ts == $opt{checkout_epoch} ) )
		{
			push(
				@travels,
				{
@@ -843,8 +850,13 @@ helper 'get_user_travels' => sub {
				}
			);
		}
		elsif ( $action == $action_type{checkin}
			and $prev_action == $action_type{checkout} )
		elsif (
			(
				    $action == $match_actions[1]
				and $prev_action == $match_actions[0]
			)
			or ( $opt{checkin_epoch} and $raw_ts == $opt{checkin_epoch} )
		  )
		{
			my $ref = $travels[-1];
			$ref->{from_name}       = $name;
@@ -866,6 +878,11 @@ helper 'get_user_travels' => sub {
				}
				$ref->{messages} = [ reverse @parsed_messages ];
			}
			if (    $opt{checkin_epoch}
				and $action == $action_type{cancelled_from} )
			{
				$ref->{cancelled} = 1;
			}
		}
		$prev_action = $action;
	}
@@ -1442,17 +1459,21 @@ get '/account' => sub {

get '/history' => sub {
	my ($self) = @_;
	my $cancelled = $self->param('cancelled') ? 1 : 0;

	$self->respond_to(
		json => { json     => [ $self->get_user_travels ] },
		json =>
		  { json => [ $self->get_user_travels( cancelled => $cancelled ) ] },
		any => { template => 'history' }
	);
};

get '/history.json' => sub {
	my ($self) = @_;
	my $cancelled = $self->param('cancelled') ? 1 : 0;

	$self->render( json => [ $self->get_user_travels ] );
	$self->render(
		json => [ $self->get_user_travels( cancelled => $cancelled ) ] );
};

get '/journey/:id' => sub {
+35 −10
Original line number Diff line number Diff line
% if (param('cancelled')) {
<h1>Ausgefallene Fahrten</h1>
<div class="row">
	<div class="col s12">
		<ul>
			<li><a href="/history.json?cancelled=1">JSON-Export</a> (Das Datenlayout ist noch nicht final)</li>
			<li><a href="/history">Reguläre Zugfahrten</a></li>
		</ul>
	</div>
</div>
% }
% else {
<h1>Bisherige Fahrten</h1>
<div class="row">
	<div class="col s12">
		<ul>
			<li><a href="/history.json">JSON-Export</a> (Das Datenlayout ist noch nicht final)</li>
			<li><a href="/history?cancelled=1">Ausgefallene Züge</a></li>
		</ul>
	</div>
</div>
% }
<div class="row">
	<div class="col s12">
		<table class="striped">
@@ -19,19 +33,29 @@
				</tr>
			</thead>
			<tbody>
				% for my $travel (get_user_travels()) {
				% for my $travel (get_user_travels(cancelled => (param('cancelled') ? 1 : 0))) {
					% if ($travel->{completed}) {
						% my $detail_link = '/journey/' . current_user()->{id} . '-' . $travel->{checkin}->epoch . '-' . $travel->{checkout}->epoch;
						<tr>
							<td><%= $travel->{sched_departure}->strftime('%d.%m.%Y') %></td>
							<td><a href="<%= $detail_link %>"><%= $travel->{type} %> <%= $travel->{line} // '' %> <%= $travel->{no} %></a></td>
							<td><a href="<%= $detail_link %>"><%= $travel->{from_name} %> → <%= $travel->{to_name} %></a></td>
							<td><%= $travel->{rt_departure}->strftime('%H:%M') %>
							<td>
							% if (param('cancelled')) {
								%= $travel->{sched_departure}->strftime('%H:%M')
							% }
							% else {
								<%= $travel->{rt_departure}->strftime('%H:%M') %>
								% if ($travel->{sched_departure} != $travel->{rt_departure}) {
									(+<%= ($travel->{rt_departure}->epoch - $travel->{sched_departure}->epoch) / 60 %>)
								% }
							% }
							</td>
							<td>
							% if (param('cancelled') and $travel->{sched_arrival}->epoch != 0) {
								%= $travel->{sched_arrival}->strftime('%H:%M')
							% }
							% else {
								% if ($travel->{rt_arrival}->epoch == 0 and $travel->{sched_arrival}->epoch == 0) {
									<i class="material-icons">timer_off</i>
								% } else {
@@ -40,6 +64,7 @@
										(+<%= ($travel->{rt_arrival}->epoch - $travel->{sched_arrival}->epoch) / 60 %>)
									% }
								% }
							% }
							</td>
						</tr>
					% }
+18 −3
Original line number Diff line number Diff line
@@ -14,7 +14,12 @@
	<div class="row">
		<div class="col s12">
			<p>
				% if ($journey->{cancelled}) {
					Ausgefallene Fahrt von
				% }
				% else {
					Fahrt von
				% }
				<b><%= $journey->{from_name} %></b>
				nach
				<b><%= $journey->{to_name} %></b>
@@ -34,7 +39,11 @@
				<tr>
					<th scope="row">Abfahrt</th>
					<td>
						% if ($journey->{rt_departure} != $journey->{sched_departure}) {
						% if ($journey->{cancelled}) {
							<i class="material-icons">cancel</i>
							(Plan: <%= $journey->{sched_departure}->strftime('%H:%M'); %>)
						% }
						% elsif ($journey->{rt_departure} != $journey->{sched_departure}) {
							%= $journey->{rt_departure}->strftime('%H:%M');
							(+<%= ($journey->{rt_departure}->epoch - $journey->{sched_departure}->epoch) / 60 %>,
							Plan: <%= $journey->{sched_departure}->strftime('%H:%M'); %>)
@@ -47,7 +56,13 @@
				<tr>
					<th scope="row">Ankunft</th>
					<td>
						% if ($journey->{rt_arrival}->epoch == 0 and $journey->{sched_arrival}->epoch == 0) {
						% if ($journey->{cancelled}) {
							<i class="material-icons">cancel</i>
							% if ($journey->{sched_arrival}->epoch != 0) {
								(Plan: <%= $journey->{sched_arrival}->strftime('%H:%M'); %>)
							% }
						% }
						% elsif ($journey->{rt_arrival}->epoch == 0 and $journey->{sched_arrival}->epoch == 0) {
							<i class="material-icons">timer_off</i>
						% }
						% elsif ($journey->{rt_arrival} != $journey->{sched_arrival}) {