improve display of game names, durations

This commit is contained in:
Lukáš Kucharczyk 2024-08-11 20:29:47 +02:00
parent b28c42d945
commit 498cd69328
Signed by: lukas
SSH Key Fingerprint: SHA256:vMuSwvwAvcT6htVAioMP7rzzwMQNi3roESyhv+nAxeg
4 changed files with 23 additions and 9 deletions

View File

@ -7,6 +7,7 @@ from django.shortcuts import render
from django.template.loader import render_to_string from django.template.loader import render_to_string
from django.urls import reverse from django.urls import reverse
from common.utils import truncate_with_popover
from games.models import Game from games.models import Game
from games.views import dateformat from games.views import dateformat
@ -44,8 +45,12 @@ def list_games(request: HttpRequest) -> HttpResponse:
], ],
"rows": [ "rows": [
[ [
game.name, truncate_with_popover(game.name),
game.sort_name, truncate_with_popover(
game.sort_name
if game.sort_name is not None and game.name != game.sort_name
else "(identical)"
),
game.year_released, game.year_released,
game.wikidata, game.wikidata,
game.created_at.strftime(dateformat), game.created_at.strftime(dateformat),

View File

@ -2,12 +2,12 @@ from typing import Any
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.core.paginator import Paginator from django.core.paginator import Paginator
from django.db.models.manager import BaseManager
from django.http import HttpRequest, HttpResponse from django.http import HttpRequest, HttpResponse
from django.shortcuts import render from django.shortcuts import render
from django.template.loader import render_to_string from django.template.loader import render_to_string
from django.urls import reverse from django.urls import reverse
from common.utils import truncate_with_popover
from games.models import Purchase from games.models import Purchase
from games.views import dateformat from games.views import dateformat
@ -50,7 +50,7 @@ def list_purchases(request: HttpRequest) -> HttpResponse:
], ],
"rows": [ "rows": [
[ [
purchase.edition.name, truncate_with_popover(purchase.edition.name),
purchase.platform, purchase.platform,
purchase.price, purchase.price,
purchase.price_currency, purchase.price_currency,

View File

@ -8,8 +8,15 @@ from django.template.loader import render_to_string
from django.urls import reverse from django.urls import reverse
from common.time import format_duration from common.time import format_duration
from common.utils import truncate_with_popover
from games.models import Session from games.models import Session
from games.views import dateformat, datetimeformat, timeformat from games.views import (
dateformat,
datetimeformat,
durationformat,
durationformat_manual,
timeformat,
)
@login_required @login_required
@ -46,15 +53,15 @@ def list_sessions(request: HttpRequest) -> HttpResponse:
], ],
"rows": [ "rows": [
[ [
session.purchase.edition.name, truncate_with_popover(session.purchase.edition.name),
f"{session.timestamp_start.strftime(datetimeformat)}{f"{session.timestamp_end.strftime(timeformat)}" if session.timestamp_end else ""}", f"{session.timestamp_start.strftime(datetimeformat)}{f"{session.timestamp_end.strftime(timeformat)}" if session.timestamp_end else ""}",
( (
format_duration(session.duration_calculated, "%2.1H hours") format_duration(session.duration_calculated, durationformat)
if session.duration_calculated if session.duration_calculated
else "-" else "-"
), ),
( (
format_duration(session.duration_manual) format_duration(session.duration_manual, durationformat_manual)
if session.duration_manual if session.duration_manual
else "-" else "-"
), ),

View File

@ -29,7 +29,9 @@ from .models import Edition, Game, Platform, Purchase, Session
dateformat: str = "%d/%m/%Y" dateformat: str = "%d/%m/%Y"
datetimeformat: str = "%d/%m/%Y %H:%M" datetimeformat: str = "%d/%m/%Y %H:%M"
timeformat = "%H:%M" timeformat: str = "%H:%M"
durationformat: str = "%2.1H hours"
durationformat_manual: str = "%H hours"
def model_counts(request: HttpRequest) -> dict[str, bool]: def model_counts(request: HttpRequest) -> dict[str, bool]: