From 2b7ca79118fbfc7b8ada627a11ee63e6ec95bccb Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Tue, 22 Oct 2019 15:51:08 +0200 Subject: [PATCH] luci-base: ui.js: prevent race condition in tab initialization Fixes: #3150 Signed-off-by: Jo-Philipp Wich --- modules/luci-base/htdocs/luci-static/resources/ui.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/luci-base/htdocs/luci-static/resources/ui.js b/modules/luci-base/htdocs/luci-static/resources/ui.js index caae812812..c1389a8fdf 100644 --- a/modules/luci-base/htdocs/luci-static/resources/ui.js +++ b/modules/luci-base/htdocs/luci-static/resources/ui.js @@ -2021,6 +2021,9 @@ return L.Class.extend({ document.querySelectorAll('[data-tab]').forEach(function(tab) { var parent = tab.parentNode; + if (L.dom.matches(tab, 'li') && L.dom.matches(parent, 'ul.cbi-tabmenu')) + return; + if (!parent.hasAttribute('data-tab-group')) parent.setAttribute('data-tab-group', groups.length); @@ -2053,6 +2056,9 @@ return L.Class.extend({ groupId = +group.getAttribute('data-tab-group'), selected = null; + if (group.getAttribute('data-initialized') === 'true') + return; + for (var i = 0, pane; pane = panes[i]; i++) { var name = pane.getAttribute('data-tab'), title = pane.getAttribute('data-tab-title'), @@ -2072,6 +2078,7 @@ return L.Class.extend({ } group.parentNode.insertBefore(menu, group); + group.setAttribute('data-initialized', true); if (selected === null) { selected = this.getActiveTabId(panes[0]); -- 2.30.2