Bedienoberfläche für Webradio
ulrich
2018-01-02 851c9c7a98d24dd70cd9212810f6225632a6076d
Sender (in Arbeit)
3 files modified
8 files added
432 ■■■■ changed files
README.md 24 ●●●●● patch | view | raw | blame | history
app.css 223 ●●●● patch | view | raw | blame | history
app.js 2 ●●● patch | view | raw | blame | history
bilder/radio-bob-logo.png patch | view | raw | blame | history
bilder/table_radio_light.png patch | view | raw | blame | history
bilder/tabletop_radio.png patch | view | raw | blame | history
menu/hauptmenue.json 27 ●●●●● patch | view | raw | blame | history
menu/untermenue-1.json 27 ●●●●● patch | view | raw | blame | history
menu/untermenue-2.json 27 ●●●●● patch | view | raw | blame | history
sender.css 30 ●●●●● patch | view | raw | blame | history
sender.html 72 ●●●●● patch | view | raw | blame | history
README.md
@@ -1,3 +1,27 @@
# radio-ui
Eine Bedienoberfläche für Webradio
## Radiostreams
Nachfolgend die Adressen einiger Radiostreams
### hr info
[Livestream-Übersicht](http://www.hr-inforadio.de/livestream/index.html)
MP3-Stream (128 kBit/s)
http://metafiles.gl-systemhaus.de/hr/hrinfo_2.m3u
MP3-Stream (48 kBit/s)
http://metafiles.gl-systemhaus.de/hr/hrinfo_1.m3u
(für mobile Anwendungen empfohlen)
### radiobob
[Livestream-Übersicht](http://www.radiobob.de/radiobob/empfang/livestream)
MP3: http://streams.radiobob.de/bob-live/mp3-192/mediaplayer
Mobile Nutzung: http://streams.radiobob.de/bob-live/aac-64/mediaplayer
app.css
@@ -3,10 +3,12 @@
  /* font-size: 1.5em; */   /* currently ems cause chrome bug misinterpreting rems on body element */
  line-height: 1.6;
  font-weight: 400;
  font-family: "Raleway", "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif;
  /* font-family: "Raleway", "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; */
}
.nord {
  display: flex;
  flex-flow: row;
  height: 2em;
}
@@ -27,202 +29,35 @@
.zentrum {
  display: flex;
  flex-flow: row;
  overflow-x: hidden;
  margin: 0;
}
.cond {
  display: none;
}
@media (min-width: 35em) {
  .cond {
    display: block;
    background-color: aliceblue;
    text-align: right;
    width: 40%;
  }
  .zentrum {
    width: 60%;
    background-color: white;
  }
}
@media (min-width: 55em) {
  .cond {
    display: block;
    background-color: aliceblue;
    text-align: right;
    width: 60%;
  }
  .zentrum {
    width: 40%;
    background-color: white;
  }
}
.button-liste {
  display: flex;
  flex-flow: column;
  flex-wrap: wrap;
  padding: 0;
  margin: 0 0.2em 0 0.2em;
}
.button-liste .button {
  text-align: left;
  margin: 0 0 0.2em 0;
  padding: 0 0.4em 0 0.4em;
}
.abspieler-auswahl {
  margin: 0.3em 0 0.3em 0.5em;
}
/* fonts */
@font-face {
  font-family: 'Raleway';
  font-style: normal;
  src: url(../jslib/fonts/Raleway/Raleway-Regular.ttf) format('truetype');
    font-family: 'Amethysta';
    font-style: normal;
    font-weight: 700;
    src: url(/lib/fonts/Amethysta/Amethysta-Regular.ttf) format('truetype');
}
/* aus Skeleton */
.docs-header {
  text-transform: uppercase;
  font-size: 1.4rem;
  letter-spacing: .2rem;
  font-weight: 600; }
/* Typography
?????????????????????????????????????????????????? */
h1, h2, h3, h4, h5, h6 {
  margin-top: 0;
  margin-bottom: 2rem;
  font-weight: 300; }
h1 { font-size: 4.0rem; line-height: 1.2;  letter-spacing: -.1rem;}
h2 { font-size: 3.6rem; line-height: 1.25; letter-spacing: -.1rem; }
h3 { font-size: 3.0rem; line-height: 1.3;  letter-spacing: -.1rem; }
h4 { font-size: 2.4rem; line-height: 1.35; letter-spacing: -.08rem; }
h5 { font-size: 1.8rem; line-height: 1.5;  letter-spacing: -.05rem; }
h6 { font-size: 1.5rem; line-height: 1.6;  letter-spacing: 0; }
/* Buttons
?????????????????????????????????????????????????? */
.button,
button,
input[type="submit"],
input[type="reset"],
input[type="button"] {
  display: inline-block;
  height: 38px;
  padding: 0 30px;
  color: #555;
  text-align: center;
  font-size: 11px;
  font-weight: 600;
  line-height: 38px;
  letter-spacing: .1rem;
  text-transform: uppercase;
  text-decoration: none;
  white-space: nowrap;
  background-color: transparent;
  border-radius: 4px;
  border: 1px solid #bbb;
  cursor: pointer;
  box-sizing: border-box; }
.button:hover,
button:hover,
input[type="submit"]:hover,
input[type="reset"]:hover,
input[type="button"]:hover,
.button:focus,
button:focus,
input[type="submit"]:focus,
input[type="reset"]:focus,
input[type="button"]:focus {
  color: #333;
  border-color: #888;
  outline: 0; }
.button.button-primary,
button.button-primary,
input[type="submit"].button-primary,
input[type="reset"].button-primary,
input[type="button"].button-primary {
  color: #FFF;
  background-color: #33C3F0;
  border-color: #33C3F0; }
.button.button-primary:hover,
button.button-primary:hover,
input[type="submit"].button-primary:hover,
input[type="reset"].button-primary:hover,
input[type="button"].button-primary:hover,
.button.button-primary:focus,
button.button-primary:focus,
input[type="submit"].button-primary:focus,
input[type="reset"].button-primary:focus,
input[type="button"].button-primary:focus {
  color: #FFF;
  background-color: #1EAEDB;
  border-color: #1EAEDB; }
/* Forms
?????????????????????????????????????????????????? */
input[type="email"],
input[type="number"],
input[type="search"],
input[type="text"],
input[type="tel"],
input[type="url"],
input[type="password"],
textarea,
select {
  height: 38px;
  padding: 6px 10px; /* The 6px vertically centers text on FF, ignored by Webkit */
  background-color: #fff;
  border: 1px solid #D1D1D1;
  border-radius: 4px;
  box-shadow: none;
  box-sizing: border-box; }
/* Removes awkward default styles on some inputs for iOS */
input[type="email"],
input[type="number"],
input[type="search"],
input[type="text"],
input[type="tel"],
input[type="url"],
input[type="password"],
textarea {
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none; }
textarea {
  min-height: 65px;
  padding-top: 6px;
  padding-bottom: 6px; }
input[type="email"]:focus,
input[type="number"]:focus,
input[type="search"]:focus,
input[type="text"]:focus,
input[type="tel"]:focus,
input[type="url"]:focus,
input[type="password"]:focus,
textarea:focus,
select:focus {
  border: 1px solid #33C3F0;
  outline: 0; }
label,
legend {
  display: block;
  margin-bottom: .5rem;
  font-weight: 600; }
fieldset {
  padding: 0;
  border-width: 0; }
input[type="checkbox"],
input[type="radio"] {
  display: inline; }
label > .label-body {
  display: inline-block;
  margin-left: .5rem;
  font-weight: normal; }
@font-face {
    font-family: 'Oswald';
    font-style: normal;
    font-weight: 700;
    src: url(/lib/fonts/Oswald/Oswald-Regular.ttf) format('truetype');
}
@font-face {
    font-family: 'OswaldBold';
    font-weight: bold;
    src: url(/lib/fonts/Oswald/Oswald-Bold.ttf) format('truetype');
}
@font-face {
    font-family: 'RobotoCondensed';
    font-weight: normal;
    src: url(/lib/fonts/Roboto_Condensed/RobotoCondensed-Regular.ttf) format('truetype');
}
@font-face {
    font-family: 'RobotoCondensedBold';
    font-weight: bold;
    src: url(/lib/fonts/Roboto_Condensed/RobotoCondensed-Bold.ttf) format('truetype');
}
app.js
@@ -5,7 +5,7 @@
function app_init() {
  $('.ost').hide();
  //app_menu_init("menu/", "hauptmenue.json", "../jslib/app-menu/app-menu.tpl", ".west");
  app_menu_init("menu/", "hauptmenue.json", "../jslib/app-menu/app-menu.tpl", ".west");
  //app_get_template('tpl/home.tpl', 'home');
  //app_get_template('tpl/prefs.tpl', 'prefs');
  $('.sued').text('Bereit.');
bilder/radio-bob-logo.png
bilder/table_radio_light.png
bilder/tabletop_radio.png
menu/hauptmenue.json
New file
@@ -0,0 +1,27 @@
{
  "menue": {
    "menuetitel": "Hauptmenü",
    "wurzel": true,
    "vorgaenger": {
      "vtitel": "",
      "vverweis": ""
    },
    "inhalt":  [
      {
        "titel": "Einstellungen",
        "umenue": false,
        "funktion": "app_show_prefs"
      },
      {
        "titel": "H Menüeintrag 2",
        "umenue": true,
        "verweis": "untermenue-1.json"
      },
      {
        "titel": "H Menüeintrag 3",
        "umenue": false,
        "funktion": "app_menu_message"
      }
    ]
  }
}
menu/untermenue-1.json
New file
@@ -0,0 +1,27 @@
{
  "menue": {
    "menuetitel": "Untermenü 1",
    "wurzel": false,
    "vorgaenger": {
      "vtitel": "Hauptmenü",
      "vverweis": "hauptmenue.json"
    },
    "inhalt": [
      {
        "titel": "U1 Menüeintrag 1",
        "umenue": false,
        "funktion": "app_menu_message"
      },
      {
        "titel": "U1 Menüeintrag 2",
        "umenue": true,
        "verweis": "untermenue-2.json"
      },
      {
        "titel": "U1 Menüeintrag 3",
        "umenue": false,
        "funktion": "app_menu_message"
      }
    ]
  }
}
menu/untermenue-2.json
New file
@@ -0,0 +1,27 @@
{
  "menue": {
    "menuetitel": "Untermenü 2",
    "wurzel": false,
    "vorgaenger": {
      "vtitel": "Untermenü 1",
      "vverweis": "untermenue-1.json"
    },
    "inhalt":  [
      {
        "titel": "U2 Menüeintrag 1",
        "umenue": false,
        "funktion": "app_menu_message"
      },
      {
        "titel": "U2 Menüeintrag 2",
        "umenue": false,
        "funktion": "app_menu_message"
      },
      {
        "titel": "U2 Menüeintrag 3",
        "umenue": false,
        "funktion": "app_menu_message"
      }
    ]
  }
}
sender.css
New file
@@ -0,0 +1,30 @@
.sender-behaelter {
  display: flex;
  flex-flow: column;
}
.sender {
  display: flex;
  flex-flow: row;
  flex-wrap: wrap;
  background-color: #eaeaea;
  width: 100%;
}
.sender-kachel {
  display: flex;
  flex-flow: column;
  align-items: center;
  margin: 0.4em;
  background-color: white;
}
.sender-name {
  font-family: RobotoCondensedBold;
}
.sender-bild {
  width: 40px;
  background-color: #ebe6e6;
}
sender.html
New file
@@ -0,0 +1,72 @@
<!DOCTYPE html>
<html>
  <head>
    <title>Sender</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="sender.css">
    <link rel="stylesheet" type="text/css" href="app.css">
  </head>
  <body>
    <!-- Kopfzeile -->
    <div class="nord">
      <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>
      <!-- zentraler Inhaltsbereich -->
      <div class="zentrum">
        <div id="prefs"></div>
        <div id="home"></div>
        <div class="sender-behaelter">
          <div id="sender" class="sender">
            <div class="sender-kachel">
              <div class="sender-name">Sender 1</div>
              <div class="sender-bild-behaelter"><img class="sender-bild" src="bilder/table_radio_light.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.png"></div>
            </div>
            <div class="sender-kachel">
              <div class="sender-name">Sender 3</div>
              <div class="sender-bild-behaelter"><img class="sender-bild" src="bilder/table_radio_light.png"></div>
            </div>
            <div class="sender-kachel">
              <div class="sender-name">Sender 4</div>
              <div class="sender-bild-behaelter"><img class="sender-bild" src="bilder/table_radio_light.png"></div>
            </div>
          </div>
        </div>
      </div>
      <!-- oestliche Seitenleiste -->
      <div class="ost">
        östliche Seitenleiste
      </div>
    </div>
    <!-- Fusszeile -->
    <div class="sued">
      Fußzeile
    </div>
    <script src="../jslib/jquery-1.11.1/jquery-1.11.1.min.js"></script>
    <script src="../jslib/mustache/mustache.min.js"></script>
    <script src="../jslib/app-menu/app-menu.js"></script>
    <script src="app.js"></script>
    <script type="text/javascript" charset="utf-8">
      $(document).ready(function() {
        app_init();
      });
    </script>
  </body>
</html>