first commit
This commit is contained in:
62
src/api/routes/dashboard.py
Normal file
62
src/api/routes/dashboard.py
Normal file
@@ -0,0 +1,62 @@
|
||||
"""Dashboard route."""
|
||||
from fastapi import APIRouter, Request
|
||||
from fastapi.responses import HTMLResponse
|
||||
from fastapi.templating import Jinja2Templates
|
||||
from pathlib import Path
|
||||
from datetime import datetime
|
||||
from src.scheduler.briefings import (
|
||||
get_todays_events,
|
||||
get_priority_tasks,
|
||||
get_tasks_due_soon,
|
||||
get_waiting_items,
|
||||
)
|
||||
from src.parsers.project_parser import ProjectParser
|
||||
from src.tools.file_ops import read_file
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
BASE_DIR = Path(__file__).resolve().parent.parent.parent
|
||||
templates = Jinja2Templates(directory=str(BASE_DIR / "web" / "templates"))
|
||||
|
||||
|
||||
@router.get("/dashboard", response_class=HTMLResponse)
|
||||
async def dashboard(request: Request):
|
||||
"""Dashboard page."""
|
||||
# Get today's data
|
||||
today = datetime.now().strftime("%A, %B %d, %Y")
|
||||
events = get_todays_events()
|
||||
priority_tasks = get_priority_tasks(["A", "B"])
|
||||
due_soon = get_tasks_due_soon(3)
|
||||
waiting = get_waiting_items()
|
||||
|
||||
# Get active projects
|
||||
try:
|
||||
content = read_file("projects.txt")
|
||||
all_projects = ProjectParser.parse_file(content)
|
||||
active_projects = [p for p in all_projects if p.status == "active"]
|
||||
except:
|
||||
active_projects = []
|
||||
|
||||
# Stats
|
||||
stats = {
|
||||
"events_today": len(events),
|
||||
"priority_tasks": len(priority_tasks),
|
||||
"due_soon": len(due_soon),
|
||||
"active_projects": len(active_projects),
|
||||
"waiting_items": len(waiting),
|
||||
}
|
||||
|
||||
return templates.TemplateResponse(
|
||||
"dashboard.html",
|
||||
{
|
||||
"request": request,
|
||||
"page": "dashboard",
|
||||
"today": today,
|
||||
"events": events,
|
||||
"priority_tasks": priority_tasks[:5], # Top 5
|
||||
"due_soon": due_soon[:3], # Top 3
|
||||
"active_projects": active_projects[:5], # Top 5
|
||||
"waiting": waiting[:3], # Top 3
|
||||
"stats": stats,
|
||||
}
|
||||
)
|
||||
Reference in New Issue
Block a user