From cc90faf7320de85fe9ace1b4b9dfc36f4f53fd14 Mon Sep 17 00:00:00 2001 From: Felix Hamann Date: Sun, 19 May 2019 20:07:03 +0200 Subject: [PATCH] fix: async table js util now knows current random css prefix --- static/js/utils/asyncTable.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/static/js/utils/asyncTable.js b/static/js/utils/asyncTable.js index 61a8e9cfd..174af2f94 100644 --- a/static/js/utils/asyncTable.js +++ b/static/js/utils/asyncTable.js @@ -35,6 +35,7 @@ var pageLinks = []; var pagesizeForm; var scrollTable; + var cssIdPrefix = ''; var tableFilterInputs = { search: [], @@ -100,7 +101,7 @@ } function setupPagination() { - var pagination = element.querySelector('#' + asyncTableId + '-pagination'); + var pagination = element.querySelector('#' + cssIdPrefix + asyncTableId + '-pagination'); if (pagination) { pageLinks = Array.from(pagination.querySelectorAll('.page-link')).map(function(link) { return { element: link }; @@ -126,7 +127,7 @@ function setupPageSizeSelect() { // pagesize form - pagesizeForm = element.querySelector('#' + asyncTableId + '-pagesize-form'); + pagesizeForm = element.querySelector('#' + cssIdPrefix + asyncTableId + '-pagesize-form'); if (pagesizeForm) { var pagesizeSelect = pagesizeForm.querySelector('[name=' + asyncTableId + '-pagesize]'); @@ -206,9 +207,12 @@ // focus previously focused input if (focusedInput && focusedInput.selectionStart !== null) { var selectionStart = focusedInput.selectionStart; - var focusId = focusedInput.id; + // remove the following part of the id to get rid of the random + // (yet somewhat structured) prefix we got from nudging. + var matcher = /r\d*?__/; + var focusId = focusedInput.id.replace(matcher, ''); callback = function(wrapper) { - var toBeFocused = wrapper.querySelector('#' + focusId); + var toBeFocused = wrapper.querySelector('#' + cssIdPrefix + focusId); if (toBeFocused) { toBeFocused.focus(); toBeFocused.selectionStart = selectionStart; @@ -352,7 +356,8 @@ function updateWrapperContents(response) { var newPage = document.createElement('div'); newPage.appendChild(response.element); - var newWrapperContents = newPage.querySelector('#' + element.id); + cssIdPrefix = response.idPrefix; + var newWrapperContents = newPage.querySelector('#' + cssIdPrefix + element.id); element.innerHTML = newWrapperContents.innerHTML; if (UtilRegistry) {