From db6864170ca96b09e9896c335018064b74204568 Mon Sep 17 00:00:00 2001 From: Johannes Meyer Date: Mon, 25 Jul 2022 11:23:43 +0200 Subject: [PATCH] collapsible.js: Minor performance improvements (cherry picked from commit 917e68d68d3865c6972992c622a1ce229d5176ac) --- public/js/icinga/behavior/collapsible.js | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/public/js/icinga/behavior/collapsible.js b/public/js/icinga/behavior/collapsible.js index a536e5258..9721c1f13 100644 --- a/public/js/icinga/behavior/collapsible.js +++ b/public/js/icinga/behavior/collapsible.js @@ -154,7 +154,7 @@ return; } else if (typeof collapsible.dataset.noPersistence !== 'undefined') { - if (collapsible.matches('.collapsed')) { + if (collapsible.classList.contains('collapsed')) { _this.expand(collapsible); } else { _this.collapse(collapsible, _this.calculateCollapsedHeight(collapsible)); @@ -253,9 +253,9 @@ return ''; } - if (collapsible.matches('table')) { + if (collapsible.tagName === 'TABLE') { return '> tbody > tr'; - } else if (collapsible.matches('ul, ol')) { + } else if (collapsible.tagName === 'UL' || collapsible.tagName === 'OL') { return '> li:not(.collapsible-control)'; } @@ -279,19 +279,23 @@ var visibleRows = Number(collapsible.dataset.visibleRows); if (isNaN(visibleRows)) { visibleRows = this.defaultVisibleRows; + } else if (visibleRows === 0) { + return true; } return $(rowSelector, collapsible).length > visibleRows * 2; } else { - var actualHeight = collapsible.scrollHeight - parseFloat( - window.getComputedStyle(collapsible).getPropertyValue('padding-top') - ); - var maxHeight = Number(collapsible.dataset.visibleHeight); if (isNaN(maxHeight)) { maxHeight = this.defaultVisibleHeight; + } else if (maxHeight === 0) { + return true; } + var actualHeight = collapsible.scrollHeight - parseFloat( + window.getComputedStyle(collapsible).getPropertyValue('padding-top') + ); + return actualHeight >= maxHeight * 2; } };