University-of-Potsdam-MM / Freiraum.UP

This repository is now maintained at the internal Git server at University of Potsdam.
http://www.uni-potsdam.de/elis/e-learninganderup/e-learning-dienste-der-up/freiraumup.html
2 stars 0 forks source link

Freiraum.UP

Vorstellung

Dies ist die Neuimplementierung der Anwendung Freiraum.UP.

img

Die Anwendung bietet eine Übersicht im Alltag der Studierenden. Freiraum.UP beinhaltet aktuell die Funktionen:

Freiraum.UP kann in zwei verschiedenen Modi (interaktiv, nicht interaktiv) betrieben werden. Außerdem kann Freiraum.UP sowohl im Hoch- als auch im Querformat verwendet werden. Die Anwendung wurde für den Betrieb im Format 16:9 entwickelt.

Lokales Ausführen

# Abhängigkeiten installieren
$ npm install
# Server starten und Anwendung ausführen
$ ionic serve 

Build

$ npm install -g cordova ionic
$ ionic cordova platform add browser  
$ ionic cordova prepare browser
$ ionic cordova build browser --release

Konfiguration

Damit die Anwendung funktioniert muss eine Datei config.json im Verzeichnis src/assets/ platziert werden. Diese Datei konfiguriert die gesamte Anwendung. Das Verzeichnis configs enthält Beispiele solcher Konfigurationen für manche Gebäude der Universität Potsdam. Diese können bereits verwendet werden, es muss lediglich ein Wert für das zu verwendende Token in config.api.authorization eingetragen werden. Eine Dokumentation der möglichen Optionen kann hier vorgefunden werden.

Funktionsweise

Die in der Anwendung aktiven Seiten können in der Datei src/app/pages.config.ts angepasst werden. Es können neu implementierte Seiten hinzugefügt und bestehende entfernt oder angepasst werden. Eine einzelne Seite wird als Objekt der folgenden Form konfiguriert.

  {
    component: MensaPageComponent,
    name: 'mensa',
    icon: 'pizza',
    interactiveModes: [true, false]
  }

Die so definierten Komponenten werden in der Hauptkomponente src/app/home/home.page.ts automatisch importiert und dann eingebettet.

Komponenten

Erstellung neuer Seiten

Eine neue Seite wird im Verzeichnis src/app/pages/ angelegt. Dafür kann zum Beispiel das Skript ionic g component $NAME verwendet werden (sollte in jenem Verzeichnis ausgeführt werden). Um die Seite dann zu verwenden muss ein Eintrag in der bereits erwähnten Datei src/app/pages.config.ts für diese erstellt werden.

Um auf die Funktionen der abstrakten Seite (src/app/components/basic-page) zugreifen zu können sollte die neue Komponente noch die BasicPageComponent extenden (NewPage extends BasicPageComponent).

Anzeigen

Die Seite AdsPage kann Anzeigen darstellen, die von einer vordefinierten URL abgerufen werden. Dazu muss die Konfiguration der AdsPage in der config.json zum Beispiel folgendes enthalten:

"ads": {
  // Legt fest, dass die verfügbaren Anzeigen jede Stunde geholt werden
  "update_frequency": 3600,
  // Legt die Datei fest, die unter 'url' vorzufinden ist und die Anzeigen definiert.
  // Sie könnte also auch "ads.json" oder nur "anzeigen" heißen. Wichtig ist nur, dass der
  // hier verwendete Bezeichner dem Namen der tatsächlichen Datei entspricht-
  "adsConfig": "ads-config.json",
  // url, unter der sich die ads-config.json und die Anzeigen in Form von HTML-Dateien befinden 
  "url": "https://die.url.fuer.ads.de/"
}

Der im Hintergrund laufende AdsService ruft dann zuerst die Datei ${url}${adsConfig} ab. Diese sollte die Anzeigen im folgenden Format enthalten:

[
  {
    // ein Name, der für debugging verwendet werden kann
    "name": "Werbung für irgendwas",
    // der exakte Name der HTML-Datei, die unter ${url} gefunden werden kann
    "file": "sample-ad0.html",
    // Datum, ab dem die Anzeige gezeigt werden soll
    "startDate": "2020-04-01",
    // Datum, bis zu dem die Anzeige gezeigt werden soll
    "endDate": "2020-04-30"
  },
  {
    "name": "Werbung für irgendwas anderes",
    "file": "sample-ad1.html",
    "startDate": "2020-04-01",
    "endDate": "2020-04-30"
  }
]

Die hier beschriebenen Anzeigen werden dann sukzessive per HTTP-GET an ${url}${file} geholt und, falls sie im Moment angezeigt werden sollen, in der AdsPage eingebunden.

Deployment

Manuell

Das Deployment der Anwendung erfolgt für den Browser mittels:

# nur beim ersten Mal notwendig
$ ionic cordova platform add browser
$ ionic cordova prepare browser
$ ionic cordova build browser --release

Das Ergebnis dieser Befehle ist unter anderem das Verzeichnis /platforms/browser/www. Der Inhalt dieses Verzeichnisses muss mittels eines Webservers zugänglich gemacht werden.

Automatisch mittels CICD

Alternativ besteht auch die Möglichkeit, die Anwendung von GitLab mittels CICD deployen zu lassen. Der Ablauf des automatischen Deployments wird mit der Datei .gitlab-ci.yml gesteuert. Aktuell wird die Anwendung dadurch bei jedem Push auf den master automatisch gebaut, getestet und anschließend mittels der im dazugehörigen GitLab-Projekt definierten Umgebungsvariablen deployed (siehe das Skript deploy).

Die benötigten Umgebungsvariablen sind: