TYPE-RUN-TELEMETRIE / SESSIEREGISTRATIE
Lees een typsessie als sessieregistratie
Deze pagina koppelt duur, tekstselectie, tekencontroles, metriekformules, toetsenkaarttoestanden, tweespelerpaneel en het pad voor openbare scores aan de momenteel zichtbare editorcode.
- 30 / 60 / 120 seconden · beginwaarde 60
- beginner / intermediate / expert · beginwaarde intermediate
- solo / tweespelerpaneel · beginwaarde solo
Sessiebedieningsstrook
Vóór een run toont de editor drie selectors. Dit zijn editorinstellingen, geen labels over een persoon of diens typen.
- DUUR — 30 · 60 · 120
De duurselector biedt 30, 60 en 120 seconden. De beginwaarde is 60 seconden.
- MOEILIJKHEID — 3 TEKSTSETS
De selector biedt beginner, intermediate en expert. De beginwaarde is intermediate.
- MODUS — SOLO · 2 SPELERS
De editor begint in solo. Het andere zichtbare paneel is een tweespelermodus met afzonderlijke invoer.
Tekstbron en selectie
Tekstarrays zijn opgenomen voor elke getoonde taal en elke moeilijkheid. Bij initialisatie en opnieuw bij teststart gebruikt de editor Math.floor(Math.random() * texts.length) om één item uit de toepasselijke array te nemen.
Run-klok en eindpunten
De timer loopt terwijl een test gestart en niet voltooid is. Een run eindigt wanneer timeLeft === 0 of wanneer een invoer de lengte van de huidige tekst bereikt.
01 · SOLO — Startbediening gaat direct de run in
In solo-modus roept de Startbediening het startpad direct aan en focust daarna de solo-invoer.
02 · 2 SPELERS — 3 → 2 → 1 vóór invoer
In tweespelermodus start de Startbediening een 3–2–1-aftelling. Het startpad focust daarna de invoer van Player 1.
03 · EINDE — Nultijd of tekstlengtegrens
Het eindpad wordt bereikt bij timeLeft === 0, of wanneer een invoerlengte minimaal currentText.length is.
Meetpaneel per teken
Voor een invoer doorloopt de editor tekens per positie en vergelijkt elk teken met currentText op die positie. Overeenkomende posities tellen mee voor correctChars; totalChars is de invoerlengte.
- WPM — round((correctChars / 5) / elapsedMinutes)
Wordt alleen berekend wanneer elapsedMinutes groter is dan 0.
- ACCURACY — round((correctChars / totalChars) * 100)
Wordt alleen berekend wanneer totalChars groter is dan 0.
- VOORTGANG — round(currentIndex / currentText.length * 100)
currentIndex volgt de lengte van de huidige invoer.
Toetsenkaart en toestandslog
Wanneer een nieuw toegevoegd solo-teken een verwacht teken heeft, wordt dat verwachte teken naar kleine letters omgezet en geteld. Een fout wordt geteld wanneer typedChar !== expectedChar.
HUIDIGE TEST — Alleen met gegevens getoond
De toetsenkaart van de huidige test wordt alleen gerenderd wanneer de huidige toetsfoutgegevens items bevatten.
CUMULATIEF — typingSpeedTest_keyErrors
Bij initialisatie leest de editor cumulatieve toetsfouten uit localStorage onder typingSpeedTest_keyErrors. Bij een solo-einde worden huidige fouten samengevoegd en onder die sleutel geschreven.
RESET — Sleutel verwijderen
De resetbediening verwijdert typingSpeedTest_keyErrors en wist de cumulatieve toestand die de UI toont. De cumulatieve kaart wordt alleen gerenderd wanneer gegevens bestaan.
Solo-registratie en tweespelerpaneel
De zichtbare modi gebruiken afzonderlijke invoertoestanden. Het tweespelerpaneel wordt hier alleen beschreven als UI met twee invoeren.
SOLO-GESCHIEDENIS — Maximaal vijf UI-items
Een solo-einde plaatst het resultaat vooraan met [result, ...slice(0, 4)]. Deze geschiedenis is React-state die in de UI wordt gebruikt.
SPELERSINVOER — Afzonderlijk bijgehouden velden
Player 1 en Player 2 hebben respectievelijke invoer-, index-, correcte-tekens-, totaaltekens-, WPM- en accuracy-state.
RESULTAATLABEL — WPM-tak
Bij een tweespeler-einde wint Player 1 alleen wanneer player1Wpm > player2Wpm; Player 2 alleen in het omgekeerde geval; anders is het resultaat tie.
Optioneel pad voor openbare score
Na een solo-einde opent een WPM-waarde boven 20 een dialoog. Het naamveld is optioneel en heeft maximaal 100 tekens vóór de verzendactie.
DIALOOG — Optionele naam en verzenden
De dialoog stuurt solo-WPM, accuracy, duur, moeilijkheid, taal en een getrimde naam wanneer die is ingevoerd.
SERVERINVOER — Geaccepteerde grenzen
saveScore accepteert gehele WPM van minimaal 0, gehele accuracy van 0 tot en met 100, gehele duur, moeilijkheid beginner/intermediate/expert en een taalstring van maximaal 10 tekens; de server voegt het verstuurde record in.
OPENBARE LIJST — Query taal + moeilijkheid
De scorequery filtert op taal en moeilijkheid. De UI vraagt limit 10; de query sorteert WPM aflopend en daarna accuracy aflopend.
Afbakeningsnotities
- Deze registratie beschrijft editorpaden en formules die zichtbaar zijn in de huidige code.
- Tekstselectie is arraygebaseerd en gebruikt de getoonde taal en gekozen moeilijkheid.
- Een openbare scoreverzending is gebruikersinvoer via het scorepad; deze pagina behandelt die niet als verificatie.
- De scorequery heeft de genoemde filters, volgorde en aangevraagde UI-limiet; deze pagina stelt niet dat een item zal verschijnen.
Ga verder met aangrenzende tools
Elke gekoppelde tool heeft eigen bediening en resultaatpad.
- Gelukswiel
Stel items in binnen een afzonderlijke wielinterface en bekijk het selectiepanel.
- Munt opgooien
Open de afzonderlijke muntinterface voor een resultaat met twee zijden.
- Sudoku
Open een rasterpuzzelinterface met eigen bediening.
Vragen over de sessieregistratie
Welke sessiebedieningen zijn aanvankelijk gekozen?
De beginwaarden zijn 60 seconden, moeilijkheid intermediate en modus solo. De duurselector biedt 30, 60 en 120 seconden; moeilijkheid biedt beginner, intermediate en expert.
Hoe wordt een tekst gekozen?
Voor de gekozen taal en moeilijkheid neemt de editor bij initialisatie en teststart een array-item met Math.floor(Math.random() * texts.length).
Hoe worden WPM, accuracy en voortgang berekend?
WPM is round((correctChars / 5) / elapsedMinutes) wanneer elapsedMinutes groter is dan 0. Accuracy is round((correctChars / totalChars) * 100) wanneer totalChars groter is dan 0. Voortgang is round(currentIndex / currentText.length * 100).
Wat registreert de toetsenkaart?
Voor een nieuw toegevoegd solo-teken wordt het verwachte teken naar kleine letters omgezet en geteld. typedChar !== expectedChar verhoogt zijn fout. Cumulatieve fouten gebruiken de localStorage-sleutel typingSpeedTest_keyErrors, en Reset verwijdert die sleutel.
Wat verstuurt de openbare dialoog?
Na een solo-einde met WPM boven 20 kan de dialoog een optionele naam van maximaal 100 tekens met de scorevelden versturen. De server accepteert de genoemde gehele grenzen en enumwaarden en voegt het verstuurde record in.
Open de typsessiebediening
Kies duur, moeilijkheid en modus in de editor en bekijk daarna de zichtbare toestanden per teken en metriek.