fix the webui the display available languages again

This commit is contained in:
2025-03-11 13:33:18 +01:00
parent b89bb3877b
commit 000933cf13

View File

@@ -43,7 +43,7 @@ if "status_container_key" not in st.session_state:
def show_announcement_status():
try:
status_data = get_announcement_status()
if status_data["state"] != "Ready":
if status_data["state"] != "idle":
# Create a container with a unique key for each announcement
# This ensures we get a fresh container for each new announcement
with st.container(key=f"status_container_{st.session_state.status_container_key}"):
@@ -59,7 +59,7 @@ def show_announcement_status():
last_state = None
# Update loop
while status_data["state"] not in ["Complete", "Error"]:
while status_data["state"] not in ["complete", "error"]:
# Update time elapsed continuously
# Only update stage display if state changed
@@ -79,7 +79,7 @@ def show_announcement_status():
progress_bar.progress(status_data["progress"])
# Final state
if status_data["state"] == "Error":
if status_data["state"] == "error":
st.error(f"❌ Error: {status_data['error']}")
else:
st.success("✅ Announcement completed successfully")
@@ -203,6 +203,32 @@ with st.sidebar:
st.session_state[f"prev_{endpoints_key}"] = selected_endpoints
st.session_state.endpoint_groups = get_groups()
st.rerun()
# Add language selection
available_languages = st.session_state.available_languages
# Use a unique key for the languages multiselect
languages_key = f"languages_select_{i}"
# Initialize the previous value in session state if not present
if f"prev_{languages_key}" not in st.session_state:
st.session_state[f"prev_{languages_key}"] = group.get("languages", [])
selected_languages = st.multiselect(
f"Languages",
options=available_languages,
default=group.get("languages", []),
key=languages_key
)
# Only update if languages have changed and they're different from previous value
if selected_languages != group.get("languages", []) and selected_languages != st.session_state[f"prev_{languages_key}"]:
updated_group = group.copy()
updated_group["languages"] = selected_languages
update_group(group["id"], updated_group)
# Update the previous value before rerunning
st.session_state[f"prev_{languages_key}"] = selected_languages
st.session_state.endpoint_groups = get_groups()
st.rerun()
except requests.exceptions.RequestException as e:
st.error(f"Failed to get available endpoints: {str(e)}")
@@ -226,15 +252,24 @@ with st.sidebar:
try:
available_endpoints = get_available_endpoints()
new_group_endpoints = st.multiselect("Endpoints", options=available_endpoints)
# Add language selection for new group
available_languages = st.session_state.available_languages
new_group_languages = st.multiselect("Languages", options=available_languages)
except requests.exceptions.RequestException as e:
st.error(f"Failed to get available endpoints: {str(e)}")
new_group_endpoints = []
new_group_languages = []
if st.form_submit_button("Add Group"):
if new_group_name:
try:
from api_client.client import create_group
new_group = {"name": new_group_name, "endpoints": new_group_endpoints}
new_group = {
"name": new_group_name,
"endpoints": new_group_endpoints,
"languages": new_group_languages
}
create_group(new_group)
# Update the session state with the latest groups
st.session_state.endpoint_groups = get_groups()