-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathScrollRecordList.js
More file actions
59 lines (54 loc) · 1.9 KB
/
ScrollRecordList.js
File metadata and controls
59 lines (54 loc) · 1.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
let tx_scroll_module = document.querySelector('body > .module');
if (TYPO3.settings.cache) {
// v13
tx_scroll_module = document.querySelector('body > .module > .module-body');
}
/* Prevents jumping after reload*/
window.location.hash = '';
const uid = new URL(window.location.href).searchParams.get('id') ?? '0';
let table = new URL(window.location.href).searchParams.getAll('table').pop();
let searchTerm = new URL(window.location.href).searchParams.get('searchTerm') ?? '';
if (table === undefined) {
table = '';
}
if (typeof (table) === 'string' && table !== '') {
table = table + '-';
}
if (searchTerm === '') {
const searchTermInput = document.getElementById('recordsearchbox-searchterm');
if (searchTermInput && searchTermInput.value !== '') {
searchTerm = searchTermInput.value;
}
}
if (searchTerm !== '') {
table = 'search-' + searchTerm + '-' + table;
}
const storageKey = 'ext-scroll-recordlist-' + table + uid;
window.addEventListener('unload', function () {
if (tx_scroll_module.scrollTop > 0) {
sessionStorage.setItem(storageKey, tx_scroll_module.scrollTop);
}
});
const pos = parseInt(sessionStorage.getItem(storageKey));
if (pos) {
sessionStorage.removeItem(storageKey);
tx_scroll_module.scrollTo(0, pos);
if (pos !== tx_scroll_module.scrollTop) {
tx_scroll_module.scrollTo(0, pos);
if (pos > tx_scroll_module.scrollTop) {
let timerIterations = 0;
const timer = setInterval(function () {
++timerIterations;
tx_scroll_module.scrollTo(0, pos);
if (pos === tx_scroll_module.scrollTop) {
clearInterval(timer);
}
}, 20);
tx_scroll_module.addEventListener('scroll', function () {
if (timerIterations > 20) {
clearInterval(timer);
}
});
}
}
}