Fix lap limits and five-minute stint statistics

This commit is contained in:
larssand
2026-09-02 19:36:25 +02:00
parent f561dd8feb
commit 483a9dbd5a
14 changed files with 356 additions and 110 deletions

View File

@@ -19,6 +19,7 @@ function renderStintRow(row, { t, escapeHtml, formatLap, formatRaceClock }) {
<td>${row.mistakes} (${row.mistakePct.toFixed(0)}%)</td>
<td>${escapeHtml(endChange)}</td>
<td>${row.consistencyPct == null ? escapeHtml(t("training.insufficient_data")) : `${row.consistencyPct.toFixed(1)}%`}</td>
<td>${row.fiveMinuteResult ? `${row.fiveMinuteResult.lapCount}/${formatRaceClock(row.fiveMinuteResult.totalMs)} · ${t("training.average_short")} ${formatLap(row.fiveMinuteResult.averageLapMs)}` : "-"}</td>
<td>${formatRaceClock(row.durationMs)}</td>
</tr>`;
}
@@ -260,10 +261,10 @@ export function renderTrainingView(deps) {
: `<p class="hint">${escapeHtml(t("training.weekday_needs_days"))}</p>`;
const featuredStints = [stintAnalysis.best, ...stintAnalysis.rows.slice(0, 3)]
.filter((row, index, rows) => row && rows.findIndex((item) => item.id === row.id) === index);
const stintColumns = `<tr><th>${escapeHtml(t("training.stint"))}</th><th>${escapeHtml(t("training.start"))}</th><th>${escapeHtml(t("training.laps"))}</th><th>${escapeHtml(t("training.best_lap"))}</th><th>${escapeHtml(t("training.trimmed_pace"))}</th><th>${escapeHtml(t("training.race_pace_10"))}</th><th>${escapeHtml(t("training.mistakes"))}</th><th>${escapeHtml(t("training.start_end"))}</th><th>${escapeHtml(t("training.consistency"))}</th><th>${escapeHtml(t("table.duration"))}</th></tr>`;
const stintColumns = `<tr><th>${escapeHtml(t("training.stint"))}</th><th>${escapeHtml(t("training.start"))}</th><th>${escapeHtml(t("training.laps"))}</th><th>${escapeHtml(t("training.best_lap"))}</th><th>${escapeHtml(t("training.trimmed_pace"))}</th><th>${escapeHtml(t("training.race_pace_10"))}</th><th>${escapeHtml(t("training.mistakes"))}</th><th>${escapeHtml(t("training.start_end"))}</th><th>${escapeHtml(t("training.consistency"))}</th><th>${escapeHtml(t("training.stint_five_minute"))}</th><th>${escapeHtml(t("training.stint_duration"))}</th></tr>`;
const featuredStintRows = featuredStints.length
? featuredStints.map((row) => renderStintRow(row, { t, escapeHtml, formatLap, formatRaceClock })).join("")
: `<tr><td colspan="10">${escapeHtml(t("training.no_stints"))}</td></tr>`;
: `<tr><td colspan="11">${escapeHtml(t("training.no_stints"))}</td></tr>`;
const allStintRows = stintAnalysis.rows.map((row) => renderStintRow(row, { t, escapeHtml, formatLap, formatRaceClock })).join("");
const markerMarkup = markerComparisons.length
? markerComparisons.map((marker) => {