From b6ef2b5995b9b38739e8690503b80272a53a2fe8 Mon Sep 17 00:00:00 2001 From: David Rodenkirchen Date: Sat, 31 Jan 2026 18:33:28 +0100 Subject: [PATCH 01/10] Add tournaments UI - Prototype #1 --- src/EzggLanManager.py | 9 +- src/ezgg_lan_manager/__init__.py | 6 +- src/ezgg_lan_manager/assets/img/games/rl.png | Bin 0 -> 65051 bytes .../assets/img/games/teeworlds.png | Bin 0 -> 61484 bytes .../assets/img/games/worms.png | Bin 0 -> 10076 bytes .../components/TournamentPageRow.py | 60 ++++++++++++ .../pages/TournamentDetailsPage.py | 65 +++++++++++++ src/ezgg_lan_manager/pages/TournamentsPage.py | 52 ++++++++--- src/ezgg_lan_manager/pages/__init__.py | 1 + .../services/TournamentService.py | 86 ++++++++++++++++++ src/ezgg_lan_manager/types/Tournament.py | 8 +- src/ezgg_lan_manager/types/TournamentBase.py | 2 +- 12 files changed, 271 insertions(+), 18 deletions(-) create mode 100644 src/ezgg_lan_manager/assets/img/games/rl.png create mode 100644 src/ezgg_lan_manager/assets/img/games/teeworlds.png create mode 100644 src/ezgg_lan_manager/assets/img/games/worms.png create mode 100644 src/ezgg_lan_manager/components/TournamentPageRow.py create mode 100644 src/ezgg_lan_manager/pages/TournamentDetailsPage.py create mode 100644 src/ezgg_lan_manager/services/TournamentService.py diff --git a/src/EzggLanManager.py b/src/EzggLanManager.py index 26a2589..3fdb22e 100644 --- a/src/EzggLanManager.py +++ b/src/EzggLanManager.py @@ -30,7 +30,7 @@ if __name__ == "__main__": corner_radius_large=0, font=Font(from_root("src/ezgg_lan_manager/assets/fonts/joystix.otf")) ) - default_attachments = [LocalData()] + default_attachments: list = [LocalData()] default_attachments.extend(init_services()) lan_info = default_attachments[3].get_lan_info() @@ -161,6 +161,11 @@ if __name__ == "__main__": name="DbErrorPage", url_segment="db-error", build=pages.DbErrorPage, + ), + ComponentPage( + name="TournamentDetailsPage", + url_segment="tournament", + build=pages.TournamentDetailsPage, ) ], theme=theme, @@ -188,5 +193,5 @@ if __name__ == "__main__": sys.exit(app.run_as_web_server( host="0.0.0.0", - port=8000, + port=8001, )) diff --git a/src/ezgg_lan_manager/__init__.py b/src/ezgg_lan_manager/__init__.py index a53851c..f781029 100644 --- a/src/ezgg_lan_manager/__init__.py +++ b/src/ezgg_lan_manager/__init__.py @@ -13,11 +13,12 @@ from src.ezgg_lan_manager.services.NewsService import NewsService from src.ezgg_lan_manager.services.ReceiptPrintingService import ReceiptPrintingService from src.ezgg_lan_manager.services.SeatingService import SeatingService from src.ezgg_lan_manager.services.TicketingService import TicketingService +from src.ezgg_lan_manager.services.TournamentService import TournamentService from src.ezgg_lan_manager.services.UserService import UserService from src.ezgg_lan_manager.types import * # Inits services in the correct order -def init_services() -> tuple[AccountingService, CateringService, ConfigurationService, DatabaseService, MailingService, NewsService, SeatingService, TicketingService, UserService, LocalDataService, ReceiptPrintingService]: +def init_services() -> tuple[AccountingService, CateringService, ConfigurationService, DatabaseService, MailingService, NewsService, SeatingService, TicketingService, UserService, LocalDataService, ReceiptPrintingService, TournamentService]: logging.basicConfig(level=logging.DEBUG) configuration_service = ConfigurationService(from_root("config.toml")) db_service = DatabaseService(configuration_service.get_database_configuration()) @@ -30,6 +31,7 @@ def init_services() -> tuple[AccountingService, CateringService, ConfigurationSe receipt_printing_service = ReceiptPrintingService(seating_service, configuration_service.get_receipt_printing_configuration(), configuration_service.DEV_MODE_ACTIVE) catering_service = CateringService(db_service, accounting_service, user_service, receipt_printing_service) local_data_service = LocalDataService() + tournament_service = TournamentService(db_service, user_service) - return accounting_service, catering_service, configuration_service, db_service, mailing_service, news_service, seating_service, ticketing_service, user_service, local_data_service, receipt_printing_service + return accounting_service, catering_service, configuration_service, db_service, mailing_service, news_service, seating_service, ticketing_service, user_service, local_data_service, receipt_printing_service, tournament_service diff --git a/src/ezgg_lan_manager/assets/img/games/rl.png b/src/ezgg_lan_manager/assets/img/games/rl.png new file mode 100644 index 0000000000000000000000000000000000000000..349f589be29922c3133f6082161afeb0fb377b3e GIT binary patch literal 65051 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 literal 0 HcmV?d00001 diff --git a/src/ezgg_lan_manager/assets/img/games/worms.png b/src/ezgg_lan_manager/assets/img/games/worms.png new file mode 100644 index 0000000000000000000000000000000000000000..b55138871d50de699d4dac81641842287a9a06aa GIT binary patch literal 10076 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 literal 0 HcmV?d00001 diff --git a/src/ezgg_lan_manager/components/TournamentPageRow.py b/src/ezgg_lan_manager/components/TournamentPageRow.py new file mode 100644 index 0000000..2b17bee --- /dev/null +++ b/src/ezgg_lan_manager/components/TournamentPageRow.py @@ -0,0 +1,60 @@ +from typing import Literal, Callable + +from rio import Component, PointerEventListener, Rectangle, Image, Text, Tooltip, TextStyle, Color, Icon, Row, PointerEvent + +from from_root import from_root + +from src.ezgg_lan_manager.types.TournamentBase import TournamentStatus + + +class TournamentPageRow(Component): + tournament_id: int + tournament_name: str + game_image_name: str + current_participants: int + max_participants: int + tournament_status: TournamentStatus + clicked_cb: Callable + + def handle_click(self, _: PointerEvent) -> None: + self.clicked_cb(self.tournament_id) + + def determine_tournament_status_icon_color_and_text(self) -> tuple[str, Literal["success", "warning", "danger"], str]: + if self.tournament_status == TournamentStatus.OPEN: + return "material/lock_open", "success", "Anmeldung geöffnet" + elif self.tournament_status == TournamentStatus.CLOSED: + return "material/lock", "danger", "Anmeldung geschlossen" + elif self.tournament_status == TournamentStatus.ONGOING: + return "material/autoplay", "warning", "Turnier läuft" + elif self.tournament_status == TournamentStatus.COMPLETED: + return "material/check_circle", "success", "Turnier beendet" + elif self.tournament_status == TournamentStatus.CANCELED: + return "material/cancel", "danger", "Turnier abgesagt" + elif self.tournament_status == TournamentStatus.INVITE_ONLY: + return "material/person_cancel", "warning", "Teilnahme nur per Einladung" + else: + raise RuntimeError(f"Unknown tournament status: {str(self.tournament_status)}") + + def build(self) -> Component: + icon_name, color, text = self.determine_tournament_status_icon_color_and_text() + return PointerEventListener( + content=Rectangle( + content=Row( + Image(image=from_root(f"src/ezgg_lan_manager/assets/img/games/{self.game_image_name}")), + Text(self.tournament_name, style=TextStyle(fill=self.session.theme.background_color, font_size=1)), + Text(f"{self.current_participants}/{self.max_participants}", style=TextStyle(fill=self.session.theme.background_color, font_size=1), justify="right", margin_right=0.5), + Tooltip(anchor=Icon(icon_name, min_width=1, min_height=1, fill=color), position="top", + tip=Text(text, style=TextStyle(fill=self.session.theme.background_color, font_size=0.7))), + proportions=[1, 4, 1, 1], + margin=.5 + ), + fill=self.session.theme.hud_color, + margin=1, + margin_bottom=0, + stroke_color=Color.TRANSPARENT, + stroke_width=0.2, + hover_stroke_color=self.session.theme.background_color, + cursor="pointer" + ), + on_press=self.handle_click + ) diff --git a/src/ezgg_lan_manager/pages/TournamentDetailsPage.py b/src/ezgg_lan_manager/pages/TournamentDetailsPage.py new file mode 100644 index 0000000..40da0fb --- /dev/null +++ b/src/ezgg_lan_manager/pages/TournamentDetailsPage.py @@ -0,0 +1,65 @@ +from typing import Optional + +from rio import Column, Component, event, TextStyle, Text, Rectangle, Row, Image, Icon, Tooltip, Spacer, Color, PointerEventListener, ProgressCircle + +from src.ezgg_lan_manager import ConfigurationService, TournamentService +from src.ezgg_lan_manager.components.MainViewContentBox import MainViewContentBox +from src.ezgg_lan_manager.components.TournamentPageRow import TournamentPageRow +from src.ezgg_lan_manager.types.Tournament import Tournament +from src.ezgg_lan_manager.types.TournamentBase import TournamentStatus + + +class TournamentDetailsPage(Component): + tournament: Optional[Tournament] = None + + @event.on_populate + async def on_populate(self) -> None: + try: + tournament_id = int(self.session.active_page_url.query_string.split("id=")[-1]) + except (ValueError, AttributeError, TypeError): + tournament_id = None + if tournament_id is not None: + self.tournament = await self.session[TournamentService].get_tournament_by_id(tournament_id) + await self.session.set_title(f"{self.session[ConfigurationService].get_lan_info().name} - {self.tournament.name}") + else: + await self.session.set_title(f"{self.session[ConfigurationService].get_lan_info().name} - Turniere") + + + def build(self) -> Component: + if not self.tournament: + return Column( + MainViewContentBox( + Column( + Column( + ProgressCircle( + color="secondary", + align_x=0.5, + margin_top=0, + margin_bottom=0 + ), + min_height=10 + ), + Spacer(min_height=1) + ) + ), + align_y = 0 + ) + + return Column( + MainViewContentBox( + Column( + Text( + text=self.tournament.name, + style=TextStyle( + fill=self.session.theme.background_color, + font_size=1.2 + ), + margin_top=2, + margin_bottom=2, + align_x=0.5 + ), + Spacer(min_height=1) + ) + ), + align_y=0 + ) diff --git a/src/ezgg_lan_manager/pages/TournamentsPage.py b/src/ezgg_lan_manager/pages/TournamentsPage.py index 41973de..7875305 100644 --- a/src/ezgg_lan_manager/pages/TournamentsPage.py +++ b/src/ezgg_lan_manager/pages/TournamentsPage.py @@ -1,15 +1,50 @@ -from rio import Column, Component, event, TextStyle, Text +from rio import Column, Component, event, TextStyle, Text, Spacer, ProgressCircle -from src.ezgg_lan_manager import ConfigurationService +from src.ezgg_lan_manager import ConfigurationService, TournamentService from src.ezgg_lan_manager.components.MainViewContentBox import MainViewContentBox +from src.ezgg_lan_manager.components.TournamentPageRow import TournamentPageRow +from src.ezgg_lan_manager.types.Tournament import Tournament class TournamentsPage(Component): + tournament_data: list[Tournament] = [] + @event.on_populate async def on_populate(self) -> None: + self.tournament_data = await self.session[TournamentService].get_tournaments() await self.session.set_title(f"{self.session[ConfigurationService].get_lan_info().name} - Turniere") + def tournament_clicked(self, tournament_id: int) -> None: + self.session.navigate_to(f"tournament?id={tournament_id}") + def build(self) -> Component: + tournament_page_rows = [] + for tournament in self.tournament_data: + tournament_page_rows.append( + TournamentPageRow( + tournament.id, + tournament.name, + tournament.game_title.image_name, + len(tournament.participants), + tournament.max_participants, + tournament.status, + self.tournament_clicked + ) + ) + + if len(self.tournament_data) == 0: + content = [Column( + ProgressCircle( + color="secondary", + align_x=0.5, + margin_top=0, + margin_bottom=0 + ), + min_height=10 + )] + else: + content = tournament_page_rows + return Column( MainViewContentBox( Column( @@ -20,18 +55,11 @@ class TournamentsPage(Component): font_size=1.2 ), margin_top=2, - margin_bottom=0, + margin_bottom=2, align_x=0.5 ), - Text( - text="Aktuell ist noch kein Turnierplan hinterlegt.", - style=TextStyle( - fill=self.session.theme.background_color, - font_size=0.9 - ), - margin=1, - overflow="wrap" - ) + *content, + Spacer(min_height=1) ) ), align_y=0 diff --git a/src/ezgg_lan_manager/pages/__init__.py b/src/ezgg_lan_manager/pages/__init__.py index deee520..0788905 100644 --- a/src/ezgg_lan_manager/pages/__init__.py +++ b/src/ezgg_lan_manager/pages/__init__.py @@ -20,3 +20,4 @@ from .ManageUsersPage import ManageUsersPage from .ManageCateringPage import ManageCateringPage from .ManageTournamentsPage import ManageTournamentsPage from .OverviewPage import OverviewPage +from .TournamentDetailsPage import TournamentDetailsPage diff --git a/src/ezgg_lan_manager/services/TournamentService.py b/src/ezgg_lan_manager/services/TournamentService.py new file mode 100644 index 0000000..96c08df --- /dev/null +++ b/src/ezgg_lan_manager/services/TournamentService.py @@ -0,0 +1,86 @@ +from asyncio import sleep +from datetime import datetime +from typing import Optional + +from src.ezgg_lan_manager.services.DatabaseService import DatabaseService +from src.ezgg_lan_manager.services.UserService import UserService +from src.ezgg_lan_manager.types.Tournament import Tournament +from src.ezgg_lan_manager.types.TournamentBase import GameTitle, TournamentFormat, TournamentStatus + + +class TournamentService: + def __init__(self, db_service: DatabaseService, user_service: UserService) -> None: + self._db_service = db_service + self._user_service = user_service + + # This overrides the database access and is meant for easy development. + # Set to None before merging back into main. + self._dev_data = [ + Tournament( + 0, + "Teeworlds 2vs2", + GameTitle( + "Teeworlds", + "Teeworlds is a free online multiplayer game, available for all major operating systems. Battle with up to 16 players in a variety of game modes.", + "https://store.steampowered.com/app/380840/Teeworlds/", + "teeworlds.png" + ), + TournamentFormat.SINGLE_ELIMINATION_BO_3, + datetime(2026, 5, 8, 18, 0, 0), + TournamentStatus.OPEN, + [], + None, + [], + 32 + ), + Tournament( + 1, + "Rocket League 3vs3", + GameTitle( + "Rocket League", + "Rocket League is a high-powered hybrid of arcade-style soccer and vehicular mayhem with easy-to-understand controls and fluid, physics-driven competition.", + "https://steamcommunity.com/app/252950", + "rl.png" + ), + TournamentFormat.SINGLE_ELIMINATION_BO_3, + datetime(2026, 5, 8, 18, 0, 0), + TournamentStatus.OPEN, + [], + None, + [], + 8 + ), + Tournament( + 2, + "Worms Armageddon 1vs1", + GameTitle( + "Worms Armageddon", + "2D turn-based artillery strategy game.", + "https://store.steampowered.com/app/217200/Worms_Armageddon/", + "worms.png" + ), + TournamentFormat.SINGLE_ELIMINATION_BO_1, + datetime(2026, 5, 8, 18, 30, 0), + TournamentStatus.OPEN, + [], + None, + [], + 16 + ) + ] + + + async def get_tournaments(self) -> list[Tournament]: + # Fake DB lookup delay + await sleep(1) + + if self._dev_data is not None: + return self._dev_data + return [] # ToDo: Implement database polling + + async def get_tournament_by_id(self, tournament_id: int) -> Optional[Tournament]: + await sleep(1) + try: + return self._dev_data[tournament_id] + except IndexError: + return None diff --git a/src/ezgg_lan_manager/types/Tournament.py b/src/ezgg_lan_manager/types/Tournament.py index f83ebe3..ad7b2fd 100644 --- a/src/ezgg_lan_manager/types/Tournament.py +++ b/src/ezgg_lan_manager/types/Tournament.py @@ -18,7 +18,8 @@ class Tournament: status: TournamentStatus, participants: list[Participant], matches: Optional[tuple[Match]], - rounds: list[list[Match]]) -> None: + rounds: list[list[Match]], + max_participants: int) -> None: self._id = id_ self._name = name self._game_title = game_title @@ -28,6 +29,7 @@ class Tournament: self._participants = participants self._matches = matches self._rounds = rounds + self._max_participants = max_participants @property def id(self) -> int: @@ -69,6 +71,10 @@ class Tournament: def matches(self) -> list[Match]: return self._matches if self._matches else [] + @property + def max_participants(self) -> int: + return self._max_participants + def add_participant(self, participant: Participant) -> None: if participant.id in (p.id for p in self._participants): raise TournamentError(f"Participant with ID {participant.id} already registered for tournament") diff --git a/src/ezgg_lan_manager/types/TournamentBase.py b/src/ezgg_lan_manager/types/TournamentBase.py index 5b79e23..0d0cd5e 100644 --- a/src/ezgg_lan_manager/types/TournamentBase.py +++ b/src/ezgg_lan_manager/types/TournamentBase.py @@ -7,7 +7,7 @@ class GameTitle: name: str description: str web_link: str - + image_name: str # Name of the image in assets/img/games class TournamentFormat(Enum): SINGLE_ELIMINATION_BO_1 = 1 -- 2.45.2 From 1137a9e7c7b27c0fed9948df5bae211270ee87b6 Mon Sep 17 00:00:00 2001 From: David Rodenkirchen Date: Mon, 2 Feb 2026 08:52:38 +0100 Subject: [PATCH 02/10] implement Details View UI for tournaments --- .../components/TournamentDetailsInfoRow.py | 33 +++ .../pages/TournamentDetailsPage.py | 188 +++++++++++++++--- .../services/TournamentService.py | 18 +- src/ezgg_lan_manager/types/DateUtil.py | 15 ++ src/ezgg_lan_manager/types/Tournament.py | 16 +- src/ezgg_lan_manager/types/TournamentBase.py | 33 +++ testing/unittests/TournamentDomainTests.py | 9 +- 7 files changed, 275 insertions(+), 37 deletions(-) create mode 100644 src/ezgg_lan_manager/components/TournamentDetailsInfoRow.py create mode 100644 src/ezgg_lan_manager/types/DateUtil.py diff --git a/src/ezgg_lan_manager/components/TournamentDetailsInfoRow.py b/src/ezgg_lan_manager/components/TournamentDetailsInfoRow.py new file mode 100644 index 0000000..9992dc9 --- /dev/null +++ b/src/ezgg_lan_manager/components/TournamentDetailsInfoRow.py @@ -0,0 +1,33 @@ +from typing import Optional + +from rio import Component, Row, Text, TextStyle, Color + + +class TournamentDetailsInfoRow(Component): + key: str + value: str + color: Optional[Color] = None + + def build(self) -> Component: + return Row( + Text( + text=self.key, + style=TextStyle( + fill=self.session.theme.background_color, + font_size=1 + ), + margin_bottom=0.5, + align_x=0 + ), + Text( + text=self.value, + style=TextStyle( + fill=self.color if self.color is not None else self.session.theme.background_color, + font_size=1 + ), + margin_bottom=0.5, + align_x=1 + ), + margin_left=4, + margin_right=4 + ) diff --git a/src/ezgg_lan_manager/pages/TournamentDetailsPage.py b/src/ezgg_lan_manager/pages/TournamentDetailsPage.py index 40da0fb..031f02a 100644 --- a/src/ezgg_lan_manager/pages/TournamentDetailsPage.py +++ b/src/ezgg_lan_manager/pages/TournamentDetailsPage.py @@ -1,16 +1,26 @@ -from typing import Optional +from typing import Optional, Union, Literal -from rio import Column, Component, event, TextStyle, Text, Rectangle, Row, Image, Icon, Tooltip, Spacer, Color, PointerEventListener, ProgressCircle +from from_root import from_root +from rio import Column, Component, event, TextStyle, Text, Row, Image, Spacer, ProgressCircle, Button, Checkbox, ThemeContextSwitcher, Link -from src.ezgg_lan_manager import ConfigurationService, TournamentService +from src.ezgg_lan_manager import ConfigurationService, TournamentService, UserService from src.ezgg_lan_manager.components.MainViewContentBox import MainViewContentBox -from src.ezgg_lan_manager.components.TournamentPageRow import TournamentPageRow +from src.ezgg_lan_manager.components.TournamentDetailsInfoRow import TournamentDetailsInfoRow +from src.ezgg_lan_manager.types.DateUtil import weekday_to_display_text +from src.ezgg_lan_manager.types.SessionStorage import SessionStorage from src.ezgg_lan_manager.types.Tournament import Tournament -from src.ezgg_lan_manager.types.TournamentBase import TournamentStatus +from src.ezgg_lan_manager.types.TournamentBase import TournamentStatus, tournament_status_to_display_text, tournament_format_to_display_texts +from src.ezgg_lan_manager.types.User import User class TournamentDetailsPage(Component): - tournament: Optional[Tournament] = None + tournament: Optional[Union[Tournament, str]] = None + rules_accepted: bool = False + user: Optional[User] = None + loading: bool = False + # State for message above register button + message: str = "" + is_success: bool = False @event.on_populate async def on_populate(self) -> None: @@ -20,44 +30,166 @@ class TournamentDetailsPage(Component): tournament_id = None if tournament_id is not None: self.tournament = await self.session[TournamentService].get_tournament_by_id(tournament_id) - await self.session.set_title(f"{self.session[ConfigurationService].get_lan_info().name} - {self.tournament.name}") + if self.tournament is not None: + await self.session.set_title(f"{self.session[ConfigurationService].get_lan_info().name} - {self.tournament.name}") else: await self.session.set_title(f"{self.session[ConfigurationService].get_lan_info().name} - Turniere") + self.user = await self.session[UserService].get_user(self.session[SessionStorage].user_id) + + self.loading_done() + + async def register_pressed(self) -> None: + self.loading = True + if not self.user: + return + self.is_success = True + self.message = f"Erfolgreich angemeldet!" # ToDo: Hook into Tournament Service + self.loading = False + + async def unregister_pressed(self) -> None: + self.loading = True + if not self.user: + return + self.is_success = True + self.message = f"Erfolgreich abgemeldet!" # ToDo: Hook into Tournament Service + self.loading = False + + def loading_done(self) -> None: + if self.tournament is None: + self.tournament = "Turnier konnte nicht gefunden werden" + self.session[SessionStorage].subscribe_to_logged_in_or_out_event(str(self.__class__), self.on_populate) def build(self) -> Component: - if not self.tournament: - return Column( - MainViewContentBox( - Column( - Column( - ProgressCircle( - color="secondary", - align_x=0.5, - margin_top=0, - margin_bottom=0 - ), - min_height=10 - ), - Spacer(min_height=1) - ) + if self.tournament is None: + content = Column( + ProgressCircle( + color="secondary", + align_x=0.5, + margin_top=0, + margin_bottom=0 ), - align_y = 0 + min_height=10 ) + elif isinstance(self.tournament, str): + content = Row( + Text( + text=self.tournament, + style=TextStyle( + fill=self.session.theme.background_color, + font_size=1 + ), + margin_top=2, + margin_bottom=2, + align_x=0.5 + ) + ) + else: + tournament_status_color = self.session.theme.background_color + if self.tournament.status == TournamentStatus.OPEN: + tournament_status_color = self.session.theme.success_color + elif self.tournament.status == TournamentStatus.CLOSED: + tournament_status_color = self.session.theme.danger_color + elif self.tournament.status == TournamentStatus.ONGOING: + tournament_status_color = self.session.theme.warning_color - return Column( - MainViewContentBox( - Column( + + # ToDo: Integrate Teams logic + ids_of_participants = [p.id for p in self.tournament.participants] + color_key: Literal["hud", "danger"] = "hud" + on_press_function = self.register_pressed + if self.user and self.user.user_id in ids_of_participants: # User already registered for tournament + button_text = "Abmelden" + button_sensitive_hook = True # User has already accepted the rules previously + color_key = "danger" + on_press_function = self.unregister_pressed + elif self.user and self.user.user_id not in ids_of_participants: + button_text = "Anmelden" + button_sensitive_hook = self.rules_accepted + else: + # This should NEVER happen + button_text = "Anmelden" + button_sensitive_hook = False + + if self.tournament.status != TournamentStatus.OPEN or self.tournament.is_full: + button_sensitive_hook = False # Override button controls if tournament is not open anymore or full + + if self.user: + accept_rules_row = Row( + ThemeContextSwitcher(content=Checkbox(is_on=self.bind().rules_accepted, margin_left=4), color=self.session.theme.hud_color), + Text("Ich akzeptiere die ", margin_left=1, style=TextStyle(fill=self.session.theme.background_color, font_size=0.8), overflow="nowrap", justify="right"), + Link(Text("Turnierregeln", margin_right=4, style=TextStyle(fill=self.session.theme.background_color, font_size=0.8, italic=True), overflow="nowrap", justify="left"), "https://google.de") # ToDo: Add rules + ) + button = Button( + content=button_text, + shape="rectangle", + style="major", + color=color_key, + margin_left=2, + margin_right=2, + is_sensitive=button_sensitive_hook, + on_press=on_press_function, + is_loading=self.loading + ) + else: + # No UI here if user not logged in + accept_rules_row, button = Spacer(), Spacer() + + + + content = Column( + Row( + Image(image=from_root(f"src/ezgg_lan_manager/assets/img/games/{self.tournament.game_title.image_name}")), Text( text=self.tournament.name, style=TextStyle( fill=self.session.theme.background_color, font_size=1.2 ), - margin_top=2, - margin_bottom=2, + margin_top=1, + margin_bottom=1, align_x=0.5 ), + margin_right=6, + margin_left=6 + ), + Spacer(min_height=1), + TournamentDetailsInfoRow("Status", tournament_status_to_display_text(self.tournament.status), tournament_status_color), + TournamentDetailsInfoRow("Startzeit", f"{weekday_to_display_text(self.tournament.start_time.weekday())}, {self.tournament.start_time.strftime('%H:%M')} Uhr"), + TournamentDetailsInfoRow("Format", tournament_format_to_display_texts(self.tournament.format)[0]), + TournamentDetailsInfoRow("Best of", tournament_format_to_display_texts(self.tournament.format)[1]), + TournamentDetailsInfoRow( + "Teilnehmer", + f"{len(self.tournament.participants)} / {self.tournament.max_participants}", + self.session.theme.danger_color if self.tournament.is_full else self.session.theme.background_color + ), + Row( + Text( + text="Info", + style=TextStyle( + fill=self.session.theme.background_color, + font_size=1.2 + ), + margin_top=1, + margin_bottom=1, + align_x=0.5 + ) + ), + # FixMe: Use rio.Markdown with correct TextStyle instead to allow basic text formatting from DB-side. + Text(self.tournament.description, margin_left=2, margin_right=2, style=TextStyle(fill=self.session.theme.background_color, font_size=1), overflow="wrap"), + Spacer(min_height=2), + accept_rules_row, + Spacer(min_height=0.5), + Text(self.message, margin_left=2, margin_right=2, style=TextStyle(fill=self.session.theme.success_color if self.is_success else self.session.theme.danger_color, font_size=1), overflow="wrap", justify="center"), + Spacer(min_height=0.5), + button + ) + + return Column( + MainViewContentBox( + Column( + Spacer(min_height=1), + content, Spacer(min_height=1) ) ), diff --git a/src/ezgg_lan_manager/services/TournamentService.py b/src/ezgg_lan_manager/services/TournamentService.py index 96c08df..0c6c43a 100644 --- a/src/ezgg_lan_manager/services/TournamentService.py +++ b/src/ezgg_lan_manager/services/TournamentService.py @@ -4,8 +4,17 @@ from typing import Optional from src.ezgg_lan_manager.services.DatabaseService import DatabaseService from src.ezgg_lan_manager.services.UserService import UserService +from src.ezgg_lan_manager.types.Participant import Participant from src.ezgg_lan_manager.types.Tournament import Tournament -from src.ezgg_lan_manager.types.TournamentBase import GameTitle, TournamentFormat, TournamentStatus +from src.ezgg_lan_manager.types.TournamentBase import GameTitle, TournamentFormat, TournamentStatus, ParticipantType + +DEV_LOREM_IPSUM = """ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Dieses LAN-Turnier bringt Spieler aus verschiedenen Regionen zusammen, um gemeinsam spannende Matches zu erleben. Tastaturen klappern, Monitore leuchten und die Stimmung ist von Anfang an von Vorfreude und Ehrgeiz geprägt. + +Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. In intensiven Partien zählen Strategie, Reaktion und Teamarbeit. Zwischen den Spielen wird gefachsimpelt, gelacht und neue Kontakte entstehen, während Server stabil laufen und das Netzwerk dauerhaft gefordert ist. + +Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Wenn die Finalspiele beginnen, steigt die Spannung spürbar. Am Ende bleiben faire Wettkämpfe, gemeinsame Erinnerungen und das Gefühl, Teil einer starken Community gewesen zu sein. +""" class TournamentService: @@ -19,6 +28,7 @@ class TournamentService: Tournament( 0, "Teeworlds 2vs2", + DEV_LOREM_IPSUM, GameTitle( "Teeworlds", "Teeworlds is a free online multiplayer game, available for all major operating systems. Battle with up to 16 players in a variety of game modes.", @@ -36,6 +46,7 @@ class TournamentService: Tournament( 1, "Rocket League 3vs3", + DEV_LOREM_IPSUM, GameTitle( "Rocket League", "Rocket League is a high-powered hybrid of arcade-style soccer and vehicular mayhem with easy-to-understand controls and fluid, physics-driven competition.", @@ -45,7 +56,7 @@ class TournamentService: TournamentFormat.SINGLE_ELIMINATION_BO_3, datetime(2026, 5, 8, 18, 0, 0), TournamentStatus.OPEN, - [], + [Participant(30, "Typhus", ParticipantType.PLAYER)], None, [], 8 @@ -53,6 +64,7 @@ class TournamentService: Tournament( 2, "Worms Armageddon 1vs1", + DEV_LOREM_IPSUM, GameTitle( "Worms Armageddon", "2D turn-based artillery strategy game.", @@ -61,7 +73,7 @@ class TournamentService: ), TournamentFormat.SINGLE_ELIMINATION_BO_1, datetime(2026, 5, 8, 18, 30, 0), - TournamentStatus.OPEN, + TournamentStatus.CLOSED, [], None, [], diff --git a/src/ezgg_lan_manager/types/DateUtil.py b/src/ezgg_lan_manager/types/DateUtil.py new file mode 100644 index 0000000..9891934 --- /dev/null +++ b/src/ezgg_lan_manager/types/DateUtil.py @@ -0,0 +1,15 @@ +def weekday_to_display_text(weekday: int) -> str: + if weekday == 0: + return "Montag" + elif weekday == 1: + return "Dienstag" + elif weekday == 2: + return "Mittwoch" + elif weekday == 3: + return "Donnerstag" + elif weekday == 4: + return "Freitag" + elif weekday == 5: + return "Samstag" + else: + return "Sonntag" diff --git a/src/ezgg_lan_manager/types/Tournament.py b/src/ezgg_lan_manager/types/Tournament.py index ad7b2fd..1821230 100644 --- a/src/ezgg_lan_manager/types/Tournament.py +++ b/src/ezgg_lan_manager/types/Tournament.py @@ -12,6 +12,7 @@ class Tournament: def __init__(self, id_: int, name: str, + description: str, game_title: GameTitle, format_: TournamentFormat, start_time: datetime, @@ -22,6 +23,7 @@ class Tournament: max_participants: int) -> None: self._id = id_ self._name = name + self._description = description self._game_title = game_title self._format = format_ self._start_time = start_time @@ -75,6 +77,14 @@ class Tournament: def max_participants(self) -> int: return self._max_participants + @property + def description(self) -> str: + return self._description + + @property + def is_full(self) -> bool: + return len(self._participants) >= self._max_participants + def add_participant(self, participant: Participant) -> None: if participant.id in (p.id for p in self._participants): raise TournamentError(f"Participant with ID {participant.id} already registered for tournament") @@ -310,16 +320,18 @@ class Tournament: match.check_completion() -def generate_new_tournament(name: str, game_title: GameTitle, format_: TournamentFormat, start_time: datetime, initial_status: TournamentStatus = TournamentStatus.CLOSED) -> Tournament: +def generate_new_tournament(name: str, description: str, game_title: GameTitle, format_: TournamentFormat, start_time: datetime, max_participants: int, initial_status: TournamentStatus = TournamentStatus.CLOSED) -> Tournament: id_ = uuid.uuid4().int return Tournament( id_, name, + description, game_title, format_, start_time, initial_status, list(), None, - list() + list(), + max_participants ) diff --git a/src/ezgg_lan_manager/types/TournamentBase.py b/src/ezgg_lan_manager/types/TournamentBase.py index 0d0cd5e..039a7d7 100644 --- a/src/ezgg_lan_manager/types/TournamentBase.py +++ b/src/ezgg_lan_manager/types/TournamentBase.py @@ -17,6 +17,23 @@ class TournamentFormat(Enum): DOUBLE_ELIMINATION_BO_3 = 5 DOUBLE_ELIMINATION_BO_5 = 6 +def tournament_format_to_display_texts(tournament_format: TournamentFormat) -> tuple[str, str]: + """ Returns tuple where idx 0 is SE/DE string and idx 1 is match count """ + if tournament_format == TournamentFormat.SINGLE_ELIMINATION_BO_1: + return "Single Elimination", "1" + elif tournament_format == TournamentFormat.SINGLE_ELIMINATION_BO_3: + return "Single Elimination", "3" + elif tournament_format == TournamentFormat.SINGLE_ELIMINATION_BO_5: + return "Single Elimination", "5" + elif tournament_format == TournamentFormat.DOUBLE_ELIMINATION_BO_1: + return "Double Elimination", "1" + elif tournament_format == TournamentFormat.DOUBLE_ELIMINATION_BO_3: + return "Double Elimination", "3" + elif tournament_format == TournamentFormat.DOUBLE_ELIMINATION_BO_5: + return "Double Elimination", "5" + else: + raise RuntimeError(f"Unknown tournament status: {str(tournament_format)}") + class TournamentStatus(Enum): CLOSED = 1 @@ -26,6 +43,22 @@ class TournamentStatus(Enum): INVITE_ONLY = 5 # For Show-matches ONGOING = 6 +def tournament_status_to_display_text(tournament_status: TournamentStatus) -> str: + if tournament_status == TournamentStatus.OPEN: + return "Offen" + elif tournament_status == TournamentStatus.CLOSED: + return "Geschlossen" + elif tournament_status == TournamentStatus.ONGOING: + return "Läuft" + elif tournament_status == TournamentStatus.COMPLETED: + return "Abgeschlossen" + elif tournament_status == TournamentStatus.CANCELED: + return "Abgesagt" + elif tournament_status == TournamentStatus.INVITE_ONLY: + return "Invite-only" + else: + raise RuntimeError(f"Unknown tournament status: {str(tournament_status)}") + class TournamentError(Exception): def __init__(self, message: str) -> None: diff --git a/testing/unittests/TournamentDomainTests.py b/testing/unittests/TournamentDomainTests.py index bf9518a..f24c9c7 100644 --- a/testing/unittests/TournamentDomainTests.py +++ b/testing/unittests/TournamentDomainTests.py @@ -9,7 +9,8 @@ class TournamentDomainTests(unittest.TestCase): def setUp(self): # Generic Tournament config self.name = "Tetris 1vs1" - self.game_title = GameTitle("Tetris99", "Some Description", "https://de.wikipedia.org/wiki/Tetris_99") + self.description = "Just play Tetris, yo" + self.game_title = GameTitle("Tetris99", "Some Description", "https://de.wikipedia.org/wiki/Tetris_99", "tetris.png") self.format_ = TournamentFormat.SINGLE_ELIMINATION_BO_3 self.start_time = datetime(year=2100, month=6, day=23, hour=16, minute=30, second=0) self.initial_status = TournamentStatus.CLOSED @@ -20,18 +21,18 @@ class TournamentDomainTests(unittest.TestCase): self.participant_c = Participant(3, "FunnyUserName", ParticipantType.PLAYER) def test_tournament_without_participants_can_not_be_started(self) -> None: - tournament_under_test = generate_new_tournament(self.name, self.game_title, self.format_, self.start_time, self.initial_status) + tournament_under_test = generate_new_tournament(self.name, self.description, self.game_title, self.format_, self.start_time, 32, self.initial_status) with self.assertRaises(TournamentError): tournament_under_test.start() def test_adding_the_same_participant_twice_leads_to_exception(self) -> None: - tournament_under_test = generate_new_tournament(self.name, self.game_title, self.format_, self.start_time, self.initial_status) + tournament_under_test = generate_new_tournament(self.name, self.description, self.game_title, self.format_, self.start_time, 32, self.initial_status) tournament_under_test.add_participant(self.participant_a) with self.assertRaises(TournamentError): tournament_under_test.add_participant(self.participant_a) def test_single_elimination_bo3_tournament_gets_generated_correctly(self) -> None: - tournament_under_test = generate_new_tournament(self.name, self.game_title, self.format_, self.start_time, self.initial_status) + tournament_under_test = generate_new_tournament(self.name, self.description, self.game_title, self.format_, self.start_time, 32, self.initial_status) tournament_under_test.add_participant(self.participant_a) tournament_under_test.add_participant(self.participant_b) -- 2.45.2 From 02658aa0497c16f0ca81bf20687e29fc800f8bec Mon Sep 17 00:00:00 2001 From: David Rodenkirchen Date: Mon, 2 Feb 2026 09:13:41 +0100 Subject: [PATCH 03/10] add tournament rules --- src/EzggLanManager.py | 5 ++ .../pages/TournamentDetailsPage.py | 2 +- .../pages/TournamentRulesPage.py | 52 +++++++++++++++++++ src/ezgg_lan_manager/pages/__init__.py | 1 + 4 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 src/ezgg_lan_manager/pages/TournamentRulesPage.py diff --git a/src/EzggLanManager.py b/src/EzggLanManager.py index 3fdb22e..c4d060b 100644 --- a/src/EzggLanManager.py +++ b/src/EzggLanManager.py @@ -166,6 +166,11 @@ if __name__ == "__main__": name="TournamentDetailsPage", url_segment="tournament", build=pages.TournamentDetailsPage, + ), + ComponentPage( + name="TournamentRulesPage", + url_segment="tournament-rules", + build=pages.TournamentRulesPage, ) ], theme=theme, diff --git a/src/ezgg_lan_manager/pages/TournamentDetailsPage.py b/src/ezgg_lan_manager/pages/TournamentDetailsPage.py index 031f02a..04314ff 100644 --- a/src/ezgg_lan_manager/pages/TournamentDetailsPage.py +++ b/src/ezgg_lan_manager/pages/TournamentDetailsPage.py @@ -118,7 +118,7 @@ class TournamentDetailsPage(Component): accept_rules_row = Row( ThemeContextSwitcher(content=Checkbox(is_on=self.bind().rules_accepted, margin_left=4), color=self.session.theme.hud_color), Text("Ich akzeptiere die ", margin_left=1, style=TextStyle(fill=self.session.theme.background_color, font_size=0.8), overflow="nowrap", justify="right"), - Link(Text("Turnierregeln", margin_right=4, style=TextStyle(fill=self.session.theme.background_color, font_size=0.8, italic=True), overflow="nowrap", justify="left"), "https://google.de") # ToDo: Add rules + Link(Text("Turnierregeln", margin_right=4, style=TextStyle(fill=self.session.theme.background_color, font_size=0.8, italic=True), overflow="nowrap", justify="left"), "./tournament-rules", open_in_new_tab=True) ) button = Button( content=button_text, diff --git a/src/ezgg_lan_manager/pages/TournamentRulesPage.py b/src/ezgg_lan_manager/pages/TournamentRulesPage.py new file mode 100644 index 0000000..9be50aa --- /dev/null +++ b/src/ezgg_lan_manager/pages/TournamentRulesPage.py @@ -0,0 +1,52 @@ +from rio import Column, Component, event, TextStyle, Text, Spacer + +from src.ezgg_lan_manager import ConfigurationService +from src.ezgg_lan_manager.components.MainViewContentBox import MainViewContentBox + +RULES: list[str] = [ + "Den Anweisungen der Turnierleitung ist stets Folge zu leisten.", + "Teilnehmer müssen aktiv dafür sorgen, dass Spiele ohne Verzögerungen stattfinden.", + "Unvollständige Teams werden ggf. zum Turnierstart entfernt.", + "Verzögerungen und Ausfälle sind er Turnierleitung sofort zu melden.", + "Jeder Spieler erstellt Screenshots am Rundenende zur Ergebnisdokumentation.", + "Der Verlierer trägt das Ergebnis ein, der Gewinner überprüft es.", + "Bei fehlendem oder falschem Ergebnis, ist sofort die Turnierorganisation zu informieren.", + "Von 02:00–11:00 Uhr besteht keine Spielpflicht", + "Täuschung, Falschangaben sowie Bugusing und Cheaten führen zur sofortigen Disqualifikation." +] + +class TournamentRulesPage(Component): + @event.on_populate + async def on_populate(self) -> None: + await self.session.set_title(f"{self.session[ConfigurationService].get_lan_info().name} - Turnierregeln") + + def build(self) -> Component: + return Column( + MainViewContentBox( + Column( + Text( + text="Turnierregeln", + style=TextStyle( + fill=self.session.theme.background_color, + font_size=1.2 + ), + margin_top=2, + margin_bottom=2, + align_x=0.5 + ), + *[Text( + f"{idx + 1}. {rule}", + style=TextStyle( + fill=self.session.theme.background_color, + font_size=0.9 + ), + margin_bottom=0.8, + margin_left=1, + margin_right=1, + overflow="wrap" + ) for idx, rule in enumerate(RULES)], + Spacer(min_height=1) + ) + ), + Spacer(grow_y=True) + ) diff --git a/src/ezgg_lan_manager/pages/__init__.py b/src/ezgg_lan_manager/pages/__init__.py index 0788905..d20bffc 100644 --- a/src/ezgg_lan_manager/pages/__init__.py +++ b/src/ezgg_lan_manager/pages/__init__.py @@ -21,3 +21,4 @@ from .ManageCateringPage import ManageCateringPage from .ManageTournamentsPage import ManageTournamentsPage from .OverviewPage import OverviewPage from .TournamentDetailsPage import TournamentDetailsPage +from .TournamentRulesPage import TournamentRulesPage -- 2.45.2 From fffb607b1673db1471290642371bb1c80a685bb1 Mon Sep 17 00:00:00 2001 From: David Rodenkirchen Date: Mon, 2 Feb 2026 22:01:38 +0100 Subject: [PATCH 04/10] end of day commit --- sql/tournament_patch.sql | 144 ++++++++++++++++++ .../pages/TournamentDetailsPage.py | 18 ++- .../services/DatabaseService.py | 144 ++++++++++++++++++ .../services/TournamentService.py | 45 ++---- src/ezgg_lan_manager/types/Participant.py | 7 +- testing/unittests/TournamentDomainTests.py | 6 +- 6 files changed, 323 insertions(+), 41 deletions(-) create mode 100644 sql/tournament_patch.sql diff --git a/sql/tournament_patch.sql b/sql/tournament_patch.sql new file mode 100644 index 0000000..1d56421 --- /dev/null +++ b/sql/tournament_patch.sql @@ -0,0 +1,144 @@ +-- Apply this patch after using create_database.sql to extend the schema to support tournaments from version 0.2.0 +-- WARNING: Executing this on a post 0.2.0 database will delete all data related to tournaments !!! + +DROP TABLE IF EXISTS `game_titles`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `game_titles` ( + id INT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(255) NOT NULL, + description TEXT NOT NULL, + web_link VARCHAR(512) NOT NULL, + image_name VARCHAR(255) NOT NULL, + UNIQUE KEY uq_game_title_name (name) +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + + +DROP TABLE IF EXISTS `tournaments`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tournaments` ( + id INT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(255) NOT NULL, + description TEXT NOT NULL, + game_title_id INT NOT NULL, + format VARCHAR(20) NOT NULL, -- SE_BO1, DE_BO3, ... + start_time DATETIME NOT NULL, + status VARCHAR(20) NOT NULL, -- OPEN, CLOSED, ONGOING, ... + max_participants INT NOT NULL, + created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT fk_tournament_game + FOREIGN KEY (game_title_id) + REFERENCES game_titles(id) +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +CREATE INDEX idx_tournaments_game_title + ON tournaments(game_title_id); + +DROP TABLE IF EXISTS `tournament_participants`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tournament_participants` ( + id INT AUTO_INCREMENT PRIMARY KEY, + tournament_id INT NOT NULL, + user_id INT NOT NULL, + participant_type VARCHAR(10) NOT NULL DEFAULT 'PLAYER', + seed INT NULL, + joined_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + + UNIQUE KEY uq_tournament_user (tournament_id, user_id), + + CONSTRAINT fk_tp_tournament + FOREIGN KEY (tournament_id) + REFERENCES tournaments(id) + ON DELETE CASCADE, + + CONSTRAINT fk_tp_user + FOREIGN KEY (user_id) + REFERENCES users(user_id) +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +CREATE INDEX idx_tp_tournament + ON tournament_participants(tournament_id); +CREATE INDEX idx_tp_user + ON tournament_participants(user_id); + +DROP TABLE IF EXISTS `tournament_rounds`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tournament_rounds` ( + id INT AUTO_INCREMENT PRIMARY KEY, + tournament_id INT NOT NULL, + bracket VARCHAR(10) NOT NULL, -- UPPER, LOWER, FINAL + round_index INT NOT NULL, + + UNIQUE KEY uq_round (tournament_id, bracket, round_index), + + CONSTRAINT fk_round_tournament + FOREIGN KEY (tournament_id) + REFERENCES tournaments(id) + ON DELETE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +CREATE INDEX idx_rounds_tournament + ON tournament_rounds(tournament_id); + +DROP TABLE IF EXISTS `matches`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `matches` ( + id INT AUTO_INCREMENT PRIMARY KEY, + tournament_id INT NOT NULL, + round_id INT NOT NULL, + match_index INT NOT NULL, + status VARCHAR(15) NOT NULL, -- WAITING, PENDING, COMPLETED, ... + best_of INT NOT NULL, -- 1, 3, 5 + scheduled_time DATETIME NULL, + completed_at DATETIME NULL, + + UNIQUE KEY uq_match (round_id, match_index), + + CONSTRAINT fk_match_tournament + FOREIGN KEY (tournament_id) + REFERENCES tournaments(id) + ON DELETE CASCADE, + + CONSTRAINT fk_match_round + FOREIGN KEY (round_id) + REFERENCES tournament_rounds(id) + ON DELETE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +CREATE INDEX idx_matches_tournament + ON matches(tournament_id); + +CREATE INDEX idx_matches_round + ON matches(round_id); + +DROP TABLE IF EXISTS `match_participants`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `match_participants` ( + match_id INT NOT NULL, + participant_id INT NOT NULL, + score INT NULL, + is_winner TINYINT(1) NULL, + + PRIMARY KEY (match_id, participant_id), + + CONSTRAINT fk_mp_match + FOREIGN KEY (match_id) + REFERENCES matches(id) + ON DELETE CASCADE, + + CONSTRAINT fk_mp_participant + FOREIGN KEY (participant_id) + REFERENCES tournament_participants(id) +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; +/*!40101 SET character_set_client = @saved_cs_client */; diff --git a/src/ezgg_lan_manager/pages/TournamentDetailsPage.py b/src/ezgg_lan_manager/pages/TournamentDetailsPage.py index 04314ff..c4e9dbf 100644 --- a/src/ezgg_lan_manager/pages/TournamentDetailsPage.py +++ b/src/ezgg_lan_manager/pages/TournamentDetailsPage.py @@ -55,6 +55,9 @@ class TournamentDetailsPage(Component): self.message = f"Erfolgreich abgemeldet!" # ToDo: Hook into Tournament Service self.loading = False + async def tree_button_clicked(self) -> None: + pass # ToDo: Implement tournament tree view + def loading_done(self) -> None: if self.tournament is None: self.tournament = "Turnier konnte nicht gefunden werden" @@ -86,13 +89,23 @@ class TournamentDetailsPage(Component): ) else: tournament_status_color = self.session.theme.background_color + tree_button = Spacer(grow_x=False, grow_y=False) if self.tournament.status == TournamentStatus.OPEN: tournament_status_color = self.session.theme.success_color elif self.tournament.status == TournamentStatus.CLOSED: tournament_status_color = self.session.theme.danger_color - elif self.tournament.status == TournamentStatus.ONGOING: + elif self.tournament.status == TournamentStatus.ONGOING or self.tournament.status == TournamentStatus.COMPLETED: tournament_status_color = self.session.theme.warning_color - + tree_button = Button( + content="Turnierbaum anzeigen", + shape="rectangle", + style="minor", + color="hud", + margin_left=4, + margin_right=4, + margin_top=1, + on_press=self.tree_button_clicked + ) # ToDo: Integrate Teams logic ids_of_participants = [p.id for p in self.tournament.participants] @@ -163,6 +176,7 @@ class TournamentDetailsPage(Component): f"{len(self.tournament.participants)} / {self.tournament.max_participants}", self.session.theme.danger_color if self.tournament.is_full else self.session.theme.background_color ), + tree_button, Row( Text( text="Info", diff --git a/src/ezgg_lan_manager/services/DatabaseService.py b/src/ezgg_lan_manager/services/DatabaseService.py index 351f58b..d7e5d3b 100644 --- a/src/ezgg_lan_manager/services/DatabaseService.py +++ b/src/ezgg_lan_manager/services/DatabaseService.py @@ -1,6 +1,7 @@ import logging from datetime import date, datetime +from pprint import pprint from typing import Optional from decimal import Decimal @@ -11,8 +12,11 @@ from src.ezgg_lan_manager.types.CateringMenuItem import CateringMenuItem, Cateri from src.ezgg_lan_manager.types.CateringOrder import CateringMenuItemsWithAmount, CateringOrderStatus from src.ezgg_lan_manager.types.ConfigurationTypes import DatabaseConfiguration from src.ezgg_lan_manager.types.News import News +from src.ezgg_lan_manager.types.Participant import Participant from src.ezgg_lan_manager.types.Seat import Seat from src.ezgg_lan_manager.types.Ticket import Ticket +from src.ezgg_lan_manager.types.Tournament import Tournament +from src.ezgg_lan_manager.types.TournamentBase import GameTitle, TournamentFormat, TournamentStatus, ParticipantType from src.ezgg_lan_manager.types.Transaction import Transaction from src.ezgg_lan_manager.types.User import User @@ -81,6 +85,52 @@ class DatabaseService: last_updated_at=data[11] ) + @staticmethod + def _parse_tournament_format(format_as_string: str) -> TournamentFormat: + if format_as_string == "SE_BO_1": + return TournamentFormat.SINGLE_ELIMINATION_BO_1 + elif format_as_string == "SE_BO_3": + return TournamentFormat.SINGLE_ELIMINATION_BO_3 + elif format_as_string == "SE_BO_5": + return TournamentFormat.SINGLE_ELIMINATION_BO_5 + elif format_as_string == "DE_BO_1": + return TournamentFormat.DOUBLE_ELIMINATION_BO_1 + elif format_as_string == "DE_BO_3": + return TournamentFormat.DOUBLE_ELIMINATION_BO_3 + elif format_as_string == "DE_BO_5": + return TournamentFormat.DOUBLE_ELIMINATION_BO_5 + else: + # If this happens, database is FUBAR + raise RuntimeError(f"Unknown TournamentFormat: {format_as_string}") + + @staticmethod + def _parse_tournament_status(status_as_string: str) -> TournamentStatus: + if status_as_string == "CLOSED": + return TournamentStatus.CLOSED + elif status_as_string == "OPEN": + return TournamentStatus.OPEN + elif status_as_string == "COMPLETED": + return TournamentStatus.COMPLETED + elif status_as_string == "CANCELED": + return TournamentStatus.CANCELED + elif status_as_string == "INVITE_ONLY": + return TournamentStatus.INVITE_ONLY + elif status_as_string == "ONGOING": + return TournamentStatus.ONGOING + else: + # If this happens, database is FUBAR + raise RuntimeError(f"Unknown TournamentStatus: {status_as_string}") + + @staticmethod + def _parse_participant_type(participant_type_as_string: str) -> ParticipantType: + if participant_type_as_string == "PLAYER": + return ParticipantType.PLAYER + elif participant_type_as_string == "TEAM": + return ParticipantType.TEAM + else: + # If this happens, database is FUBAR + raise RuntimeError(f"Unknown ParticipantType: {participant_type_as_string}") + async def get_user_by_name(self, user_name: str) -> Optional[User]: async with self._connection_pool.acquire() as conn: async with conn.cursor(aiomysql.Cursor) as cursor: @@ -787,3 +837,97 @@ class DatabaseService: return await self.remove_profile_picture(user_id) except Exception as e: logger.warning(f"Error deleting user profile picture: {e}") + + async def get_all_tournaments(self) -> list[Tournament]: + logger.info(f"Polling Tournaments...") + async with self._connection_pool.acquire() as conn: + async with conn.cursor(aiomysql.DictCursor) as cursor: + try: + await cursor.execute( + """ + SELECT + /* ======================= + Tournament + ======================= */ + t.id AS tournament_id, + t.name AS tournament_name, + t.description AS tournament_description, + t.format AS tournament_format, + t.start_time, + t.status AS tournament_status, + t.max_participants, + t.created_at, + + /* ======================= + Game Title + ======================= */ + gt.id AS game_title_id, + gt.name AS game_title_name, + gt.description AS game_title_description, + gt.web_link AS game_title_web_link, + gt.image_name AS game_title_image_name, + + /* ======================= + Tournament Participant + ======================= */ + tp.id AS participant_id, + tp.user_id, + tp.participant_type, + tp.seed, + tp.joined_at + + FROM tournaments t + JOIN game_titles gt + ON gt.id = t.game_title_id + + LEFT JOIN tournament_participants tp + ON tp.tournament_id = t.id + + ORDER BY + t.id, + tp.seed IS NULL, + tp.seed; + + """ + ) + await conn.commit() + except aiomysql.InterfaceError: + pool_init_result = await self.init_db_pool() + if not pool_init_result: + raise NoDatabaseConnectionError + return await self.get_all_tournaments() + except Exception as e: + logger.warning(f"Error getting tournaments: {e}") + + tournaments = [] + current_tournament: Optional[Tournament] = None + for row in await cursor.fetchall(): + if current_tournament is None or current_tournament.id != row["tournament_id"]: + if current_tournament is not None: + tournaments.append(current_tournament) + current_tournament = Tournament( + id_=row["tournament_id"], + name=row["tournament_name"], + description=row["tournament_description"], + game_title=GameTitle( + name=row["game_title_name"], + description=row["game_title_description"], + web_link=row["game_title_web_link"], + image_name=row["game_title_image_name"] + ), + format_=self._parse_tournament_format(row["tournament_format"]), + start_time=row["start_time"], + status=self._parse_tournament_status(row["tournament_status"]), + participants=[Participant(id_=row["user_id"], participant_type=self._parse_participant_type(row["participant_type"]))], + matches=None, # ToDo: Implement + rounds=[], # ToDo: Implement + max_participants=row["max_participants"] + ) + else: + current_tournament.add_participant( + Participant(id_=row["user_id"], participant_type=self._parse_participant_type(row["participant_type"])) + ) + else: + tournaments.append(current_tournament) + + return tournaments diff --git a/src/ezgg_lan_manager/services/TournamentService.py b/src/ezgg_lan_manager/services/TournamentService.py index 0c6c43a..0ada577 100644 --- a/src/ezgg_lan_manager/services/TournamentService.py +++ b/src/ezgg_lan_manager/services/TournamentService.py @@ -21,28 +21,12 @@ class TournamentService: def __init__(self, db_service: DatabaseService, user_service: UserService) -> None: self._db_service = db_service self._user_service = user_service + self._cache: dict[int, Tournament] = {} + self._cache_dirty: bool = True # Setting this flag invokes cache update on next read # This overrides the database access and is meant for easy development. # Set to None before merging back into main. self._dev_data = [ - Tournament( - 0, - "Teeworlds 2vs2", - DEV_LOREM_IPSUM, - GameTitle( - "Teeworlds", - "Teeworlds is a free online multiplayer game, available for all major operating systems. Battle with up to 16 players in a variety of game modes.", - "https://store.steampowered.com/app/380840/Teeworlds/", - "teeworlds.png" - ), - TournamentFormat.SINGLE_ELIMINATION_BO_3, - datetime(2026, 5, 8, 18, 0, 0), - TournamentStatus.OPEN, - [], - None, - [], - 32 - ), Tournament( 1, "Rocket League 3vs3", @@ -56,7 +40,7 @@ class TournamentService: TournamentFormat.SINGLE_ELIMINATION_BO_3, datetime(2026, 5, 8, 18, 0, 0), TournamentStatus.OPEN, - [Participant(30, "Typhus", ParticipantType.PLAYER)], + [Participant(30, ParticipantType.PLAYER)], None, [], 8 @@ -81,18 +65,19 @@ class TournamentService: ) ] + async def _update_cache(self) -> None: + tournaments = await self._db_service.get_all_tournaments() + for tournament in tournaments: + self._cache[tournament.id] = tournament + self._cache_dirty = False + async def get_tournaments(self) -> list[Tournament]: - # Fake DB lookup delay - await sleep(1) - - if self._dev_data is not None: - return self._dev_data - return [] # ToDo: Implement database polling + if self._cache_dirty: + await self._update_cache() + return list(self._cache.values()) async def get_tournament_by_id(self, tournament_id: int) -> Optional[Tournament]: - await sleep(1) - try: - return self._dev_data[tournament_id] - except IndexError: - return None + if self._cache_dirty: + await self._update_cache() + return self._cache.get(tournament_id, None) diff --git a/src/ezgg_lan_manager/types/Participant.py b/src/ezgg_lan_manager/types/Participant.py index 4ac1bc1..f905e44 100644 --- a/src/ezgg_lan_manager/types/Participant.py +++ b/src/ezgg_lan_manager/types/Participant.py @@ -2,10 +2,9 @@ from src.ezgg_lan_manager.types.TournamentBase import ParticipantType class Participant: - def __init__(self, id_: int, display_name: str, participant_type: ParticipantType) -> None: + def __init__(self, id_: int, participant_type: ParticipantType) -> None: self._id = id_ self._participant_type = participant_type - self._display_name = display_name @property def id(self) -> int: @@ -14,7 +13,3 @@ class Participant: @property def participant_type(self) -> ParticipantType: return self._participant_type - - @property - def display_name(self) -> str: - return self._display_name diff --git a/testing/unittests/TournamentDomainTests.py b/testing/unittests/TournamentDomainTests.py index f24c9c7..f20ac8a 100644 --- a/testing/unittests/TournamentDomainTests.py +++ b/testing/unittests/TournamentDomainTests.py @@ -16,9 +16,9 @@ class TournamentDomainTests(unittest.TestCase): self.initial_status = TournamentStatus.CLOSED # Generic Participants - self.participant_a = Participant(1, "CoolUserName", ParticipantType.PLAYER) - self.participant_b = Participant(2, "CrazyUserName", ParticipantType.PLAYER) - self.participant_c = Participant(3, "FunnyUserName", ParticipantType.PLAYER) + self.participant_a = Participant(1, ParticipantType.PLAYER) + self.participant_b = Participant(2, ParticipantType.PLAYER) + self.participant_c = Participant(3, ParticipantType.PLAYER) def test_tournament_without_participants_can_not_be_started(self) -> None: tournament_under_test = generate_new_tournament(self.name, self.description, self.game_title, self.format_, self.start_time, 32, self.initial_status) -- 2.45.2 From caacd8bbc10cf92031af145ee75e0dddc77e424a Mon Sep 17 00:00:00 2001 From: David Rodenkirchen Date: Tue, 3 Feb 2026 13:20:07 +0100 Subject: [PATCH 05/10] implement registering and unregistering from tournament --- .../pages/TournamentDetailsPage.py | 20 ++++- .../services/DatabaseService.py | 34 +++++++++ .../services/TournamentService.py | 73 ++++++------------- src/ezgg_lan_manager/types/Tournament.py | 4 + 4 files changed, 75 insertions(+), 56 deletions(-) diff --git a/src/ezgg_lan_manager/pages/TournamentDetailsPage.py b/src/ezgg_lan_manager/pages/TournamentDetailsPage.py index c4e9dbf..35161f5 100644 --- a/src/ezgg_lan_manager/pages/TournamentDetailsPage.py +++ b/src/ezgg_lan_manager/pages/TournamentDetailsPage.py @@ -43,16 +43,28 @@ class TournamentDetailsPage(Component): self.loading = True if not self.user: return - self.is_success = True - self.message = f"Erfolgreich angemeldet!" # ToDo: Hook into Tournament Service + + try: + await self.session[TournamentService].register_user_for_tournament(self.user.user_id, self.tournament.id) + self.is_success = True + self.message = f"Erfolgreich angemeldet!" + except Exception as e: + self.is_success = False + self.message = f"Fehler: {e}" self.loading = False async def unregister_pressed(self) -> None: self.loading = True if not self.user: return - self.is_success = True - self.message = f"Erfolgreich abgemeldet!" # ToDo: Hook into Tournament Service + + try: + await self.session[TournamentService].unregister_user_from_tournament(self.user.user_id, self.tournament.id) + self.is_success = True + self.message = f"Erfolgreich abgemeldet!" + except Exception as e: + self.is_success = False + self.message = f"Fehler: {e}" self.loading = False async def tree_button_clicked(self) -> None: diff --git a/src/ezgg_lan_manager/services/DatabaseService.py b/src/ezgg_lan_manager/services/DatabaseService.py index d7e5d3b..c77dc31 100644 --- a/src/ezgg_lan_manager/services/DatabaseService.py +++ b/src/ezgg_lan_manager/services/DatabaseService.py @@ -931,3 +931,37 @@ class DatabaseService: tournaments.append(current_tournament) return tournaments + + async def add_participant_to_tournament(self, participant: Participant, tournament: Tournament) -> None: + async with self._connection_pool.acquire() as conn: + async with conn.cursor(aiomysql.Cursor) as cursor: + try: + await cursor.execute( + "INSERT INTO tournament_participants (tournament_id, user_id, participant_type) VALUES (%s, %s, %s);", + (tournament.id, participant.id, participant.participant_type.name) + ) + await conn.commit() + except aiomysql.InterfaceError: + pool_init_result = await self.init_db_pool() + if not pool_init_result: + raise NoDatabaseConnectionError + return await self.add_participant_to_tournament(participant, tournament) + except Exception as e: + logger.warning(f"Error adding participant to tournament: {e}") + + async def remove_participant_from_tournament(self, participant: Participant, tournament: Tournament) -> None: + async with self._connection_pool.acquire() as conn: + async with conn.cursor(aiomysql.Cursor) as cursor: + try: + await cursor.execute( + "DELETE FROM tournament_participants WHERE (tournament_id = %s AND user_id = %s);", + (tournament.id, participant.id) + ) + await conn.commit() + except aiomysql.InterfaceError: + pool_init_result = await self.init_db_pool() + if not pool_init_result: + raise NoDatabaseConnectionError + return await self.remove_participant_from_tournament(participant, tournament) + except Exception as e: + logger.warning(f"Error removing participant from tournament: {e}") diff --git a/src/ezgg_lan_manager/services/TournamentService.py b/src/ezgg_lan_manager/services/TournamentService.py index 0ada577..1fb0b85 100644 --- a/src/ezgg_lan_manager/services/TournamentService.py +++ b/src/ezgg_lan_manager/services/TournamentService.py @@ -1,76 +1,45 @@ -from asyncio import sleep -from datetime import datetime from typing import Optional from src.ezgg_lan_manager.services.DatabaseService import DatabaseService from src.ezgg_lan_manager.services.UserService import UserService from src.ezgg_lan_manager.types.Participant import Participant from src.ezgg_lan_manager.types.Tournament import Tournament -from src.ezgg_lan_manager.types.TournamentBase import GameTitle, TournamentFormat, TournamentStatus, ParticipantType - -DEV_LOREM_IPSUM = """ -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Dieses LAN-Turnier bringt Spieler aus verschiedenen Regionen zusammen, um gemeinsam spannende Matches zu erleben. Tastaturen klappern, Monitore leuchten und die Stimmung ist von Anfang an von Vorfreude und Ehrgeiz geprägt. - -Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. In intensiven Partien zählen Strategie, Reaktion und Teamarbeit. Zwischen den Spielen wird gefachsimpelt, gelacht und neue Kontakte entstehen, während Server stabil laufen und das Netzwerk dauerhaft gefordert ist. - -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Wenn die Finalspiele beginnen, steigt die Spannung spürbar. Am Ende bleiben faire Wettkämpfe, gemeinsame Erinnerungen und das Gefühl, Teil einer starken Community gewesen zu sein. -""" +from src.ezgg_lan_manager.types.TournamentBase import ParticipantType, TournamentError class TournamentService: def __init__(self, db_service: DatabaseService, user_service: UserService) -> None: self._db_service = db_service self._user_service = user_service + + # Crude cache mechanism. If performance suffers, maybe implement a queue with Single-Owner-Pattern or a Lock self._cache: dict[int, Tournament] = {} self._cache_dirty: bool = True # Setting this flag invokes cache update on next read - # This overrides the database access and is meant for easy development. - # Set to None before merging back into main. - self._dev_data = [ - Tournament( - 1, - "Rocket League 3vs3", - DEV_LOREM_IPSUM, - GameTitle( - "Rocket League", - "Rocket League is a high-powered hybrid of arcade-style soccer and vehicular mayhem with easy-to-understand controls and fluid, physics-driven competition.", - "https://steamcommunity.com/app/252950", - "rl.png" - ), - TournamentFormat.SINGLE_ELIMINATION_BO_3, - datetime(2026, 5, 8, 18, 0, 0), - TournamentStatus.OPEN, - [Participant(30, ParticipantType.PLAYER)], - None, - [], - 8 - ), - Tournament( - 2, - "Worms Armageddon 1vs1", - DEV_LOREM_IPSUM, - GameTitle( - "Worms Armageddon", - "2D turn-based artillery strategy game.", - "https://store.steampowered.com/app/217200/Worms_Armageddon/", - "worms.png" - ), - TournamentFormat.SINGLE_ELIMINATION_BO_1, - datetime(2026, 5, 8, 18, 30, 0), - TournamentStatus.CLOSED, - [], - None, - [], - 16 - ) - ] - async def _update_cache(self) -> None: tournaments = await self._db_service.get_all_tournaments() for tournament in tournaments: self._cache[tournament.id] = tournament self._cache_dirty = False + async def register_user_for_tournament(self, user_id: int, tournament_id: int) -> None: + tournament = await self.get_tournament_by_id(tournament_id) + if not tournament: + raise TournamentError(f"No tournament with ID {tournament_id} was found") + participant = Participant(id_=user_id, participant_type=ParticipantType.PLAYER) + tournament.add_participant(participant) + await self._db_service.add_participant_to_tournament(participant, tournament) + self._cache_dirty = True + + async def unregister_user_from_tournament(self, user_id: int, tournament_id: int) -> None: + tournament = await self.get_tournament_by_id(tournament_id) + if not tournament: + raise TournamentError(f"No tournament with ID {tournament_id} was found") + participant = next(filter(lambda p: p.id == user_id, tournament.participants), None) + if participant is not None: + tournament.remove_participant(participant) + await self._db_service.remove_participant_from_tournament(participant, tournament) + self._cache_dirty = True async def get_tournaments(self) -> list[Tournament]: if self._cache_dirty: diff --git a/src/ezgg_lan_manager/types/Tournament.py b/src/ezgg_lan_manager/types/Tournament.py index 1821230..578bcaa 100644 --- a/src/ezgg_lan_manager/types/Tournament.py +++ b/src/ezgg_lan_manager/types/Tournament.py @@ -90,6 +90,10 @@ class Tournament: raise TournamentError(f"Participant with ID {participant.id} already registered for tournament") self._participants.append(participant) + def remove_participant(self, participant: Participant) -> None: + if participant.id not in (p.id for p in self._participants): + raise TournamentError(f"Participant with ID {participant.id} not registered for tournament") + self._participants.remove(participant) def match_has_ended_callback(self, match: Match) -> None: if self._matches is None: -- 2.45.2 From 80b6e49d388f5e181aa63f434b95bb93e05db370 Mon Sep 17 00:00:00 2001 From: David Rodenkirchen Date: Tue, 3 Feb 2026 13:49:02 +0100 Subject: [PATCH 06/10] add participant list view --- .../components/TournamentDetailsInfoRow.py | 8 ++-- .../pages/TournamentDetailsPage.py | 41 ++++++++++++++++--- .../services/TournamentService.py | 6 +++ 3 files changed, 46 insertions(+), 9 deletions(-) diff --git a/src/ezgg_lan_manager/components/TournamentDetailsInfoRow.py b/src/ezgg_lan_manager/components/TournamentDetailsInfoRow.py index 9992dc9..8f3a77f 100644 --- a/src/ezgg_lan_manager/components/TournamentDetailsInfoRow.py +++ b/src/ezgg_lan_manager/components/TournamentDetailsInfoRow.py @@ -6,14 +6,16 @@ from rio import Component, Row, Text, TextStyle, Color class TournamentDetailsInfoRow(Component): key: str value: str - color: Optional[Color] = None + key_color: Optional[Color] = None + value_color: Optional[Color] = None + def build(self) -> Component: return Row( Text( text=self.key, style=TextStyle( - fill=self.session.theme.background_color, + fill=self.key_color if self.key_color is not None else self.session.theme.background_color, font_size=1 ), margin_bottom=0.5, @@ -22,7 +24,7 @@ class TournamentDetailsInfoRow(Component): Text( text=self.value, style=TextStyle( - fill=self.color if self.color is not None else self.session.theme.background_color, + fill=self.value_color if self.value_color is not None else self.session.theme.background_color, font_size=1 ), margin_bottom=0.5, diff --git a/src/ezgg_lan_manager/pages/TournamentDetailsPage.py b/src/ezgg_lan_manager/pages/TournamentDetailsPage.py index 35161f5..c04c464 100644 --- a/src/ezgg_lan_manager/pages/TournamentDetailsPage.py +++ b/src/ezgg_lan_manager/pages/TournamentDetailsPage.py @@ -1,12 +1,14 @@ from typing import Optional, Union, Literal from from_root import from_root -from rio import Column, Component, event, TextStyle, Text, Row, Image, Spacer, ProgressCircle, Button, Checkbox, ThemeContextSwitcher, Link +from rio import Column, Component, event, TextStyle, Text, Row, Image, Spacer, ProgressCircle, Button, Checkbox, ThemeContextSwitcher, Link, Revealer, PointerEventListener, \ + PointerEvent, Rectangle, Color from src.ezgg_lan_manager import ConfigurationService, TournamentService, UserService from src.ezgg_lan_manager.components.MainViewContentBox import MainViewContentBox from src.ezgg_lan_manager.components.TournamentDetailsInfoRow import TournamentDetailsInfoRow from src.ezgg_lan_manager.types.DateUtil import weekday_to_display_text +from src.ezgg_lan_manager.types.Participant import Participant from src.ezgg_lan_manager.types.SessionStorage import SessionStorage from src.ezgg_lan_manager.types.Tournament import Tournament from src.ezgg_lan_manager.types.TournamentBase import TournamentStatus, tournament_status_to_display_text, tournament_format_to_display_texts @@ -18,6 +20,9 @@ class TournamentDetailsPage(Component): rules_accepted: bool = False user: Optional[User] = None loading: bool = False + participant_revealer_open: bool = False + current_tournament_user_list: list[User] = [] # ToDo: Integrate Teams + # State for message above register button message: str = "" is_success: bool = False @@ -32,6 +37,7 @@ class TournamentDetailsPage(Component): self.tournament = await self.session[TournamentService].get_tournament_by_id(tournament_id) if self.tournament is not None: await self.session.set_title(f"{self.session[ConfigurationService].get_lan_info().name} - {self.tournament.name}") + self.current_tournament_user_list = await self.session[TournamentService].get_users_from_participant_list(self.tournament.participants) else: await self.session.set_title(f"{self.session[ConfigurationService].get_lan_info().name} - Turniere") @@ -39,6 +45,9 @@ class TournamentDetailsPage(Component): self.loading_done() + def open_close_participant_revealer(self, _: PointerEvent) -> None: + self.participant_revealer_open = not self.participant_revealer_open + async def register_pressed(self) -> None: self.loading = True if not self.user: @@ -52,6 +61,7 @@ class TournamentDetailsPage(Component): self.is_success = False self.message = f"Fehler: {e}" self.loading = False + await self.on_populate() async def unregister_pressed(self) -> None: self.loading = True @@ -66,6 +76,7 @@ class TournamentDetailsPage(Component): self.is_success = False self.message = f"Fehler: {e}" self.loading = False + await self.on_populate() async def tree_button_clicked(self) -> None: pass # ToDo: Implement tournament tree view @@ -179,14 +190,32 @@ class TournamentDetailsPage(Component): margin_left=6 ), Spacer(min_height=1), - TournamentDetailsInfoRow("Status", tournament_status_to_display_text(self.tournament.status), tournament_status_color), + TournamentDetailsInfoRow("Status", tournament_status_to_display_text(self.tournament.status), value_color=tournament_status_color), TournamentDetailsInfoRow("Startzeit", f"{weekday_to_display_text(self.tournament.start_time.weekday())}, {self.tournament.start_time.strftime('%H:%M')} Uhr"), TournamentDetailsInfoRow("Format", tournament_format_to_display_texts(self.tournament.format)[0]), TournamentDetailsInfoRow("Best of", tournament_format_to_display_texts(self.tournament.format)[1]), - TournamentDetailsInfoRow( - "Teilnehmer", - f"{len(self.tournament.participants)} / {self.tournament.max_participants}", - self.session.theme.danger_color if self.tournament.is_full else self.session.theme.background_color + PointerEventListener( + content=Rectangle( + content=TournamentDetailsInfoRow( + "Teilnehmer ▴" if self.participant_revealer_open else "Teilnehmer ▾", + f"{len(self.tournament.participants)} / {self.tournament.max_participants}", + value_color=self.session.theme.danger_color if self.tournament.is_full else self.session.theme.background_color, + key_color=self.session.theme.secondary_color + ), + fill=Color.TRANSPARENT, + cursor="pointer" + ), + on_press=self.open_close_participant_revealer + ), + Revealer( + header=None, + content=Text( + "\n".join([u.user_name for u in self.current_tournament_user_list]), # ToDo: Integrate Teams + style=TextStyle(fill=self.session.theme.background_color) + ), + is_open=self.participant_revealer_open, + margin_left=4, + margin_right=4 ), tree_button, Row( diff --git a/src/ezgg_lan_manager/services/TournamentService.py b/src/ezgg_lan_manager/services/TournamentService.py index 1fb0b85..ad4d28f 100644 --- a/src/ezgg_lan_manager/services/TournamentService.py +++ b/src/ezgg_lan_manager/services/TournamentService.py @@ -5,6 +5,7 @@ from src.ezgg_lan_manager.services.UserService import UserService from src.ezgg_lan_manager.types.Participant import Participant from src.ezgg_lan_manager.types.Tournament import Tournament from src.ezgg_lan_manager.types.TournamentBase import ParticipantType, TournamentError +from src.ezgg_lan_manager.types.User import User class TournamentService: @@ -50,3 +51,8 @@ class TournamentService: if self._cache_dirty: await self._update_cache() return self._cache.get(tournament_id, None) + + async def get_users_from_participant_list(self, participants: list[Participant]) -> list[User]: + all_users = await self._db_service.get_all_users() + participant_ids = [p.id for p in participants] + return list(filter(lambda u: u.user_id in participant_ids, all_users)) -- 2.45.2 From ddd6308526249b5fcfd44e369a26c817e0fc7481 Mon Sep 17 00:00:00 2001 From: David Rodenkirchen Date: Tue, 3 Feb 2026 14:22:32 +0100 Subject: [PATCH 07/10] add support for FFA tournament --- src/ezgg_lan_manager/types/Match.py | 33 ++++++++++++++++++-- src/ezgg_lan_manager/types/Tournament.py | 29 +++++++++++++++-- src/ezgg_lan_manager/types/TournamentBase.py | 5 ++- testing/unittests/TournamentDomainTests.py | 17 +++++++++- 4 files changed, 76 insertions(+), 8 deletions(-) diff --git a/src/ezgg_lan_manager/types/Match.py b/src/ezgg_lan_manager/types/Match.py index 409d00e..da3a493 100644 --- a/src/ezgg_lan_manager/types/Match.py +++ b/src/ezgg_lan_manager/types/Match.py @@ -8,9 +8,9 @@ from src.ezgg_lan_manager.types.TournamentBase import MatchStatus, TournamentErr class MatchParticipant: - def __init__(self, participant_id: int, slot_number: Literal[1, 2]) -> None: + def __init__(self, participant_id: int, slot_number: Literal[-1, 1, 2]) -> None: self._participant_id = participant_id - if slot_number not in (1, 2): + if slot_number not in (-1, 1, 2): raise TournamentError("Invalid slot number") self.slot_number = slot_number @@ -99,7 +99,9 @@ class Match: def next_match_lose_id(self) -> Optional[int]: return self._next_match_lose_id - def assign_participant(self, participant_id: int, slot: Literal[1, 2]) -> None: + def assign_participant(self, participant_id: int, slot: Literal[-1, 1, 2]) -> None: + if slot == -1: + raise TournamentError("Normal match does not support slot -1") new_participant = MatchParticipant(participant_id, slot) if len(self._participants) < 2 and not any(p.participant_id == participant_id for p in self._participants): if len(self._participants) == 1 and self._participants[-1].slot_number == new_participant.slot_number: @@ -131,3 +133,28 @@ class Match: ) return (f"") + +class FFAMatch(Match): + """ + Specialized match that supports infinite participants + """ + def __init__(self, match_id: int, tournament_id: int, round_number: int, bracket: Bracket, best_of: int, status: MatchStatus, + next_match_win_lose_ids: tuple[Optional[int], Optional[int]], match_has_ended_callback: Callable) -> None: + super().__init__(match_id, tournament_id, round_number, bracket, best_of, status, next_match_win_lose_ids, match_has_ended_callback) + + @property + def is_fully_seeded(self) -> bool: + return len(self._participants) > 1 + + def assign_participant(self, participant_id: int, slot: Literal[-1, 1, 2]) -> None: + if slot != -1: + raise TournamentError("FFAMatch does not support slot 1 and 2") + new_participant = MatchParticipant(participant_id, slot) + self._participants.append(new_participant) + + def __repr__(self) -> str: + participants = ", ".join( + f"{p.participant_id}" for p in self._participants + ) + return (f"") diff --git a/src/ezgg_lan_manager/types/Tournament.py b/src/ezgg_lan_manager/types/Tournament.py index 578bcaa..076e06f 100644 --- a/src/ezgg_lan_manager/types/Tournament.py +++ b/src/ezgg_lan_manager/types/Tournament.py @@ -3,7 +3,7 @@ from datetime import datetime from typing import Optional from math import ceil, log2 -from src.ezgg_lan_manager.types.Match import Match +from src.ezgg_lan_manager.types.Match import Match, FFAMatch from src.ezgg_lan_manager.types.Participant import Participant from src.ezgg_lan_manager.types.TournamentBase import GameTitle, TournamentFormat, TournamentStatus, TournamentError, Bracket, MatchStatus @@ -128,10 +128,12 @@ class Tournament: bracket = "SINGLE" elif fmt.name.startswith("DOUBLE_ELIMINATION"): bracket = "DOUBLE" + elif fmt.name.startswith("FFA"): + bracket = "FINAL" else: raise TournamentError(f"Unsupported tournament format: {fmt}") - if fmt.name.endswith("_BO_1"): + if fmt.name.endswith("_BO_1") or fmt.name.endswith("FFA"): bo = 1 elif fmt.name.endswith("_BO_3"): bo = 3 @@ -149,7 +151,28 @@ class Tournament: num_participants = len(self.participants) match_id_counter = 1 - if bracket_type == "SINGLE": + if bracket_type == "FINAL": + rounds: list[list[Match]] = [] + round_matches = [] + match = FFAMatch( + match_id=match_id_counter, + tournament_id=self._id, + round_number=1, + bracket=Bracket.FINAL, + best_of=best_of, + status=MatchStatus.WAITING, + next_match_win_lose_ids=(None, None), + match_has_ended_callback=self.match_has_ended_callback + ) + + for participant in self.participants: + match.assign_participant(participant.id, -1) + + round_matches.append(match) + rounds.append(round_matches) + self._matches = [match] + + elif bracket_type == "SINGLE": # --- single-elimination as before --- num_rounds = ceil(log2(num_participants)) rounds: list[list[Match]] = [] diff --git a/src/ezgg_lan_manager/types/TournamentBase.py b/src/ezgg_lan_manager/types/TournamentBase.py index 039a7d7..3e9c487 100644 --- a/src/ezgg_lan_manager/types/TournamentBase.py +++ b/src/ezgg_lan_manager/types/TournamentBase.py @@ -16,9 +16,10 @@ class TournamentFormat(Enum): DOUBLE_ELIMINATION_BO_1 = 4 DOUBLE_ELIMINATION_BO_3 = 5 DOUBLE_ELIMINATION_BO_5 = 6 + FFA = 7 def tournament_format_to_display_texts(tournament_format: TournamentFormat) -> tuple[str, str]: - """ Returns tuple where idx 0 is SE/DE string and idx 1 is match count """ + """ Returns tuple where idx 0 is SE/DE/FFA string and idx 1 is match count """ if tournament_format == TournamentFormat.SINGLE_ELIMINATION_BO_1: return "Single Elimination", "1" elif tournament_format == TournamentFormat.SINGLE_ELIMINATION_BO_3: @@ -31,6 +32,8 @@ def tournament_format_to_display_texts(tournament_format: TournamentFormat) -> t return "Double Elimination", "3" elif tournament_format == TournamentFormat.DOUBLE_ELIMINATION_BO_5: return "Double Elimination", "5" + elif tournament_format == TournamentFormat.FFA: + return "Free for All", "1" else: raise RuntimeError(f"Unknown tournament status: {str(tournament_format)}") diff --git a/testing/unittests/TournamentDomainTests.py b/testing/unittests/TournamentDomainTests.py index f20ac8a..7e2b12f 100644 --- a/testing/unittests/TournamentDomainTests.py +++ b/testing/unittests/TournamentDomainTests.py @@ -64,4 +64,19 @@ class TournamentDomainTests(unittest.TestCase): self.assertEqual(sm.status, MatchStatus.WAITING) self.assertEqual(sm.participants[0].participant_id, self.participant_c.id) self.assertEqual(sm.participants[0].slot_number, 1) - self.assertIsNone(sm.winner) \ No newline at end of file + self.assertIsNone(sm.winner) + + def test_ffa_tournament_with_15_participants_gets_generated_correctly(self) -> None: + tournament_under_test = generate_new_tournament("Among Us", "It's Among Us", GameTitle("Among Us", "", "", ""), TournamentFormat.FFA, self.start_time, 32, TournamentStatus.OPEN) + + for i in range(1, 16): + tournament_under_test.add_participant(Participant(i, ParticipantType.PLAYER)) + tournament_under_test.start() + + # Assert Tournament was switched to ONGOING + self.assertEqual(TournamentStatus.ONGOING, tournament_under_test.status) + + matches_in_tournament = sorted(tournament_under_test.matches, key=lambda m: m.match_id) + + self.assertEqual(1, len(matches_in_tournament)) + self.assertEqual(15, len(matches_in_tournament[0].participants)) -- 2.45.2 From 438762730b8f355a4a349f591ff041b9176e576a Mon Sep 17 00:00:00 2001 From: David Rodenkirchen Date: Tue, 3 Feb 2026 14:23:18 +0100 Subject: [PATCH 08/10] add database support for FFA tournament --- src/ezgg_lan_manager/services/DatabaseService.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/ezgg_lan_manager/services/DatabaseService.py b/src/ezgg_lan_manager/services/DatabaseService.py index c77dc31..c596968 100644 --- a/src/ezgg_lan_manager/services/DatabaseService.py +++ b/src/ezgg_lan_manager/services/DatabaseService.py @@ -99,6 +99,8 @@ class DatabaseService: return TournamentFormat.DOUBLE_ELIMINATION_BO_3 elif format_as_string == "DE_BO_5": return TournamentFormat.DOUBLE_ELIMINATION_BO_5 + elif format_as_string == "FFA": + return TournamentFormat.FFA else: # If this happens, database is FUBAR raise RuntimeError(f"Unknown TournamentFormat: {format_as_string}") -- 2.45.2 From e386d89c6f10e111ff3de13f5c8a9c9fa13604d9 Mon Sep 17 00:00:00 2001 From: David Rodenkirchen Date: Tue, 3 Feb 2026 22:58:24 +0100 Subject: [PATCH 09/10] add managing UI --- .../pages/ManageTournamentsPage.py | 117 +++++++++++++++--- .../services/TournamentService.py | 14 +++ src/ezgg_lan_manager/types/Tournament.py | 4 + 3 files changed, 119 insertions(+), 16 deletions(-) diff --git a/src/ezgg_lan_manager/pages/ManageTournamentsPage.py b/src/ezgg_lan_manager/pages/ManageTournamentsPage.py index 9755ef6..7071727 100644 --- a/src/ezgg_lan_manager/pages/ManageTournamentsPage.py +++ b/src/ezgg_lan_manager/pages/ManageTournamentsPage.py @@ -1,32 +1,117 @@ import logging +from datetime import datetime +from typing import Optional -from rio import Column, Component, event, TextStyle, Text, Spacer +from from_root import from_root +from rio import Column, Component, event, TextStyle, Text, Spacer, Row, Image, Tooltip, IconButton, Popup, Rectangle, Dropdown, ThemeContextSwitcher, Button -from src.ezgg_lan_manager import ConfigurationService +from src.ezgg_lan_manager import ConfigurationService, TournamentService, UserService from src.ezgg_lan_manager.components.MainViewContentBox import MainViewContentBox +from src.ezgg_lan_manager.types.DateUtil import weekday_to_display_text +from src.ezgg_lan_manager.types.Participant import Participant +from src.ezgg_lan_manager.types.Tournament import Tournament +from src.ezgg_lan_manager.types.TournamentBase import TournamentStatus logger = logging.getLogger(__name__.split(".")[-1]) class ManageTournamentsPage(Component): + tournaments: list[Tournament] = [] + remove_participant_popup_open: bool = False + cancel_options: dict[str, Optional[Participant]] = {"": None} + tournament_id_selected_for_participant_removal: Optional[int] = None + participant_selected_for_removal: Optional[Participant] = None + @event.on_populate async def on_populate(self) -> None: + self.tournaments = await self.session[TournamentService].get_tournaments() await self.session.set_title(f"{self.session[ConfigurationService].get_lan_info().name} - Turnier Verwaltung") + async def on_start_pressed(self, tournament_id: int) -> None: + logger.info(f"Starting tournament with ID {tournament_id}") + await self.session[TournamentService].start_tournament(tournament_id) + + async def on_cancel_pressed(self, tournament_id: int) -> None: + logger.info(f"Canceling tournament with ID {tournament_id}") + await self.session[TournamentService].cancel_tournament(tournament_id) + + async def on_remove_participant_pressed(self, tournament_id: int) -> None: + tournament = await self.session[TournamentService].get_tournament_by_id(tournament_id) + if tournament is None: + return + users = await self.session[UserService].get_all_users() + try: + self.cancel_options = {next(filter(lambda u: u.user_id == p.id, users)).user_name: p for p in tournament.participants} + except StopIteration as e: + logger.error(f"Error trying to find user for participant: {e}") + self.tournament_id_selected_for_participant_removal = tournament_id + self.remove_participant_popup_open = True + + async def on_remove_participant_confirm_pressed(self) -> None: + if self.participant_selected_for_removal is not None and self.tournament_id_selected_for_participant_removal is not None: + logger.info(f"Removing participant with ID {self.participant_selected_for_removal.id} from tournament with ID {self.tournament_id_selected_for_participant_removal}") + await self.session[TournamentService].unregister_user_from_tournament(self.participant_selected_for_removal.id, self.tournament_id_selected_for_participant_removal) + await self.on_remove_participant_cancel_pressed() + + async def on_remove_participant_cancel_pressed(self) -> None: + self.tournament_id_selected_for_participant_removal = None + self.participant_selected_for_removal = None + self.remove_participant_popup_open = False + def build(self) -> Component: - return Column( - MainViewContentBox( - Column( - Text( - text="Turnier Verwaltung", - style=TextStyle( - fill=self.session.theme.background_color, - font_size=1.2 - ), - margin_top=2, - margin_bottom=2, - align_x=0.5 - ) + tournament_rows = [] + for tournament in self.tournaments: + start_time_color = self.session.theme.background_color + if tournament.start_time < datetime.now() and tournament.status == TournamentStatus.OPEN: + start_time_color = self.session.theme.warning_color + + tournament_rows.append( + Row( + Image(image=from_root(f"src/ezgg_lan_manager/assets/img/games/{tournament.game_title.image_name}"), min_width=1.5, margin_right=1), + Text(tournament.name, style=TextStyle(fill=self.session.theme.background_color, font_size=0.8), justify="left", margin_right=1.5), + Text(f"{weekday_to_display_text(tournament.start_time.weekday())[:2]}.{tournament.start_time.strftime('%H:%M')} Uhr", style=TextStyle(fill=start_time_color, font_size=0.8), justify="left", margin_right=1), + Spacer(), + Tooltip(anchor=IconButton("material/play_arrow", min_size=2, margin_right=1, on_press=lambda: self.on_start_pressed(tournament.id)), tip="Starten"), + Tooltip(anchor=IconButton("material/cancel_schedule_send", min_size=2, margin_right=1, on_press=lambda: self.on_cancel_pressed(tournament.id)), tip="Absagen"), + Tooltip(anchor=IconButton("material/person_cancel", min_size=2, margin_right=1, on_press=lambda: self.on_remove_participant_pressed(tournament.id)), tip="Spieler entfernen"), + margin=1 ) + ) + + return Column( + Popup( + anchor=MainViewContentBox( + Column( + Text( + text="Turnier Verwaltung", + style=TextStyle( + fill=self.session.theme.background_color, + font_size=1.2 + ), + margin_top=2, + margin_bottom=2, + align_x=0.5 + ), + *tournament_rows + ) + ), + content=Rectangle( + content=Row( + ThemeContextSwitcher( + content=Dropdown(options=self.cancel_options, min_width=20, selected_value=self.bind().participant_selected_for_removal), color=self.session.theme.hud_color + ), + Button(content="REMOVE", shape="rectangle", grow_x=False, on_press=self.on_remove_participant_confirm_pressed), + Button(content="CANCEL", shape="rectangle", grow_x=False, on_press=self.on_remove_participant_cancel_pressed), + margin=0.5 + ), + min_width=30, + min_height=4, + fill=self.session.theme.primary_color, + margin_top=3.5, + stroke_width=0.3, + stroke_color=self.session.theme.neutral_color, + ), + is_open=self.remove_participant_popup_open, + color="none" ), Spacer() - ) + ) diff --git a/src/ezgg_lan_manager/services/TournamentService.py b/src/ezgg_lan_manager/services/TournamentService.py index ad4d28f..1a3f08b 100644 --- a/src/ezgg_lan_manager/services/TournamentService.py +++ b/src/ezgg_lan_manager/services/TournamentService.py @@ -56,3 +56,17 @@ class TournamentService: all_users = await self._db_service.get_all_users() participant_ids = [p.id for p in participants] return list(filter(lambda u: u.user_id in participant_ids, all_users)) + + async def start_tournament(self, tournament_id: int): + tournament = await self.get_tournament_by_id(tournament_id) + if tournament: + tournament.start() + # ToDo: Write matches/round to database + self._cache_dirty = True + + async def cancel_tournament(self, tournament_id: int): + tournament = await self.get_tournament_by_id(tournament_id) + if tournament: + tournament.cancel() + # ToDo: Update to database + self._cache_dirty = True diff --git a/src/ezgg_lan_manager/types/Tournament.py b/src/ezgg_lan_manager/types/Tournament.py index 076e06f..ea6ead1 100644 --- a/src/ezgg_lan_manager/types/Tournament.py +++ b/src/ezgg_lan_manager/types/Tournament.py @@ -93,8 +93,12 @@ class Tournament: def remove_participant(self, participant: Participant) -> None: if participant.id not in (p.id for p in self._participants): raise TournamentError(f"Participant with ID {participant.id} not registered for tournament") + # ToDo: Check if tournament already started => correctly resolve matches with now missing participant self._participants.remove(participant) + def cancel(self): + self.status = TournamentStatus.CANCELED + def match_has_ended_callback(self, match: Match) -> None: if self._matches is None: return -- 2.45.2 From b612fc9c81eab0da28f300e3e15adbcf144265bf Mon Sep 17 00:00:00 2001 From: David Rodenkirchen Date: Tue, 3 Feb 2026 23:59:49 +0100 Subject: [PATCH 10/10] small UI touch-up, adding tournament icons --- src/ezgg_lan_manager/assets/img/games/darts.png | Bin 0 -> 78046 bytes src/ezgg_lan_manager/assets/img/games/dota2.png | Bin 0 -> 23132 bytes .../assets/img/games/golfit.png | Bin 0 -> 14270 bytes src/ezgg_lan_manager/assets/img/games/jenga.png | Bin 0 -> 6335 bytes src/ezgg_lan_manager/assets/img/games/neoee.png | Bin 0 -> 66876 bytes .../assets/img/games/tetris.png | Bin 0 -> 17172 bytes .../assets/img/games/wikinger_schach.png | Bin 0 -> 45386 bytes .../pages/ManageTournamentsPage.py | 6 +++--- .../pages/TournamentDetailsPage.py | 2 +- .../services/DatabaseService.py | 2 +- 10 files changed, 5 insertions(+), 5 deletions(-) create mode 100644 src/ezgg_lan_manager/assets/img/games/darts.png create mode 100644 src/ezgg_lan_manager/assets/img/games/dota2.png create mode 100644 src/ezgg_lan_manager/assets/img/games/golfit.png create mode 100644 src/ezgg_lan_manager/assets/img/games/jenga.png create mode 100644 src/ezgg_lan_manager/assets/img/games/neoee.png create mode 100644 src/ezgg_lan_manager/assets/img/games/tetris.png create mode 100644 src/ezgg_lan_manager/assets/img/games/wikinger_schach.png diff --git a/src/ezgg_lan_manager/assets/img/games/darts.png b/src/ezgg_lan_manager/assets/img/games/darts.png new file mode 100644 index 0000000000000000000000000000000000000000..6ced577000cb3853d2a48f749c282de030332931 GIT binary patch literal 78046 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�=e;YEV8A;U4emBgW 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 Jud)^q{{v-d`6>Va literal 0 HcmV?d00001 diff --git a/src/ezgg_lan_manager/assets/img/games/jenga.png b/src/ezgg_lan_manager/assets/img/games/jenga.png new file mode 100644 index 0000000000000000000000000000000000000000..72646c9a61b39d7693235ec5c4565a9b71c17c9d GIT binary patch literal 6335 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 Dn6aNv literal 0 HcmV?d00001 diff --git a/src/ezgg_lan_manager/assets/img/games/neoee.png b/src/ezgg_lan_manager/assets/img/games/neoee.png new file mode 100644 index 0000000000000000000000000000000000000000..573df8b696eb863e5a4637c1d2e3dfa83a87ce25 GIT binary patch literal 66876 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 Eg1yU8>;M1& literal 0 HcmV?d00001 diff --git a/src/ezgg_lan_manager/assets/img/games/tetris.png b/src/ezgg_lan_manager/assets/img/games/tetris.png new file mode 100644 index 0000000000000000000000000000000000000000..01162b0648561b2cf73fcb24378d20b054516a77 GIT binary patch literal 17172 zcmXvW2|U!#cXk(xa;!V|kqD)toUyc0a#Q4pLMXSD+irv

