From c7030d001eafe77660cd18d59b63bf0be9441f10 Mon Sep 17 00:00:00 2001
From: ulrich
Date: Fri, 09 Apr 2021 14:47:03 +0000
Subject: [PATCH] JavaScript Formulare weiter vereinheitlicht

---
 www/ui/js/app.js |   66 ++++++++++++++++++++++++++++++++
 1 files changed, 65 insertions(+), 1 deletions(-)

diff --git a/www/ui/js/app.js b/www/ui/js/app.js
index c13a6b1..f4aaa0e 100644
--- a/www/ui/js/app.js
+++ b/www/ui/js/app.js
@@ -141,9 +141,16 @@
       });
   };
   
-  /* -------------------- Entitaets-Formulare ------------------ */
+  /* -------------------- Entitaets-Formulare ------------------ */  
   
   this.abspielliste_form = function(al) {
+    self.entitaet_form(al, al.name,
+      "data/tpl/form_abspielliste.tpl", '../api/store/Abspielliste/',
+      '#abspielliste-name', function() { 
+          self.abspielliste_auswahl_fuellen();
+          self.abspielliste_liste();
+    });
+    /*
     self.vorlage_laden_und_fuellen("data/tpl/form_abspielliste.tpl", al, function (html) {
       document.querySelector(".zentraler-inhalt").innerHTML = html;
       const form = document.querySelector('form');      
@@ -165,9 +172,17 @@
         });
       });
     });
+    */
   };
   
   this.abspieler_form = function(pl) {
+    self.entitaet_form(pl, pl.key,
+      "data/tpl/form_abspieler.tpl", '../api/store/Abspieler/',
+      '#abspieler-name', function() { 
+          self.abspieler_auswahl_fuellen();
+          self.abspieler_liste();
+    });
+    /*
     self.vorlage_laden_und_fuellen("data/tpl/form_abspieler.tpl", pl, function (html) {
       document.querySelector(".zentraler-inhalt").innerHTML = html;
       const form = document.querySelector('form');      
@@ -189,9 +204,16 @@
         });
       });
     });
+    */
   };
 
   this.prefs_form = function(k) {
+    self.entitaet_form(k, k.key,
+      "data/tpl/form_einstellung.tpl", '../api/store/Einstellung/',
+      '#einstellung-key', function() { 
+          self.prefs_liste();
+    });
+    /*
     self.vorlage_laden_und_fuellen("data/tpl/form_einstellung.tpl", k, function (html) {
       document.querySelector(".zentraler-inhalt").innerHTML = html;
       const form = document.querySelector('form');      
@@ -212,6 +234,7 @@
         });
       });
     });
+    */
   };
 
   /* 
@@ -223,6 +246,12 @@
    * @returns {undefined} kein Rueckgabewert
    */
   this.ablageort_form = function(ort) {
+    self.entitaet_form(ort, ort.name,
+      "data/tpl/form_ablageort.tpl", '../api/store/Ablageort/',
+      '#ablageort-name', function() { 
+        self.ablageort_liste();
+    });
+    /*
     self.vorlage_laden_und_fuellen("data/tpl/form_ablageort.tpl", ort, function (html) {
       document.querySelector(".zentraler-inhalt").innerHTML = html;
       const form = document.querySelector('form');      
@@ -242,6 +271,7 @@
         });
       });
     });
+    */
   };
   
   /* ------------------------------- UI-Dynamik ----------------------- */
@@ -348,6 +378,40 @@
   };  
       
   /*
+   * dat: gefuelltes Datenobjekt bei Aenderung
+   * key: der alte schluesselbegriff bei Aenderung (z.B. al.name)
+   * tpl: "data/tpl/form_abspielliste.tpl"
+   * url: '../api/store/Abspielliste/'
+   * selector: '#abspielliste-name'
+   * cbOk: etwas wie
+   *    function() {
+   *       self.abspielliste_auswahl_fuellen();
+   *       self.abspielliste_liste();
+   *     });
+   * delSelector: '#abspielliste-name'
+   * cbDel: etwas wie
+   *    function() {
+   *       self.abspielliste_auswahl_fuellen();
+   *       self.abspielliste_liste();
+   *     });
+   */
+
+  this.entitaet_form = function(dat, key, tpl, url, selector, cb) {
+    self.vorlage_laden_und_fuellen(tpl, dat, function (html) {
+      document.querySelector(".zentraler-inhalt").innerHTML = html;
+      const form = document.querySelector('form');      
+      form.addEventListener('submit', function(event) {
+        self.handle_submit(event, key, url, selector, cb);
+      });
+      self.addEvtListener('#cancel-btn', 'click', cb);
+      self.addEvtListener('#loeschen-btn', 'click', function(event) {
+        event.preventDefault();
+        self.handle_del_btn(selector, url, cb);
+      });
+    });
+  };
+  
+  /*
    * existingKey: wenn die Entitaet existiert und geandert werden soll
    *                 leer, wenn neue Entitaet 
    */

--
Gitblit v1.9.3