prepared for implement more functions
This commit is contained in:
113
app/app.py
113
app/app.py
@@ -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)
|
||||||
|
|||||||
45
app/tools.py
45
app/tools.py
@@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user