diff --git a/ezgg_website/__init__.py b/ezgg_website/__init__.py index b76362c..8471310 100644 --- a/ezgg_website/__init__.py +++ b/ezgg_website/__init__.py @@ -3,6 +3,7 @@ from __future__ import annotations from pathlib import Path import rio +from from_root import from_root from . import pages from . import components as comps @@ -99,6 +100,11 @@ themes = [ async def on_session_start(s: rio.Session) -> None: await s.set_title("EZ GG e.V.") + rio.Icon.register_single_icon( + set_name="custom", + icon_name="steam", + icon_source=from_root("ezgg_website/assets/icons/steam.svg") + ) # Create the Rio app app = rio.App( diff --git a/ezgg_website/assets/icons/steam.svg b/ezgg_website/assets/icons/steam.svg new file mode 100644 index 0000000..316f63e --- /dev/null +++ b/ezgg_website/assets/icons/steam.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ezgg_website/components/member_card.py b/ezgg_website/components/member_card.py index b56234c..e781551 100644 --- a/ezgg_website/components/member_card.py +++ b/ezgg_website/components/member_card.py @@ -1,14 +1,18 @@ from pathlib import Path from dataclasses import dataclass +from typing import Optional import rio + @dataclass class MemberInfo: picture_path: Path name: str position: str entry_date: str + contact_mail: Optional[str] + contact_steam: Optional[str] class MemberCard(rio.Component): @@ -21,13 +25,26 @@ class MemberCard(rio.Component): self.margin_right = 1 def build(self) -> rio.Component: - return rio.Rectangle( - content=rio.Column( + contact_row = rio.Row() + content = rio.Column( rio.Image(self._info.picture_path, height=9, margin_bottom=1.3), rio.Text(self._info.name, margin_bottom=0.4, style=rio.TextStyle(font_weight="bold")), rio.Text(self._info.position, margin_bottom=0.4, style=rio.TextStyle(italic=True)), - rio.Text(f"Mitglied seit {self._info.entry_date}", style=rio.TextStyle(italic=True), margin_bottom=0.4) - ), + rio.Text(f"Mitglied seit {self._info.entry_date}", style=rio.TextStyle(italic=True), margin_bottom=0.4), + contact_row + ) + + # @Todo: Icon alignment broken if only one icon should be shown. + if self._info.contact_mail: + contact_row.add(rio.Link(rio.Icon("material/mail"), f"mailto://{self._info.contact_mail}", open_in_new_tab=True, margin_top=1, margin_bottom=1, align_x=0.9)) + if self._info.contact_steam: + contact_row.add(rio.Link(rio.Icon("custom/steam"), self._info.contact_steam, open_in_new_tab=True, margin_top=1, margin_bottom=1, align_x=0.1)) + + if not self._info.contact_steam and not self._info.contact_mail: + contact_row.add(rio.Text("", margin_top=2)) + + return rio.Rectangle( + content=content, fill=self.session.theme.neutral_color, corner_radius=self.session.theme.corner_radius_medium, shadow_radius=0.5, diff --git a/ezgg_website/pages/join.py b/ezgg_website/pages/join.py index f06de00..df0523a 100644 --- a/ezgg_website/pages/join.py +++ b/ezgg_website/pages/join.py @@ -18,7 +18,7 @@ Wir freuen uns sehr, dass du Interesse daran hast, Mitglied bei der Einfach Zock Als Mitglied hast du die Möglichkeit, aktiv an unseren Veranstaltungen teilzunehmen und die Entwicklung des Vereins mitzugestalten. Egal, ob du ein erfahrener Gamer oder ein Neuling bist – bei uns bist du herzlich willkommen! -Um Mitglied zu werden, fülle bitte das untenstehende Formular aus. Wir freuen uns darauf, dich bald in unserer Gemeinschaft begrüßen zu dürfen! +Um Mitglied zu werden, fülle bitte das untenstehende Formular aus und sende es uns [per Mail an den Vorstand](./member) oder [per Post](./imprint). Wir freuen uns darauf, dich bald in unserer Gemeinschaft begrüßen zu dürfen! _[Mitgliedsantragsformular kommt noch, wir bitten um Geduld]_ diff --git a/ezgg_website/services/database_service.py b/ezgg_website/services/database_service.py index 841ed76..b19d1a2 100644 --- a/ezgg_website/services/database_service.py +++ b/ezgg_website/services/database_service.py @@ -16,36 +16,50 @@ class DatabaseService: picture_path=from_root("ezgg_website/assets/member_pictures/anon.png"), name="David \"Typhus\" R.", position="1. Vorsitzender", - entry_date="29.10.2023" + entry_date="29.10.2023", + contact_mail="davidr.develop@gmail.com", + contact_steam="https://steamcommunity.com/id/originaltyphus" ), MemberInfo( picture_path=from_root("ezgg_website/assets/member_pictures/anon.png"), name="Julia \"Ravenchild\" A.", position="2. Vorsitzende", - entry_date="29.10.2023" + entry_date="29.10.2023", + contact_mail="Julia-albring95@hotmail.de", + contact_steam="https://steamcommunity.com/profiles/76561198089911312" ), MemberInfo( picture_path=from_root("ezgg_website/assets/member_pictures/anon.png"), name="Jessy \"JessySixx\" R.", position="Schatzmeisterin", - entry_date="29.10.2023" + entry_date="29.10.2023", + contact_mail=None, + contact_steam=None ), MemberInfo( picture_path=from_root("ezgg_website/assets/member_pictures/anon.png"), name="Tim \"Matschwicht\" B.", position="Mitglied", - entry_date="29.10.2023" + entry_date="29.10.2023", + contact_mail=None, + contact_steam=None ), MemberInfo( picture_path=from_root("ezgg_website/assets/member_pictures/anon.png"), name="Dennis \"Goodman\" P.", position="Mitglied", - entry_date="29.10.2023" + entry_date="29.10.2023", + contact_mail=None, + contact_steam=None ), MemberInfo( picture_path=from_root("ezgg_website/assets/member_pictures/anon.png"), name="Tom \"Tcprod\" C.", position="Mitglied", - entry_date="29.10.2023" + entry_date="29.10.2023", + contact_mail=None, + contact_steam=None ), MemberInfo( picture_path=from_root("ezgg_website/assets/member_pictures/anon.png"), name="Chris \"Meliodas\" K.", position="Mitglied", - entry_date="29.10.2023" + entry_date="29.10.2023", + contact_mail=None, + contact_steam=None ) ]