vargha commited on
Commit
624ba32
Β·
1 Parent(s): 4b09d70

fixing batching for loading data

Browse files
Files changed (1) hide show
  1. components/review_dashboard_page.py +24 -23
components/review_dashboard_page.py CHANGED
@@ -479,25 +479,26 @@ class ReviewDashboardPage:
479
  gr.update(value="❌ Reject") # Reset reject button text
480
  )
481
 
482
- def navigate_review_fn(items, current_idx, direction):
 
483
  if not items:
484
- return 0, False
 
 
485
  if direction == "next":
486
  new_idx = min(current_idx + 1, len(items) - 1)
487
  # Only load more items when user reaches the LAST item of a batch
488
  should_load_more = (new_idx == len(items) - 1 and len(items) % 5 == 0)
489
  if should_load_more:
490
  log.info(f"User reached end of loaded items ({new_idx}/{len(items)}), will load more items")
491
- return new_idx, should_load_more
 
 
 
 
492
  else: # prev
493
- return max(current_idx - 1, 0), False
494
-
495
- def conditional_load_more_fn(items, session, should_load_more):
496
- """Load more items if needed, otherwise return existing items"""
497
- if should_load_more:
498
- log.info("Loading more items for navigation...")
499
- return load_more_items_fn(items, session, current_batch_size=10) # Reduced from 50 to 10 items
500
- return items
501
 
502
  def save_validation_fn(items, idx, session, approved: bool, rejection_reason: str = ""):
503
  if not items or idx >= len(items):
@@ -712,9 +713,9 @@ class ReviewDashboardPage:
712
  fn=lambda: update_ui_interactive_state(False),
713
  outputs=self.interactive_ui_elements
714
  ).then(
715
- fn=navigate_review_fn,
716
- inputs=[self.items_state, self.idx_state, gr.State(direction)],
717
- outputs=self.idx_state
718
  ).then(
719
  fn=show_current_review_item_fn,
720
  inputs=[self.items_state, self.idx_state, session_state],
@@ -748,9 +749,9 @@ class ReviewDashboardPage:
748
  fn=lambda: gr.update(value="❌ Reject"), # Reset reject button
749
  outputs=[self.btn_reject]
750
  ).then(
751
- fn=lambda items, idx: navigate_review_fn(items, idx, "next"),
752
- inputs=[self.items_state, self.idx_state],
753
- outputs=[self.idx_state]
754
  ).then(
755
  fn=show_current_review_item_fn,
756
  inputs=[self.items_state, self.idx_state, session_state],
@@ -771,9 +772,9 @@ class ReviewDashboardPage:
771
  inputs=[self.items_state, self.idx_state, session_state, self.rejection_mode_active],
772
  outputs=[self.header.progress_display]
773
  ).then(
774
- fn=lambda items, idx, rejection_mode: navigate_review_fn(items, idx, "next") if not rejection_mode else idx,
775
- inputs=[self.items_state, self.idx_state, self.rejection_mode_active],
776
- outputs=[self.idx_state]
777
  ).then(
778
  fn=lambda items, idx, session, rejection_mode: show_current_review_item_fn(items, idx, session) if not rejection_mode else (
779
  str(items[idx]["tts_id"]) if items and idx < len(items) else "",
@@ -799,9 +800,9 @@ class ReviewDashboardPage:
799
 
800
  # Skip button (just navigate to next)
801
  self.btn_skip.click(
802
- fn=navigate_review_fn,
803
- inputs=[self.items_state, self.idx_state, gr.State("next")],
804
- outputs=self.idx_state
805
  ).then(
806
  fn=show_current_review_item_fn,
807
  inputs=[self.items_state, self.idx_state, session_state],
 
479
  gr.update(value="❌ Reject") # Reset reject button text
480
  )
481
 
482
+ def navigate_and_load_fn(items, current_idx, direction, session):
483
+ """Combined navigation and loading function"""
484
  if not items:
485
+ return items, 0
486
+
487
+ # Navigate
488
  if direction == "next":
489
  new_idx = min(current_idx + 1, len(items) - 1)
490
  # Only load more items when user reaches the LAST item of a batch
491
  should_load_more = (new_idx == len(items) - 1 and len(items) % 5 == 0)
492
  if should_load_more:
493
  log.info(f"User reached end of loaded items ({new_idx}/{len(items)}), will load more items")
494
+ # Load more items
495
+ updated_items = load_more_items_fn(items, session, current_batch_size=10)
496
+ return updated_items, new_idx
497
+ else:
498
+ return items, new_idx
499
  else: # prev
500
+ new_idx = max(current_idx - 1, 0)
501
+ return items, new_idx
 
 
 
 
 
 
502
 
503
  def save_validation_fn(items, idx, session, approved: bool, rejection_reason: str = ""):
504
  if not items or idx >= len(items):
 
713
  fn=lambda: update_ui_interactive_state(False),
714
  outputs=self.interactive_ui_elements
715
  ).then(
716
+ fn=lambda items, idx, session, dir=direction: navigate_and_load_fn(items, idx, dir, session),
717
+ inputs=[self.items_state, self.idx_state, session_state],
718
+ outputs=[self.items_state, self.idx_state]
719
  ).then(
720
  fn=show_current_review_item_fn,
721
  inputs=[self.items_state, self.idx_state, session_state],
 
749
  fn=lambda: gr.update(value="❌ Reject"), # Reset reject button
750
  outputs=[self.btn_reject]
751
  ).then(
752
+ fn=lambda items, idx, session: navigate_and_load_fn(items, idx, "next", session),
753
+ inputs=[self.items_state, self.idx_state, session_state],
754
+ outputs=[self.items_state, self.idx_state]
755
  ).then(
756
  fn=show_current_review_item_fn,
757
  inputs=[self.items_state, self.idx_state, session_state],
 
772
  inputs=[self.items_state, self.idx_state, session_state, self.rejection_mode_active],
773
  outputs=[self.header.progress_display]
774
  ).then(
775
+ fn=lambda items, idx, session, rejection_mode: navigate_and_load_fn(items, idx, "next", session) if not rejection_mode else (items, idx),
776
+ inputs=[self.items_state, self.idx_state, session_state, self.rejection_mode_active],
777
+ outputs=[self.items_state, self.idx_state]
778
  ).then(
779
  fn=lambda items, idx, session, rejection_mode: show_current_review_item_fn(items, idx, session) if not rejection_mode else (
780
  str(items[idx]["tts_id"]) if items and idx < len(items) else "",
 
800
 
801
  # Skip button (just navigate to next)
802
  self.btn_skip.click(
803
+ fn=lambda items, idx, session: navigate_and_load_fn(items, idx, "next", session),
804
+ inputs=[self.items_state, self.idx_state, session_state],
805
+ outputs=[self.items_state, self.idx_state]
806
  ).then(
807
  fn=show_current_review_item_fn,
808
  inputs=[self.items_state, self.idx_state, session_state],