gjort om race o lag

This commit is contained in:
larssand
2026-03-27 18:47:59 +01:00
parent a1695e86db
commit 4daee0cd21
3 changed files with 170 additions and 191 deletions

View File

@@ -20,6 +20,7 @@ export function renderEventManagerMarkup(context) {
selectedParticipantCount,
raceDrivers,
teamDriverPool,
showTeamsSection,
state,
getDriverDisplayById,
raceFormatAdvanced,
@@ -282,91 +283,96 @@ export function renderEventManagerMarkup(context) {
</div>
</section>
<section class="panel" id="manage-setup-teams">
<div class="panel-header panel-header-with-pill">
<h3>${t("events.teams")}</h3>
<span class="pill">${raceTeams.length}</span>
</div>
<div class="panel-body">
<p class="hint">${t("events.team_race_intro")}</p>
<p class="hint">${t("events.team_steps")}</p>
<form id="teamForm" class="form-grid cols-4 team-create-form">
<input name="teamName" required placeholder="${t("events.team_name")}" />
<button class="btn btn-primary" id="teamAddSave" type="button">${t("events.add_team")}</button>
<p class="form-error" id="teamCreateError" hidden></p>
</form>
<p class="hint">${t("events.team_hint")}</p>
<p class="hint" id="teamRenderDebug">teams rendered: ${raceTeams.length}</p>
<div class="panel-row mt-16">
<section class="panel">
<div class="panel-header"><h3>${t("events.team_drivers")}</h3></div>
<div class="panel-body"><p class="hint">${t("events.team_form_drivers")}</p></div>
${teamDriverPool.fallback ? `<div class="panel-body"><p class="hint">${t("events.team_driver_fallback")}</p></div>` : ""}
<div class="panel-body check-grid">
${raceDrivers
.map(
(driver) => `
<label class="check-card">
<input type="checkbox" name="teamDriverIds" form="teamForm" value="${driver.id}" />
<span>${escapeHtml(driver.name)}${driver.transponder ? ` (${escapeHtml(driver.transponder)})` : ""}</span>
</label>
`
)
.join("")}
</div>
</section>
<section class="panel">
<div class="panel-header"><h3>${t("events.team_cars")}</h3></div>
<div class="panel-body"><p class="hint">${t("events.team_form_cars")}</p></div>
<div class="panel-body check-grid">
${state.cars
.map(
(car) => `
<label class="check-card">
<input type="checkbox" name="teamCarIds" form="teamForm" value="${car.id}" />
<span>${escapeHtml(car.name)} (${escapeHtml(car.transponder || "-")})</span>
</label>
`
)
.join("")}
</div>
</section>
</div>
<div class="mt-16">
${
raceTeams.length
? raceTeams
.map(
(team) => `
<article class="team-card">
<div>
<strong>${escapeHtml(team.name)}</strong>
<div class="hint">${t("events.team_drivers")}: ${escapeHtml(
team.driverIds.map((driverId) => getDriverDisplayById(driverId)).join(", ") || "-"
)}</div>
<div class="hint">${t("events.team_cars")}: ${escapeHtml(
team.carIds
.map((carId) => {
const car = state.cars.find((item) => item.id === carId);
return car ? `${car.name} (${car.transponder || "-"})` : "";
})
.filter(Boolean)
.join(", ") || "-"
)}</div>
</div>
<div class="actions-inline">
<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">${t("common.delete")}</button>
</div>
</article>
`
)
.join("")
: `<p>${t("events.no_teams")}</p>`
}
</div>
</div>
</section>
${
showTeamsSection
? `
<section class="panel" id="manage-setup-teams">
<div class="panel-header panel-header-with-pill">
<h3>${t("events.teams")}</h3>
<span class="pill">${raceTeams.length}</span>
</div>
<div class="panel-body">
<p class="hint">${t("events.team_race_intro")}</p>
<p class="hint">${t("events.team_steps")}</p>
<form id="teamForm" class="form-grid cols-4 team-create-form">
<input name="teamName" required placeholder="${t("events.team_name")}" />
<button class="btn btn-primary" type="submit">${t("events.add_team")}</button>
<p class="form-error" id="teamCreateError" hidden></p>
</form>
<p class="hint">${t("events.team_hint")}</p>
<div class="panel-row mt-16">
<section class="panel">
<div class="panel-header"><h3>${t("events.team_drivers")}</h3></div>
<div class="panel-body"><p class="hint">${t("events.team_form_drivers")}</p></div>
${teamDriverPool.fallback ? `<div class="panel-body"><p class="hint">${t("events.team_driver_fallback")}</p></div>` : ""}
<div class="panel-body check-grid">
${raceDrivers
.map(
(driver) => `
<label class="check-card">
<input type="checkbox" name="teamDriverIds" form="teamForm" value="${driver.id}" />
<span>${escapeHtml(driver.name)}${driver.transponder ? ` (${escapeHtml(driver.transponder)})` : ""}</span>
</label>
`
)
.join("")}
</div>
</section>
<section class="panel">
<div class="panel-header"><h3>${t("events.team_cars")}</h3></div>
<div class="panel-body"><p class="hint">${t("events.team_form_cars")}</p></div>
<div class="panel-body check-grid">
${state.cars
.map(
(car) => `
<label class="check-card">
<input type="checkbox" name="teamCarIds" form="teamForm" value="${car.id}" />
<span>${escapeHtml(car.name)} (${escapeHtml(car.transponder || "-")})</span>
</label>
`
)
.join("")}
</div>
</section>
</div>
<div class="mt-16">
${
raceTeams.length
? raceTeams
.map(
(team) => `
<article class="team-card">
<div>
<strong>${escapeHtml(team.name)}</strong>
<div class="hint">${t("events.team_drivers")}: ${escapeHtml(
team.driverIds.map((driverId) => getDriverDisplayById(driverId)).join(", ") || "-"
)}</div>
<div class="hint">${t("events.team_cars")}: ${escapeHtml(
team.carIds
.map((carId) => {
const car = state.cars.find((item) => item.id === carId);
return car ? `${car.name} (${car.transponder || "-"})` : "";
})
.filter(Boolean)
.join(", ") || "-"
)}</div>
</div>
<div class="actions-inline">
<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">${t("common.delete")}</button>
</div>
</article>
`
)
.join("")
: `<p>${t("events.no_teams")}</p>`
}
</div>
</div>
</section>
`
: ""
}
</div>
<section class="panel mt-16" id="manage-format">