Abspielerauswahl hinzugefügt
6 files modified
2 files added
| | |
| | | 128kbps http://mp3.ffh.de/radioffh/hqlivestream.mp3 |
| | | |
| | | 48kbps http://mp3.ffh.de/radioffh/livestream.aac |
| | | |
| | | ## Noch zu erledigen |
| | | |
| | | ### Templates für Mustache dynamisch laden |
| | | |
| | | Spart Ladezeit zu Beginn. Lösungsansatz: Eine Funktion, die als Parameter das Element erhält, dessen html mit dem gerenderten Template ersetzt werden soll und den zu rendernden Inhalt. Die dynamische Ladefunktion |
| | | |
| | | 1. prüft, ob das Template schon im cache ist |
| | | 1. Lädt das Template, wenn nicht |
| | | 1. wartet, bis das Template geladen ist |
| | | 1. rendert das Template mit dem übergebenen Inhalt |
| | | 1. schreibt das Ergebnis ins html des übergebenen Elements |
| | | |
| | | Der letzte Teil des Ablaufs muss asynchron gefasst sein, damit auf das Laden gewartet werden kann. |
| | | |
| | | ## Schnittstellenbeschreibung |
| | | |
| | | Die folgenden Funktionen sind Mocks für eine noch zu erstellende Schnittstelle. |
| | | |
| | | ### Senderliste lesen |
| | | |
| | | Aufruf |
| | | ```` |
| | | data/sender.json |
| | | ```` |
| | | |
| | | Antwort |
| | | ```` |
| | | { |
| | | "senderliste": { |
| | | "titel": "Senderliste", |
| | | "inhalt": [ |
| | | { |
| | | "senderid": 1, |
| | | "sendername": "hr info", |
| | | "senderurl": "http://hr-hrinfo-live.cast.addradio.de/hr/hrinfo/live/mp3/128/stream.mp3", |
| | | "senderlogo": "../bilder/hr-info.png" |
| | | }, |
| | | { |
| | | "senderid": 2, |
| | | "sendername": "radiobob", |
| | | "senderurl": "http://bob.hoerradar.de/radiobob-live-mp3-hq", |
| | | "senderlogo": "../bilder/radio-bob-logo-80.png" |
| | | }, |
| | | usw. |
| | | ] |
| | | } |
| | | } |
| | | ```` |
| | | |
| | | ### Neuen Sender speichern |
| | | |
| | | Noch nicht realisiert. |
| | | |
| | | ### Änderungen an einem Sender speichern |
| | | |
| | | Noch nicht realisiert. |
| | | |
| | | ### Sender löschen |
| | | |
| | | Noch nicht realisiert. |
| | |
| | | flex-flow: column; |
| | | } |
| | | |
| | | .inline-label { |
| | | display: inline-block; |
| | | width: 3em; |
| | | text-align: right; |
| | | } |
| | | |
| | | /* Dialogfeld */ |
| | | |
| | | .dialog { |
| | |
| | | background-color: #f6f6f6; // grau |
| | | } |
| | | |
| | | .sender-edit-label { |
| | | display: inline-block; |
| | | width: 3em; |
| | | text-align: right; |
| | | } |
| | | |
| | | .sender-eingabe { |
| | | width: 80%; |
| | | } |
| | |
| | | color: #b8b8b8; |
| | | } |
| | | |
| | | /* Abspieler */ |
| | | |
| | | .abspieler-behaelter { |
| | | display: flex; |
| | | flex-flow: row; |
| | | padding: 0.6em; |
| | | } |
| | | |
| | | .abspieler-label { |
| | | display: inline-block; |
| | | width: 4.5em; |
| | | padding-right: 0.2em; |
| | | text-align: right; |
| | | } |
| | | |
| | | .abspieler-auswahl { |
| | | width: 70%; |
| | | } |
| | | /* Sender */ |
| | | |
| | | .sender-behaelter { |
| | |
| | | var TPL_DLG_SENDER_EDIT = 'dlg-sender-edit'; |
| | | var TPL_SENDER_EDIT_FORM = 'sender-edit-form'; |
| | | var TPL_SENDER_KACHEL = 'sender-kachel'; |
| | | var TPL_ABSPIELER = 'abspieler'; |
| | | var templateCache = {}; // mustache templates |
| | | var prefsRendered = false; |
| | | var senderKlickModus = "0"; // 1=abspielen, 2=bearbeiten, 3=loeschen |
| | |
| | | app_get_template('data/tpl/dlg-sender-edit.tpl', TPL_DLG_SENDER_EDIT); |
| | | app_get_template('data/tpl/dlg-sender-edit-form.tpl', TPL_SENDER_EDIT_FORM); |
| | | app_get_template('data/tpl/kachel.tpl', TPL_SENDER_KACHEL); |
| | | app_get_template('data/tpl/abspieler.tpl', TPL_ABSPIELER); |
| | | //app_get_template('tpl/prefs.tpl', 'prefs'); |
| | | $('.sued').text('Bereit.'); |
| | | setTimeout(function() { |
| | | app_get_abspieler(); |
| | | app_get_sender(); |
| | | }, 200); |
| | | } |
| | |
| | | }); |
| | | } |
| | | |
| | | function app_get_abspieler() { |
| | | $.ajax({ |
| | | url: "data/abspieler.json", |
| | | type: "GET", |
| | | dataType : "json" |
| | | }).done(function( abspielerliste ) { |
| | | $(".abspieler-behaelter").html( |
| | | Mustache.render(templateCache[TPL_ABSPIELER], abspielerliste)); |
| | | }); |
| | | } |
| | | |
| | | function app_dialog_laden_und_zeigen(vorlage, adresse) { |
| | | if(adresse !== '') { |
| | | $.ajax({ |
New file |
| | |
| | | { |
| | | "abspielerliste": { |
| | | "titel": "Abspielerliste", |
| | | "inhalt": [ |
| | | { |
| | | "abspielerid": 1, |
| | | "abspielername": "dieses Gerät", |
| | | "abspielerurl": "", |
| | | "abspielertyp":"lokal", |
| | | "abspielerbild": "", |
| | | "abspielerzustand":"" |
| | | }, |
| | | { |
| | | "abspielerid": 2, |
| | | "abspielername": "Raspberry Pi Wohnzimmer", |
| | | "abspielerurl": "", |
| | | "abspielertyp":"pirc", |
| | | "abspielerbild": "", |
| | | "abspielerzustand":"selected" |
| | | }, |
| | | { |
| | | "abspielerid": 3, |
| | | "abspielername": "Raspberry Pi Arbeitszimmer", |
| | | "abspielerurl": "", |
| | | "abspielertyp":"pirc", |
| | | "abspielerbild": "", |
| | | "abspielerzustand":"" |
| | | } |
| | | ] |
| | | } |
| | | } |
New file |
| | |
| | | <label class="abspieler-label">Abspieler:</label> |
| | | <select name="abspieler" size="1" class="abspieler-auswahl"> |
| | | {{#abspielerliste}} |
| | | {{#inhalt}} |
| | | <option {{abspielerzustand}} atyp="{{abspielertyp}}">{{abspielername}}</option> |
| | | {{/inhalt}} |
| | | {{/abspielerliste}} |
| | | </select> |
| | |
| | | <form> |
| | | <input value="{{id}}" id="sender-id" name="sender-id" type="hidden" |
| | | class="sender-eingabe"></br> |
| | | <label class="sender-edit-label">Name:</label> |
| | | <label class="inline-label">Name:</label> |
| | | <input value="{{name}}" id="sender-name" name="sender-name" placeholder="Name" |
| | | type="text" class="sender-eingabe"></br> |
| | | <label class="sender-edit-label">Logo:</label> |
| | | <label class="inline-label">Logo:</label> |
| | | <input value="{{logo}}" id="sender-logo" name="sender-logo" placeholder="Logo" |
| | | type="text" class="sender-eingabe"></br> |
| | | <label class="sender-edit-label">URL:</label> |
| | | <label class="inline-label">URL:</label> |
| | | <input value="{{url}}" id="sender-url" name="sender-url" placeholder="URL" |
| | | type="text" class="sender-eingabe"></br> |
| | | <div class="form-button-footer"> |
| | |
| | | <div class="dlg-behaelter"> |
| | | <div class="dlg-sender-titel">Neuer Sender</div> |
| | | <form> |
| | | <label class="sender-edit-label">Name:</label> |
| | | <label class="inline-label">Name:</label> |
| | | <input id="sender-name" placeholder="Name" type="text" class="sender-eingabe"></br> |
| | | <label class="sender-edit-label">Logo:</label> |
| | | <label class="inline-label">Logo:</label> |
| | | <input id="sender-logo" placeholder="Logo" type="text" class="sender-eingabe"></br> |
| | | <label class="sender-edit-label">URL:</label> |
| | | <label class="inline-label">URL:</label> |
| | | <input id="sender-url" placeholder="URL" type="text" class="sender-eingabe"></br> |
| | | <div class="form-button-footer"> |
| | | <button type="button" id="sender-speichern">Speichern</button> |
| | |
| | | <title>Radio-UI</title> |
| | | <meta charset="UTF-8"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | | <!-- <link rel="stylesheet" type="text/css" href="../jslib/app-layout/app-layout.css"> --> |
| | | <link rel="stylesheet" type="text/css" href="../jslib/app-menu/nav-toggle.css"> |
| | | <link rel="stylesheet" type="text/css" href="../jslib/app-menu/app-menu.css"> |
| | | <link rel="stylesheet" type="text/css" href="app.css"> |
| | |
| | | <div class="zentrum-behaelter"> |
| | | <!-- Einblendbereich --> |
| | | <div class="dialog"></div> |
| | | <!-- Abspieler-Auswahl --> |
| | | <div class="abspieler-behaelter"></div> |
| | | <!-- zentraler Inhaltsbereich --> |
| | | <div class="zentrum"> |
| | | <div id="prefs"></div> |