diff --git a/src/app.js b/src/app.js index 0f6b188..a9739dd 100644 --- a/src/app.js +++ b/src/app.js @@ -2870,6 +2870,7 @@ function renderEventManager(eventId) { setSelectedGridSessionId: (value) => { selectedGridSessionId = value; }, getRaceFormatAdvanced: () => raceFormatAdvanced, setRaceFormatAdvanced: (value) => { raceFormatAdvanced = value; }, + getEventDrivers, getTeamDriverPool, getEventTeams, normalizeBrandingConfig, diff --git a/src/event_manager_controller.js b/src/event_manager_controller.js index 698e006..19c16fa 100644 --- a/src/event_manager_controller.js +++ b/src/event_manager_controller.js @@ -15,6 +15,7 @@ export function renderEventManagerView(context) { setSelectedGridSessionId, getRaceFormatAdvanced, setRaceFormatAdvanced, + getEventDrivers, getTeamDriverPool, getEventTeams, normalizeBrandingConfig, @@ -106,8 +107,8 @@ export function renderEventManagerView(context) { const driverOptions = state.drivers .map((d) => ``) .join(""); + const raceDrivers = event.mode === "race" ? getEventDrivers(event) : []; 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 (selectedTeamEditId && !raceTeams.some((team) => team.id === selectedTeamEditId)) { setSelectedTeamEditId(null); @@ -216,6 +217,15 @@ export function renderEventManagerView(context) { rerenderEventManager(eventId); }; + const updateEvent = (updater) => { + state.events = state.events.map((item) => { + if (item.id !== eventId) { + return item; + } + return normalizeEvent(updater(item)); + }); + }; + document.getElementById("eventBrandingForm")?.addEventListener("submit", (e) => { e.preventDefault(); const form = new FormData(e.currentTarget); @@ -535,7 +545,14 @@ export function renderEventManagerView(context) { } setFormError("teamCreateError", ""); const createdTeam = normalizeRaceTeam({ id: uid("team"), name, driverIds, carIds }); - event.raceConfig.teams = [...getEventTeams(event), createdTeam]; + const nextTeams = [...getEventTeams(event), createdTeam]; + updateEvent((item) => ({ + ...item, + raceConfig: { + ...(item.raceConfig || {}), + teams: nextTeams, + }, + })); setSelectedTeamEditId(null); saveState(); refreshManager(); @@ -548,7 +565,14 @@ export function renderEventManagerView(context) { }); document.getElementById(`team-delete-${team.id}`)?.addEventListener("click", () => { - event.raceConfig.teams = getEventTeams(event).filter((item) => item.id !== team.id); + const nextTeams = getEventTeams(event).filter((item) => item.id !== team.id); + updateEvent((item) => ({ + ...item, + raceConfig: { + ...(item.raceConfig || {}), + teams: nextTeams, + }, + })); if (getSelectedTeamEditId() === team.id) { setSelectedTeamEditId(null); } @@ -605,9 +629,16 @@ export function renderEventManagerView(context) { return; } setFormError("teamEditError", ""); - event.raceConfig.teams = getEventTeams(event).map((team) => + const nextTeams = getEventTeams(event).map((team) => team.id === editingTeam.id ? normalizeRaceTeam({ ...team, name, driverIds, carIds }) : team ); + updateEvent((item) => ({ + ...item, + raceConfig: { + ...(item.raceConfig || {}), + teams: nextTeams, + }, + })); setSelectedTeamEditId(null); saveState(); refreshManager();