Warning: include_once(/var/www/html/pmwiki-2.2.86/cookbook/soap4pmwiki/soap4pmwiki.php): failed to open stream: No such file or directory in /var/www/html/fields/dbp11/local/config.php on line 4

Warning: include_once(): Failed opening '/var/www/html/pmwiki-2.2.86/cookbook/soap4pmwiki/soap4pmwiki.php' for inclusion (include_path='.:/opt/php/lib/php') in /var/www/html/fields/dbp11/local/config.php on line 4

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/fields/dbp11/local/config.php:4) in /var/www/html/pmwiki-2.2.86/pmwiki.php on line 1250
Datenbankpraktikum SS 2011 - Frontend - Trips

Fahrten

Vorwort

Der folgende Abschnitt behandelt den Aufbau und die Funktion der Unterseiten der Fahrten. Hierzu gehören die Übersichtsseite über alle Fahrten des jeweiligen Benutzers, die Formularseite zum Anlegen einer neuen Fahrt und die Detailansichten der Fahrten.

Besondere Aufmerksamkeit ruht hierbei auf dem schematischen Aufbau und der bedingten Ausgabe von Inhalten. Auf den besagten Seiten verwendete JavaScript-Funktionalitäten werden in einem gesonderten Abschnitt dieser Dokumentation genauer erläutert (siehe Kapitel 2.4 Javascript).

Index

Die Indexseite der Fahrten ist gleichzeitig Übersicht über alle eigenen Fahrten und Startseite nach dem Login in das Benutzerkonto.

Unterhalb eines Buttons, zum Anlegen einer neuen Fahrt, werden die Fahrten des Benutzers in vier untereinander angeordneten Tabellen kategorisiert:

  • Tabelle 1:
    Enthält die noch ausstehenden Fahrten, die der Benutzer als Fahrer antritt.
  • Tabelle 2:
    Enthält alle beendeten Fahrten, die der Benutzer als Fahrer angetreten hat.
  • Tabelle 3:
    Hier werden alle noch ausstehenden Fahrten aufgelistet, die der Benutzer als Mitfahrer antreten wird.
  • Tabelle 4:
    Die letzte Tabelle enthält, analog zur zweiten, alle beendeten Fahrten, die der Benutzer als Mitfahrer antrat.

Die Tabellen werden jeweils chronologisch absteigend sortiert vom Controller übergeben. Falls noch keine zur jeweiligen Tabelle passende Fahrt existiert, wird dies mittels einer einzeiligen Tabelle angemerkt. Andernfalls wird je Fahrt eine Zeile mit groben Informationen und einem Link zur Detailansicht der Fahrt angezeigt. Das folgende Schema veranschaulicht den Aufbau der Index-Seite:

Abb. 1: Schema der Indexseite

Neue Fahrt erstellen

Wie im vorherigen Abschnitt beschrieben, befindet sich auf der Übersichtsseite der Fahrten außerdem ein Button mit der Aufschrift Neue Fahrt. Ein Klick auf diesen Button leitet den Benutzer zu einer Formularseite, mit deren Hilfe eine neue Fahrt als Fahrer erstellt werden kann. Hierbei hat der Benutzer die Möglichkeit, den Start- und Zielort in Form von Freitext einzugeben.

Abb. 2: Aufbau des Formulars Neue Fahrt

Die Zeitangaben für den Start der Fahrt erfolgen mit Hilfe von Dropdown-Listen (Select-Tag in HTML). Die voreingestellte Zeit entspricht der Zeit, zu der der Benutzer das Formular aufruft. Die Liste für Minuten ist in fünfer Schritten aufgelöst, was eine benutzerfreundliche Verwendung ermöglicht: die Liste wird dadurch kleiner. Außerdem sind wir davon ausgegangen, dass es schwer möglich ist, im Straßenverkehr bis auf die Minute genau zu planen. Das Voreinstellen der aktuellen Zeit geschieht per Ruby, bevor das Formular an den Webbrowser geschickt wird. Hierzu werden die passenden Werte der Dropdown-Listen via HTML als Startwerte markiert. Dies wird beispielhaft an der Dropdown-Liste für die Minuten veranschaulicht:

%select{:name => "start_minute", :required => "required"}
  - 12.times do |i|
    - if i*5 < 10
      - if i*5 > Time.now.min and (i-1)*5 <= Time.now.min
        %option{:value => "0"+(i*5).to_s, :selected => "selected"}= "0#{i*5}"
      - else
        %option{:value => "0"+(i*5).to_s}= "0#{i*5}"
    - else
      - if i*5 > Time.now.min and (i-1)*5 <= Time.now.min
        %option{:value => (i*5).to_s, :selected => "selected"}= "#{i*5}"
      - else
        %option{:value => (i*5).to_s}= "#{i*5}"

