Bedienoberfläche für Webradio
ulrich
2018-01-02 47a970ab16fb42d62734ab53ae5fa113c9b47165
Senderübersicht wird jetzt dynamisch aus einer JSON-Beschreibung gelesen.
3 files modified
2 files added
114 ■■■■■ changed files
api/sender.json 27 ●●●●● patch | view | raw | blame | history
app.css 34 ●●●●● patch | view | raw | blame | history
app.js 24 ●●●● patch | view | raw | blame | history
index.html 13 ●●●●● patch | view | raw | blame | history
tpl/sender.tpl 16 ●●●●● patch | view | raw | blame | history
api/sender.json
New file
@@ -0,0 +1,27 @@
{
  "senderliste": {
    "titel": "Senderliste",
    "inhalt":  [
      {
        "sendername": "hr info",
        "senderurl": "http://hr-hrinfo-live.cast.addradio.de/hr/hrinfo/live/mp3/128/stream.mp3",
        "senderlogo": "../bilder/hr-info.png"
      },
      {
        "sendername": "radiobob",
        "senderurl": "http://bob.hoerradar.de/radiobob-live-mp3-hq",
        "senderlogo": "../bilder/radio-bob-logo-80.png"
      },
      {
        "sendername": "hr3",
        "senderurl": "http://hr-hrinfo-live.cast.addradio.de/hr/hrinfo/live/mp3/128/stream.mp3",
        "senderlogo": "../bilder/hr3.png"
      },
      {
        "sendername": "FFH",
        "senderurl": "http://mp3.ffh.de/radioffh/hqlivestream.mp3",
        "senderlogo": "../bilder/ffh.svg"
      }
    ]
  }
}
app.css
@@ -32,6 +32,40 @@
  margin: 0;
}
/* Sender */
.sender-behaelter {
  display: flex;
  flex-flow: column;
}
.sender {
  display: flex;
  flex-flow: row;
  padding: 0.4em;
  flex-wrap: wrap;
  background-color: #eaeaea;
  width: 100%;
}
.sender-kachel {
  display: flex;
  flex-flow: column;
  align-items: center;
  margin: 0.4em;
  padding: 0.4em;
  background-color: white;
}
.sender-name {
  font-family: RobotoCondensedBold;
}
.sender-bild {
  width: 5em;
  background-color: #ebe6e6;
}
/* fonts */
@font-face {
app.js
@@ -1,17 +1,33 @@
var TPL_HOME = 'home';
var TPL_PREFS = 'prefs';
var templateCache = {}; // mustache templates 'home', 'prefs'
var TPL_SENDER = 'sender';
var templateCache = {}; // mustache templates 'home', 'prefs', 'sender'
var prefsRendered = false;
function app_init() {
  $('.ost').hide();
  app_menu_init("menu/", "hauptmenue.json", "../jslib/app-menu/app-menu.tpl", ".west");
  //app_get_template('tpl/home.tpl', 'home');
  app_get_template('tpl/sender.tpl', TPL_SENDER);
  //app_get_template('tpl/prefs.tpl', 'prefs');
  $('.sued').text('Bereit.');
  /*
  setTimeout(function() {
    app_seitenwechsel('home', 'vor');
    $("#sender").html(Mustache.render(templateCache[TPL_SENDER], ''));
  }, 200);
}
/* --- Ajax-Aufrufe --- */
/*
  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;
  });
}
index.html
@@ -12,8 +12,14 @@
  <body>
    <!-- Kopfzeile -->
    <div class="nord">
      <a id="nav-toggle" href="#"><span></span></a> <span id="app-titel">Home</span>
      <div id="nav-menu">
        <a id="nav-toggle" href="#"><span></span></a>
    </div>
      <div class="app-titel">
        <span id="app-titel">Home</span>
      </div>
    </div>
    <!-- Inhalt -->
    <div class="inhalt">
      <!-- westliche Seitenleiste -->
      <div class="west"></div>
@@ -21,10 +27,9 @@
      <div class="zentrum">
        <div id="prefs"></div>
        <div id="home"></div>
        <div class="sender-behaelter">
          <div id="sender" class="sender"></div>
      </div>
      <div class="cond">
        Dieser Teil (Klasse cond für conditional) erscheint nur, wenn das
        Anzeigegerät rechts genügend Platz hat.
      </div>
      <!-- oestliche Seitenleiste -->
      <div class="ost">
tpl/sender.tpl
New file
@@ -0,0 +1,16 @@
<div class="sender-kachel">
  <div class="sender-name">hr info</div>
  <div class="sender-bild-behaelter"><img class="sender-bild" src="../bilder/hr-info.png"></div>
</div>
<div class="sender-kachel">
  <div class="sender-name">radiobob</div>
  <div class="sender-bild-behaelter"><img class="sender-bild" src="../bilder/radio-bob-logo-80.png"></div>
</div>
<div class="sender-kachel">
  <div class="sender-name">hr3</div>
  <div class="sender-bild-behaelter"><img class="sender-bild" src="../bilder/hr3.png"></div>
</div>
<div class="sender-kachel">
  <div class="sender-name">FFH</div>
  <div class="sender-bild-behaelter"><img class="sender-bild" src="../bilder/ffh.svg"></div>
</div>