TIPP-LAUF-TELEMETRIE / SITZUNGSPROTOKOLL
Einen Tipp-Lauf als Sitzungsprotokoll lesen
Diese Seite ordnet Dauer, Textauswahl, Zeichenprüfungen, Metrikformeln, Heatmap-Zustände, Zwei-Spieler-Panel und den Pfad für öffentliche Ergebnisse dem aktuell sichtbaren Editor-Code zu.
Tippgeschwindigkeitstest öffnen
- 30 / 60 / 120 Sekunden · Startwert 60
- beginner / intermediate / expert · Startwert intermediate
- solo / Zwei-Spieler-Panel · Startwert solo
Sitzungs-Steuerstreifen
Vor einem Lauf zeigt der Editor drei Auswahlen. Sie sind Editor-Einstellungen und keine Aussage über eine Person oder deren Tippen.
- DAUER — 30 · 60 · 120
Die Dauerauswahl bietet 30, 60 und 120 Sekunden. Ihr Startwert ist 60 Sekunden.
- SCHWIERIGKEIT — 3 TEXTMENGEN
Die Auswahl bietet beginner, intermediate und expert. Ihr Startwert ist intermediate.
- MODUS — SOLO · 2 SPIELER
Der Editor beginnt im Solo-Modus. Das andere sichtbare Panel ist ein Zwei-Spieler-Modus mit getrennten Eingaben.
Textquelle und Auswahl
Text-Arrays sind für jede angezeigte Sprache und jede Schwierigkeit hinterlegt. Bei der Initialisierung und erneut beim Teststart nutzt der Editor Math.floor(Math.random() * texts.length), um einen Eintrag aus dem passenden Array zu nehmen.
Laufuhr und Endpunkte
Der Timer läuft, während ein Test gestartet und nicht beendet ist. Ein Lauf endet bei timeLeft === 0 oder wenn eine Eingabe die Länge des aktuellen Texts erreicht.
01 · SOLO — Startsteuerung beginnt den Lauf
Im Solo-Modus ruft die Startsteuerung den Startpfad direkt auf und fokussiert danach die Solo-Eingabe.
02 · 2 SPIELER — 3 → 2 → 1 vor den Eingaben
Im Zwei-Spieler-Modus startet die Startsteuerung einen 3–2–1-Countdown. Der Startpfad fokussiert danach Player 1.
03 · ENDE — Nullzeit oder Textlängen-Grenze
Der Endpfad wird bei timeLeft === 0 oder bei einer Eingabelänge von mindestens currentText.length erreicht.
Tafel für Zeichenmessung
Für eine Eingabe durchläuft der Editor Zeichen nach Position und prüft jedes gegen currentText an derselben Position. Übereinstimmende Positionen fließen in correctChars; totalChars ist die Eingabelänge.
- WPM — round((correctChars / 5) / elapsedMinutes)
Wird nur berechnet, wenn elapsedMinutes größer als 0 ist.
- ACCURACY — round((correctChars / totalChars) * 100)
Wird nur berechnet, wenn totalChars größer als 0 ist.
- FORTSCHRITT — round(currentIndex / currentText.length * 100)
currentIndex folgt der aktuellen Eingabelänge.
Heatmap und Zustands-Ledger
Wenn ein neu hinzugefügtes Solo-Zeichen ein erwartetes Zeichen hat, wird dieses erwartete Zeichen kleingeschrieben und gezählt. Ein Fehler wird gezählt, wenn typedChar !== expectedChar.
AKTUELLER TEST — Nur bei aktuellen Daten sichtbar
Die Heatmap-Karte des aktuellen Tests wird nur gerendert, wenn ihre aktuellen Tastenfehlerdaten Einträge haben.
KUMULIERT — typingSpeedTest_keyErrors
Bei der Initialisierung liest der Editor kumulierte Tastenfehler aus localStorage unter typingSpeedTest_keyErrors. Bei einem Solo-Ende werden aktuelle Fehler zusammengeführt und unter diesem Schlüssel geschrieben.
ZURÜCKSETZEN — Schlüssel entfernen
Die Heatmap-Zurücksetzung entfernt typingSpeedTest_keyErrors und leert den in der UI gezeigten kumulierten Zustand. Die kumulierte Karte wird nur bei Daten gerendert.
Solo-Protokoll und Zwei-Spieler-Panel
Die sichtbaren Modi verwenden getrennte Eingabezustände. Das Zwei-Spieler-Panel wird hier nur als UI mit zwei Eingaben beschrieben.
SOLO-VERLAUF — Höchstens fünf UI-Einträge
Ein Solo-Ende stellt sein Ergebnis mit [result, ...slice(0, 4)] voran. Dieser Verlauf ist React State für die UI.
SPIELER-EINGABEN — Getrennt nachgeführte Felder
Player 1 und Player 2 haben jeweils Eingabe-, Index-, korrekte-Zeichen-, Gesamtzeichen-, WPM- und Accuracy-Zustand.
ERGEBNISLABEL — WPM-Verzweigung
Bei einem Zwei-Spieler-Ende gewinnt Player 1 nur bei player1Wpm > player2Wpm; Player 2 nur bei umgekehrtem Fall; sonst lautet das Ergebnis tie.
Optionaler Pfad für öffentliche Ergebnisse
Nach einem Solo-Ende öffnet ein WPM-Wert über 20 einen Dialog. Das Namensfeld ist optional und hat vor der Sendeaktion maximal 100 Zeichen.
DIALOG — Optionaler Name und Sendeaktion
Der Dialog sendet die Solo-WPM, Accuracy, Dauer, Schwierigkeit, Sprache und bei Eingabe einen bereinigten Namen.
SERVER-EINGABE — Akzeptierte Feldgrenzen
saveScore akzeptiert ganzzahlige WPM ab 0, ganzzahlige Accuracy von 0 bis 100, eine ganzzahlige Dauer, Schwierigkeit beginner/intermediate/expert und eine Sprachzeichenkette bis 10 Zeichen; der Server fügt den gesendeten Datensatz ein.
ÖFFENTLICHE PUNKTELISTE — Abfrage Sprache + Schwierigkeit
Die Ergebnisabfrage filtert nach Sprache und Schwierigkeit. Die UI fragt limit 10 an; die Abfrage ordnet WPM absteigend und danach Accuracy absteigend.
Hinweise zum Umfang
- Dieses Protokoll beschreibt die im aktuellen Code sichtbaren Editorpfade und Formeln.
- Die Textauswahl ist arraybasiert und nutzt die angezeigte Sprache und gewählte Schwierigkeit.
- Eine öffentliche Ergebnisübermittlung ist Nutzereingabe über den Ergebnispfad; diese Seite behandelt sie nicht als Verifizierung.
- Die Ergebnisabfrage hat die genannten Filter, Reihenfolge und angeforderte UI-Grenze; diese Seite sagt nicht zu, ob ein Eintrag erscheint.
Mit benachbarten Tools fortfahren
Jedes verlinkte Tool hat eigene Steuerungen und einen eigenen Ergebnispfad.
- Zufallsrad
Einträge in einer separaten Radoberfläche setzen und das Auswahlpanel prüfen.
- Münze werfen
Die getrennte Münzoberfläche für ein Ergebnis mit zwei Seiten öffnen.
- Sudoku
Eine rasterbasierte Rätseloberfläche mit eigenen Steuerungen öffnen.
Fragen zum Sitzungsprotokoll
Welche Sitzungssteuerungen sind anfangs gewählt?
Die Startwerte sind 60 Sekunden, Schwierigkeit intermediate und Modus solo. Die Dauerauswahl bietet 30, 60 und 120 Sekunden; die Schwierigkeit bietet beginner, intermediate und expert.
Wie wird ein Text gewählt?
Für die gewählte Sprache und Schwierigkeit nimmt der Editor bei Initialisierung und Teststart einen Array-Eintrag mit Math.floor(Math.random() * texts.length).
Wie werden WPM, Accuracy und Fortschritt berechnet?
WPM ist round((correctChars / 5) / elapsedMinutes), wenn elapsedMinutes größer als 0 ist. Accuracy ist round((correctChars / totalChars) * 100), wenn totalChars größer als 0 ist. Fortschritt ist round(currentIndex / currentText.length * 100).
Was zeichnet die Heatmap auf?
Für ein neu hinzugefügtes Solo-Zeichen wird das erwartete Zeichen kleingeschrieben und gezählt. typedChar !== expectedChar erhöht dessen Fehlerzahl. Kumulierte Fehler verwenden den localStorage-Schlüssel typingSpeedTest_keyErrors; Zurücksetzen entfernt diesen Schlüssel.
Was sendet der Dialog für öffentliche Ergebnisse?
Nach einem Solo-Ende mit WPM über 20 kann der Dialog einen optionalen Namen bis 100 Zeichen zusammen mit den Ergebnisfeldern senden. Der Server akzeptiert die genannten ganzzahligen Grenzen und Enum-Werte und fügt den gesendeten Datensatz ein.
Tipp-Sitzungssteuerungen öffnen
Im Editor Dauer, Schwierigkeit und Modus wählen und anschließend die sichtbaren Zeichenzustände und Metriken prüfen.