fixed rebuild grid
This commit is contained in:
@@ -391,24 +391,36 @@
|
||||
}
|
||||
|
||||
// ── Ripristina stato filtri dopo un re-render (checkbox + restrizione) ──
|
||||
let _restoring = false;
|
||||
function restoreFilterState() {
|
||||
if (!filtersActive) return;
|
||||
injectCheckboxes();
|
||||
applyVisibility(); // ri-applica sia filtri colonna sia restringi selezione
|
||||
if (!filtersActive || _restoring) return;
|
||||
_restoring = true; // evita loop con l'observer mentre iniettiamo/nascondiamo
|
||||
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() {
|
||||
const orig = R().renderVisibleRows;
|
||||
R().renderVisibleRows = function () {
|
||||
const ret = orig.apply(this, arguments);
|
||||
// sincrono
|
||||
restoreFilterState();
|
||||
// e di nuovo dopo il tick, per coprire re-render dentro .then() async
|
||||
setTimeout(restoreFilterState, 0);
|
||||
setTimeout(restoreFilterState, 50);
|
||||
return ret;
|
||||
};
|
||||
const rowC = document.getElementById("gridRowContainer");
|
||||
if (!rowC) return;
|
||||
|
||||
const obs = new MutationObserver(() => {
|
||||
if (!filtersActive || _restoring) return;
|
||||
// debounce leggero: aspetta che il render finisca
|
||||
clearTimeout(hookRerender._t);
|
||||
hookRerender._t = setTimeout(restoreFilterState, 30);
|
||||
});
|
||||
|
||||
obs.observe(rowC, { childList: true });
|
||||
}
|
||||
|
||||
function init() {
|
||||
|
||||
Reference in New Issue
Block a user