From 1381f34721bf6337ade25c1160a993f130ea8032 Mon Sep 17 00:00:00 2001 From: Igor Tchibirev Date: Wed, 21 Jul 2021 13:33:48 -0400 Subject: [PATCH] Realvu Analytics Adapter: improve flagging of 'display:none' containers (#7182) * Remove _ps in _f=conf request * Replace " * realvuAnalyticsAdapter_spec updated * Update realvuAnalyticsAdapter.js * Update realvuAnalyticsAdapter.js Improve value returned by addUnitById() * Update realvuAnalyticsAdapter.js improve flagging of 'display:none' containers * Update realvuAnalyticsAdapter.js Co-authored-by: Igor Tchibirev --- modules/realvuAnalyticsAdapter.js | 62 ++++++++++++++++++++----------- 1 file changed, 40 insertions(+), 22 deletions(-) diff --git a/modules/realvuAnalyticsAdapter.js b/modules/realvuAnalyticsAdapter.js index 099bfda5e32..5540d136dea 100644 --- a/modules/realvuAnalyticsAdapter.js +++ b/modules/realvuAnalyticsAdapter.js @@ -306,28 +306,46 @@ export let lib = { if (!restored) { a.target = z.questA(a.div); let target = (a.target !== null) ? a.target : a.div; - a.box.w = Math.max(target.offsetWidth, a.w); - a.box.h = Math.max(target.offsetHeight, a.h); - let q = z.findPosG(target); - let pad = {}; - pad.t = z.padd(target, 'Top'); - pad.l = z.padd(target, 'Left'); - pad.r = z.padd(target, 'Right'); - pad.b = z.padd(target, 'Bottom'); - let ax = q.x + pad.l; - let ay = q.y + pad.t; - a.box.x = ax; - a.box.y = ay; - if (a.box.w > a.w && a.box.w > 1) { - ax += (a.box.w - a.w - pad.l - pad.r) / 2; - } - if (a.box.h > a.h && a.box.h > 1) { - ay += (a.box.h - a.h - pad.t - pad.b) / 2; - } - if ((ax > 0 && ay > 0) && (a.x != ax || a.y != ay)) { - a.x = ax; - a.y = ay; - z.writePos(a); + if (window.getComputedStyle(target).display == 'none') { + let targSibl = target.previousElementSibling; // for 'none' containers on mobile define y as previous sibling y+h + if (targSibl) { + let q = z.findPosG(targSibl); + a.x = q.x; + a.y = q.y + targSibl.offsetHeight; + } else { + target = target.parentNode; + let q = z.findPosG(target); + a.x = q.x; + a.y = q.y; + } + a.box.x = a.x; + a.box.y = a.y; + a.box.w = a.w; + a.box.h = a.h; + } else { + a.box.w = Math.max(target.offsetWidth, a.w); + a.box.h = Math.max(target.offsetHeight, a.h); + let q = z.findPosG(target); + let pad = {}; + pad.t = z.padd(target, 'Top'); + pad.l = z.padd(target, 'Left'); + pad.r = z.padd(target, 'Right'); + pad.b = z.padd(target, 'Bottom'); + let ax = q.x + pad.l; + let ay = q.y + pad.t; + a.box.x = ax; + a.box.y = ay; + if (a.box.w > a.w && a.box.w > 1) { + ax += (a.box.w - a.w - pad.l - pad.r) / 2; + } + if (a.box.h > a.h && a.box.h > 1) { + ay += (a.box.h - a.h - pad.t - pad.b) / 2; + } + if ((ax > 0 && ay > 0) && (a.x != ax || a.y != ay)) { + a.x = ax; + a.y = ay; + z.writePos(a); + } } } let vtr = ((a.box.w * a.box.h) < 242500) ? 49 : 29; // treashfold more then 49% and more then 29% for "oversized"