diff --git a/src/event_manager_controller.js b/src/event_manager_controller.js index 5aabcc1..f55648d 100644 --- a/src/event_manager_controller.js +++ b/src/event_manager_controller.js @@ -254,12 +254,18 @@ export function renderEventManagerView(context) { document.getElementById("sessionForm")?.addEventListener("submit", (e) => { e.preventDefault(); - const form = new FormData(e.currentTarget); + const formNode = e.currentTarget; + if (!(formNode instanceof HTMLFormElement)) { + return; + } + const form = new FormData(formNode); + const typeField = formNode.querySelector('[name="type"]'); + const selectedType = typeField instanceof HTMLSelectElement ? typeField.value : String(form.get("type") || ""); state.sessions.push(normalizeSession({ id: uid("session"), eventId, name: String(form.get("name")).trim(), - type: String(form.get("type")), + type: selectedType, durationMin: Number(form.get("durationMin")), followUpSec: Math.max(0, Number(form.get("followUpSec") || 0) || 0), startMode: String(form.get("startMode") || "mass"), @@ -350,7 +356,13 @@ export function renderEventManagerView(context) { if (!editingSession) { return; } - const form = new FormData(event.currentTarget); + const formNode = event.currentTarget; + if (!(formNode instanceof HTMLFormElement)) { + return; + } + const form = new FormData(formNode); + const typeField = formNode.querySelector('[name="type"]'); + const selectedType = typeField instanceof HTMLSelectElement ? typeField.value : String(form.get("type") || editingSession.type); const cleanedName = String(form.get("name") || "").trim(); const cleanedDuration = Number(form.get("durationMin") || editingSession.durationMin || 5) || 0; if (!cleanedName) { @@ -363,7 +375,7 @@ export function renderEventManagerView(context) { } setFormError("sessionEditError", ""); editingSession.name = cleanedName; - editingSession.type = String(form.get("type") || editingSession.type); + editingSession.type = selectedType; editingSession.durationMin = Math.max(1, cleanedDuration); editingSession.followUpSec = Math.max(0, Number(form.get("followUpSec") || 0) || 0); editingSession.startMode = normalizeStartMode(String(form.get("startMode") || editingSession.startMode || "mass")); @@ -496,7 +508,11 @@ export function renderEventManagerView(context) { if (showTeamsSection) { document.getElementById("teamForm")?.addEventListener("submit", (e) => { e.preventDefault(); - const form = new FormData(e.currentTarget); + const formNode = e.currentTarget; + if (!(formNode instanceof HTMLFormElement)) { + return; + } + const form = new FormData(formNode); const name = String(form.get("teamName") || "").trim(); const driverIds = form.getAll("teamDriverIds").map(String).filter(Boolean); const carIds = form.getAll("teamCarIds").map(String).filter(Boolean); @@ -559,7 +575,11 @@ export function renderEventManagerView(context) { if (!editingTeam) { return; } - const form = new FormData(submitEvent.currentTarget); + const formNode = submitEvent.currentTarget; + if (!(formNode instanceof HTMLFormElement)) { + return; + } + const form = new FormData(formNode); const name = String(form.get("teamName") || "").trim(); const driverIds = form.getAll("teamDriverIds").map(String).filter(Boolean); const carIds = form.getAll("teamCarIds").map(String).filter(Boolean); diff --git a/src/event_manager_view.js b/src/event_manager_view.js index 83be2b7..eddb289 100644 --- a/src/event_manager_view.js +++ b/src/event_manager_view.js @@ -59,7 +59,7 @@ export function renderEventManagerMarkup(context) {