prerelease/0.6.0 (#1)
Co-authored-by: David Rodenkirchen <drodenkirchen@linetco.com> Reviewed-on: #1
This commit was merged in pull request #1.
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
from rio import Component, Rectangle, Row, Text, Spacer, ProgressBar, Column, Color, TextStyle
|
||||
from rio.event import on_populate
|
||||
|
||||
from elm.services import ConfigurationService
|
||||
from elm.types import Ticket
|
||||
|
||||
|
||||
class LanInfoBox(Component):
|
||||
total_tickets: int = 1
|
||||
available_tickets: int = 0
|
||||
|
||||
@on_populate
|
||||
async def on_populate(self) -> None:
|
||||
total_tickets = 0
|
||||
for ticket_info in self.session[ConfigurationService].get_ticket_info():
|
||||
total_tickets += ticket_info.total_tickets
|
||||
|
||||
self.total_tickets = total_tickets
|
||||
self.available_tickets = total_tickets - len(await Ticket.find_all().to_list())
|
||||
|
||||
def build(self) -> Component:
|
||||
lan_info = self.session[ConfigurationService].get_lan_info()
|
||||
if self.session.is_mobile():
|
||||
return Rectangle(
|
||||
content=Column(
|
||||
Rectangle(
|
||||
content=Rectangle(
|
||||
content=Row(
|
||||
Text("■", margin=0.5, margin_top=0.2, style=TextStyle(font_size=1.2, fill=self.session.theme.primary_color_darker)),
|
||||
Text("LAN Info", margin=0.5, margin_top=0.6, selectable=False, justify="left", grow_x=True, fill=Color.WHITE),
|
||||
),
|
||||
fill=self.session.theme.header_box_background_color,
|
||||
margin=0
|
||||
),
|
||||
stroke_width=0.1,
|
||||
stroke_color=self.session.theme.box_border_color,
|
||||
),
|
||||
Column(
|
||||
Row(Text("Start:", font_size=0.7), Spacer(), Text(lan_info.date_from.strftime("%d.%m.%Y"), fill=self.session.theme.primary_color, font_size=0.8, overflow="nowrap")),
|
||||
Row(Text("Ende:", font_size=0.7), Spacer(), Text(lan_info.date_till.strftime("%d.%m.%Y"), fill=self.session.theme.primary_color, font_size=0.8, overflow="nowrap")),
|
||||
Row(Text("Einlass:", font_size=0.7), Spacer(), Text(lan_info.date_from.strftime("%H:%M Uhr"), fill=self.session.theme.primary_color, font_size=0.8, overflow="nowrap")),
|
||||
Row(Text("Abbau:", font_size=0.7), Spacer(), Text(lan_info.date_till.strftime("%H:%M Uhr"), fill=self.session.theme.primary_color, font_size=0.8, overflow="nowrap")),
|
||||
Row(Text("Internet:", font_size=0.7), Spacer(), Text(f"{lan_info.internet_speed_mbs} MBit/s", fill=self.session.theme.primary_color, font_size=0.8, overflow="nowrap")),
|
||||
Row(Text("Turniere:", font_size=0.7), Spacer(), Text("n/A", fill=self.session.theme.primary_color, font_size=0.8, overflow="nowrap")),
|
||||
Row(Text("WLAN:", font_size=0.7), Spacer(), Text("Ja" if lan_info.has_wifi else "Nein", fill=self.session.theme.primary_color, font_size=0.8, overflow="nowrap")),
|
||||
Row(Text("Duschen:", font_size=0.7), Spacer(), Text("Ja" if lan_info.has_showers else "Nein", fill=self.session.theme.primary_color, font_size=0.8, overflow="nowrap")),
|
||||
Spacer(),
|
||||
Column(
|
||||
Row(Text("Verfügbare Tickets", font_size=0.7, overflow="wrap"), Spacer(), Text(f"{self.available_tickets} / {self.total_tickets}", fill=self.session.theme.primary_color, font_size=0.8),
|
||||
margin_bottom=0.4),
|
||||
ProgressBar(
|
||||
progress=self.available_tickets / self.total_tickets,
|
||||
margin=0.5,
|
||||
rounded=False,
|
||||
min_height=0.4,
|
||||
color=self.session.theme.primary_color
|
||||
)
|
||||
),
|
||||
margin=2,
|
||||
spacing=1,
|
||||
grow_y=True
|
||||
)
|
||||
),
|
||||
fill=self.session.theme.box_color,
|
||||
stroke_width=0.1,
|
||||
stroke_color=self.session.theme.box_border_color,
|
||||
)
|
||||
else: # Tablet & Desktop
|
||||
return Rectangle(
|
||||
content=Column(
|
||||
Rectangle(
|
||||
content=Rectangle(
|
||||
content=Row(
|
||||
Text("■", margin=0.5, margin_top=0.2, style=TextStyle(font_size=1.2, fill=self.session.theme.primary_color_darker)),
|
||||
Text("LAN Info", margin=0.5, margin_top=0.6, selectable=False, justify="left", grow_x=True, fill=Color.WHITE),
|
||||
),
|
||||
fill=self.session.theme.header_box_background_color,
|
||||
margin=0
|
||||
),
|
||||
stroke_width=0.1,
|
||||
stroke_color=self.session.theme.box_border_color,
|
||||
),
|
||||
Column(
|
||||
Row(Text("Start:", font_size=0.9), Spacer(), Text(lan_info.date_from.strftime("%d.%m.%Y"), fill=self.session.theme.primary_color, font_size=0.9, overflow="nowrap")),
|
||||
Row(Text("Ende:", font_size=0.9), Spacer(), Text(lan_info.date_till.strftime("%d.%m.%Y"), fill=self.session.theme.primary_color, font_size=0.9, overflow="nowrap")),
|
||||
Row(Text("Einlass:", font_size=0.9), Spacer(), Text(lan_info.date_from.strftime("%H:%M Uhr"), fill=self.session.theme.primary_color, font_size=0.9, overflow="nowrap")),
|
||||
Row(Text("Abbau:", font_size=0.9), Spacer(), Text(lan_info.date_till.strftime("%H:%M Uhr"), fill=self.session.theme.primary_color, font_size=0.9, overflow="nowrap")),
|
||||
Row(Text("Internet:", font_size=0.9), Spacer(), Text(f"{lan_info.internet_speed_mbs} MBit/s", fill=self.session.theme.primary_color, font_size=0.9, overflow="nowrap")),
|
||||
Row(Text("Turniere:", font_size=0.9), Spacer(), Text("n/A", fill=self.session.theme.primary_color, font_size=0.9, overflow="nowrap")), # ToDo: Grab from DB
|
||||
Row(Text("WLAN:", font_size=0.9), Spacer(), Text("Ja" if lan_info.has_wifi else "Nein", fill=self.session.theme.primary_color, font_size=0.9, overflow="nowrap")),
|
||||
Row(Text("Duschen:", font_size=0.9), Spacer(), Text("Ja" if lan_info.has_showers else "Nein", fill=self.session.theme.primary_color, font_size=0.9, overflow="nowrap")),
|
||||
Spacer(),
|
||||
Column(
|
||||
Row(Text("Verfügbare Tickets", font_size=0.9, overflow="wrap"), Spacer(), Text(f"{self.available_tickets} / {self.total_tickets}", fill=self.session.theme.primary_color, font_size=0.9), margin_bottom=0.4),
|
||||
ProgressBar(
|
||||
progress=self.available_tickets / self.total_tickets,
|
||||
margin=0.5,
|
||||
rounded=False,
|
||||
min_height=0.4,
|
||||
color=self.session.theme.primary_color
|
||||
)
|
||||
),
|
||||
margin=2,
|
||||
spacing=1,
|
||||
grow_y=True
|
||||
)
|
||||
),
|
||||
fill=self.session.theme.box_color,
|
||||
stroke_width=0.1,
|
||||
stroke_color=self.session.theme.box_border_color,
|
||||
)
|
||||
Reference in New Issue
Block a user