From 3929b0fe2a7678b31f8971c9b9eb4536330f6c80 Mon Sep 17 00:00:00 2001
From: ulrich
Date: Wed, 14 Apr 2021 16:26:58 +0000
Subject: [PATCH] Entitaet Geraet hinzugenommen, Aenderungen an Menues und UI

---
 src/de/uhilger/mediaz/store/FileStorage.java |    4 +
 www/ui/data/menu/hauptmenue.json             |   34 ----------
 www/ui/data/tpl/form_geraet.txt              |   13 ++++
 www/ui/data/menu/einstellungen.json          |   43 ++++++++++++++
 www/ui/js/app.js                             |   25 ++++++++
 src/de/uhilger/mediaz/entity/Geraet.java     |   30 ++++++++++
 www/ui/data/tpl/geraet_liste.txt             |    7 ++
 www/ui/index.html                            |    5 +
 8 files changed, 127 insertions(+), 34 deletions(-)

diff --git a/src/de/uhilger/mediaz/entity/Geraet.java b/src/de/uhilger/mediaz/entity/Geraet.java
index c498d33..4408cda 100644
--- a/src/de/uhilger/mediaz/entity/Geraet.java
+++ b/src/de/uhilger/mediaz/entity/Geraet.java
@@ -18,12 +18,18 @@
 package de.uhilger.mediaz.entity;
 
 /**
+ * 
+ * Beispiele
+ * HTTP GET http://192.168.178.64/relay/0 liefert {"ison":false,"has_timer":false,"overpower":false}
  *
  * @author Ulrich Hilger
  */
 public class Geraet implements Entity {
 
   private String name;
+  private String einUrl;
+  private String ausUrl;
+  private String statusUrl;
 
   public void setName(String name) {
     this.name = name;
@@ -34,4 +40,28 @@
     return name;
   }
 
+  public String getEinUrl() {
+    return einUrl;
+  }
+
+  public void setEinUrl(String einUrl) {
+    this.einUrl = einUrl;
+  }
+
+  public String getAusUrl() {
+    return ausUrl;
+  }
+
+  public void setAusUrl(String ausUrl) {
+    this.ausUrl = ausUrl;
+  }
+
+  public String getStatusUrl() {
+    return statusUrl;
+  }
+
+  public void setStatusUrl(String statusUrl) {
+    this.statusUrl = statusUrl;
+  }
+
 }
diff --git a/src/de/uhilger/mediaz/store/FileStorage.java b/src/de/uhilger/mediaz/store/FileStorage.java
index ce6b60f..f855d4e 100644
--- a/src/de/uhilger/mediaz/store/FileStorage.java
+++ b/src/de/uhilger/mediaz/store/FileStorage.java
@@ -32,6 +32,7 @@
 import java.io.IOException;
 import java.util.logging.Logger;
 import de.uhilger.mediaz.entity.Entity;
+import de.uhilger.mediaz.entity.Geraet;
 import de.uhilger.mediaz.entity.Livestream;
 import de.uhilger.mediaz.entity.Titel;
 import java.util.ArrayList;
@@ -61,6 +62,7 @@
   public static final String ST_ABSPIELER = "Abspieler";
   public static final String ST_ABSPIELLISTE = "Abspielliste";
   public static final String ST_LIVESTREAM = "Livestream";
+  public static final String ST_GERAET = "Geraet";
   
   private final String fileBase;
   
@@ -75,6 +77,7 @@
     TypeToken<Abspieler> ttAbspieler = new TypeToken<Abspieler>() {};
     TypeToken<Abspielliste> ttAbspielliste = new TypeToken<Abspielliste>() {};
     TypeToken<Livestream> ttLivestream = new TypeToken<Livestream>() {};
+    TypeToken<Geraet> ttGeraet = new TypeToken<Geraet>() {};
     TypeToken<Titel> ttTitel = new TypeToken<Titel>() {};
     types = new HashMap();
     types.put(Ablageort.class.getSimpleName(), ttAblageort);
