point rouge carte node ressource
This commit is contained in:
@@ -10,6 +10,7 @@ const isLessitesPage = document.querySelector('div#lessites') !== null;
|
|||||||
const isNodeTypeSitePage = document.body.classList.contains('node-type-site');
|
const isNodeTypeSitePage = document.body.classList.contains('node-type-site');
|
||||||
const isCandidaturePage = document.querySelector('main#pour_candidater') !== null;
|
const isCandidaturePage = document.querySelector('main#pour_candidater') !== null;
|
||||||
const isNodeTypeProjetPage = document.body.classList.contains('node-type-projet');
|
const isNodeTypeProjetPage = document.body.classList.contains('node-type-projet');
|
||||||
|
const isNodeTypeRessourcePage = document.body.classList.contains('node-type-ressource');
|
||||||
|
|
||||||
// Identifier le cercle de la page courante pour node-type-site
|
// Identifier le cercle de la page courante pour node-type-site
|
||||||
let currentPageCircle = null;
|
let currentPageCircle = null;
|
||||||
@@ -52,6 +53,45 @@ if (isNodeTypeProjetPage && svgElement) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Identifier le cercle du SITE lié quand on est sur une page node-type-ressource
|
||||||
|
if (isNodeTypeRessourcePage && svgElement) {
|
||||||
|
// 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)
|
||||||
|
const siteNameNode = document.querySelector('.field_field_site > div:not(.field) div');
|
||||||
|
|
||||||
|
if (siteNameNode) {
|
||||||
|
const rawSiteName = siteNameNode.textContent || '';
|
||||||
|
|
||||||
|
// Normalisation basique pour éviter les soucis d'espaces / accents insécables
|
||||||
|
const normalize = (str) =>
|
||||||
|
str.replace(/\u00a0/g, ' ') // remplace les espaces insécables
|
||||||
|
.replace(/\s+/g, ' ') // compresse les espaces multiples
|
||||||
|
.trim()
|
||||||
|
.toLowerCase();
|
||||||
|
|
||||||
|
const targetName = normalize(rawSiteName);
|
||||||
|
|
||||||
|
const circles = svgElement.querySelectorAll('circle.site-link');
|
||||||
|
|
||||||
|
circles.forEach(circle => {
|
||||||
|
const contentHtml = circle.getAttribute('data-content') || '';
|
||||||
|
|
||||||
|
// On crée un élément temporaire pour parser le HTML de data-content
|
||||||
|
const tmp = document.createElement('div');
|
||||||
|
tmp.innerHTML = contentHtml;
|
||||||
|
|
||||||
|
// En général, le nom est dans le <strong>
|
||||||
|
const strong = tmp.querySelector('strong');
|
||||||
|
const circleNameRaw = strong ? strong.textContent : tmp.textContent;
|
||||||
|
const circleName = normalize(circleNameRaw || '');
|
||||||
|
|
||||||
|
if (circleName === targetName) {
|
||||||
|
currentPageCircle = circle;
|
||||||
|
currentPageCircle.setAttribute('fill', 'red'); // surligne le site lié
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Fonction pour afficher le popup
|
// Fonction pour afficher le popup
|
||||||
function showPopup(content) {
|
function showPopup(content) {
|
||||||
|
|||||||
Reference in New Issue
Block a user