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()) # Reset daily counter 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(exercise_data): global exercise_log, total_exercises_completed, last_reset if date.today() > last_reset: reset_tracker() exercise_name = exercise_data['data'] if exercise_log[exercise_name] < 6: exercise_log[exercise_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") with gr.Row(): for i in range(8): gr.Button(f"Exercise {i+1}", data=f"Exercise {i+1}").click( update_exercise, inputs=[], outputs=[exercise_log_text, total_exercises_completed_num, days_completed_num] ) reset_button = gr.Button("Reset Daily 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) reset_button.click( fn=reset_tracker, inputs=[], outputs=[exercise_log_text, total_exercises_completed_num, days_completed_num] ) app.launch()