From ee378724076ae6917f9c75c329d7ff7c390b8f03 Mon Sep 17 00:00:00 2001
From: ulrich <undisclosed>
Date: Fri, 13 Dec 2019 17:26:19 +0000
Subject: [PATCH] jQuery entfernen weiter in Arbeit

---
 app.js                     |   60 ++++++++-------
 jslib/app-menu/app-menu.js |  144 +++++++++++++++++------------------
 app.css                    |    2 
 3 files changed, 103 insertions(+), 103 deletions(-)

diff --git a/app.css b/app.css
index 342caad..5827ce8 100644
--- a/app.css
+++ b/app.css
@@ -86,6 +86,8 @@
 
 .dialog {
   position: relative;
+  /* height: 0.1em; */
+  transition: all 0.3s ease-in;
 }
 
 .dlg-behaelter {
diff --git a/app.js b/app.js
index 4671102..ae373f9 100644
--- a/app.js
+++ b/app.js
@@ -12,7 +12,7 @@
       "jslib/app-menu/app-menu.tpl",
       ".west",
       "8em");
-	  
+
 	document.querySelector('.hamburger').addEventListener('click', function(e) {
       self.menue_umschalten();
     });
@@ -20,8 +20,8 @@
   };
 
   this.menue_umschalten = function() {
-	var ham = document.querySelector(".hamburger");
-	ham.classList.toggle("is-active"); // hamburger-icon umschalten
+    var ham = document.querySelector(".hamburger");
+    ham.classList.toggle("is-active"); // hamburger-icon umschalten
     self.appMenu.toggle(); // menue oeffnen/schliessen
   };
 
@@ -34,10 +34,10 @@
     var ostDiv = document.querySelector('.ost');
     if(ostDiv.classList.contains('ost-open')) {
       ostDiv.classList.remove('ost-open');
-	  ostDiv.style.flexBasis = '0em';
+  	  ostDiv.style.flexBasis = '0em';
     } else {
-	  ostDiv.classList.add('ost-open');
-	  ostDiv.style.flexBasis = '6em';
+  	  ostDiv.classList.add('ost-open');
+  	  ostDiv.style.flexBasis = '6em';
     }
     self.menue_umschalten();
   };
@@ -46,10 +46,10 @@
     var suedDiv = document.querySelector('.sued');
     if(suedDiv.classList.contains('sued-open')) {
       suedDiv.classList.remove('sued-open');
-	  suedDiv.style.height = '0';
+	    suedDiv.style.height = '0';
     } else {
       suedDiv.classList.add('sued-open');
-	  suedDiv.style.height = '1.5em';
+	    suedDiv.style.height = '1.5em';
     }
     self.menue_umschalten();
   };
@@ -60,7 +60,7 @@
     if(suedDiv.classList.contains('sued-open')) {
     } else {
       suedDiv.classList.add('sued-open');
-	  suedDiv.style.height = '1.5em';
+	    suedDiv.style.height = '1.5em';
     }
     self.menue_umschalten();
   };
