Increase session count on game overview when starting a new session
Django CI/CD / test (push) Successful in 50s Details
Django CI/CD / build-and-push (push) Successful in 1m32s Details

This commit is contained in:
Lukáš Kucharczyk 2024-01-15 21:41:25 +01:00
parent e2b7ff2e15
commit 4b75a1dea9
Signed by: lukas
SSH Key Fingerprint: SHA256:vMuSwvwAvcT6htVAioMP7rzzwMQNi3roESyhv+nAxeg
3 changed files with 22 additions and 4 deletions

View File

@ -2,6 +2,7 @@
## Improved ## Improved
* mark refunded purchases red on game overview * mark refunded purchases red on game overview
* increase session count on game overview when starting a new session
## Fixed ## Fixed
* Fix title not being displayed on the Recent sessions page * Fix title not being displayed on the Recent sessions page

View File

@ -57,13 +57,14 @@
</ul> </ul>
<h1 class="text-3xl mt-4 mb-1 flex gap-2 items-center"> <h1 class="text-3xl mt-4 mb-1 flex gap-2 items-center">
Sessions Sessions
<span class="dark:text-slate-500">({{ session_count }})</span> <span class="dark:text-slate-500" id="session-count">({{ session_count }})</span>
{% url 'view_game_start_session_from_session' latest_session_id as add_session_link %} {% url 'view_game_start_session_from_session' latest_session_id as add_session_link %}
<a <a
class="truncate max-w-xs py-1 px-2 text-xs bg-green-600 hover:bg-green-700 focus:ring-green-500 focus:ring-offset-blue-200 text-white transition ease-in duration-200 text-center font-semibold shadow-md focus:outline-none focus:ring-2 focus:ring-offset-2 rounded-sm" class="truncate max-w-xs py-1 px-2 text-xs bg-green-600 hover:bg-green-700 focus:ring-green-500 focus:ring-offset-blue-200 text-white transition ease-in duration-200 text-center font-semibold shadow-md focus:outline-none focus:ring-2 focus:ring-offset-2 rounded-sm"
title="Start new session" title="Start new session"
href="{{ add_session_link }}" href="{{ add_session_link }}"
hx-get="{{ add_session_link }}" hx-get="{{ add_session_link }}"
hx-vals="js:{session_count:getSessionCount()}"
hx-target="#session-list" hx-target="#session-list"
hx-swap="afterbegin" hx-swap="afterbegin"
>New</a> >New</a>
@ -85,6 +86,7 @@
hx-get="{{ end_session_url }}" hx-get="{{ end_session_url }}"
hx-target="closest li" hx-target="closest li"
hx-swap="outerHTML" hx-swap="outerHTML"
hx-vals="js:{session_count:getSessionCount()}"
hx-indicator="#indicator" hx-indicator="#indicator"
> >
<svg xmlns="http://www.w3.org/2000/svg" fill="#ffffff" class="h-3" x="0px" y="0px" viewBox="0 0 24 24"> <svg xmlns="http://www.w3.org/2000/svg" fill="#ffffff" class="h-3" x="0px" y="0px" viewBox="0 0 24 24">
@ -95,8 +97,16 @@
{% endif %} {% endif %}
</li> </li>
<li class="sm:pl-4 italic">{{ session.note|linebreaks }}</li> <li class="sm:pl-4 italic">{{ session.note|linebreaks }}</li>
<div class="hidden" hx-swap-oob="innerHTML:#session-count">
({{ session_count }})
</div>
{% endpartialdef %} {% endpartialdef %}
{% endfor %} {% endfor %}
</ul> </ul>
</div> </div>
<script>
function getSessionCount() {
return document.getElementById('session-count').textContent.match("[0-9]+");
}
</script>
{% endblock content %} {% endblock content %}

View File

@ -1,5 +1,6 @@
from datetime import datetime from datetime import datetime
from typing import Any, Callable from typing import Any, Callable
import re
from django.db.models import ( from django.db.models import (
Avg, Avg,
@ -247,7 +248,10 @@ def clone_session_by_id(session_id: int) -> Session:
def new_session_from_existing_session(request, session_id: int, template: str = ""): def new_session_from_existing_session(request, session_id: int, template: str = ""):
session = clone_session_by_id(session_id) session = clone_session_by_id(session_id)
if request.htmx: if request.htmx:
context = {"session": session} context = {
"session": session,
"session_count": int(request.GET.get("session_count", 0)) + 1,
}
return render(request, template, context) return render(request, template, context)
return redirect("list_sessions") return redirect("list_sessions")
@ -258,7 +262,10 @@ def end_session(request, session_id: int, template: str = ""):
session.timestamp_end = timezone.now() session.timestamp_end = timezone.now()
session.save() session.save()
if request.htmx: if request.htmx:
context = {"session": session} context = {
"session": session,
"session_count": request.GET.get("session_count", 0),
}
return render(request, template, context) return render(request, template, context)
return redirect("list_sessions") return redirect("list_sessions")