Fix observer
This commit is contained in:
@@ -132,10 +132,7 @@ function startGame() {
|
||||
score.innerHTML = "<p style='color: green; font-weight: bold; margin-right: 2em;'>Correct ✅ : <span style='color: black;' id='OK'>0</span></p><p style='color: red; font-weight: bold;'>Faux ❌ : <span style='color: black;' id='KO'>0</span></p>"
|
||||
chrono.innerHTML = "<p>Temps écoulé : <span id='time'></span></p>"
|
||||
|
||||
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.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user