diff options
| author | Daniel Friesel <derf@finalrewind.org> | 2013-12-12 15:01:52 +0100 | 
|---|---|---|
| committer | Daniel Friesel <derf@finalrewind.org> | 2013-12-12 15:01:52 +0100 | 
| commit | 4affeeffb8f9b84f905475982ab93ba785ee7016 (patch) | |
| tree | 6c0097444fd2f0bf7831478b14b10a1df0b206c9 | |
| parent | 07a5d91dc3ba22b80ebb583cb690b54dc6505f8b (diff) | |
add oeffi-like "clean" display. Still quite experimental
(copied from https://wiki.die-foobar.de/wiki/Infoscreen sources)
| -rw-r--r-- | cgi/index.pl | 5 | ||||
| -rw-r--r-- | cgi/templates/clean.html.ep | 46 | ||||
| -rw-r--r-- | cgi/templates/layouts/default.html.ep | 151 | 
3 files changed, 131 insertions, 71 deletions
diff --git a/cgi/index.pl b/cgi/index.pl index f50fec7..6d635c2 100644 --- a/cgi/index.pl +++ b/cgi/index.pl @@ -83,6 +83,7 @@ sub handle_request {  	for my $result (@results) {  		my $platform = ( split( / /, $result->platform ) )[0]; +		my $delay = 0;  		if ($via) {  			my @route = $result->route;  			if ( not( any { $_ =~ m{$via}io } @route ) ) { @@ -97,6 +98,9 @@ sub handle_request {  		if ( $info eq '+0' ) {  			$info = undef;  		} +		if ( $info and $info =~ m{ \+ (\d+) }x ) { +			$delay = $1; +		}  		if ( $hide_low_delay and $info ) {  			$info =~ s{ (?: ca\. \s* )? \+ [ 1 2 3 4 ] $ }{}x;  		} @@ -112,6 +116,7 @@ sub handle_request {  				destination => $result->destination,  				platform    => $platform,  				info        => $info, +				delay       => $delay,  			}  		);  	} diff --git a/cgi/templates/clean.html.ep b/cgi/templates/clean.html.ep index 021b7f1..635c3ad 100644 --- a/cgi/templates/clean.html.ep +++ b/cgi/templates/clean.html.ep @@ -1,48 +1,48 @@  % if (@{$departures}) {  <div class="displayclean"> +<ul>  % my $i = 0;  % for my $departure (@{$departures}) {  % $i++; -<div class="display <% if (($i % 2) == 0) { %> separator<% } %>"> - -<div class="train"> +<li> +<span class="line">  %= $departure->{train} -</div> - -<div class="destination"> -%= $departure->{destination} -</div> - -<div class="platform"> -%= $departure->{platform} -</div> - -<div class="time"> -%= $departure->{time} -</div> - -<div class="via"> +</span> +<span class="route">  % my $via_max = @{$departure->{via}};  % my $via_cur = 0;  % for my $stop (@{$departure->{via}}) {  % $via_cur++; -<span><%= $stop %><% if ($via_cur < $via_max) { %> - <% } %></span> +<%= $stop %><% if ($via_cur < $via_max) { %> - <% } %>  % } -</div> +</span> +<span class="dest"> +%= $departure->{destination} +</span> +<span class="countdown"> +% if ($departure->{delay}) { +<span class="delay">(+<%= $departure->{delay} %>)</span> +% } +</span> +<span class="time"> +%= $departure->{time} +</span> +</li> +<!--  % if ($departure->{info}) {  <div class="info">  %= $departure->{info}  </div>  % } - -</div> <!-- display --> +-->  % } -</div> <!-- outer --> +</ul> +</div> <!-- displayclean -->  % }  % else { diff --git a/cgi/templates/layouts/default.html.ep b/cgi/templates/layouts/default.html.ep index a47a2f7..1f1c952 100644 --- a/cgi/templates/layouts/default.html.ep +++ b/cgi/templates/layouts/default.html.ep @@ -20,72 +20,127 @@  	}  % } -	div.displayclean div.display { -		font-family: Sans-Serif; -		position: relative; -		margin-bottom: 0; -		margin-top: 0; -		padding-top: 0; -		padding-bottom: 0; -		width: 100%; -		height: 4.4em; +	div.displayclean { +		background-color:#F8F8F8; +		position:absolute; +		top:5px; +		left:5px; +		border-width:1px 2px; +		width:100%; +		height:499px; +	} + +	div.displayclean ul { +		position:absolute; +		width:100%; +		background-color:#F8F8F8; +		top: -3px; +		left: 0; + +		list-style-type:none; +		margin:0; +		padding:0; +		border-width:1px 0 25px; +		border-style:solid; +		border-color:#CCCCCC;  	} -	div.displayclean div.display div { -		overflow: hidden; -		position: absolute; -		height: 100%; +	div.displayclean li { +		height:70px; +		background-color:#F8F8F8; +		padding:5px; +		display:block; +		border-width:1px 0; +		border-style:solid; +		border-color:#CCCCCC; +		width:95%; +		position:relative;  	} -	div.displayclean div.time { -		left: 0; -		top: 10%; -		height: 1em; -		font-size: 150%; +	div.displayclean li .line { +		color:#FFFFFF; +		background-color:#666666; +		font-weight:bold; +		font-size:28px; +		padding:3px 8px 2px 5px; +		position:absolute; +		top:7px; +		left:1%;  	} -	div.displayclean div.train { -		left: 0; -		width: 42%; -		color: #000000; -		font-size: 200%; -		font-weight: bold; -		text-align: right; +	div.displayclean li .tram { +		background-color:#CC0000;  	} -	div.displayclean div.via { -		top: 57%; -		left: 44%; +	div.displayclean li .sbahn { +		background-color:#006E10; +		-webkit-border-radius: 30px; +		-moz-border-radius: 30px; +		border-radius: 30px;  	} -	div.displayclean div.via span { -		margin-right: 0.4em; -		font-size: 95%; -		color: #333333; +	div.displayclean li .ubahn { +		background-color:#001090;  	} -	div.displayclean div.destination { -		left: 44%; -		width: 78%; -		font-size: 200%; +	div.displayclean li .bus { +		background-color:#991199; +		-webkit-border-radius: 10px; +		-moz-border-radius: 10px; +		border-radius: 10px;  	} -	div.displayclean div.platform { -		right: 0; -		font-size: 200%; +	div.displayclean li .route { +		color:#444444; +		font-size:21px; +		position:absolute; +		top:5px; +		left:10em;  	} -	div.displayclean div.info { -		left: 0; -		top: 57%; -		width: 44%; -		font-size: 80%; -		line-height: 150%; -		color: #dd0000; +	div.displayclean li .dest { +		color:#000000; +		font-weight:bold; +		font-size:46px; +		position:absolute; +		top:23px; +		left:4.5em;  	} -	div.displayclean div.separator { -		border-bottom: 0.1em solid #000066; +	div.displayclean li .countdown { +		color:#000000; +		font-size:48px; +		position:absolute; +		right:5px; +		bottom:2px; +	} + +	div.displayclean li .header { +		color:#000000; +		font-size:55px; +		font-weight:bold; +		padding-top:8px; +		border-width-top:0; +		display:block; +		text-align:center; +	} + +	div.displayclean li .head { +		border-bottom-width:0; +	} + +	div.displayclean li .countdown .delay { +		font-size:38px; +		color:#FF0000; +		padding-right:7px; +	} + +	div.displayclean li .time { +		color:#000000; +		font-size:24px; +		position:absolute; +		right:5px; +		top:5px;  	}  	div.displaymulti {  | 
