This commit is contained in:
larssand
2026-03-27 16:41:23 +01:00
parent 735f1bd350
commit 1d3dcdf50e
2 changed files with 29 additions and 28 deletions

View File

@@ -489,12 +489,19 @@ export function renderEventManagerView(context) {
persistRaceParticipants(); persistRaceParticipants();
}); });
document.getElementById("teamForm")?.addEventListener("submit", (e) => { const getTeamCreateSelections = () => ({
e.preventDefault(); driverIds: Array.from(document.querySelectorAll('[form="teamForm"][name="teamDriverIds"]:checked')).map((node) => String(node.value)).filter(Boolean),
const form = new FormData(e.currentTarget); 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 name = String(form.get("teamName") || "").trim();
const driverIds = form.getAll("teamDriverIds").map(String).filter(Boolean); const { driverIds, carIds } = getTeamCreateSelections();
const carIds = form.getAll("teamCarIds").map(String).filter(Boolean);
if (!name || (!driverIds.length && !carIds.length)) { if (!name || (!driverIds.length && !carIds.length)) {
return; return;
} }
@@ -503,35 +510,29 @@ export function renderEventManagerView(context) {
setSelectedTeamEditId(createdTeam.id); setSelectedTeamEditId(createdTeam.id);
saveState(); saveState();
rerenderEventManager(eventId); rerenderEventManager(eventId);
};
document.getElementById("teamForm")?.addEventListener("submit", (e) => {
e.preventDefault();
commitTeamCreate();
}); });
eventManageArea.addEventListener("click", (clickEvent) => { document.getElementById("teamAddSave")?.addEventListener("click", commitTeamCreate);
const target = clickEvent.target instanceof Element
? clickEvent.target.closest('[id^="team-edit-"], [id^="team-delete-"]') raceTeams.forEach((team) => {
: null; document.getElementById(`team-edit-${team.id}`)?.addEventListener("click", () => {
if (!(target instanceof HTMLElement)) { setSelectedTeamEditId(team.id);
return;
}
const nodeId = String(target.id || "");
if (nodeId.startsWith("team-edit-")) {
clickEvent.preventDefault();
clickEvent.stopPropagation();
const teamId = nodeId.slice("team-edit-".length);
setSelectedTeamEditId(teamId);
rerenderEventManager(eventId); rerenderEventManager(eventId);
return; });
}
if (nodeId.startsWith("team-delete-")) { document.getElementById(`team-delete-${team.id}`)?.addEventListener("click", () => {
clickEvent.preventDefault(); event.raceConfig.teams = getEventTeams(event).filter((item) => item.id !== team.id);
clickEvent.stopPropagation(); if (getSelectedTeamEditId() === team.id) {
const teamId = nodeId.slice("team-delete-".length);
event.raceConfig.teams = getEventTeams(event).filter((item) => item.id !== teamId);
if (getSelectedTeamEditId() === teamId) {
setSelectedTeamEditId(null); setSelectedTeamEditId(null);
} }
saveState(); saveState();
rerenderEventManager(eventId); rerenderEventManager(eventId);
} });
}); });
document.getElementById("teamEditCancel")?.addEventListener("click", () => { document.getElementById("teamEditCancel")?.addEventListener("click", () => {

View File

@@ -292,7 +292,7 @@ export function renderEventManagerMarkup(context) {
<p class="hint">${t("events.team_steps")}</p> <p class="hint">${t("events.team_steps")}</p>
<form id="teamForm" class="form-grid cols-4 team-create-form"> <form id="teamForm" class="form-grid cols-4 team-create-form">
<input name="teamName" required placeholder="${t("events.team_name")}" /> <input name="teamName" required placeholder="${t("events.team_name")}" />
<button class="btn btn-primary" type="submit">${t("events.add_team")}</button> <button class="btn btn-primary" id="teamAddSave" type="button">${t("events.add_team")}</button>
</form> </form>
<p class="hint">${t("events.team_hint")}</p> <p class="hint">${t("events.team_hint")}</p>
<div class="panel-row mt-16"> <div class="panel-row mt-16">