Die Minuten-Liste wird mit zwölf Werten gefüllt, von 0 bis 55. Bevor ein Wert ins HTML-Formular ausgegeben wird, wird geprüft, ob die aktuelle Uhrzeit (in diesem Fall der Wert der Minuten) kleiner ist, als der auszugebene Wert, und größer ist, als der vorher ausgegebene Wert (also ob sich der aktuelle Wert für die Minuten zwischen zwei auszugebenen Werten liegt). Ist dies der Fall, wird der Wert ins HTML-Dokument geschrieben und als ausgewählt markiert. Auf diese Weise wird als voreingestellte Zeit immer der nächste fünf-Minuten-Schritt ausgewählt. Außerdem wird, um die Ausgabe ästhetisch ansehnlicher zu gestalten, bei auszugebenen Werten kleiner zehn eine "0" vorangestellt.

Ruby on Rails bietet für einfache Formulare, deren Werte problemlos direkt in ein Datenmodell geschrieben werden können, eine solche Funktionalität an. Jedoch ist es hier nicht möglich, diese Funktionalität zu nutzen, da die Kommunikation mit dem Controller der Fahrten per POST-Paramter erfolgen muss, damit einige der eingegebenen Daten weiterverarbeitet werden können, bevor sie in das passende Datenmodell geschrieben werden.

Als nächstes erfolgt die Wahl des zu verwendenden Fahrzeuges via Dropdown-Liste. Hier sind alle vom Benutzer angegebenen Fahrzeuge in der Form Modellname (Anzahl Sitzplätze) aufgelistet. Darunter kann man wiederum per Dropdown-Liste die Anzahl an Sitzplätzen für diese Fahrt variieren. Hintergrund hierbei ist, dass der Fahrer möglicherweise von sich aus schon mögliche Plätze belegt oder nur eine gewisse Anzahl an Mitfahrern wünscht. Die neue Zahl an Sitzplätzen kann nur kleiner oder gleich der für das Auto angegebenen Sitzplätze sein. Dies wird per JavaScript gewährleistet. Wird ein anderes Fahrzeug gewählt, wird die Dropdown-Liste für die Anzahl an Sitzplätzen entsprechend angepasst. Weiter kann der Fahrer angeben, ob die Mitnahme von Gepäck möglich ist. Dies geschieht per Checkbox.

Das letzte Eingabefeld bietet dem Fahrer abschließend die Möglichkeit, einen kleinen Hinweistext zu hinterlassen. Dabei wird beständig angezeigt, wieviele Zeichen hierfür noch verwendet werden dürfen.

Detailansicht für Fahrten

Dieser Abschnitt der Dokumentation befasst sich letztlich mit der Detailansicht der Fahrten.

Abb. 3: Die Detailansicht einer Fahrt aus Sicht des Fahrers

Die Seite besteht aus einer Tabelle mit zwei Spalten. Die erste Spalte beinhaltet Informationen für die Fahrt, Mitfahrer und Bewerber, die jeweils wiederum einer Tabelle entsprechen. Die zweite Spalte enthält eine Karte der Route, Länge der Strecke und geschätzte Fahrzeit. Überhalb der umschließenden Tabelle befindet sich zusätzlich eine Überschrift, ein Button zum Löschen der Fahrt und einer zum Zurückkehren auf die vorherige Seite.

Abb. 4: Schema der Detailansicht von Fahrten

Welche Informationen auf dieser Seite angezeigt werden, hängt vom Status des Benutzers ab. Hierzu liefert der Controller der Trips eine Variable mit Informationen hierüber an die View. Diese Variable wiederum kann mit Status-Variablen verglichen werden, um auf diese Weise eine statusabhängige Ausgabe zu erzeugen. Folgendes Schema stellt dar, wie die Sichtbarkeit organisiert ist:

Abb. 5: Statusabhängige Anzeige von Informationen

Jeder Benutzer darf Informationen über den Fahrer anschauen, ihm eine Nachricht schreiben, die Karte sehen und den Zurück-Button benutzen. Das Bewerten des Fahrers ist jedoch ausschließlich den Mitfahrern vorbehalten. Der entsprechende Link wird auch erst nach Ablauf der Fahrt angezeigt. Um herauszufinden, ob die Fahrt bereits vorbei ist, ist im Model eine entsprechende Methode implementiert. Weiter dürfen die Mitfahrer sich gegenseitig Nachrichten schicken und bewerten (ebenfalls nach Fahrtende) und auch vom Fahrer bewertet werden. Aus der Fahrt austragen kann sich jeder Mitfahrer selbst. Ebenso kann der Fahrer jeden Mitfahrer von der Fahrt ausschließen. Weiter werden Links zu den Profilen der Mitfahrer aus Datenschutzgründen nur für den Fahrer und die Mitfahrer angezeigt. Gäste und Bewerber können daher nicht unmittelbar die Identität der vorhandenen Mitfahrer ermitteln.

Die Bewerbungen in der entsprechenden Tabelle werden nur dem Fahrer und dem jeweiligen Bewerber angezeigt. Der Datensatz eines Bewerbers wird ihm jedoch ebenfalls angezeigt, zusammen mit einem Link, um die Bewerbung zurückzunehmen. Hat sich ein Benutzer noch nicht für eine Fahrt beworben, so wird im ein entsprechender Link zum Bewerben angezeigt. Der Fahrer kann außerdem über entsprechende Links Bewerbungen annehmen, ablehnen und den Bewerbern eine Nachricht schreiben.


Page last modified on August 20, 2011, at 02:49 PM