Sina Media Lab commited on
Commit
ce2a304
·
1 Parent(s): 557ca03
Files changed (1) hide show
  1. app.py +31 -22
app.py CHANGED
@@ -21,10 +21,10 @@ if 'module_question_count' not in st.session_state:
21
  st.session_state.module_question_count = {}
22
  if 'pdf_data' not in st.session_state:
23
  st.session_state.pdf_data = None
24
- if 'next_disabled' not in st.session_state:
25
- st.session_state.next_disabled = True
26
  if 'selected_answer' not in st.session_state:
27
  st.session_state.selected_answer = None
 
 
28
 
29
  def reset_pdf_cache():
30
  st.session_state.pdf_data = None
@@ -107,12 +107,10 @@ def generate_new_question(module_name, module):
107
  def navigate_question(direction):
108
  if direction == "prev" and st.session_state.current_index > 0:
109
  st.session_state.current_index -= 1
110
- elif direction == "next":
111
- new_question = generate_new_question(st.session_state.current_module, modules[st.session_state.current_module])
112
- st.session_state.questions.append(new_question)
113
- st.session_state.current_index = len(st.session_state.questions) - 1
114
- st.session_state.next_disabled = True
115
- st.session_state.selected_answer = None
116
 
117
  # Load all modules dynamically
118
  modules = load_modules()
@@ -133,8 +131,8 @@ if selected_module != st.session_state.current_module:
133
  st.session_state.questions = [generate_new_question(selected_module, modules[selected_module])]
134
  st.session_state.module_question_count[selected_module] = 0
135
  st.session_state.module_correct_count[selected_module] = 0
136
- st.session_state.next_disabled = True
137
  st.session_state.selected_answer = None
 
138
 
139
  # Load the current module's question
140
  current_question = st.session_state.questions[st.session_state.current_index]
@@ -149,7 +147,7 @@ with col1:
149
  if st.button("⬅️ Prev", disabled=st.session_state.current_index == 0):
150
  navigate_question("prev")
151
  with col2:
152
- if st.button("➡️ Next", disabled=st.session_state.next_disabled):
153
  navigate_question("next")
154
  with col3:
155
  if len(st.session_state.questions) > 0:
@@ -172,21 +170,32 @@ with st.form(key=f'question_form_{st.session_state.current_index}'):
172
  key=f"question_{st.session_state.current_index}_options",
173
  index=None # Ensure no option is pre-selected
174
  )
175
- submit_button = st.form_submit_button(label="Submit")
 
 
 
 
176
 
177
  # Handle button state and answer submission
178
  if submit_button:
179
- if selected_answer is not None:
180
- # Process the answer
181
- current_question['selected'] = selected_answer
182
- current_question['answered'] = True
183
- st.session_state.module_question_count[selected_module] += 1
184
-
185
- if selected_answer == current_question['correct_answer']:
186
- st.session_state.correct_count += 1
187
- st.session_state.module_correct_count[selected_module] += 1
188
-
189
- st.session_state.next_disabled = False
 
 
 
 
 
 
 
190
 
191
  # Show correct/incorrect feedback after submission
192
  if current_question.get('answered', False):
 
21
  st.session_state.module_question_count = {}
22
  if 'pdf_data' not in st.session_state:
23
  st.session_state.pdf_data = None
 
 
24
  if 'selected_answer' not in st.session_state:
25
  st.session_state.selected_answer = None
26
+ if 'show_next_button' not in st.session_state:
27
+ st.session_state.show_next_button = False
28
 
29
  def reset_pdf_cache():
30
  st.session_state.pdf_data = None
 
107
  def navigate_question(direction):
108
  if direction == "prev" and st.session_state.current_index > 0:
109
  st.session_state.current_index -= 1
110
+ st.session_state.show_next_button = True
111
+ elif direction == "next" and st.session_state.current_index < len(st.session_state.questions) - 1:
112
+ st.session_state.current_index += 1
113
+ st.session_state.show_next_button = True
 
 
114
 
115
  # Load all modules dynamically
116
  modules = load_modules()
 
131
  st.session_state.questions = [generate_new_question(selected_module, modules[selected_module])]
132
  st.session_state.module_question_count[selected_module] = 0
133
  st.session_state.module_correct_count[selected_module] = 0
 
134
  st.session_state.selected_answer = None
135
+ st.session_state.show_next_button = False
136
 
137
  # Load the current module's question
138
  current_question = st.session_state.questions[st.session_state.current_index]
 
147
  if st.button("⬅️ Prev", disabled=st.session_state.current_index == 0):
148
  navigate_question("prev")
149
  with col2:
150
+ if st.button("➡️ Next", disabled=st.session_state.current_index >= len(st.session_state.questions) - 1):
151
  navigate_question("next")
152
  with col3:
153
  if len(st.session_state.questions) > 0:
 
170
  key=f"question_{st.session_state.current_index}_options",
171
  index=None # Ensure no option is pre-selected
172
  )
173
+
174
+ # Determine button label
175
+ button_label = "Submit" if not st.session_state.show_next_button else "Next Question"
176
+
177
+ submit_button = st.form_submit_button(label=button_label)
178
 
179
  # Handle button state and answer submission
180
  if submit_button:
181
+ if st.session_state.show_next_button:
182
+ # Move to the next question
183
+ new_question = generate_new_question(selected_module, modules[selected_module])
184
+ st.session_state.questions.append(new_question)
185
+ st.session_state.current_index = len(st.session_state.questions) - 1
186
+ st.session_state.show_next_button = False
187
+ else:
188
+ if selected_answer is not None:
189
+ # Process the answer
190
+ current_question['selected'] = selected_answer
191
+ current_question['answered'] = True
192
+ st.session_state.module_question_count[selected_module] += 1
193
+
194
+ if selected_answer == current_question['correct_answer']:
195
+ st.session_state.correct_count += 1
196
+ st.session_state.module_correct_count[selected_module] += 1
197
+
198
+ st.session_state.show_next_button = True
199
 
200
  # Show correct/incorrect feedback after submission
201
  if current_question.get('answered', False):