Ein universelles Menü für Webanwendungen
edit | blame | history | raw

app-menu

Ein Menü für Webanwendungen.

Beschreibung

Das app-menu ist eine Liste von Auswahlpunkten für eine Webanwendung. Der Benutzer kann aus ihnen wählen um Funktionen auszuführen oder ein weiteres Menü aufzurufen. Eine große Anzahl von Funktionsaufrufen kann auf hierarchisch verschachtelte Menüs verteilt werden, deren Beschreibungen vom app-menu dynamisch geladen werden.

Menüinhalte werden während der Ausführung der Webanwendung aus Beschreibungen geformt, die in der JavaScript Object Notation (JSON) hinterlegt sind. Die Gestaltung des Menüs wird über ein Cascading Stylesheet (CSS) bestimmt.

Mit der Demo-Anwendung kann das app-menu direkt im Browser ausprobiert werden.

Einbau des app-menu in eine Webanwendung

Das app-menu wird wie folgt in eine Webanwendung eingebaut.

  1. Hinzufügen des Ordners app-menu
  2. Einbinden von Mustache
  3. Einbinden des Stylesheets
  4. Herstellen der Menübeschreibungen
  5. Aufruf der Funktion app_menu_init

Die obigen Schritte sind nachfolgend im Detail beschrieben.

Hinzufügen des Ordners app-menu

Damit eine Webanwendung das app-menu verwenden kann, wird der Inhalt des Ordners app-menu der Webanwendung zugänglich gemacht. Für die weitere Beschreibung wird angenommen, dass der Ordner app-menu in einem Ordner jslib abgelegt wurde und dass eine Datei index.html den Einstiegspunkt in die Webanwendung bildet.

/webanwendung
  /jslib
    /app-menu
  /menu
  index.html
  ..

Die folgenden Schritte beschreiben die Ergänzungen in der Datei index.html für eine Verwendung des app-menu.

Einbinden der Abhängigkeiten

Das app-menu verwendet die JavaScript-Bibliothek Mustache. Sie wird einer Webanwendung hinzugefügt, indem ihr Skript wie folgt eingebunden wird.

<script src="https://cdnjs.cloudflare.com/ajax/libs/mustache.js/2.3.0/mustache.min.js"></script>

Das obige Beispiel bindet Mustache aus dem Content Delivery Network cdnjs ein. Stattdessen kann die JavaScript-Komponente auch lokal ausgeliefert werden.

Einbinden des Stylesheets

Zur Regelung des Erscheinungsbildes von Menüs wird das Stylesheet eingebunden.

<link rel="stylesheet" type="text/css" href="jslib/app-menu/app-menu.css">

Einbinden des Skripts

Die Funktionen des app-menu sind im Skript app-menu.js enthalten.

<script src="jslib/app-menu/app-menu.js"></script>

Mit dem obigen Eintrag werden die Funktionen des app-menu der Webanwendung zugänglich gemacht.

Herstellen der Menübeschreibungen

Menüs werden vom app-menu während der Ausführung der Webanwendung dynamisch aus JSON-Strukturen erstellt. Eine Beschreibung sieht wie folgt aus

{
  "menue": {
    "menuetitel": "Hauptmenü",
    "wurzel": true,
    "vorgaenger": {
      "vtitel": "",
      "vverweis": ""
    },
    "inhalt":  [
      {
        "titel": "H Menüeintrag 1",
        "umenue": false,
        "funktion": "app_menu_test"
      },
      {
        "titel": "H Menüeintrag 2",
        "umenue": true,
        "verweis": "untermenue-1.json"
      },
      {
        "titel": "H Menüeintrag 3",
        "umenue": false,
        "funktion": "app_menu_test_2"
      }
    ]
  }
}

Der Schalter wurzel legt fest, ob noch ein übergeordnetes Menü dargestellt wird. Wenn ja (wurzel=false) wird in vorgaenger.vverweis der Name der Menübeschreibung und in vorgaenger.vtitel der Name, unter dem der Eintrag im Menü erscheinen soll angegeben. Der Schalter umenue legt fest, ob ein Menüeintrag auf ein Untermenü verweist. Ist umenue=true muss in verweis der Name der Menübeschreibung angegeben sein.

Im Element funktion eines Menüeintrages wird ein Funktionsname notiert. Die so benannte Funktion wird aufgerufen, wenn das Menü gewählt wird. Eine solche Funktion darf keine Parameter erwarten und muss im Javascript existieren, das die betreffende Web-App begleitet.

Für jedes Menü, das in der Webanwendung gezeigt werden soll, muss eine Beschreibung im oben angegebenen Format existieren. Menübeschreibungen können beispielsweise in einem Unterordner menu abgelegt und der Webanwendung beigegeben werden, wie es weiter oben geschildert ist.

Beispiele für Menübeschreibungen finden sich im Code der Demo-Anwendung.

Aufruf des Menüs

Zu Beginn der Ausführung einer Webanwendung muss das app-menu mit folgendem Funktionsaufruf initialisiert werden.

app_menu_init("menu/", "hauptmenue.json", "jslib/app-menu/app-menu.tpl", ".west", "5em");

Der Aufruf der Funktion app_menu_init bewirkt, dass die Vorlage jslib/app-menu/app-menu.tpl zur Darstellung
des Menüs geladen und das Menü gezeigt wird, das mit der JSON-Struktur hauptmenue.json beschrieben ist. Das Menü wird an der Stelle des Elements mit dem Klassennamen west dargestellt. Nachfolgend die Parameter der Funktion app_menu_init in der Übersicht.

  1. Name des Unterverzeichnisses mit Menübeschreibungen
  2. Name der Menübeschreibung, die zuerst angezeigt werden soll
  3. Unterverzeichnis und Name der Vorlage für Mustache
  4. Name des HTML-Elements, das das Menü aufnehmen soll
  5. Breite des Menüs

Der dritte Parameter bezeichnet eine Vorlage, die mit Hilfe von Mustache während der Ausführung der Webanwendung Menübeschreibungen in JSON nach HTML umwandelt. Die so bezeichnete Vorlage fungiert als Bindung zwischen den Menübeschreibungen im JSON-Format und dem HTML, das aus den JSON-Beschreibungen entstehen soll. Die Vorlage kann genutzt werden, um das HTML, aus dem ein Menü bestehen soll, nach eigenen Wünschen zu verändern.