Карточка: не сбрасывать выделение текста при автообновлении
Пока пользователь выделяет текст мышью (например, копирует M2M GUID), автообновление пропускает такт: live-опрос и перезагрузка карточки по смене подписи, а также подстановка новых строк в журнале не выполняются, пока выделение активно (window.bjSelecting). Как только выделение снято — обновление продолжается на следующем такте. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -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){
|
||||
|
||||
Reference in New Issue
Block a user