This commit is contained in:
larssand
2026-03-27 18:06:39 +01:00
parent 0df1aba99a
commit aeaca807f1
2 changed files with 28 additions and 76 deletions

View File

@@ -489,47 +489,36 @@ export function renderEventManagerView(context) {
persistRaceParticipants(); persistRaceParticipants();
}); });
const setTeamDebug = (message) => { document.getElementById("teamForm")?.addEventListener("submit", (e) => {
const node = document.getElementById("teamDebugStatus"); e.preventDefault();
if (node) node.textContent = message || ""; 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 name = String(form.get("teamName") || "").trim();
const { driverIds, carIds } = getTeamCreateSelections(); const driverIds = form.getAll("teamDriverIds").map(String).filter(Boolean);
if (!name) { const carIds = form.getAll("teamCarIds").map(String).filter(Boolean);
setFormError("teamCreateError", t("validation.required_name")); if (!name || (!driverIds.length && !carIds.length)) {
setTeamDebug("create: missing name");
return; return;
} }
if (!driverIds.length && !carIds.length) {
setFormError("teamCreateError", t("validation.invalid_selection"));
setTeamDebug("create: no drivers/cars selected");
return;
}
setFormError("teamCreateError", "");
setTeamDebug(`create: name=${name} drivers=${driverIds.length} cars=${carIds.length}`);
const createdTeam = normalizeRaceTeam({ id: uid("team"), name, driverIds, carIds }); const createdTeam = normalizeRaceTeam({ id: uid("team"), name, driverIds, carIds });
event.raceConfig.teams = [...getEventTeams(event), createdTeam]; event.raceConfig.teams = [...getEventTeams(event), createdTeam];
setSelectedTeamEditId(createdTeam.id); setSelectedTeamEditId(createdTeam.id);
saveState(); saveState();
rerenderEventManager(eventId); rerenderEventManager(eventId);
}; });
document.getElementById("teamForm")?.addEventListener("submit", (e) => { raceTeams.forEach((team) => {
e.preventDefault(); document.getElementById(`team-edit-${team.id}`)?.addEventListener("click", () => {
setTeamDebug("create: submit fired"); setSelectedTeamEditId(team.id);
commitTeamCreate(); rerenderEventManager(eventId);
});
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", () => { document.getElementById("teamEditCancel")?.addEventListener("click", () => {
@@ -554,15 +543,12 @@ export function renderEventManagerView(context) {
rerenderEventManager(eventId); rerenderEventManager(eventId);
}); });
const commitTeamEdit = () => { document.getElementById("teamEditForm")?.addEventListener("submit", (submitEvent) => {
submitEvent.preventDefault();
if (!editingTeam) { if (!editingTeam) {
return; return;
} }
const formNode = document.getElementById("teamEditForm"); const form = new FormData(submitEvent.currentTarget);
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 = form.getAll("teamDriverIds").map(String).filter(Boolean);
const carIds = form.getAll("teamCarIds").map(String).filter(Boolean); const carIds = form.getAll("teamCarIds").map(String).filter(Boolean);
@@ -581,41 +567,8 @@ export function renderEventManagerView(context) {
setSelectedTeamEditId(null); setSelectedTeamEditId(null);
saveState(); saveState();
rerenderEventManager(eventId); rerenderEventManager(eventId);
};
document.getElementById("teamEditForm")?.addEventListener("submit", (submitEvent) => {
submitEvent.preventDefault();
setTeamDebug("edit: submit fired");
commitTeamEdit();
}); });
window.liveRcTeamSaveEdit = () => {
setTeamDebug("edit: save fired");
commitTeamEdit();
};
window.liveRcTeamAdd = () => {
setTeamDebug("create: button fired");
commitTeamCreate();
};
window.liveRcTeamEdit = (teamId) => {
setTeamDebug(`edit: open ${teamId}`);
if (!teamId) return;
setSelectedTeamEditId(String(teamId));
rerenderEventManager(eventId);
};
window.liveRcTeamRemove = (teamId) => {
setTeamDebug(`delete: ${teamId}`);
if (!teamId) return;
event.raceConfig.teams = getEventTeams(event).filter((item) => item.id !== String(teamId));
if (getSelectedTeamEditId() === String(teamId)) {
setSelectedTeamEditId(null);
}
saveState();
rerenderEventManager(eventId);
};
document.getElementById("raceFormatBasicToggle")?.addEventListener("click", () => { document.getElementById("raceFormatBasicToggle")?.addEventListener("click", () => {
setRaceFormatAdvanced(false); setRaceFormatAdvanced(false);
rerenderEventManager(eventId); rerenderEventManager(eventId);

View File

@@ -292,9 +292,8 @@ 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" id="teamAddSave" type="button" onclick="if(window.liveRcTeamAdd){window.liveRcTeamAdd();}">${t("events.add_team")}</button> <button class="btn btn-primary" id="teamAddSave" type="button">${t("events.add_team")}</button>
<p class="form-error" id="teamCreateError" hidden></p> <p class="form-error" id="teamCreateError" hidden></p>
<p class="hint" id="teamDebugStatus"></p>
</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">
@@ -355,8 +354,8 @@ export function renderEventManagerMarkup(context) {
)}</div> )}</div>
</div> </div>
<div class="actions-inline"> <div class="actions-inline">
<button id="team-edit-${team.id}" class="btn" type="button" onclick="if(window.liveRcTeamEdit){window.liveRcTeamEdit('${team.id}');}">${t("events.edit_team")}</button> <button id="team-edit-${team.id}" class="btn" type="button">${t("events.edit_team")}</button>
<button id="team-delete-${team.id}" class="btn btn-danger" type="button" onclick="if(window.liveRcTeamRemove){window.liveRcTeamRemove('${team.id}');}">${t("common.delete")}</button> <button id="team-delete-${team.id}" class="btn btn-danger" type="button">${t("common.delete")}</button>
</div> </div>
</article> </article>
` `
@@ -745,7 +744,7 @@ export function renderEventManagerMarkup(context) {
</div> </div>
</div> </div>
<div class="actions-inline"> <div class="actions-inline">
<button class="btn btn-primary" id="teamEditSave" type="button" onclick="if(window.liveRcTeamSaveEdit){window.liveRcTeamSaveEdit();}">${t("common.save")}</button> <button class="btn btn-primary" id="teamEditSave" type="button">${t("common.save")}</button>
<button class="btn" id="teamEditCancelFooter" type="button">${t("common.cancel")}</button> <button class="btn" id="teamEditCancelFooter" type="button">${t("common.cancel")}</button>
</div> </div>
</form> </form>