prepared for implement more functions
This commit is contained in:
113
app/app.py
113
app/app.py
@@ -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)
|
||||
|
||||
45
app/tools.py
45
app/tools.py
@@ -1,18 +1,19 @@
|
||||
from helper import *
|
||||
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)."""
|
||||
# Beispiel: Fester Punkt (Potsdam)
|
||||
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' \n text: {text} \n parameter: {param}\n'
|
||||
return ausgabe_text, daten
|
||||
|
||||
def cesar_all(eingabetext):
|
||||
eingabetext = eingabetext.rstrip()
|
||||
|
||||
if eingabetext == "":
|
||||
return ("HILFE: [Cesar-Verschiebe-Chiffre] \n"
|
||||
return ("### Cesar-Verschiebe-Chiffre\n"
|
||||
"Von der eingegebenen Zeichenkette werden, "
|
||||
"alle möglichen Verschiebungen gemäß der "
|
||||
"Cesarchiffre generiert und ausgegeben. "
|
||||
@@ -38,15 +39,13 @@ def cesar_all(eingabetext):
|
||||
atxt = atxt + abc[j + r - 26]
|
||||
else:
|
||||
atxt = atxt + abc[j + r]
|
||||
if r < 10:
|
||||
ausgabe += "0"
|
||||
ausgabe += f"{r}: {atxt} \n"
|
||||
ausgabe += f"__{r:02}:__ {atxt} \n"
|
||||
return ausgabe
|
||||
|
||||
def buchstabenwortwert(eingabetext):
|
||||
eingabetext = eingabetext.rstrip()
|
||||
if eingabetext == "":
|
||||
return ("HILFE: [Buchstabenwortwerte ermitteln] \n"
|
||||
return ("### Buchstabenwortwerte ermitteln\n"
|
||||
"Diese Funktion berechnet den Buchstabenwert "
|
||||
"der eingegeben Zeichenkette. (A=1 B=2 .... "
|
||||
"Ä=27 Ö=28 Ü=29 ß=30) Bei mehreren durch "
|
||||
@@ -100,22 +99,24 @@ def buchstabenwortwert(eingabetext):
|
||||
ewortptxt = ewortptxt + str(ewortprod) + "/"
|
||||
|
||||
ausgabe += atxt + " \n"
|
||||
ausgabe += "Buchstabenwerte: "
|
||||
ausgabe += az[0:-1] + " \n"
|
||||
ausgabe += "Buchstabenwortwerte: "
|
||||
ausgabe += eworttxt[0:-1] + " \n"
|
||||
ausgabe += "Summe aller Buchstabenwerte: "
|
||||
ausgabe += str(wortsumme) + " \n"
|
||||
ausgabe += "Quersumme der Summe aller Buchstabenwerte / iterierte Quersumme: "
|
||||
ausgabe += str(q_sum(wortsumme)) + " / " + str(iq_sum(wortsumme)) + " \n"
|
||||
ausgabe += "Buchstabenanzahl pro Wort: "
|
||||
ausgabe += banzwtxt[0:-1] + " \n"
|
||||
ausgabe += "Gesamtanzahl aller Buchstaben: "
|
||||
ausgabe += str(banzahla) + " \n"
|
||||
ausgabe += "Wortprodukte(0 wenn kein Buchstabe gefunden): "
|
||||
ausgabe += ewortptxt[0:-1] + " \n"
|
||||
ausgabe += "Buchstabenwert-Produkt:(Nullen werden ignoriert): "
|
||||
ausgabe += str(wortprodukt) + " \n"
|
||||
ausgabe += '| | |\n'
|
||||
ausgabe += '|----|----|\n'
|
||||
ausgabe += "|_Buchstabenwerte:_|"
|
||||
ausgabe += az[0:-1] + "|\n"
|
||||
ausgabe += "|_Buchstabenwortwerte:_|"
|
||||
ausgabe += eworttxt[0:-1] + "|\n"
|
||||
ausgabe += "|_Summe aller Buchstabenwerte:_|"
|
||||
ausgabe += str(wortsumme) + "|\n"
|
||||
ausgabe += "|_Quersumme der Summe aller Buchstabenwerte / iterierte Quersumme:_|"
|
||||
ausgabe += str(q_sum(wortsumme)) + " / " + str(iq_sum(wortsumme)) + "|\n"
|
||||
ausgabe += "|_Buchstabenanzahl pro Wort:_|"
|
||||
ausgabe += banzwtxt[0:-1] + "|\n"
|
||||
ausgabe += "|_Gesamtanzahl aller Buchstaben:_|"
|
||||
ausgabe += str(banzahla) + "|\n"
|
||||
ausgabe += "|_Wortprodukte(0 wenn kein Buchstabe gefunden):_|"
|
||||
ausgabe += ewortptxt[0:-1] + "|\n"
|
||||
ausgabe += "|_Buchstabenwert-Produkt:(Nullen werden ignoriert):_|"
|
||||
ausgabe += str(wortprodukt) + "|\n"
|
||||
return ausgabe
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user