-
Notifications
You must be signed in to change notification settings - Fork 0
Architektur
MatthiasSimon03 edited this page Sep 12, 2024
·
5 revisions
Dieses Projekt ist eine Webanwendung, die mithilfe von JavaScript ein Gleitschirm - Variometer bereitstellt. Die Hauptaufgabe der Anwendung besteht darin, die Höhenveränderung des Fliegenden zu erfassen und visuell sowie auditiv auszugeben. Zudem wird die aktuelle Position auf einer Karte dargestellt und zusätzliche Informationen wie horizontale Geschwindigkeit und Höhe angezeigt. Die Webanwendung ist modular aufgebaut, um Wartbarkeit und Erweiterbarkeit zu gewährleisten.
Die Anwendung folgt einer strukturierten Dateiorganisation, um die einzelnen Funktionalitäten klar voneinander zu trennen. Hier ist eine Übersicht der Verzeichnisse und Dateien:
- Zweck: Einstiegspunkt der Anwendung, der alle Module zusammenführt.
-
Beschreibung:
-
altitudeOnlyGPS.js
ist das zentrale Skript, das beim Starten der Anwendung geladen wird. - Es koordiniert die Initialisierung aller Module und stellt sicher, dass alle Teile der Anwendung korrekt miteinander arbeiten.
- Diese Datei enthält die Event-Listener und die Logik, die die Interaktionen zwischen den verschiedenen Komponenten steuert, wie z.B. das Handling von Benutzeraktionen und die Aktualisierung der UI in Echtzeit.
-
- Zweck: Registriert den Service Worker für die Anwendung, um Offline-Funktionalität und Ressourcen-Caching zu ermöglichen.
-
Beschreibung:
- Überprüft, ob der Browser Service Worker unterstützt.
- Registriert die
service-worker.js
-Datei beim Laden der Seite.
- Zweck: Caching von Ressourcen zur Unterstützung der Offline-Funktionalität der Anwendung.
-
Beschreibung:
- CACHE_NAME: Name des aktuellen Caches.
- urlsToCache: Liste der URLs, die beim Installieren des Service Workers gecacht werden.
- Install-Event: Cacht die angegebenen URLs und protokolliert Fehler.
- Fetch-Event: Lädt Ressourcen entweder aus dem Cache oder über das Netzwerk.
- Activate-Event: Löscht alte Caches, die nicht mehr in der Whitelist sind.
- Zweck: Haupt-HTML-Datei, die die Benutzeroberfläche der Anwendung definiert.
-
Beschreibung:
-
index.html
enthält die grundlegende Struktur der Anwendung, einschließlich der Einbindung von CSS- und JavaScript-Dateien. -
index.html
definiert die Platzhalter für die verschiedenen UI-Komponenten wie Karten, Buttons und Informationsanzeigen. - Hier werden auch die grundlegenden HTML-Elemente platziert, die für die Interaktivität und Darstellung der Anwendung benötigt werden.
-
- Zweck: Definiert das Design und Layout der Anwendung.
-
Beschreibung:
- Globales Styling: Dunkler Hintergrund für ein modernes und kontrastreiches Design
- Buttons: Runde Ecken, dunkler Hintergrund und weißer Text für einen modernen Button-Stil.
- Kompass & Bilder: Größenanpassungen für Kompass und Icons.
- Geschwindigkeits- & Statistik-Anzeigen: Dunkler Hintergrund, zentrierte Labels und ein Rahmen zur Strukturierung.
- Höhenanzeige: Vertikale Balken mit verschiedenen Farben zur Darstellung der Höhen.
- Toast-Benachrichtigungen: Animierte Pop-up-Benachrichtigungen mit unterschiedlichen Stilen (Information, Erfolg, Warnung, Fehler).
- Zweck: Berechnung und Darstellung der Höhe sowie Verwaltung des vertikalen Geschwindigkeitsverlaufs.
-
Wichtige Funktionen:
-
changeAltitudeIcon(speed)
: Ändert das Höhenanzeigesymbol basierend auf der Geschwindigkeit. -
changeSpeedHistory(speedHistory, speed)
: Verwalten des Verlaufs der vertikalen Geschwindigkeit. -
displayAltidtude(altitude)
: Ausgabe der Höhe. -
displayVerticalSpeed(speed)
: Ausgabe der vertikalen Geschwindigkeit
-
- Zweck: Dieses Modul enthält Funktionen zur Berechnung von Entfernungen und Geschwindigkeiten auf der Karte.
-
Wichtige Funktionen:
-
calculateDistance(lat1, lon1, lat2, lon2)
: Berechnet die Distanz zwischen zwei geografischen Punkten. -
calculateManualSpeed(position, lastPosition, lastTimestamp)
: Berechnet die Geschwindigkeit manuell anhand der Positions- und Zeitdifferenzen. -
displayDistance(distance)
: Ausgabe der zurückgelegten Strecke. -
displaySpeed(speed)
: Ausgabe der horizontalen Geschwindigkeit.
-
- Zweck: Erkennung des Betriebssystems (iOS, Android, etc.), um systemspezifische Funktionen auszuführen.
-
Wichtige Funktionen:
-
getOS()
: Bestimmt das aktuelle Betriebssystem des Benutzers.
-
- Zweck: Funktionen zur Handhabung der Geräteorientierung, um den Kompass entsprechend zu aktualisieren.
-
Wichtige Funktionen:
-
handleOrientationIOS(event)
: Berechnet den Winkel für iOS-Geräte. -
handleOrientationAndroid(event)
: Berechnet den Winkel für Android-Geräte.
-
- Zweck: Verwaltung und Wiedergabe von Audiodateien, abhängig von der vertikalen Geschwindigkeit.
-
Wichtige Funktionen:
-
playSound(profile, audioContext)
: Spielt einen Sound basierend auf dem ausgewählten Soundprofil ab. -
getSoundProfile(choice)
: Liefert das entsprechende Soundprofil basierend auf der Geschwindigkeitsänderung. -
getValueForClimb(data, climbRate)
: Gibt den Wert der Steigrate zurück.
-
-
Zweck: Definition von Soundprofilen für verschiedene Steig- und Sinkraten. Diese Profile werden verwendet, um akustische Rückmeldungen basierend auf der vertikalen Geschwindigkeit des Nutzers zu erzeugen.
-
descentProfile
: Spezifisches Profil für das Sinken. -
ascentProfile
: Spezifisches Profil für das Steigen.
-
- Zweck: Einfache Timerfunktionalität zur Messung von Zeitintervallen.
-
Wichtige Funktionen:
-
start()
: Startet den Timer. -
stop()
: Stoppt den Timer. -
pause()
: Pausiert den Timer.
-
- Zweck: Ausgabe von Toast messages auf dem Bildschirm
-
Wichtige Funktionen:
-
showToast(message, type, duration)
: Darstellung der Nachricht, je nach Typ (Information, Erfolg, Warnung, Fehler).
-
-
Icon
um die Startposition zu Beginn des Fluges darzustellen.
-
Icon
um die aktuelle Position während des Fluges darzustellen.
- kleines Symbol, das in der Adressleiste eines Browsers, auf Tabs und in den Lesezeichen angezeigt wird.
Gleitschirm - Variometer