diff options
Diffstat (limited to 'html_view.py')
-rw-r--r-- | html_view.py | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/html_view.py b/html_view.py new file mode 100644 index 0000000..2e82066 --- /dev/null +++ b/html_view.py @@ -0,0 +1,83 @@ +import util +import ptv_client + +def format_stop_and_route_name_li(stop_and_route): + stop, route = stop_and_route + return '<li>Stop: {}, Route: {} {} {}</li>'.format( + stop['stop_name'], ptv_client.get_route_type(route['route_type']), + route['route_number'], route['route_name']) + +def format_stop_and_route_name_ol(stop_and_routes): + return '<ol>{}</ol>'.format(''.join( + map(format_stop_and_route_name_li, stop_and_routes))) + +def format_stop_and_route_name_tr(stop_and_route): + stop, route = stop_and_route + return """ +<tr> + <td> + <a href="/?route-type={}&stop={}&route={}">{}</a> + </td> + <td>{}</td><td>{}</td><td>{}</td> +</tr> +""".format( + route['route_type'], stop['stop_id'], route['route_id'], + stop['stop_name'], ptv_client.get_route_type(route['route_type']), + route['route_number'], route['route_name']) + +def format_stop_and_route_name_table(stop_and_routes): + return """ +<table> + <tr> + <th>Stop</th> + <th>Route type</th> + <th>Route number</th> + <th>Route name</th> + </tr> + {} +</table> +""".format(''.join(map(format_stop_and_route_name_tr, stop_and_routes))) + +def format_departure_tr(departure, direction_names): + return """ +<tr> + <td>{}</td><td>{}</td><td>{}</td> +</tr> +""".format( + util.format_time(util.parse_time(departure['estimated_departure_utc'])), + util.format_time(util.parse_time(departure['scheduled_departure_utc'])), + direction_names[departure['direction_id']]) + +def format_departure_table(departures, direction_names): + return """ +<table> + <tr> + <th>Estimated</th> + <th>Scheduled</th> + <th>Direction</th> + </tr> + {} +</table> +""".format(''.join(format_departure_tr(dep, direction_names) + for dep in departures)) + +def style(): + return """ +<style> + tr:nth-child(even) {background-color: #f2f2f2;} + tr:hover {background-color: coral;} +</style> +""" + +def html(body): + return """ +<!DOCTYPE html> +<html> +<head> + %(style)s +</head> +<body> + %(body)s +</body> +</html> +""" % {'style': style(), 'body': body} |