js: Also preserve scroll-y upon auto-refresh

This commit is contained in:
Eric Lippmann 2023-03-23 09:18:48 +01:00 committed by Johannes Meyer
parent e0e2ff7a86
commit a3235555bb
1 changed files with 19 additions and 8 deletions

View File

@ -1234,13 +1234,22 @@
if (autorefresh || autoSubmit) { if (autorefresh || autoSubmit) {
if ($container.css('display') === 'flex' && $container.is('.container')) { if ($container.css('display') === 'flex' && $container.is('.container')) {
var $scrollableContent = $container.children('.content'); var $scrollableContent = $container.children('.content');
scrollPos = $scrollableContent.scrollTop(); scrollPos = {
x: $scrollableContent.scrollTop(),
y: $scrollableContent.scrollLeft()
};
scrollTarget = _this.icinga.utils.getCSSPath($scrollableContent); scrollTarget = _this.icinga.utils.getCSSPath($scrollableContent);
} else { } else {
scrollPos = $container.scrollTop(); scrollPos = {
x: $container.scrollTop(),
y: $container.scrollLeft()
};
} }
} else { } else {
scrollPos = 0; scrollPos = {
x: 0,
y: 0
}
} }
} }
@ -1314,14 +1323,16 @@
if (scrollPos !== false) { if (scrollPos !== false) {
var $scrollTarget = $(scrollTarget); var $scrollTarget = $(scrollTarget);
$scrollTarget.scrollTop(scrollPos);
// Fallback for browsers without support for focus({preventScroll: true}) // Fallback for browsers without support for focus({preventScroll: true})
setTimeout(function () { requestAnimationFrame(() => {
if ($scrollTarget.scrollTop() !== scrollPos) { if ($scrollTarget.scrollTop() !== scrollPos.x) {
$scrollTarget.scrollTop(scrollPos); $scrollTarget.scrollTop(scrollPos.x);
} }
}, 0); if ($scrollTarget.scrollLeft() !== scrollPos.y) {
$scrollTarget.scrollLeft(scrollPos.y);
}
});
} }
// Re-enable all click events (disabled as of performance reasons) // Re-enable all click events (disabled as of performance reasons)