throaway2854 commited on
Commit
b0636b4
·
verified ·
1 Parent(s): eec9486

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -16
app.py CHANGED
@@ -136,12 +136,9 @@ with gr.Blocks() as demo:
136
  datasets = gr.State({})
137
  current_dataset_name = gr.State("")
138
  current_page_number = gr.State(0)
139
- # Place top-level components in a Column
140
- with gr.Column():
141
- dataset_selector = gr.Dropdown(label="Select Dataset", interactive=True)
142
- message_box = gr.Textbox(interactive=False, label="Message")
143
- # Define entry_selector but do not place it in the interface yet
144
- entry_selector = gr.Dropdown(label="Select Entry to Edit/Delete")
145
 
146
  # Tabs as before
147
  with gr.Tabs():
@@ -211,20 +208,20 @@ with gr.Blocks() as demo:
211
  html_content = display_dataset_html(dataset, page_number=page_number)
212
  # Update entry_selector options
213
  entry_options = [f"{idx}: {entry['prompt'][:30]}" for idx, entry in enumerate(dataset)]
214
- return datasets, page_number, gr.update(value=html_content), gr.update(choices=entry_options), f"Entry added to dataset '{current_dataset_name}'."
215
 
216
  add_button.click(
217
  add_entry,
218
  inputs=[image_input, prompt_input, current_dataset_name, datasets],
219
- outputs=[datasets, current_page_number, gr.HTML(), entry_selector, message_box]
220
  )
221
 
222
  with gr.TabItem("Edit / Delete Entry"):
223
  with gr.Column():
224
  selected_image = gr.Image(label="Selected Image", interactive=False, type="numpy")
225
  selected_prompt = gr.Textbox(label="Current Prompt", interactive=False)
226
- # Include entry_selector in the layout
227
- entry_selector
228
  new_prompt_input = gr.Textbox(label="New Prompt (for Edit)")
229
  with gr.Row():
230
  edit_button = gr.Button("Edit Entry")
@@ -324,14 +321,14 @@ with gr.Blocks() as demo:
324
  html_content = display_dataset_html(dataset, page_number=0)
325
  # Update entry_selector options
326
  entry_options = [f"{idx}: {entry['prompt'][:30]}" for idx, entry in enumerate(dataset)]
327
- return dataset_name, 0, gr.update(value=html_content), gr.update(choices=entry_options), ""
328
  else:
329
- return "", 0, gr.update(value="<div>Select a dataset.</div>"), gr.update(choices=[]), ""
330
 
331
  dataset_selector.change(
332
  select_dataset,
333
  inputs=[dataset_selector, datasets],
334
- outputs=[current_dataset_name, current_page_number, dataset_html, entry_selector, message_box]
335
  )
336
 
337
  def change_page(action, current_page_number, datasets, current_dataset_name):
@@ -360,14 +357,35 @@ with gr.Blocks() as demo:
360
  outputs=[current_page_number, dataset_html, message_box]
361
  )
362
 
363
- # Initialize dataset_selector and entry_selector
364
  def initialize_components(datasets):
365
- return gr.update(choices=list(datasets.keys())), gr.update(choices=[])
366
 
367
  demo.load(
368
  initialize_components,
369
  inputs=[datasets],
370
- outputs=[dataset_selector, entry_selector]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
371
  )
372
 
373
  demo.launch()
 
136
  datasets = gr.State({})
137
  current_dataset_name = gr.State("")
138
  current_page_number = gr.State(0)
139
+ # Only the dataset_selector and message_box are at the top
140
+ dataset_selector = gr.Dropdown(label="Select Dataset", interactive=True)
141
+ message_box = gr.Textbox(interactive=False, label="Message")
 
 
 
142
 
143
  # Tabs as before
144
  with gr.Tabs():
 
208
  html_content = display_dataset_html(dataset, page_number=page_number)
209
  # Update entry_selector options
210
  entry_options = [f"{idx}: {entry['prompt'][:30]}" for idx, entry in enumerate(dataset)]
211
+ return datasets, page_number, gr.update(value=html_content), entry_options, f"Entry added to dataset '{current_dataset_name}'."
212
 
213
  add_button.click(
214
  add_entry,
215
  inputs=[image_input, prompt_input, current_dataset_name, datasets],
216
+ outputs=[datasets, current_page_number, gr.HTML(), gr.Variable(), message_box]
217
  )
218
 
219
  with gr.TabItem("Edit / Delete Entry"):
220
  with gr.Column():
221
  selected_image = gr.Image(label="Selected Image", interactive=False, type="numpy")
222
  selected_prompt = gr.Textbox(label="Current Prompt", interactive=False)
223
+ # Define entry_selector here
224
+ entry_selector = gr.Dropdown(label="Select Entry to Edit/Delete")
225
  new_prompt_input = gr.Textbox(label="New Prompt (for Edit)")
226
  with gr.Row():
227
  edit_button = gr.Button("Edit Entry")
 
321
  html_content = display_dataset_html(dataset, page_number=0)
322
  # Update entry_selector options
323
  entry_options = [f"{idx}: {entry['prompt'][:30]}" for idx, entry in enumerate(dataset)]
324
+ return dataset_name, 0, gr.update(value=html_content), entry_options, ""
325
  else:
326
+ return "", 0, gr.update(value="<div>Select a dataset.</div>"), [], ""
327
 
328
  dataset_selector.change(
329
  select_dataset,
330
  inputs=[dataset_selector, datasets],
331
+ outputs=[current_dataset_name, current_page_number, dataset_html, gr.Variable(), message_box]
332
  )
333
 
334
  def change_page(action, current_page_number, datasets, current_dataset_name):
 
357
  outputs=[current_page_number, dataset_html, message_box]
358
  )
359
 
360
+ # Initialize dataset_selector
361
  def initialize_components(datasets):
362
+ return gr.update(choices=list(datasets.keys()))
363
 
364
  demo.load(
365
  initialize_components,
366
  inputs=[datasets],
367
+ outputs=[dataset_selector]
368
+ )
369
+
370
+ # Function to update entry_selector options
371
+ def update_entry_selector(entry_options):
372
+ entry_selector.update(choices=entry_options)
373
+
374
+ # Use gr.Variable to pass entry_options between functions
375
+ gr.Variable(name="entry_options_var")
376
+
377
+ # Update entry_selector options when dataset is selected
378
+ dataset_selector.change(
379
+ lambda entry_options: update_entry_selector(entry_options),
380
+ inputs=[gr.Variable("entry_options_var")],
381
+ outputs=[]
382
+ )
383
+
384
+ # Update entry_selector options when an entry is added
385
+ add_button.click(
386
+ lambda entry_options: update_entry_selector(entry_options),
387
+ inputs=[gr.Variable("entry_options_var")],
388
+ outputs=[]
389
  )
390
 
391
  demo.launch()