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 # app.py
import streamlit as st import streamlit as st
from pyarrow.interchange.from_dataframe import map_date_type
from tools import * from tools import *
standard_output = ('#### Um den HILFE-Text zu einzelnen Funktionen aufzurufen bitte die Funktion mit leerem'
' Eingabefeld aufrufen.')
st.set_page_config( st.set_page_config(
page_title="tebarius mysteryhelfer web", page_title="tebarius Mysteryhelfer (web)",
page_icon="./favicon.ico", # Alternativ: "favicon.ico" (Pfad als String) page_icon="./favicon.ico", # Alternativ: "favicon.ico" (Pfad als String)
layout="wide" layout="wide"
) )
st.logo('./logo.png', size='large') 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]) logo_col, title_col = st.columns([1,5])
with logo_col: with logo_col:
st.image('./logo-mit-tb.png', width=200) st.image('./logo-mit-tb.png', width=150)
with title_col: 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 # 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 --- # --- Sidebar: Buttons selektieren und Aktion setzen ---
st.sidebar.header("Funktionen") option = st.sidebar.radio("hidden_label",
if st.sidebar.button(label='Ceasarchiffre (all)', use_container_width=True): options=("Wähle eine Funktion",
st.session_state['output_text'] = cesar_all(input_text) "Dummy mit Karte",
st.session_state['letzte_aktion'] = 'cesar_all' "Cesarchiffre (all)",
st.session_state['show_map'] = False "BW,BWW,... ermitteln",
),
key='option',
on_change=auswahl_verarbeiten,
label_visibility='collapsed'
)
if st.sidebar.button('BW,BWW,... ermitteln', use_container_width=True): # Optionales einzeiliges Eingabefeld nur für bestimmte Funktionen
st.session_state['output_text'] = buchstabenwortwert(input_text) additional_parameter = None
st.session_state['letzte_aktion'] = 'bbw' if option == "Dummy mit Karte":
st.session_state['show_map'] = False additional_parameter = st.text_input(
"Optionaler Zusatztext für Dummy mit Karte",
placeholder="Zusätzliche Eingabe hier"
)
# Funktion, die eine Karte erzeugt # Button zum manuellen Ausführen der Verarbeitungsfunktion
if st.sidebar.button('Mit Karte anzeigen'): if st.button(f"{st.session_state.option}"):
output_text, map_data = funktion_mit_karte(input_text) auswahl_verarbeiten()
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
# Ausgabefeld # 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 # 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.subheader("Kartenansicht")
st.map(st.session_state['map_data']) st.map(st.session_state.map_data)

View File

