diff --git a/mo/web/templates/org_contest_scans_process.html b/mo/web/templates/org_contest_scans_process.html
index c6f3842599f1e44cd9634c5b62f5954685dd97e9..db0504c009dd1baa8445e764173a89c7cb14cca8 100644
--- a/mo/web/templates/org_contest_scans_process.html
+++ b/mo/web/templates/org_contest_scans_process.html
@@ -153,7 +153,7 @@ tlačítkem <b>[Uložit]</b>. Poté můžete celou dávku odeslat ke zpracován
</div>
<span tabindex=5 onfocus="document.getElementById('user_input').focus();"></span>
</div>
- <div class="pages">
+ <div class="pages" id="rows_scroller">
<table class="data">
<thead>
<th title="Číslo skenu">#
@@ -217,6 +217,7 @@ var task_input = document.getElementById('task_input');
var seq_input = document.getElementById('seq_input');
var process_all_button = document.getElementById('process-all-button');
var save_data_field = document.getElementById('save-data');
+var rows_scroller = document.getElementById('rows_scroller');
PAGE_FIX = -1;
PAGE_EMPTY = -2;
@@ -372,17 +373,28 @@ seq_input.addEventListener("blur", function(e) {
refreshActiveRow();
});
+function scrollToRow(i) {
+ var top = rows[i].offsetTop;
+ var bottom = top + rows[i].offsetHeight;
+
+ if (rows_scroller.scrollTop > top - 45) {
+ rows_scroller.scrollTo({ top: top - 45, behavior: 'smooth'});
+ } else if (rows_scroller.scrollTop + rows_scroller.offsetHeight < bottom + 30) {
+ rows_scroller.scrollTo({ top: bottom - rows_scroller.offsetHeight + 30, behavior: 'smooth' });
+ }
+}
+
function prevPage() {
if (activeRow > 0) {
selectRow(activeRow - 1);
- rows[activeRow].scrollIntoView({ behavior: 'smooth', block: 'center' });
+ scrollToRow(activeRow);
}
}
function nextPage() {
if (activeRow < pages.length - 1) {
selectRow(activeRow + 1);
- rows[activeRow].scrollIntoView({ behavior: 'smooth', block: 'center' });
+ scrollToRow(activeRow);
}
}
@@ -446,6 +458,7 @@ for (let i = 0; i < pages.length; i++) {
}
selectRow(0);
+scrollToRow(0);
</script>
{% endif %}