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 |
|
ad26f7
|
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. |
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 |
|
c2f17b
|
62 |
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. |
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. |