Beispiele umgesetzter Projekte

Schachbundesliga - Ligaverwaltung

Aufgabe

Die Schachbundesliga ist die stärkste Schachliga der Welt. In den Mannschaften spielen viele der aktuellen Top-Großmeister wie Viswanathan Anand, Levon Aronian oder Peter Svidler. Die alte Website für die Liga sollte eine Erneuerung erfahren. Ziel war eine moderne und ansprechendere Darstellung, mehr interessante Inhalte und größtere Aktualität. Es sollten zudem Elemente eingebaut werden, wie man sie von anderen Sport-Ligaseiten kennt, z.B. eine Live-Leiste, die die aktuell laufenden und gerade zuende gegangenen Spiele prominent auf der Startseite darstellt.

Design und Konzeption der Seite stammt von Gobsy.de Gobsy machte auch den Großteil der Umsetzung der Seite.

Wir wurden engagiert um den Teil der Ligaverwaltung umzusetzen. Die stattfindenden Spiele werden am Spieltag eingegeben und daraus wird eine Vielzahl von Tabellen generiert: Haupttabelle, Kreuztabelle, Kader der einzelnen Mannschaften mit Ergebnissen der einzelnen Spieler, Spieltagsergebnisse, Seite für den einzelnen Spieler mit seinen individuellen Ergebnissen usw. Ein Match in einer Schachliga besteht aus acht Einzelmatches zwischen zwei Spielern (jede Mannschaft hat acht Spieler), dadurch sind mehr Einzelergebnisse zu verwalten als z.B. in der Fussball-Liga.
Zudem sollten wir die Live-Leiste auf der Startseite umsetzen.

Lösung

Datenstruktur

Es galt zunächst, eine Datenstruktur zu bauen, die eine benutzerfreundliche Eingabe der Spieler, Mannschaften und Matches erlaubt und vor allem zukunftsfähig ist. Auf der Seite werden nach und nach immer mehr Ligadaten angeboten, und auch vergangene Saisons werden nach und nach eingepflegt. Dadurch muss die Lösung skalierbar sein, damit auch bei wirklich vielen Daten die Ladegeschwindigkeit nicht leidet.
Wir schauten uns zunächst ein paar fertige Lösungen an, die es für Drupal durchaus gibt. Jedoch stellte sich schnell heraus, dass für unseren Anwendu

Drupals Entity-System ermöglichte uns, eine gute Struktur zu bauen: Spieler, Mannschaften, Matches und Einzelspiele innerhalb eines Matches sind jeweils getrennte Entities. Diese werden passend verknüpft. Bei der Eingabe eines Mannschaftsmatches fliesst alles zusammen: man wählt die beteiligten Mannschaften aus, und gibt für die einzelnen Spiele, an denen die Spieler beteiligt sind, die Ergebnisse ein. Wenn die Mannschaft ausgewählt ist, werden für die Einzelspiele nur noch die Spieler zur Auswahl angezeigt, die in der betreffenden Saison in der betreffenden Mannschaft spielen.

Datenimport

Die Mannschafts- und Spielerdaten ändern sich jede Saison: Spieler wechseln die Mannschaft oder spielen gar nicht mehr in der Bundesliga, die Mannschaften können ab- und aufsteigen. Die ELO-Wertungszahl für die Spieler ändert sich ständig. Auch die Nation, für die er spielt kann sich für einen Spieler ändern. Jedoch sollen diese Werte pro Saison im derzeitigen Stand korrekt dargestellt werden. Daher werden all diese pro Saison änderlichen Spielerdaten wiederum auch in einer mit dem Spieler verknüpften Entity gepflegt. Dies, wie auch die Einzelspiele im Mannschaftsmatch, setzten wir mit Field Collection um. Wir erhalten die Daten für alle Spieler für jede Saison als tabellarische Daten. Diese jeweils einzeln einzugeben, macht viel Arbeit. Daher bauten für dafür einen Datenimport mit Feeds. Wir starteten auch einen Versuch mit dem Migrate Modul, jedoch funktionierte das mit den Field Collections nicht so gut.

Mit der Datenimport-Schnittstelle ist es jetzt möglich, die Spielerdaten für jede Saison zu importieren. Falls Fehler in den Daten gewesen sein sollten, ist es möglich, den Import mit den korrekten Daten zu überschreiben, auch für vergangene Saisons.

Verknüpfung und Darstellung

Für die Darstellung z.B. der Haupt-Tabelle müssen die Daten verknüpft und teilweise zusammengerechnet werden. Zudem soll die Saison für den Seitenbesucher umschaltbar sein, da einen immer eine konkrete Saison interessiert, im Allgemeinen die aktuelle Saison. Es wird also immer nach Saison und ggf. anderen Kriterien gefiltert. Die Gesamtpunktzahl für eine Mannschaft oder einen Spieler wird zusammengerechnet. Das an sich extrem mächtige Views-Modul, das man in Drupal für solche Darstellungen verwendet, kam hier an seine Grenzen. Wir mussten an vielen Stellen die Werte auf andere Weise errechnen. Im Endprodukt erreichten wir, dass die Spiele wie beschrieben eingegeben werden können, und die ganzen Tabellen für jede Saison automatisch erzeugt werden und immer aktuell sind. Das Ganze dabei mit ansprechend schnellem Seitenaufbau.

Live-Leiste

Die Live-Leiste auf der Startseite stellt die aktuellen bzw. zuletzt gespielten Matches dar. Man kann durch die Spieltage scrollen, und es gibt Links über kleine Icons zu den Ergebnissen, Spielbericht oder einem Video-Bericht, so vorhanden. Während das Spiel läuft, wird "Jetzt live" angezeigt, zudem hat das Ergebnis eine andere Farbe. So kann der schachbegeisterte Zuschauer auf der Startseite auf einen Blick den aktuellen Stand der Spiele erfassen. chess24.com überträgt im Livestream die Spiele, woran Gobsy ebenfalls beteiligt ist. Dieser Livestream ist in der Schachbundesliga-Seite eingebunden. So kann man den Livestream verfolgen, ohne die Seite zu verlassen.