yaleh commited on
Commit
2b661e2
·
1 Parent(s): dc824aa

A button to add new examples into input.

Browse files
Files changed (1) hide show
  1. app/streamlit_sample_generator.py +38 -22
app/streamlit_sample_generator.py CHANGED
@@ -91,12 +91,15 @@ def generate_examples_directly(description, raw_example, generating_batch_size,
91
  def example_directly_selected():
92
  if 'selected_example_directly_id' in st.session_state:
93
  try:
94
- selected_example_id = st.session_state.selected_example_directly_id[
95
- 'selection']['rows'][0]
96
- selected_example = st.session_state.examples_directly_dataframe.iloc[selected_example_id].to_dict(
97
- )
98
- st.session_state.selected_example = json.dumps(
99
- {k.lower(): v for k, v in selected_example.items()}, ensure_ascii=False)
 
 
 
100
  except Exception as e:
101
  st.session_state.selected_example = None
102
 
@@ -104,12 +107,15 @@ def example_directly_selected():
104
  def example_from_briefs_selected():
105
  if 'selected_example_from_briefs_id' in st.session_state:
106
  try:
107
- selected_example_id = st.session_state.selected_example_from_briefs_id[
108
- 'selection']['rows'][0]
109
- selected_example = st.session_state.examples_from_briefs_dataframe.iloc[selected_example_id].to_dict(
110
- )
111
- st.session_state.selected_example = json.dumps(
112
- {k.lower(): v for k, v in selected_example.items()}, ensure_ascii=False)
 
 
 
113
  except Exception as e:
114
  st.session_state.selected_example = None
115
 
@@ -117,11 +123,14 @@ def example_from_briefs_selected():
117
  def example_selected():
118
  if 'selected_example_id' in st.session_state:
119
  try:
120
- selected_example_id = st.session_state.selected_example_id['selection']['rows'][0]
121
- selected_example = st.session_state.examples_dataframe.iloc[selected_example_id].to_dict(
122
- )
123
- st.session_state.selected_example = json.dumps(
124
- {k.lower(): v for k, v in selected_example.items()}, ensure_ascii=False)
 
 
 
125
  except Exception as e:
126
  st.session_state.selected_example = None
127
 
@@ -225,6 +234,7 @@ def import_input_data_from_json():
225
  if 'input_file' in st.session_state and st.session_state.input_file is not None:
226
  data = st.session_state.input_file.getvalue()
227
  data = json.loads(data)
 
228
  st.session_state.input_data = pd.DataFrame(data)
229
  except Exception as e:
230
  st.error(f"Failed to import JSON: {str(e)}")
@@ -287,7 +297,7 @@ with st.expander("Description and Analysis"):
287
  "Analyze Input", on_click=update_input_analysis_output_text)
288
 
289
  examples_directly_output = st.dataframe(st.session_state.examples_directly_dataframe, use_container_width=True,
290
- selection_mode="single-row", key="selected_example_directly_id",
291
  on_select=example_directly_selected)
292
  input_analysis_output = st.text_area(
293
  "Input Analysis", value=st.session_state.input_analysis_output_text, height=100)
@@ -298,16 +308,22 @@ with st.expander("Description and Analysis"):
298
  generate_examples_from_briefs_button = st.button(
299
  "Generate Examples from Briefs", on_click=update_examples_from_briefs_dataframe)
300
  examples_from_briefs_output = st.dataframe(st.session_state.examples_from_briefs_dataframe, use_container_width=True,
301
- selection_mode="single-row", key="selected_example_from_briefs_id",
302
  on_select=example_from_briefs_selected)
303
 
304
  examples_output = st.dataframe(st.session_state.examples_dataframe, use_container_width=True,
305
- selection_mode="single-row", key="selected_example_id", on_select=example_selected)
 
 
 
 
 
 
306
 
307
  def show_sidebar():
308
  if st.session_state.selected_example is not None:
309
  with st.sidebar:
310
- new_example_json = st.text_area(
311
- "New Example JSON", value=st.session_state.selected_example, height=100)
312
 
313
  show_sidebar()
 
