Spaces:
Sleeping
Sleeping
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() | |