aliangdw commited on
Commit
38610d6
·
1 Parent(s): 47bd4bf
Files changed (1) hide show
  1. app.py +14 -4
app.py CHANGED
@@ -119,7 +119,7 @@ with gr.Blocks(title="RFM Dataset Visualizer") as demo:
119
  # Slider for navigation
120
  slider = gr.Slider(
121
  minimum=0,
122
- maximum=0,
123
  step=1,
124
  value=0,
125
  label="Trajectory Index"
@@ -141,7 +141,8 @@ with gr.Blocks(title="RFM Dataset Visualizer") as demo:
141
  if dataset is not None:
142
  max_index = len(dataset) - 1
143
  info = f"**Dataset Info:**\n- **Total Trajectories:** {len(dataset)}\n- **Features:** {list(dataset.features.keys())}"
144
- return dataset, status, info, max_index, 0
 
145
  else:
146
  return None, status, "", 0, 0
147
 
@@ -149,6 +150,11 @@ with gr.Blocks(title="RFM Dataset Visualizer") as demo:
149
  """Update the displayed trajectory."""
150
  if dataset is None:
151
  return None, "No dataset loaded", "No dataset loaded", None
 
 
 
 
 
152
  return visualize_trajectory(dataset, index)
153
 
154
  def next_trajectory(dataset, current_idx):
@@ -171,13 +177,17 @@ with gr.Blocks(title="RFM Dataset Visualizer") as demo:
171
  load_btn.click(
172
  fn=load_dataset,
173
  inputs=[dataset_name_input, config_name_input],
174
- outputs=[current_dataset, status_output, dataset_info, slider, current_index]
175
  )
176
 
177
  slider.change(
178
  fn=lambda dataset, idx: update_trajectory(dataset, idx),
179
  inputs=[current_dataset, slider],
180
  outputs=[video_output, metadata_output, title_output, image_output]
 
 
 
 
181
  )
182
 
183
  next_btn.click(
@@ -203,7 +213,7 @@ with gr.Blocks(title="RFM Dataset Visualizer") as demo:
203
  # Load initial dataset
204
  demo.load(
205
  fn=lambda: load_dataset("aliangdw/rfm", "libero_10"),
206
- outputs=[current_dataset, status_output, dataset_info, slider, current_index]
207
  )
208
 
209
  # Launch the app
 
119
  # Slider for navigation
120
  slider = gr.Slider(
121
  minimum=0,
122
+ maximum=100, # Will be updated when dataset loads
123
  step=1,
124
  value=0,
125
  label="Trajectory Index"
 
141
  if dataset is not None:
142
  max_index = len(dataset) - 1
143
  info = f"**Dataset Info:**\n- **Total Trajectories:** {len(dataset)}\n- **Features:** {list(dataset.features.keys())}"
144
+ # Return the dataset length for slider configuration
145
+ return dataset, status, info, 0, max_index
146
  else:
147
  return None, status, "", 0, 0
148
 
 
150
  """Update the displayed trajectory."""
151
  if dataset is None:
152
  return None, "No dataset loaded", "No dataset loaded", None
153
+ # Ensure index is within bounds
154
+ if index >= len(dataset):
155
+ index = len(dataset) - 1
156
+ elif index < 0:
157
+ index = 0
158
  return visualize_trajectory(dataset, index)
159
 
160
  def next_trajectory(dataset, current_idx):
 
177
  load_btn.click(
178
  fn=load_dataset,
179
  inputs=[dataset_name_input, config_name_input],
180
+ outputs=[current_dataset, status_output, dataset_info, current_index, slider]
181
  )
182
 
183
  slider.change(
184
  fn=lambda dataset, idx: update_trajectory(dataset, idx),
185
  inputs=[current_dataset, slider],
186
  outputs=[video_output, metadata_output, title_output, image_output]
187
+ ).then(
188
+ fn=lambda dataset, idx: idx if dataset is None or idx < len(dataset) else len(dataset) - 1,
189
+ inputs=[current_dataset, slider],
190
+ outputs=[current_index]
191
  )
192
 
193
  next_btn.click(
 
213
  # Load initial dataset
214
  demo.load(
215
  fn=lambda: load_dataset("aliangdw/rfm", "libero_10"),
216
+ outputs=[current_dataset, status_output, dataset_info, current_index, slider]
217
  )
218
 
219
  # Launch the app