clementBE commited on
Commit
2ecc40f
·
verified ·
1 Parent(s): 913d3b3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +18 -9
app.py CHANGED
@@ -110,13 +110,17 @@ def build_html_transcript(text, coded_df):
110
  # ------------------------------
111
  # APPLY CODE
112
  # ------------------------------
113
- def apply_code(coded_df, file_id, full_text, segment, code, *metadata_values):
114
  if not segment:
115
- return coded_df, "⚠️ Select a segment first."
116
  if not code:
117
- return coded_df, "⚠️ Enter or select a code first."
118
  if not file_id:
119
- return coded_df, "⚠️ Upload a file first."
 
 
 
 
120
 
121
  meta_dict = dict(zip(METADATA_FIELDS.keys(), metadata_values))
122
  context = "Context unavailable"
@@ -136,7 +140,7 @@ def apply_code(coded_df, file_id, full_text, segment, code, *metadata_values):
136
  **meta_dict
137
  }
138
  new_df = pd.concat([coded_df, pd.DataFrame([new_row])], ignore_index=True)
139
- return new_df, f"✅ Segment coded as '{code}'!"
140
 
141
  # ------------------------------
142
  # EXPORT XLSX
@@ -154,7 +158,7 @@ def export_excel(df):
154
  with gr.Blocks(title="Interactive Qualitative Coding") as demo:
155
  gr.Markdown("# 📑 Interactive Qualitative Coding Tool")
156
 
157
- # states
158
  file_id = gr.State("")
159
  full_text = gr.State("")
160
  coded_df_state = gr.State(get_empty_df())
@@ -201,12 +205,17 @@ with gr.Blocks(title="Interactive Qualitative Coding") as demo:
201
  # Fill code input when selecting dropdown
202
  code_dropdown.change(lambda x: x, inputs=code_dropdown, outputs=code_input)
203
 
204
- # Apply code
205
  code_btn.click(
206
  fn=apply_code,
207
- inputs=[coded_df_state, file_id, full_text, segment_box, code_input] + metadata_inputs,
208
- outputs=[coded_df_state, status]
209
  )
 
 
 
 
 
210
  coded_df_state.change(lambda x: x, inputs=coded_df_state, outputs=table)
211
 
212
  # Export
 
110
  # ------------------------------
111
  # APPLY CODE
112
  # ------------------------------
113
+ def apply_code(coded_df, file_id, full_text, segment, code, code_list, *metadata_values):
114
  if not segment:
115
+ return coded_df, code_list, "⚠️ Select a segment first."
116
  if not code:
117
+ return coded_df, code_list, "⚠️ Enter or select a code first."
118
  if not file_id:
119
+ return coded_df, code_list, "⚠️ Upload a file first."
120
+
121
+ # Update code list dynamically
122
+ if code not in code_list:
123
+ code_list.append(code)
124
 
125
  meta_dict = dict(zip(METADATA_FIELDS.keys(), metadata_values))
126
  context = "Context unavailable"
 
140
  **meta_dict
141
  }
142
  new_df = pd.concat([coded_df, pd.DataFrame([new_row])], ignore_index=True)
143
+ return new_df, code_list, f"✅ Segment coded as '{code}'!"
144
 
145
  # ------------------------------
146
  # EXPORT XLSX
 
158
  with gr.Blocks(title="Interactive Qualitative Coding") as demo:
159
  gr.Markdown("# 📑 Interactive Qualitative Coding Tool")
160
 
161
+ # States
162
  file_id = gr.State("")
163
  full_text = gr.State("")
164
  coded_df_state = gr.State(get_empty_df())
 
205
  # Fill code input when selecting dropdown
206
  code_dropdown.change(lambda x: x, inputs=code_dropdown, outputs=code_input)
207
 
208
+ # Apply code (updates coded data and code list)
209
  code_btn.click(
210
  fn=apply_code,
211
+ inputs=[coded_df_state, file_id, full_text, segment_box, code_input, code_categories_state] + metadata_inputs,
212
+ outputs=[coded_df_state, code_categories_state, status]
213
  )
214
+
215
+ # Update dropdown when code list changes
216
+ code_categories_state.change(lambda codes: gr.update(choices=codes), inputs=code_categories_state, outputs=code_dropdown)
217
+
218
+ # Update table when coded_df changes
219
  coded_df_state.change(lambda x: x, inputs=coded_df_state, outputs=table)
220
 
221
  # Export