remove js carte point rouge car bug

This commit is contained in:
2025-11-24 19:04:55 +01:00
parent cdb0d15a43
commit 9a6938d231

View File

@@ -28,70 +28,70 @@ if (isNodeTypeSitePage) {
} }
} }
// Identifier le cercle du SITE lié quand on est sur une page node-type-projet // // Identifier le cercle du SITE lié quand on est sur une page node-type-projet
if (isNodeTypeProjetPage && svgElement) { // if (isNodeTypeProjetPage && svgElement) {
// On récupère le lien vers le site lié dans le bloc "Site lié" // // On récupère le lien vers le site lié dans le bloc "Site lié"
const linkedSiteLink = document.querySelector('.field_field_site_projet article.node-type-site a[href*="/sites/"]'); // const linkedSiteLink = document.querySelector('.field_field_site_projet article.node-type-site a[href*="/sites/"]');
if (linkedSiteLink) { // if (linkedSiteLink) {
// On normalise le chemin (sans domaine) de l'URL du site // // On normalise le chemin (sans domaine) de l'URL du site
const sitePath = new URL(linkedSiteLink.getAttribute('href'), window.location.origin).pathname; // const sitePath = new URL(linkedSiteLink.getAttribute('href'), window.location.origin).pathname;
// On cherche le cercle dont le data-url pointe vers le même site // // On cherche le cercle dont le data-url pointe vers le même site
const correspondingCircle = Array.from(svgElement.querySelectorAll('circle.site-link')).find(circle => { // const correspondingCircle = Array.from(svgElement.querySelectorAll('circle.site-link')).find(circle => {
const circleUrl = circle.getAttribute('data-url'); // const circleUrl = circle.getAttribute('data-url');
if (!circleUrl) return false; // if (!circleUrl) return false;
const circlePath = new URL(circleUrl, window.location.origin).pathname; // const circlePath = new URL(circleUrl, window.location.origin).pathname;
return circlePath === sitePath; // return circlePath === sitePath;
}); // });
if (correspondingCircle) { // if (correspondingCircle) {
currentPageCircle = correspondingCircle; // currentPageCircle = correspondingCircle;
currentPageCircle.setAttribute('fill', 'red'); // Met en rouge le cercle du site lié // currentPageCircle.setAttribute('fill', 'red'); // Met en rouge le cercle du site lié
} // }
} // }
} // }
// Identifier le cercle du SITE lié quand on est sur une page node-type-ressource // // Identifier le cercle du SITE lié quand on est sur une page node-type-ressource
if (isNodeTypeRessourcePage && svgElement) { // if (isNodeTypeRessourcePage && svgElement) {
// On récupère le(s) nom(s) de site dans le champ .field_field_site // // On récupère le(s) nom(s) de site dans le champ .field_field_site
// Ici on part sur le premier (simple à gérer, extensible ensuite si besoin) // // Ici on part sur le premier (simple à gérer, extensible ensuite si besoin)
const siteNameNode = document.querySelector('.field_field_site > div:not(.field) div'); // const siteNameNode = document.querySelector('.field_field_site > div:not(.field) div');
if (siteNameNode) { // if (siteNameNode) {
const rawSiteName = siteNameNode.textContent || ''; // const rawSiteName = siteNameNode.textContent || '';
// Normalisation basique pour éviter les soucis d'espaces / accents insécables // // Normalisation basique pour éviter les soucis d'espaces / accents insécables
const normalize = (str) => // const normalize = (str) =>
str.replace(/\u00a0/g, ' ') // remplace les espaces insécables // str.replace(/\u00a0/g, ' ') // remplace les espaces insécables
.replace(/\s+/g, ' ') // compresse les espaces multiples // .replace(/\s+/g, ' ') // compresse les espaces multiples
.trim() // .trim()
.toLowerCase(); // .toLowerCase();
const targetName = normalize(rawSiteName); // const targetName = normalize(rawSiteName);
const circles = svgElement.querySelectorAll('circle.site-link'); // const circles = svgElement.querySelectorAll('circle.site-link');
circles.forEach(circle => { // circles.forEach(circle => {
const contentHtml = circle.getAttribute('data-content') || ''; // const contentHtml = circle.getAttribute('data-content') || '';
// On crée un élément temporaire pour parser le HTML de data-content // // On crée un élément temporaire pour parser le HTML de data-content
const tmp = document.createElement('div'); // const tmp = document.createElement('div');
tmp.innerHTML = contentHtml; // tmp.innerHTML = contentHtml;
// En général, le nom est dans le <strong> // // En général, le nom est dans le <strong>
const strong = tmp.querySelector('strong'); // const strong = tmp.querySelector('strong');
const circleNameRaw = strong ? strong.textContent : tmp.textContent; // const circleNameRaw = strong ? strong.textContent : tmp.textContent;
const circleName = normalize(circleNameRaw || ''); // const circleName = normalize(circleNameRaw || '');
if (circleName === targetName) { // if (circleName === targetName) {
currentPageCircle = circle; // currentPageCircle = circle;
currentPageCircle.setAttribute('fill', 'red'); // surligne le site lié // currentPageCircle.setAttribute('fill', 'red'); // surligne le site lié
} // }
}); // });
} // }
} // }
// Fonction pour afficher le popup // Fonction pour afficher le popup
function showPopup(content) { function showPopup(content) {