diff --git a/src/EzLanManager.py b/src/EzLanManager.py index 602df08..2f381be 100644 --- a/src/EzLanManager.py +++ b/src/EzLanManager.py @@ -62,7 +62,7 @@ if __name__ == "__main__": ComponentPage( name="Overview", url_segment="overview", - build=lambda: pages.PlaceholderPage(placeholder_name="LAN Übersicht"), + build=pages.OverviewPage, ), ComponentPage( name="BuyTicket", diff --git a/src/ez_lan_manager/pages/OverviewPage.py b/src/ez_lan_manager/pages/OverviewPage.py new file mode 100644 index 0000000..718c6bc --- /dev/null +++ b/src/ez_lan_manager/pages/OverviewPage.py @@ -0,0 +1,141 @@ +from rio import Column, Component, event, Text, Spacer, Row, Link + +from src.ez_lan_manager import ConfigurationService, TicketingService +from src.ez_lan_manager.components.MainViewContentBox import MainViewContentBox + + +class OverviewPage(Component): + @event.on_populate + async def on_populate(self) -> None: + await self.session.set_title(f"{self.session[ConfigurationService].get_lan_info().name} - Übersicht") + + def build(self) -> Component: + lan_info = self.session[ConfigurationService].get_lan_info() + return Column( + MainViewContentBox( + Column( + Text(lan_info.name, font_size=2, justify="center", fill=self.session.theme.neutral_color, margin_top=0.5), + Text(f"Edition {lan_info.iteration}", font_size=0.9, justify="center", fill=self.session.theme.neutral_color, margin_bottom=1.5) + ) + ), + MainViewContentBox( + Column( + Text("Allgemeines", font_size=2, justify="center", fill=self.session.theme.neutral_color, margin_top=0.5, margin_bottom=1), + Column( + Row( + Text("Wann?", fill=self.session.theme.neutral_color, margin_left=1), + Spacer(), + Text(f"{lan_info.date_from.strftime("%d.%m.")} bis {lan_info.date_till.strftime("%d.%m.%Y")}", fill=self.session.theme.neutral_color, margin_right=1), + margin_bottom=0.3 + ), + Row( + Text("Wo?", fill=self.session.theme.neutral_color, margin_left=1), + Spacer(), + Link(Text(f"DGH Donsbach", fill=self.session.theme.secondary_color, margin_right=1), target_url="https://maps.app.goo.gl/3Zyue776A22jdoxz5", open_in_new_tab=True), + margin_bottom=0.3 + ), + Row( + Text("Einlass", fill=self.session.theme.neutral_color, margin_left=1), + Spacer(), + Text(lan_info.date_from.strftime("Freitag %H:%M Uhr"), fill=self.session.theme.neutral_color, margin_right=1), + margin_bottom=0.3 + ), + Row( + Text("Ende", fill=self.session.theme.neutral_color, margin_left=1), + Spacer(), + Text(lan_info.date_till.strftime("Sonntag %H:%M Uhr"), fill=self.session.theme.neutral_color, margin_right=1), + margin_bottom=0.3 + ), + Row( + Text("Anmeldung", fill=self.session.theme.neutral_color, margin_left=1), + Spacer(), + Text("Geöffnet", fill=self.session.theme.success_color, margin_right=1), + margin_bottom=0.3 + ), + Row( + Text("Teilnehmer", fill=self.session.theme.neutral_color, margin_left=1), + Spacer(), + Text(str(self.session[TicketingService].get_total_tickets()), fill=self.session.theme.neutral_color, margin_right=1), + margin_bottom=0.3 + ) + , + Row( + Text("Ticket Preise", fill=self.session.theme.neutral_color, margin_left=1), + Spacer(), + Link(Text(f"Preisliste", fill=self.session.theme.secondary_color, margin_right=1), target_url="./buy_ticket", open_in_new_tab=False), + margin_bottom=0.3 + ) + ) + ) + ), + MainViewContentBox( + Column( + Text("Technisches", font_size=2, justify="center", fill=self.session.theme.neutral_color, margin_top=0.5, margin_bottom=1), + Column( + Row( + Text("Internet", fill=self.session.theme.neutral_color, margin_left=1), + Spacer(), + Text(f"60/20 Mbit/s (down/up)", fill=self.session.theme.neutral_color, margin_right=1), + margin_bottom=0.3 + ), + Row( + Text("Routing", fill=self.session.theme.neutral_color, margin_left=1), + Spacer(), + Text(f"Flaches Netz", fill=self.session.theme.neutral_color, margin_right=1), + margin_bottom=0.3 + ), + Row( + Text("WLAN", fill=self.session.theme.neutral_color, margin_left=1), + Spacer(), + Text(f"vorhanden", fill=self.session.theme.neutral_color, margin_right=1), + margin_bottom=0.3 + ) + ) + ) + ), + MainViewContentBox( + Column( + Text("Sonstiges", font_size=2, justify="center", fill=self.session.theme.neutral_color, margin_top=0.5, margin_bottom=1), + Column( + Row( + Text("Schlafen", fill=self.session.theme.neutral_color, margin_left=1, justify="center"), + margin_bottom=0.3 + ), + Row( + Text("Es steht ein Schlafsaal zur Verfügung. Nach der Eröffnung steht auch die Bühne als Schlafbereich zur Verfügung.", font_size=0.7, + fill=self.session.theme.neutral_color, margin_left=1, overflow="wrap"), + margin_bottom=0.3 + ), + Row( + Text("Essen & Trinken", fill=self.session.theme.neutral_color, margin_left=1, justify="center"), + margin_bottom=0.3 + ), + Row( + Text("Wir sorgen für euer leibliches Wohl, ihr dürft aber auch eure eigenen Speißen und Getränke mitbringen.", font_size=0.7, fill=self.session.theme.neutral_color, margin_left=1, overflow="wrap"), + margin_bottom=0.3 + ), + Row( + Text("Parken", fill=self.session.theme.neutral_color, margin_left=1, justify="center"), + margin_bottom=0.3 + ), + Row( + Text("Vor der Halle sind ausreichend Parkplätze vorhanden.", font_size=0.7, fill=self.session.theme.neutral_color, margin_left=1, overflow="wrap"), + margin_bottom=0.3 + ) + ) + ) + ), + MainViewContentBox( + Column( + Text("Turniere & Ablauf", font_size=2, justify="center", fill=self.session.theme.neutral_color, margin_top=0.5, margin_bottom=1), + Column( + Row( + Text("Zum aktuellen Zeitpunkt steht noch nicht fest welche Turniere gespielt werden. Wir planen diverse Online- und Offline Turniere mit Preisen durchzuführen. Weitere Informationen gibt es, sobald sie kommen, auf der NEWS- und Turnier-Seite.", font_size=0.7, + fill=self.session.theme.neutral_color, margin_left=1, overflow="wrap"), + margin_bottom=0.3 + ) + ) + ) + ), + Spacer() + ) diff --git a/src/ez_lan_manager/pages/__init__.py b/src/ez_lan_manager/pages/__init__.py index bedca05..deee520 100644 --- a/src/ez_lan_manager/pages/__init__.py +++ b/src/ez_lan_manager/pages/__init__.py @@ -19,3 +19,4 @@ from .ManageNewsPage import ManageNewsPage from .ManageUsersPage import ManageUsersPage from .ManageCateringPage import ManageCateringPage from .ManageTournamentsPage import ManageTournamentsPage +from .OverviewPage import OverviewPage