Exclude manual times from graphs

Fixes #35
This commit is contained in:
Lukáš Kucharczyk 2023-01-16 19:39:24 +01:00
parent 8b7ed90b49
commit 9534492f17
2 changed files with 11 additions and 4 deletions

View File

@ -1,9 +1,10 @@
## Unreleased ## 0.2.4 / 2023-01-16 19:39+01:00
* Fixed * Fixed
* When filtering by game, the "Filtering by (...)" text would erroneously list an unrelated platform * When filtering by game, the "Filtering by (...)" text would erroneously list an unrelated platform
* Playtime graph would display timeline backwards * Playtime graph would display timeline backwards
* Playtime graph with many dates would overlap (https://git.kucharczyk.xyz/lukas/timetracker/issues/34) * Playtime graph with many dates would overlap (https://git.kucharczyk.xyz/lukas/timetracker/issues/34)
* Manually added times (= without end timestamp) would make graphs look ugly and noisy (https://git.kucharczyk.xyz/lukas/timetracker/issues/35)
## 0.2.3 / 2023-01-15 23:13+01:00 ## 0.2.3 / 2023-01-15 23:13+01:00

View File

@ -17,11 +17,12 @@ def key_value_to_value_value(data):
def playtime_over_time_chart(queryset: QuerySet = Session.objects): def playtime_over_time_chart(queryset: QuerySet = Session.objects):
microsecond_in_second = 1000000 microsecond_in_second = 1000000
result = ( result = (
queryset.annotate(date=TruncDay("timestamp_start")) queryset.exclude(timestamp_end__exact=None)
.annotate(date=TruncDay("timestamp_start"))
.values("date") .values("date")
.annotate( .annotate(
hours=Sum( hours=Sum(
F("duration_calculated") + F("duration_manual"), F("duration_calculated"),
output_field=IntegerField(), output_field=IntegerField(),
) )
) )
@ -37,7 +38,12 @@ def playtime_over_time_chart(queryset: QuerySet = Session.objects):
running_total += int(item["hours"] / (3600 * microsecond_in_second)) running_total += int(item["hours"] / (3600 * microsecond_in_second))
values.append(running_total) values.append(running_total)
data = [keys, values] data = [keys, values]
return get_chart(data, title="Playtime over time", xlabel="Date", ylabel="Hours") return get_chart(
data,
title="Playtime over time (manual excluded)",
xlabel="Date",
ylabel="Hours",
)
def get_graph(): def get_graph():