ulrich
2018-03-24 0a9af0cd78302f9439dfe9276fce4817d0743fce
commit | author | age
9c2c3c 1 # radio-ui
U 2
3 Eine Bedienoberfläche für Webradio
4
5 ## Funktionen
6
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.
8
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
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).
12
13 ## Protoyp, Demo
14
15 Das radio-ui als einzelne Webanwendung hat prototypischen Charakter, es kann für allerlei Webradio-Anwendungen die wiederverwendbare Grundlage bilden.
16
17 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.
18
19 Der aktuelle Stand des Codes in diesem Repository kann hier ausprobiert werden: [Link zur Demo](/data/ulrich/test/radio-ui).
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.
22
23 ## Abhängigkeiten
24
25 Neben dem Code in diesem Repository sind zur Nutzung des radio-ui die folgenden Komponenten erforderlich
26
27 + [jQuery](http://jquery.com/)
28 + [Mustache](https://github.com/janl/mustache.js)
29 + [app-menu](/gitblit/docs/web!app-menu.git)
30
31 Diese sind in der Datei `index.html` über die folgenden Einträge eingebunden.
32
33 ````
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 ````
39
40 Sollen einzelne Komponenten von einem anderen Ort, beispielsweise aus einem Content Delivery Network (CDN) eingebunden werden, müssen diese Einträge angepasst werden.
41
42 ### Zeichensätze
43
44 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:
45
46 ````
47 /lib/fonts/Amethysta/Amethysta-Regular.ttf
48 /lib/fonts/Oswald/Oswald-Regular.ttf
49 /lib/fonts/Oswald/Oswald-Bold.ttf
50 /lib/fonts/Roboto_Condensed/RobotoCondensed-Regular.ttf
51 /lib/fonts/Roboto_Condensed/RobotoCondensed-Bold.ttf
52 ````
53
54 ### Bilder
55
56 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.
57
58 ## Installation
59
60 Zur Verwendung des radio-ui muss dessen Code mit den Komponenen kombiniert werden, die vom radio-ui benötigt werden.
61
62 1. Code aus diesem Repository herunterladen
63 1. Die unter Abhängigkeiten oben angegebenen Komponenten herunterladen
64 1. Aus den heruntergeladenen Teilen eine Ordnerstruktur bilden
65
66 ````
67 radio-ui/
68   hier der Inhalt aus diesem Repository
69 jslib/
70   jquery-1.11.1/
71     jquery-1.11.1.min.js
72   mustache/
73     mustache.min.js
74   app-menu/
75     hier der Inhalt aus dem app-menu-Repository
76 lib/
77   fonts/
78     Amethysta/
79       Amethysta-Regular.ttf
80     Oswald/
81       Oswald-Regular.ttf
82       Oswald-Bold.ttf
83     Roboto_Condensed/
84       RobotoCondensed-Regular.ttf
85       RobotoCondensed-Bold-ttf
86 bilder/
87   hier Bilder nach Wahl
88 ````
89
90 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.
91
92 ## Noch zu erledigen
93
94 ### Templates für Mustache dynamisch laden
95
96 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
97
98 1. prüft, ob das Template schon im cache ist
99 1. Lädt das Template, wenn nicht
100 1. wartet, bis das Template geladen ist
101 1. rendert das Template mit dem übergebenen Inhalt
102 1. schreibt das Ergebnis ins html des übergebenen Elements
103
104 Der letzte Teil des Ablaufs muss asynchron gefasst sein, damit auf das Laden gewartet werden kann.
105
106 ## Schnittstellenbeschreibung
107
108 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.
109
110 ### Sender
111
112 #### Senderliste lesen
113
114 Aufruf
115
116 ````
117 data/sender.json
118 ````
119
120 Antwort
121
122 ````
123 {
124   "senderliste": {
125     "titel": "Senderliste",
126     "inhalt":  [
127       {
128         "senderid": 1,
129         "sendername": "hr info",
130         "senderurl": "http://hr-hrinfo-live.cast.addradio.de/hr/hrinfo/live/mp3/128/stream.mp3",
131         "senderlogo": "../bilder/hr-info.png"
132       },
133       {
134         "senderid": 2,
135         "sendername": "radiobob",
136         "senderurl": "http://bob.hoerradar.de/radiobob-live-mp3-hq",
137         "senderlogo": "../bilder/radio-bob-logo-80.png"
138       },
139       usw.
140     ]
141   }
142 }
143 ````
144
145 #### Neuen Sender speichern
146
147 Noch nicht realisiert.
148
149 #### Änderungen an einem Sender speichern
150
151 Noch nicht realisiert.
152
153 #### Sender löschen
154
155 Noch nicht realisiert.
156
157 ### Abspieler
158
159 #### Abspielerliste lesen
160
161 Aufruf
162
163 ````
164 data/abspieler.json
165 ````
166
167 Antwort
168
169 ````
170 {
171   "abspielerliste": {
172     "titel": "Abspielerliste",
173     "inhalt":  [
174       {
175         "abspielerid": 1,
176         "abspielername": "dieses Gerät",
177         "abspielerurl": "",
178         "abspielertyp":"lokal",
179         "abspielerbild": "",
180         "abspielerzustand":""
181       },
182       {
183         "abspielerid": 2,
184         "abspielername": "Raspberry Pi Wohnzimmer",
185         "abspielerurl": "",
186         "abspielertyp":"pirc",
187         "abspielerbild": "",
188         "abspielerzustand":"selected"
189       },
190       usw.
191     ]
192   }
193 }
194 ````
195
196 #### Neuen Abspieler speichern
197
198 Noch nicht realisiert.
199
200 #### Änderungen an einem Abspieler speichern
201
202 Noch nicht realisiert.
203
204 #### Abspieler löschen
205
206 Noch nicht realisiert.