the histogram now also uses real data, hurray
This commit is contained in:
+2
-6
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 = `
|
||||
|
||||
Reference in New Issue
Block a user