Skip to content

Commit a217cbf

Browse files
authored
Add session listing
2 parents 8869a58 + c01d37f commit a217cbf

File tree

3 files changed

+54
-6
lines changed

3 files changed

+54
-6
lines changed

Repository/UserStatsLinesRepository.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public function findByPeriod(User $user, DateTime $begin, DateTime $end): array
3838
->orderBy('usl.createdAt', 'DESC')
3939
->getQuery()
4040
->getResult()
41-
;
41+
;
4242
}
4343

4444
/**
@@ -52,7 +52,7 @@ public function findByUser(User $user): array
5252
->setParameter('user', $user)
5353
->getQuery()
5454
->getResult()
55-
;
55+
;
5656
}
5757

5858
/**
@@ -69,7 +69,7 @@ public function findIfUserVisited(User $user, string $route): array
6969
->setParameter('route', $route)
7070
->getQuery()
7171
->getResult()
72-
;
72+
;
7373
}
7474

7575
/**
@@ -87,6 +87,6 @@ public function findBySession(User $user): array
8787
->orderBy('usl.createdAt', 'DESC')
8888
->getQuery()
8989
->getResult()
90-
;
90+
;
9191
}
9292
}

Resources/views/user-stats.html.twig

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
{% block main %}
2020
<div class="row">
21-
<div class="col-sm-3">
21+
<div class="col-sm-3 mb-4">
2222
<div class="card text-center">
2323
<div class="card-header">{{ 'user.stats.card.lastConnexion'|trans({}, 'UserStatsBundle') }}</div>
2424
<div class="card-body">
@@ -92,7 +92,7 @@
9292
</div>
9393
</div>
9494
</div>
95-
<div class="col-sm-12">
95+
<div class="col-sm-12 mb-4">
9696
<div class="card">
9797
<div class="card-body">
9898
<table class="table table-bordered fluffy-user-stats-table" style="width: 100%">
@@ -124,6 +124,43 @@
124124
</div>
125125
</div>
126126
</div>
127+
{% if statsSession %}
128+
<div class="col-sm-12 mb-4">
129+
<div class="card">
130+
<div class="card-header">Par session</div>
131+
<div class="card-body">
132+
<div class="accordion" id="ffAccordionSession">
133+
{% for sessionId, userStatsLines in statsSession %}
134+
<div class="accordion-item">
135+
<h2 class="accordion-header" id="heading{{ sessionId }}">
136+
<button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapse{{ sessionId }}" aria-expanded="true" aria-controls="collapse{{ sessionId }}">
137+
{{ (userStatsLines|first).createdAt|format_datetime('short', 'medium', locale=app.request.locale) }} - {{ (userStatsLines|last).createdAt|format_datetime('short', 'medium', locale=app.request.locale) }}
138+
</button>
139+
</h2>
140+
<div id="collapse{{ sessionId }}" class="accordion-collapse collapse" aria-labelledby="heading{{ sessionId }}" data-bs-parent="#ffAccordionSession">
141+
<div class="accordion-body">
142+
<ul class="list-group">
143+
{% for index, userStatsLine in userStatsLines %}
144+
<li class="list-group-item d-flex justify-content-between align-items-center">
145+
<div>
146+
<p class="mb-0"><span class="badge bg-secondary me-2">{{ userStatsLines|length - index }}</span>{{ userStatsLine.route }}</p>
147+
<a href="{{ userStatsLine.url }}"><small>{{ userStatsLine.url|length > 50 ? userStatsLine.url|slice(0, 50) ~ '...' : userStatsLine.url }}</small></a>
148+
</div>
149+
<div>
150+
{{ userStatsLine.diff|date("<span class='badge badge-secondary'>%d j</span> <span class='badge badge-secondary'>%h h</span> <span class='badge badge-secondary'>%i m</span> <span class='badge badge-secondary'>%s s</span>")|raw }}
151+
</div>
152+
</li>
153+
{% endfor %}
154+
</ul>
155+
</div>
156+
</div>
157+
</div>
158+
{% endfor %}
159+
</div>
160+
</div>
161+
</div>
162+
</div>
163+
{% endif %}
127164
</div>
128165

129166
<div class="modal fade" id="removeUsersStatsModal" tabindex="-1" role="dialog" aria-labelledby="removeUsersStatsModalLabel" aria-hidden="true">

Service/UserStatsService.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,17 @@ public function getBySession(User $user): array
9999
$sessions[$userStatsLine->getSessionId()][] = $userStatsLine;
100100
}
101101

102+
foreach ($sessions as $session) {
103+
foreach ($session as $index => $userStatLine) {
104+
if ($index === array_key_first($session)) {
105+
$session[$index]->diff = date_diff($session[$index]->getCreatedAt(), new DateTime());
106+
} else {
107+
$session[$index]->diff = date_diff($session[$index]->getCreatedAt(), $session[$index - 1]->getCreatedAt());
108+
}
109+
110+
}
111+
}
112+
102113
return $sessions;
103114
}
104115

0 commit comments

Comments
 (0)