From 77e4998708a31d38e4d04f185c9fc12e26245d2c Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Sat, 16 Nov 2019 15:24:16 +0100 Subject: move station -> location map to generic helper --- lib/Travelynx.pm | 15 +++++++++++++++ lib/Travelynx/Controller/Traveling.pm | 17 ++++++----------- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm index d2ee821..741af2a 100755 --- a/lib/Travelynx.pm +++ b/lib/Travelynx.pm @@ -168,6 +168,21 @@ sub startup { } ); + $self->attr( + coordinates_by_station => sub { + my %location; + for + my $station ( Travel::Status::DE::IRIS::Stations::get_stations() ) + { + if ( $station->[3] ) { + $location{ $station->[1] } + = [ $station->[4], $station->[3] ]; + } + } + return \%location; + } + ); + $self->helper( sendmail => sub { state $sendmail = Travelynx::Helper::Sendmail->new( diff --git a/lib/Travelynx/Controller/Traveling.pm b/lib/Travelynx/Controller/Traveling.pm index 3c4a8d7..1fb43a2 100755 --- a/lib/Travelynx/Controller/Traveling.pm +++ b/lib/Travelynx/Controller/Traveling.pm @@ -416,13 +416,7 @@ sub history { sub map_history { my ($self) = @_; - my %location; - - for my $station ( Travel::Status::DE::IRIS::Stations::get_stations() ) { - if ( $station->[3] ) { - $location{ $station->[1] } = [ $station->[4], $station->[3] ]; - } - } + my $location = $self->app->coordinates_by_station; # TODO create map-specific get_user_travels function returning EVA/DS100 station codes? my @journeys = $self->get_user_travels; @@ -430,8 +424,8 @@ sub map_history { my @stations = uniq map { $_->{to_name} } @journeys; push( @stations, uniq map { $_->{from_name} } @journeys ); @stations = uniq @stations; - my @station_coordinates - = map { [ $location{$_}, $_ ] } grep { exists $location{$_} } @stations; + my @station_coordinates = map { [ $location->{$_}, $_ ] } + grep { exists $location->{$_} } @stations; my @uniq_by_route = uniq_by { join( '|', map { $_->[0] } @{ $_->{route} } ) @@ -459,10 +453,11 @@ sub map_history { @station_pairs = uniq_by { $_->[0] . '|' . $_->[1] } @station_pairs; @station_pairs - = grep { exists $location{ $_->[0] } and exists $location{ $_->[1] } } + = grep { exists $location->{ $_->[0] } and exists $location->{ $_->[1] } } @station_pairs; @station_pairs - = map { [ $location{ $_->[0] }, $location{ $_->[1] } ] } @station_pairs; + = map { [ $location->{ $_->[0] }, $location->{ $_->[1] } ] } + @station_pairs; my @routes; -- cgit v1.2.3