@@ -1,18 +1,19 @@
from helper import * from helper import *
import pandas as pd import pandas as pd
def funktion_mit_karte(text): def funktion_mit_karte(text,param):
"""Verarbeitet Text und liefert Daten für eine Karte (z.B. Potsdam Zentrum).""" """Verarbeitet Text und liefert Daten für eine Karte (z.B. Potsdam Zentrum)."""
# Beispiel: Fester Punkt (Potsdam) # Beispiel: Fester Punkt (Potsdam)
daten = pd.DataFrame({'lat': [52.4006], 'lon': [13.0590]}) daten = pd.DataFrame({'lat': [52.4006], 'lon': [13.0590]})
ausgabe_text = f"Folgende Koordinate wurde gefunden: {daten.iloc[0].lat}, {daten.iloc[0].lon}" ausgabe_text = f"Folgende Koordinate wurde gefunden: {daten.iloc[0].lat}, {daten.iloc[0].lon}"
ausgabe_text += f' \n text: {text} \n parameter: {param}\n'
return ausgabe_text, daten return ausgabe_text, daten
def cesar_all(eingabetext): def cesar_all(eingabetext):
eingabetext = eingabetext.rstrip() eingabetext = eingabetext.rstrip()
if eingabetext == "": if eingabetext == "":
return ("HILFE: [Cesar-Verschiebe-Chiffre] \n" return ("### Cesar-Verschiebe-Chiffre\n"
"Von der eingegebenen Zeichenkette werden, " "Von der eingegebenen Zeichenkette werden, "
"alle möglichen Verschiebungen gemäß der " "alle möglichen Verschiebungen gemäß der "
"Cesarchiffre generiert und ausgegeben. " "Cesarchiffre generiert und ausgegeben. "
@@ -38,15 +39,13 @@ def cesar_all(eingabetext):
atxt = atxt + abc[j + r - 26] atxt = atxt + abc[j + r - 26]
else: else:
atxt = atxt + abc[j + r] atxt = atxt + abc[j + r]
if r < 10: ausgabe += f"__{r:02}:__ {atxt} \n"
ausgabe += "0"
ausgabe += f"{r}: {atxt} \n"
return ausgabe return ausgabe
def buchstabenwortwert(eingabetext): def buchstabenwortwert(eingabetext):
eingabetext = eingabetext.rstrip() eingabetext = eingabetext.rstrip()
if eingabetext == "": if eingabetext == "":
return ("HILFE: [Buchstabenwortwerte ermitteln] \n" return ("### Buchstabenwortwerte ermitteln\n"
"Diese Funktion berechnet den Buchstabenwert " "Diese Funktion berechnet den Buchstabenwert "
"der eingegeben Zeichenkette. (A=1 B=2 .... " "der eingegeben Zeichenkette. (A=1 B=2 .... "
"Ä=27 Ö=28 Ü=29 ß=30) Bei mehreren durch " "Ä=27 Ö=28 Ü=29 ß=30) Bei mehreren durch "
@@ -100,22 +99,24 @@ def buchstabenwortwert(eingabetext):
ewortptxt = ewortptxt + str(ewortprod) + "/" ewortptxt = ewortptxt + str(ewortprod) + "/"
ausgabe += atxt + " \n" ausgabe += atxt + " \n"
ausgabe += "Buchstabenwerte: " ausgabe += '| | |\n'
ausgabe += az[0:-1] + " \n" ausgabe += '|----|----|\n'
ausgabe += "Buchstabenwortwerte: " ausgabe += "|_Buchstabenwerte:_|"
ausgabe += eworttxt[0:-1] + " \n" ausgabe += az[0:-1] + "|\n"
ausgabe += "Summe aller Buchstabenwerte: " ausgabe += "|_Buchstabenwortwerte:_|"
ausgabe += str(wortsumme) + " \n" ausgabe += eworttxt[0:-1] + "|\n"
ausgabe += "Quersumme der Summe aller Buchstabenwerte / iterierte Quersumme: " ausgabe += "|_Summe aller Buchstabenwerte:_|"
ausgabe += str(q_sum(wortsumme)) + " / " + str(iq_sum(wortsumme)) + " \n" ausgabe += str(wortsumme) + "|\n"
ausgabe += "Buchstabenanzahl pro Wort: " ausgabe += "|_Quersumme der Summe aller Buchstabenwerte / iterierte Quersumme:_|"
ausgabe += banzwtxt[0:-1] + " \n" ausgabe += str(q_sum(wortsumme)) + " / " + str(iq_sum(wortsumme)) + "|\n"
ausgabe += "Gesamtanzahl aller Buchstaben: " ausgabe += "|_Buchstabenanzahl pro Wort:_|"
ausgabe += str(banzahla) + " \n" ausgabe += banzwtxt[0:-1] + "|\n"
ausgabe += "Wortprodukte(0 wenn kein Buchstabe gefunden): " ausgabe += "|_Gesamtanzahl aller Buchstaben:_|"
ausgabe += ewortptxt[0:-1] + " \n" ausgabe += str(banzahla) + "|\n"
ausgabe += "Buchstabenwert-Produkt:(Nullen werden ignoriert): " ausgabe += "|_Wortprodukte(0 wenn kein Buchstabe gefunden):_|"
ausgabe += str(wortprodukt) + " \n" ausgabe += ewortptxt[0:-1] + "|\n"
ausgabe += "|_Buchstabenwert-Produkt:(Nullen werden ignoriert):_|"
ausgabe += str(wortprodukt) + "|\n"
return ausgabe return ausgabe