parent
							
								
									dce8fde29a
								
							
						
					
					
						commit
						e1688629a3
					
				| 
						 | 
					@ -2,6 +2,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import datetime
 | 
					import datetime
 | 
				
			||||||
import typing
 | 
					import typing
 | 
				
			||||||
 | 
					from collections import Counter
 | 
				
			||||||
from dataclasses import dataclass, field
 | 
					from dataclasses import dataclass, field
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from pycountry.db import Country
 | 
					from pycountry.db import Country
 | 
				
			||||||
| 
						 | 
					@ -141,6 +142,25 @@ class Trip:
 | 
				
			||||||
            else None
 | 
					            else None
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def distances_by_transport_type(self) -> list[tuple[str, float]]:
 | 
				
			||||||
 | 
					        """Calculate the total distance travelled for each type of transport.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Any travel item with a missing or None 'distance' field is ignored.
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        transport_distances: Counter[float] = Counter()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for item in self.travel:
 | 
				
			||||||
 | 
					            distance = item.get("distance")
 | 
				
			||||||
 | 
					            if distance:
 | 
				
			||||||
 | 
					                transport_type = item.get("type", "unknown")
 | 
				
			||||||
 | 
					                transport_distances[transport_type] += distance
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return list(transport_distances.items())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Example usage:
 | 
				
			||||||
 | 
					# You would call the function with your travel list here to get the results.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@dataclass
 | 
					@dataclass
 | 
				
			||||||
class Holiday:
 | 
					class Holiday:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -61,6 +61,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{% set end = trip.end %}
 | 
					{% set end = trip.end %}
 | 
				
			||||||
{% set total_distance = trip.total_distance() %}
 | 
					{% set total_distance = trip.total_distance() %}
 | 
				
			||||||
 | 
					{% set distances_by_transport_type = trip.distances_by_transport_type() %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{% block content %}
 | 
					{% block content %}
 | 
				
			||||||
<div class="row">
 | 
					<div class="row">
 | 
				
			||||||
| 
						 | 
					@ -87,6 +88,14 @@
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
    {% endif %}
 | 
					    {% endif %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    {% if distances_by_transport_type %}
 | 
				
			||||||
 | 
					      {% for transport_type, distance in distances_by_transport_type %}
 | 
				
			||||||
 | 
					        <div>{{ transport_type | title }} distance:
 | 
				
			||||||
 | 
					          {{ "{:,.0f} km / {:,.0f} miles".format(distance, distance / 1.60934) }}
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					      {% endfor %}
 | 
				
			||||||
 | 
					    {% endif %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    {% set delta = human_readable_delta(trip.start) %}
 | 
					    {% set delta = human_readable_delta(trip.start) %}
 | 
				
			||||||
    {% if delta %}
 | 
					    {% if delta %}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue