MonsterBoyTabs commited on
Commit
d7d16f5
ยท
verified ยท
1 Parent(s): dc5fcb0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +46 -51
app.py CHANGED
@@ -1,65 +1,60 @@
1
  import streamlit as st
 
2
  import json
3
  from pathlib import Path
4
- from datetime import datetime
 
 
 
 
 
5
 
6
  # Title and setup
7
  st.title("๐Ÿ“š Student Study Tracker")
8
- days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
9
-
10
- # Initialize session state
11
- if 'notes' not in st.session_state:
12
- st.session_state.notes = {day: "" for day in days}
13
- if 'checked' not in st.session_state:
14
- st.session_state.checked = {day: False for day in days}
15
 
16
- # Progress Bar
17
- completed_days = sum(st.session_state.checked.values())
18
- st.progress(completed_days / 7)
19
 
20
- # Sidebar for reset and current day
21
- st.sidebar.markdown("## Options")
22
- if st.sidebar.button("โ™ป๏ธ Reset All"):
23
- st.session_state.notes = {day: "" for day in days}
24
- st.session_state.checked = {day: False for day in days}
25
- st.success("All progress reset!")
26
 
27
- current_day = datetime.today().strftime('%A')
28
- st.sidebar.markdown(f"## Today is: {current_day}")
29
 
30
- # Create tabs for each day
31
  tabs = st.tabs(days)
32
 
33
  for i, day in enumerate(days):
34
  with tabs[i]:
35
- # Text area for notes
36
- st.session_state.notes[day] = st.text_area(
37
- f"What did you learn on {day}?",
38
- value=st.session_state.notes[day],
39
- height=150
40
- )
41
-
42
- # Checkbox to mark completion
43
- st.session_state.checked[day] = st.checkbox(
44
- f"Mark as completed ({day})",
45
- value=st.session_state.checked[day]
46
- )
47
-
48
- # Visual feedback for completed days
49
- if st.session_state.checked[day]:
50
- st.success(f"โœ… Great job completing {day}'s work!")
51
- st.markdown(f"<div style='background-color:#e6ffe6; padding:10px; border-radius:5px;'>"
52
- f"<del>{st.session_state.notes[day]}</del></div>",
53
- unsafe_allow_html=True)
54
- else:
55
- st.warning("โš ๏ธ Work pending for today!")
56
-
57
- # Save data to a JSON file
58
- if st.button("๐Ÿ’พ Save All Progress"):
59
- data = {
60
- "notes": st.session_state.notes,
61
- "checked": st.session_state.checked
62
- }
63
-
64
- Path("study_data.json").write_text(json.dumps(data))
65
- st.success("Data saved successfully!")
 
1
  import streamlit as st
2
+ from streamlit_mic_recorder import mic_recorder
3
  import json
4
  from pathlib import Path
5
+
6
+ # Initialize session state for tasks
7
+ if 'tasks' not in st.session_state:
8
+ st.session_state.tasks = {
9
+ day: [] for day in ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
10
+ }
11
 
12
  # Title and setup
13
  st.title("๐Ÿ“š Student Study Tracker")
14
+ days = list(st.session_state.tasks.keys())
 
 
 
 
 
 
15
 
16
+ # Progress bar (total tasks completed)
17
+ total_tasks = sum(len([task for task in st.session_state.tasks[day] if task['checked']]) for day in days)
18
+ st.progress(total_tasks / (len(days)*3)) # Adjust denominator as needed
19
 
20
+ # Sidebar for voice input (placeholder)
21
+ st.sidebar.header("๐ŸŽค Add Tasks with Voice")
22
+ voice_note = mic_recorder(start_prompt="๐ŸŽค Record Task", stop_prompt="โน๏ธ Stop", key='voice_recorder')
 
 
 
23
 
24
+ if voice_note and 'bytes' in voice_note:
25
+ st.sidebar.warning("โš ๏ธ Voice-to-text integration needed (e.g., OpenAI Whisper).")
26
 
27
+ # Create tabs for days
28
  tabs = st.tabs(days)
29
 
30
  for i, day in enumerate(days):
31
  with tabs[i]:
32
+ # Display existing tasks for the day
33
+ for task_idx, task in enumerate(st.session_state.tasks[day]):
34
+ col1, col2 = st.columns([0.9, 0.1])
35
+ with col1:
36
+ # Editable task text
37
+ new_text = st.text_input(
38
+ f"Task {task_idx + 1}",
39
+ value=task['text'],
40
+ key=f"task_{day}_{task_idx}_text"
41
+ )
42
+ st.session_state.tasks[day][task_idx]['text'] = new_text
43
+ with col2:
44
+ # Checkbox to mark completion
45
+ is_checked = st.checkbox(
46
+ "Done",
47
+ value=task['checked'],
48
+ key=f"task_{day}_{task_idx}_checked"
49
+ )
50
+ st.session_state.tasks[day][task_idx]['checked'] = is_checked
51
+
52
+ # Add new task button
53
+ if st.button(f"โž• Add Task for {day}"):
54
+ st.session_state.tasks[day].append({'text': '', 'checked': False})
55
+
56
+ # Save data to JSON
57
+ if st.button("๐Ÿ’พ Save All Tasks"):
58
+ data = st.session_state.tasks
59
+ Path("tasks_data.json").write_text(json.dumps(data))
60
+ st.success("Tasks saved!")