Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from streamlit_mic_recorder import mic_recorder | |
| import json | |
| from pathlib import Path | |
| # Initialize session state for tasks | |
| if 'tasks' not in st.session_state: | |
| st.session_state.tasks = { | |
| day: [] for day in ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] | |
| } | |
| # Title and setup | |
| st.title("π Student Study Tracker") | |
| days = list(st.session_state.tasks.keys()) | |
| # Progress bar (total tasks completed) | |
| total_tasks = sum(len([task for task in st.session_state.tasks[day] if task['checked']]) for day in days) | |
| st.progress(total_tasks / (len(days)*3)) # Adjust denominator as needed | |
| # Sidebar for voice input (placeholder) | |
| st.sidebar.header("π€ Add Tasks with Voice") | |
| voice_note = mic_recorder(start_prompt="π€ Record Task", stop_prompt="βΉοΈ Stop", key='voice_recorder') | |
| if voice_note and 'bytes' in voice_note: | |
| st.sidebar.warning("β οΈ Voice-to-text integration needed (e.g., OpenAI Whisper).") | |
| # Create tabs for days | |
| tabs = st.tabs(days) | |
| for i, day in enumerate(days): | |
| with tabs[i]: | |
| # Display existing tasks for the day | |
| for task_idx, task in enumerate(st.session_state.tasks[day]): | |
| col1, col2 = st.columns([0.9, 0.1]) | |
| with col1: | |
| # Editable task text | |
| new_text = st.text_input( | |
| f"Task {task_idx + 1}", | |
| value=task['text'], | |
| key=f"task_{day}_{task_idx}_text" | |
| ) | |
| st.session_state.tasks[day][task_idx]['text'] = new_text | |
| with col2: | |
| # Checkbox to mark completion | |
| is_checked = st.checkbox( | |
| "Done", | |
| value=task['checked'], | |
| key=f"task_{day}_{task_idx}_checked" | |
| ) | |
| st.session_state.tasks[day][task_idx]['checked'] = is_checked | |
| # Add new task button | |
| if st.button(f"β Add Task for {day}"): | |
| st.session_state.tasks[day].append({'text': '', 'checked': False}) | |
| # Save data to JSON | |
| if st.button("πΎ Save All Tasks"): | |
| data = st.session_state.tasks | |
| Path("tasks_data.json").write_text(json.dumps(data)) | |
| st.success("Tasks saved!") |