diff --git a/src/event_manager_controller.js b/src/event_manager_controller.js index 59a8a96..945ecd2 100644 --- a/src/event_manager_controller.js +++ b/src/event_manager_controller.js @@ -489,12 +489,19 @@ export function renderEventManagerView(context) { persistRaceParticipants(); }); - document.getElementById("teamForm")?.addEventListener("submit", (e) => { - e.preventDefault(); - const form = new FormData(e.currentTarget); + const getTeamCreateSelections = () => ({ + driverIds: Array.from(document.querySelectorAll('[form="teamForm"][name="teamDriverIds"]:checked')).map((node) => String(node.value)).filter(Boolean), + carIds: Array.from(document.querySelectorAll('[form="teamForm"][name="teamCarIds"]:checked')).map((node) => String(node.value)).filter(Boolean), + }); + + const commitTeamCreate = () => { + const formNode = document.getElementById("teamForm"); + 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); + const { driverIds, carIds } = getTeamCreateSelections(); if (!name || (!driverIds.length && !carIds.length)) { return; } @@ -503,35 +510,29 @@ export function renderEventManagerView(context) { setSelectedTeamEditId(createdTeam.id); saveState(); rerenderEventManager(eventId); + }; + + document.getElementById("teamForm")?.addEventListener("submit", (e) => { + e.preventDefault(); + commitTeamCreate(); }); - eventManageArea.addEventListener("click", (clickEvent) => { - const target = clickEvent.target instanceof Element - ? clickEvent.target.closest('[id^="team-edit-"], [id^="team-delete-"]') - : null; - if (!(target instanceof HTMLElement)) { - return; - } - const nodeId = String(target.id || ""); - if (nodeId.startsWith("team-edit-")) { - clickEvent.preventDefault(); - clickEvent.stopPropagation(); - const teamId = nodeId.slice("team-edit-".length); - setSelectedTeamEditId(teamId); + document.getElementById("teamAddSave")?.addEventListener("click", commitTeamCreate); + + raceTeams.forEach((team) => { + document.getElementById(`team-edit-${team.id}`)?.addEventListener("click", () => { + setSelectedTeamEditId(team.id); rerenderEventManager(eventId); - return; - } - if (nodeId.startsWith("team-delete-")) { - clickEvent.preventDefault(); - clickEvent.stopPropagation(); - const teamId = nodeId.slice("team-delete-".length); - event.raceConfig.teams = getEventTeams(event).filter((item) => item.id !== teamId); - if (getSelectedTeamEditId() === teamId) { + }); + + document.getElementById(`team-delete-${team.id}`)?.addEventListener("click", () => { + event.raceConfig.teams = getEventTeams(event).filter((item) => item.id !== team.id); + if (getSelectedTeamEditId() === team.id) { setSelectedTeamEditId(null); } saveState(); rerenderEventManager(eventId); - } + }); }); document.getElementById("teamEditCancel")?.addEventListener("click", () => { diff --git a/src/event_manager_view.js b/src/event_manager_view.js index b84eab8..27e108b 100644 --- a/src/event_manager_view.js +++ b/src/event_manager_view.js @@ -292,7 +292,7 @@ export function renderEventManagerMarkup(context) {
${t("events.team_steps")}
${t("events.team_hint")}