From 84514796ab74e247bd432a11ac63f427dfcb8f44 Mon Sep 17 00:00:00 2001
From: dcz2 <dcz@ipipan.waw.pl>
Date: Thu, 14 Jul 2022 21:53:28 +0200
Subject: [PATCH] Fix scrolling lists

---
 entries/static/entries/css/entries.css |  4 ++++
 entries/static/entries/js/entries.js   | 24 ++++++------------------
 entries/templates/entries_base.html    |  1 +
 3 files changed, 11 insertions(+), 18 deletions(-)

diff --git a/entries/static/entries/css/entries.css b/entries/static/entries/css/entries.css
index 94d3042..333dc71 100644
--- a/entries/static/entries/css/entries.css
+++ b/entries/static/entries/css/entries.css
@@ -10,6 +10,10 @@ tr.entry {
     background: white !important;
 }
 
+.dataTables_processing {
+    z-index: 10000;
+}
+
 #entries-table_info {
     background-color: #dee1e4;
     padding-top: 0px;
diff --git a/entries/static/entries/js/entries.js b/entries/static/entries/js/entries.js
index 43d1626..05f31b5 100644
--- a/entries/static/entries/js/entries.js
+++ b/entries/static/entries/js/entries.js
@@ -946,9 +946,13 @@ function setup_datatable(options) {
         destroy: true,
         //paging: false,
         // load on scroll, requires paging set to true (default)
-        scroller: true,
+        scroller: {
+            rowHeight: 27.38,
+            displayBuffer: 30,
+        },
         paging: true,
-        scrollY: $(options.element).closest('#entries-list-div').height(),
+        scrollY: 100,
+        scrollResize: true,
         serverSide: true,
         ajax: {
             url: options.url,
@@ -1026,8 +1030,6 @@ function setup_datatable(options) {
 
     curr_entry = null;
 
-    window.adjust_heights();
-
     return datatable;
 }
 
@@ -1063,17 +1065,6 @@ function clear_entry() {
     $('#unmatched-no-examples').hide();
 }
 
-function adjust_heights() {
-    // TODO using css() here makes the table info disappear, strange!!!
-    $('.dataTables_wrapper').each(function () {
-        const $wrapper = $(this);
-        $wrapper.closest('#entries-list-div').attr('style', 'max-height: ' + ($wrapper.closest('#entries-list').height()) + 'px;');
-        // $('#entryTabsContent').css('max-height', ($('#entry-display').height() - $('#entryTabs').outerHeight()) + 'px');
-        var h = $wrapper.closest('#entries-list').height() - $('.dataTables_filter', $wrapper).outerHeight() - $('.dataTables_scrollHead', $wrapper).outerHeight() - $('.dataTables_info', $wrapper).outerHeight();
-        $('.dataTables_scrollBody').height(h).css('max-height', h);
-    });
-}
-
 function initialize_entries_list() {
     
     $('#entries-table').DataTable({
@@ -1118,9 +1109,6 @@ function getRoleAttributes() {
 }
 
 $(document).ready(function() {
-    $(window).resize(adjust_heights);
-    setInterval(adjust_heights, 1000);
-    
     bind_last_visited();
     
     bind_settings();
diff --git a/entries/templates/entries_base.html b/entries/templates/entries_base.html
index 5642574..2599685 100644
--- a/entries/templates/entries_base.html
+++ b/entries/templates/entries_base.html
@@ -20,6 +20,7 @@
     <script src="https://unpkg.com/split.js/dist/split.min.js"></script>
     <!-- https://datatables.net/ -->
     <script type="text/javascript" src="https://cdn.datatables.net/v/bs4/dt-1.12.1/sc-2.0.3/datatables.min.js"></script>
+    <script type="text/javascript" src="https://cdn.datatables.net/plug-ins/1.12.1/features/scrollResize/dataTables.scrollResize.min.js"></script>
     <script src="{% static 'common/js/csrf.js' %}"></script>
     <!--script src="{% static 'entries/js/panels.js' %}"></script-->
     <script src="{% static 'entries/js/forms.js' %}"></script>
-- 
GitLab