From d65e4881e07f9224f93d88ddd653004e2b5ed768 Mon Sep 17 00:00:00 2001 From: larssand Date: Sat, 14 Mar 2026 22:29:36 +0100 Subject: [PATCH] fix edit driver --- src/app.js | 102 ++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 74 insertions(+), 28 deletions(-) diff --git a/src/app.js b/src/app.js index 5ead34d..04a25e9 100644 --- a/src/app.js +++ b/src/app.js @@ -976,6 +976,7 @@ let appVersionPollTimer = null; let baselineAppVersion = ""; let selectedLeaderboardKey = null; let selectedGridSessionId = null; +let selectedDriverEditId = null; let quickAddDraft = null; let overlaySyncTimer = null; let overlayRotationTimer = null; @@ -2044,6 +2045,7 @@ function renderDrivers() { const classOptions = state.classes .map((c) => ``) .join(""); + const editingDriver = state.drivers.find((driver) => driver.id === selectedDriverEditId) || null; dom.view.innerHTML = `
@@ -2077,6 +2079,37 @@ function renderDrivers() { )}
+ + ${ + editingDriver + ? ` + + ` + : "" + } `; document.getElementById("driverForm")?.addEventListener("submit", (e) => { @@ -2094,34 +2127,7 @@ function renderDrivers() { state.drivers.forEach((d) => { document.getElementById(`driver-edit-${d.id}`)?.addEventListener("click", () => { - const nextName = prompt(t("edit.driver_name"), d.name); - if (nextName === null) { - return; - } - const classPrompt = state.classes.map((item) => `${item.id}: ${item.name}`).join("\n"); - const nextClassId = prompt( - `${t("edit.driver_class")}\n${classPrompt}`, - d.classId || state.classes[0]?.id || "" - ); - if (nextClassId === null) { - return; - } - const nextTp = prompt(t("edit.driver_transponder"), d.transponder || ""); - if (nextTp === null) { - return; - } - const cleanedName = nextName.trim(); - const cleanedClassId = nextClassId.trim(); - if (!cleanedName) { - return; - } - if (cleanedClassId && !state.classes.some((item) => item.id === cleanedClassId)) { - return; - } - d.name = cleanedName; - d.classId = cleanedClassId || d.classId; - d.transponder = nextTp.trim(); - saveState(); + selectedDriverEditId = d.id; renderView(); }); @@ -2134,6 +2140,46 @@ function renderDrivers() { renderView(); }); }); + + document.getElementById("driverEditCancel")?.addEventListener("click", () => { + selectedDriverEditId = null; + renderView(); + }); + + document.getElementById("driverEditCancelFooter")?.addEventListener("click", () => { + selectedDriverEditId = null; + renderView(); + }); + + document.getElementById("driverEditModalOverlay")?.addEventListener("click", (event) => { + if (event.target?.id === "driverEditModalOverlay") { + selectedDriverEditId = null; + renderView(); + } + }); + + document.getElementById("driverEditForm")?.addEventListener("submit", (event) => { + event.preventDefault(); + if (!editingDriver) { + return; + } + const form = new FormData(event.currentTarget); + const cleanedName = String(form.get("name") || "").trim(); + const cleanedClassId = String(form.get("classId") || "").trim(); + const cleanedTp = String(form.get("transponder") || "").trim(); + if (!cleanedName) { + return; + } + if (cleanedClassId && !state.classes.some((item) => item.id === cleanedClassId)) { + return; + } + editingDriver.name = cleanedName; + editingDriver.classId = cleanedClassId || editingDriver.classId; + editingDriver.transponder = cleanedTp; + selectedDriverEditId = null; + saveState(); + renderView(); + }); } function renderCars() {