Настройка грузится быстро: список пользователей ЛК из кэша; морфинг — якорная привязка прокрутки

1) Страница «Настройка» висела до 10 с, когда ЛК ЕСИА Финанс медленный/недоступен: setupData
   синхронно тянул список пользователей из ЛК (lkUsersForSetup, таймаут 10 с). Теперь список
   берётся из кэша мгновенно, обновляется в фоне с коротким таймаутом (3 с); при недоступном ЛК
   показывается сохранённый список с пометкой. Страница больше не ждёт ЛК.
2) Морфинг карточки: добавлена якорная привязка — запоминаем верхний видимый блок и после
   обновления корректируем прокрутку, чтобы при изменении высоты карточек выше обзора вид не
   подпрыгивал (устраняет «прыгнула чуть выше»).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
fontvielle
2026-10-13 18:16:42 +03:00
parent a6c925572b
commit d154506464
2 changed files with 50 additions and 4 deletions
@@ -893,9 +893,14 @@ button.dq-link, .dq-link { background:none !important; border:0 !important; padd
.then(function(r){ return r.ok ? r.text() : Promise.reject(); })
.then(function(html){
if (dirty || (window.bjSelecting && window.bjSelecting())) return; // правит форму или выделяет — не трогаем
// Якорь: верхний видимый блок — чтобы при изменении высоты карточек выше обзора
// вид не «подпрыгивал». После морфинга вернём этот блок на то же место по вертикали.
var anchor = null, aTop = 0, cards = document.querySelectorAll('main .card, main aside');
for (var ci = 0; ci < cards.length; ci++) { var r = cards[ci].getBoundingClientRect(); if (r.bottom > 0) { anchor = cards[ci]; aTop = r.top; break; } }
var doc = new DOMParser().parseFromString(html, 'text/html');
bjMorphKids(document.querySelector('main'), doc.querySelector('main'));
if (window.bjInitCopyBars) window.bjInitCopyBars();
if (anchor && anchor.isConnected) { var d = anchor.getBoundingClientRect().top - aTop; if (d) window.scrollBy(0, d); }
})
.catch(function(){})
.then(function(){ bjRefreshing = false; });