ezgg-lan-manager/src/ez_lan_manager/components/CateringCartItem.py
2025-02-04 18:10:20 +01:00

32 lines
1.1 KiB
Python

from typing import Callable
from decimal import Decimal
import rio
from rio import Component, Row, Text, IconButton, TextStyle
from src.ez_lan_manager import AccountingService
MAX_LEN = 24
class CateringCartItem(Component):
article_name: str
article_price: Decimal
article_id: int
list_id: int
remove_item_cb: Callable
@staticmethod
def ellipsize_string(string: str) -> str:
if len(string) <= MAX_LEN:
return string
return string[:MAX_LEN - 3] + "..."
def build(self) -> rio.Component:
return Row(
Text(self.ellipsize_string(self.article_name), align_x=0, overflow="wrap", min_width=19, style=TextStyle(fill=self.session.theme.background_color, font_size=0.9)),
Text(AccountingService.make_euro_string_from_decimal(self.article_price), style=TextStyle(fill=self.session.theme.background_color, font_size=0.9)),
IconButton(icon="material/close", min_size=2, color=self.session.theme.danger_color, style="plain-text", on_press=lambda: self.remove_item_cb(self.list_id)),
proportions=(19, 5, 2)
)