Loading lib/Travelynx.pm +46 −3 Original line number Diff line number Diff line Loading @@ -43,16 +43,25 @@ sub epoch_to_dt { } sub get_station { my ($station_name) = @_; my ( $station_name, $exact_match ) = @_; my @candidates = Travel::Status::DE::IRIS::Stations::get_station($station_name); if ( @candidates == 1 ) { if ( not $exact_match ) { return $candidates[0]; } if ( $candidates[0][0] eq $station_name or $candidates[0][1] eq $station_name or $candidates[0][2] eq $station_name ) { return $candidates[0]; } return undef; } return undef; } sub startup { my ($self) = @_; Loading Loading @@ -187,10 +196,12 @@ sub startup { return { sched_departure => 0x0001, real_departure => 0x0002, from_station => 0x0004, route => 0x0010, is_cancelled => 0x0020, sched_arrival => 0x0100, real_arrival => 0x0200, to_station => 0x0400, }; } ); Loading Loading @@ -912,7 +923,39 @@ sub startup { ); eval { if ( $key eq 'sched_departure' ) { if ( $key eq 'from_name' ) { my $from_station = get_station( $value, 1 ); if ( not $from_station ) { die("Unbekannter Startbahnhof\n"); } $rows = $db->update( 'journeys', { checkin_station_id => $from_station->[2], edited => $journey->{edited} | 0x0004, }, { id => $journey_id, } )->rows; } elsif ( $key eq 'to_name' ) { my $to_station = get_station( $value, 1 ); if ( not $to_station ) { die("Unbekannter Zielbahnhof\n"); } $rows = $db->update( 'journeys', { checkout_station_id => $to_station->[2], edited => $journey->{edited} | 0x0400, }, { id => $journey_id, } )->rows; } elsif ( $key eq 'sched_departure' ) { $rows = $db->update( 'journeys', { Loading lib/Travelynx/Controller/Traveling.pm +18 −4 Original line number Diff line number Diff line Loading @@ -894,6 +894,17 @@ sub edit_journey { } } } for my $key (qw(from_name to_name)) { if ( defined $self->param($key) and $self->param($key) ne $journey->{$key} ) { $error = $self->update_journey_part( $db, $journey->{id}, $key, $self->param($key) ); if ($error) { last; } } } for my $key (qw(comment)) { if ( defined $self->param($key) Loading @@ -919,7 +930,7 @@ sub edit_journey { } } { my $cancelled_old = $journey->{cancelled}; my $cancelled_old = $journey->{cancelled} // 0; my $cancelled_new = $self->param('cancelled') // 0; if ( $cancelled_old != $cancelled_new ) { $error Loading Loading @@ -955,7 +966,9 @@ sub edit_journey { $self->param( route => join( "\n", map { $_->[0] } @{ $journey->{route} } ) ); $self->param( cancelled => $journey->{cancelled} ); $self->param( cancelled => $journey->{cancelled} ? 1 : 0 ); $self->param( from_name => $journey->{from_name} ); $self->param( to_name => $journey->{to_name} ); for my $key (qw(comment)) { if ( $journey->{user_data} and $journey->{user_data}{$key} ) { Loading @@ -965,6 +978,7 @@ sub edit_journey { $self->render( 'edit_journey', with_autocomplete => 1, error => $error, journey => $journey ); Loading templates/edit_journey.html.ep +18 −6 Original line number Diff line number Diff line Loading @@ -60,39 +60,51 @@ </label> </td> </tr> <tr> <th scope="row">Start:</th> <td class="input-field"> %= text_field 'from_name', id => 'from_name', class => 'autocomplete validate', required => undef </td> </tr> <tr> <th scope="row">Geplante Abfahrt</th> <td> <td class="input-field"> %= text_field 'sched_departure', id => 'sched_departure', class => 'validate', required => undef, pattern => '[0-9][0-9]?[.][0-9][0-9]?[.][0-9][0-9][0-9][0-9] +[0-9][0-9]:[0-9][0-9]' </td> </tr> <tr> <th scope="row">Tatsächliche Abfahrt</th> <td> <td class="input-field"> %= text_field 'rt_departure', id => 'real_departure', class => 'validate', pattern => '[0-9][0-9]?[.][0-9][0-9]?[.][0-9][0-9][0-9][0-9] +[0-9][0-9]:[0-9][0-9]' </td> </tr> <tr> <th scope="row">Ziel:</th> <td class="input-field"> %= text_field 'to_name', id => 'to_name', class => 'autocomplete validate', required => undef </td> </tr> <tr> <th scope="row">Geplante Ankunft</th> <td> <td class="input-field"> %= text_field 'sched_arrival', id => 'sched_arrival', class => 'validate', required => undef, pattern => '[0-9][0-9]?[.][0-9][0-9]?[.][0-9][0-9][0-9][0-9] +[0-9][0-9]:[0-9][0-9]' </td> </tr> <tr> <th scope="row">Tatsächliche Ankunft</th> <td> <td class="input-field"> %= text_field 'rt_arrival', id => 'real_arrival', class => 'validate', pattern => '[0-9][0-9]?[.][0-9][0-9]?[.][0-9][0-9][0-9][0-9] +[0-9][0-9]:[0-9][0-9]' </td> </tr> <tr> <th scope="row">Route</th> <td> <td class="input-field"> %= text_area 'route', id => 'route', class => 'materialize-textarea' </td> </tr> <tr> <th scope="row">Kommentar</th> <td> <td class="input-field"> %= text_field 'comment' </td> </tr> Loading templates/journey.html.ep +6 −0 Original line number Diff line number Diff line Loading @@ -25,8 +25,14 @@ % } von <b><%= $journey->{from_name} %></b> % if ($journey->{edited} & 0x0004) { ∗ % } nach <b><%= $journey->{to_name} %></b> % if ($journey->{edited} & 0x0400) { ∗ % } am <b><%= $journey->{sched_departure}->strftime('%d.%m.%Y') %></b> </p> Loading Loading
lib/Travelynx.pm +46 −3 Original line number Diff line number Diff line Loading @@ -43,16 +43,25 @@ sub epoch_to_dt { } sub get_station { my ($station_name) = @_; my ( $station_name, $exact_match ) = @_; my @candidates = Travel::Status::DE::IRIS::Stations::get_station($station_name); if ( @candidates == 1 ) { if ( not $exact_match ) { return $candidates[0]; } if ( $candidates[0][0] eq $station_name or $candidates[0][1] eq $station_name or $candidates[0][2] eq $station_name ) { return $candidates[0]; } return undef; } return undef; } sub startup { my ($self) = @_; Loading Loading @@ -187,10 +196,12 @@ sub startup { return { sched_departure => 0x0001, real_departure => 0x0002, from_station => 0x0004, route => 0x0010, is_cancelled => 0x0020, sched_arrival => 0x0100, real_arrival => 0x0200, to_station => 0x0400, }; } ); Loading Loading @@ -912,7 +923,39 @@ sub startup { ); eval { if ( $key eq 'sched_departure' ) { if ( $key eq 'from_name' ) { my $from_station = get_station( $value, 1 ); if ( not $from_station ) { die("Unbekannter Startbahnhof\n"); } $rows = $db->update( 'journeys', { checkin_station_id => $from_station->[2], edited => $journey->{edited} | 0x0004, }, { id => $journey_id, } )->rows; } elsif ( $key eq 'to_name' ) { my $to_station = get_station( $value, 1 ); if ( not $to_station ) { die("Unbekannter Zielbahnhof\n"); } $rows = $db->update( 'journeys', { checkout_station_id => $to_station->[2], edited => $journey->{edited} | 0x0400, }, { id => $journey_id, } )->rows; } elsif ( $key eq 'sched_departure' ) { $rows = $db->update( 'journeys', { Loading
lib/Travelynx/Controller/Traveling.pm +18 −4 Original line number Diff line number Diff line Loading @@ -894,6 +894,17 @@ sub edit_journey { } } } for my $key (qw(from_name to_name)) { if ( defined $self->param($key) and $self->param($key) ne $journey->{$key} ) { $error = $self->update_journey_part( $db, $journey->{id}, $key, $self->param($key) ); if ($error) { last; } } } for my $key (qw(comment)) { if ( defined $self->param($key) Loading @@ -919,7 +930,7 @@ sub edit_journey { } } { my $cancelled_old = $journey->{cancelled}; my $cancelled_old = $journey->{cancelled} // 0; my $cancelled_new = $self->param('cancelled') // 0; if ( $cancelled_old != $cancelled_new ) { $error Loading Loading @@ -955,7 +966,9 @@ sub edit_journey { $self->param( route => join( "\n", map { $_->[0] } @{ $journey->{route} } ) ); $self->param( cancelled => $journey->{cancelled} ); $self->param( cancelled => $journey->{cancelled} ? 1 : 0 ); $self->param( from_name => $journey->{from_name} ); $self->param( to_name => $journey->{to_name} ); for my $key (qw(comment)) { if ( $journey->{user_data} and $journey->{user_data}{$key} ) { Loading @@ -965,6 +978,7 @@ sub edit_journey { $self->render( 'edit_journey', with_autocomplete => 1, error => $error, journey => $journey ); Loading
templates/edit_journey.html.ep +18 −6 Original line number Diff line number Diff line Loading @@ -60,39 +60,51 @@ </label> </td> </tr> <tr> <th scope="row">Start:</th> <td class="input-field"> %= text_field 'from_name', id => 'from_name', class => 'autocomplete validate', required => undef </td> </tr> <tr> <th scope="row">Geplante Abfahrt</th> <td> <td class="input-field"> %= text_field 'sched_departure', id => 'sched_departure', class => 'validate', required => undef, pattern => '[0-9][0-9]?[.][0-9][0-9]?[.][0-9][0-9][0-9][0-9] +[0-9][0-9]:[0-9][0-9]' </td> </tr> <tr> <th scope="row">Tatsächliche Abfahrt</th> <td> <td class="input-field"> %= text_field 'rt_departure', id => 'real_departure', class => 'validate', pattern => '[0-9][0-9]?[.][0-9][0-9]?[.][0-9][0-9][0-9][0-9] +[0-9][0-9]:[0-9][0-9]' </td> </tr> <tr> <th scope="row">Ziel:</th> <td class="input-field"> %= text_field 'to_name', id => 'to_name', class => 'autocomplete validate', required => undef </td> </tr> <tr> <th scope="row">Geplante Ankunft</th> <td> <td class="input-field"> %= text_field 'sched_arrival', id => 'sched_arrival', class => 'validate', required => undef, pattern => '[0-9][0-9]?[.][0-9][0-9]?[.][0-9][0-9][0-9][0-9] +[0-9][0-9]:[0-9][0-9]' </td> </tr> <tr> <th scope="row">Tatsächliche Ankunft</th> <td> <td class="input-field"> %= text_field 'rt_arrival', id => 'real_arrival', class => 'validate', pattern => '[0-9][0-9]?[.][0-9][0-9]?[.][0-9][0-9][0-9][0-9] +[0-9][0-9]:[0-9][0-9]' </td> </tr> <tr> <th scope="row">Route</th> <td> <td class="input-field"> %= text_area 'route', id => 'route', class => 'materialize-textarea' </td> </tr> <tr> <th scope="row">Kommentar</th> <td> <td class="input-field"> %= text_field 'comment' </td> </tr> Loading
templates/journey.html.ep +6 −0 Original line number Diff line number Diff line Loading @@ -25,8 +25,14 @@ % } von <b><%= $journey->{from_name} %></b> % if ($journey->{edited} & 0x0004) { ∗ % } nach <b><%= $journey->{to_name} %></b> % if ($journey->{edited} & 0x0400) { ∗ % } am <b><%= $journey->{sched_departure}->strftime('%d.%m.%Y') %></b> </p> Loading