document.addEventListener('DOMContentLoaded', () => { const errata_list = document.querySelectorAll("[data-ecn], [data-errata], [data-erratum]"); errata_list.forEach(item => { let errata = new Set(); let ecn = new Set(); for (let p = item; p.parentElement; p = p.parentElement) { if (p.hasAttribute("data-errata")) { errata.add(p.getAttribute("data-errata")); } if (p.hasAttribute("data-erratum")) { errata.add(p.getAttribute("data-erratum")); } if (p.hasAttribute("data-ecn")) { ecn.add(p.getAttribute("data-ecn")); } } let temp = ""; if (errata.size > 0) { temp = "Errata: " + Array.from(errata.values()).sort().join(" "); if (ecn.size > 0) temp += "\n"; } if (ecn.size > 0) { temp += "ECN: " + Array.from(ecn.values()).sort().join(" "); } item.setAttribute("data-errata-string", temp); }); const insdel = document.querySelectorAll("ins, del"); insdel.forEach(item => { let parent = "Editorial"; for (let p = item; p.parentElement; p = p.parentElement) { if (p.hasAttribute("data-errata-string")) { parent = p.getAttribute("data-errata-string"); } if (p.tagName === "NAV") { parent = "Editorial"; } } item.setAttribute("data-hover", parent); item.insertAdjacentHTML( 'afterbegin', `${item.getAttribute("data-hover")}`.replace("\n", "
")); }); errata_list.forEach(item => { const first_tip = item.querySelector("ins .tooltiptext, del .tooltiptext"); if (first_tip) first_tip.parentElement.insertAdjacentHTML( 'afterbegin', `${first_tip.parentElement.getAttribute("data-hover")}`.replaceAll("\n", "
")); }); insdel.forEach(item => { item.removeAttribute("data-hover"); }); const first_list = document.querySelectorAll(".first-tooltiptext"); const errata_items = new Map(); first_list.forEach(item => { const temp = item.innerText .replaceAll(/[^-a-z0-9]/ig, " ") .replace(/^ +/, "") .replace(/ +$/, "") .replaceAll(/ +/g, "-") .replaceAll(/--+/g, "-"); if (!errata_items.has(temp)) { errata_items.set(temp, []); console.log(`errata_items add initial [] ${temp} to ${item.outerHTML}`); } let temp1 = temp; if (document.getElementById(temp)) { let n = 1; temp1 = `${temp}-${n}`; while (document.getElementById(temp1)) { n = n + 1; temp1 = `${temp}-${n}`; } } item.setAttribute("id", temp1); item.insertAdjacentHTML("beforeend", ``); console.log(`errata_items push ${temp} with ${temp1} to ${item.outerHTML}`); console.log(`errata_items[${temp}] == ${errata_items.get(temp).toString()}`); errata_items.get(temp).push(temp1); }); for (const [, value] of errata_items) { if (value.length > 1) { for (let i = 0; i < value.length; i++) { if (i !== 0) { document.getElementById(value[i]).insertAdjacentHTML("beforeend", ``); } if (i < value.length - 1) { document.getElementById(value[i]).insertAdjacentHTML("beforeend", ``); } } } } });