duongthienz commited on
Commit
1ef22d4
·
verified ·
1 Parent(s): 64e93e0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +33 -19
app.py CHANGED
@@ -179,13 +179,15 @@ def updateCategoryOptions(fileName):
179
  return
180
  currAnnotation, _ = st.session_state.results[fileName]
181
  speakerNames = list(currAnnotation.labels())
182
- # Build reverse map: display name -> original SPEAKER_## label
183
- renames = st.session_state.speakerRenames.get(fileName, {})
184
- display_to_raw = {v: k for k, v in renames.items()}
 
 
 
185
  unusedSpeakers = copy.deepcopy(speakerNames)
186
  for i, category in enumerate(st.session_state['categories']):
187
- # Widget stores display names; reverse-map back to SPEAKER_## for storage
188
- display_choices = copy.deepcopy(st.session_state[f'multiselect_{category}'])
189
  raw_choices = [display_to_raw.get(d, d) for d in display_choices]
190
  st.session_state["categorySelect"][fileName][i] = raw_choices
191
  for sp in raw_choices:
@@ -198,12 +200,18 @@ def updateCategoryOptions(fileName):
198
  def updateMultiSelect():
199
  fileName = st.session_state["select_currFile"]
200
  st.session_state.resetResult = True
201
- renames = st.session_state.speakerRenames.get(fileName, {})
202
- for i, category in enumerate(st.session_state['categories']):
203
- # categorySelect stores SPEAKER_## — convert to display names for the widget
204
- raw_choices = st.session_state['categorySelect'][fileName][i]
205
- display_choices = [renames.get(sp, sp) for sp in raw_choices]
206
- st.session_state[f'multiselect_{category}'] = display_choices
 
 
 
 
 
 
207
 
208
  def analyze(inFileName):
209
  try:
@@ -593,17 +601,23 @@ try:
593
 
594
  unusedSpeakers = st.session_state.unusedSpeakers[currFile]
595
  categorySelections = st.session_state["categorySelect"][currFile]
596
- renames = st.session_state.speakerRenames.get(currFile, {})
597
- # All speaker labels as display names for the multiselect options
598
- all_speakers_raw = speakerNames # always SPEAKER_## from annotations
599
- all_speakers_display = [renames.get(sp, sp) for sp in all_speakers_raw]
 
 
 
600
  for i,category in enumerate(st.session_state.categories):
601
- speakerSet = categorySelections[i] # stored as SPEAKER_##
602
- default_display = [renames.get(sp, sp) for sp in speakerSet]
 
 
 
 
603
  st.sidebar.multiselect(category,
604
  all_speakers_display,
605
- default=default_display,
606
- key=f"multiselect_{category}",
607
  on_change=updateCategoryOptions,
608
  args=(currFile,))
609
  st.sidebar.button(f"Remove {category}",key=f"remove_{category}",on_click=removeCategory,args=(i,))
 
179
  return
180
  currAnnotation, _ = st.session_state.results[fileName]
181
  speakerNames = list(currAnnotation.labels())
182
+ # Build reverse map from live rename widget keys: display name -> SPEAKER_##
183
+ display_to_raw = {}
184
+ for sp in speakerNames:
185
+ wk = f"rename_{fileName}_{sp}"
186
+ live = st.session_state.get(wk, "").strip()
187
+ display_to_raw[live if live else sp] = sp
188
  unusedSpeakers = copy.deepcopy(speakerNames)
189
  for i, category in enumerate(st.session_state['categories']):
190
+ display_choices = list(st.session_state[f'multiselect_{category}'])
 
191
  raw_choices = [display_to_raw.get(d, d) for d in display_choices]
192
  st.session_state["categorySelect"][fileName][i] = raw_choices
193
  for sp in raw_choices:
 
200
  def updateMultiSelect():
201
  fileName = st.session_state["select_currFile"]
202
  st.session_state.resetResult = True
203
+ result = st.session_state.results.get(fileName)
204
+ if result:
205
+ currAnnotation, _ = result
206
+ speakerNames = list(currAnnotation.labels())
207
+ raw_to_display = {}
208
+ for sp in speakerNames:
209
+ wk = f"rename_{fileName}_{sp}"
210
+ live = st.session_state.get(wk, "").strip()
211
+ raw_to_display[sp] = live if live else sp
212
+ for i, category in enumerate(st.session_state['categories']):
213
+ raw_choices = st.session_state['categorySelect'][fileName][i]
214
+ st.session_state[f'multiselect_{category}'] = [raw_to_display.get(sp, sp) for sp in raw_choices]
215
 
216
  def analyze(inFileName):
217
  try:
 
601
 
602
  unusedSpeakers = st.session_state.unusedSpeakers[currFile]
603
  categorySelections = st.session_state["categorySelect"][currFile]
604
+ # Build live raw->display map from rename widget keys (always current)
605
+ raw_to_display = {}
606
+ for sp in speakerNames:
607
+ wk = f"rename_{currFile}_{sp}"
608
+ live = st.session_state.get(wk, "").strip()
609
+ raw_to_display[sp] = live if live else sp
610
+ all_speakers_display = [raw_to_display[sp] for sp in speakerNames]
611
  for i,category in enumerate(st.session_state.categories):
612
+ ms_key = f"multiselect_{category}"
613
+ speakerSet = categorySelections[i] # SPEAKER_## internally
614
+ default_display = [raw_to_display.get(sp, sp) for sp in speakerSet]
615
+ # Seed widget state once with display names; omit default= to let Streamlit own state
616
+ if ms_key not in st.session_state:
617
+ st.session_state[ms_key] = default_display
618
  st.sidebar.multiselect(category,
619
  all_speakers_display,
620
+ key=ms_key,
 
621
  on_change=updateCategoryOptions,
622
  args=(currFile,))
623
  st.sidebar.button(f"Remove {category}",key=f"remove_{category}",on_click=removeCategory,args=(i,))