From 3e7210f66fb086ccba1d0a52a404633424b766e6 Mon Sep 17 00:00:00 2001
From: dcz2 <dcz@ipipan.waw.pl>
Date: Wed, 6 Jul 2022 23:05:12 +0200
Subject: [PATCH] Attempt to fix scroller in lists

---
 entries/static/entries/js/entries.js | 18 +++++++++++-------
 entries/templates/entries_base.html  |  4 ++--
 2 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/entries/static/entries/js/entries.js b/entries/static/entries/js/entries.js
index d9ce5ac..8e25aa3 100644
--- a/entries/static/entries/js/entries.js
+++ b/entries/static/entries/js/entries.js
@@ -939,7 +939,7 @@ function setup_datatable(options) {
         // load on scroll, requires paging set to true (default)
         scroller: true,
         paging: true,
-        scrollY: $('#entries-list-div').height() - $('#entries-table_filter').outerHeight() - $('.dataTables_scrollHead').outerHeight() - $('#entries-table_info').outerHeight(),
+        scrollY: $(options.element).closest('#entries-list-div').height(),
         serverSide: true,
         ajax: {
             url: options.url,
@@ -1010,6 +1010,8 @@ function setup_datatable(options) {
 
     curr_entry = null;
 
+    window.adjust_heights();
+
     return datatable;
 }
 
@@ -1047,10 +1049,13 @@ function clear_entry() {
 
 function adjust_heights() {
     // TODO using css() here makes the table info disappear, strange!!!
-    $('#entries-list-div').attr('style', 'max-height: ' + ($('#entries-list').height() - $('#filter-div').outerHeight()) + 'px;');
-    $('#entryTabsContent').css('max-height', ($('#entry-display').height() - $('#entryTabs').outerHeight()) + 'px');
-    var h = $('#entries-list-div').height() - $('#entries-table_filter').outerHeight() - $('.dataTables_scrollHead').outerHeight() - $('#entries-table_info').outerHeight();
-    $('.dataTables_scrollBody').height(h).css('max-height', h + 'px');
+    $('.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() {
@@ -1120,9 +1125,8 @@ $(document).ready(function() {
     //     gutterSize: 4,
     // });
     
-    adjust_heights();
-    
     $(window).resize(adjust_heights);
+    setInterval(adjust_heights, 1000);
     
     bind_last_visited();
     
diff --git a/entries/templates/entries_base.html b/entries/templates/entries_base.html
index da1deaa..5642574 100644
--- a/entries/templates/entries_base.html
+++ b/entries/templates/entries_base.html
@@ -8,7 +8,7 @@
     <!-- for autocomplete -->
     <link rel="stylesheet" type="text/css" href="//code.jquery.com/ui/1.12.1/themes/smoothness/jquery-ui.css">
     <!-- https://datatables.net/ -->
-    <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/bs4/dt-1.10.22/sc-2.0.3/datatables.min.css"/>
+    <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/bs4/dt-1.12.1/sc-2.0.3/datatables.min.css"/>
     <!--link rel="stylesheet" type="text/css" href="{% static 'entries/css/panels.css' %}"-->
     <link rel="stylesheet" type="text/css" href="{% static 'entries/css/entries.css' %}">
     <link rel="stylesheet" type="text/css" href="{% static 'common/css/role_colours.css' %}">
@@ -19,7 +19,7 @@
     <!-- https://www.cssscript.com/split-view/ -->
     <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.10.22/sc-2.0.3/datatables.min.js"></script>
+    <script type="text/javascript" src="https://cdn.datatables.net/v/bs4/dt-1.12.1/sc-2.0.3/datatables.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