Карточка: не сбрасывать выделение текста при автообновлении

Пока пользователь выделяет текст мышью (например, копирует M2M GUID), автообновление
пропускает такт: live-опрос и перезагрузка карточки по смене подписи, а также подстановка
новых строк в журнале не выполняются, пока выделение активно (window.bjSelecting). Как только
выделение снято — обновление продолжается на следующем такте.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
fontvielle
2026-10-13 16:54:57 +03:00
parent cd6e2c424f
commit 2e9b92f0e0
@@ -837,6 +837,9 @@ button.dq-link, .dq-link { background:none !important; border:0 !important; padd
// перерисовывается сама; если оператор уже начал заполнять форму — только предложение обновить.
(function(){
var dirty = false;
// Пока пользователь выделяет текст мышью (например, копирует M2M GUID), автообновление
// не должно трогать страницу — иначе выделение сбрасывается. Такт пропускается, повтор — позже.
window.bjSelecting = window.bjSelecting || function(){ try { var s = window.getSelection(); return !!s && !s.isCollapsed && String(s).replace(/\s+/g, '').length > 0; } catch(e){ return false; } };
document.addEventListener('input', function(e){ if (e.target.closest('main form')) dirty = true; }, true);
document.addEventListener('change', function(e){ if (e.target.closest('main form')) dirty = true; }, true);
try { var u = new URL(location.href); if (u.searchParams.has('flash')) { u.searchParams.delete('flash'); history.replaceState(null, '', u.pathname + u.search + u.hash); } } catch(e){}
@@ -880,6 +883,7 @@ button.dq-link, .dq-link { background:none !important; border:0 !important; padd
meta(e, e.hasAttribute('data-active') ? '<span class="dot"></span>обновляется автоматически' : 'заявка завершена — автообновление не требуется');
});
function tick(){
if (window.bjSelecting && window.bjSelecting()) return; // идёт выделение текста — не трогаем страницу
var els = document.querySelectorAll('.live[data-live][data-active]');
if (!els.length) return;
var out = [], inn = [];
@@ -930,6 +934,7 @@ button.dq-link, .dq-link { background:none !important; border:0 !important; padd
return s;
}
function tick(){
if (window.bjSelecting && window.bjSelecting()) return; // идёт выделение текста — новые строки подставим позже
fetch('/admin/journal/rows?since=' + encodeURIComponent(maxTime()), {cache:'no-store'})
.then(function(r){ return r.json(); })
.then(function(d){