prerelease/0.6.0 #1
@@ -1,9 +1,23 @@
|
|||||||
from rio import Component, Rectangle, Row, Text, Spacer, ProgressBar, Column, Color, TextStyle
|
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.services import ConfigurationService
|
||||||
|
from elm.types import Ticket
|
||||||
|
|
||||||
|
|
||||||
class LanInfoBox(Component):
|
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:
|
def build(self) -> Component:
|
||||||
lan_info = self.session[ConfigurationService].get_lan_info()
|
lan_info = self.session[ConfigurationService].get_lan_info()
|
||||||
if self.session.is_mobile():
|
if self.session.is_mobile():
|
||||||
@@ -32,10 +46,10 @@ class LanInfoBox(Component):
|
|||||||
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")),
|
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(),
|
Spacer(),
|
||||||
Column(
|
Column(
|
||||||
Row(Text("Verfügbare Tickets", font_size=0.7, overflow="wrap"), Spacer(), Text("22 / 60", fill=self.session.theme.primary_color, font_size=0.8),
|
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),
|
margin_bottom=0.4),
|
||||||
ProgressBar(
|
ProgressBar(
|
||||||
progress=22 / 60,
|
progress=self.available_tickets / self.total_tickets,
|
||||||
margin=0.5,
|
margin=0.5,
|
||||||
rounded=False,
|
rounded=False,
|
||||||
min_height=0.4,
|
min_height=0.4,
|
||||||
@@ -77,9 +91,9 @@ class LanInfoBox(Component):
|
|||||||
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")),
|
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(),
|
Spacer(),
|
||||||
Column(
|
Column(
|
||||||
Row(Text("Verfügbare Tickets", font_size=0.9, overflow="wrap"), Spacer(), Text("22 / 60", fill=self.session.theme.primary_color, font_size=0.9), margin_bottom=0.4),
|
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(
|
ProgressBar(
|
||||||
progress=22 / 60,
|
progress=self.available_tickets / self.total_tickets,
|
||||||
margin=0.5,
|
margin=0.5,
|
||||||
rounded=False,
|
rounded=False,
|
||||||
min_height=0.4,
|
min_height=0.4,
|
||||||
|
|||||||
Reference in New Issue
Block a user