@@ -83,6 +86,7 @@
     types.put(Abspielliste.class.getSimpleName(), ttAbspielliste);
     types.put(Titel.class.getSimpleName(), ttTitel);
     types.put(Livestream.class.getSimpleName(), ttLivestream);
+    types.put(Geraet.class.getSimpleName(), ttGeraet);
   }
   
   /**
diff --git a/www/ui/data/menu/einstellungen.json b/www/ui/data/menu/einstellungen.json
new file mode 100644
index 0000000..fb76f56
--- /dev/null
+++ b/www/ui/data/menu/einstellungen.json
@@ -0,0 +1,43 @@
+{
+  "menue": {
+    "menuetitel": "Einstellungen",
+    "wurzel": false,
+    "vorgaenger": {
+      "vtitel": "Hauptmenü",
+      "vverweis": "hauptmenue.json"
+    },
+    "inhalt": [
+      {
+        "titel": "Kataloge",
+        "umenue": false,
+        "funktion": "app.ablageort_liste"
+      },
+      {
+        "titel": "Abspieler",
+        "umenue": false,
+        "funktion": "app.abspieler_liste"
+      },
+      {
+        "titel": "Abspiellisten",
+        "umenue": false,
+        "funktion": "app.abspielliste_liste"
+      },
+      {
+        "titel": "Livestreams",
+        "umenue": false,
+        "funktion": "app.livestream_liste"
+      },
+      {
+        "titel": "Geraete",
+        "umenue": false,
+        "funktion": "app.geraet_liste"
+      },
+      {
+        "titel": "Einstellungen",
+        "umenue": false,
+        "funktion": "app.prefs_liste"
+      }
+    ]
+  }
+}
+
diff --git a/www/ui/data/menu/hauptmenue.json b/www/ui/data/menu/hauptmenue.json
index b1b735f..b177874 100644
--- a/www/ui/data/menu/hauptmenue.json
+++ b/www/ui/data/menu/hauptmenue.json
@@ -18,44 +18,14 @@
         "funktion": "app.livestream_selection"
       },
       {
-        "titel": "",
-        "umenue": false,
-        "funktion": ""
-      },
-      {
         "titel": "Abspielliste",
         "umenue": false,
         "funktion": "app.titel_liste"
       },
       {
-        "titel": "Kataloge",
-        "umenue": false,
-        "funktion": "app.ablageort_liste"
-      },
-      {
-        "titel": "Abspieler",
-        "umenue": false,
-        "funktion": "app.abspieler_liste"
-      },
-      {
-        "titel": "Abspiellisten",
-        "umenue": false,
-        "funktion": "app.abspiellisten_liste"
-      },
-      {
-        "titel": "Livestreams",
-        "umenue": false,
-        "funktion": "app.livestream_liste"
-      },
-      {
         "titel": "Einstellungen",
-        "umenue": false,
-        "funktion": "app.prefs_liste"
-      },
-      {
-        "titel": "",
-        "umenue": false,
-        "funktion": ""
+        "umenue": true,
+        "verweis": "einstellungen.json"
       },
       {
         "titel": "Info",
diff --git a/www/ui/data/tpl/form_geraet.txt b/www/ui/data/tpl/form_geraet.txt
new file mode 100644
index 0000000..6d94060
--- /dev/null
+++ b/www/ui/data/tpl/form_geraet.txt
@@ -0,0 +1,13 @@
+<form>
+  <div class="entity-formular">
+    <input name="name" class="entity-element" type="text" id="geraet-name" placeholder="Name" value="{{name}}" />
+    <input name="einUrl" class="entity-element" type="text" id="geraet-einurl" placeholder="URL (Ein)" value="{{einUrl}}" />
+    <input name="ausUrl" class="entity-element" type="text" id="geraet-ausurl" placeholder="URL (Aus)" value="{{ausUrl}}" />
+    <input name="statusUrl" class="entity-element" type="text" id="geraet-statusurl" placeholder="URL (Status)" value="{{statusUrl}}" />
+    <div class="entity-buttons">
+      <button type="submit" class="button-primary" id="ok-btn">Speichern</button>
+      <button class="button" id="cancel-btn">Abbrechen</button>
+      <button class="button" id="loeschen-btn">L&ouml;schen</button>
+    </div>
+  </div>
+</form>
\ No newline at end of file
diff --git a/www/ui/data/tpl/geraet_liste.txt b/www/ui/data/tpl/geraet_liste.txt
new file mode 100644
index 0000000..d290bc6
--- /dev/null
+++ b/www/ui/data/tpl/geraet_liste.txt
@@ -0,0 +1,7 @@
+<div class='entity-formular'>
+  <ul class='entity-liste'>
+    {{#ArrayList}}
+    <li class='entity-eintrag'>{{.}}</li>
+    {{/ArrayList}}
+  </ul>
+</div>
\ No newline at end of file
diff --git a/www/ui/index.html b/www/ui/index.html
index 5ab8654..e559d66 100644
--- a/www/ui/index.html
+++ b/www/ui/index.html
@@ -52,7 +52,8 @@
             <a id="mi-listen"><i class="icon-list"></i> Abspiellisten</a>
             <a id="mi-orte"><i class="icon-database"></i> Kataloge</a>
             <a id="mi-player"><i class="icon-play"></i> Abspieler</a>
-            <a id="mi-live"><i class="icon-ellipsis-vert"></i> Livestream</a>
+            <a id="mi-live"><i class="icon-ellipsis-vert"></i> Livestreams</a>
+            <a id="mi-devices"><i class="icon-ellipsis-vert"></i> Ger&auml;te</a>
             <a id="mi-prefs"><i class="icon-sliders"></i> Einstellungen</a>
           </div>
         </div>         
@@ -65,11 +66,11 @@
       </div>
       <div class="zentrum-behaelter">
         <!-- Einblendbereich oben -->
+        <div class="dialog"></div>
         <div class="top-band">
           <div class="breadcrumb-behaelter">Breadcrumb hier</div>
           <div class="bereich-name">Name des Bereichs</div>
         </div>
-        <div class="dialog"></div>
         <!-- zentraler Inhaltsbereich -->
         <div class="zentrum">
           <div class="zentraler-inhalt">
diff --git a/www/ui/js/app.js b/www/ui/js/app.js
index 5be012f..0ef4266 100644
--- a/www/ui/js/app.js
+++ b/www/ui/js/app.js
@@ -31,6 +31,7 @@
     self.addEvtListener('#mi-listen', 'click', self.abspielliste_liste);
     self.addEvtListener('#mi-list', 'click', self.titel_liste);
     self.addEvtListener('#mi-live', 'click', self.livestream_liste);
+    self.addEvtListener('#mi-devices', 'click', self.geraet_liste);
     
     self.fusszeile_umschalten();
     self.seitenleiste_umschalten();
@@ -154,6 +155,15 @@
     }
   };
   
+  this.geraet_liste = function() {
+    self.entitaet_liste('Geräte','../api/store/Geraet/liste/', 
+      "data/tpl/geraet_liste.txt", '../api/store/Geraet/', 
+      "self.geraet_form", function(responseText) {
+        var geraet = JSON.parse(responseText);
+        self.geraet_form(geraet);
+      });
+  };
+
   this.ablageort_liste = function() {
     self.entitaet_liste('Kataloge','../api/store/Ablageort/liste/', 
       "data/tpl/ablageort_liste.txt", '../api/store/Ablageort/', 
@@ -228,6 +238,14 @@
       "data/tpl/form_livestream.txt", '../api/store/Livestream/',
       '#livestream-name', function() { 
           self.livestream_liste();
+    });
+  };
+
+  this.geraet_form = function(ge) {
+    self.entitaet_form('Gerät', ge, ge.name,
+      "data/tpl/form_geraet.txt", '../api/store/Geraet/',
+      '#geraet-name', function() { 
+          self.geraet_liste();
     });
   };
 
@@ -832,4 +850,11 @@
   this.interpret = i;
   this.titelAnzName = t;
   this.album  = a;
+}
+
+function Geraet(n, e, a, s) {
+  this.name = n;
+  this.einUrl = e;
+  this.ausUrl = a;
+  this.statusUrl = s;
 }
\ No newline at end of file

--
Gitblit v1.9.3