import gradio as gr from datetime import date, timedelta # Initialize counters and logs total_exercises_completed = 0 days_completed = 0 last_reset = date.today() - timedelta(days=1) exercise_log = {f"Exercise {i+1}": 0 for i in range(8)} def reset_tracker(): global total_exercises_completed, days_completed, last_reset, exercise_log if date.today() > last_reset: all_done_today = all(count >= 6 for count in exercise_log.values()) if all_done_today: days_completed += 1 exercise_log = {f"Exercise {i+1}": 0 for i in range(8)} last_reset = date.today() total_exercises_completed = sum(exercise_log.values()) exercise_log_str = "\n".join(f"{name}: {count}" for name, count in exercise_log.items()) return exercise_log_str, total_exercises_completed, days_completed def update_exercise(button_name): global exercise_log, total_exercises_completed, last_reset if date.today() > last_reset: reset_tracker() if exercise_log[button_name] < 6: exercise_log[button_name] += 1 total_exercises_completed += 1 # Increment on each exercise completion. exercise_log_str = "\n".join(f"{name}: {count}" for name, count in exercise_log.items()) return exercise_log_str, total_exercises_completed, days_completed with gr.Blocks() as app: gr.Markdown("## Physical Therapy Exercise Tracker") exercise_log_text = gr.Textbox(label="Exercise Log", lines=10, value="Please press an exercise button to start tracking") total_exercises_completed_num = gr.Number(label="Total Exercises Completed", value=total_exercises_completed) days_completed_num = gr.Number(label="Days Completed", value=days_completed) with gr.Row(): for i in range(8): btn = gr.Button(f"Exercise {i+1}") btn.click( fn=update_exercise, inputs=[btn], outputs=[exercise_log_text, total_exercises_completed_num, days_completed_num] ) reset_button = gr.Button("Reset Daily Tracker") reset_button.click( fn=reset_tracker, inputs=[], outputs=[exercise_log_text, total_exercises_completed_num, days_completed_num] ) app.launch()