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