prepared for implement more functions

This commit is contained in:
2025-07-22 12:46:19 +02:00
parent 71c26bf3ed
commit 4568f65866
2 changed files with 86 additions and 72 deletions

View File

@@ -1,74 +1,87 @@
# app.py
import streamlit as st
from pyarrow.interchange.from_dataframe import map_date_type
from tools import *
standard_output = ('#### Um den HILFE-Text zu einzelnen Funktionen aufzurufen bitte die Funktion mit leerem'
' Eingabefeld aufrufen.')
st.set_page_config(
page_title="tebarius mysteryhelfer web",
page_title="tebarius Mysteryhelfer (web)",
page_icon="./favicon.ico", # Alternativ: "favicon.ico" (Pfad als String)
layout="wide"
)
st.logo('./logo.png', size='large')
# Optional: Standard für den Session State setzen
if 'letzte_aktion' not in st.session_state:
st.session_state['letzte_aktion'] = None
if 'output_text' not in st.session_state:
st.session_state['output_text'] = ('Um den HILFE-Text zu einzelnen Funktionen aufzurufen bitte die Funktion'
' mit leerem Eingabefeld aufrufen.')
if 'show_map' not in st.session_state:
st.session_state['show_map'] = False
if 'map_data' not in st.session_state:
st.session_state['map_data'] = None
logo_col, title_col = st.columns([1,5])
with logo_col:
st.image('./logo-mit-tb.png', width=200)
st.image('./logo-mit-tb.png', width=150)
with title_col:
st.write(' \n \n# tebarius web-Mysteryhelfer')
st.write('### tebarius Mysteryhelfer (web)')
# Callback-Funktion zur Verarbeitung der Auswahl
def auswahl_verarbeiten():
text = st.session_state.input_text
auswahl = st.session_state.option
if auswahl == "Wähle eine Funktion":
st.session_state.output_text = standard_output
st.session_state.map_data = None
elif auswahl == "Cesarchiffre (all)":
st.session_state.output_text = cesar_all(text)
st.session_state.map_data = None
elif auswahl == "BW,BWW,... ermitteln":
st.session_state.output_text = buchstabenwortwert(text)
st.session_state.map_data = None
elif auswahl == "Dummy mit Karte":
output, mapd = funktion_mit_karte(text, additional_parameter)
st.session_state.output_text = output
st.session_state.map_data = mapd
# Standardwerte im Session State initialisieren
if 'option' not in st.session_state:
st.session_state.option = "Wähle eine Funktion"
if 'input_text' not in st.session_state:
st.session_state.input_text = ""
if 'output_text' not in st.session_state:
st.session_state.output_text = standard_output
if 'map_data' not in st.session_state:
st.session_state.map_data = None
# Eingabefeld im Hauptbereich
input_text = st.text_area('Gib deinen Text hier ein und wähle eine Funktion im Menü:', height=150)
input_text = st.text_area('Gib deinen Text hier ein und wähle eine Funktion im Menü auf der linken Seite:',
key='input_text',
height=150)
# --- Sidebar: Buttons selektieren und Aktion setzen ---
st.sidebar.header("Funktionen")
if st.sidebar.button(label='Ceasarchiffre (all)', use_container_width=True):
st.session_state['output_text'] = cesar_all(input_text)
st.session_state['letzte_aktion'] = 'cesar_all'
st.session_state['show_map'] = False
option = st.sidebar.radio("hidden_label",
options=("Wähle eine Funktion",
"Dummy mit Karte",
"Cesarchiffre (all)",
"BW,BWW,... ermitteln",
),
key='option',
on_change=auswahl_verarbeiten,
label_visibility='collapsed'
)
if st.sidebar.button('BW,BWW,... ermitteln', use_container_width=True):
st.session_state['output_text'] = buchstabenwortwert(input_text)
st.session_state['letzte_aktion'] = 'bbw'
st.session_state['show_map'] = False
# Optionales einzeiliges Eingabefeld nur für bestimmte Funktionen
additional_parameter = None
if option == "Dummy mit Karte":
additional_parameter = st.text_input(
"Optionaler Zusatztext für Dummy mit Karte",
placeholder="Zusätzliche Eingabe hier"
)
# Funktion, die eine Karte erzeugt
if st.sidebar.button('Mit Karte anzeigen'):
output_text, map_data = funktion_mit_karte(input_text)
st.session_state['output_text'] = output_text
st.session_state['letzte_aktion'] = 'funktion_mit_karte'
st.session_state['show_map'] = True
st.session_state['map_data'] = map_data
# --- Hauptbereich: Button für Wiederholung der letzten Aktion ---
if st.button("Letzte Aktion wiederholen"):
if st.session_state['letzte_aktion'] == 'cesar_all':
st.session_state['output_text'] = cesar_all(input_text)
st.session_state['show_map'] = False
elif st.session_state['letzte_aktion'] == 'bbw':
st.session_state['output_text'] = buchstabenwortwert(input_text)
st.session_state['show_map'] = False
elif st.session_state['letzte_aktion'] == 'funktion_mit_karte':
output_text, map_data = funktion_mit_karte(input_text)
st.session_state['output_text'] = output_text
st.session_state['show_map'] = True
st.session_state['map_data'] = map_data
# Button zum manuellen Ausführen der Verarbeitungsfunktion
if st.button(f"{st.session_state.option}"):
auswahl_verarbeiten()
# Ausgabefeld
st.text_area('Ausgabe:', value=st.session_state['output_text'], height=300)
st.markdown('__Ausgabe:__')
st.markdown(st.session_state.output_text)
# Karte anzeigen, falls aktiviert
if st.session_state.get('show_map') and st.session_state.get('map_data') is not None:
if st.session_state.map_data is not None:
st.subheader("Kartenansicht")
st.map(st.session_state['map_data'])
st.map(st.session_state.map_data)