Besonderheiten der Module

Nachdem der allgemeine Aufbau der Module beschrieben wurde, soll nicht unerwähnt bleiben, dass es für einzelne Module auch Besonderheiten gibt, welche nicht in jedem Modul vorhanden sind.

Canteen

Das Konzept des Canteen-Moduls sah vor, dass die bevorstehenden Tage nebeneinander positioniert werden, wobei bei kleinen Displays ein kompletter Tag, bei größeren Displays mehrere Tage angezeigt und durch die Touch-Gesten drag und swipe jeweils zu den anderen Tagen navigiert werden kann. Unterhalb der Gerichte soll durch eine Paginierung ersichtlich sein, welcher Slide (respektive Tag) aktiv ist. Die Besonderheit liegt darin, dass bei einem Orientierungswechsel die Ansicht zwischen einem und mehreren Tagen wechseln und in Abhängigkeit davon, die Paginierung angepasst werden muss. Erforderlich war ein Plugin, welches diese Anforderungen erfüllt und zusätzlich noch Flexibel und Leistungsfähig ist. Swiper erfüllt diese Anforderungen und liefert eine umfangreiche API.

View

Um auf unterschiedliche Displaygrößen und Orientierungswechsel reagieren zu können, wird ein globales Attribut windowWidth mit der aktuellen Breite gesetzt.

Dieses wird immer dann aktualisiert, wenn das resize-Event ausgelöst wird. Die Initialisierung des Swipers erfolgt in der Render-Funktion in Abhängigkeit der Displaybreite. Darin wird die Anzahl der Slides pro Ansicht und pro Gruppe definiert, sowie die Paginierung dementsprechend angepasst.

Wird das resize-Event ausgelöst, aktualisiert sich das Attribut windowWidth und die Funktion handleSlides ändert je nach Displaybreite, ähnlich wie bei der Initialisierung, die Anzahl der Slides pro Sicht und die Paginierung.

Model

Der RSS-Feed des Studentenwerks Freiburg gibt die Tage in Millisekunden aus. Diesem Verhalten ist es geschuldet, dass die Daten aus dem Model erst bearbeitet werden müssen, bevor diese an die View übergeben werden können.

Das aktuelle Datum in Millisekunden wird umgerechnet und mit Hilfe der Tagesund Monatsnummer der Wochentag und Monatsname bestimmt. Anschließend wird das Datum in der gewünschten Form zusammengesetzt und zusammen mit den restlichen Daten an die View übergeben.

Lecture

Bei vielen Modulen wird für eine Vorfilterung eine Liste eingesetzt, um den Benutzer an die gewünschte Information zu führen. Diese Listen kommen oftmals in einer ähnlichen Form bei mehreren Modulen vor. Das Contact-Modul greift auf ein Hilfsmodul (Faculty) zu, welches die Fakultäten und Studiengänge bereithält. Das eigentliche Modul beginnt erst ab der Auswahl der Semester.

Router

Der LectureRouter baut auf dem FacultyRouter auf und erweitert diesen um zusätzliche Routen und Funktion. Dadurch kann auf Funktionen des FacultyRouters zugegriffen und diese im LectureRouter aufgerufen werden. Im LectureRouter werden alle Routen definiert, beinhaltet jedoch nur die Funktionen für den Aufruf der Views ab der Semesterauswahl. Beim Aufruf einer View werden zusätzliche Attribute (fid, cid, sid und lid) übergeben, um diese im Template, beispielsweise für Links oder für spezielle CSS-Klassen, nutzen zu können.

View

Die View nimmt diese zusätzlichen Attribute in der Initialisierungs-Funktion im Objekt options auf. Die Übergabe an das Template erfolgt in der Render-Funktion:

this.el.innerHTML = this.template({
        lecture: this.collection.toJSON(),
        fid: this.options.fid,
        cid: this.options.cid,
        sid: this.options.sid,
        lib: this.options.lib
});

Faculty

Das bereits erwähnte Hilfsmodul liefert alle Fakultäten und die dazugehörigen Studiengänge sowie die Semester und kann von anderen Modulen verwendet werden.

Router

Der Router übergibt der View verschiedene Parameter, welche für die Zusammensetzung der URL für das Model, sowie für das Template genutzt werden.

View

Die View erhält diese Parameter im options-Objekt und übergibt dieses Objekt dem Model.

Model

Das Model erhält diese Parameter ebenfalls im options-Objekt der Initialisierungs- Funktion und setzt daraus die URL der API zusammen. Dadurch ist es möglich für beispielsweise unterschiedliche Studiengänge Informationen aus der API mit nur einem Model zu erhalten.

News

Das Konzept des News-Moduls sah vor, dass alle News in einer nach Datum geordneten Liste untereinander Platziert, angezeigt werden. Nach Tap auf eine Neuigkeit, wird diese komplett in einer neuen View geladen.

Model

Das Model für die Newsliste ruft sämtliche Daten von der API ab und wurde um das Attribut „newsid“ ergänzt, womit eine eindeutige Adressierung einer Nachricht möglich ist, welche durch eine weitere View aufgerufen werden kann. Eine einzelne Nachricht wird anhand der „newsid“ im Model gefiltert und an die View übergeben.

View

Zwar liefert die API auch die Artikelbilder, welche in der Nachrichtenliste links neben dem Text platziert sind, jedoch sind das Links zu den Originalbildern von Typo3, welche zum Teil eine Dateigröße von sechs Megabyte überschreiten. Typo3 generiert aus den Bildern kleinere Thumbnails, jedoch wird der Link zu diesen Bildern nicht im RSS-Feed von Typo3 angezeigt. Um unnötige Ladezeiten bedingt geringer Bandbreite zu vermindern, wird stattdessen ein Platzhalterbild angezeigt.