0.6.1/Add Participants page #6

Merged
Typhus merged 2 commits from feature/0.6.1 into main 2026-05-30 09:43:50 +00:00
3 changed files with 68 additions and 1 deletions
Showing only changes of commit b31a7d6944 - Show all commits
+1 -1
View File
@@ -1 +1 @@
0.6.1git asd
0.6.1
+1
View File
@@ -94,6 +94,7 @@ class NavigationBar(Component):
NavigationButton("material/house", "Startseite", "/", extension_state_changed=self.on_extension_pressed),
NavigationButton("material/local_activity", "Tickets", "/tickets", extension_state_changed=self.on_extension_pressed),
NavigationButton("material/chair_alt", "Sitzplan", "/seating", extension_state_changed=self.on_extension_pressed),
NavigationButton("material/group", "Teilnehmer", "/participants", extension_state_changed=self.on_extension_pressed),
NavigationButton("material/local_dining", "Catering", "/catering", extension_state_changed=self.on_extension_pressed),
NavigationButton("material/trophy", "Turniere", "/tournaments", extension_state_changed=self.on_extension_pressed),
margin_bottom=6
+66
View File
@@ -0,0 +1,66 @@
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 rio.event import on_populate
from elm.types import UserSession, User, Ticket, Seat
from elm.services import UserService, LocalData, LocalDataService, ConfigurationService
from elm.components import ElmButton
@page(name="Participants", url_segment="participants")
class ParticipantsPage(Component):
participants: list[tuple[User, Seat]] = []
@on_populate
async def on_populate(self) -> None:
seats = await Seat.find_many(
Seat.user != None,
fetch_links=True
).to_list()
self.participants = [(seat.user, seat) for seat in seats]
def build(self) -> Component:
return Row(
Rectangle(
content=Column(
Rectangle(
content=Rectangle(
content=Text("Teilnehmer", 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(
Row(
Text("Nutzer", grow_x=True, font_weight="bold"),
Text("Sitzplatz", font_weight="bold"),
margin=0.5
),
*[
Rectangle(
content=Row(
Text(user.user_name, grow_x=True, font_size=0.8),
Text(seat.seat_id, font_size=0.8),
margin=0.5
),
hover_fill=self.session.theme.secondary_color,
transition_time=0.2
) for user, seat in self.participants],
margin=1
),
Spacer()
),
fill=self.session.theme.box_color,
stroke_width=0.1,
stroke_color=self.session.theme.box_border_color
),
margin=1,
grow_x=True
)