From 9cf54bd0511bf24061f3f51d3519618ae3cc059b Mon Sep 17 00:00:00 2001 From: Daniel Nagel Date: Thu, 26 Mar 2026 08:55:11 +0000 Subject: [PATCH] =?UTF-8?q?Match=20formular=20f=C3=BCr=20mobile=20angepass?= =?UTF-8?q?t.=20Punkte=20Eintrag=20hat=20jetzt=20+=20-=20Buttons=20f=C3=BC?= =?UTF-8?q?r=20Pr=C3=A4zise=20Einstellungen.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...-b1350d67-43b3-4813-9c12-9090a9f37b57.json | 1 + gui/match_gui.py | 53 +++++++++++++------ 2 files changed, 37 insertions(+), 17 deletions(-) create mode 100644 .nicegui/storage-user-b1350d67-43b3-4813-9c12-9090a9f37b57.json diff --git a/.nicegui/storage-user-b1350d67-43b3-4813-9c12-9090a9f37b57.json b/.nicegui/storage-user-b1350d67-43b3-4813-9c12-9090a9f37b57.json new file mode 100644 index 0000000..6c3d053 --- /dev/null +++ b/.nicegui/storage-user-b1350d67-43b3-4813-9c12-9090a9f37b57.json @@ -0,0 +1 @@ +{"authenticated":true,"discord_id":"277898241750859776","discord_name":"mrteels","db_id":2,"display_name":"Verzweifelter Kultist","discord_avatar_url":"https://cdn.discordapp.com/avatars/277898241750859776/7c3446bb51fafd72b1b4c21124b4994f.png"} \ No newline at end of file diff --git a/gui/match_gui.py b/gui/match_gui.py index 552c84a..de18d6e 100644 --- a/gui/match_gui.py +++ b/gui/match_gui.py @@ -19,7 +19,6 @@ def setup_routes(): # --- Eingabeformular --- with ui.card().classes('w-full max-w-md mx-auto items-center mt-10 p-6 shadow-xl'): - system_id = data_api.get_gamesystem_id_by_name(system_name) system_data = data_api.get_gamesystem_data(system_id) min_score = system_data["min_score"] @@ -27,32 +26,52 @@ def setup_routes(): # Text-Center hinzugefügt, falls der Systemname sehr lang ist und auf dem Handy umbricht ui.label(f'Neues Spiel für {system_name} eintragen').classes('text-2xl font-bold text-center mb-6') - ui.label("Meine Punkte:").classes('text-xl font-bold w-full text-left') - with ui.column().classes("w-full items-center gap-6"): - # 1. Daten aus der DB holen - raw_players = data_api.get_all_players_from_system(system_name) - my_id = app.storage.user.get('db_id') + with ui.card().classes('w-full max-w-md mx-auto items-center mt-10 p-6'): + ui.label("Meine Punkte:").classes('text-xl font-bold w-full text-left') + with ui.column().classes("w-full items-center gap-6"): + # 1. Daten aus der DB holen + raw_players = data_api.get_all_players_from_system(system_name) + my_id = app.storage.user.get('db_id') + def add_point(): + p1_points.value += 1 + + def sub_point(): + p1_points.value -= 1 + + with ui.row().classes("w-full items-center justify-between"): + p1_points = ui.slider(min=min_score, max=max_score, value=10).classes("w-35") + with ui.column().classes("items-center justify-between"): + # Punkte Up- Down- Buttons. und Textanzeige + ui.button(icon="expand_less", on_click=add_point) + ui.label().bind_text_from(p1_points, 'value').classes("text-lg text-normaltext") + ui.button(icon="expand_more", on_click=sub_point) + + with ui.card().classes('w-full max-w-md mx-auto items-center mt-10 p-6'): dropdown_options = {} for p in raw_players: if p['player_id'] == my_id: continue dropdown_options[p['player_id']] = f"{p['display_name']} 'aka' {p['discord_name']}" - with ui.row().classes("w-full items-center justify-between"): - p1_points = ui.slider(min=min_score, max=max_score, value=10).classes("w-70") - ui.label().bind_text_from(p1_points, 'value').classes("text-lg text-normaltext") - - ui.separator().classes('w-full mt-4') # Ein schöner Trennstrich für die Optik - - ui.label("Gegner:").classes('text-xl font-bold w-full text-left') opponent_select = ui.select(options=dropdown_options, label='Gegner auswählen').classes('w-full') - with ui.row().classes("w-full items-center justify-between"): - p2_points = ui.slider(min=min_score, max=max_score, value=10).classes("w-70") - ui.label().bind_text_from(p2_points, 'value').classes("text-lg text-normaltext") - ui.space() + def add_point(): + p2_points.value += 1 + + def sub_point(): + p2_points.value -= 1 + + with ui.row().classes("w-full items-center justify-between"): + p2_points = ui.slider(min=min_score, max=max_score, value=10).classes("w-35") + with ui.column().classes("items-center justify-between"): + # Punkte Up- Down- Buttons. und Textanzeige + ui.button(icon="expand_less", on_click=add_point) + ui.label().bind_text_from(p2_points, 'value').classes("text-lg text-normaltext") + ui.button(icon="expand_more", on_click=sub_point) + + # Das Match in die Datenbank eintragen lassen und die MMR Berechnung triggern. def input_match_to_database():