diff --git a/config.example.toml b/config.example.toml index daf243f..31aa483 100644 --- a/config.example.toml +++ b/config.example.toml @@ -23,15 +23,15 @@ [tickets] [tickets."NORMAL"] - total_tickets=24 - price="20.00" + total_tickets=38 + price="25.00" description="Normales Ticket" additional_info="Berechtigt zur Nutzung eines regulären Platzes für die gesamte Dauer der LAN" can_be_sold=true [tickets."DELUXE"] total_tickets=30 - price="25.00" + price="30.00" description="Deluxe Ticket" additional_info="Wie das normale Ticket, aber mit doppelt so breitem Tisch (160cm)" can_be_sold=true diff --git a/src/elm/components/AccountInfoBox.py b/src/elm/components/AccountInfoBox.py index 9b336cd..c4b6a68 100644 --- a/src/elm/components/AccountInfoBox.py +++ b/src/elm/components/AccountInfoBox.py @@ -1,9 +1,10 @@ from typing import Optional +from bson import ObjectId from rio import Component, Rectangle, Column, Text, Row, PointerEventListener, TextInput from rio.event import on_populate -from elm.types import UserSession, Ticket +from elm.types import UserSession, Ticket, Seat from elm.components import ElmButton from elm.services import UserService @@ -16,6 +17,7 @@ class AccountInfoBox(Component): password_input_blocked: bool = False password_change_in_progress: bool = False ticket: Optional[Ticket] = None + seat: Optional[Seat] = None @on_populate async def on_populate(self) -> None: @@ -24,6 +26,7 @@ class AccountInfoBox(Component): if user: self.mail = user.user_mail self.ticket = await Ticket.find_one({"owner.$id": user.id}) + self.seat = await Seat.find_one({"user.$id": ObjectId(user.id)}) else: self.session.navigate_to("./login") except KeyError: @@ -63,8 +66,11 @@ class AccountInfoBox(Component): def build(self) -> Component: row_col = Row ticket_text = "-" + seat_text = "-" if self.ticket: ticket_text = self.ticket.category + if self.seat: + seat_text = self.seat.seat_id if self.session.is_mobile(): row_col = Column @@ -99,13 +105,13 @@ class AccountInfoBox(Component): ), PointerEventListener( Rectangle( - content=Row(Text("Sitzplatz:", margin=1, overflow="wrap", justify="left"), Text("-", margin=1, overflow="wrap", justify="right")), - fill=self.session.theme.danger_color_dark, + content=Row(Text("Sitzplatz:", margin=1, overflow="wrap", justify="left"), Text(seat_text, margin=1, overflow="wrap", justify="right")), + fill=self.session.theme.success_color if self.seat else self.session.theme.danger_color_dark, stroke_width=0.1, - stroke_color=self.session.theme.danger_color, - hover_fill=self.session.theme.danger_color, + stroke_color=self.session.theme.success_color if self.seat else self.session.theme.danger_color, + hover_fill=self.session.theme.success_color if self.seat else self.session.theme.danger_color, hover_stroke_width=0.1, - hover_stroke_color=self.session.theme.danger_color_dark, + hover_stroke_color=self.session.theme.success_color if self.seat else self.session.theme.danger_color_dark, transition_time=0.2, cursor="pointer" ), diff --git a/src/elm/pages/TournamentsPage.py b/src/elm/pages/TournamentsPage.py new file mode 100644 index 0000000..8d33547 --- /dev/null +++ b/src/elm/pages/TournamentsPage.py @@ -0,0 +1,42 @@ +from __future__ import annotations + +from copy import copy +from typing import Any, Optional +from uuid import uuid4 + +from rio import Component, Column, Row, Text, Spacer, page, Color, Rectangle, TextInput, GuardEvent + +from elm.types import UserSession, User +from elm.services import UserService, LocalData, LocalDataService, ConfigurationService +from elm.components import ElmButton + + +@page(name="Tournaments", url_segment="tournaments") +class TournamentsPage(Component): + def build(self) -> Component: + return Row( + Rectangle( + content=Column( + Rectangle( + content=Rectangle( + content=Text("Turniere", margin=0.5, selectable=False, overflow="wrap"), + fill=self.session.theme.header_box_background_color, + margin=0.4 + ), + stroke_width=0.1, + stroke_color=self.session.theme.box_border_color, + ), + Column( + Text("Es wurde noch kein Turnierbaum hinterlegt", fill=self.session.theme.text_color, overflow="wrap", justify="center"), + margin=1, + spacing=1 + ), + Spacer() + ), + fill=self.session.theme.box_color, + stroke_width=0.1, + stroke_color=self.session.theme.box_border_color + ), + align_x=0.5, + align_y=0.5 + )