91
  def example_directly_selected():
92
  if 'selected_example_directly_id' in st.session_state:
93
  try:
94
+ selected_example_ids = st.session_state.selected_example_directly_id[
95
+ 'selection']['rows']
96
+ # set selected examples to the selected rows if there are any
97
+ if selected_example_ids:
98
+ selected_examples = st.session_state.examples_directly_dataframe.iloc[selected_example_ids].to_dict(
99
+ 'records')
100
+ st.session_state.selected_example = pd.DataFrame(selected_examples) # Convert to DataFrame
101
+ else:
102
+ st.session_state.selected_example = None
103
  except Exception as e:
104
  st.session_state.selected_example = None
105
 
 
107
  def example_from_briefs_selected():
108
  if 'selected_example_from_briefs_id' in st.session_state:
109
  try:
110
+ selected_example_ids = st.session_state.selected_example_from_briefs_id[
111
+ 'selection']['rows']
112
+ # set selected examples to the selected rows if there are any
113
+ if selected_example_ids:
114
+ selected_examples = st.session_state.examples_from_briefs_dataframe.iloc[selected_example_ids].to_dict(
115
+ 'records')
116
+ st.session_state.selected_example = pd.DataFrame(selected_examples) # Convert to DataFrame
117
+ else:
118
+ st.session_state.selected_example = None
119
  except Exception as e:
120
  st.session_state.selected_example = None
121
 
 
123
  def example_selected():
124
  if 'selected_example_id' in st.session_state:
125
  try:
126
+ selected_example_ids = st.session_state.selected_example_id['selection']['rows']
127
+ # set selected examples to the selected rows if there are any
128
+ if selected_example_ids:
129
+ selected_examples = st.session_state.examples_dataframe.iloc[selected_example_ids].to_dict(
130
+ 'records')
131
+ st.session_state.selected_example = pd.DataFrame(selected_examples) # Convert to DataFrame
132
+ else:
133
+ st.session_state.selected_example = None
134
  except Exception as e:
135
  st.session_state.selected_example = None
136
 
 
234
  if 'input_file' in st.session_state and st.session_state.input_file is not None:
235
  data = st.session_state.input_file.getvalue()
236
  data = json.loads(data)
237
+ data = [{k.capitalize(): v for k, v in d.items()} for d in data]
238
  st.session_state.input_data = pd.DataFrame(data)
239
  except Exception as e:
240
  st.error(f"Failed to import JSON: {str(e)}")
 
297
  "Analyze Input", on_click=update_input_analysis_output_text)
298
 
299
  examples_directly_output = st.dataframe(st.session_state.examples_directly_dataframe, use_container_width=True,
300
+ selection_mode="multi-row", key="selected_example_directly_id",
301
  on_select=example_directly_selected)
302
  input_analysis_output = st.text_area(
303
  "Input Analysis", value=st.session_state.input_analysis_output_text, height=100)
 
308
  generate_examples_from_briefs_button = st.button(
309
  "Generate Examples from Briefs", on_click=update_examples_from_briefs_dataframe)
310
  examples_from_briefs_output = st.dataframe(st.session_state.examples_from_briefs_dataframe, use_container_width=True,
311
+ selection_mode="multi-row", key="selected_example_from_briefs_id",
312
  on_select=example_from_briefs_selected)
313
 
314
  examples_output = st.dataframe(st.session_state.examples_dataframe, use_container_width=True,
315
+ selection_mode="multi-row", key="selected_example_id", on_select=example_selected)
316
+
317
+ def append_selected_to_input_data():
318
+ if st.session_state.selected_example is not None:
319
+ st.session_state.input_data = pd.concat(
320
+ [st.session_state.input_data, st.session_state.selected_example], ignore_index=True)
321
+ st.session_state.selected_example = None
322
 
323
  def show_sidebar():
324
  if st.session_state.selected_example is not None:
325
  with st.sidebar:
326
+ st.dataframe(st.session_state.selected_example) # Display DataFrame in sidebar
327
+ st.button("Append to Input Data", on_click=append_selected_to_input_data)
328
 
329
  show_sidebar()