diff options
| -rw-r--r-- | index.pl | 38 | ||||
| -rw-r--r-- | public/default.css | 10 | ||||
| -rw-r--r-- | templates/clean.html.ep | 13 | ||||
| -rw-r--r-- | templates/layouts/default.html.ep | 8 | 
4 files changed, 63 insertions, 6 deletions
| @@ -68,11 +68,12 @@ sub handle_request {  	my @platforms = split( /,/, $self->param('platforms') // q{} );  	my @lines     = split( /,/, $self->param('lines')     // q{} ); -	my $template       = $self->param('mode')         // 'multi'; -	my $hide_low_delay = $self->param('hidelowdelay') // 0; -	my $hide_opts      = $self->param('hide_opts')    // 0; -	my $backend        = $self->param('backend')      // 'ris'; -	my $admode         = $self->param('admode')       // 'deparr'; +	my $template       = $self->param('mode')          // 'multi'; +	my $hide_low_delay = $self->param('hidelowdelay')  // 0; +	my $hide_opts      = $self->param('hide_opts')     // 0; +	my $show_realtime  = $self->param('show_realtime') // 0; +	my $backend        = $self->param('backend')       // 'ris'; +	my $admode         = $self->param('admode')        // 'deparr';  	my $callback       = $self->param('callback');  	my $api_version @@ -173,6 +174,21 @@ sub handle_request {  		@results = sort { $a->platform <=> $b->platform } @results;  	} +	if ( $backend eq 'iris' and $show_realtime ) { +		if ( $admode eq 'arr' ) { +			@results = sort { +				( $a->arrival // $a->departure ) +				  <=> ( $b->arrival // $b->depearture ) +			} @results; +		} +		else { +			@results = sort { +				( $a->departure // $a->arrival ) +				  <=> ( $b->departure // $b->arrival ) +			} @results; +		} +	} +  	for my $result (@results) {  		my $platform = ( split( / /, $result->platform ) )[0];  		my $line     = $result->line; @@ -259,6 +275,17 @@ sub handle_request {  			if ( $admode eq 'arr' ) {  				$time = $result->sched_arrival->strftime('%H:%M');  			} + +			if ($show_realtime) { +				if ( ( $admode eq 'arr' and $result->arrival ) +					or not $result->departure ) +				{ +					$time = $result->arrival->strftime('%H:%M'); +				} +				else { +					$time = $result->departure->strftime('%H:%M'); +				} +			}  		}  		if ( $info eq '+0' ) { @@ -324,6 +351,7 @@ sub handle_request {  			title            => "departures for ${station}",  			refresh_interval => $refresh_interval + 3,  			hide_opts        => $hide_opts, +			show_realtime    => $show_realtime,  		);  	}  } diff --git a/public/default.css b/public/default.css index 350db27..edcb82a 100644 --- a/public/default.css +++ b/public/default.css @@ -155,6 +155,12 @@ div.displayclean li .countdown .delay {  	padding-right:7px;  } +div.displayclean li .countdown .delaynorm { +	font-size:0.9em; +	color:#BB3333; +	padding-right:7px; +} +  div.displayclean li .countdown .platform {  	font-weight: bold;  } @@ -168,6 +174,10 @@ div.displayclean li .time {  	top:5px;  } +div.displayclean span.delayed { +	color: #ff0000; +} +  div.displaymulti {  	border: 0.2em solid #000066;  	width: 55em; diff --git a/templates/clean.html.ep b/templates/clean.html.ep index 21750d5..f073c2e 100644 --- a/templates/clean.html.ep +++ b/templates/clean.html.ep @@ -58,15 +58,26 @@  </span>  <span class="countdown">  % if ($departure->{delay} and not $departure->{is_cancelled}) { +% if ($show_realtime) { +<span class="delaynorm">(+<%= $departure->{delay} %>)</span> +% } +% else {  <span class="delay">(+<%= $departure->{delay} %>)</span>  % } +% }  <span class="platform">  %= $departure->{platform}  </span>  </span> -<span class="time"> +<span class="time <%= ($show_realtime and $departure->{delay} and not $departure->{is_cancelled}) ? 'delayed' : q{} %>"> +% if ($show_realtime and $departure->{delay} and not $departure->{is_cancelled}) { +<span class="delayed"> +% }  %= $departure->{time}  </span> +% if ($show_realtime and $departure->{delay} and not $departure->{is_cancelled}) { +</span> +% }  </li>  <!-- diff --git a/templates/layouts/default.html.ep b/templates/layouts/default.html.ep index 85ef48c..a6ffaae 100644 --- a/templates/layouts/default.html.ep +++ b/templates/layouts/default.html.ep @@ -123,6 +123,14 @@        %= select_field admode => [['Abfahrt bevorzugen' => 'deparr'], ['Nur Abfahrt' => 'dep'], ['Nur Ankunft' => 'arr']]      </div>    </div> +  <div class="field"> +    <div class="desc"> +      Erwartete Abfahrtzeiten statt Fahrplandaten verwenden? +    </div> +    <div> +      %= check_box 'show_realtime' => 1 +    </div> +  </div>  </div>  % end | 
