From f278ba971e8a814cd0d9ceb1e4ebf77117f48565 Mon Sep 17 00:00:00 2001 From: ulrich <undisclosed> Date: Mon, 08 Mar 2021 15:02:22 +0000 Subject: [PATCH] vorlage.js nach app.js uebertragen, eine einzelne js.-Datei lohnt nicht. --- js/app.js | 71 ++++++++++++++++++++++++++++++++++- 1 files changed, 68 insertions(+), 3 deletions(-) diff --git a/js/app.js b/js/app.js index 8280ca7..4eaffef 100644 --- a/js/app.js +++ b/js/app.js @@ -1,10 +1,13 @@ function AppVorlage() { var self = this; var appMenu; - var vorlagen; + // var vorlagen; + var cache; // mustache templates + this.init = function() { - self.vorlagen = new Vorlagen(); + //self.vorlagen = new Vorlagen(); + self.cache = new Array(); self.appMenu = new AppMenu(); self.appMenu.init( "data/menu/", @@ -116,7 +119,7 @@ this.dialog_zeigen = function(vurl, inhalt) { var dlg = document.querySelector(".dialog"); - self.vorlagen.html_erzeugen( + self.html_erzeugen( vurl, inhalt, function(html) { @@ -137,5 +140,67 @@ dlg.innerHTML = ''; }; + /* Vorlagen */ + + /* + Das HTML erzeugen, das entsteht, wenn eine Vorlage mit Inhalt + gefüllt wird + + Das Füllen erfolgt asynchron, d.h. der Programmlauf geht nach dem + Aufruf weiter ohne auf das Laden und Füllen der Vorlage zu warten. + Das fertige HTML wird der Callback-Funktion übergeben + sobald die Vorlage geladen und gefüllt ist, unabhängig davon, wo der + Programmlauf zu diesem Zeitpunkt mittlerweile ist. + + vurl - URL zur Vorlagendatei + inhalt - die JSON-Struktur, deren Inhalt in die + Vorlage gefüllt werden soll + cb - Callback-Funktion, die gerufen wird, wenn die Vorlage gefüllt ist. + Dieser Callback-Funktion wird das fertige HTML übergeben + */ + this.html_erzeugen = function(vurl, inhalt, cb) { + var vorlage = self.cache[vurl]; + if(vorlage === undefined) { + self.vorlage_laden_und_fuellen(vurl, inhalt, cb); + } else { + self.vorlage_fuellen(vurl, inhalt, cb); + } + }; + + this.vorlage_fuellen = function(vurl, inhalt, cb) { + cb(Mustache.render(self.cache[vurl], inhalt)); + }; + + /* + Eine Vorlage vom Server in den lokalen Speicher laden + vurl - der URL unter dem die Vorlage zu finden ist + inhalt - die JSON-Struktur, deren Inhalt in die + Vorlage gefüllt werden soll + cb - callback: Diese Funktion wird gerufen, wenn die Vorlage mit dem + Inhalt gefüllt ist + */ + this.vorlage_laden_und_fuellen = function(vurl, inhalt, cb) { + /* + $.ajax({ + url: vurl, + type: "GET", + dataType : "text" + }).done(function( vorlage ) { + self.cache[vurl] = vorlage; + self.vorlage_fuellen(vurl, inhalt, cb); + }); + */ + var xmlhttp = new XMLHttpRequest(); + xmlhttp.onreadystatechange = function() { + if (this.readyState == 4 && this.status == 200) { + self.cache[vurl] = this.responseText; + self.vorlage_fuellen(vurl, inhalt, cb); + } + }; + xmlhttp.open("GET", vurl, true); + xmlhttp.send(); + }; + } + -- Gitblit v1.9.3