improve catering management (#8)
Co-authored-by: David Rodenkirchen <drodenkirchen@linetco.com> Reviewed-on: Vereins-IT/ez-lan-manager#8
This commit is contained in:
parent
198a449a55
commit
8971f4b73f
@ -65,6 +65,9 @@ class CateringManagementOrderDisplay(Component):
|
||||
return PointerEventListener(
|
||||
content=Card(
|
||||
content=Column(
|
||||
Row(
|
||||
Text(f"ID: {self.order.order_id}", margin_left=0.3, margin_top=0.2, justify="center", style=TextStyle(font_size=1.2)),
|
||||
),
|
||||
Row(
|
||||
Text(f"Status: ", margin_left=0.3, margin_top=0.2),
|
||||
self.format_order_status(self.order.status),
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
import logging
|
||||
from dataclasses import field, dataclass
|
||||
from datetime import datetime
|
||||
from typing import Optional
|
||||
from typing import Optional, Callable
|
||||
|
||||
from rio import Column, Component, event, TextStyle, Text, Spacer, PointerEvent, Button
|
||||
from rio import Column, Component, event, TextStyle, Text, Spacer, PointerEvent, Button, Popup, Card, Row
|
||||
|
||||
from src.ez_lan_manager import ConfigurationService, CateringService, SeatingService
|
||||
from src.ez_lan_manager import ConfigurationService, CateringService, SeatingService, AccountingService
|
||||
from src.ez_lan_manager.components.CateringManagementOrderDisplay import CateringManagementOrderDisplay
|
||||
from src.ez_lan_manager.components.MainViewContentBox import MainViewContentBox
|
||||
from src.ez_lan_manager.types.CateringOrder import CateringOrder, CateringOrderStatus
|
||||
@ -13,6 +13,35 @@ from src.ez_lan_manager.types.Seat import Seat
|
||||
|
||||
logger = logging.getLogger(__name__.split(".")[-1])
|
||||
|
||||
class CateringOrderInfoPopup(Component):
|
||||
order: Optional[CateringOrder] = None
|
||||
close_cb: Optional[Callable] = None
|
||||
|
||||
def build(self) -> Component:
|
||||
if not self.order:
|
||||
return Card(
|
||||
content=Text(""),
|
||||
margin=1,
|
||||
color=self.session.theme.hud_color,
|
||||
min_width=40,
|
||||
min_height=40,
|
||||
on_press=self.close_cb
|
||||
)
|
||||
return Card(
|
||||
content=Column(
|
||||
Text(f"Bestellung {self.order.order_id}", style=TextStyle(font_size=1.2), margin_bottom=1),
|
||||
*[Row(Text(f"{amount}x"), Spacer(), Text(f"{item.name}")) for item, amount in self.order.items.items()],
|
||||
Spacer(),
|
||||
Row(Text("Gesamtpreis:"), Spacer(), Text(self.session[AccountingService].make_euro_string_from_int(self.order.price)))
|
||||
),
|
||||
margin=1,
|
||||
color=self.session.theme.hud_color,
|
||||
min_width=40,
|
||||
min_height=40,
|
||||
on_press=self.close_cb,
|
||||
corner_radius=0.5
|
||||
)
|
||||
|
||||
@dataclass
|
||||
class CateringOrderWithSeat:
|
||||
catering_order: CateringOrder
|
||||
@ -21,6 +50,8 @@ class CateringOrderWithSeat:
|
||||
class ManageCateringPage(Component):
|
||||
all_orders: list[CateringOrderWithSeat] = field(default_factory=list)
|
||||
last_updated: Optional[datetime] = None
|
||||
order_popup_open: bool = False
|
||||
order_popup_order: Optional[CateringOrder] = None
|
||||
|
||||
@event.on_populate
|
||||
async def on_populate(self) -> None:
|
||||
@ -53,14 +84,14 @@ class ManageCateringPage(Component):
|
||||
return sorted_list
|
||||
|
||||
async def order_clicked(self, order: CateringOrder, _: PointerEvent) -> None:
|
||||
pass
|
||||
self.order_popup_order = order
|
||||
self.order_popup_open = True
|
||||
|
||||
async def close_cb(self) -> None:
|
||||
self.order_popup_open = False
|
||||
|
||||
def build(self) -> Component:
|
||||
return Column(
|
||||
MainViewContentBox(
|
||||
Column(
|
||||
Text(
|
||||
header_text = Text(
|
||||
text="Catering Verwaltung",
|
||||
style=TextStyle(
|
||||
fill=self.session.theme.background_color,
|
||||
@ -70,7 +101,15 @@ class ManageCateringPage(Component):
|
||||
margin_bottom=2,
|
||||
align_x=0.5
|
||||
)
|
||||
popup = Popup(
|
||||
anchor=header_text,
|
||||
content=CateringOrderInfoPopup(order=self.order_popup_order, close_cb=self.close_cb),
|
||||
is_open=self.order_popup_open,
|
||||
position="bottom"
|
||||
)
|
||||
return Column(
|
||||
MainViewContentBox(
|
||||
Column(popup)
|
||||
),
|
||||
MainViewContentBox(
|
||||
Column(
|
||||
|
||||
Loading…
Reference in New Issue
Block a user