the histogram now also uses real data, hurray

This commit is contained in:
2026-08-09 22:38:33 +02:00
parent 995429ba4a
commit f21bf96ff9
3 changed files with 26 additions and 12 deletions
+2 -6
View File
@@ -1,5 +1,5 @@
from flask import Flask, jsonify, render_template
from src.fetch_sessions import get_events
from src.fetch_sessions import get_events, get_last_n_days
app = Flask(__name__)
@@ -19,11 +19,7 @@ def calculate_totals(sessions):
return totals
def get_daily_minutes():
return [
{"date": "2026-03-23", "minutes": 45},
{"date": "2026-04-08", "minutes": 45},
]
return get_last_n_days(50)
# web ui
+23 -5
View File
@@ -1,6 +1,8 @@
from dotenv import load_dotenv
from datetime import datetime, timedelta
from zoneinfo import ZoneInfo
import caldav, os
import caldav, os, random
# load settings from .env
try:
@@ -31,12 +33,28 @@ def get_events():
event_list.append({
"subject":e.summary.value,
"ts":e.dtstart.value.strftime("%d.%m.%Y %H:%M"),
"date":e.dtstart.value.strftime("%Y-%m-%d"),
"minutes":int((e.dtend.value - e.dtstart.value).total_seconds() / 60)
# "start":e.dtstart.value,
# "end":e.dtend.value,
})
return event_list
def get_sessions():
def get_last_n_days(n: int):
events = get_events()
days = []
today = datetime.now().date()
for i in range(n):
day = today - timedelta(days=i)
days.append(
{"date":day.strftime("%Y-%m-%d"), "minutes":0}
)
# populate minutes field
for event in events:
date = event["date"]
for day in days:
if date == day["date"]:
day["minutes"] += event["minutes"]
return days
+1 -1
View File
@@ -41,7 +41,7 @@ function renderDailyDots(dailyMinutes) {
dailyMinutes.forEach(d => {
const date = new Date(d.date);
const size = 8 + (d.minutes / maxMin) * 28; // 8px..36px
const size = 16 + (d.minutes / maxMin) * 28; // 8px..36px
const col = document.createElement("div");
col.className = "day-col";
col.innerHTML = `