Verlaufsverwaltung und Audio

Aufgabe 1: Städteinformationen

Implementieren Sie das Beispiel einer Single-Page-App für Städteinformationen mit Verlaufsverwaltung aus der Vorlesung.

Single Page App
Abb. 1: GUI des Internet-Radios

Das CSS zu dem auf den Vorlesungsfolien angegebenen HTML und JavaScript finden Sie hier.

Starten Sie die Anwendung, klicken Sie die Städte in einer bestimmten Reihenfolge an und probieren Sie danach die Funktion der Vor- und Zurück-Buttons aus. Testen Sie auch das Bookmarking, in dem Sie URLs mit Städtenamen in der Adressleiste des Browsers eingeben.

Deaktivieren Sie den Code für das Routing in der Anwendung. Laden Sie die Anwendung danach neu und probieren Sie wieder die Vor- und Zurück-Buttons aus. Jetzt sollten diese nicht mehr funktionieren. Aktivieren Sie schließlich wieder den Code für das Routing.

Aufgabe 2: Office-App

Implementieren Sie eine Anwendung, in der einige Hilfsmittel unter einer gemeinsamen Bedienoberfläche inklusive Routing bereitgestellt werden.

Erzeugen Sie hierfür eine Kopie der Single-Page-App aus Aufgabe 1 und ersetzen Sie die Funktionen der Reiter durch ein paar Beispielanwendungen, wie z. B. die folgenden:

Damit ergibt sich z. B. folgende Bedienoberfläche:

Single-Page-App: Notizen
Abb. 2: Single-Page-App: Notizen
Single-Page-App: To-Do-Liste
Abb. 3: Single-Page-App: Zeichnen

Das Radio ist Thema der nächsten Übungsaufgabe.

Aufgabe 3: Internet-Radio

Implementieren Sie die in Abb. 4 gezeigte einfache GUI für ein Internet-Radio, bestehend aus einem Textinputfeld für die Senderanzeige sowie fünf Kanalwählern, die als Radio Buttons umgesetzt sind.

GUI des Internetradios
Abb. 4: GUI des Internet-Radios

(Sofern Sie die Bedienelemente mit Flexbox anordnen und mit einem Webkit-Browser arbeiten, wie z. B. Safari, sind für eine korrekte Darstellung und abhängig von der Browserversion zusätzliche CSS-Anweisungen erforderlich. Siehe hierzu den W3Schools-Artikel CSS3 Flexible Box.)

Definieren Sie für das Abspeichern der zu einem Internet-Radiokanal gehörenden Daten eine Konstruktorfunktion function Channel(url, name). Abgespeichert wird jeweils die URL des Streaming-Dienstes sowie der Sendername. Speichern Sie in einem Feld mit dem Namen channelArr neu erzeugte Channel-Objekte für die folgenden Sender ab:

Sendername URL
Jazzloft http://stream.laut.fm/jazzloft
BR Klassik https://dispatcher.rndfnk.com/br/brklassik/live/mp3/mid
Deutschlandfunk https://st01.sslstream.dlf.de/dlf/01/128/mp3/stream.mp3?aggregator=web
Sputnik http://mdr-284330-0.cast.mdr.de/mdr/284330/0/mp3/high/stream.mp3
(Siehe auch m3u-Playlist-Dateien unter
https://www.sputnik.de/service/sputnik-frequenzen--100.html#sprung5)
1Live http://wdr-1live-diggi.icecast.wdr.de/wdr/1live/↵
diggi/mp3/128/stream.mp3

Implementieren Sie für die Radio Buttons einen Ereignisbehandler, z. B. mit dem Namen startAudio(nr). Jeder Radio Button steht für einen der oben angegebenen Sender. Beim Klicken eines Radio Buttons wird die Funktion startAudio(nr) mit der Nummer des zugehörenden Senders aufgerufen. Dabei steht nr für die Nummer des zu diesem Button gehörenden Senderobjekts im channelArr.

In der Funktion startAudio(nr) wird folgendes durchgeführt:

Integrieren Sie das Radio schließlich in die Single-Page-App, sodass sich insgesamt die folgende Bedienoberfläche ergibt:

Single-Page-App: Radio
Abb. 5: Single-Page-App: Radio