From 9b868d85588a2bc10febb4cb7d52efd3596b1dc3 Mon Sep 17 00:00:00 2001 From: Arian Hanifi Date: Wed, 13 Nov 2024 10:00:54 +0100 Subject: [PATCH] fix bug in generateDendriteID scripts --- .../_core/_js/generateDendriteIDs.js | 65 +++++++++--------- .../_core/_js/generateDendriteIDsIframe.js | 67 ++++++++++--------- .../sync_api/_core/_js/generateDendriteIDs.js | 65 +++++++++--------- .../_core/_js/generateDendriteIDsIframe.js | 67 ++++++++++--------- 4 files changed, 136 insertions(+), 128 deletions(-) diff --git a/dendrite/async_api/_core/_js/generateDendriteIDs.js b/dendrite/async_api/_core/_js/generateDendriteIDs.js index 3ad8574..1d4b348 100644 --- a/dendrite/async_api/_core/_js/generateDendriteIDs.js +++ b/dendrite/async_api/_core/_js/generateDendriteIDs.js @@ -1,55 +1,56 @@ -var hashCode = (string) => { +var hashCode = (str) => { var hash = 0, i, chr; - if (string.length === 0) return hash; - for (i = 0; i < string.length; i++) { - chr = string.charCodeAt(i); + if (str.length === 0) return hash; + for (i = 0; i < str.length; i++) { + chr = str.charCodeAt(i); hash = ((hash << 5) - hash) + chr; hash |= 0; // Convert to 32bit integer } return hash; } -var getXPathForElement = (element) => { - const getElementIndex = (element) => { - let index = 1; - let sibling = element.previousElementSibling; - - while (sibling) { - if (sibling.localName === element.localName) { - index++; - } - sibling = sibling.previousElementSibling; +const getElementIndex = (element) => { + let index = 1; + let sibling = element.previousElementSibling; + + while (sibling) { + if (sibling.localName === element.localName) { + index++; } - - return index; - }; + sibling = sibling.previousElementSibling; + } + + return index; +}; - const segs = elm => { - if (!elm || elm.nodeType !== 1) return ['']; - if (elm.id && document.getElementById(elm.id) === elm) return [`id("${elm.id}")`]; - const localName = typeof elm.localName === 'string' ? elm.localName.toLowerCase() : 'unknown'; - let index = getElementIndex(elm); - - return [...segs(elm.parentNode), `${localName}[${index}]`]; - }; + +const segs = function elmSegs(elm) { + if (!elm || elm.nodeType !== 1) return ['']; + if (elm.id && document.getElementById(elm.id) === elm) return [`id("${elm.id}")`]; + const localName = typeof elm.localName === 'string' ? elm.localName.toLowerCase() : 'unknown'; + let index = getElementIndex(elm); + + return [...elmSegs(elm.parentNode), `${localName}[${index}]`]; +}; + +var getXPathForElement = (element) => { return segs(element).join('/'); -} +} // Create a Map to store used hashes and their counters const usedHashes = new Map(); +var markHidden = (hidden_element) => { + // Mark the hidden element itself + hidden +} + document.querySelectorAll('*').forEach((element, index) => { try { const xpath = getXPathForElement(element); const hash = hashCode(xpath); const baseId = hash.toString(36); - - const markHidden = (hidden_element) => { - // Mark the hidden element itself - hidden_element.setAttribute('data-hidden', 'true'); - - } // const is_marked_hidden = element.getAttribute("data-hidden") === "true"; const isHidden = !element.checkVisibility(); diff --git a/dendrite/async_api/_core/_js/generateDendriteIDsIframe.js b/dendrite/async_api/_core/_js/generateDendriteIDsIframe.js index bb2a65d..4f59cef 100644 --- a/dendrite/async_api/_core/_js/generateDendriteIDsIframe.js +++ b/dendrite/async_api/_core/_js/generateDendriteIDsIframe.js @@ -1,51 +1,54 @@ ({frame_path}) => { - var hashCode = (string) => { + var hashCode = (str) => { var hash = 0, i, chr; - if (string.length === 0) return hash; - for (i = 0; i < string.length; i++) { - chr = string.charCodeAt(i); + if (str.length === 0) return hash; + for (i = 0; i < str.length; i++) { + chr = str.charCodeAt(i); hash = ((hash << 5) - hash) + chr; hash |= 0; // Convert to 32bit integer } return hash; } - var getXPathForElement = (element) => { - const getElementIndex = (element) => { - let index = 1; - let sibling = element.previousElementSibling; - - while (sibling) { - if (sibling.localName === element.localName) { - index++; - } - sibling = sibling.previousElementSibling; + const getElementIndex = (element) => { + let index = 1; + let sibling = element.previousElementSibling; + + while (sibling) { + if (sibling.localName === element.localName) { + index++; } - - return index; - }; + sibling = sibling.previousElementSibling; + } + + return index; + }; - const segs = elm => { - if (!elm || elm.nodeType !== 1) return ['']; - if (elm.id && document.getElementById(elm.id) === elm) return [`id("${elm.id}")`]; - const localName = typeof elm.localName === 'string' ? elm.localName.toLowerCase() : 'unknown'; - let index = getElementIndex(elm); - - return [...segs(elm.parentNode), `${localName}[${index}]`]; - }; - return segs(element).join('/'); - } + const segs = function elmSegs(elm) { + if (!elm || elm.nodeType !== 1) return ['']; + if (elm.id && document.getElementById(elm.id) === elm) return [`id("${elm.id}")`]; + const localName = typeof elm.localName === 'string' ? elm.localName.toLowerCase() : 'unknown'; + let index = getElementIndex(elm); + + return [...elmSegs(elm.parentNode), `${localName}[${index}]`]; + }; + + var getXPathForElement = (element) => { + return segs(element).join('/'); + } // Create a Map to store used hashes and their counters const usedHashes = new Map(); + + var markHidden = (hidden_element) => { + // Mark the hidden element itself + hidden_element.setAttribute('data-hidden', 'true'); + } document.querySelectorAll('*').forEach((element, index) => { try { - const markHidden = (hidden_element) => { - // Mark the hidden element itself - hidden_element.setAttribute('data-hidden', 'true'); - } + // const is_marked_hidden = element.getAttribute("data-hidden") === "true"; const isHidden = !element.checkVisibility(); @@ -57,7 +60,7 @@ }else{ element.removeAttribute("data-hidden") // in case we hid it in a previous call } - const xpath = getXPathForElement(element); + let xpath = getXPathForElement(element); if(frame_path){ element.setAttribute("iframe-path",frame_path) xpath = frame_path + xpath; diff --git a/dendrite/sync_api/_core/_js/generateDendriteIDs.js b/dendrite/sync_api/_core/_js/generateDendriteIDs.js index 3ad8574..1d4b348 100644 --- a/dendrite/sync_api/_core/_js/generateDendriteIDs.js +++ b/dendrite/sync_api/_core/_js/generateDendriteIDs.js @@ -1,55 +1,56 @@ -var hashCode = (string) => { +var hashCode = (str) => { var hash = 0, i, chr; - if (string.length === 0) return hash; - for (i = 0; i < string.length; i++) { - chr = string.charCodeAt(i); + if (str.length === 0) return hash; + for (i = 0; i < str.length; i++) { + chr = str.charCodeAt(i); hash = ((hash << 5) - hash) + chr; hash |= 0; // Convert to 32bit integer } return hash; } -var getXPathForElement = (element) => { - const getElementIndex = (element) => { - let index = 1; - let sibling = element.previousElementSibling; - - while (sibling) { - if (sibling.localName === element.localName) { - index++; - } - sibling = sibling.previousElementSibling; +const getElementIndex = (element) => { + let index = 1; + let sibling = element.previousElementSibling; + + while (sibling) { + if (sibling.localName === element.localName) { + index++; } - - return index; - }; + sibling = sibling.previousElementSibling; + } + + return index; +}; - const segs = elm => { - if (!elm || elm.nodeType !== 1) return ['']; - if (elm.id && document.getElementById(elm.id) === elm) return [`id("${elm.id}")`]; - const localName = typeof elm.localName === 'string' ? elm.localName.toLowerCase() : 'unknown'; - let index = getElementIndex(elm); - - return [...segs(elm.parentNode), `${localName}[${index}]`]; - }; + +const segs = function elmSegs(elm) { + if (!elm || elm.nodeType !== 1) return ['']; + if (elm.id && document.getElementById(elm.id) === elm) return [`id("${elm.id}")`]; + const localName = typeof elm.localName === 'string' ? elm.localName.toLowerCase() : 'unknown'; + let index = getElementIndex(elm); + + return [...elmSegs(elm.parentNode), `${localName}[${index}]`]; +}; + +var getXPathForElement = (element) => { return segs(element).join('/'); -} +} // Create a Map to store used hashes and their counters const usedHashes = new Map(); +var markHidden = (hidden_element) => { + // Mark the hidden element itself + hidden +} + document.querySelectorAll('*').forEach((element, index) => { try { const xpath = getXPathForElement(element); const hash = hashCode(xpath); const baseId = hash.toString(36); - - const markHidden = (hidden_element) => { - // Mark the hidden element itself - hidden_element.setAttribute('data-hidden', 'true'); - - } // const is_marked_hidden = element.getAttribute("data-hidden") === "true"; const isHidden = !element.checkVisibility(); diff --git a/dendrite/sync_api/_core/_js/generateDendriteIDsIframe.js b/dendrite/sync_api/_core/_js/generateDendriteIDsIframe.js index bb2a65d..4f59cef 100644 --- a/dendrite/sync_api/_core/_js/generateDendriteIDsIframe.js +++ b/dendrite/sync_api/_core/_js/generateDendriteIDsIframe.js @@ -1,51 +1,54 @@ ({frame_path}) => { - var hashCode = (string) => { + var hashCode = (str) => { var hash = 0, i, chr; - if (string.length === 0) return hash; - for (i = 0; i < string.length; i++) { - chr = string.charCodeAt(i); + if (str.length === 0) return hash; + for (i = 0; i < str.length; i++) { + chr = str.charCodeAt(i); hash = ((hash << 5) - hash) + chr; hash |= 0; // Convert to 32bit integer } return hash; } - var getXPathForElement = (element) => { - const getElementIndex = (element) => { - let index = 1; - let sibling = element.previousElementSibling; - - while (sibling) { - if (sibling.localName === element.localName) { - index++; - } - sibling = sibling.previousElementSibling; + const getElementIndex = (element) => { + let index = 1; + let sibling = element.previousElementSibling; + + while (sibling) { + if (sibling.localName === element.localName) { + index++; } - - return index; - }; + sibling = sibling.previousElementSibling; + } + + return index; + }; - const segs = elm => { - if (!elm || elm.nodeType !== 1) return ['']; - if (elm.id && document.getElementById(elm.id) === elm) return [`id("${elm.id}")`]; - const localName = typeof elm.localName === 'string' ? elm.localName.toLowerCase() : 'unknown'; - let index = getElementIndex(elm); - - return [...segs(elm.parentNode), `${localName}[${index}]`]; - }; - return segs(element).join('/'); - } + const segs = function elmSegs(elm) { + if (!elm || elm.nodeType !== 1) return ['']; + if (elm.id && document.getElementById(elm.id) === elm) return [`id("${elm.id}")`]; + const localName = typeof elm.localName === 'string' ? elm.localName.toLowerCase() : 'unknown'; + let index = getElementIndex(elm); + + return [...elmSegs(elm.parentNode), `${localName}[${index}]`]; + }; + + var getXPathForElement = (element) => { + return segs(element).join('/'); + } // Create a Map to store used hashes and their counters const usedHashes = new Map(); + + var markHidden = (hidden_element) => { + // Mark the hidden element itself + hidden_element.setAttribute('data-hidden', 'true'); + } document.querySelectorAll('*').forEach((element, index) => { try { - const markHidden = (hidden_element) => { - // Mark the hidden element itself - hidden_element.setAttribute('data-hidden', 'true'); - } + // const is_marked_hidden = element.getAttribute("data-hidden") === "true"; const isHidden = !element.checkVisibility(); @@ -57,7 +60,7 @@ }else{ element.removeAttribute("data-hidden") // in case we hid it in a previous call } - const xpath = getXPathForElement(element); + let xpath = getXPathForElement(element); if(frame_path){ element.setAttribute("iframe-path",frame_path) xpath = frame_path + xpath;