05/23 Phase 12
This commit is contained in:
@@ -11,11 +11,31 @@ Sections:
|
||||
|
||||
import tkinter as tk
|
||||
from tkinter import ttk
|
||||
from datetime import date, timedelta
|
||||
|
||||
from db.database import get_db_stats
|
||||
from db.models import get_all_games, get_last_draw, get_draw_count, get_predictions
|
||||
from core.analyzer import frequency_analysis
|
||||
|
||||
# Weekday indices: Monday=0 … Sunday=6
|
||||
_DRAW_DAYS: dict[str, list[int]] = {
|
||||
"Powerball": [0, 2, 5], # Mon, Wed, Sat
|
||||
"Mega Millions": [1, 4], # Tue, Fri
|
||||
}
|
||||
|
||||
|
||||
def _next_draw_date(game_name: str, from_date: date | None = None) -> str:
|
||||
"""Return the next scheduled draw date as 'Day, Mon DD' (e.g. 'Sat, May 24')."""
|
||||
draw_days = _DRAW_DAYS.get(game_name)
|
||||
if not draw_days:
|
||||
return ""
|
||||
today = from_date or date.today()
|
||||
for delta in range(1, 8):
|
||||
candidate = today + timedelta(days=delta)
|
||||
if candidate.weekday() in draw_days:
|
||||
return f"{candidate.strftime('%a, %b')} {candidate.day}"
|
||||
return ""
|
||||
|
||||
_HEADER_FONT = ("TkDefaultFont", 10, "bold")
|
||||
_CARD_FONT = ("TkDefaultFont", 9)
|
||||
_NUMBER_FONT = ("TkDefaultFont", 12, "bold")
|
||||
@@ -122,6 +142,11 @@ class DashboardScreen(ttk.Frame):
|
||||
ttk.Label(card, text=f"Multiplier: {draw['multiplier']}",
|
||||
foreground="#777777", font=_CARD_FONT).pack(anchor="w")
|
||||
|
||||
next_draw = _next_draw_date(game["name"])
|
||||
if next_draw:
|
||||
ttk.Label(card, text=f"Next draw: {next_draw}",
|
||||
foreground="#117a65", font=_CARD_FONT).pack(anchor="w", pady=(6, 0))
|
||||
|
||||
def _refresh_db_summary(self):
|
||||
for w in self._db_body.winfo_children():
|
||||
w.destroy()
|
||||
|
||||
Reference in New Issue
Block a user