gjort om race o lag
This commit is contained in:
@@ -109,7 +109,6 @@ export function renderEventManagerView(context) {
|
||||
const teamDriverPool = event.mode === "race" ? getTeamDriverPool(event) : { drivers: [], fallback: false };
|
||||
const raceDrivers = event.mode === "race" ? teamDriverPool.drivers : [];
|
||||
const raceTeams = event.mode === "race" ? getEventTeams(event) : [];
|
||||
if (event.mode === "race") { window.__teamRenderCount = raceTeams.length; }
|
||||
if (selectedTeamEditId && !raceTeams.some((team) => team.id === selectedTeamEditId)) {
|
||||
setSelectedTeamEditId(null);
|
||||
}
|
||||
@@ -124,6 +123,9 @@ export function renderEventManagerView(context) {
|
||||
const racePresets = getRaceFormatPresets();
|
||||
const selectedPreset = racePresets.find((preset) => preset.id === event.raceConfig.presetId) || racePresets[0];
|
||||
const isEndurancePreset = event.mode === "race" && selectedPreset?.id === "endurance";
|
||||
const showTeamsSection =
|
||||
event.mode === "race" &&
|
||||
(isEndurancePreset || sessions.some((session) => session.type === "team_race") || raceTeams.length > 0 || Boolean(selectedTeamEditId));
|
||||
const showBasicQualifyingFields = raceFormatAdvanced || !isEndurancePreset;
|
||||
const showBasicFinalFields = raceFormatAdvanced || !isEndurancePreset;
|
||||
const selectedParticipantCount = event.mode === "race" ? (event.raceConfig.participantsConfigured ? (event.raceConfig.driverIds || []).length : raceDrivers.length) : 0;
|
||||
@@ -161,6 +163,7 @@ export function renderEventManagerView(context) {
|
||||
selectedParticipantCount,
|
||||
raceDrivers,
|
||||
teamDriverPool,
|
||||
showTeamsSection,
|
||||
state,
|
||||
getDriverDisplayById,
|
||||
raceFormatAdvanced,
|
||||
@@ -490,119 +493,93 @@ export function renderEventManagerView(context) {
|
||||
persistRaceParticipants();
|
||||
});
|
||||
|
||||
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, carIds } = getTeamCreateSelections();
|
||||
if (!name) {
|
||||
setFormError("teamCreateError", t("validation.required_name"));
|
||||
return;
|
||||
}
|
||||
if (!driverIds.length && !carIds.length) {
|
||||
setFormError("teamCreateError", t("validation.invalid_selection"));
|
||||
return;
|
||||
}
|
||||
setFormError("teamCreateError", "");
|
||||
const createdTeam = normalizeRaceTeam({ id: uid("team"), name, driverIds, carIds });
|
||||
event.raceConfig.teams = [...getEventTeams(event), createdTeam];
|
||||
setSelectedTeamEditId(null);
|
||||
saveState();
|
||||
rerenderEventManager(eventId);
|
||||
};
|
||||
|
||||
document.getElementById("teamForm")?.addEventListener("submit", (e) => {
|
||||
e.preventDefault();
|
||||
commitTeamCreate();
|
||||
});
|
||||
|
||||
document.getElementById("teamAddSave")?.addEventListener("click", () => {
|
||||
commitTeamCreate();
|
||||
});
|
||||
|
||||
raceTeams.forEach((team) => {
|
||||
document.getElementById(`team-edit-${team.id}`)?.addEventListener("click", () => {
|
||||
setSelectedTeamEditId(team.id);
|
||||
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);
|
||||
if (showTeamsSection) {
|
||||
document.getElementById("teamForm")?.addEventListener("submit", (e) => {
|
||||
e.preventDefault();
|
||||
const form = new FormData(e.currentTarget);
|
||||
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);
|
||||
if (!name) {
|
||||
setFormError("teamCreateError", t("validation.required_name"));
|
||||
return;
|
||||
}
|
||||
if (!driverIds.length && !carIds.length) {
|
||||
setFormError("teamCreateError", t("validation.invalid_selection"));
|
||||
return;
|
||||
}
|
||||
setFormError("teamCreateError", "");
|
||||
const createdTeam = normalizeRaceTeam({ id: uid("team"), name, driverIds, carIds });
|
||||
event.raceConfig.teams = [...getEventTeams(event), createdTeam];
|
||||
setSelectedTeamEditId(createdTeam.id);
|
||||
saveState();
|
||||
rerenderEventManager(eventId);
|
||||
});
|
||||
});
|
||||
|
||||
document.getElementById("teamEditCancel")?.addEventListener("click", () => {
|
||||
setSelectedTeamEditId(null);
|
||||
rerenderEventManager(eventId);
|
||||
});
|
||||
raceTeams.forEach((team) => {
|
||||
document.getElementById(`team-edit-${team.id}`)?.addEventListener("click", () => {
|
||||
setSelectedTeamEditId(team.id);
|
||||
rerenderEventManager(eventId);
|
||||
});
|
||||
|
||||
document.getElementById("teamEditCancelFooter")?.addEventListener("click", () => {
|
||||
setSelectedTeamEditId(null);
|
||||
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("teamEditModalOverlay")?.addEventListener("click", (modalEvent) => {
|
||||
if (modalEvent.target?.id === "teamEditModalOverlay") {
|
||||
document.getElementById("teamEditCancel")?.addEventListener("click", () => {
|
||||
setSelectedTeamEditId(null);
|
||||
rerenderEventManager(eventId);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
bindModalShell("teamEditModalOverlay", () => {
|
||||
setSelectedTeamEditId(null);
|
||||
rerenderEventManager(eventId);
|
||||
});
|
||||
document.getElementById("teamEditCancelFooter")?.addEventListener("click", () => {
|
||||
setSelectedTeamEditId(null);
|
||||
rerenderEventManager(eventId);
|
||||
});
|
||||
|
||||
const commitTeamEdit = () => {
|
||||
if (!editingTeam) {
|
||||
return;
|
||||
}
|
||||
const formNode = document.getElementById("teamEditForm");
|
||||
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);
|
||||
if (!name) {
|
||||
setFormError("teamEditError", t("validation.required_name"));
|
||||
return;
|
||||
}
|
||||
if (!driverIds.length && !carIds.length) {
|
||||
setFormError("teamEditError", t("validation.invalid_selection"));
|
||||
return;
|
||||
}
|
||||
setFormError("teamEditError", "");
|
||||
event.raceConfig.teams = getEventTeams(event).map((team) =>
|
||||
team.id === editingTeam.id ? normalizeRaceTeam({ ...team, name, driverIds, carIds }) : team
|
||||
);
|
||||
setSelectedTeamEditId(null);
|
||||
saveState();
|
||||
rerenderEventManager(eventId);
|
||||
};
|
||||
document.getElementById("teamEditModalOverlay")?.addEventListener("click", (modalEvent) => {
|
||||
if (modalEvent.target?.id === "teamEditModalOverlay") {
|
||||
setSelectedTeamEditId(null);
|
||||
rerenderEventManager(eventId);
|
||||
}
|
||||
});
|
||||
|
||||
document.getElementById("teamEditForm")?.addEventListener("submit", (submitEvent) => {
|
||||
submitEvent.preventDefault();
|
||||
commitTeamEdit();
|
||||
});
|
||||
bindModalShell("teamEditModalOverlay", () => {
|
||||
setSelectedTeamEditId(null);
|
||||
rerenderEventManager(eventId);
|
||||
});
|
||||
|
||||
document.getElementById("teamEditSave")?.addEventListener("click", () => {
|
||||
commitTeamEdit();
|
||||
});
|
||||
document.getElementById("teamEditForm")?.addEventListener("submit", (submitEvent) => {
|
||||
submitEvent.preventDefault();
|
||||
if (!editingTeam) {
|
||||
return;
|
||||
}
|
||||
const form = new FormData(submitEvent.currentTarget);
|
||||
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);
|
||||
if (!name) {
|
||||
setFormError("teamEditError", t("validation.required_name"));
|
||||
return;
|
||||
}
|
||||
if (!driverIds.length && !carIds.length) {
|
||||
setFormError("teamEditError", t("validation.invalid_selection"));
|
||||
return;
|
||||
}
|
||||
setFormError("teamEditError", "");
|
||||
event.raceConfig.teams = getEventTeams(event).map((team) =>
|
||||
team.id === editingTeam.id ? normalizeRaceTeam({ ...team, name, driverIds, carIds }) : team
|
||||
);
|
||||
setSelectedTeamEditId(null);
|
||||
saveState();
|
||||
rerenderEventManager(eventId);
|
||||
});
|
||||
}
|
||||
|
||||
document.getElementById("raceFormatBasicToggle")?.addEventListener("click", () => {
|
||||
setRaceFormatAdvanced(false);
|
||||
|
||||
Reference in New Issue
Block a user