var TPL_HOME = 'home'; var TPL_PREFS = 'prefs'; var TPL_SENDER = 'sender'; var TPL_DLG_MSG = 'dlg-msg'; var TPL_DLG_INFO = 'dlg-info'; var TPL_DLG_SENDER_NEU = 'dlg-sender-neu'; 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 var ID_UNDEFINED = -1; var suchTimeout; function app_init() { $('.dialog').hide(); $('.ost').hide(); app_menu_init( "data/menu/", "hauptmenue.json", "../jslib/app-menu/app-menu.tpl", ".west", "8em"); 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/dlg-sender-neu.tpl', TPL_DLG_SENDER_NEU); 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); $(".sendersuche-eingabe").on('keyup', function() { clearTimeout(suchTimeout); suchTimeout = setTimeout('app_sendersuche()', 500); }); $('.sued').text('Bereit.'); setTimeout(function() { app_get_abspieler(); app_get_sender(); }, 200); } function app_sendersuche() { var suchbegriff = $(".sendersuche-eingabe").val(); /* Anstelle der folgenden Meldung wuerde hier die Suchfunktion ausgefuehrt */ app_meldung_mit_timeout( 'Suchbegriff: ' + suchbegriff, 1500 ); } /* 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); } 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); } 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 s = new Sender(senderId, senderName, senderUrl, senderLogo); switch (senderKlickModus) { case "1": break; case "2": $(".dlg-behaelter").html( Mustache.render(templateCache[TPL_SENDER_EDIT_FORM], s) ); $('#sender-speichern').on('click', function() { $('#sender-speichern').off('click'); app_kachel_anpassen(app_sender_dialog_lesen(senderId)); app_dialog_schliessen(); app_meldung_mit_timeout('Speichern gewaehlt', 1500); }); break; case "3": break; default: app_meldung_mit_timeout( 'Sender ' + s.name + ', ID ' + s.id, 1500 ); break; } } /* --- Menüfunktionen --- */ function app_nachricht_test() { app_dialog_laden_und_zeigen( templateCache[TPL_DLG_MSG], 'data/msg-test.json'); app_menu_toggle(); } function app_info_dialog_zeigen() { app_dialog_laden_und_zeigen(templateCache[TPL_DLG_INFO], ''); app_menu_toggle(); } function app_neuer_sender() { app_dialog_laden_und_zeigen(templateCache[TPL_DLG_SENDER_NEU], ''); $('#sender-speichern').on('click', function() { $('#sender-speichern').off('click'); app_kachel_neu(app_sender_dialog_lesen(--ID_UNDEFINED)); app_dialog_schliessen(); app_meldung_mit_timeout('Speichern gewaehlt', 1500); }); app_menu_toggle(); } function app_sender_bearbeiten() { senderKlickModus = "2"; // bearbeiten app_dialog_laden_und_zeigen(templateCache[TPL_DLG_SENDER_EDIT], ''); app_menu_toggle(); } function app_sender_loeschen() { app_meldung_mit_timeout('Nicht implementiert: Sender loeschen.', 1500); app_menu_toggle(); } function app_abspieler_loeschen() { app_meldung_mit_timeout('Nicht implementiert: Abspieler loeschen.', 1500); app_menu_toggle(); } function app_neuer_abspieler() { app_meldung_mit_timeout('Nicht implementiert: Neuer Abspieler.', 1500); app_menu_toggle(); } function app_abspieler_bearbeiten() { app_meldung_mit_timeout('Nicht implementiert: Abspieler bearbeiten.', 1500); app_menu_toggle(); } /* --- Dialogfunktionen --- */ function app_dialog_zeigen(vorlage, inhalt) { $(".dialog").html(Mustache.render(vorlage, inhalt)); $(".close-btn").on('click', function() { app_dialog_schliessen(); }); $('.dialog').slideDown(300); } function app_sender_dialog_lesen(senderId) { var nameNeu = $("#sender-name").val(); var logoNeu = $("#sender-logo").val(); var urlNeu = $("#sender-url").val(); return new Sender(senderId, nameNeu, urlNeu, logoNeu); } function app_dialog_schliessen() { senderKlickModus = "0"; $('.close-btn').off('click'); $('.dialog').slideUp(300); } /* --- Meldungen in der Fusszeile --- */ /* Eine Meldung eine Zeitlang in der Fusszeile anzeigen meldung - Text der Meldung timeout - die Anzahl Millisekunden, die eine Meldung zu sehen sein soll */ function app_meldung_mit_timeout(meldung, timeout) { $('.sued').text(meldung); setTimeout(function() { $('.sued').text('Bereit.'); }, timeout); } /* --- Ajax-Aufrufe --- */ function app_get_sender() { $.ajax({ url: "data/sender.json", type: "GET", dataType : "json" }).done(function( senderliste ) { $(".sender-kachel").off("click"); $(".sender-behaelter").html( Mustache.render(templateCache[TPL_SENDER], senderliste)); $('.sender-kachel').on('click', app_kachel_klick); }); } 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({ url: adresse, type: "GET", dataType : "json" }).done(function( msg ) { app_dialog_zeigen(vorlage, msg); }); } else { app_dialog_zeigen(vorlage, ''); } } /* Ein Template vom Server in den Cache laden template_url - home.tpl, prefs.tpl, sender.tpl tname - 'home', 'prefs', 'sender' */ function app_get_template(template_url, tname) { $.ajax({ url: template_url, type: "GET", dataType : "text" }).done(function( template ) { templateCache[tname] = template; }); } /* Objekte */ function Sender(i, n, u, l) { this.id = i; this.name = n; this.url = u; this.logo = l; }