{# templates/analytics/_bloc_source.html.twig ───────────────────────────────────────────────────────────────────────────── Bloc source d'accès — affiché sur tous les niveaux. Paramètres attendus : sources (array) → [{'source': 'qr'|'nfc'|'lien'|'social', 'count': int}] ───────────────────────────────────────────────────────────────────────────── #} {# ── Calcul du total pour les pourcentages ── #} {% set totalSources = 0 %} {% for row in sources %} {% set totalSources = totalSources + row.count %} {% endfor %} {# ── Labels et icônes par source ── #} {% set sourceConfig = { 'qr': { 'label': 'QR Code', 'icone': '⬛', 'couleur': '#667eea' }, 'nfc': { 'label': 'NFC', 'icone': '📡', 'couleur': '#764ba2' }, 'lien': { 'label': 'Lien direct', 'icone': '🔗', 'couleur': '#22c55e' }, 'social': { 'label': 'Réseau social', 'icone': '📱', 'couleur': '#f59e0b' } } %}

📍 Source d'accès

{{ jours }} derniers jours
{% if sources is empty %}

Aucune donnée sur la période.

{% else %}
{% for row in sources %} {% set config = sourceConfig[row.source] ?? { 'label': row.source, 'icone': '•', 'couleur': '#86868b' } %} {% set pct = totalSources > 0 ? ((row.count / totalSources) * 100) | round(1) : 0 %}
{# Icône + label #}
{{ config.icone }} {{ config.label }}
{# Barre de progression #}
{# Chiffres #}
{{ row.count }} {{ pct }}%
{% endfor %}
{# ── Sources non détectées (si total < vues totales) ── #} {% if totalSources == 0 %}

💡 La source est détectée via le paramètre ?src= dans l'URL de la carte. Les accès sans ce paramètre ne sont pas comptabilisés ici.

{% endif %} {% endif %}