{% extends 'base.html.twig' %} {% block title %} Tableau de bord | Opération Terrain {% endblock %} {% block body %}
{{ totalCampaigns }}
Opérations au total
{{ coveredSites|length }}
Sites couverts ▼
{{ sitesWithoutRecent|length }}
Sites oubliés (+ {{ days }} j) ▼

Opérations {% if filters.date_from or filters.date_to %} {% if filters.date_from %}du {{ filters.date_from|date('d/m/Y') }}{% endif %} {% if filters.date_to %} au {{ filters.date_to|date('d/m/Y') }}{% endif %} {% endif %}

Réinitialiser
{% for campaign in latestCampaigns %} {% else %} {% endfor %}
Site Département Effectif Date Heure Etablissement Type d'opération Tract Créée par État
{{ campaign.site ? campaign.site.name ~ ' - ' ~ campaign.site.city : '—' }} {{ campaign.site and campaign.site.department ? campaign.site.department : '—' }} {{ campaign.site ? effectifBySite[campaign.site.id]|default('—') : '—' }} {{ campaign.scheduledAt ? campaign.scheduledAt|date('d/m/Y') : '—' }} {{ campaign.scheduledAt ? campaign.scheduledAt|date('H:i') : '—' }} {% if campaign.perimetreType %} {{ campaign.perimetreTypeLabel }} {% if campaign.perimetres is not empty %}
{{ campaign.perimetres|map(p => p.label)|join(', ') }} {% endif %} {% else %}—{% endif %}
{{ campaign.operationTypes is not empty ? campaign.operationTypes|map(t => t.label)|join(', ') : '—' }} {% if campaign.tracts is not empty %} {% set statusColors = {'a_tracter': '#2e7d32', 'en_attente': '#b45309', 'perime': '#c0392b'} %} {% for tract in campaign.tracts %} {% set color = statusColors[tract.status] ?? '#5a6a85' %}
{{ tract.label }} {{ tract.statusLabel }}
{% endfor %} {% else %} — {% endif %}
{{ creators[campaign.id]|default('—') }} {{ campaign.statusLabel }}
Aucune opération.
{% endblock %}