| | |
| | | var TPL_ABSPIELER = 'abspieler'; |
| | | var templateCache = {}; // mustache templates |
| | | var prefsRendered = false; |
| | | var senderKlickModus = "0"; // 1=abspielen, 2=bearbeiten, 3=loeschen |
| | | var senderKlickModus = "1"; // 1=abspielen, 2=bearbeiten, 3=loeschen |
| | | var ID_UNDEFINED = -1; |
| | | var suchTimeout; |
| | | |
| | | function app_init() { |
| | | $('.sued').text('Initialisieren..'); |
| | | $('.dialog').hide(); |
| | | $('.ost').hide(); |
| | | |
| | | // Menü initialisieren |
| | | app_menu_init( |
| | | "data/menu/", |
| | | "hauptmenue.json", |
| | | "../jslib/app-menu/app-menu.tpl", |
| | | ".west", |
| | | "8em"); |
| | | |
| | | // Templates laden |
| | | app_get_template('data/tpl/dlg-msg.tpl', TPL_DLG_MSG); |
| | | app_get_template('data/tpl/dlg-info.tpl', TPL_DLG_INFO); |
| | | app_get_template('data/tpl/sender.tpl', TPL_SENDER); |
| | |
| | | app_get_template('data/tpl/kachel.tpl', TPL_SENDER_KACHEL); |
| | | app_get_template('data/tpl/abspieler.tpl', TPL_ABSPIELER); |
| | | |
| | | var $hamburger = $(".hamburger"); |
| | | $hamburger.on("click", function(e) { |
| | | // Klicks auf das Hamburger-Menü-Icon an eine Funktion leiten |
| | | $(".hamburger").on("click", function(e) { |
| | | app_menue_umschalten(); |
| | | }); |
| | | |
| | | // Eingaben ins Suchfeld an eine Funktion leiten |
| | | $(".sendersuche-eingabe").on('keyup', function() { |
| | | clearTimeout(suchTimeout); |
| | | suchTimeout = setTimeout('app_sendersuche()', 500); |
| | | }); |
| | | $('.sued').text('Bereit.'); |
| | | |
| | | // Abspieler und Sender laden |
| | | setTimeout(function() { |
| | | app_get_abspieler(); |
| | | app_get_sender(); |
| | | $('.sued').text('Bereit.'); |
| | | }, 200); |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | function app_menue_umschalten() { |
| | | var $hamburger = $(".hamburger"); |
| | | $hamburger.toggleClass("is-active"); // hamburger-icon umschalten |
| | | $(".hamburger").toggleClass("is-active"); // hamburger-icon umschalten |
| | | app_menu_toggle(); // menue oeffnen/schliessen |
| | | } |
| | | /* Abspieler und abspielen */ |
| | | |
| | | function app_get_abspiel_ziel() { |
| | | var opt = $(".abspieler-auswahl :selected"); |
| | | var atyp = opt.attr("atyp"); |
| | | var aname = opt.text(); |
| | | var aurl = opt.attr("aurl"); |
| | | return new Abspieler(-1, aname, aurl, atyp, "", "selected"); |
| | | } |
| | | |
| | | /* |
| | | Abspiel-URL für Raspi: |
| | | http://raspi:8080/pirc/sys/rpc?c=de.uhilger.pirc.App&m=abspielen&p=http://bob.hoerradar.de/radiobob-live-mp3-hq&p= |
| | | */ |
| | | function app_abspielen(sender, abspieler) { |
| | | if(abspieler.typ === 'pirc') { |
| | | var url = |
| | | abspieler.url + |
| | | '/sys/rpc?c=de.uhilger.pirc.App&m=abspielen&p=' + |
| | | sender.url + |
| | | '&p='; |
| | | app_radio_kommando_senden(url); |
| | | } else { |
| | | // 'hier abspielen' muss noch gebaut werden |
| | | } |
| | | } |
| | | |
| | | function app_abspielen_stoppen() { |
| | | var abspieler = app_get_abspiel_ziel(); |
| | | if(abspieler.typ === 'pirc') { |
| | | var url = |
| | | abspieler.url + |
| | | '/sys/rpc?c=de.uhilger.pirc.App&m=kommando&p=q'; |
| | | app_radio_kommando_senden(url); |
| | | } else { |
| | | // 'hier abspielen' stoppen muss noch gebaut werden |
| | | } |
| | | } |
| | | |
| | | /* Senderliste */ |
| | | |
| | | function app_kachel_anpassen(sender) { |
| | | var kachel = $( "div[sid='" + sender.id + "']" ); |
| | | $(kachel).find(".sender-name").text(sender.name); |
| | | $(kachel).attr("data-verweis", sender.url); |
| | | $(kachel).find("img").attr("src", sender.logo); |
| | | kachel.find(".sender-name").text(sender.name); |
| | | kachel.attr("data-verweis", sender.url); |
| | | kachel.find("img").attr("src", sender.logo); |
| | | } |
| | | |
| | | function app_kachel_neu(sender) { |
| | | var html = Mustache.render(templateCache[TPL_SENDER_KACHEL], sender); |
| | | $("#sender").append(html); |
| | | var kachel = $( "div[sid='" + sender.id + "']" ); |
| | | $(kachel).on('click', app_kachel_klick); |
| | | kachel.on('click', app_kachel_klick); |
| | | } |
| | | |
| | | function app_kachel_klick() { |
| | | var kachel = $( this ); |
| | | var senderId = $(kachel).attr("sid"); |
| | | var senderName = $(kachel).find(".sender-name").text(); |
| | | var senderUrl = $(kachel).attr("data-verweis"); |
| | | var senderLogo = $(kachel).find("img").attr("src"); |
| | | var senderId = kachel.attr("sid"); |
| | | var senderName = kachel.find(".sender-name").text(); |
| | | var senderUrl = kachel.attr("data-verweis"); |
| | | var senderLogo = kachel.find("img").attr("src"); |
| | | var s = new Sender(senderId, senderName, senderUrl, senderLogo); |
| | | switch (senderKlickModus) { |
| | | case "1": |
| | | app_abspielen(s, app_get_abspiel_ziel()); |
| | | break; |
| | | case "2": |
| | | $(".dlg-behaelter").html( |
| | |
| | | ); |
| | | break; |
| | | } |
| | | |
| | | } |
| | | |
| | | /* --- Menüfunktionen --- */ |
| | |
| | | /* --- Dialogfunktionen --- */ |
| | | |
| | | function app_dialog_zeigen(vorlage, inhalt) { |
| | | $(".dialog").html(Mustache.render(vorlage, inhalt)); |
| | | var dlg = $(".dialog"); |
| | | dlg.html(Mustache.render(vorlage, inhalt)); |
| | | $(".close-btn").on('click', function() { |
| | | app_dialog_schliessen(); |
| | | }); |
| | | $('.dialog').slideDown(300); |
| | | dlg.slideDown(300); |
| | | } |
| | | |
| | | function app_sender_dialog_lesen(senderId) { |
| | |
| | | } |
| | | |
| | | function app_dialog_schliessen() { |
| | | senderKlickModus = "0"; |
| | | senderKlickModus = "1"; |
| | | $('.close-btn').off('click'); |
| | | $('.dialog').slideUp(300); |
| | | } |
| | |
| | | timeout - die Anzahl Millisekunden, die eine Meldung zu sehen sein soll |
| | | */ |
| | | function app_meldung_mit_timeout(meldung, timeout) { |
| | | $('.sued').text(meldung); |
| | | var s = $('.sued'); |
| | | s.text(meldung); |
| | | setTimeout(function() { |
| | | $('.sued').text('Bereit.'); |
| | | s.text('Bereit.'); |
| | | }, timeout); |
| | | } |
| | | |
| | |
| | | }).done(function( abspielerliste ) { |
| | | $(".abspieler-behaelter").html( |
| | | Mustache.render(templateCache[TPL_ABSPIELER], abspielerliste)); |
| | | $("#abspielen-stoppen").on('click', app_abspielen_stoppen); |
| | | }); |
| | | } |
| | | |
| | |
| | | } else { |
| | | app_dialog_zeigen(vorlage, ''); |
| | | } |
| | | } |
| | | |
| | | function app_radio_kommando_senden(kommando) { |
| | | $.ajax({ |
| | | url: kommando, |
| | | type: "GET", |
| | | dataType : "text", |
| | | crossDomain: true |
| | | }).done(function( antwort ) { |
| | | /* |
| | | der folgende Schritt wird nicht erreicht, weil beim Aufruf |
| | | aus dem Browser heraus keine Adresse aufgerufen werden darf, |
| | | die nicht von der Domain kommt, von der aus das radio-ui |
| | | ausgeliefert wird. |
| | | |
| | | Kommt das radio-ui z.B. von der Domain uhilger.de, wird ein Aufruf |
| | | zur Domain raspi-az blockiert. |
| | | |
| | | Das laesst sich vermeiden, wenn der Server den Aufruf zum Raspi |
| | | uebernimmt. |
| | | |
| | | Interessanterweise kommt der Aufruf zum Raspi durch und löst auch |
| | | das Abspielen des Radiosenders aus. Nur die Antwort vom Raspi wird |
| | | blockiert und hier nicht ausgegeben. |
| | | */ |
| | | app_meldung_mit_timeout(antwort, 2000); |
| | | }).fail(function(xhr, status, errorThrown ) { |
| | | app_meldung_mit_timeout(errorThrown + " " + status, 2000); |
| | | }); |
| | | } |
| | | |
| | | /* |
| | |
| | | this.url = u; |
| | | this.logo = l; |
| | | } |
| | | |
| | | function Abspieler(i, n, u, t, b, z) { |
| | | this.id = i; |
| | | this.name = n; |
| | | this.url = u; |
| | | this.typ = t; |
| | | this.bild = b; |
| | | this.zustand = z; |
| | | } |