| |
1 <html> |
| |
2 <head> |
| |
3 <link rel="icon" type="image/png" href="../static/favicon.png" /> |
| |
4 <link rel="stylesheet" type="text/css" href="../static/style.css" /> |
| |
5 <meta charset='UTF-8' /> |
| |
6 <title>{{name}}</title> |
| |
7 <meta http-equiv='refresh' content='30'> |
| |
8 <style> |
| |
9 .sarake-määränpää |
| |
10 { |
| |
11 text-align: left; |
| |
12 } |
| |
13 |
| |
14 .next-leave |
| |
15 { |
| |
16 margin-left: 1vw; |
| |
17 margin-right: 1vw; |
| |
18 } |
| |
19 |
| |
20 .next-leave td |
| |
21 { |
| |
22 height: 30vh; |
| |
23 vertical-align: middle; |
| |
24 } |
| |
25 |
| |
26 .next-leave-table |
| |
27 { |
| |
28 width: 100%; |
| |
29 } |
| |
30 |
| |
31 .next-leave-time, .next-leave-destination, .next-leave-route |
| |
32 { |
| |
33 font-weight: bold; |
| |
34 font-size: 10vmin; |
| |
35 } |
| |
36 |
| |
37 .next-leave-time |
| |
38 { |
| |
39 width: 25%; |
| |
40 text-align: left |
| |
41 } |
| |
42 |
| |
43 .next-leave-route |
| |
44 { |
| |
45 width: 25%; |
| |
46 } |
| |
47 |
| |
48 .next-leave-destination |
| |
49 { |
| |
50 width: 50%; |
| |
51 } |
| |
52 |
| |
53 .via |
| |
54 { |
| |
55 list-style: none; |
| |
56 font-size: 6vmin; |
| |
57 padding-top: 1vw; |
| |
58 font-weight: normal; |
| |
59 } |
| |
60 |
| |
61 .next-leave-table |
| |
62 { |
| |
63 text-align: center; |
| |
64 } |
| |
65 |
| |
66 #other-leaves |
| |
67 { |
| |
68 width: 100%; |
| |
69 position: absolute; |
| |
70 bottom: 0; |
| |
71 background: #ccc; |
| |
72 box-shadow: 0 0 1vw rgba(0, 0, 0, 0.5), inset 0 0 2vw rgba(0, 0, 0, 0.5); |
| |
73 } |
| |
74 |
| |
75 #other-leaves table |
| |
76 { |
| |
77 width: 80%; |
| |
78 margin: auto; |
| |
79 margin-bottom: 10pt; |
| |
80 margin-top: 10pt; |
| |
81 } |
| |
82 |
| |
83 #other-leaves table td |
| |
84 { |
| |
85 font-size: 4vh; |
| |
86 height: 5vh; |
| |
87 text-align: center; |
| |
88 } |
| |
89 |
| |
90 .other-leave-time |
| |
91 { |
| |
92 width: 30%; |
| |
93 } |
| |
94 |
| |
95 .other-leave-route |
| |
96 { |
| |
97 width: 30%; |
| |
98 } |
| |
99 |
| |
100 .other-leave-destination |
| |
101 { |
| |
102 width: 40%; |
| |
103 } |
| |
104 |
| |
105 #stop-name |
| |
106 { |
| |
107 width: 100%; |
| |
108 text-align: center; |
| |
109 } |
| |
110 |
| |
111 h1 |
| |
112 { |
| |
113 background-color: #ffd90f; |
| |
114 margin: 0; |
| |
115 padding-top: 10pt; |
| |
116 background: #dc9e00; |
| |
117 background: linear-gradient(to bottom, #ffd90f 0%, #ffd90f 95%, #AA7700 100%); |
| |
118 color: black; |
| |
119 vertical-align: middle; |
| |
120 box-shadow: 0px 0px 1vw rgba(0, 0, 0, 0.5); |
| |
121 } |
| |
122 |
| |
123 h1, h1 span |
| |
124 { |
| |
125 font-size: 5vw; |
| |
126 text-align: center; |
| |
127 font-weight: bold; |
| |
128 } |
| |
129 |
| |
130 h1 span, h1 img |
| |
131 { |
| |
132 vertical-align: middle; |
| |
133 } |
| |
134 |
| |
135 @media screen and (orientation:landscape) |
| |
136 { |
| |
137 h1 |
| |
138 { |
| |
139 height: 12vh; |
| |
140 } |
| |
141 |
| |
142 h1 img |
| |
143 { |
| |
144 height: 10vh; |
| |
145 float: left; |
| |
146 margin-left: 1%; |
| |
147 } |
| |
148 |
| |
149 #stop-name |
| |
150 { |
| |
151 margin-top: 5pt; |
| |
152 font-size: 8vh; |
| |
153 } |
| |
154 } |
| |
155 |
| |
156 @media screen and (orientation:portrait) |
| |
157 { |
| |
158 h1 img |
| |
159 { |
| |
160 height: 10vh; |
| |
161 display: block; |
| |
162 margin-left: auto; |
| |
163 margin-right: auto; |
| |
164 } |
| |
165 |
| |
166 #stop-name |
| |
167 { |
| |
168 font-size: 6vw; |
| |
169 } |
| |
170 } |
| |
171 </style> |
| |
172 |
| |
173 <script> |
| |
174 num_visible_leaves = 3; |
| |
175 num_imminent_leaves = {{num_imminent_leaves}}; |
| |
176 var imminent_leave_cycle = []; |
| |
177 var other_leave_cycle = []; |
| |
178 var max_leaves; |
| |
179 var current_imminent_leave = 0; |
| |
180 var current_other_leave = 0; |
| |
181 var initialized = false; |
| |
182 function cycle_leaves() |
| |
183 { |
| |
184 if (initialized == false) |
| |
185 { |
| |
186 for (max_leaves = 0;; max_leaves += 1) |
| |
187 { |
| |
188 var i = max_leaves; |
| |
189 var tr = document.getElementById('leave-' + i); |
| |
190 if (tr) |
| |
191 { |
| |
192 if (i == 0 || i == num_imminent_leaves) |
| |
193 tr.style.display = 'table-row-group'; |
| |
194 else if (i < num_imminent_leaves) |
| |
195 imminent_leave_cycle.push(tr); |
| |
196 else if (i >= num_imminent_leaves + 1) |
| |
197 other_leave_cycle.push(tr); |
| |
198 } |
| |
199 else |
| |
200 break; |
| |
201 } |
| |
202 initialized = true; |
| |
203 current_imminent_leave = imminent_leave_cycle.length - 1; |
| |
204 current_other_leave = other_leave_cycle.length - 1; |
| |
205 } |
| |
206 if (imminent_leave_cycle) |
| |
207 { |
| |
208 current_imminent_leave = (current_imminent_leave + 1) % imminent_leave_cycle.length; |
| |
209 for (var i = 0; i < imminent_leave_cycle.length; i += 1) |
| |
210 imminent_leave_cycle[i].style.display = (i == current_imminent_leave) ? 'table-row-group' : 'none'; |
| |
211 } |
| |
212 if (other_leave_cycle) |
| |
213 { |
| |
214 current_other_leave = (current_other_leave + 1) % other_leave_cycle.length; |
| |
215 for (var i = 0; i < other_leave_cycle.length; i += 1) |
| |
216 other_leave_cycle[i].style.display = (i == current_other_leave) ? 'table-row-group' : 'none'; |
| |
217 } |
| |
218 setTimeout(cycle_leaves, 6000); |
| |
219 } |
| |
220 </script> |
| |
221 </head> |
| |
222 <body onload='cycle_leaves()'> |
| |
223 <h1><img src="../static/pysäkki.png" height="128" /><span id='stop-name'>{{ref}} {{name}}</span></h1> |
| |
224 <div class='next-leave'> |
| |
225 <table class='next-leave-table'> |
| |
226 {% for schedule_entry in schedule[:num_imminent_leaves] %} |
| |
227 <tbody id="leave-{{schedule_entry['index']}}"> |
| |
228 <tr> |
| |
229 <td class='next-leave-time'> |
| |
230 {% if schedule_entry['imminent'] %} |
| |
231 <span class='imminent-leave'>{{schedule_entry['time']}}</span>​ |
| |
232 {% else %} |
| |
233 {{schedule_entry['time']}}​ |
| |
234 {% endif %} |
| |
235 </td> |
| |
236 <td class='next-leave-route'>{{schedule_entry['route']}}</td> |
| |
237 <td class='next-leave-destination'>{{schedule_entry['sign']['destination']}} |
| |
238 <span class='via'><br /> |
| |
239 {% if num_imminent_leaves > 1 and schedule_entry['sign']['via'][0] and schedule_entry['sign']['via'][1] %} |
| |
240 {{schedule_entry['sign']['via'][0]}} - {{schedule_entry['sign']['via'][1]}} |
| |
241 {% for entry in schedule_entry['sign']['via'][2:] %}<br />{{entry}}{% endfor %}</span> |
| |
242 {% else %} |
| |
243 {% for entry in schedule_entry['sign']['via'] %}{{entry}}<br />{% endfor %}</span> |
| |
244 {% endif %} |
| |
245 </th> |
| |
246 </tr> |
| |
247 </tbody> |
| |
248 {% endfor %} |
| |
249 </table> |
| |
250 </div> |
| |
251 {% if schedule[num_imminent_leaves] %} |
| |
252 <div id='other-leaves'> |
| |
253 <table cellspacing="0"> |
| |
254 {% for halt in schedule[num_imminent_leaves:] %} |
| |
255 <tr id="leave-{{halt['index']}}" style='display: none'> |
| |
256 <td class='other-leave-time'>{{halt['time']}}</td> |
| |
257 <td class='other-leave-route'>{{halt['route']}}</td> |
| |
258 <td class='other-leave-destination'>{{halt['sign']['destination']}}</td> |
| |
259 </tr> |
| |
260 {% endfor %} |
| |
261 </table> |
| |
262 </div> |
| |
263 {% endif %} |
| |
264 </body> |
| |
265 </html> |