Files
AICyclingCoach/tui/views/dashboard_working.py

90 lines
3.7 KiB
Python

"""
Working Dashboard view for AI Cycling Coach TUI.
Simple version that displays content without complex async loading.
"""
from textual.app import ComposeResult
from textual.containers import Container, Horizontal, Vertical, ScrollableContainer
from textual.widgets import Static, DataTable
from textual.widget import Widget
class WorkingDashboardView(Widget):
"""Simple working dashboard view."""
DEFAULT_CSS = """
.view-title {
text-align: center;
color: $accent;
text-style: bold;
margin-bottom: 1;
}
.section-title {
text-style: bold;
color: $primary;
margin: 1 0;
}
.dashboard-column {
width: 1fr;
margin: 0 1;
}
.stats-container {
border: solid $primary;
padding: 1;
margin: 1 0;
}
.stat-item {
margin: 0 1;
}
"""
def compose(self) -> ComposeResult:
"""Create dashboard layout with static content."""
yield Static("AI Cycling Coach Dashboard", classes="view-title")
with ScrollableContainer():
with Horizontal():
# Left column - Recent workouts
with Vertical(classes="dashboard-column"):
yield Static("Recent Workouts", classes="section-title")
workout_table = DataTable(id="recent-workouts")
workout_table.add_columns("Date", "Type", "Duration", "Distance", "Avg HR")
# Add sample data
workout_table.add_row("12/08 14:30", "Cycling", "75min", "32.5km", "145bpm")
workout_table.add_row("12/06 09:15", "Cycling", "90min", "45.2km", "138bpm")
workout_table.add_row("12/04 16:45", "Cycling", "60min", "25.8km", "152bpm")
workout_table.add_row("12/02 10:00", "Cycling", "120min", "68.1km", "141bpm")
yield workout_table
# Right column - Quick stats and current plan
with Vertical(classes="dashboard-column"):
# Weekly stats
with Container(classes="stats-container"):
yield Static("This Week", classes="section-title")
yield Static("Workouts: 4", classes="stat-item")
yield Static("Distance: 171.6 km", classes="stat-item")
yield Static("Time: 5h 45m", classes="stat-item")
# Active plan
with Container(classes="stats-container"):
yield Static("Current Plan", classes="section-title")
yield Static("Base Building v1 (Created: 12/01)", classes="stat-item")
yield Static("Week 2 of 4 - On Track", classes="stat-item")
# Sync status
with Container(classes="stats-container"):
yield Static("Garmin Sync", classes="section-title")
yield Static("Status: Connected ✅", classes="stat-item")
yield Static("Last: 12/08 15:30 (4 activities)", classes="stat-item")
# Database status
with Container(classes="stats-container"):
yield Static("System Status", classes="section-title")
yield Static("Database: ✅ Connected", classes="stat-item")
yield Static("Tables: ✅ All created", classes="stat-item")
yield Static("Views: ✅ Working correctly!", classes="stat-item")