{# One library card — used by the home grid and the timeline view, so the favorite toggle, hover details, and video affordances can never diverge between them. #} {% macro photo_card(media_item) %}
{% if media_item.media_type == 'video' %} {{ _('Video from %(date)s', date=media_item.date_taken | format_date('date')) }} {# Play badge only on browser-playable videos (it triggers inline play). Non-playable videos show just the poster; the card click opens the detail view, which offers "open externally". #} {% if is_browser_playable_video(media_item.full_file_path) %} {% endif %} {% if media_item.duration_seconds %} {{ media_item.duration_seconds | format_duration }} {% endif %} {% else %} {{ _('Photo from %(date)s', date=media_item.date_taken | format_date('date')) }} {% endif %}
{{ _("Name") }}
{{ media_item.file_name }}
{{ _("Folder") }}
{{ media_item.folder }}
{{ _("Taken") }}
{{ media_item.date_taken | format_date('datetime') if media_item.date_taken else _("Unknown date") }}
{% if media_item.location_name %}
{{ _("Location") }}
{{ media_item.location_name }}
{% endif %} {% if media_item.latitude is not none and media_item.longitude is not none %}
{{ _("Coordinates") }}
{{ media_item.latitude | format_coordinate(5) }}, {{ media_item.longitude | format_coordinate(5) }}
{% endif %} {% if media_item.labels %}
{{ _("Labels") }}
{{ media_item.labels | map(attribute='label.name') | join(', ') }}
{% endif %}
{{ media_item.date_taken | format_date("date") if media_item.date_taken else _("Unknown date") }}
{% if media_item.people|length > 0 %}
{% for person in media_item.people %} {{ person.name }} {% endfor %}
{% endif %}
{% endmacro %}