{% extends "base.html" %} {% from "components/ui.html" import page_header, stat_card %} {% block title %}{{ _('Time Entries') }} · {{ project.name }}{% endblock %} {% block content %} {% set breadcrumbs = [ {'text': _('Projects'), 'url': url_for('projects.list_projects')}, {'text': project.name, 'url': url_for('projects.view_project', project_id=project.id)}, {'text': _('Time Entries Overview')} ] %} {{ page_header( icon_class='fas fa-list', title_text=_('Time Entries Overview'), subtitle_text=project.name, breadcrumbs=breadcrumbs, actions_html='' ~ _('Back to Project') ~ '' ) }}
{{ stat_card(_('Total Hours'), '%.2f'|format(total_hours), 'fas fa-hourglass-half', 'blue-500') }} {{ stat_card(_('Entries'), total_entries, 'fas fa-list', 'purple-500') }} {{ stat_card(_('Days'), grouped|length, 'fas fa-calendar-day', 'emerald-500') }}

{{ _('Filters') }}

{{ _('Reset') }}
{% if not grouped %}

{{ _('No time entries found for this project in the selected period.') }}

{% else %}
{% for day in grouped %}
{{ day.date.strftime('%Y-%m-%d') if day.date else '-' }}
{{ '%.2f'|format(day.total_hours) }} {{ _('hours') }} · {{ day.entries|length }} {{ _('entries') }}
{% for entry in day.entries %} {% endfor %}
{{ _('Start') }} {{ _('End') }} {{ _('Hours') }} {{ _('Task') }} {{ _('Description') }} {{ _('User') }}
{{ entry.start_time|user_datetime('%H:%M') if entry.start_time else '-' }} {{ entry.end_time|user_datetime('%H:%M') if entry.end_time else '-' }} {{ '%.2f'|format(entry.duration_hours) }} {{ entry.task.name if entry.task else '—' }} {% if entry.notes %} {{ entry.notes }} {% else %} {% endif %} {{ entry.user.display_name if entry.user and entry.user.display_name else (entry.user.username if entry.user else '—') }}
{% endfor %}
{% endif %} {% endblock %}