diff --git a/templates/trip/list.html b/templates/trip/list.html
index a35ac5b..c39a516 100644
--- a/templates/trip/list.html
+++ b/templates/trip/list.html
@@ -1,6 +1,6 @@
{% extends "base.html" %}
-{% from "macros.html" import trip_link, display_date_no_year, display_date, display_datetime, display_time with context %}
+{% from "macros.html" import trip_link, display_date_no_year, display_date, display_datetime, display_time, format_distance with context %}
{% block title %}{{ heading }} - Edward Betts{% endblock %}
@@ -52,6 +52,18 @@
{% set items = item_list | list %}
+ {{ transport_type | title }}
+ distance: {{format_distance(distance) }}
+
+ {% endfor %}
+
+
+
{% for trip in items %}
{% set distances_by_transport_type = trip.distances_by_transport_type() %}
{% set total_distance = trip.total_distance() %}
@@ -74,15 +86,17 @@
Total distance:
- {{ "{:,.0f} km / {:,.0f} miles".format(total_distance, total_distance / 1.60934) }}
+
+ Total distance:
+ {{ format_distance(total_distance) }}
{% endif %}
{% if distances_by_transport_type %}
{% for transport_type, distance in distances_by_transport_type %}
-
{{ transport_type | title }} distance:
- {{ "{:,.0f} km / {:,.0f} miles".format(distance, distance / 1.60934) }}
+
+ {{ transport_type | title }}
+ distance: {{format_distance(distance) }}
{% endfor %}
{% endif %}
@@ -108,9 +122,14 @@
{% if e.element_type == "flight" %}
airline: {{ e.detail.airline_name }}
flight number: {{ e.detail.airline }}{{ e.detail.flight_number }}
-
duration: {{ e.detail.duration }}
+ {% if e.detail.duration %}
+
duration: {{ e.detail.duration }}
+ {% endif %}
{#
{{ e.detail | pprint }}
#}
{% endif %}
+ {% if e.detail.distance %}
+
distance: {{ format_distance(e.detail.distance) }}
+ {% endif %}
{% endif %}
{% endfor %}
diff --git a/web_view.py b/web_view.py
index 286d4ad..8c30bbd 100755
--- a/web_view.py
+++ b/web_view.py
@@ -8,6 +8,7 @@ import operator
import os.path
import sys
import traceback
+from collections import defaultdict
from datetime import date, datetime, timedelta
import flask
@@ -286,6 +287,27 @@ def trip_list() -> werkzeug.Response:
return flask.redirect(flask.url_for("trip_future_list"))
+def calc_total_distance(trips: list[Trip]) -> float:
+ """Total distance for trips."""
+ total = 0.0
+ for item in trips:
+ dist = item.total_distance()
+ if dist:
+ total += dist
+
+ return total
+
+
+def sum_distances_by_transport_type(trips: list[Trip]) -> list[tuple[str, float]]:
+ """Sum distances by transport type."""
+ distances_by_transport_type: defaultdict[str, float] = defaultdict(float)
+ for trip in trips:
+ for transport_type, dist in trip.distances_by_transport_type():
+ distances_by_transport_type[transport_type] += dist
+
+ return list(distances_by_transport_type.items())
+
+
@app.route("/trip/past")
def trip_past_list() -> str:
"""Page showing a list of past trips."""
@@ -307,6 +329,8 @@ def trip_past_list() -> str:
get_country=agenda.get_country,
format_list_with_ampersand=format_list_with_ampersand,
fx_rate=agenda.fx.get_rates(app.config),
+ total_distance=calc_total_distance(past),
+ distances_by_transport_type=sum_distances_by_transport_type(past),
)
@@ -337,6 +361,8 @@ def trip_future_list() -> str:
get_country=agenda.get_country,
format_list_with_ampersand=format_list_with_ampersand,
fx_rate=agenda.fx.get_rates(app.config),
+ total_distance=calc_total_distance(current + future),
+ distances_by_transport_type=sum_distances_by_transport_type(current + future),
)