редактирование времени события. тест
This commit is contained in:
@@ -1353,7 +1353,17 @@ function renderEvents() {
|
|||||||
return `
|
return `
|
||||||
<div class="event-row">
|
<div class="event-row">
|
||||||
<div class="event-side">${event.side === "home" ? cardHtml : ""}</div>
|
<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 class="event-side">${event.side === "away" ? cardHtml : ""}</div>
|
||||||
</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) {
|
function getRowTopLift(profile, count) {
|
||||||
const arc = Number(profile?.arc || 0);
|
const arc = Number(profile?.arc || 0);
|
||||||
const yOffset = Number(profile?.yOffset || 0);
|
const yOffset = Number(profile?.yOffset || 0);
|
||||||
|
|||||||
@@ -2293,3 +2293,16 @@ body:not(.edit-mode-on) .referee-search {
|
|||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.event-time-edit-btn {
|
||||||
|
margin-left: 4px;
|
||||||
|
border: none;
|
||||||
|
background: transparent;
|
||||||
|
color: inherit;
|
||||||
|
cursor: pointer;
|
||||||
|
opacity: 0.55;
|
||||||
|
font-size: 11px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.event-time-edit-btn:hover {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user