diff --git a/src/elm/__init__.py b/src/elm/__init__.py index 84fd3b5..eb5ba36 100644 --- a/src/elm/__init__.py +++ b/src/elm/__init__.py @@ -8,7 +8,7 @@ from from_root import from_root from rio import App, Theme, Color, Font, Icon, Session from elm.components.RootComponent import RootComponent -from elm.services import ConfigurationService, DatabaseService, UserService, LocalData, LocalDataService, MailingService, AccountingService +from elm.services import ConfigurationService, DatabaseService, UserService, LocalData, LocalDataService, MailingService, AccountingService, PreloadService from elm.types import UserSession logger = logging.getLogger("ELM") @@ -79,7 +79,7 @@ app = App( theme=theme, assets_dir=Path(__file__).parent / "assets", build=RootComponent, - default_attachments=[LocalData(), configuration_service, database_service, UserService(), LocalDataService(), mailing_service, AccountingService(configuration_service, mailing_service)], + default_attachments=[LocalData(), configuration_service, database_service, UserService(), LocalDataService(), mailing_service, AccountingService(configuration_service, mailing_service), PreloadService()], on_app_start=on_app_start, on_session_start=on_session_start, icon=from_root("src/elm/assets/img/favicon.png"), diff --git a/src/elm/assets/preloaded_content/README.md b/src/elm/assets/preloaded_content/README.md new file mode 100644 index 0000000..ed4f33e --- /dev/null +++ b/src/elm/assets/preloaded_content/README.md @@ -0,0 +1,3 @@ +# Preloaded content + +The files in this directory are loaded upon app start, as they do not change during runtime. \ No newline at end of file diff --git a/src/elm/assets/preloaded_content/faq.txt b/src/elm/assets/preloaded_content/faq.txt new file mode 100644 index 0000000..b679c62 --- /dev/null +++ b/src/elm/assets/preloaded_content/faq.txt @@ -0,0 +1,47 @@ +Wie melde ich mich für die LAN an? + +Registriere dich auf dieser Seite, lade dein Guthabenkonto auf und kaufe ein Ticket. Danach such dir einen freien Sitzplatz auf dem Sitzplan aus. + +Wie lade ich mein Guthabenkonto auf? + +Logge dich in deinen Account ein und klicke oben rechts auf dein Profilbild, von dort auf die Schaltfläche 'Guthaben' in der Navigationsleiste. Dort findest du alle weiteren Informationen. + +Wie kann ich mein Ticket stornieren? + +Schreibe uns eine Mail an tech@ezgg-ev.de, wir kümmern uns dann Zeitnah um die Stornierung. + +Was soll ich zur LAN mitbringen? + +Deinen PC inklusive aller zugehörigen Geräte (Maus, Tastatur, Monitor, Headset), sowie aller Anschlusskabel. Wir empfehlen ein LAN Kabel von mindestens 5 Metern Länge mitzubringen. Des weiteren benötigste du eine Mehrfachsteckdose, da dir an deinem Platz nur ein einzelner Steckplatz zugewiesen wird. + +Wohin mit technischen Problemen? + +Melde dich einfach am Einlass bzw in der Orga-Ecke, wir helfen gerne weiter. + +Wo entsorge ich meinen Müll? + +Im gesamten Gebäude findest du Mülltüten/Mülleimer. + +Darf ich Cannabis konsumieren? + +Generell verbieten wir den Konsum von Cannabis nicht. Beachte aber die allgemeine Gesetzeslage und ziehe ggf. die Bubatzkarte zu Rat. + +Gibt es einen Discord oder TeamSpeak? + +Du kannst gerne unseren Vereins-TeamSpeak3-Server unter ts3.ezgg-ev.de nutzen. Den Link zum offiziellen Discord findest du in der Kopfleiste. + +Wo bleibt mein Essen? + +Vermutlich ist es auf dem Weg. Du kannst auf der Catering-Seite den Status deiner Bestellung überprüfen. Hast du Bedenken das sie verloren gegangen sein könnte, sprich ein Team-Mitglied an der Theke darauf an. + +Wie lange dauert eine Aufladung per Überweißung? + +In der Regel wird das Guthaben deinem Konto innerhalb von 2 bis 3 Werktagen gutgeschrieben. In Ausnahmefällen kann es bis zu 7 Tagen dauern. + +Wie melde ich meinen Clan an? + +Wenn in deiner Gruppe mehr als 3 Personen sind, dann schreib uns bitte eine Mail mit dem Betreff 'Gruppenticket' an tech@ezgg-ev.de. Schreibe uns dort die Nutzer-ID's sowie die Sitzplätze deiner Gruppe auf. Gehe sicher das jede Person in deiner Gruppe entweder bereits ein passendes Ticket besitzt oder über genug Guthaben verfügt um ein Ticket zu kaufen. + +Wo kann ich schlafen? + +Im Gebäude sind offizielle Schlafbereiche ausgewiesen. Solange du keine Zugangs-, Durchgangs-, oder Rettungswege blockierst, darfst du überall schlafen. \ No newline at end of file diff --git a/src/elm/pages/FaqPage.py b/src/elm/pages/FaqPage.py new file mode 100644 index 0000000..de4531d --- /dev/null +++ b/src/elm/pages/FaqPage.py @@ -0,0 +1,44 @@ +from __future__ import annotations + +from copy import copy +from typing import Any, Optional +from uuid import uuid4 + +from rio import Component, Column, Row, Text, Spacer, page, Color, Rectangle, TextInput, GuardEvent + +from elm.types import UserSession, User +from elm.services import UserService, LocalData, LocalDataService, ConfigurationService, PreloadService +from elm.components import ElmButton + +@page(name="FAQ", url_segment="faq") +class FaqPage(Component): + def build(self) -> Component: + return Row( + Rectangle( + content=Column( + Rectangle( + content=Rectangle( + content=Text("F.A.Q.", margin=0.5, selectable=False, overflow="wrap"), + fill=self.session.theme.header_box_background_color, + margin=0.4 + ), + stroke_width=0.1, + stroke_color=self.session.theme.box_border_color, + ), + *[Column( + Text(q_a[0], font_weight="bold", overflow="wrap", fill=self.session.theme.primary_color), + Text(q_a[1], italic=True, overflow="wrap"), + spacing=0.5, + margin_bottom=1.5, + margin=1 + ) for q_a in self.session[PreloadService].faq], + Spacer() + ), + fill=self.session.theme.box_color, + stroke_width=0.1, + stroke_color=self.session.theme.box_border_color + ), + grow_x=True, + grow_y=True, + margin=0 if self.session.is_mobile() else 1 + ) diff --git a/src/elm/services/PreloadService.py b/src/elm/services/PreloadService.py new file mode 100644 index 0000000..81f0e19 --- /dev/null +++ b/src/elm/services/PreloadService.py @@ -0,0 +1,16 @@ +from from_root import from_root + + +class PreloadService: + def __init__(self) -> None: + self._faq: list[tuple[str, str]] = [] + with open(from_root("src/elm/assets/preloaded_content/faq.txt"), "r") as faq_file: + faq = faq_file.read() + faq = faq.split("\n\n") + for i in range(0, len(faq), 2): + q, a = faq[i], faq[i + 1] + self._faq.append((q, a)) + + @property + def faq(self) -> list[tuple[str, str]]: + return self._faq diff --git a/src/elm/services/__init__.py b/src/elm/services/__init__.py index 54bbe95..6642d38 100644 --- a/src/elm/services/__init__.py +++ b/src/elm/services/__init__.py @@ -4,3 +4,4 @@ from .UserService import UserService, NameNotAllowedError, MailAlreadyInUseError from .LocalDataService import LocalData, LocalDataService from .MailingService import MailingService from .AccountingService import AccountingService +from .PreloadService import PreloadService