mYS6_H#ea&P5|azs?h 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

#7$mRT&Ly7)PmeN$Y!KSYuhQ%MxF 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 literal 0 HcmV?d00001 diff --git a/src/ezgg_lan_manager/assets/img/games/wikinger_schach.png b/src/ezgg_lan_manager/assets/img/games/wikinger_schach.png new file mode 100644 index 0000000000000000000000000000000000000000..bd0ed4ed54eb6cb68e887040d36445d4e2280c37 GIT binary patch literal 45386 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 YmCSVk{#Hyg0L1ULf`&Xy)-vq>0EX2|b^rhX literal 0 HcmV?d00001 diff --git a/src/ezgg_lan_manager/pages/ManageTournamentsPage.py b/src/ezgg_lan_manager/pages/ManageTournamentsPage.py index 7071727..b4dceb4 100644 --- a/src/ezgg_lan_manager/pages/ManageTournamentsPage.py +++ b/src/ezgg_lan_manager/pages/ManageTournamentsPage.py @@ -70,9 +70,9 @@ class ManageTournamentsPage(Component): Text(tournament.name, style=TextStyle(fill=self.session.theme.background_color, font_size=0.8), justify="left", margin_right=1.5), Text(f"{weekday_to_display_text(tournament.start_time.weekday())[:2]}.{tournament.start_time.strftime('%H:%M')} Uhr", style=TextStyle(fill=start_time_color, font_size=0.8), justify="left", margin_right=1), Spacer(), - Tooltip(anchor=IconButton("material/play_arrow", min_size=2, margin_right=1, on_press=lambda: self.on_start_pressed(tournament.id)), tip="Starten"), - Tooltip(anchor=IconButton("material/cancel_schedule_send", min_size=2, margin_right=1, on_press=lambda: self.on_cancel_pressed(tournament.id)), tip="Absagen"), - Tooltip(anchor=IconButton("material/person_cancel", min_size=2, margin_right=1, on_press=lambda: self.on_remove_participant_pressed(tournament.id)), tip="Spieler entfernen"), + Tooltip(anchor=IconButton("material/play_arrow", min_size=2, margin_right=0.5, on_press=lambda: self.on_start_pressed(tournament.id)), tip="Starten"), + Tooltip(anchor=IconButton("material/cancel_schedule_send", min_size=2, margin_right=0.5, on_press=lambda: self.on_cancel_pressed(tournament.id)), tip="Absagen"), + Tooltip(anchor=IconButton("material/person_cancel", min_size=2, on_press=lambda: self.on_remove_participant_pressed(tournament.id)), tip="Spieler entfernen"), margin=1 ) ) diff --git a/src/ezgg_lan_manager/pages/TournamentDetailsPage.py b/src/ezgg_lan_manager/pages/TournamentDetailsPage.py index c04c464..042d907 100644 --- a/src/ezgg_lan_manager/pages/TournamentDetailsPage.py +++ b/src/ezgg_lan_manager/pages/TournamentDetailsPage.py @@ -175,7 +175,7 @@ class TournamentDetailsPage(Component): content = Column( Row( - Image(image=from_root(f"src/ezgg_lan_manager/assets/img/games/{self.tournament.game_title.image_name}")), + Image(image=from_root(f"src/ezgg_lan_manager/assets/img/games/{self.tournament.game_title.image_name}"), margin_right=1), Text( text=self.tournament.name, style=TextStyle( diff --git a/src/ezgg_lan_manager/services/DatabaseService.py b/src/ezgg_lan_manager/services/DatabaseService.py index c596968..ccbbfc1 100644 --- a/src/ezgg_lan_manager/services/DatabaseService.py +++ b/src/ezgg_lan_manager/services/DatabaseService.py @@ -920,7 +920,7 @@ class DatabaseService: format_=self._parse_tournament_format(row["tournament_format"]), start_time=row["start_time"], status=self._parse_tournament_status(row["tournament_status"]), - participants=[Participant(id_=row["user_id"], participant_type=self._parse_participant_type(row["participant_type"]))], + participants=[Participant(id_=row["user_id"], participant_type=self._parse_participant_type(row["participant_type"]))] if row["user_id"] is not None else [], matches=None, # ToDo: Implement rounds=[], # ToDo: Implement max_participants=row["max_participants"] -- 2.45.2