редактирование времени события. тест

This commit is contained in:
2026-05-15 12:58:19 +03:00
parent a74aab3acd
commit 7f07f982d8
2 changed files with 94 additions and 1 deletions

View File

@@ -1353,7 +1353,17 @@ function renderEvents() {
return `
<div class="event-row">
<div class="event-side">${event.side === "home" ? cardHtml : ""}</div>
<div class="event-time">${escapeHtml(event.minute)}</div>
<div class="event-time">
<span>${escapeHtml(event.minute)}</span>
${
event.id !== null && event.id !== undefined && event.id !== ""
? `<button type="button"
class="event-time-edit-btn"
title="Изменить время события"
onclick="event.stopPropagation(); editEventTime('${String(event.id)}')">✏️</button>`
: ""
}
</div>
<div class="event-side">${event.side === "away" ? cardHtml : ""}</div>
</div>
`;
@@ -2454,6 +2464,76 @@ function getRowArcOffsets(count, arcStrength = 0, direction = "up") {
});
}
function parseEventTimeInput(value) {
const raw = String(value || "").trim().replace("", "'");
// варианты: 12, 12', 45+2, 45'+2, 90+4
const match = raw.match(/^(\d{1,3})'?(?:\+(\d{1,2}))?$/);
if (!match) return null;
const baseMinute = Number(match[1]);
const extraMinute = Number(match[2] || 0);
if (!Number.isFinite(baseMinute) || baseMinute < 1) return null;
const totalMinute = baseMinute + extraMinute;
const seconds = Math.max(0, (totalMinute - 1) * 60);
const label = extraMinute > 0
? `${baseMinute}'+${extraMinute}`
: `${baseMinute}'`;
return {
label,
minute: totalMinute,
seconds
};
}
async function editEventTime(eventId) {
const event = matchEvents.find((e) => String(e.id) === String(eventId));
if (!event) return;
const value = prompt("Новое время события. Например: 23, 45+2, 90+4", event.minute || "");
if (value === null) return;
const parsed = parseEventTimeInput(value);
if (!parsed) {
alert("Неверный формат времени. Пример: 23 или 45+2");
return;
}
const updated = {
side: event.side,
type: event.type,
player_name: event.player_name || "",
minute: parsed.minute,
seconds: parsed.seconds,
meta: event.meta || "",
player_id: event.player_id ?? null,
player_out_id: event.player_out_id ?? null,
player_in_id: event.player_in_id ?? null
};
const ok = await updateEventOnServer(event.id, updated);
if (!ok) {
alert("Не удалось обновить время события");
return;
}
event.minute = parsed.label;
event.seconds = parsed.seconds;
matchEvents = sortEventsForStorage(matchEvents);
renderEvents();
rebuildLineupsFromEvents();
saveMatchState();
}
function getRowTopLift(profile, count) {
const arc = Number(profile?.arc || 0);
const yOffset = Number(profile?.yOffset || 0);