Live-Tabelle der DEL(2) im DEG Fanforum

  • jan1936:

    Super, danke für die Info. Die Schlusssirene beim DEG-Spiel war um 21:42:01 (ich war im Dome und hab das extra deswegen notiert), die Datenquelle sagt 21:44:25, also fast 2½ Minuten später. Überträgt man dieses Offset auf das KEV-Spiel, müsste es schon um ca. 21:55:45 beendet gewesen sein. Ein solches Delay wird die TV-Übertragung aber kaum gehabt haben.

    Vielleicht sind die Zeitangaben der Datenquelle aber auch nicht bei allen Spielen gleich (un)zuverlässig.

    Just another administrator.

  • Danke. Da ist das Ende der Fahnenstange aber auch noch nicht erreicht. Melde mich.

    Neben der Position wird jetzt auch die aktuelle Verschiebung nach oben oder unten mit der Anzahl der Plätze angezeigt, um die sich die Position eines Teams im Vergleich zum vorherigen Spieltag verbessert oder verschlechtert hat.

    Melde mich dazu noch ausführlicher, weil wir hier eine andere Logik anwenden als sonst überall üblich, speziell bei "Offset"-Spieltagen, an denen vorgezogene oder nachgeholte Spiele stattfinden.

    Das erstmal nur als schnelle Info vorab. Ist im Moment auch noch Testphase, Fehler sind nicht auszuschließen.

    Just another administrator.

  • Apropos Fehler: "Lustig" die Live-Tabelle der DEL2: Da läuft das Spiel von Kassel in Weiden beim Stand von 0:1 immer noch, und Kassel ist demzufolge aktuell Spitzenreiter.

    Abgesehen davon wird stumpf die komplette DEL2-Seite inkl. der nervtötenden Werbung alle 30 Sekunden neu geladen, obwohl sich momentan gar nichts ändern kann (und zwar sogar dann, wenn sie nicht im Vordergrund ist!). Die Tabelle im Forum hingegen wird völlig unabhängig vom Rest der Startseite und vollkommen unmerklich aktualisiert, und das auch nur dann, wenn aktuell Spieltag ist und sich etwas geändert hat (also irgendwo ein Tor gefallen ist). Das ist nicht gut programmiert vom Dienstleister der DEL2.

    Jedenfalls um so besser, dafür keine 3.000 € ausgegeben zu haben.

    Bitte melde Dich an, um diesen Link zu sehen.

    Just another administrator.

  • Neben der Position wird jetzt auch die aktuelle Verschiebung nach oben oder unten mit der Anzahl der Plätze angezeigt, um die sich die Position eines Teams verbessert oder verschlechtert hat.

    Melde mich dazu noch ausführlicher, weil wir hier eine andere Logik anwenden als sonst überall üblich, speziell bei "Offset"-Spieltagen, an denen vorgezogene oder nachgeholte Spiele stattfinden.

    Einen solchen "Offset"-Spieltag haben wir ja heute (Krefeld vs. Regensburg, Nachholspiel vom 2. Spieltag). Was unterscheidet nun unsere Tabelle hinsichtlich der Verschiebung von Plazierungen von allen anderen gängigen Tabellen? Das:

    • Die DEL2, FlashScore, kicker etc. würden jetzt alle Änderungen, die sich aufgrund des letzten regulären Spieltags am vergangenen Sonntag ergeben haben, löschen, somit unter den Tisch fallen lassen und nur die Verschiebungen in Relation zum Stand vom Sonntag ausweisen, obwohl es sich gar nicht um einen regulären Spieltag (sondern nur um ein einziges Nachholspiel) handelt. Die Logik der Forum-Tabelle hingegen fasst dieses Nachholspiel mit dem vorherigen regulären Spieltag vom Sonntag zusammen und errechnet daraus die Verschiebungen in der Tabelle.
      Beispiel: Würde Regensburg heute in Krefeld gewinnen, hätte Regensburg 31 Punkte, würde damit auf Platz 5 klettern und die DEG überholen, die ihrerseits auf Platz 6 zurückfiele. Übliche Anzeige: Regensburg ▲2 Plätze (von Platz 7 aktuell), DEG ▼1 Platz (von Platz 5 aktuell).
      Die Forum-Tabelle rechnet anders, nämlich ausgehend vom vorherigen regulären Spieltag am Freitag zuvor: Danach würde für Regensburg im Falle eines Sieges in Krefeld gar keine Veränderung angezeigt werden (weil sie schon am Freitag auf Platz 5 standen), und bei der DEG statt der bisherigen ▲3 nur noch eine ▲2 (weil von Platz 8 am Freitag jetzt auf Platz 6 am Dienstag).
      Diese Logik gilt aber eben speziell für diese "Offset"-Spieltage für nachgeholte oder vorgezogene Spiele außer der Reihe (und natürlich für alle Teams gleichermaßen, das Beispiel Regensburg und DEG bot sich aufgrund der Tabellen- und Spieltagskonstellation aber nun mal gerade an). Ansonsten wird ganz normal von regulärem Spieltag zu nächstem regulären Spieltag gerechnet wie sonst überall auch. Bin selbst gespannt, ob das wie gewollt funktionieren wird.
    • Ein weiteres kleines Gimmick betrifft die Anzeige des im Live-Modus roten (statt im Idle-Modus grauen) DEG-Logos in der Titelzeile der Tabelle:
      Dieses dreht sich im Intervall von 5 Sekunden (in diesem findet die Prüfung statt, ob sich an den Daten etwas verändert hat) für eine halbe Sekunde einmal um die eigene Achse. Das ist jetzt aber keine Grafik, die sich "stumpf" zu einem x-beliebigen Zeitpunkt alle 5 Sekunden für eine halbe Sekunde dreht. Das wäre zwar auch möglich, hätte dann aber keinerlei Bedeutung und wäre nur Show oder Fake. Sondern es ist eine sich permanent drehende SVG-Grafik, die exakt in dem Moment das ansonsten statische DEG-Logo für eine halbe Sekunde überlagert, in der die Routine den letzten Datenstand tatsächlich abruft und mit dem vorherigen Stand abgleicht. Letztlich also ein echter Indikator und eine Kontrolle dafür, dass die Tabelle "lebt" und tatsächlich arbeitet. Sieht man dieses sich alle 5 Sekunden drehende DEG-Logo nicht, stimmt irgendwas nicht und die Live-Tabelle wäre somit auch nicht mehr "live".
    • Im Unterschied zu vielen anderen gängigen Tabellen (z.B. FlashScore) zeigen wir die Platzverschiebungen auch nach Beendigung eines Spieltages bis zum Beginn des nächsten Spieltages weiterhin an.

    Just another administrator.

  • Bin selbst gespannt, ob das wie gewollt funktionieren wird.

    Na super! Abgesehen davon, dass Regensburg verloren hat, stimmt die Anzeige der Positionsveränderungen ja mal gar nicht (mehr).

    Und zu allem Unglück ist die gesamte umfangreiche Konversation mit dem Kollegen Chat GPT, mit dem ich das alles über Wochen entwickelt habe, offenbar und aus unerfindlichen Gründen komplett futsch, so dass ich diesbzgl. zwar nicht bei Null anfangen muss (der Code ist ja noch da), aber es fehlt nun die Historie und ich muss dem neuen "Kollegen" alles von vorne erklären. :fluchen:

    EDIT 7 Stunden später: Der wesentliche Bug ist lokalisiert, die Anzeige stimmt (erstmal) wieder, und aus dem Nichts ist plötzlich auch die laut Support unwiederbringlich verlorene Konversation wieder da. Aber ich will Euch nicht langweilen, immer weiter (auch wenn ich gerade maximal genervt bin).

    EDIT #2: Die Tabelle stimmt natürlich insofern noch nicht, weil die 3 Punkte für Kassel am grünen Tisch noch nicht berücksichtigt sind. Aber da kann ich nichts machen, das muss die Datenquelle einpflegen.

    Just another administrator.

  • EDIT #2: Die Tabelle stimmt natürlich insofern noch nicht, weil die 3 Punkte für Kassel am grünen Tisch noch nicht berücksichtigt sind. Aber da kann ich nichts machen, das muss die Datenquelle einpflegen.

    Da unsere Datenquelle es offenbar nicht auf die Kette kriegt, Kassel die 3 Punkte gutzuschreiben und die Tabellenpositionen zu korrigieren, war ich’s jetzt leid und hab es händisch angepasst. Kann natürlich sein, dass sie uns morgen um 19:30 Uhr diesen Stand mit einem falschen wieder überschreiben werden, aber irgendwann werden sie’s wohl hoffentlich mal merken (ja, ich hab’s ihnen schon am Mittwoch mitgeteilt).

    Just another administrator.

  • Da unsere Datenquelle es offenbar nicht auf die Kette kriegt, Kassel die 3 Punkte gutzuschreiben und die Tabellenpositionen zu korrigieren, war ich’s jetzt leid und hab es händisch angepasst. Kann natürlich sein, dass sie uns morgen um 19:30 Uhr diesen Stand mit einem falschen wieder überschreiben werden, aber irgendwann werden sie’s wohl hoffentlich mal merken (ja, ich hab’s ihnen schon am Mittwoch mitgeteilt).

    Und genauso war’s natürlich, während des gesamten Spieltags wurde auf den ersten drei Plätzen eine falsche Tabelle angezeigt. :supersad:

    Nach Beendigung des letzten heutigen/gestrigen Spiels Weiden vs. Bad Nauheim habe ich den Stand auf diesen Plätzen händisch korrigiert, damit wenigstens hier bis zum Derby am Sonntag der korrekte Stand angezeigt wird.

    Dabei hat sich die Datenquelle gestern spätabends sogar nochmal ausdrücklich für meinen Hinweis bedankt (diesmal individuell ohne Textbaustein), aber leider ohne die Daten auch gleichzeitig zu korrigieren. Ich hab’s jetzt nochmal angemerkt und hoffe, sie bekommen es bis Sonntag endlich gefixt.

    Just another administrator.

  • Nicht wundern, wenn die Tabelle mal vorübergehend verschwunden ist, ich muss was schrauben/testen.

    Ja, schraub uns mal unter die Top 3 :)

    Könnte ich zwar, entspräche aber nicht der Wirklichkeit, und die Mannschaft hat da leider nicht ganz mitgespielt.

    Aber tatsächlich war die Tabelle seit Anfang Dezember des nächtens öfter (bzw. fast immer) bis zum frühen Morgen deaktiviert, denn ich habe seitdem an einem neuen Stand gearbeitet, sozusagen der DEL2-Tabelle "Next Generation". Klingt übertrieben, zumal man auf den allerersten Blick kaum einen Unterschied wird erkennen können (was beabsichtigt ist), ist aber tatsächlich so. Hätte ich vorher gewusst, auf was ich mich da mit meinen eigenen Ideen und Wünschen einlasse und wie aufwendig, kompliziert und zeitfressend das alles werden würde, hätte ich es vielleicht gar nicht gemacht (aber wenn man erstmal angefangen hat, wirft man ab einem bestimmten "point of no return" die Brocken nicht einfach hin).

    Also, worüber reden wir:

    Am Tabellenstand der DEG können wir nichts ändern, es geht also lediglich um "UX" (IT-Sprech für "User Experience" aka "Nutzererfahrung/-erlebnis") und "Usability" (Nutzertauglichkeit), oft auch als Usability & User Experience (UUX) zusammengefasst.

    Was mich immer schon an dieser Tabelle selbst gestört hat, war, dass man sie insbesondere auf dem Handy im Portrait-Modus (hochkant) zwar nach links verschieben/scrollen konnte, aber leider nur komplett. Und dass das weitgehend sinnfrei war, weil man (außer bei der permanent farblich hervorgehobenen DEG) aufgrund des schmalen Bildschirms nicht mehr wusste, welche Spalten und Zahlen welchem Club zuzuordnen waren, zudem verschwand die Fußzeile/Legende, weil sie zwangsläufig mit verschoben wurde:

    Bitte melde Dich an, um diesen Anhang zu sehen.

    Ja super, was will man damit anfangen? Zudem störte mich, dass sowohl auf dem (also meinem) Handy wie auch auf dem (also meinem) Laptop die Tabelle immer nur ganz knapp bzw. auch gar nicht in voller Höhe angezeigt werden konnte.

    Das war für mich der Trigger, die Tabelle einer kompletten Überarbeitung zu unterziehen und gleichzeitig noch die eine oder andere sinnvolle Funktion einzubauen. Und damit begann eine zwischenzeitliche Tragödie, die sich aber nach vielem Hin und Her mit dem Kollegen von ChatGPT (manchmal könnte ich ihn würgen, aber ohne ihn hätte ich das alleine so nicht hinbekommen) inzwischen in einen funktionierenden Zustand und somit in Wohlgefallen aufgelöst hat. Die wesentlichen Neuerungen:

    • Zeilenhöhe etwas reduziert (okay, das war noch einfach).
    • Die Tabelle kann jetzt auf Handy UND Desktop (dort je nach Zoom-Level) horizontal so verschoben/gescrollt werden, dass die beiden ersten Spalten "Pos" und "Team" sowie die Legende in der Fußzeile fixiert bleiben, wenn die Tabelle nicht in den "Viewport" (also die "Box", innerhalb derer die Tabelle dargestellt wird) passt. Auf dem Handy und sonstigen Mobilgeräten geschieht das durch das gewohnte "Wischen", auf Desktops ohne Touchscreens mit einem Scrollbalken zwischen Tabelle und der (jetzt fixierten) Fußzeile/Legende.
    • Die bisher nur bei Handys im Portrait-Modus aktive Funktion, die vollständigen Clubnamen durch deren Kurznamen (also z.B. "Crimmitschau" statt "Eispiraten Crimmitschau") zu ersetzen, um mehr Spalten anzeigen zu können, ist jetzt immer dann (und somit auch auf dem Desktop z.B. bei Zoom-Level ab 150%/170%) aktiv, wenn die vollständige Tabelle nicht in den o.a. "Viewport" passt, also unabhängig vom verwendeten Gerät.
    • Da insbesondere auf dem Handy im Portrait-Modus auch das oft noch nicht reicht, um die wesentlichen Spalten wie "Tore" und "Diff." vollständig anzuzeigen, besteht jetzt durch Klick/Tipp auf das Symbol ⇄ rechts neben der Spaltenbeschriftung "Team" mit diesem "Toggle" (Umschalter) ZUSÄTZLICH die Möglichkeit, die Breite der Spalte "Team" nochmals zu reduzieren, indem man nur noch die Abkürzungen der Clubs ("DEG" statt "Düsseldorfer EG") anzeigen lässt. Handy-User im Portrait-Modus werden diesen Schalter zwangsläufig sofort angeboten bekommen, Desktop-User immer dann, wenn bei deren Zoom-Level (bei mir 150%/170%) die Tabelle nicht mehr vollständig dargestellt werden kann. Diese Einstellung ist persistent, der Browser "merkt" sie sich also solange, bis sie vom User wieder geändert wird.
    • Es gibt noch weitere Änderungen und Verbesserungen (→ <klick>), die zu erwähnen es wert wären (das gesamte Touch-/Maushandling bzgl. Markieren/Entmarkieren von Tabellenzeilen z.B.), aber dazu habe ich gerade keine Lust mehr, weil es schon wieder deutlich auf die 7:00 Uhr zugeht. Aber ich wollte diesen "Release #1.0" der DEL2-Tabelle "Next Generation" nicht noch länger hinauszögern, nachdem in der vorherigen Nacht der letzte noch bekannte Bug gefixt wurde (und ja, die Logik ist stellenweise extrem komplex).

    Der Code bedarf noch weiterer Optimierungen, aber so wie er ist, funktioniert er aus meiner Sicht.

    Abschließend als Teaser nur ein Screenshot-Vergleich vom Handy im Unterschied zum Urzustand (Abkürzung/Toggle "Team" aktiviert, 3 Spalten nach links verschoben/gescrollt):

    Bitte melde Dich an, um diesen Anhang zu sehen.

    Weitere Details folgen (→ <klick>). Die Tabelle ist ab JETZT aktiv.

    P.S.: Ich kann nur auf Handy (Android) und Laptop/PC (Windows 10, Firefox/Chrome) testen. Wenn unter anderen Umgebungen (iOS, Safari etc.) oder auch sonst etwas nicht so funktioniert wie es sollte, bitte Rückmeldung hier.

    Just another administrator.

  • Weitere Details folgen.

    Hier wie angekündigt die Hinweise zu weiteren funktionalen Änderungen, Erweiterungen und Korrekturen, die vom bisherigen Standardverhalten der Browser abweichen, zum überwiegenden Teil massive Eingriffe mittels Code erforderten und sich dem User nicht immer auf den ersten Blick erschließen, sowie zur Logik der Anzeige der Clubnamen und des "Toggle" ⇄ in der Spalte "Team". Dient auch – oder vielleicht sogar primär _8) – zu meiner eigenen Dokumentation (in Entwicklerkreisen "Change log" genannt), und beschreibt, wie sich die Tabelle verhalten sollte (und hoffentlich auch überall verhält, wenn sich keine Bugs mehr zeigen). Da der Text länger ist, thematisch unterteilt und in Spoilern verpackt:

    Anzeige Clubnamen, Scrolling ab Spalte "SP" und "Toggle" ⇄ in Spalte "Team"
    • Passt die Tabelle mit den vollständigen Clubnamen vollständig in die "Box" (den "Viewport"), werden diese angezeigt. Ist dies nicht der Fall, werden die vollständigen Clubnamen durch deren Kurznamen ersetzt ("Eispiraten Crimmitschau" → "Crimmitschau"). Passt die Tabelle dann immer noch nicht vollständig in die Box, werden ggf. die Abkürzungen ("EPC", "DEG" etc.) angezeigt, sofern deren Anzeige irgendwann vorher aktiviert wurde. Anderenfalls kann dies mit dem Toggle ⇄ in der Spalte "Team" erzwungen werden, der in diesem Fall automatisch zur Verfügung steht.
    • Der Toggle ⇄ in der Spalte "Team" steht auch dann zur Verfügung, wenn die Anzeige der Abkürzungen ("DEG") aktiv geschaltet ist und die Tabelle dadurch zwar vollständig in die Box passt (also auch kein Scrolling zur Verfügung steht, weil weder notwendig noch sinnvoll), aber nicht mehr vollständig in die Box passen würde, wenn deren Kurznamen angezeigt würden (ist bei mir im Firefox bei Zoom 150% der Fall).
    • Wenn der Toggle ⇄ in der Spalte "Team" angeboten wird, steht auch ein entsprechender erklärender Tooltip zur Verfügung (gepunktete Linie unter der Spaltenbezeichnung "Team").
    • In allen Fällen kann der rechte Teil der Tabelle (ab Spalte "SP") horizontal verschoben/gescrollt werden, wenn unter den aktuellen Bedingungen und in Abhängigkeit vom Zoom-Level im Browser die Tabelle nicht vollständig in die Box passt.
    "Hovern", Markieren/Ent-Markieren, Tooltips
    • Das bisher relativ sinnfreie "Hovern" auf dem Desktop ("Mouseover"-Effekt beim Fahren des Mauszeigers über die Tabelle und die damit verbundene Farbänderung der jeweiligen Zeile) erfüllt jetzt immerhin insofern einen Zweck, als dass man – wie schon bisher auf Touchscreens (Handy/Tablet) – mit einem Klick auf die jeweilige Zeile diese nun auch markieren kann. Dabei wird die markierte Zeile mit einer dünnen gelben Linie ober- und unterhalb der Zeile versehen, um sie von einer reinen "Hoverbar" optisch unterscheiden zu können. Gleichzeitig kann man aber weiterhin über die Tabelle hovern und ggf. eine andere Zeile markieren:

      Bitte melde Dich an, um diesen Anhang zu sehen.

      (Rosenheim = markiert, Bietigheim = "Hoverbar" mittels Mauszeiger auf der Zeile)
    • Auf Touchscreens markierte Zeilen bekommen nun ebenfalls eine dünne gelbe Linie ober- und unterhalb der Zeile.
    • Das Markieren auf Touchscreens geschieht jetzt nur noch mit einem kurzen Tipp auf die Zeile, jedoch NICHT mehr mit einem längeren Tipp und Halten des Fingers auf eine Zeile. Dies dient zur Unterscheidung zwischen "ich will markieren" und "ich will doch nur scrollen" und verhindert, dass beim Scrollen versehentlich/ungewollt Zeilen markiert oder bereits markierte Zeilen ent-markiert werden.
    • Markierte Zeilen können auf Desktops und Touchscreens jetzt auch mit einem Klick/Tipp auf die markierte Zeile wieder ent-markiert werden.
    • Da es auf Touchscreens kein "Hovern" mit einem Mauszeiger gibt, können die Tooltips (die Spalten mit einer gepunkteten Linie unter der Spaltenbezeichnung) wie bisher nur mit einem Tipp auf die jeweilige Spalte in der Kopfzeile der Tabelle angezeigt werden. Diese Aktion löst aber jetzt NICHT mehr das Ent-Markieren einer bereits markierten Zeile aus.
    • Hingegen wird beim Markieren einer Zeile auf dem Touchscreen ein etwaig bereits angezeigter Tooltip aus der Anzeige entfernt. Auch kann ein auf dem Touchscreen angezeigter Tooltip (wie bisher) nicht durch nochmaliges Tippen auf die Spalte in der Kopfzeile aus der Anzeige entfernt werden. Zu beiden Punkten wird sich ggf. noch etwas ändern (wobei ich noch nicht weiß, ob das überhaupt möglich ist und wie aufwendig das sein wird).
    • Die Anzeige eines Tooltips kann auf Touchscreens durch Tippen auf Kopfzeile, Boxtitel oder irgendwo außerhalb der Tabelle wieder entfernt werden. Markierte Zeilen können (außer durch Tippen auf die markierte Zeile oder Markieren einer anderen Zeile) nur durch Tippen außerhalb der Tabelle ent-markiert werden, nicht aber durch Tippen auf Kopfzeile oder Boxtitel.
    Sonstiges (Anzeige-Fixes, technische Infos)
    • Vertikale Zentrierung der Clubnamen in Spalte "Team" korrigiert (stand bisher etwas zu hoch und damit nicht 100%ig auf einer Linie mit den übrigen Spalten). Ist aber vermutlich niemandem aufgefallen. :D
    • Wenn die Tabelle nach Abschluss eines Spieltages keinen einzigen "Delta-Rank" (die Anzeige der Platzverschiebung zum vorherigen Spieltag) enthält – den Fall gab es schon einige Male, zuletzt nach dem 40. Spieltag am 30.01.2026 –, dann wurde bisher die erste Spalte "Pos" unnötig breit dargestellt, weil für die gar nicht vorhandene Anzeige trotzdem Platz reserviert und somit das "Badge" (das je nach Platz farbig unterschiedliche und abgerundete Quadrat mit der Nummer des Platzes) auch nicht in der Spalte horizontal zentriert wurde. Jetzt bekommt die Spalte "Pos" nur noch die Breite, die sie für ihren Inhalt benötigt, und das Badge wird in der Spalte horizontal zentriert: (Siehe dazu aber auch den nächsten Punkt.)

      Bitte melde Dich an, um diesen Anhang zu sehen.

      Oben vorher, darunter aktuell. Spart in dieser Situation wieder etwas Platz auf schmalen Displays.
    • Bei Zoom-Leveln im Browser (≤120%), bei denen die Box (der "Viewport") breiter ist als eigentlich benötigt, werden die Spalten bis zur Restbreite der Box jetzt etwas gleichmäßiger über alle Spalten verteilt mit Leerraum aufgefüllt (statt wie bisher nur die Spalte "Team" zu verbreitern). Davon ausgenommen ist jetzt aber die erste Spalte "Pos", die immer nur so breit ist wie es für ihren Inhalt benötigt wird (sieht sonst bei Zoom-Leveln ≤100% auf dem Desktop doof aus).
    • Der "Fade-Effekt" beim Wechsel der Anzeige der Clubnamen tritt (speziell auf dem Desktop bei Änderungen des Zoom-Levels) nur noch dann auf, wenn sich die Anzeige des Clubnamens auch wirklich ändert (und nicht mehr wie bisher, wenn beim Wechsel des Browser-Zooms von z.B. 100% über 110% bis 120% ohnehin immer dieselben vollständigen Clubnamen angezeigt werden).
    • Es handelt sich bei den Spalten 1-2 ("Pos" und "Team") und den Spalten 3-13 ("SP" bis "SON") technisch betrachtet um zwei völlig separate und eigenständige Tabellen. Das macht zwar das reine Scrollen/Verschieben der "rechten Tabelle" auf allen Geräten aus allen Welten (Desktop, Mobilgeräte/Touchscreen, Windows, iOS, Firefox/Chrome/Safari etc. pp.) einfacher, stabiler und zuverlässiger, vieles andere aber dafür umso komplizierter aufwendiger: So musste z.B. das Hovern und Markieren kompletter Zeilen auf beiden Tabellen bei Desktop und Touchscreens, sowie – nur auf Touchscreens – das Initiieren des Scrollens und das Zoomen mittels Fingergeste ("Pinch") auch auf der "linken Tabelle" gesondert behandelt und mittels entsprechender Programmierung überhaupt erstmal funktional gemacht werden (u.a. daran wäre ich fast verzweifelt).

    Ich denke, das ist es im Wesentlichen (falls was fehlt und es mir noch einfällt, trage ich es hier nach). Gibt vielleicht einen kleinen Eindruck über den Aufwand, auch bei für Laien eigentlich ganz selbstverständlichen Dingen, die ganz so selbstverständlich aber (leider) eben nicht sind. Und worüber man sich so alles überhaupt ’nen Kopp macht (und auch machen muss) …

    Nächster Plan: Eine Live-Spieltagsanzeige. Aber nicht mehr in dieser Saison. :popcorn: :prost: (Übrigens sind alle diese Dinge ohne weiteres auch auf die DEL übertragbar. :floet:)

    Mehr kann ich im Moment nicht tun. Jetzt ist es an der Mannschaft, uns demnächst eine freundlicher aussehende Tabelle zu präsentieren.

    Just another administrator.

  • So, die Live-Tabelle 2026/27 ist jetzt für alle "scharf" geschaltet (Krefeld und Kaufbeuren raus, Dresden und Memmingen rein).

    Dieser simple Austausch war ein Kinderspiel, der weit aufwendigere Code "unter der Haube" hingegen wurde in den vergangenen Wochen massiv verbessert, in vielerlei Hinsicht besser abgesichert, auf Sonderfälle vorbereitet, und die Logik der "Offset"-Spiele (also der auf andere Termine verschobenen Spiele) wurde gefixt, die hatte nämlich nicht so funktioniert wie gewollt.

    Wenn ich die Zeit finde, werde ich noch das eine oder andere Wort dazu verlieren, jetzt hoffe ich, dass zum Saisonstart erstmal alles so funktionieren wird wie aufwendig offline getestet und geplant (und dass uns die Datenquelle nicht im Stich lässt).

    Rein optisch wird (und darf) sich erstmal nichts verändern. Nur dass unmittelbar kurz vor oder nach erstem Spielbeginn am Freitag um 19:30 Uhr sich alle Teams auf Platz 1 befinden und anders sortiert sein werden als in der hier aktuell nach den Städte-/Ortsnamen alphabetisch sortierten Tabelle. Aber das sind dann halt die Daten, wie sie uns geliefert werden und wie wir sie auch 1:1 wieder ausgeben.

    Just another administrator.

  • Dieser simple Austausch war ein Kinderspiel, der weit aufwendigere Code "unter der Haube" hingegen wurde in den vergangenen Wochen massiv verbessert, in vielerlei Hinsicht besser abgesichert, auf Sonderfälle vorbereitet, und die Logik der "Offset"-Spiele (also der auf andere Termine verschobenen Spiele) wurde gefixt, die hatte nämlich nicht so funktioniert wie gewollt.

    Wenn ich die Zeit finde, werde ich noch das eine oder andere Wort dazu verlieren, jetzt hoffe ich, dass zum Saisonstart erstmal alles so funktionieren wird wie aufwendig offline getestet und geplant (und dass uns die Datenquelle nicht im Stich lässt).

    Na ja, geht so … Dieses Thema Live-Tabelle wird mehr und mehr zu einem IT-Megaprojekt. Klingt ja eigentlich einfach: Daten einsammeln, aufbereiten und hübsch darstellen.

    Vermutlich wird niemand etwas von den ganzen Problemen im Hintergrund bemerkt haben, und so soll es ja auch sein. Aber damit es so ist, ist bei der DEL2 ein Mehrfaches des Aufwands wie bei der DEL nötig. Die gelieferten Daten sind manchmal dermaßen inkonsistent, dass es kaum zu fassen ist.

    Aber dazu mehr und im Detail im unteren Teil dieses Posts, andere Änderungen betreffen wie oben erwähnt den rein technischen Ablauf "unter der Haube", und damit fangen wir mal an. Dieser Beitrag richtet sich an diejenigen, die das Ganze vielleicht auch technisch ein wenig interessiert.

    Eine Vorbemerkung: Wir haben bisher nur eine Datenquelle (wir nennen sie hier Datenquelle[1]) verwendet, die zwar halbwegs (!) zuverlässig, aber auch elend lahmarschig war. Als das Spiel der DEG in Landshut am 2. Spieltag im sporteurope-Stream längst beendet war, hat es geschlagene 10 Minuten gedauert, bis unsere Live-Tabelle bei der DEG von 4 auf 5 Punkte und somit Platz 2 gesprungen ist. Ein solches Verhalten verdient kaum den Begriff "Live-Tabelle".

    Wir verwenden jetzt (aber erstmal nur in einem parallelen "Shadow-Test") eine zweite Datenquelle (wir nennen sie hier Datenquelle[2]), die deutlich schnellere Ergebnisse liefert, aber auch komplizierter auszuwerten ist, weil dazu nicht für den kompletten Spieltag nur ein einziger Datensatz, sondern für jedes Spiel jeweils ein separater Datensatz ausgewertet werden muss (also in der Regel sieben pro Spieltag). Zudem ist auch diese Datenquelle nur bedingt zuverlässig: In einem Fall wurde am 1. Spieltag beim Spiel Weißwasser vs. Landshut das erste Drittel komplett "vergessen", es wurden also überhaupt keine Ergebnisse des ersten Drittels geliefert und erst 40 Minuten nach Spielbeginn in der Drittelpause "nachgespult".

    Das alles miteinander abzugleichen und sowohl schnelle als auch korrekte Ergebnisse zu liefern, darin besteht die schwierige Aufgabe. Fun fact am Rande: Selbst die offizielle DEL2-App hat beim Spiel Dresden vs. Kassel am 1. Spieltag zwischenzeitlich die falschen Ergebnisse 0:4 und 0:5 angezeigt, als es in Wirklichkeit noch 0:3 bzw. 0:4 stand (siehe → hier und folgende). Den Grund konnten wir anhand unserer Logfiles leicht erkennen: Die Tore von Brendan O’Donnell zum 0:3 und von Jimmy Martinovic zum 0:4 waren an der eigentlichen Quelle jeweils doppelt eingetragen worden. Dass solche Fehler sogar bis auf die Apps durchschlagen, beweist, dass letztlich (fast) alle auf dieselben Daten zugreifen, nur auf unterschiedlichen Wegen. Ob z.B. FlashScore genau diesen Fehler auch gezeigt hat, weiß ich allerdings nicht.

    Okay, nun die ausführlicheren Details hinter den Spoilern:

    1. Changelog: Was vor Saisonbeginn an der Live-Tabelle überarbeitet wurde

    Technische Überarbeitung der DEL2-Live-Tabelle zur Saison 2026/27

    Im Hintergrund wurde die Live-Tabelle vor Saisonbeginn an mehreren Stellen grundlegend überarbeitet. Nach außen sieht sie exakt aus wie bisher, intern wurden aber einige Fehlerquellen und bisherige Sonderfälle beseitigt bzw. deutlich besser abgesichert:

    • Start- und Ablaufsteuerung komplett neu aufgebaut: Der eigentliche Dienst läuft jetzt über einen stabilen Rahmenprozess; die veränderliche Logik wird bei jedem Durchlauf neu geladen. Änderungen können dadurch kontrollierter vorgenommen werden, ohne jedes Mal den gesamten Dienst neu starten zu müssen.
    • Sauberes Saisonende: Früher hätte der Server den Prozess durch die verwendete Neustartlogik auch nach einem gewollten Saisonende immer wieder gestartet. Jetzt kann sich die Live-Tabelle nach dem letzten Spieltag regulär beenden und bleibt auch beendet.
    • Fehlender oder fehlerhafter Spielplan kann keinen Schaden mehr anrichten: Ist die Spielplan-Datei nicht vorhanden oder ungültig, startet die eigentliche Tabellenlogik gar nicht erst. Bestehende Tabellenstände, Vergleichsdaten und Statusdateien werden dabei nicht verändert.
    • Sauberer Saisonstart: Veraltete Vergleichsdaten aus der Vorsaison werden vor Saisonbeginn entfernt. Gleichzeitig wurde verhindert, dass unmittelbar vor dem ersten Bully Statuswerte versehentlich wieder zurückgesetzt werden.
    • Weniger unnötige Server- und Netzwerkzugriffe: Während der Vorsaison läuft nicht mehr permanent die komplette PHP-/Abruflogik. Die eigentliche Arbeit beginnt erst kurz vor dem ersten Saisonspiel.
    • Technische Zustände werden getrennt behandelt: Vorsaison, normaler Leerlauf, Live-Betrieb, fehlender Spielplan sowie PHP-/Statusfehler und Saisonende sind jetzt unterscheidbare Zustände. Wiederholte identische Meldungen werden nicht ständig ins Log geschrieben.
    • Ein Spieltag gilt nicht mehr allein deshalb als beendet, weil irgendwo „Spielende“ steht: Alle Spiele müssen ein verwertbares und entschiedenes Ergebnis besitzen. Ein 2:2 mit Endmarkierung oder ein noch nicht vorhandenes Ergebnis reicht ausdrücklich nicht aus; Verlängerung und Penaltyschießen werden getrennt erkannt.
    • Neue Plausibilitätsprüfung beim Spieltagsende: Wenn alle Spiele beendet sind, wird zusätzlich nachgerechnet, welche Auswirkungen die Ergebnisse auf Spiele, Siege/Niederlagen, Tore, Tordifferenz und Punkte haben müssen. Erst wenn das mit der gelieferten Gesamttabelle übereinstimmt, wird der Spieltag normalerweise abgeschlossen. Damit kann eine bereits fertige Ergebnisliste nicht mehr versehentlich zusammen mit einer noch veralteten Tabelle archiviert werden. Die frühere pauschale Wartezeit von 30 Minuten ist dadurch entfallen.
    • Ein bereits abgeschlossener Spieltag springt nicht wieder auf „live“: Dafür gibt es jetzt einen eigenen Abschlussmarker. Das war nötig, weil das maximale technische Zeitfenster noch länger geöffnet sein kann, obwohl alle Spiele längst korrekt verarbeitet wurden.
    • delta_rank bei verlegten Spielen korrigiert: Vor- und Nachholspiele werden hinsichtlich der Platzierungsänderungen jetzt weiterhin auf die richtige vorherige Vergleichsbasis bezogen. Auch mehrere solcher „Offset“-Spiele hintereinander und der anschließende reguläre Spieltag werden korrekt behandelt.
    • Erster Spieltag ohne Altlasten: Am 1. Spieltag starten alle Platzierungsänderungen bewusst bei 0; Daten aus der Vorsaison fließen nicht mehr als vermeintliche Vergleichsbasis ein.
    • Zusätzliche Quellen- und Diagnoseprüfungen: Unterschiedliche Zustände der beiden bisher verwendeten Datenansichten werden erkannt und protokolliert. Das hilft insbesondere dabei, Verzögerungen und kurzfristig widersprüchliche Datenlieferungen nachvollziehen zu können.
    • Umfangreiche Regressionstests: Der zum Saisonstart eingesetzte PHP-Stand wurde zuletzt mit 48/48 erfolgreichen Integrationstests geprüft, darunter reguläre Spieltage, verlegte Spiele, mehrere Verlegungen hintereinander und die anschließende Rückkehr zum normalen Spieltagsbetrieb.

    Eine maximale zeitliche Notbremse existiert weiterhin als Sicherheitsnetz. Schon vor Saisonstart war außerdem bekannt, dass keine lokale Plausibilitätsprüfung erkennen kann, wenn eine externe Quelle und deren Tabelle denselben falschen, aber untereinander konsistenten Stand liefern. Genau dieser theoretische Grenzfall ist am 1. Spieltag tatsächlich aufgetreten.

    Noch ausführlichere und weit technischere Dokumentationen dazu hier:

    Bitte melde Dich an, um diesen Anhang zu sehen.

    Bitte melde Dich an, um diesen Anhang zu sehen.

    2. Erkenntnisse aus den ersten beiden Spieltagen und geplante weitere Änderungen

    Was die ersten beiden Spieltage gezeigt haben

    Die ersten beiden echten Spieltage waren gleichzeitig ein guter Belastungstest. Die Live-Tabelle selbst hat grundsätzlich funktioniert, allerdings haben die Datenquellen einige interessante Eigenheiten gezeigt, die wir jetzt für die nächste Ausbaustufe berücksichtigen wollen:

    • Externe Live-Daten sind nicht immer „monoton“: Ein bereits gemeldeter Spielstand kann wieder zurückspringen, ein als beendet gemeldetes Spiel wieder auf „live“ wechseln und wenige Sekunden später erneut beendet sein. Besonders bei Datenquelle[1] konnten solche Wechsel mehrfach beobachtet werden.
    • Am 1. Spieltag wurden bei Dresden vs. Kassel zeitweise Tore doppelt gemeldet. Dadurch entstanden vorübergehend falsche Zwischenstände. Auch Datenquelle[2] ist also nicht grundsätzlich fehlerfrei; eine schnellere Quelle darf nicht automatisch mit einer immer richtigen Quelle gleichgesetzt werden. Genau solche Duplikate wurden deshalb beim zweiten Test bereits gezielt als Anomalie überwacht.
    • Beim Spiel Lausitzer Füchse vs. Landshut trat der bislang kritischste Sonderfall auf: Nach der Schlusssirene wurde noch ein technisches Tor zum 1:3 zugesprochen. Verschiedene Datenansichten lieferten danach zeitweise 1:2 bzw. 1:3; im Produktionslog waren beide Stände unmittelbar gegeneinander zu sehen. Später waren Ergebnis und Gesamttabelle gemeinsam auf dem falschen bzw. veralteten Stand 1:2 – und damit intern völlig plausibel. Die bisherige Tabellenprüfung konnte diesen Fall folgerichtig nicht erkennen und der Stand musste anschließend korrigiert werden.
    • Shootouts sind ein weiterer Sonderfall: Am 2. Spieltag meldete Datenquelle[1] beispielsweise EV Landshut vs. DEG bereits mit 5:5 n.P. als beendet, obwohl der entscheidende Shootout-Treffer zum 5:6 noch nicht verarbeitet war. Unsere bestehende Sicherung, ein unentschiedenes Endergebnis nicht zu akzeptieren, hat hier einen verfrühten Abschluss verhindert. Der korrekte Stand 5:6 erschien dort erst später.
    • Datenquelle[2] war insgesamt deutlich schneller: Besonders auffällig war erneut EVL vs. DEG. Datenquelle[2] hatte die DEG bereits um 19:41:56 Uhr mit 5 Punkten, die entsprechende Tabelle bei Datenquelle[1] erst um 19:51:26 Uhr – also rund 9½ Minuten später.
    • Auch Datenquelle[2] hatte allerdings kurzzeitige technische Aussetzer. Deshalb soll auch die neue Lösung nicht einfach blind eine einzige Quelle übernehmen, sondern den letzten gültigen Stand behalten, erneut versuchen und bei Bedarf auf einen anderen Endpunkt ausweichen.
    • Geplant ist deshalb eine neue Quellenlogik: Datenquelle[2] soll voraussichtlich die primäre Quelle für die aktuelle Tabelle werden. Datenquelle[1] bleibt als Kontroll- und Ersatzquelle sowie unter anderem für die eindeutige Unterscheidung von Verlängerung und Penaltyschießen erhalten. Bei echten Konflikten soll ggf. mit FlashScore eine weitere, möglichst unabhängige Prüfinstanz hinzukommen (daran basteln wir noch).
    • Aktuelle Anzeige und endgültiger Spieltagsabschluss werden stärker getrennt: Ein schneller und plausibler neuer Tabellenstand soll künftig sofort angezeigt werden können. Bevor daraus aber der endgültige Vergleichsstand für den nächsten Spieltag und ein Archivstand erzeugt werden, soll eine zusätzliche Verifikationsphase mehrere stabile Zustände bzw. die Kontrollquellen abwarten.
    • Die Tabellenplätze können/werden wir künftig selbst bestimmen: Die DEL2 hat uns bestätigt, dass während der laufenden Hauptrunde ausschließlich Punkte, danach Tordifferenz und danach erzielte Tore maßgeblich sind. Der direkte Vergleich wird erst für die endgültige Platzierung nach Saisonende herangezogen. Damit sind wir für die laufende Tabelle nicht auf eine von der Datenquelle vorgegebene Reihenfolge angewiesen (siehe DEG und EBR nach dem 1. Spieltag gemeinsam auf Platz 2, in der Tabelle der DEL2 aber willkürlich auf Platz 2 und 3, was eine fehlerhafte Berechnung des delta_rank beim 2. Spieltag zur Folge gehabt hätte).
    • Die Änderungen werden zunächst vollständig parallel getestet: Die bestehende produktive Tabelle bleibt unangetastet. Die neue Variante läuft zunächst als „Shadow“ daneben und kann zusätzlich mit den aufgezeichneten Daten der ersten beiden Spieltage noch einmal rückwirkend getestet werden.

    Zeitvergleich Datenquelle[2]Datenquelle[1]

    Die Rohdaten wurden dafür noch einmal neu ausgewertet. Verglichen wurde jeweils der erste beobachtete Zeitpunkt derselben echten Spielstandsänderung auf Datenquelle[2] und auf Datenquelle[1]. Der am Freitag zeitweise stark hinterherhängende/„vergessene“ Datensatz von LFX vs. EVL auf Datenquelle[2] wurde komplett herausgenommen, ebenso die bekannten falschen Doppel-Tor-Zwischenstände bei DRE vs. ECK. Der Sonntag zeigt beispielsweise schon bei den ersten DEG-Toren Abstände von deutlich über einer Minute zwischen Datenquelle[2] und Datenquelle[1].

    Damit bleiben 86 sauber vergleichbare Spielstandsänderungen aus den ersten beiden Spieltagen. Bei 85 von 86 war Datenquelle[2] schneller. Wenn Datenquelle[2] vorne lag, betrug der kleinste gemessene Vorsprung rund 16 Sekunden, der größte rund 11 Minuten 39 Sekunden, und der durchschnittliche Vorsprung rund 2 Minuten 16 Sekunden. In genau einem der 86 Fälle war dagegen der Datenquelle[1] schneller, und zwar um rund 1 Minute 10 Sekunden. Bezieht man diesen Gegenfall in den Mittelwert mit ein, beträgt der Netto-Zeitvorsprung von Datenquelle[2] immer noch rund 2 Minuten 14 Sekunden pro Spielstandsänderung.

    Der Maximalwert von 11:39 stammt dabei vom entscheidenden Shootout-Stand bei EVL vs. DEG. Dieser wurde nicht als Anomalie herausgerechnet: Auch bei den beiden anderen Penaltyschießen war die endgültige Siegerwertung bei Datenquelle[1] auffällig spät. Nimmt man nur zur Einordnung diese drei Shootout-Endstände heraus, liegt der durchschnittliche Netto-Vorsprung aber immer noch bei ungefähr 2 Minuten.

    Zuguterletzt werden wir noch das Format der Spieltagsdaten auf JSON umstellen und für jedes Spiel einen eigenen Datensatz führen. Das gibt uns später auch die Möglichkeit, nicht nur eine Tabelle, sondern auch die Live-Ergebnisse aller Spiele eines Spieltags (und rückwirkend der bereits abgeschlossenen Spiele vorheriger Spieltage) anzuzeigen.

    Aber das ist erstmal noch Zukunftsmusik, eins nach dem anderen …

    P.S.: Wenn hier von "wir" die Rede ist, dann sind damit gemeint der KI-Kollege von ChatGPT und ich. Glaubt ja wohl niemand, dass ich sowas ganz alleine zustande bringen würde. Trotzdem passiert alles in gemeinsamen Sessions und mit entsprechendem Zeitaufwand. Und das Gerüst muss ich schon noch selbst bauen.

    Just another administrator.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!