# radio-ui
Eine Bedienoberfläche für Webradio
## Funktionen
Das radio-ui zeigt eine Übersicht von Radiosendern. Antippen eines Senders in der Übersicht spielt den [Livestream](/gitblit/doc/web!radio-ui.git/master/radiostreams.md) des Senders ab.
Radiosender können hinzugefügt, geändert und gelöscht werden. Ein Suchfeld ermöglicht das Einschränken der Übersicht auf bestimmte Sender.
Das Abspiel-Ziel ist konfigurierbar: Ein Radionsender kann entweder auf dem Gerät abgespielt werden, auf dem das radio-ui im Browser läuft oder auf einem anderen Gerät wie z.B. einem [Raspberry Pi](/gitblit/doc/web!radio-ui.git/master/pirc.md).
## Protoyp, Demo
Das radio-ui als einzelne Webanwendung hat prototypischen Charakter, es kann für allerlei Webradio-Anwendungen die wiederverwendbare Grundlage bilden.
Als reinem Client-Teil solcher Anwendungen fehlt dem radio-ui ein zentraler Anwendungskern mit Funktionen zum Speichern individueller Einstellungen an einem zentralen Ort. Die Trennung von Client und Server ist bewußt so gewählt, um einen gleichartigen Client-Teil für verschiedene Implementierungen auf der Serverseite zu ermöglichen.
Der aktuelle Stand des Codes in diesem Repository kann hier ausprobiert werden: [Link zur Demo](/data/ulrich/test/radio-ui/index.html).
Code und Demo des radio-ui [veranschaulichen](/gitblit/doc/web!radio-ui.git/master/beispiel.md) zusätzlich zum praktischen Nutzen als Webradiofernbedienung verschiedene Aspekte des Baus von Webanwendungen.
## Abhängigkeiten
Neben dem Code in diesem Repository sind zur Nutzung des radio-ui die folgenden Komponenten erforderlich
+ [jQuery](http://jquery.com/)
+ [Mustache](https://github.com/janl/mustache.js)
+ [app-menu](/gitblit/docs/web!app-menu.git)
Diese sind in der Datei `index.html` über die folgenden Einträge eingebunden.
````
````
Sollen einzelne Komponenten von einem anderen Ort, beispielsweise aus einem Content Delivery Network (CDN) eingebunden werden, müssen diese Einträge angepasst werden.
### Zeichensätze
Neben den obigen Komponenten werden zudem die Zeichensätze `Amethysta`, `Oswald` und `Roboto Condensed` verwendet. Sie können von Google Fonts heruntergeladen werden und sind über das Stylesheet `app.css` von folgenden Orten auf dem Server eingebunden:
````
/lib/fonts/Amethysta/Amethysta-Regular.ttf
/lib/fonts/Oswald/Oswald-Regular.ttf
/lib/fonts/Oswald/Oswald-Bold.ttf
/lib/fonts/Roboto_Condensed/RobotoCondensed-Regular.ttf
/lib/fonts/Roboto_Condensed/RobotoCondensed-Bold.ttf
````
### Bilder
Zu jedem Sender wird an der Bedienoberfläche des radio-ui ein Piktogramm angezeigt. In der Demo des radio-ui ist hierfür der Ordner `bilder` vorgesehen. Prinzipiell kann aber jeder Ablageort für Bilder verwendet werden. Jedem Sender ist ein URL zu einem Bild über die Datei `sender.json` zugeordnet. Der URL für ein Bild kann zur Laufzeit über die Funktion `Sender ändern` geändert werden.
## Installation
Zur Verwendung des radio-ui muss dessen Code mit den Komponenen kombiniert werden, die vom radio-ui benötigt werden.
1. Code aus diesem Repository herunterladen
1. Die unter Abhängigkeiten oben angegebenen Komponenten herunterladen
1. Aus den heruntergeladenen Teilen eine Ordnerstruktur bilden
````
radio-ui/
hier der Inhalt aus diesem Repository
jslib/
jquery-1.11.1/
jquery-1.11.1.min.js
mustache/
mustache.min.js
app-menu/
hier der Inhalt aus dem app-menu-Repository
lib/
fonts/
Amethysta/
Amethysta-Regular.ttf
Oswald/
Oswald-Regular.ttf
Oswald-Bold.ttf
Roboto_Condensed/
RobotoCondensed-Regular.ttf
RobotoCondensed-Bold-ttf
bilder/
hier Bilder nach Wahl
````
Die obige Ordnerstruktur wird auf einem HTTP-Server wie z.B. [Tomcat](https://de.wikipedia.org/wiki/Apache_Tomcat) oder [lighttpd](https://de.wikipedia.org/wiki/Lighttpd) hinterlegt und kann dann mit einem Browser aufgerufen werden.
## Schnittstellenbeschreibung
Für den Prototyp des radio-ui können verschiedene Arten des Umgangs mit Sendern und Abspielern hergestellt werden. Die folgenden Angaben zeigen die Punkte auf, an denen eine konkrete Implementierung ansetzen kann.
### Sender
#### Senderliste lesen
Aufruf
````
data/sender.json
````
Antwort
````
{
"senderliste": {
"titel": "Senderliste",
"inhalt": [
{
"senderid": 1,
"sendername": "hr info",
"senderurl": "http://hr-hrinfo-live.cast.addradio.de/hr/hrinfo/live/mp3/128/stream.mp3",
"senderlogo": "../bilder/hr-info.png"
},
{
"senderid": 2,
"sendername": "radiobob",
"senderurl": "http://bob.hoerradar.de/radiobob-live-mp3-hq",
"senderlogo": "../bilder/radio-bob-logo-80.png"
},
usw.
]
}
}
````
#### Neuen Sender speichern
Noch nicht realisiert.
#### Änderungen an einem Sender speichern
Noch nicht realisiert.
#### Sender löschen
Noch nicht realisiert.
### Abspieler
#### Abspielerliste lesen
Aufruf
````
data/abspieler.json
````
Antwort
````
{
"abspielerliste": {
"titel": "Abspielerliste",
"inhalt": [
{
"abspielerid": 1,
"abspielername": "dieses Gerät",
"abspielerurl": "",
"abspielertyp":"lokal",
"abspielerbild": "",
"abspielerzustand":""
},
{
"abspielerid": 2,
"abspielername": "Raspberry Pi Wohnzimmer",
"abspielerurl": "",
"abspielertyp":"pirc",
"abspielerbild": "",
"abspielerzustand":"selected"
},
usw.
]
}
}
````
#### Neuen Abspieler speichern
Noch nicht realisiert.
#### Änderungen an einem Abspieler speichern
Noch nicht realisiert.
#### Abspieler löschen
Noch nicht realisiert.