{% macro display_datetime(dt) %}{{ dt.strftime("%a, %d, %b %Y %H:%M %z") }}{% endmacro %}
{% macro display_time(dt) %}{{ dt.strftime("%H:%M %z") }}{% endmacro %}
{% macro display_date(dt) %}{{ dt.strftime("%a %-d %b %Y") }}{% endmacro %}
{% macro display_date_no_year(dt) %}{{ dt.strftime("%a %-d %b") }}{% endmacro %}

{% macro trip_link(trip) %}
    <a href="{{ url_for("trip_page", start=trip.start.isoformat()) }}">{{ trip.title }}</a>
{% endmacro %}

{% macro conference_row(item, badge) %}
  {% set country = get_country(item.country) if item.country else None %}
  <div class="grid-item text-end">{{ item.start.strftime("%a, %d %b %Y") }}</div>
  <div class="grid-item text-end">{{ item.end.strftime("%a, %d %b") }}</div>
  <div class="grid-item">
    {% if item.url %}
      <a href="{{ item.url }}">{{ item.name }}</a>
    {% else %}
      {{ item.name }}
    {% endif %}
    {% if item.going and not (item.accommodation_booked or item.travel_booked) %}
      <span class="badge text-bg-primary">
        {{ badge }}
      </span>
    {% endif %}
    {% if item.accommodation_booked %}
      <span class="badge text-bg-success">accommodation</span>
    {% endif %}
    {% if item.transport_booked %}
      <span class="badge text-bg-success">transport</span>
    {% endif %}
  </div>
  <div class="grid-item">{{ item.topic }}</div>
  <div class="grid-item">{{ item.location }}</div>
  <div class="grid-item text-end">{{ display_date(item.cfp_end) if item.cfp_end else "" }}</div>
  <div class="grid-item">
    {% if country %}
      {{ country.flag }} {{ country.name }}
    {% elif item.online %}
      💻 Online
    {% else %}
      <span class="text-bg-danger p-2">
        country code <strong>{{ item.country }}</strong> not found
      </span>
    {% endif %}
  </div>
{% endmacro %}

{% macro accommodation_row(item, badge) %}
  {% set country = get_country(item.country) %}

  {% set nights = (item.to.date() - item.from.date()).days %}
  <div class="grid-item text-end">{{ item.from.strftime("%a, %d %b %Y") }}</div>
  <div class="grid-item text-end">{{ item.to.strftime("%a, %d %b") }}</div>
  <div class="grid-item text-end">{% if nights == 1 %}1 night{% else %}{{ nights }} nights{% endif %}</div>
  <div class="grid-item">{{ item.operator }}</div>
  <div class="grid-item">{{ item.location }}</div>
  <div class="grid-item">
    {% if country %}
      {{ country.flag }} {{ country.name }}
    {% else %}
      <span class="text-bg-danger p-2">
        country code <strong>{{ item.country }}</strong> not found
      </span>
    {% endif %}
  </div>
  <div class="grid-item">
    {% if item.url %}
      <a href="{{ item.url }}">{{ item.name }}</a>
    {% else %}
      {{ item.name }}
    {% endif %}
  </div>
{% endmacro %}

{% macro flight_row(item) %}
  {% set full_flight_number = item.airline + item.flight_number %}
  {% set radarbox_url = "https://www.radarbox.com/data/flights/" + full_flight_number %}
  <div class="grid-item text-end">{{ item.depart.strftime("%a, %d %b %Y") }}</div>
  <div class="grid-item">{{ item.from }} &rarr; {{ item.to }}</div>
  <div class="grid-item">{{ item.depart.strftime("%H:%M") }}</div>
  <div class="grid-item">
    {% if item.arrive %}
      {{ item.arrive.strftime("%H:%M") }}
      {% if item.arrive.date() != item.depart.date() %}+1 day{% endif %}
    {% endif %}
  </div>
  <div class="grid-item">{{ item.duration }}</div>
  <div class="grid-item">{{ full_flight_number }}</div>
  <div class="grid-item">{{ item.booking_reference }}</div>
  <div class="grid-item">
    <a href="https://www.flightradar24.com/data/flights/{{ full_flight_number | lower }}">flightradar24</a>
    | <a href="https://uk.flightaware.com/live/flight/{{ full_flight_number | replace("U2", "EZY") }}">FlightAware</a>
    | <a href="{{ radarbox_url }}">radarbox</a>
  </div>
{% endmacro %}

{% macro train_row(item) %}
  <div class="grid-item text-end">{{ item.depart.strftime("%a, %d %b %Y") }}</div>
  <div class="grid-item">{{ item.from }} &rarr; {{ item.to }}</div>
  <div class="grid-item">{{ item.depart.strftime("%H:%M") }}</div>
  <div class="grid-item">
    {% if item.arrive %}
      {{ item.arrive.strftime("%H:%M") }}
      {% if item.arrive.date() != item.depart.date() %}+1 day{% endif %}
    {% endif %}
  </div>
  <div class="grid-item">{{ ((item.arrive - item.depart).total_seconds() // 60) | int }} mins</div>
  <div class="grid-item">{{ item.operator }}</div>
  <div class="grid-item">{{ item.booking_reference }}</div>
  <div class="grid-item"></div>
{% endmacro %}