Bedienoberfläche für Webradio
ulrich
2018-01-27 175e8364673f5713c1fdfee2681bef15d5091849
commit | author | age
623a61 1 # radio-ui
U 2
3 Eine Bedienoberfläche für Webradio
851c9c 4
175e83 5 ## Funktionen
ad1fef 6
fd8a6a 7 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.
ad1fef 8
U 9 Radiosender können hinzugefügt, geändert und gelöscht werden. Ein Suchfeld ermöglicht das Einschränken der Übersicht auf bestimmte Sender.
10
fd8a6a 11 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).
ad1fef 12
175e83 13 ## Protoyp, Demo
8d53d7 14
175e83 15 Das radio-ui als einzelne Webanwendung hat prototypischen Charakter, es kann für allerlei Webradio-Anwendungen die wiederverwendbare Grundlage bilden.
8d53d7 16
175e83 17 Als reinem Client-Teil solcher Anwendungen fehlt dem radio-ui ein zentraler Anwendungskern mit Funktionen zum Ändern und Speichern individueller Einstellungen für Radionsender und Abspieler 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.
8d53d7 18
175e83 19 Der aktuelle Stand des Codes in diesem Repository kann hier ausprobiert werden: [Link zur Demo](/data/ulrich/test/radio-ui).
U 20
21 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.
8d53d7 22
36646e 23 ## Abhängigkeiten
f927ec 24
175e83 25 Neben dem Code in diesem Repository sind zur Nutzung des radio-ui die folgenden Komponenten erforderlich
f927ec 26
36646e 27 + [jQuery](http://jquery.com/)
U 28 + [Mustache](https://github.com/janl/mustache.js)
29 + [app-menu](/gitblit/docs/web!app-menu.git)
f927ec 30
36646e 31 Diese sind in der Datei `index.html` über die folgenden Einträge eingebunden.
f927ec 32
36646e 33 ````
U 34 <link rel="stylesheet" type="text/css" href="../jslib/app-menu/app-menu.css">
35 <script src="../jslib/jquery-1.11.1/jquery-1.11.1.min.js"></script>
36 <script src="../jslib/mustache/mustache.min.js"></script>
37 <script src="../jslib/app-menu/app-menu.js"></script>
38 ````
851c9c 39
175e83 40 Sollen einzelne Komponenten von einem anderen Ort, beispielsweise aus einem Content Delivery Network (CDN) eingebunden werden, müssen die obigen Einträge entsprechend angepasst werden.
851c9c 41
175e83 42 ## Installation
fe1cb2 43
175e83 44 Zur Verwendung des radio-ui muss dessen Code mit den Komponenen kombiniert werden, die vom radio-ui benötigt werden.
fe1cb2 45
175e83 46 1. Code aus diesem Repository herunterladen
U 47 1. Die unter Abhängigkeiten oben angegebenen Komponenten Herunterladen
48 1. Aus den heruntergeladenen Teilen eine Ordnerstruktur bilden
49
50 ````
51 radio-ui/
52   hier der Inhalt aus diesem Repository
53 jslib/
54   jquery-1.11.1/
55     jquery-1.11.1.min.js
56   mustache/
57     mustache.min.js
58   app-menu/
59     hier der Inhalt aus dem app-menu-Repository
60 ````
61
62 Die obige Ordnerstruktur wird auf einem HTTP-Server wie z.B. [Tomcat](https://de.wikipedia.org/wiki/Apache_Tomcat) oder [lighttpd](http://www.lighttpd.net/) hinterlegt und kann dann mit einem Browser aufgerufen werden.
576085 63
fd8a6a 64 ## Noch zu erledigen
U 65
66 ### Templates für Mustache dynamisch laden
67
68 Spart Ladezeit zu Beginn. Lösungsansatz: Eine Funktion, die als Parameter das Element erhält, dessen html mit dem gerenderten Template ersetzt werden soll und den zu rendernden Inhalt. Die dynamische Ladefunktion
69
70 1. prüft, ob das Template schon im cache ist
71 1. Lädt das Template, wenn nicht
72 1. wartet, bis das Template geladen ist
73 1. rendert das Template mit dem übergebenen Inhalt
74 1. schreibt das Ergebnis ins html des übergebenen Elements
75
76 Der letzte Teil des Ablaufs muss asynchron gefasst sein, damit auf das Laden gewartet werden kann.
77
576085 78 ## Schnittstellenbeschreibung
U 79
6a62bd 80 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.
576085 81
6a62bd 82 ### Sender
U 83
84 #### Senderliste lesen
576085 85
U 86 Aufruf
068ce7 87
576085 88 ````
U 89 data/sender.json
90 ````
91
92 Antwort
068ce7 93
576085 94 ````
U 95 {
96   "senderliste": {
97     "titel": "Senderliste",
98     "inhalt":  [
99       {
100         "senderid": 1,
101         "sendername": "hr info",
102         "senderurl": "http://hr-hrinfo-live.cast.addradio.de/hr/hrinfo/live/mp3/128/stream.mp3",
103         "senderlogo": "../bilder/hr-info.png"
104       },
105       {
106         "senderid": 2,
107         "sendername": "radiobob",
108         "senderurl": "http://bob.hoerradar.de/radiobob-live-mp3-hq",
109         "senderlogo": "../bilder/radio-bob-logo-80.png"
110       },
111       usw.
112     ]
113   }
114 }
115 ````
116
6a62bd 117 #### Neuen Sender speichern
576085 118
U 119 Noch nicht realisiert.
120
6a62bd 121 #### Änderungen an einem Sender speichern
576085 122
U 123 Noch nicht realisiert.
124
6a62bd 125 #### Sender löschen
U 126
127 Noch nicht realisiert.
128
129 ### Abspieler
130
131 #### Abspielerliste lesen
132
133 Aufruf
134
135 ````
136 data/abspieler.json
137 ````
138
139 Antwort
140
141 ````
142 {
143   "abspielerliste": {
144     "titel": "Abspielerliste",
145     "inhalt":  [
146       {
147         "abspielerid": 1,
148         "abspielername": "dieses Gerät",
149         "abspielerurl": "",
150         "abspielertyp":"lokal",
151         "abspielerbild": "",
152         "abspielerzustand":""
153       },
154       {
155         "abspielerid": 2,
156         "abspielername": "Raspberry Pi Wohnzimmer",
157         "abspielerurl": "",
158         "abspielertyp":"pirc",
159         "abspielerbild": "",
160         "abspielerzustand":"selected"
161       },
162       usw.
163     ]
164   }
165 }
166 ````
167
168 #### Neuen Abspieler speichern
169
170 Noch nicht realisiert.
171
172 #### Änderungen an einem Abspieler speichern
173
174 Noch nicht realisiert.
175
176 #### Abspieler löschen
576085 177
U 178 Noch nicht realisiert.