From dfb7d34f88efbb3eb7632ae628ccfd4576824477 Mon Sep 17 00:00:00 2001
From: ulrich
Date: Thu, 08 Apr 2021 10:37:10 +0000
Subject: [PATCH] REST-Konformitaet des StorageHandler verbessert

---
 www/ui/js/app.js |   87 ++++++++++++++++++++++++-------------------
 1 files changed, 49 insertions(+), 38 deletions(-)

diff --git a/www/ui/js/app.js b/www/ui/js/app.js
index 12a6b1e..02cf400 100644
--- a/www/ui/js/app.js
+++ b/www/ui/js/app.js
@@ -74,18 +74,35 @@
       });
     } else {
       // Pfad listen
-      self.http_get('..' + self.ortPfad + '/' + self.mediaPfad + '/', function(responseText) {
+      // console.log("vorher ortPfad: " + self.ortPfad);
+      //console.log("vorher mediaPfad: " + self.mediaPfad);
+      //self.http_get('..' + self.ortPfad + '/' + self.mediaPfad + '/', function(responseText) {
+      var url = '..' + self.ortPfad + self.mediaPfad;
+      if(!url.endsWith('/')) {
+        url = url + '/';
+      }
+      //console.log("url: " + url);      
+      self.http_get(url, function(responseText) {
         //console.log(responseText);
         self.vorlage_laden_und_fuellen("data/tpl/katalog_inhalt_liste.tpl", JSON.parse(responseText), function (html) {
           document.querySelector(".zentraler-inhalt").innerHTML = html;
+          //console.log("mediaPfad bei Anzeige: " + self.mediaPfad);
           self.addEvtListener('.entity-eintrag', 'click', function (event) {
             var t = event.target;
-            //console.log(t.textContent);
+            var tx = t.textContent;
+            //console.log("tx: " + tx);
+            //console.log("mediaPfad nach Auswahl: " + self.mediaPfad);
             if(t.classList.contains("entity-typ-folder")) {
-              self.mediaPfad = self.mediaPfad + '/' + t.textContent;
+              if(self.mediaPfad.endsWith('/')) {
+                self.mediaPfad = self.mediaPfad + tx;                
+              } else {
+                self.mediaPfad = self.mediaPfad + '/' + tx;
+              }
+              //self.mediaPfad = self.mediaPfad + t.textContent;
+              //console.log("mediaPfad neu: " + self.mediaPfad);
               self.media_liste();
             } else {
-              console.log("Media-Inhalt auswaehlen oder abspielen");
+              //console.log("Media-Inhalt auswaehlen oder abspielen");
               self.removeClassMulti('selected');
               t.classList.add('selected');
             }
@@ -95,7 +112,12 @@
               self.ortPfad = '/';              
             } else {
               var pos = self.mediaPfad.lastIndexOf('/');
-              var parent = self.mediaPfad.substring(0, pos);
+              var parent;
+              if(pos > 1) {
+                parent = self.mediaPfad.substring(0, pos);
+              } else {
+                parent = '/';
+              }
               //console.log("Parent: " + parent);
               self.mediaPfad = parent;
             }
@@ -105,8 +127,6 @@
       });
     }
   };
-  
-  /* Die folgenden '_liste' Funktionen koennen noch vereinheitlicht werden */
 
   this.ablageort_liste = function() {
     self.http_get('../api/store/Ablageort/liste/', function (responseText) {
@@ -162,8 +182,6 @@
     });
   };
 
-  /* Die folgenden '_form' Funktionen koennen noch vereinheitlicht werden */
-
   this.abspieler_form = function(pl) {
     self.vorlage_laden_und_fuellen("data/tpl/form_abspieler.tpl", pl, function (html) {
       document.querySelector(".zentraler-inhalt").innerHTML = html;
@@ -175,19 +193,22 @@
           document.querySelector('#abspieler-url').value
         );
         var daten = JSON.stringify(abspieler);        
-        if(typeof pl === "undefined" || pl.key !== plname) {
+        //if(typeof pl === "undefined" || pl.key !== plname) {
+        if(typeof pl.name === "undefined" || pl.name.length < 1) {
           // neu
-          self.http_post('../api/store/Abspieler', daten, function (responseText) {
+          self.http_put('../api/store/Abspieler/' + plname, daten, function (responseText) {
             // hier die Antwort verarbeiten
+            self.abspieler_auswahl_fuellen();
+            self.abspieler_liste();
           });
         } else {
           // aendern
-          self.http_put('../api/store/Abspieler', daten, function (responseText) {
+          self.http_put('../api/store/Abspieler/' + pl.name, daten, function (responseText) {
             // hier die Antwort verarbeiten
+            self.abspieler_auswahl_fuellen();
+            self.abspieler_liste();
           });
         }
-        //document.querySelector(".zentraler-inhalt").innerHTML = '';
-        self.abspieler_liste();
       });
       self.addEvtListener('#cancel-btn', 'click', function () {
         //document.querySelector(".zentraler-inhalt").innerHTML = '';
@@ -203,6 +224,7 @@
               // hier die Antwort verarbeiten
               self.dialog_schliessen();
               //document.querySelector(".zentraler-inhalt").innerHTML = '';
+              self.abspieler_auswahl_fuellen();
               self.abspieler_liste();
             });
           });
@@ -222,19 +244,20 @@
           document.querySelector('#einstellung-value').value
         );
         var daten = JSON.stringify(pref);        
-        if(typeof k === "undefined" || k.key !== pkey) {
+        //if(typeof k === "undefined" || k.key !== pkey) {
+        if(typeof k.key === "undefined" ||  k.key.length < 1) {
           // neu
-          self.http_post('../api/store/Einstellung', daten, function (responseText) {
+          self.http_put('../api/store/Einstellung/' + pkey, daten, function (responseText) {
             // hier die Antwort verarbeiten
+            self.prefs_liste();
           });
         } else {
           // aendern
-          self.http_put('../api/store/Einstellung', daten, function (responseText) {
+          self.http_put('../api/store/Einstellung/' + k.key, daten, function (responseText) {
             // hier die Antwort verarbeiten
+            self.prefs_liste();
           });
         }
-        //document.querySelector(".zentraler-inhalt").innerHTML = '';
-        self.prefs_liste();
       });
       self.addEvtListener('#cancel-btn', 'click', function () {
         //document.querySelector(".zentraler-inhalt").innerHTML = '';
@@ -278,19 +301,20 @@
           document.querySelector('#ablageort-url').value
         );
         var daten = JSON.stringify(a);        
-        if(typeof ort === "undefined" || ort.name !== aName) {
+        //if(typeof ort === "undefined" || ort.name !== aName) {
+        if(typeof ort.name === "undefined"  || ort.name.length < 1) {
           // neu
-          self.http_post('../api/store/Ablageort', daten, function (responseText) {
+          self.http_put('../api/store/Ablageort/' + aName, daten, function (responseText) {
             // hier die Antwort verarbeiten
+            self.ablageort_liste();
           });
         } else {
           // aendern
-          self.http_put('../api/store/Ablageort', daten, function (responseText) {
+          self.http_put('../api/store/Ablageort/' + ort.name, daten, function (responseText) {
             // hier die Antwort verarbeiten
+            self.ablageort_liste();
           });
         }
-        //document.querySelector(".zentraler-inhalt").innerHTML = '';
-        self.ablageort_liste();
       });
       self.addEvtListener('#cancel-btn', 'click', function () {
         //document.querySelector(".zentraler-inhalt").innerHTML = '';
@@ -321,18 +345,6 @@
   this.removeClassMulti = function(selector) {
     document.querySelectorAll('.' + selector).forEach(elem => { elem.classList.remove(selector); });
   };
-
-  /*
-  this.addEvtListener = function (selector, eventName, func) {
-    var elems = document.querySelectorAll(selector);
-    var index;
-    for (index = 0; index < elems.length; index++) {
-      elems[index].addEventListener(eventName, func);
-    }
-  };
-  */
-  
-  // document.querySelectorAll(selector).forEach(elem => { elem.addEventListener(eventName, func); });
 
   /* --------------------- asynchroner HTTP Client ----------------- */
   
@@ -558,5 +570,4 @@
 function Abspieler(n, u) {
   this.name = n;
   this.url = u;
-}
-
+}
\ No newline at end of file

--
Gitblit v1.9.3