From 3c5ac66af32691b3bdd85f907420e83aee534275 Mon Sep 17 00:00:00 2001 From: Felix Hamann Date: Sun, 10 Feb 2019 23:03:03 +0100 Subject: [PATCH 1/2] fix pagination and pagesize on pages with more than one table --- templates/table/layout.julius | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/templates/table/layout.julius b/templates/table/layout.julius index 43a6595a3..e22b451b9 100644 --- a/templates/table/layout.julius +++ b/templates/table/layout.julius @@ -5,7 +5,7 @@ window.utils.asyncTable = function(wrapper, options) { - var tableIdent = #{String dbtIdent}; + var tableIdent = wrapper.dataset.dbtIdent; var shortCircuitHeader = #{String (toPathPiece HeaderDBTableShortcircuit)}; var ths = []; @@ -14,7 +14,7 @@ var scrollTable; function init() { - var table = wrapper.querySelector('#' + tableIdent); + var table = wrapper.querySelector('#' + tableIdent); if (!table) { return; } @@ -69,7 +69,7 @@ }); if (pagesizeForm) { - var pagesizeSelect = pagesizeForm.querySelector('[name=' + tableIdent + '-pagesize]') + var pagesizeSelect = pagesizeForm.querySelector('[name=' + tableIdent + '-pagesize]'); pagesizeSelect.addEventListener('change', changePagesizeHandler); } } @@ -167,9 +167,11 @@ })(); document.addEventListener('DOMContentLoaded', function() { - var selector = '#' + #{String $ dbtIdent} + '-table-wrapper:not(.js-initialized)'; + var dbtIdent = #{String $ dbtIdent}; + var selector = '#' + dbtIdent + '-table-wrapper:not(.js-initialized)'; var wrapper = document.querySelector(selector); if (wrapper) { + wrapper.dataset.dbtIdent = dbtIdent; window.utils.asyncTable(wrapper); } }); From f52d255fa69d0938f45e3bd44aff7557ce3227b3 Mon Sep 17 00:00:00 2001 From: Felix Hamann Date: Sun, 10 Feb 2019 23:18:14 +0100 Subject: [PATCH 2/2] smoother scroll behavior after pagination clicks --- templates/table/layout.julius | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/templates/table/layout.julius b/templates/table/layout.julius index e22b451b9..296f03721 100644 --- a/templates/table/layout.julius +++ b/templates/table/layout.julius @@ -38,8 +38,8 @@ pagesizeForm = wrapper.querySelector('#' + tableIdent + '-pagesize-form'); // take options into account - if (options && options.scrollToTop) { - window.scrollTo(0, 0); + if (options && options.scrollTo) { + window.scrollTo(options.scrollTo); } if (options && options.horizPos && scrollTable) { @@ -63,7 +63,16 @@ pageLinks.forEach(function(link) { link.clickHandler = function(event) { var boundClickHandler = clickHandler.bind(this); - boundClickHandler(event, { scrollToTop: true }); + var wrapperBoundingRect = wrapper.getBoundingClientRect(); + var options = {}; + if (wrapperBoundingRect.top < 160) { + options.scrollTo = { + top: (wrapper.offsetTop || 0) - 60, + left: wrapper.offsetLeft || 0, + behavior: 'smooth', + }; + } + boundClickHandler(event, options); } link.element.addEventListener('click', link.clickHandler); });