add Tournament placeholder page and integrate seating info with account info

This commit is contained in:
David Rodenkirchen
2026-05-23 02:03:02 +02:00
parent 5d422a9863
commit 4803607e3b
3 changed files with 57 additions and 9 deletions
+12 -6
View File
@@ -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"
),