Bedienoberfläche für Webradio
ulrich
2018-03-25 705e9208a0f23122499ea78595fe542924bd5d8d
commit | author | age
7a416c 1
U 2
3 function Vorlagen() {
4   var self = this;
5   this.cache = {}; // mustache templates
6
7   /*
8     Das HTML erzeugen, das entsteht, wenn eine Vorlage mit Inhalt
9     gefüllt wird
10
11     Das Füllen erfolgt asynchron, d.h. der Programmlauf geht nach dem
12     Aufruf weiter ohne auf das Laden und Füllen der Vorlage zu warten.
13     Das fertige HTML wird der Callback-Funktion übergeben
14     sobald die Vorlage geladen und gefüllt ist, unabhängig davon, wo der
15     Programmlauf zu diesem Zeitpunkt mittlerweile ist.
16
17     vurl - URL zur Vorlagendatei
18     inhalt - die JSON-Struktur, deren Inhalt in die
19               Vorlage gefüllt werden soll
20     cb - Callback-Funktion, die gerufen wird, wenn die Vorlage gefüllt ist.
21           Dieser Callback-Funktion wird das fertige HTML übergeben
22   */
23   this.html_erzeugen = function(vurl, inhalt, cb) {
24     var vorlage = self.cache[vurl];
25     if(vorlage === undefined) {
26       self.vorlage_laden_und_fuellen(vurl, inhalt, cb);
27     } else {
28       self.vorlage_fuellen(vurl, inhalt, cb);
29     }
30   };
31
32   this.vorlage_fuellen = function(vurl, inhalt, cb) {
33     cb(Mustache.render(self.cache[vurl], inhalt));
34   };
35
36   /*
37     Eine Vorlage vom Server in den lokalen Speicher laden
38     vurl - der URL unter dem die Vorlage zu finden ist
39     inhalt - die JSON-Struktur, deren Inhalt in die
40               Vorlage gefüllt werden soll
41     cb - callback: Diese Funktion wird gerufen, wenn die Vorlage mit dem
42             Inhalt gefüllt ist
43   */
44   this.vorlage_laden_und_fuellen = function(vurl, inhalt, cb) {
45     $.ajax({
46       url: vurl,
47       type: "GET",
48       dataType : "text"
49     }).done(function( vorlage ) {
50       self.cache[vurl] = vorlage;
51       self.vorlage_fuellen(vurl, inhalt, cb);
52     });
53   };
54
55 }