ulrich
2019-12-15 8ca5e8bfa494ec9af80b58b96cbf3e86f7a340ee
commit | author | age
34aa39 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) {
5ebc23 45     /*
34aa39 46     $.ajax({
U 47       url: vurl,
48       type: "GET",
49       dataType : "text"
50     }).done(function( vorlage ) {
51       self.cache[vurl] = vorlage;
52       self.vorlage_fuellen(vurl, inhalt, cb);
53     });
5ebc23 54     */
U 55     var xmlhttp = new XMLHttpRequest();
56     xmlhttp.onreadystatechange = function() {
57       if (this.readyState == 4 && this.status == 200) {
58         self.cache[vurl] = this.responseText;
59         self.vorlage_fuellen(vurl, inhalt, cb);
60       }
61     };
62     xmlhttp.open("GET", vurl, true);
63     xmlhttp.send();
34aa39 64   };
U 65
66 }