fix endpint and language selection and deletion

This commit is contained in:
2025-03-10 15:18:08 +01:00
parent acb5046ccd
commit 2bd478083f
2 changed files with 35 additions and 9 deletions

View File

@@ -4,6 +4,8 @@ from enum import Enum
from pydantic import BaseModel, Field
from typing import Optional, List
ENDPOINTS = [f"endpoint{i}" for i in range(1, 4)] # Predefined endpoints
class AnnouncementStates(Enum):
IDLE: str = "Ready"
TRANSLATING: str = "Translating"
@@ -29,6 +31,7 @@ class AnnouncementProgress(BaseModel):
class AnnouncementSystem:
def __init__(self):
self.available_endpoints = ENDPOINTS
self.current_process = AnnouncementProgress(
details=AnnouncementDetails(
text="",

View File

@@ -1,4 +1,6 @@
import streamlit as st
from backend_model import announcement_system, AnnouncementStates
import time
# Configuration defaults
DEFAULT_LANGUAGES = ["German", "English"]
@@ -19,8 +21,6 @@ if "endpoint_groups" not in st.session_state:
}
]
from backend_model import announcement_system, AnnouncementStates
import time
def show_announcement_status():
if announcement_system.current_process.current_state != AnnouncementStates.IDLE:
@@ -120,23 +120,46 @@ with st.sidebar:
value=group["name"],
key=f"group_name_{i}"
)
group["endpoints"] = st.text_input(
# Initialize session state for this group's endpoints if not already set
if f"endpoints_{i}" not in st.session_state:
st.session_state[f"endpoints_{i}"] = group["endpoints"]
# Use the multiselect with session state
selected_endpoints = st.multiselect(
f"Endpoints {i+1}",
value=", ".join(group["endpoints"]),
key=f"endpoints_{i}"
).split(", ")
options=announcement_system.available_endpoints,
default=st.session_state[f"endpoints_{i}"],
key=f"endpoints_select_{i}"
)
# Update both session state and group endpoints when changed
if selected_endpoints != st.session_state[f"endpoints_{i}"]:
st.session_state[f"endpoints_{i}"] = selected_endpoints
group["endpoints"] = selected_endpoints
st.rerun() # Force immediate update
with cols[1]:
if st.button("", key=f"remove_{i}"):
del st.session_state.endpoint_groups[i]
st.rerun()
group["languages"] = st.multiselect(
# Initialize session state for this group's languages if not already set
if f"languages_{i}" not in st.session_state:
st.session_state[f"languages_{i}"] = group["languages"]
# Use the multiselect with session state
selected_languages = st.multiselect(
f"Languages {i+1}",
options=DEFAULT_LANGUAGES + OPTIONAL_LANGUAGES,
default=group["languages"],
key=f"lang_{i}"
default=st.session_state[f"languages_{i}"],
key=f"languages_select_{i}"
)
# Update both session state and group languages when changed
if selected_languages != st.session_state[f"languages_{i}"]:
st.session_state[f"languages_{i}"] = selected_languages
group["languages"] = selected_languages
st.rerun() # Force immediate update
st.markdown("---")
if st.button(" Add Group"):