# Bedienungsanleitung – Logbuch Sternwarte Welzheim ## Inhaltsverzeichnis 1. [Anmelden](#1-anmelden) 2. [Grundaufbau der App](#2-grundaufbau-der-app) 3. [Eintrag erfassen (Tab „Eingabe")](#3-eintrag-erfassen-tab-eingabe) 4. [Einträge einsehen und verwalten (Tab „Liste")](#4-einträge-einsehen-und-verwalten-tab-liste) 5. [Jahresstatistik (Tab „Statistik")](#5-jahresstatistik-tab-statistik) 6. [Drucken](#6-drucken) 7. [Administration (nur Admins)](#7-administration-nur-admins) --- ## 1. Anmelden Die App ist passwortgeschützt. Beim ersten Aufruf erscheint die Anmeldeseite. - **Kürzel**: das persönliche BEO-Kürzel (z. B. `RXF`) - **Passwort**: individuell gesetztes Passwort Wurde das Passwort noch nicht geändert (Anzeige „Standard"), muss nach dem ersten Login sofort ein neues Passwort vergeben werden. Das Standard-Passwort lautet `welzheim`. --- ## 2. Grundaufbau der App ### Kuppel-Auswahl Oben befinden sich vier Reiter für die vier Kuppeln: | Reiter | Bedeutung | |--------|-----------| | West | West-Kuppel | | Ost | Ost-Kuppel | | Süd | Süd-Kuppel | | Pluto | Pluto-Kuppel | Alle Einträge, Listen und Statistiken beziehen sich immer auf die gerade gewählte Kuppel. ### Funktions-Tabs Unterhalb der Kuppelauswahl gibt es drei Tabs: | Tab | Funktion | |-----|----------| | **Eingabe** | Neuen Eintrag anlegen oder bestehenden bearbeiten | | **Liste** | Alle Einträge monatsweise ansehen, bearbeiten oder löschen | | **Statistik** | Jahresübersicht Besucher und Führungen | --- ## 3. Eintrag erfassen (Tab „Eingabe") ### Pflichtfelder **Art der Führung** – Auswahl aus dem Dropdown: | Kürzel | Bedeutung | |--------|-----------| | regulär | Reguläre öffentliche Führung | | sonder | Sonderführung (für Gruppen, Schulen etc.) | | sonnen | Sonnenführung | | privat | Privatführung | | BEOS | BEO-Sitzung (keine Besucher/Objekte) | | TD | Treff/Diskussion (keine Besucher/Objekte) | | Beobachtung | Reine Beobachtung ohne Führung | | ToT | Teleskop ohne Termin | | Sonstiges | Sonstige Veranstaltung | **Datum** – Datum der Veranstaltung (Standardwert: heute). **Startzeit / Endzeit** – Uhrzeit von Beginn und Ende. Die Startzeit ist beim Laden leer und erhält automatisch den Fokus; die Endzeit wird auf die aktuelle Uhrzeit aufgerundet auf die nächste 5-Minuten-Marke vorausgefüllt. Wird nur die Stundenzahl eingegeben (z. B. `8` oder `23`) und das Feld verlassen, werden die Minuten automatisch auf `00` gesetzt. **Besucher** – Anzahl der Besucher (nicht bei BEOS und TD). ### Optionale Felder **Name / Gruppe** – erscheint nur bei Sonderführung; Name der Gruppe oder Person. **BEOs** – beteiligte Beobachter. Der eigene Name ist automatisch vorausgewählt. Weitere BEOs können über das Suchfeld hinzugefügt werden; ein Klick auf × entfernt sie wieder. **Beobachtete Objekte** – nicht sichtbar bei BEOS und TD; bei Sonnenführungen fest auf „Sonne" gesetzt. Für alle anderen Arten: - Bekannte Objekte durch Eintippen suchen und aus dem Dropdown auswählen. - Das Dropdown bleibt nach der Auswahl offen, sodass mehrere Objekte ohne erneutes Öffnen hintereinander ausgewählt werden können. Durch Klick außerhalb schließt es sich. - Noch unbekannte Objekte einfach eintippen – am Ende der Dropdown-Liste erscheint dann **+ „[Name]" hinzufügen**. Ein Klick (oder Enter bei leerem Suchergebnis) legt das Objekt neu an. - Ausgewählte Objekte erscheinen als grüne Chips; × entfernt sie. **Bemerkungen** – freier Text, max. 500 Zeichen. **Wetterdaten** – Temperatur (°C), Luftfeuchtigkeit (%) und Luftdruck (hPa) werden automatisch vom lokalen Wetterdienst vorausgefüllt und können manuell korrigiert werden. Negative Temperaturen (z. B. `-5`) können direkt eingegeben werden. ### Eintrag speichern Schaltfläche **Eintrag speichern** unten im Formular. Eine grüne Meldung bestätigt die Speicherung; das Formular wird zurückgesetzt. > Auf Desktop-Geräten erscheinen unterhalb des Formulars die letzten 5 Einträge der aktuellen Kuppel als kompakte Vorschau. ### Eintrag bearbeiten Im Tab „Liste" das Stift-Symbol (✎) anklicken. Die App springt zum Tab „Eingabe" und zeigt einen gelben Hinweis „Eintrag bearbeiten (ID …)". Nach der Änderung **Änderungen speichern** klicken oder mit **Abbrechen** verwerfen. --- ## 4. Einträge einsehen und verwalten (Tab „Liste") ### Werkzeugleiste Die Werkzeugleiste oben in der Liste enthält in einer Zeile: - **Monatsnavigation** – Pfeiltasten ← → wechseln den Monat; Monatseingabe im Feld direkt möglich; **Aktueller Monat** springt zurück auf den laufenden Monat. Zukünftige Monate können nicht gewählt werden. Während einer aktiven Suche wird die Monatsnavigation ausgeblendet (der Platz bleibt frei, damit sich nichts verschiebt). - **Suchfeld** – Freitextsuche über alle Einträge des Logbuchs (Bemerkungen, Objekte und BEOs). Die Ergebnisse erscheinen monatübergreifend in absteigender Datumsreihenfolge. Das × im Suchfeld löscht die Eingabe und kehrt zur Monatsansicht zurück. - **🖨 Drucken** – siehe Abschnitt [Drucken](#6-drucken). ### Tabelleninhalt Die Tabelle zeigt pro Eintrag: Datum, Uhrzeit (Beginn–Ende), Art der Führung, Besucher, beteiligte BEOs, beobachtete Objekte, Bemerkungen und Wetterdaten. Der Ersteller des Eintrags ist in der BEO-Spalte **fettgedruckt** und steht an erster Stelle. Wetterdaten werden nur angezeigt, wenn mindestens ein Wert ungleich null ist. ### Eintrag bearbeiten Stift-Symbol ✎ rechts in der Zeile. ### Eintrag löschen × rechts in der Zeile – es erscheint ein Bestätigungsdialog. Das Löschen ist **unwiderruflich**. ### Seitennavigation Bei mehr als 10 Einträgen erscheinen Vor/Zurück-Schaltflächen am unteren Rand. --- ## 5. Jahresstatistik (Tab „Statistik") Zeigt eine Monatstabelle mit Anzahl der Führungen und Besuchern, aufgeschlüsselt nach Art der Führung. - **Jahr** oben links änderbar (Eingabefeld). - Darunter vier Kennzahlen-Kacheln: - Kumulierte Besucher des Jahres für die gewählte Kuppel - Führungstage des Jahres für die gewählte Kuppel - Kumulierte Besucher für die gesamte Sternwarte (alle Kuppeln) - Führungstage für die gesamte Sternwarte --- ## 6. Drucken Im Tab **Liste**: Schaltfläche **🖨 Drucken** oben rechts in der Liste. - Es werden **alle Einträge des aktuell gewählten Monats** geladen (nicht nur die angezeigte Seite). - Die Reihenfolge ist beim Ausdruck **chronologisch** (ältester Eintrag zuerst). - Navigations- und Aktionselemente werden ausgeblendet; oben erscheint ein Kopfzeile mit Kuppelname und Druckdatum. - Seitenformat: A4 Hochformat, Rand 1,5 cm. Im Tab **Statistik**: ebenfalls eine **🖨 Drucken**-Schaltfläche für die Jahresstatistik. --- ## 7. Administration (nur Admins) Erreichbar über die Schaltfläche **Admin** oben rechts (nur für Benutzer mit Admin-Rolle sichtbar). Die Admin-Seite hat zwei Tabs: ### Benutzerverwaltung Die Tabelle zeigt alle BEOs mit Kürzel, Name, Vorname, Rolle und Passwortstatus. **Passwort zurücksetzen**: Schaltfläche „Zurücksetzen" neben dem jeweiligen Benutzer. Das Passwort wird auf NULL gesetzt; beim nächsten Login muss der Benutzer das Standard-Passwort `welzheim` verwenden und wird anschließend aufgefordert, ein neues Passwort zu vergeben. ### Objektverwaltung Zeigt alle bekannten Objekte mit ID, Name und Datum der letzten Verwendung. - **Neues Objekt anlegen**: Feld unten ausfüllen und **Hinzufügen** klicken. - **Objekt umbenennen**: Stift-Symbol ✎ in der Zeile anklicken, Namen ändern und mit **Speichern** bestätigen oder mit **Abbrechen** verwerfen. - **Objekt löschen**: × in der Zeile – es erscheint ein Bestätigungsdialog. Das Löschen ist **unwiderruflich** und entfernt das Objekt aus allen bestehenden Logbucheinträgen. ## Neue Features (Statistik Grafik Proxy) Dieses Release ergänzt eine serverseitige Proxy-Lösung für das interne Statistik-Portal, damit geschützte Diagramme sicher eingeblendet werden können, ohne Zugangsdaten im Browser zu speichern. - Was neu ist: - Server-seitiger Proxy unter `/api/statistik/grafik` und Catch-all `/api/statistik/grafik/*`. - Holt die Statistik-Seite mit Basic-Auth (serverseitig) und liefert sie an den Browser weiter. - Schreibt die HTML-Antwort so um, dass relative Assets (CSS/JS/Images) über die Proxy-URL geladen werden (es wird ein `` eingefügt). - Leitet auch AJAX-POSTs (z. B. `php/statistic.php`) weiter – Methoden und Bodies werden beibehalten. - Entfernt framing-blockierende Header (z. B. `X-Frame-Options`, CSP-Meta-Tags) in der proxied HTML-Antwort. - Wichtige Environment-Variablen (nur serverseitig): - `STATISTIK_GRAFIK_URL` — Basis-URL des internen Statistik-Portals (z. B. `https://sternwarte-welzheim.de/intern/statistik`). - `STATISTIK_GRAFIK_USER` — Benutzername für Basic-Auth. - `STATISTIK_GRAFIK_PASS` — Passwort für Basic-Auth. - UI-Änderung: - Der `Grafik`-Button in der Statistik-Ansicht öffnet die Statistik jetzt in einem neuen Fenster (`window.open('/api/statistik/grafik', '_blank')`). Die vorherige iframe-Integration wurde entfernt, weil manche Browser (insbesondere Firefox und Safari) Probleme mit eingebetteten, geschützten Seiten machen. - Sicherheit & Hinweise: - Setze die `STATISTIK_...` Variablen in deiner Server-Umgebung (Docker secrets, CI/CD env vars, oder im Host-Umfeld). Niemals Zugangsdaten ins Repository committen. - Die Proxy-Route ist so konfiguriert, dass Assets und AJAX-Aufrufe über den gleichen Proxy laufen, damit die Seite vollständig funktioniert. Wenn du möchtest, pushe ich die Änderungen an `ANLEITUNG.md` in `origin/main` für dich. ## CI/CD Hinweise Das Repository enthält einen GitHub Actions Workflow unter `.github/workflows/deploy.yml`, der bei Push auf `main` ein Multi-Arch Docker-Image baut und zu `docker.citysensor.de` pusht. Erforderliche CI-Secrets (setzen in deinem CI/Repository-Provider): - `DOCKER_USERNAME` — Benutzername für `docker.citysensor.de`. - `DOCKER_PASSWORD` — Passwort für `docker.citysensor.de`. Wie du die Secrets hinterlegst: - GitHub: Repository → Settings → Secrets and variables → Actions → `New repository secret`. - Gitea: Repository → Settings → Secrets (oder CI/CD variables) — je nach Installation. Hinweis: Trage niemals Zugangsdaten im Quellcode oder in öffentlichen Dateien ein. Verwende Repository-Secrets oder sichere CI-Variablen. Optionales manuelles Deploy (falls Docker lokal verfügbar): ```bash ./deploy.sh 1.7.8 ``` Wenn du möchtest, kann ich noch einen kurzen Abschnitt zur Einrichtung der Secrets in eurem Gitea-Server hinzufügen — sag Bescheid.