fixa lag
This commit is contained in:
@@ -254,12 +254,18 @@ export function renderEventManagerView(context) {
|
||||
|
||||
document.getElementById("sessionForm")?.addEventListener("submit", (e) => {
|
||||
e.preventDefault();
|
||||
const form = new FormData(e.currentTarget);
|
||||
const formNode = e.currentTarget;
|
||||
if (!(formNode instanceof HTMLFormElement)) {
|
||||
return;
|
||||
}
|
||||
const form = new FormData(formNode);
|
||||
const typeField = formNode.querySelector('[name="type"]');
|
||||
const selectedType = typeField instanceof HTMLSelectElement ? typeField.value : String(form.get("type") || "");
|
||||
state.sessions.push(normalizeSession({
|
||||
id: uid("session"),
|
||||
eventId,
|
||||
name: String(form.get("name")).trim(),
|
||||
type: String(form.get("type")),
|
||||
type: selectedType,
|
||||
durationMin: Number(form.get("durationMin")),
|
||||
followUpSec: Math.max(0, Number(form.get("followUpSec") || 0) || 0),
|
||||
startMode: String(form.get("startMode") || "mass"),
|
||||
@@ -350,7 +356,13 @@ export function renderEventManagerView(context) {
|
||||
if (!editingSession) {
|
||||
return;
|
||||
}
|
||||
const form = new FormData(event.currentTarget);
|
||||
const formNode = event.currentTarget;
|
||||
if (!(formNode instanceof HTMLFormElement)) {
|
||||
return;
|
||||
}
|
||||
const form = new FormData(formNode);
|
||||
const typeField = formNode.querySelector('[name="type"]');
|
||||
const selectedType = typeField instanceof HTMLSelectElement ? typeField.value : String(form.get("type") || editingSession.type);
|
||||
const cleanedName = String(form.get("name") || "").trim();
|
||||
const cleanedDuration = Number(form.get("durationMin") || editingSession.durationMin || 5) || 0;
|
||||
if (!cleanedName) {
|
||||
@@ -363,7 +375,7 @@ export function renderEventManagerView(context) {
|
||||
}
|
||||
setFormError("sessionEditError", "");
|
||||
editingSession.name = cleanedName;
|
||||
editingSession.type = String(form.get("type") || editingSession.type);
|
||||
editingSession.type = selectedType;
|
||||
editingSession.durationMin = Math.max(1, cleanedDuration);
|
||||
editingSession.followUpSec = Math.max(0, Number(form.get("followUpSec") || 0) || 0);
|
||||
editingSession.startMode = normalizeStartMode(String(form.get("startMode") || editingSession.startMode || "mass"));
|
||||
@@ -496,7 +508,11 @@ export function renderEventManagerView(context) {
|
||||
if (showTeamsSection) {
|
||||
document.getElementById("teamForm")?.addEventListener("submit", (e) => {
|
||||
e.preventDefault();
|
||||
const form = new FormData(e.currentTarget);
|
||||
const formNode = e.currentTarget;
|
||||
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);
|
||||
@@ -559,7 +575,11 @@ export function renderEventManagerView(context) {
|
||||
if (!editingTeam) {
|
||||
return;
|
||||
}
|
||||
const form = new FormData(submitEvent.currentTarget);
|
||||
const formNode = submitEvent.currentTarget;
|
||||
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);
|
||||
|
||||
@@ -59,7 +59,7 @@ export function renderEventManagerMarkup(context) {
|
||||
</label>
|
||||
<label>
|
||||
${t("events.session_type_label")}
|
||||
<select name="type">
|
||||
<select id="sessionCreateType" name="type">
|
||||
${sessionTypeChoices.map((s) => `<option value="${s}">${getSessionTypeLabel(s)}</option>`).join("")}
|
||||
</select>
|
||||
<small>${t(sessionTypeHintKey)}</small>
|
||||
@@ -306,32 +306,40 @@ export function renderEventManagerMarkup(context) {
|
||||
<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">
|
||||
${teamDriverPool.drivers
|
||||
.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("")}
|
||||
${
|
||||
teamDriverPool.drivers.length
|
||||
? teamDriverPool.drivers
|
||||
.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("")
|
||||
: `<p class="hint">${t("common.no_entries")}</p>`
|
||||
}
|
||||
</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("")}
|
||||
${
|
||||
state.cars.length
|
||||
? 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("")
|
||||
: `<p class="hint">${t("common.no_entries")}</p>`
|
||||
}
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
@@ -778,7 +786,7 @@ export function renderEventManagerMarkup(context) {
|
||||
</label>
|
||||
<label>
|
||||
${t("events.session_type_label")}
|
||||
<select name="type">
|
||||
<select id="sessionEditType" name="type">
|
||||
${sessionTypeChoices.map(
|
||||
(item) => `<option value="${item}" ${item === editingSession.type ? "selected" : ""}>${getSessionTypeLabel(item)}</option>`
|
||||
).join("")}
|
||||
|
||||
Reference in New Issue
Block a user