ulrich
2018-03-24 d166463aa463122d2387b05e8f4bfe82fe2ad104
commit | author | age
d16646 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 }