diff --git a/src/Controller/AdminController.php b/src/Controller/AdminController.php index f0182e2..49c76a5 100644 --- a/src/Controller/AdminController.php +++ b/src/Controller/AdminController.php @@ -695,6 +695,18 @@ class AdminController extends AbstractController ->getQuery() ->getSingleScalarResult(); + // Bounce rate: visitors with only 1 pageview + $bouncedVisitors = (int) $em->createQueryBuilder() + ->select('COUNT(v.id)') + ->from(AnalyticsUniqId::class, 'v') + ->where('v.createdAt >= :since') + ->andWhere('(SELECT COUNT(e2.id) FROM '.AnalyticsEvent::class.' e2 WHERE e2.visitor = v.id) = 1') + ->setParameter('since', $since) + ->getQuery() + ->getSingleScalarResult(); + + $bounceRate = $visitors > 0 ? round($bouncedVisitors / $visitors * 100, 1) : 0; + $topPages = $em->createQueryBuilder() ->select('e.url, COUNT(e.id) AS hits') ->from(AnalyticsEvent::class, 'e') @@ -755,6 +767,7 @@ class AdminController extends AbstractController 'period' => $period, 'visitors' => $visitors, 'pageviews' => $pageviews, + 'bounce_rate' => $bounceRate, 'top_pages' => $topPages, 'top_referrers' => $topReferrers, 'devices' => $devices, diff --git a/templates/admin/analytics.html.twig b/templates/admin/analytics.html.twig index 521329b..e5aef0e 100644 --- a/templates/admin/analytics.html.twig +++ b/templates/admin/analytics.html.twig @@ -30,8 +30,8 @@
{{ visitors > 0 ? (pageviews / visitors)|number_format(1) : '0' }}
Periode
-{{ {today: "Aujourd'hui", '7d': '7 derniers jours', '30d': '30 derniers jours', all: 'Depuis le debut'}[period] }}
+Bounce Rate
+{{ bounce_rate }}%