@@ -79,14 +79,14 @@
 
   this.meldung_mit_timeout = function(meldung, timeout) {
     var s = document.querySelector('.sued');
-    s.text(meldung);
+    s.textContent = meldung;
     setTimeout(function() {
-      s.text('Bereit.');
+      s.textContent = 'Bereit.';
       setTimeout(function() {
         var suedDiv = document.querySelector('.sued');
         if(suedDiv.classList.contains('sued-open')) {
-		  suedDiv.classList.remove('sued-open');
-		  suedDiv.style.height = '0';
+    		  suedDiv.classList.remove('sued-open');
+    		  suedDiv.style.height = '0';
         }
       }, 500);
     }, timeout);
@@ -102,35 +102,39 @@
   */
   this.dialog_laden_und_zeigen = function(vurl, msgTpl) {
     if(msgTpl !== '') {
-      $.ajax({
-        url: msgTpl,
-        type: "GET",
-        dataType : "json"
-      }).done(function( msg ) {
-        self.dialog_zeigen(vurl, msg);
-      });
+      fetch(msgTpl)
+        .then(data => {
+          // Handle data
+          self.dialog_zeigen(vurl, data);
+        }).catch(error => {
+          // Handle error
+        });
     } else {
       self.dialog_zeigen(vurl, '');
     }
   };
 
   this.dialog_zeigen = function(vurl, inhalt) {
-    var dlg = $(".dialog");
+    var dlg = document.querySelector(".dialog");
     self.vorlagen.html_erzeugen(
       vurl,
       inhalt,
       function(html) {
-        dlg.html(html);
-        $(".close-btn").on('click', function() {
-          self.dialog_schliessen();
-        });
-        dlg.slideDown(300);
+        //dlg.html(html);
+        dlg.style.height = '5em';
+        dlg.innerHTML = html;
+        document.querySelector('.close-btn').addEventListener('click', self.dialog_schliessen);
+        //dlg.slideDown(300);
     });
   };
 
   self.dialog_schliessen = function() {
-    $('.close-btn').off('click');
-    $('.dialog').slideUp(300);
+    document.querySelector('.close-btn').removeEventListener('click', self.dialog_schliessen);
+    //$('.dialog').slideUp(300);
+    var dlg = document.querySelector('.dialog');
+    //dlg.style.display = "none";
+    dlg.style.height = '0';
+    dlg.innerHTML = '';
   };
 
 
diff --git a/jslib/app-menu/app-menu.js b/jslib/app-menu/app-menu.js
index 1d1a0ce..62c4760 100644
--- a/jslib/app-menu/app-menu.js
+++ b/jslib/app-menu/app-menu.js
@@ -15,38 +15,45 @@
     /*document.querySelector( "#nav-toggle" ).addEventListener("click", function() {
       app_menu_toggle();
     });*/
-    $(self._app_menu_selector).css("flex-basis", "0em");
+    var menu = document.querySelector(self._app_menu_selector);
+    menu.style.flexBasis = '0em';
     self._app_menu_url_prefix = url_prefix;
-    $.get(mtpl, function(template) {
-      self._app_menu_template = template;
-      Mustache.parse(self._app_menu_template);   // optional, speeds up future uses
-      var menuDiv = $("<div/>");
-      $(menuDiv).addClass('app-menu-content');
-      $(menuDiv).css('position', "relative");
-      $(menuDiv).css('left', '-300px');
-      $(menuDiv).css('right', '0px');
-      $(self._app_menu_selector).append(menuDiv);
 
-      self.app_menu_laden(mdesc);
+    var request = new XMLHttpRequest();
+    request.open("GET", mtpl);
+    request.addEventListener('load', function(event) {
+       if (request.status >= 200 && request.status < 300) {
+          //console.log(request.responseText);
+          self._app_menu_template = request.responseText;
+          Mustache.parse(self._app_menu_template);   // optional, speeds up future uses
+          var menuDiv = document.createElement("div");
+          menuDiv.classList.add('app-menu-content');
+          menuDiv.style.position = 'relative';
+          menuDiv.style.left = '-300px';
+          menuDiv.style.right = '0px';
+          menu.appendChild(menuDiv);
+
+          self.app_menu_laden(mdesc);
+       } else {
+          console.warn(request.statusText, request.responseText);
+       }
     });
+    request.send();
+
   };
 
   this.app_menu_do_toggle = function(elem) {
-    /*document.querySelector( "#nav-toggle" ).classList.toggle( "active" );
-    document.querySelector( "#nav-toggle" ).blur();*/
     self.toggle();
   };
 
   this.toggle = function() {
-    /*document.querySelector( "#nav-toggle" ).classList.toggle( "active" );
-    document.querySelector( "#nav-toggle" ).blur();*/
-    var menuDiv = $(self._app_menu_selector);
-    if($(menuDiv).hasClass('app-menu-open')) {
-      $(menuDiv).removeClass('app-menu-open');
-      $(menuDiv).css("flex-basis", "0em");
+    var menuDiv = document.querySelector(self._app_menu_selector);
+    if(menuDiv.classList.contains('app-menu-open')) {
+      menuDiv.classList.remove('app-menu-open');
+      menuDiv.style.flexBasis = '0em';
     } else {
-      $(menuDiv).addClass('app-menu-open');
-      $(menuDiv).css("flex-basis", self._app_menu_mbreite); // z.B. "16em"
+      menuDiv.classList.add('app-menu-open');
+      menuDiv.style.flexBasis = self._app_menu_mbreite;
     }
   };
 
@@ -59,66 +66,34 @@
    * mdesc: der URL einer JSON-Datei mit einer Menuebeschreibung
    */
   this.app_menu_laden = function(mdesc, richtung) {
-    $.ajax({
-      url: self._app_menu_url_prefix + mdesc,
-      type: "GET",
-      dataType : "json"
-    }).done(function( json ) {
-      self.app_menu_bauen(json, richtung);
-    });
+    var xmlhttp = new XMLHttpRequest();
+    var url = self._app_menu_url_prefix + mdesc;
+    xmlhttp.onreadystatechange = function() {
+      if (this.readyState == 4 && this.status == 200) {
+        self.app_menu_bauen(JSON.parse(this.responseText), richtung);
+      }
+    };
+    xmlhttp.open("GET", url, true);
+    xmlhttp.send();
   };
 
   this.app_menu_bauen = function(menuejs, richtung) {
+    var menuDiv = document.createElement("div");
+    menuDiv.classList.add('app-menu-content');
+    menuDiv.style.position = 'relative';
+    menuDiv.innerHTML = Mustache.render(self._app_menu_template, menuejs);
 
-    // Endposition des bestehenden Menues beim Wechsel herauf
-    var linksEndeAlt = "500px";
-    var rechtsEndeAlt = "600px";
-    // Anfangsposition des neuen Menues beim Wechsel herauf
-    var linksAnfangNeu = "-300px";
-    var rechtsAnfangNeu = "-1px";
-    // Endposition des neuen Menues beim Wechsel herauf
-    var linksEndeNeu = "0px";
-    var rechtsEndeNeu = "300px";
+    self.app_menu_remove_event_listener_multi('.smenu', 'click', self.app_menu_klick_herunter);
+    self.app_menu_remove_event_listener_multi('.bitem', 'click', self.app_menu_klick_herauf);
+    self.app_menu_remove_event_listener_multi('.mitem', 'click', self.app_menu_ausfuehren);
 
-    if(richtung === 'herunter') {
-      // Endposition des bestehenden Menues beim Wechsel herunter
-      linksEndeAlt = "-300px";
-      rechtsEndeAlt = "-1px";
-      // Anfangsposition des neuen Menues beim Wechsel herunter
-      linksAnfangNeu = "500px";
-      rechtsAnfangNeu = "600px";
-      // Endposition des neuen Menues beim Wechsel herunter
-      linksEndeNeu = "0px";
-      rechtsEndeNeu = "300px";
-    }
+    var menu = document.querySelector(self._app_menu_selector);
+    menu.innerHTML = '';
+    menu.append(menuDiv);
 
-    var menuDiv = $("<div/>");
-    $(menuDiv).addClass('app-menu-content');
-
-    $(menuDiv).css('position', "relative");
-    $(menuDiv).css('left', linksAnfangNeu);
-    $(menuDiv).css('right', rechtsAnfangNeu);
-    $(menuDiv).html(Mustache.render(self._app_menu_template, menuejs));
-
-    $('.app-menu-content').delay(100).animate(
-      {left: linksEndeAlt },
-      100,
-      function() {
-        $('.smenu').attr('onclick','').unbind('click');
-        $('.bitem').attr('onclick','').unbind('click');
-        $('.mitem').attr('onclick','').unbind('click');
-        $(self._app_menu_selector).empty();
-
-        $(self._app_menu_selector).append(menuDiv);
-        $('.smenu').on('click', self.app_menu_klick_herunter);
-        $('.bitem').on('click', self.app_menu_klick_herauf);
-        $('.mitem').on('click', self.app_menu_ausfuehren);
-
-        $('.app-menu-content').delay(100).animate({left: linksEndeNeu });
-        $('.app-menu-content').animate({right: rechtsEndeNeu });
-      }
-    );
-    $('.app-menu-content').animate({right: rechtsEndeAlt });
+    self.app_menu_add_event_listener_multi('.smenu', 'click', self.app_menu_klick_herunter);
+    self.app_menu_add_event_listener_multi('.bitem', 'click', self.app_menu_klick_herauf);
+    self.app_menu_add_event_listener_multi('.mitem', 'click', self.app_menu_ausfuehren);
   };
 
   this.app_menu_klick_herunter = function() {
@@ -134,4 +109,23 @@
     eval(functionName + "(this)");
   };
 
+  /* --- Helferlein ---*/
+  /*
+    sel - '.smenu'
+    evt - 'click' fuer onclick
+    func - der verweis auf die funktion
+  */
+  this.app_menu_remove_event_listener_multi = function(sel, evt, func) {
+    var elem = document.querySelectorAll(sel);
+    for (var index = 0; index < elem.length; index++) {
+      elem[index].removeEventListener(evt, func);
+    }
+  };
+
+  this.app_menu_add_event_listener_multi = function(sel, evt, func) {
+    var elem = document.querySelectorAll(sel);
+    for (var index = 0; index < elem.length; index++) {
+      elem[index].addEventListener(evt, func);
+    }
+  };
 }

--
Gitblit v1.9.3