From 792b21b74e40320c85e9a193c8fa8218851010e6 Mon Sep 17 00:00:00 2001
From: undisclosed
Date: Mon, 02 Jan 2023 21:43:55 +0000
Subject: [PATCH] UI fuer Seek in Vorbereitung
---
src/de/uhilger/tango/api/MediaSteuerung.java | 10 +++++
src/de/uhilger/tango/api/ListHandler.java | 7 +++
www/data/tpl/gehe-zu.txt | 20 ++++++++++
www/js/app.js | 26 +++++++++++++
www/data/menu/hauptmenue.json | 5 ++
www/app.css | 8 ++++
6 files changed, 76 insertions(+), 0 deletions(-)
diff --git a/src/de/uhilger/tango/api/ListHandler.java b/src/de/uhilger/tango/api/ListHandler.java
index 8154211..13b7f7c 100644
--- a/src/de/uhilger/tango/api/ListHandler.java
+++ b/src/de/uhilger/tango/api/ListHandler.java
@@ -34,8 +34,15 @@
* GET /mz/api/alist/[pl-name] die Titel-Objekte der Liste [pl-name] liefern
* PUT /mz/api/alist/[pl-name] den Titel im Body anfuegen an die Liste [pl-name]
* PUT /mz/api/alist/[pl-name]/[nr] an der Position nr der Liste [pl-name] den Titel im Body einfuegen
+ * Neu: PUT /mz/api/alist/[pl-name]/[nr]/up den Titel an der Position nr der Liste [pl-name] eins nach oben
+ * Neu: PUT /mz/api/alist/[pl-name]/[nr]/dn den Titel an der Position nr der Liste [pl-name] eins nach unten
* DELETE /mz/api/alist/[pl-name]/[nr] den Titel an der Position [nr] aus der Liste [pl-name] entfernen
* DELETE /mz/api/alist/[pl-name]/alle alle Titel aus der Liste [pl-name] entfernen
+ *
+ * TODO (2.1.2023):
+ * - Titel eins nach oben/unten
+ * - Liste ab Titel spielen
+ * - Ganzes Album der Liste hinzufuegen
*
* @author Ulrich Hilger
* @version 1, 8.4.2021
diff --git a/src/de/uhilger/tango/api/MediaSteuerung.java b/src/de/uhilger/tango/api/MediaSteuerung.java
index 7d3fda7..441eba7 100644
--- a/src/de/uhilger/tango/api/MediaSteuerung.java
+++ b/src/de/uhilger/tango/api/MediaSteuerung.java
@@ -53,6 +53,7 @@
*
* HTTP GET /mz/api/strg/abspieler/pause
* HTTP GET /mz/api/strg/abspieler/stop
+ * HTTP GET /mz/api/strg/abspieler/seek/[sekunden]
*
* Faustregel: Anzahl Elemente eines URL plus 1 ist die Anzahl der Elemente des
* Ergebnisses von String.split.
@@ -66,6 +67,7 @@
private static final Logger logger = Logger.getLogger(MediaSteuerung.class.getName());
public static final String PL_CMD_PLAY = "play";
+ public static final String PL_CMD_SEEK = "seek";
public static final String PL_DEFAULT_PARAMS = "?titel=";
public static final String PL_PARAM_RUECK = "&r=";
public static final String PL_API_STRG = "api/strg/";
@@ -122,6 +124,14 @@
response = meldung("Ungueltiges Kommando: " + elems[5], AbstractHandler.RTC_NOT_FOUND);
}
break;
+ case 7:
+ if (elems[5].equalsIgnoreCase(PL_CMD_SEEK)) {
+ // /calypso/seek?pos=[sekunden]
+ response = kommandoSenden(fs, elems[4], "seek?pos=" + elems[6]);
+ } else {
+ response = meldung("Ungueltiges Kommando: " + elems[5], AbstractHandler.RTC_NOT_FOUND);
+ }
+ break;
case 8:
response = ersterTitel(fs, elems[4], elems[7]);
break;
diff --git a/www/app.css b/www/app.css
index fee7c6e..837faf4 100644
--- a/www/app.css
+++ b/www/app.css
@@ -179,6 +179,14 @@
/* ab hier Mediazentrale */
+.gehe-zu-formular{
+ font-size: smaller;
+}
+
+.gehe-zu-eingabe {
+ width: 2rem;
+}
+
.entity-formular {
display: flex;
flex-flow: column;
diff --git a/www/data/menu/hauptmenue.json b/www/data/menu/hauptmenue.json
index 73f5b35..9720eb6 100644
--- a/www/data/menu/hauptmenue.json
+++ b/www/data/menu/hauptmenue.json
@@ -28,6 +28,11 @@
"funktion": "app.geraet_schalt_liste"
},
{
+ "titel": "Gehe zu",
+ "umenue": false,
+ "funktion": "app.gehe_zu_dialog_zeigen"
+ },
+ {
"titel": "",
"umenue": false,
"funktion": ""
diff --git a/www/data/tpl/gehe-zu.txt b/www/data/tpl/gehe-zu.txt
new file mode 100644
index 0000000..4da905e
--- /dev/null
+++ b/www/data/tpl/gehe-zu.txt
@@ -0,0 +1,20 @@
+<div class="dlg-info">
+ <span class="close-btn pointer-cursor">✖</span>
+ <div class="dlg-behaelter">
+ <form>
+ <div class="gehe-zu-formular">
+ <input name="std" class="entity-form-element gehe-zu-eingabe" type="text" id="std" placeholder="Std" value="{{std}}" />
+ <input name="min" class="entity-form-element gehe-zu-eingabe" type="text" id="min" placeholder="Min" value="{{min}}" />
+ <input name="sek" class="entity-form-element gehe-zu-eingabe" type="text" id="sek" placeholder="Sek" value="{{sek}}" />
+
+ <input type="radio" id="vor" name="richtung" value="vor" checked="checked" > vor
+ <input type="radio" id="zurueck" name="richtung" value="zurueck"> rück
+
+ <div class="entity-buttons">
+ <button type="submit" class="button-primary" id="ok-btn">Gehe</button>
+ <button type="button" class="button" id="cancel-btn">Abbrechen</button>
+ </div>
+ </div>
+ </form>
+ </div>
+</div>
diff --git a/www/js/app.js b/www/js/app.js
index c664eba..c7f341e 100644
--- a/www/js/app.js
+++ b/www/js/app.js
@@ -494,6 +494,32 @@
console.log('url: ' + url);
//window.open(url);
};
+
+ this.gehe_zu_dialog_zeigen = function () {
+ self.dialog_laden_und_zeigen('data/tpl/gehe-zu.txt', '', function(){
+ const form = document.querySelector('form');
+ form.addEventListener('submit', function(event) {
+ // hier gehe zu realisieren
+ event.preventDefault();
+ const data = new FormData(event.target);
+ const value = Object.fromEntries(data.entries());
+ var daten = JSON.stringify(value);
+ console.log('gehe zu mit ' + daten);
+ var sekunden = (value['std'] * 3600) + (value['min'] * 60) + (value['sek'] * 1);
+ if(value['richtung'] === 'zurueck') {
+ sekunden *= -1;
+ }
+ console.log('sekunden: ' + sekunden);
+ self.dialog_schliessen();
+ // HTTP GET /mz/api/strg/abspieler/seek/[sekunden]
+ self.kommando('seek/' + sekunden);
+ });
+ self.addEvtListener('#cancel-btn', 'click', function(event) {
+ self.dialog_schliessen();
+ });
+ self.menue_umschalten();
+ });
+ };
/* ------------- Verwaltungsfunktionen Abspielliste -------------------- */
--
Gitblit v1.9.3