{# templates/analytics/_bloc_duree.html.twig ───────────────────────────────────────────────────────────────────────────── Bloc durée — Premium, Force de Vente, Multi uniquement. Paramètres attendus : dureeAvg (float) → durée moyenne de consultation en secondes (arrondie à 10s) 0.0 si aucune donnée disponible ───────────────────────────────────────────────────────────────────────────── #} {# ── Conversion secondes → minutes + secondes pour l'affichage ── #} {% set minutes = (dureeAvg / 60) | round(0, 'floor') %} {% set secondes = (dureeAvg % 60) | round(0) %} {# ── Évaluation qualitative de la durée ── #} {% if dureeAvg == 0 %} {% set evaluation = { 'label': 'Pas de données', 'icone': '—', 'couleur': '#86868b', 'note': '' } %} {% elseif dureeAvg < 10 %} {% set evaluation = { 'label': 'Très courte', 'icone': '⚡', 'couleur': '#ef4444', 'note': 'La carte est consultée très brièvement. Vérifiez l\'accroche visuelle.' } %} {% elseif dureeAvg < 30 %} {% set evaluation = { 'label': 'Courte', 'icone': '📉', 'couleur': '#f59e0b', 'note': 'Consultation rapide. Le contenu capte l\'attention mais peut être enrichi.' } %} {% elseif dureeAvg < 60 %} {% set evaluation = { 'label': 'Correcte', 'icone': '✅', 'couleur': '#22c55e', 'note': 'Bonne durée de consultation. Le contenu engage correctement.' } %} {% elseif dureeAvg < 120 %} {% set evaluation = { 'label': 'Bonne', 'icone': '⭐', 'couleur': '#667eea', 'note': 'Très bonne durée. Les visiteurs explorent votre carte en détail.' } %} {% else %} {% set evaluation = { 'label': 'Excellente', 'icone': '🏆', 'couleur': '#764ba2', 'note': 'Durée exceptionnelle. Votre carte génère un fort engagement.' } %} {% endif %}

⏱ Durée de consultation

{{ jours }} derniers jours
{% if dureeAvg == 0 %}

Pas encore de données de durée sur la période.
La durée est enregistrée automatiquement par le tracker de la carte.

{% else %} {# ── Chiffre principal ── #}
{% if minutes > 0 %} {{ minutes }}min {{ '%02d'|format(secondes) }}sec {% else %} {{ secondes | round }}sec {% endif %} en moyenne
{# Badge évaluation #}
{{ evaluation.icone }} {{ evaluation.label }}
{# ── Note conseil ── #} {% if evaluation.note %}

💡 {{ evaluation.note }}

{% endif %} {# ── Jauge visuelle ── #}
0s 30s 1min 2min+
{# Plafond visuel à 120 secondes — clamp entre 0 et 100 #} {% set pctRaw = (dureeAvg / 120 * 100) | round(1) %} {% set pctJauge = pctRaw > 100 ? 100 : (pctRaw < 0 ? 0 : pctRaw) %}
{# Repères sur la jauge #}
{# ── Note RGPD ── #}

⚠️ Durée arrondie à 10 secondes — conformité RGPD (article 5.1.c).

{% endif %}