duongthienz commited on
Commit
5468940
·
verified ·
1 Parent(s): a74f647

make multi in timespoken better

Browse files
Files changed (1) hide show
  1. utils.py +22 -4
utils.py CHANGED
@@ -538,17 +538,35 @@ def build_fig_timeline(speakers_dataFrame, currTotalTime, speaker_color_map, get
538
  )
539
  fig.update_yaxes(autorange="reversed")
540
 
541
- # Add vertical shading for multi-voice intervals
 
 
542
  MV_COLOR = "#64A377"
543
  for start_s, end_s in (mv_intervals or []):
 
 
544
  fig.add_vrect(
545
- x0=base + dt.timedelta(seconds=start_s),
546
- x1=base + dt.timedelta(seconds=end_s),
547
  fillcolor=MV_COLOR,
548
- opacity=0.20,
549
  layer="below",
550
  line_width=0,
551
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
552
 
553
  h = int(currTotalTime // 3600)
554
  m = int(currTotalTime % 3600 // 60)
 
538
  )
539
  fig.update_yaxes(autorange="reversed")
540
 
541
+ # Add vertical shading for multi-voice intervals.
542
+ # add_vrect doesn't support hover, so we also add an invisible scatter
543
+ # trace on top of each band to carry the tooltip.
544
  MV_COLOR = "#64A377"
545
  for start_s, end_s in (mv_intervals or []):
546
+ x0_dt = base + dt.timedelta(seconds=start_s)
547
+ x1_dt = base + dt.timedelta(seconds=end_s)
548
  fig.add_vrect(
549
+ x0=x0_dt, x1=x1_dt,
 
550
  fillcolor=MV_COLOR,
551
+ opacity=0.30,
552
  layer="below",
553
  line_width=0,
554
  )
555
+ # Invisible scatter at midpoint to carry hover tooltip
556
+ mid_dt = base + dt.timedelta(seconds=(start_s + end_s) / 2)
557
+ fig.add_trace(go.Scatter(
558
+ x=[mid_dt],
559
+ y=[None],
560
+ mode="markers",
561
+ marker=dict(size=0, opacity=0),
562
+ showlegend=False,
563
+ hovertemplate=(
564
+ f"<b>Resource: Multi Voice</b><br>"
565
+ f"Start: {_seconds_to_hhmmss(start_s)}<br>"
566
+ f"Finish: {_seconds_to_hhmmss(end_s)}"
567
+ "<extra></extra>"
568
+ ),
569
+ ))
570
 
571
  h = int(currTotalTime // 3600)
572
  m = int(currTotalTime % 3600 // 60)