diff --git a/js/map.js b/js/map.js index 221df93..3723024 100644 --- a/js/map.js +++ b/js/map.js @@ -132,10 +132,7 @@ function startGame() { score.innerHTML = "

Correct ✅ : 0

Faux ❌ : 0

" chrono.innerHTML = "

Temps écoulé :

" - const communeElement = document.getElementById('commune') - const timeElement = document.getElementById('time') - - communeObserver(communeElement, timeElement) + communeObserver() ok = document.getElementById('OK') ko = document.getElementById('KO') @@ -146,56 +143,6 @@ function startGame() { resetGame() } -/** - * Observe le contenu de l'élément ayant pour id "commune" - * - * @param {object} communeElement - * @param {object} timeElement - */ -function communeObserver(communeElement, timeElement) { - // Options de l'observateur (quelles sont les mutations à observer) - const config = {childList: true, subtree: true, characterData: true} - - // Fonction callback à éxécuter quand une mutation est observée - const callback = function (mutationsList) { - for (const mutation of mutationsList) { - if (mutation.type == "childList" || mutation.type == "characterData") { - if (communeElement.textContent.trim() !== "...") { - updateTime(timeElement) - } else { - clearInterval(intervalId) - intervalId = null - } - } - } - } - - // Crée une instance de l'observateur liée à la fonction de callback - const observer = new MutationObserver(callback) - - // Commence à observer le noeud cible pour les mutations précédemment configurées - observer.observe(communeElement, config) -} - -/** - * Mets à jour le contenu de l'élément ayant l'id "time" - * - * @param {object} timeElement - */ -function updateTime(timeElement) { - intervalId = setInterval(() => { - gameTime++ - - if (gameTime >= 60) { - gameMinute = String(gameTime / 60).split('.')[0] - gameSecond = gameTime % 60 - timeElement.innerText = `${gameMinute} minute${gameMinute > 1 ? 's' : ''} ${gameSecond} seconde${gameSecond > 1 ? 's' : ''}` - } else { - timeElement.innerText = `${gameTime} seconde${gameTime > 1 ? 's' : ''}` - } - }, 1000) -} - /** * Recommencer la partie */ @@ -203,6 +150,48 @@ function restartGame() { startGame() } +/** + * Observe le contenu de l'élément ayant pour id "commune" + */ +function communeObserver(){ + const communeElement = document.getElementById('commune') + const timeElement = document.getElementById('time') + + // Options de l'observateur (quelles sont les mutations à observer) + const config = { childList: true, subtree: true, characterData: true } + + // Fonction callback à éxécuter quand une mutation est observée + const callback = function (mutationsList) { + for (var mutation of mutationsList) { + if (mutation.type == "childList" || mutation.type == "characterData") { + // Vérifie si le contenu de la balise span n'est pas égal à "..." + if (communeElement.textContent.trim() !== "...") { + // Vérifie si setInterval n'est pas déjà en cours + if (!intervalId) { + intervalId = setInterval(() => { + gameTime++ + + if (gameTime >= 60) { + gameMinute = String(gameTime / 60).split('.')[0] + gameSecond = gameTime % 60 + timeElement.innerText = `${gameMinute} minute${gameMinute > 1 ? 's' : ''} ${gameSecond} seconde${gameSecond > 1 ? 's' : ''}` + } else { + timeElement.innerText = `${gameTime} seconde${gameTime > 1 ? 's' : ''}` + } + }, 1000) + } + } + } + } + } + + // Créé une instance de l'observateur lié à la fonction de callback + const observer = new MutationObserver(callback) + + // Commence à observer le noeud cible pour les mutations précédemment configurées + observer.observe(communeElement, config) +} + /** * Récupère les propriétés des communes depuis un fichier GeoJSON en fonction du code du département. *