Unverified Commit d896bdcd authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

annotate cancelled and unlikely / infeasible connections

parent 99852d76
Loading
Loading
Loading
Loading
+47 −8
Original line number Diff line number Diff line
@@ -35,6 +35,18 @@ for my $arg (@ARGV) {
my $output_bold  = -t STDOUT ? "\033[1m" : q{};
my $output_reset = -t STDOUT ? "\033[0m" : q{};

my $output_fyi      = -t STDOUT ? "\033[40;36m" : q{};
my $output_unknown  = -t STDOUT ? "\033[40;35m" : q{};
my $output_good     = -t STDOUT ? "\033[40;32m" : q{};
my $output_warning  = -t STDOUT ? "\033[40;33m" : q{};
my $output_critical = -t STDOUT ? "\033[40;31m" : q{};

my $output_bold_fyi      = -t STDOUT ? "\033[1;40;36m" : q{};
my $output_bold_unknown  = -t STDOUT ? "\033[1;40;35m" : q{};
my $output_bold_good     = -t STDOUT ? "\033[1;40;32m" : q{};
my $output_bold_warning  = -t STDOUT ? "\033[1;40;33m" : q{};
my $output_bold_critical = -t STDOUT ? "\033[1;40;31m" : q{};

GetOptions(
	'd|date=s'             => \$date,
	'h|help'               => sub { show_help(0) },
@@ -276,6 +288,27 @@ if ($json_output) {
for my $connection ( $ris->connections ) {

	my $header = q{};
	my $format = $output_bold;

	if ( $connection->is_unlikely ) {
		if ( $connection->feasibility >= 4 ) {
			$header .= "  ${output_critical}XX${output_reset}";
			$format = $output_bold_critical;
		}
		else {
			$header .= "  ${output_warning}X?${output_reset}";
			$format = $output_bold_warning;
		}
	}
	if ( $connection->is_cancelled ) {
		$format = $output_bold_critical;
	}

	if ( defined $passengers and defined $connection->price ) {
		$header .= sprintf( '  %.2f %s', $connection->price,
			$connection->price_unit );
	}

	for my $segment ( $connection->segments ) {
		if ( $segment->train_short ) {
			$header .= sprintf( '  %s', $segment->train_short );
@@ -307,15 +340,19 @@ for my $connection ( $ris->connections ) {

	say q{};
	printf(
		"%s  (%02d:%02d)  %s  %s%s%s\n\n",
		$connection->dep ? $connection->dep->strftime('%d.%m. %H:%M')
		: q{??.??. ??:??},
		"%s %s%s%s  (%02d:%02d)  %s%s%s  %s%s\n",
		$connection->dep ? $connection->dep->strftime('%d.%m.')
		: q{??.??.},
		$format,
		$connection->dep ? $connection->dep->strftime('%H:%M')
		: q{??:??},
		$output_reset,
		$connection->duration->in_units( 'hours', 'minutes' ),
		$format,
		$connection->arr ? $connection->arr->strftime('%H:%M') : q{??:??},
		format_occupancy($connection),
		( defined $passengers and defined $connection->price )
		? sprintf( '  %.2f %s', $connection->price, $connection->price_unit )
		: q{},
		$output_reset,
		$connection->is_cancelled ? "${output_critical}XX${output_reset}"
		: format_occupancy($connection),
		$header,
	);

@@ -389,8 +426,10 @@ for my $connection ( $ris->connections ) {
		}

		printf(
			"%s%s  an  %s%s\n",
			"%s%s%s%s  an  %s%s\n",
			$segment->is_unlikely ? $output_critical : q{},
			$segment->arr->strftime('%H:%M'),
			$segment->is_unlikely ? $output_reset : q{},
			$max_delay_digits
			? q{ } . format_delay( $segment->arr_delay, $max_delay_digits )
			: q{},
+9 −6
Original line number Diff line number Diff line
@@ -13,7 +13,7 @@ use Travel::Routing::DE::DBRIS::Connection::Segment;
our $VERSION = '0.02';

Travel::Routing::DE::DBRIS::Connection->mk_ro_accessors(
	qw(changes
	qw(changes feasibility is_cancelled is_unscheduled is_unlikely
	  duration sched_duration rt_duration
	  sched_dep rt_dep dep
	  sched_arr rt_arr arr
@@ -31,6 +31,9 @@ sub new {

	my $ref = {
		changes     => $json->{umstiegsAnzahl},
		feasibility => $json->{ereignisZusammenfassung}{anschlussBewertungCode}
		  // -1,
		is_unscheduled => $json->{isAlternativeVerbindung},
		id             => $json->{tripId},
		price          => $json->{angebotsPreis}{betrag},
		price_unit     => $json->{angebotsPreis}{waehrung},
+5 −1
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@ Travel::Routing::DE::DBRIS::Connection::Segment->mk_ro_accessors(
	  sched_dep rt_dep dep dep_platform
	  sched_arr rt_arr arr arr_platform
	  sched_duration rt_duration duration duration_percent
	  arr_delay dep_delay delay
	  arr_delay dep_delay delay feasibility is_unlikely
	  journey_id
	  occupancy occupancy_first occupancy_second
	  is_transfer is_walk walk_name distance_m
@@ -42,6 +42,7 @@ sub new {
		train_long  => $json->{verkehrsmittel}{langText},
		direction   => $json->{verkehrsmittel}{richtung},
		distance_m  => $json->{distanz},
		feasibility => $json->{anschlussBewertungCode},
	};

	if ( my $ts = $json->{abfahrtsZeitpunkt} ) {
@@ -134,6 +135,9 @@ sub new {

	for my $message ( @{ $json->{risNotizen} // [] } ) {
		push( @{ $ref->{messages_ris} }, $message );
		if ( $message->{key} eq 'text.realtime.journey.missed.connection' ) {
			$ref->{is_unlikely} = 1;
		}
	}

	for my $message ( @{ $json->{priorisierteMeldungen} // [] } ) {