From e703a81feaf6305237a7aaac97a0e657393b64ab Mon Sep 17 00:00:00 2001 From: Erin Bell Date: Tue, 9 Jan 2024 12:56:34 -0500 Subject: [PATCH] bug fix: script execution timing --- curatescape-echo/javascripts/items-show.js | 31 ++++---- curatescape-echo/javascripts/multi-map.js | 85 ++++++++++++---------- 2 files changed, 64 insertions(+), 52 deletions(-) diff --git a/curatescape-echo/javascripts/items-show.js b/curatescape-echo/javascripts/items-show.js index a86d2cc..be22b95 100644 --- a/curatescape-echo/javascripts/items-show.js +++ b/curatescape-echo/javascripts/items-show.js @@ -331,18 +331,23 @@ const scrollEvents = (entries, observer) => { } }); }; +// ITEM SHOW / MAIN +const itemShow = () =>{ + streamingMediaControls(); + smoothAnchorLinks(); + if ("IntersectionObserver" in window) { + let observer = new IntersectionObserver(scrollEvents, {}); + let sections = document.querySelectorAll("[data-toc] > *"); + sections.forEach((section) => observer.observe(section)); + } else { + loadPhotoSwipe(document.querySelector('[data-toc="#images"]')); + loadMapSingle(); + } +} // MAIN -document.onreadystatechange = () => { - if (document.readyState === "complete") { - streamingMediaControls(); - smoothAnchorLinks(); - if ("IntersectionObserver" in window) { - let observer = new IntersectionObserver(scrollEvents, {}); - let sections = document.querySelectorAll("[data-toc] > *"); - sections.forEach((section) => observer.observe(section)); - } else { - loadPhotoSwipe(document.querySelector('[data-toc="#images"]')); - loadMapSingle(); - } +let isReady = setInterval(() => { + if (document.readyState === 'complete') { + clearInterval(isReady); + itemShow(); } -}; +}, 100); diff --git a/curatescape-echo/javascripts/multi-map.js b/curatescape-echo/javascripts/multi-map.js index 9502503..728c8f6 100644 --- a/curatescape-echo/javascripts/multi-map.js +++ b/curatescape-echo/javascripts/multi-map.js @@ -433,44 +433,51 @@ const loadMapMulti = (requested_id = null, isGlobalMap = false) => { } } }; -// MAIN -if (!(container.getAttribute("id") === "home-map-container")) { - // not homepage/global... - overlay.addEventListener("click", (e) => { - if (e.srcElement.classList.contains("open")) { - closeMultiMap(); - } - }); - showmap.addEventListener("click", (e) => { - if (e.srcElement.classList.contains("open")) { - closeMultiMap(); - } else { - openMultiMap(); - } - }); - showmap_with_marker.forEach((link) => { - link.addEventListener("click", (e) => { - e.preventDefault(); - openMultiMap(e.srcElement.dataset.id); +// MULTI MAP / MAIN +const multiMap = ()=>{ + if (!(container.getAttribute("id") === "home-map-container")) { + // not homepage/global... + overlay.addEventListener("click", (e) => { + if (e.srcElement.classList.contains("open")) { + closeMultiMap(); + } }); - }); -} else { - // homepage/global... - document.onreadystatechange = () => { - var loaded = false; - if ("IntersectionObserver" in window) { - const scrollEvents = (entries, observer) => { - entries.forEach(function (entry) { - if (entry.isIntersecting && !loaded) { - loadMapMulti(null, true); - loaded = true; - } - }); - }; - let observer = new IntersectionObserver(scrollEvents, {}); - observer.observe(document.querySelector("#home-map .query-header")); - } else { - loadMapMulti(null, true); - } - }; + showmap.addEventListener("click", (e) => { + if (e.srcElement.classList.contains("open")) { + closeMultiMap(); + } else { + openMultiMap(); + } + }); + showmap_with_marker.forEach((link) => { + link.addEventListener("click", (e) => { + e.preventDefault(); + openMultiMap(e.srcElement.dataset.id); + }); + }); + } else { + // homepage/global... + var loaded = false; + if ("IntersectionObserver" in window) { + const scrollEvents = (entries, observer) => { + entries.forEach(function (entry) { + if (entry.isIntersecting && !loaded) { + loadMapMulti(null, true); + loaded = true; + } + }); + }; + let observer = new IntersectionObserver(scrollEvents, {}); + observer.observe(document.querySelector("#home-map .query-header")); + } else { + loadMapMulti(null, true); + } + } } +// MAIN +let isReady = setInterval(() => { + if (document.readyState === 'complete') { + clearInterval(isReady); + multiMap(); + } +}, 100);