From e44ed0d9811b0c53b3288c54d15e2f68b8d650ed Mon Sep 17 00:00:00 2001
From: ulrich
Date: Fri, 09 Apr 2021 14:09:45 +0000
Subject: [PATCH] Entitaetslisten vereinheitlicht

---
 www/ui/js/app.js |   95 +++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 79 insertions(+), 16 deletions(-)

diff --git a/www/ui/js/app.js b/www/ui/js/app.js
index 7a903d3..6c6d41b 100644
--- a/www/ui/js/app.js
+++ b/www/ui/js/app.js
@@ -105,25 +105,43 @@
     }
   };
   
-  this.addSelectedTitel = function() {
-    var elem = document.querySelector(".selected");
-    var titelName = elem.textContent;
-    var album = elem.attributes.album.nodeValue;
-    var interpret = elem.attributes.interpret.nodeValue;
-    var anzName = elem.attributes.titelAnzName.nodeValue;
-    var titel;
-    if(self.mediaPfad.endsWith('/')) {
-      titel = new Titel(titelName, self.mediaPfad, self.ortPfad, interpret, anzName, album);
-    } else {
-      titel = new Titel(titelName, self.mediaPfad + '/', self.ortPfad, interpret, anzName, album);
-    }
-    var plname = document.querySelector('#playlist').value;
-    self.http_put('../api/alist/' + plname, JSON.stringify(titel), function(responseText) {
-      self.meldung_mit_timeout(responseText, 1500);
+  /*
+   * url: '../api/store/Ablageort/liste/'
+   * tpl: "data/tpl/ablageort_liste.tpl"
+   * storeUrl: '../api/store/Ablageort/'
+   * formFunc: "self.ablageort_form"
+   * cb: etwas wie
+   * 
+   * function(responseText){
+   *   var ablageort = JSON.parse(responseText);
+   *   self.ablageort_form(ablageort);
+   * });
+   */
+  this.entitaet_liste = function(listUrl, tpl, storeUrl, formFunc, cb) {
+    self.reset_top_buttons();
+    self.http_get(listUrl, function (responseText) {
+      self.vorlage_laden_und_fuellen(tpl, JSON.parse(responseText), function (html) {
+        document.querySelector(".zentraler-inhalt").innerHTML = html;
+        self.addEvtListener('.entity-eintrag', 'click', function (event) {
+          var t = event.target;
+          self.http_get(storeUrl + t.textContent, cb);
+        });
+        //self.addEvtListener('#neu-btn', 'click', function (event) {
+        self.addEvtListener('#top-neu-btn', 'click', function(event) {
+          eval(formFunc + "(this)");
+        });        
+      });
     });
   };
-
+  
   this.ablageort_liste = function() {
+    self.entitaet_liste('../api/store/Ablageort/liste/', 
+      "data/tpl/ablageort_liste.tpl", '../api/store/Ablageort/', 
+      "self.ablageort_form", function(responseText) {
+        var ablageort = JSON.parse(responseText);
+        self.ablageort_form(ablageort);
+      });
+    /*
     self.reset_top_buttons();
     self.http_get('../api/store/Ablageort/liste/', function (responseText) {
       self.vorlage_laden_und_fuellen("data/tpl/ablageort_liste.tpl", JSON.parse(responseText), function (html) {
@@ -141,9 +159,17 @@
         });        
       });
     });
+    */
   };
 
   this.prefs_liste = function() {
+    self.entitaet_liste('../api/store/Einstellung/liste/', 
+      "data/tpl/einstellung_liste.tpl", '../api/store/Einstellung/', 
+      "self.prefs_form", function(responseText) {
+        var einstellung = JSON.parse(responseText);
+        self.prefs_form(einstellung);
+      });
+    /*
     self.reset_top_buttons();
     self.http_get('../api/store/Einstellung/liste/', function (responseText) {
       self.vorlage_laden_und_fuellen("data/tpl/einstellung_liste.tpl", JSON.parse(responseText), function (html) {
@@ -160,9 +186,17 @@
         });        
       });
     });
+    */
   };
 
   this.abspieler_liste = function() {
+    self.entitaet_liste('../api/store/Abspieler/liste/', 
+      "data/tpl/abspieler_liste.tpl", '../api/store/Abspieler/', 
+      "self.abspieler_form", function(responseText) {
+        var abspieler = JSON.parse(responseText);
+        self.abspieler_form(abspieler);
+      });
+    /*
     self.http_get('../api/store/Abspieler/liste/', function (responseText) {
       self.vorlage_laden_und_fuellen("data/tpl/abspieler_liste.tpl", JSON.parse(responseText), function (html) {
         document.querySelector(".zentraler-inhalt").innerHTML = html;
@@ -179,9 +213,17 @@
         });           
       });
     });
+    */
   };
   
   this.abspielliste_liste = function() {
+    self.entitaet_liste('../api/store/Abspielliste/liste/', 
+      "data/tpl/abspielliste_liste.tpl", '../api/store/Abspielliste/', 
+      "self.abspielliste_form", function(responseText) {
+        var abspielliste = JSON.parse(responseText);
+        self.abspielliste_form(abspielliste);
+      });
+    /*
     self.http_get('../api/store/Abspielliste/liste/', function (responseText) {
       self.vorlage_laden_und_fuellen("data/tpl/abspielliste_liste.tpl", JSON.parse(responseText), function (html) {
         document.querySelector(".zentraler-inhalt").innerHTML = html;
@@ -197,6 +239,7 @@
         });            
       });
     });
+    */
   };
   
   /* -------------------- Entitaets-Formulare ------------------ */
@@ -207,6 +250,7 @@
       const form = document.querySelector('form');      
       form.addEventListener('submit', function(event) {
         self.handle_submit(event, al.name, '../api/store/Abspielliste/', '#abspielliste-name', function() {
+          self.abspielliste_auswahl_fuellen();
           self.abspielliste_liste();
         });
       });
@@ -230,6 +274,7 @@
       const form = document.querySelector('form');      
       form.addEventListener('submit', function(event) {
         self.handle_submit(event, pl.key, '../api/store/Abspieler/', '#abspieler-name', function() {
+          self.abspieler_auswahl_fuellen();
           self.abspieler_liste();
         });
       });
@@ -324,6 +369,24 @@
     });
   };
   
+  this.addSelectedTitel = function() {
+    var elem = document.querySelector(".selected");
+    var titelName = elem.textContent;
+    var album = elem.attributes.album.nodeValue;
+    var interpret = elem.attributes.interpret.nodeValue;
+    var anzName = elem.attributes.titelAnzName.nodeValue;
+    var titel;
+    if(self.mediaPfad.endsWith('/')) {
+      titel = new Titel(titelName, self.mediaPfad, self.ortPfad, interpret, anzName, album);
+    } else {
+      titel = new Titel(titelName, self.mediaPfad + '/', self.ortPfad, interpret, anzName, album);
+    }
+    var plname = document.querySelector('#playlist').value;
+    self.http_put('../api/alist/' + plname, JSON.stringify(titel), function(responseText) {
+      self.meldung_mit_timeout(responseText, 1500);
+    });
+  };  
+  
   /* Unterer Einblendbereich */
   
   this.dialog_unten_zeigen = function() {

--
Gitblit v1.9.3