fixed rebuild grid
This commit is contained in:
@@ -391,24 +391,36 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ── Ripristina stato filtri dopo un re-render (checkbox + restrizione) ──
|
// ── Ripristina stato filtri dopo un re-render (checkbox + restrizione) ──
|
||||||
|
let _restoring = false;
|
||||||
function restoreFilterState() {
|
function restoreFilterState() {
|
||||||
if (!filtersActive) return;
|
if (!filtersActive || _restoring) return;
|
||||||
injectCheckboxes();
|
_restoring = true; // evita loop con l'observer mentre iniettiamo/nascondiamo
|
||||||
applyVisibility(); // ri-applica sia filtri colonna sia restringi selezione
|
try {
|
||||||
|
injectCheckboxes();
|
||||||
|
applyVisibility(); // ri-applica filtri colonna E restringi selezione
|
||||||
|
} finally {
|
||||||
|
// rilascia dopo il tick così le nostre mutazioni non ci ri-triggerano subito
|
||||||
|
setTimeout(() => {
|
||||||
|
_restoring = false;
|
||||||
|
}, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ── Re-inietta dopo ogni re-render della griglia ──
|
// ── Observer: qualunque cosa ricrei le righe (propagazione, save, ecc.)
|
||||||
|
// ripristina automaticamente checkbox + restrizione. Robusto perché
|
||||||
|
// non dipende da chi chiama renderVisibleRows. ──
|
||||||
function hookRerender() {
|
function hookRerender() {
|
||||||
const orig = R().renderVisibleRows;
|
const rowC = document.getElementById("gridRowContainer");
|
||||||
R().renderVisibleRows = function () {
|
if (!rowC) return;
|
||||||
const ret = orig.apply(this, arguments);
|
|
||||||
// sincrono
|
const obs = new MutationObserver(() => {
|
||||||
restoreFilterState();
|
if (!filtersActive || _restoring) return;
|
||||||
// e di nuovo dopo il tick, per coprire re-render dentro .then() async
|
// debounce leggero: aspetta che il render finisca
|
||||||
setTimeout(restoreFilterState, 0);
|
clearTimeout(hookRerender._t);
|
||||||
setTimeout(restoreFilterState, 50);
|
hookRerender._t = setTimeout(restoreFilterState, 30);
|
||||||
return ret;
|
});
|
||||||
};
|
|
||||||
|
obs.observe(rowC, { childList: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
|
|||||||
Reference in New Issue
Block a user