From 2e47ce1515fcea3b960ed8b7cdfc0482d69e5c00 Mon Sep 17 00:00:00 2001 From: fay Date: Thu, 9 Jul 2020 16:38:40 +0800 Subject: [PATCH] =?UTF-8?q?BI-68076B=20fix:=20=E4=BA=8C=E7=BA=A7=E8=8F=9C?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin.xml | 2 +- .../plugin/web/plugin.screen_adaptive.js | 26 +++++++++---------- .../com/finebi/plugin/web/scripts/entry.js | 26 +++++++++---------- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/plugin.xml b/plugin.xml index 86bc47b..0a62366 100644 --- a/plugin.xml +++ b/plugin.xml @@ -3,7 +3,7 @@ com.finebi.plugin.screenadaptive yes - 1.1.41 + 1.1.42 10.0 2019-08-16 fay diff --git a/src/main/resources/com/finebi/plugin/web/plugin.screen_adaptive.js b/src/main/resources/com/finebi/plugin/web/plugin.screen_adaptive.js index ee4ac9b..2e4bd54 100644 --- a/src/main/resources/com/finebi/plugin/web/plugin.screen_adaptive.js +++ b/src/main/resources/com/finebi/plugin/web/plugin.screen_adaptive.js @@ -110,7 +110,7 @@ wrapper.style.overflow = "hidden"; html.style.backgroundColor = "#ffffff"; - scrollContainer.style.overflowX = "auto"; + scrollContainer.style.overflowX = globalScaleRatio === null ? "hidden" : "auto"; scrollContainer.style.overflowY = "auto"; fixedWrapper.style.overflow = "hidden"; fixedWrapper.style.width = bounds.width * scale + "px"; @@ -284,37 +284,37 @@ if (BI.isIE()) { BI.Combo.prototype.adjustHeight = function (e) { adjustHeight.call(this, e); - var transformX = 0, transformY = 0; + var transformX = scrollContainer.scrollLeft; + var transformY = scrollContainer.scrollTop; if (this.popupView) { if (!checkInPopupView(this.popupView.element[0])) { - transformX = scrollContainer.scrollLeft; - transformY = scrollContainer.scrollTop; this.popupView.element[0].style.left = parseInt(this.popupView.element[0].style.left) * scale - transformX + "px"; this.popupView.element[0].style.top = parseInt(this.popupView.element[0].style.top) * scale - transformY + "px"; } else { var cBounds = BI.extend({}, this.popupView.element[0].getBoundingClientRect()); var pBounds = BI.extend({}, this.popupView.element[0].parentElement.getBoundingClientRect()); + var hasScale = this.popupView.element[0].style.transform && this.popupView.element[0].style.transform.includes("scale"); var minWidth = parseInt(this.popupView.element[0].style.minWidth); var minHeight = parseInt(this.popupView.element[0].style.minHeight); cBounds.width = Math.max(cBounds.width, minWidth * scale); cBounds.height = Math.max(cBounds.height, minHeight * scale); - if (cBounds.left + cBounds.width - scrollContainer.scrollLeft> body.clientWidth * scale) { - this.popupView.element[0].style.top = parseInt(pBounds.bottom) - transformY + "px"; + if ((cBounds.left * scale + cBounds.width * (hasScale ? 1 : scale)) - transformX > body.clientWidth) { + this.popupView.element[0].style.top = parseInt(pBounds.bottom) + "px"; this.popupView.element[0].style.left = parseInt(this.popupView.element[0].style.left) * scale - transformX + "px"; } else if (this.options.direction === "right") { - this.popupView.element[0].style.top = parseInt(pBounds.top) - transformY + "px"; - this.popupView.element[0].style.left = parseInt(pBounds.right) - transformX + "px"; + this.popupView.element[0].style.top = parseInt(pBounds.top) + "px"; + this.popupView.element[0].style.left = parseInt(pBounds.right) + "px"; } else if (parseInt(cBounds.top) >= parseInt(pBounds.top) && parseInt(cBounds.left) >= parseInt(pBounds.left)) { - this.popupView.element[0].style.top = parseInt(pBounds.bottom) - transformY + "px"; - this.popupView.element[0].style.left = parseInt(pBounds.left) - transformX + "px"; + this.popupView.element[0].style.top = parseInt(pBounds.bottom) + "px"; + this.popupView.element[0].style.left = parseInt(pBounds.left) + "px"; }else if (parseInt(cBounds.top) >= parseInt(pBounds.top) && parseInt(cBounds.left) < parseInt(pBounds.left)) { - this.popupView.element[0].style.top = parseInt(pBounds.bottom) - transformY + "px"; + this.popupView.element[0].style.top = parseInt(pBounds.bottom) + "px"; this.popupView.element[0].style.left = parseInt(Math.min(pBounds.left, body.clientWidth - cBounds.width)) - transformX + "px"; } else { - this.popupView.element[0].style.top = parseInt(pBounds.bottom) - transformY + "px"; - this.popupView.element[0].style.left = parseInt(cBounds.left) * scale - transformX + "px"; + this.popupView.element[0].style.top = parseInt(pBounds.bottom) + "px"; + this.popupView.element[0].style.left = parseInt(cBounds.left) * scale + "px"; } } this.popupView.element[0].style.transform = "scale(" + scale+ ")"; diff --git a/src/main/resources/com/finebi/plugin/web/scripts/entry.js b/src/main/resources/com/finebi/plugin/web/scripts/entry.js index ee4ac9b..2e4bd54 100644 --- a/src/main/resources/com/finebi/plugin/web/scripts/entry.js +++ b/src/main/resources/com/finebi/plugin/web/scripts/entry.js @@ -110,7 +110,7 @@ wrapper.style.overflow = "hidden"; html.style.backgroundColor = "#ffffff"; - scrollContainer.style.overflowX = "auto"; + scrollContainer.style.overflowX = globalScaleRatio === null ? "hidden" : "auto"; scrollContainer.style.overflowY = "auto"; fixedWrapper.style.overflow = "hidden"; fixedWrapper.style.width = bounds.width * scale + "px"; @@ -284,37 +284,37 @@ if (BI.isIE()) { BI.Combo.prototype.adjustHeight = function (e) { adjustHeight.call(this, e); - var transformX = 0, transformY = 0; + var transformX = scrollContainer.scrollLeft; + var transformY = scrollContainer.scrollTop; if (this.popupView) { if (!checkInPopupView(this.popupView.element[0])) { - transformX = scrollContainer.scrollLeft; - transformY = scrollContainer.scrollTop; this.popupView.element[0].style.left = parseInt(this.popupView.element[0].style.left) * scale - transformX + "px"; this.popupView.element[0].style.top = parseInt(this.popupView.element[0].style.top) * scale - transformY + "px"; } else { var cBounds = BI.extend({}, this.popupView.element[0].getBoundingClientRect()); var pBounds = BI.extend({}, this.popupView.element[0].parentElement.getBoundingClientRect()); + var hasScale = this.popupView.element[0].style.transform && this.popupView.element[0].style.transform.includes("scale"); var minWidth = parseInt(this.popupView.element[0].style.minWidth); var minHeight = parseInt(this.popupView.element[0].style.minHeight); cBounds.width = Math.max(cBounds.width, minWidth * scale); cBounds.height = Math.max(cBounds.height, minHeight * scale); - if (cBounds.left + cBounds.width - scrollContainer.scrollLeft> body.clientWidth * scale) { - this.popupView.element[0].style.top = parseInt(pBounds.bottom) - transformY + "px"; + if ((cBounds.left * scale + cBounds.width * (hasScale ? 1 : scale)) - transformX > body.clientWidth) { + this.popupView.element[0].style.top = parseInt(pBounds.bottom) + "px"; this.popupView.element[0].style.left = parseInt(this.popupView.element[0].style.left) * scale - transformX + "px"; } else if (this.options.direction === "right") { - this.popupView.element[0].style.top = parseInt(pBounds.top) - transformY + "px"; - this.popupView.element[0].style.left = parseInt(pBounds.right) - transformX + "px"; + this.popupView.element[0].style.top = parseInt(pBounds.top) + "px"; + this.popupView.element[0].style.left = parseInt(pBounds.right) + "px"; } else if (parseInt(cBounds.top) >= parseInt(pBounds.top) && parseInt(cBounds.left) >= parseInt(pBounds.left)) { - this.popupView.element[0].style.top = parseInt(pBounds.bottom) - transformY + "px"; - this.popupView.element[0].style.left = parseInt(pBounds.left) - transformX + "px"; + this.popupView.element[0].style.top = parseInt(pBounds.bottom) + "px"; + this.popupView.element[0].style.left = parseInt(pBounds.left) + "px"; }else if (parseInt(cBounds.top) >= parseInt(pBounds.top) && parseInt(cBounds.left) < parseInt(pBounds.left)) { - this.popupView.element[0].style.top = parseInt(pBounds.bottom) - transformY + "px"; + this.popupView.element[0].style.top = parseInt(pBounds.bottom) + "px"; this.popupView.element[0].style.left = parseInt(Math.min(pBounds.left, body.clientWidth - cBounds.width)) - transformX + "px"; } else { - this.popupView.element[0].style.top = parseInt(pBounds.bottom) - transformY + "px"; - this.popupView.element[0].style.left = parseInt(cBounds.left) * scale - transformX + "px"; + this.popupView.element[0].style.top = parseInt(pBounds.bottom) + "px"; + this.popupView.element[0].style.left = parseInt(cBounds.left) * scale + "px"; } } this.popupView.element[0].style.transform = "scale(" + scale+ ")";