Spaces:
Sleeping
Sleeping
update
Browse files
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=
|
| 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 |
-
|
|
|
|
| 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,
|
| 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,
|
| 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
|