From 536604397963b94470ca4f233bf15e1957ef197a Mon Sep 17 00:00:00 2001 From: larssand Date: Sun, 30 Aug 2026 14:31:53 +0200 Subject: [PATCH] fix stats sida --- README.md | 4 ++-- README.sv.md | 4 ++-- docs/javascript-architecture.md | 2 +- src/app.js | 12 ++++-------- src/training_views.js | 15 +++------------ 5 files changed, 12 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index f1e4f55..7ae2d38 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ Current layouts for race operation, live presentation, training and system confi Practice statistics overview
Practice statistics overview - Extra practice statistics with pace heatmap and stint analysis
Extra practice statistics + Detailed practice statistics with pace heatmap and stint analysis
Detailed practice statistics Judging and race corrections
Judging and race corrections @@ -204,7 +204,7 @@ The personal profile can also store `Club` and `Country`. These values are inher - a positive personal summary that recognizes today's volume, personal best, pace, consistency, and endurance without ranking drivers - a recent club progress feed ordered by activity rather than driver position or lap-count ranking - a configurable shared club target that counts every new valid practice lap from all registered drivers from the moment the target is created -- a collapsed Extra statistics section with active 30-minute pace blocks based on a trimmed average +- one collapsed More statistics section with active 30-minute pace blocks based on a trimmed average - class-specific setup markers for tires, suspension, car changes, or custom notes, including an automatic 30-minute before/after comparison - detailed stint analysis with normal pace, best 10-lap race pace, mistakes, consistency, and start/end development - automatic progression levels at useful lap totals without manual setup diff --git a/README.sv.md b/README.sv.md index d69f819..13aa266 100644 --- a/README.sv.md +++ b/README.sv.md @@ -23,7 +23,7 @@ Aktuella layouter för racedrift, livevisning, träning och systemkonfiguration. Träningsöversikt
Träningsöversikt - Extra träningsstatistik med tempo-heatmap och stintanalys
Extra träningsstatistik + Fördjupad träningsstatistik med tempo-heatmap och stintanalys
Fördjupad träningsstatistik Domare och racekorrigeringar
Domare och racekorrigeringar @@ -193,7 +193,7 @@ Förarprofilen kan även lagra `Klubb` och `Land`. Värdena ärvs när ytterliga - en positiv personlig summering som ger kredit för dagens mängd, personbästa, tempo, jämnhet och uthållighet utan att ranka förare - klubbfeed sorterad på senaste aktivitet i stället för placering eller totalvarvsranking - konfigurerbart gemensamt klubbmål som räknar alla nya giltiga träningsvarv från registrerade förare från det att målet skapas -- en hopfällbar Extra statistik-del med aktiva 30-minutersblock baserade på trimmat snitt +- en gemensam hopfällbar Mer statistik-del med aktiva 30-minutersblock baserade på trimmat snitt - klasspecifika setupmarkörer för däck, dämpare, bilbyte eller egen notering med automatisk jämförelse 30 minuter före/efter - detaljerad stintanalys med normaltempo, bästa race pace över 10 varv, misstag, konsekvens och utveckling mellan start/slut - automatiska utvecklingsnivåer vid lämpliga varvantal utan manuell konfiguration diff --git a/docs/javascript-architecture.md b/docs/javascript-architecture.md index 1837c31..46f7d1d 100644 --- a/docs/javascript-architecture.md +++ b/docs/javascript-architecture.md @@ -527,7 +527,7 @@ Owns: - positive-credit and optional daily-challenge cards based on the selected driver's own development - recent club progress feed ordered by latest activity, without position numbers or cross-driver performance scoring - shared club-goal create, celebrate, replace, and delete actions in the overview -- collapsed Extra statistics with pace heatmap, setup-marker actions, weekday pace, featured stints, and an expandable full stint table +- one collapsed More statistics section containing pace heatmap, setup-marker actions, weekday pace, stint analysis, timing channels, and history Mutations: - replaces or appends entries in `state.training.goals` diff --git a/src/app.js b/src/app.js index fc92a7d..f03a8c2 100644 --- a/src/app.js +++ b/src/app.js @@ -444,9 +444,7 @@ const TRANSLATIONS = { "training.no_activity": "Ingen aktivitet ännu", "training.history": "Träningshistorik per dag", "training.detailed_stats": "Mer statistik", - "training.detailed_stats_hint": "Snitt, varvserie, mellantider, depåstopp och historik per träningsdag.", - "training.extra_stats": "Extra statistik", - "training.extra_stats_hint": "Tempo per 30 minuter, setupändringar och djupare stintanalys.", + "training.detailed_stats_hint": "Tempo per 30 minuter, setupändringar, stintanalys, mellantider, depåstopp och historik.", "training.pace_30_title": "Tempo per aktivt 30-minutersblock", "training.pace_30_hint": "Visar bara block med körning. Tempot är ett trimmat snitt så enstaka krascher inte styr hela blocket.", "training.no_pace_data": "Det finns inte tillräckligt med varv för en tempokarta ännu.", @@ -1479,7 +1477,7 @@ const TRANSLATIONS = { "guide.training_14": "14. En personlig profil och mobillänk kan innehålla flera klasser, men 2WD/4WD-statistik, stints, varvtider och rekommendationer visas alltid separat per vald klass.", "guide.training_15": "15. Utvecklingskortet jämför de senaste 30 giltiga varven med de föregående 30 inom samma klass. Positivt värde betyder snabbare snittempo eller mindre spridning; för litet underlag visas som insamling i stället för en osäker trend.", "guide.training_16": "16. Achievements och klubbens framstegsfeed lyfter träningspass, varvmål, jämn körning och fullföljda femminutersstints. Feedens ordning följer senaste aktivitet och är inte en ranking mellan förare.", - "guide.training_17": "17. Öppna Extra statistik för tempo per aktivt 30-minutersblock. Tomma tider döljs och tempot använder trimmat snitt så enstaka krascher inte förvränger jämförelsen.", + "guide.training_17": "17. Öppna Mer statistik för tempo per aktivt 30-minutersblock, setupändringar, stintanalys, mellantider, depåstopp och historik. Tomma tider döljs och tempot använder trimmat snitt.", "guide.training_18": "18. Före en biländring väljer du Ny setup, däck, dämpare, bil eller egen notering och klickar Markera ändring nu. Markören sparas endast för vald personlig profil och klass.", "guide.training_19": "19. När det finns minst tre giltiga varv inom 30 minuter både före och efter markören visas förbättringen automatiskt. Jämför bara pass med liknande bana och förhållanden.", "guide.training_20": "20. Stintanalysen använder glapp över två minuter som gräns. Normaltempo är trimmat snitt, misstag är varv över 15 procent långsammare än stintens median och Race pace 10 kräver tio sammanhängande varv.", @@ -1690,9 +1688,7 @@ const TRANSLATIONS = { "training.no_activity": "No activity yet", "training.history": "Daily practice history", "training.detailed_stats": "More statistics", - "training.detailed_stats_hint": "Averages, lap streak, split timing, pit stops, and daily practice history.", - "training.extra_stats": "Extra statistics", - "training.extra_stats_hint": "30-minute pace, setup changes, and deeper stint analysis.", + "training.detailed_stats_hint": "30-minute pace, setup changes, stint analysis, split timing, pit stops, and history.", "training.pace_30_title": "Pace per active 30-minute block", "training.pace_30_hint": "Only blocks with driving are shown. Pace uses a trimmed average so isolated crashes do not control the block.", "training.no_pace_data": "There are not enough laps for a pace map yet.", @@ -2725,7 +2721,7 @@ const TRANSLATIONS = { "guide.training_14": "14. One personal profile and mobile link can contain several classes, but 2WD/4WD statistics, stints, lap times, and recommendations are always shown separately for the selected class.", "guide.training_15": "15. The development card compares the latest 30 valid laps with the preceding 30 in the same class. A positive value means faster average pace or a smaller spread; insufficient data is shown as collecting rather than an unreliable trend.", "guide.training_16": "16. Achievements and the club progress feed recognize practice sessions, lap milestones, controlled driving, and completed five-minute stints. The feed follows recent activity and is not a ranking between drivers.", - "guide.training_17": "17. Open Extra statistics for pace per active 30-minute block. Empty periods are hidden and pace uses a trimmed average so isolated crashes do not distort the comparison.", + "guide.training_17": "17. Open More statistics for active 30-minute pace, setup changes, stint analysis, split timing, pit stops, and history. Empty periods are hidden and pace uses a trimmed average.", "guide.training_18": "18. Before changing the car, select New setup, tires, suspension, car, or a custom note and click Mark change now. The marker is stored only for the selected personal profile and class.", "guide.training_19": "19. Once at least three valid laps exist within 30 minutes both before and after the marker, the change is compared automatically. Only compare runs with similar track conditions.", "guide.training_20": "20. Stint analysis uses gaps longer than two minutes as boundaries. Normal pace is a trimmed average, mistakes are laps over 15 percent slower than the stint median, and Race pace 10 requires ten consecutive laps.", diff --git a/src/training_views.js b/src/training_views.js index 524032b..a17ab55 100644 --- a/src/training_views.js +++ b/src/training_views.js @@ -24,7 +24,7 @@ function renderStintRow(row, { t, escapeHtml, formatLap, formatRaceClock }) { } export function renderTrainingView(deps) { - const extraStatsWasOpen = Boolean(document.getElementById("trainingExtraStats")?.open); + const moreStatsWasOpen = Boolean(document.getElementById("trainingMoreStats")?.open); const { state, dom, @@ -453,9 +453,9 @@ export function renderTrainingView(deps) { -
+
- ${escapeHtml(t("training.extra_stats"))}${escapeHtml(t("training.extra_stats_hint"))} + ${escapeHtml(t("training.detailed_stats"))}${escapeHtml(t("training.detailed_stats_hint"))} +
@@ -506,15 +506,6 @@ export function renderTrainingView(deps) {
` : ""}

${escapeHtml(t("training.stats_method"))}

- -
- -
- - ${escapeHtml(t("training.detailed_stats"))}${escapeHtml(t("training.detailed_stats_hint"))} - + - -
${trainingInsight(t("training.average_lap"), formatLap(stats.averageLapMs))} ${trainingInsight(t("training.recent_average"), formatLap(stats.recentAverageMs))}