From 007939a05e3af6642c33f2921748dd98334f9be7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=AE=D1=80=D0=B8=D0=B9=20=D0=A7=D0=B5=D1=80=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=BA=D0=BE?= Date: Fri, 15 May 2026 13:29:38 +0300 Subject: [PATCH] =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82=204?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- static/script.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/static/script.js b/static/script.js index 800a8bc..f1a26ea 100644 --- a/static/script.js +++ b/static/script.js @@ -1376,6 +1376,24 @@ function renderEvents() { }).join(""); } +function restoreEventsClickOrder(serverEvents, persistedEvents) { + const persistedIds = new Map( + persistedEvents + .filter(e => e.id !== null && e.id !== undefined && e.id !== "") + .map((e, index) => [String(e.id), index]) + ); + + return [...serverEvents].sort((a, b) => { + const aIndex = persistedIds.has(String(a.id)) ? persistedIds.get(String(a.id)) : 999999; + const bIndex = persistedIds.has(String(b.id)) ? persistedIds.get(String(b.id)) : 999999; + + if (aIndex !== bIndex) return aIndex - bIndex; + + return (a.id || 0) - (b.id || 0); + }); +} + + async function loadEventsFromServer() { if (!SESSION_TOKEN) return; @@ -1414,7 +1432,7 @@ async function loadEventsFromServer() { }; }); - matchEvents = sortEventsForDisplay(matchEvents); + matchEvents = restoreEventsClickOrder(matchEvents, persistedEvents);