From 091133ca9963b897ad47d26b7e10d9e7a0a11da8 Mon Sep 17 00:00:00 2001 From: Kerboul Date: Sun, 27 Apr 2025 12:34:59 +0200 Subject: [PATCH] =?UTF-8?q?Am=C3=A9lioration=20des=20messages=20d'alerte?= =?UTF-8?q?=20et=20gestion=20des=20erreurs=20pour=20la=20configuration=20e?= =?UTF-8?q?t=20l'arr=C3=AAt=20de=20la=20cam=C3=A9ra.=20Ajout=20de=20v?= =?UTF-8?q?=C3=A9rifications=20pour=20emp=C3=AAcher=20la=20suppression=20d?= =?UTF-8?q?e=20projets=20en=20cours=20de=20capture.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/core/routes.js | 9 ++-- js/pages/index.js | 11 ++++- js/pages/projet_detail.js | 95 ++++++++++++++++++++++++++++----------- 3 files changed, 85 insertions(+), 30 deletions(-) diff --git a/js/core/routes.js b/js/core/routes.js index 49cd4ca..c116ad6 100644 --- a/js/core/routes.js +++ b/js/core/routes.js @@ -197,8 +197,10 @@ async function start_timelapse(id,frequency,nbimages){ data: mydata }); - alert("data retrieval started:", response); + alert("Configuration de la caméra réussie"); + return response; } catch (error) { + alert("Erreur lors de la configuration de la caméra: " + error); throw error; } } @@ -216,9 +218,10 @@ async function stopCamera(id){ data: mydata }); - alert("Camera stopped succesfully :", response); + alert("La caméra a été arrêtée avec succès"); + return response; } catch (error) { - alert("Error stopping the camera :", error); + alert("Erreur lors de l'arrêt de la caméra : " + error); throw error; } } diff --git a/js/pages/index.js b/js/pages/index.js index f6298c0..8cfc2f7 100644 --- a/js/pages/index.js +++ b/js/pages/index.js @@ -37,8 +37,9 @@ function formatStatusWithColor(status) { colorClass = "status-idle"; break; case 3: - statusText = "En cours d'arrêt"; + statusText = "En cours d\'arrêt"; colorClass = "status-stopping"; + break; // Ajout du break manquant ici default: statusText = "Inconnu"; colorClass = "status-unknown"; @@ -149,6 +150,14 @@ function setupCarousel(global_project_list) { deleteButton.addEventListener('click', (event) => { event.stopPropagation(); const projectName = project.name; + const projectStatus = parseInt(project.status); + + // Vérifier si le projet est en cours de capture (statut 1) ou en cours d'arrêt (statut 3) + if (projectStatus === 1 || projectStatus === 3) { + alert(`Impossible de supprimer "${projectName}" car sa capture est ${projectStatus === 1 ? 'en cours' : 'en cours d\'arrêt'}.\nVeuillez d'abord arrêter la procédure de capture.`); + return; + } + document.getElementById('alertMessage').textContent = `Veux-tu vraiment supprimer le projet : ${projectName} ?`; document.getElementById('customAlert').style.display = 'block'; diff --git a/js/pages/projet_detail.js b/js/pages/projet_detail.js index 8067648..e28e6d7 100644 --- a/js/pages/projet_detail.js +++ b/js/pages/projet_detail.js @@ -85,10 +85,14 @@ document.addEventListener("DOMContentLoaded", async () => { const minutes = document.getElementById("minutes").value; const frequency = days * 1440 + hours * 60 + minutes; if(frequency >= 3) { - const nbrimages = document.getElementById("totalImages").value; - start_timelapse(projectId, frequency, nbrimages).then(() => { + const nbrimages = document.getElementById("totalImages").value; + try { + // Attendre que la requête API soit terminée avant de recharger la page + await start_timelapse(projectId, frequency, nbrimages); location.reload(); - }); + } catch (error) { + console.error("Erreur lors du démarrage du timelapse:", error); + } } else { alert("La fréquence doit être supérieure à 3 minutes !"); } @@ -98,8 +102,13 @@ document.addEventListener("DOMContentLoaded", async () => { document .getElementById("stop-camera") .addEventListener("click", async () => { - stopCamera(projectId); - location.reload(); + try { + // Attendre que la requête API soit terminée avant de recharger la page + await stopCamera(projectId); + location.reload(); + } catch (error) { + console.error("Erreur lors de l'arrêt de la caméra:", error); + } }); } }); @@ -379,24 +388,44 @@ async function generateViewMetric(projectId) { if (measurements != 404) { let samples; if (videoId != -1) { - currentVideoDatas = await getDataVideoFromApi(videoId); - samples = JSON.parse(currentVideoDatas[0]["measurement_ids"]); - if (currentVideoDatas[0].status != 0) { - videoPlaceHolder.innerHTML = ` - `; - } else { - videoPlaceHolder.innerHTML = `

La vidéo n'a pas été rendered

`; + try { + console.log("videoId", videoId); + currentVideoDatas = await getDataVideoFromApi(videoId); + console.log("currentVideoDatas", currentVideoDatas); + // Vérifier que currentVideoDatas existe et contient au moins un élément + if (currentVideoDatas) { + samples = JSON.parse(currentVideoDatas["measurement_ids"]); + if (currentVideoDatas.status != 0) { + videoPlaceHolder.innerHTML = ` + `; + } else { + videoPlaceHolder.innerHTML = `

La vidéo n'a pas été rendered

`; + } + deletePlaceHolder.innerHTML = ` + + `; + document.getElementById("delete-video").addEventListener("click", () => { + showConfirmationAlert(videoId); + }); + tempoMeasure = filterAndSortMeasurementsByNumber(measurements, samples); + } else { + // Si aucune donnée n'est disponible pour cette vidéo + console.warn("Aucune donnée disponible pour la vidéo sélectionnée"); + deletePlaceHolder.innerHTML = ""; + videoPlaceHolder.innerHTML = `

Données de vidéo non disponibles

`; + samples = measurements.map((measurement) => measurement.id); + tempoMeasure = filterAndSortMeasurementsByIds(measurements, samples); + } + } catch (error) { + console.error("Erreur lors de la récupération des données vidéo:", error); + deletePlaceHolder.innerHTML = ""; + videoPlaceHolder.innerHTML = `

Erreur lors de la récupération des données vidéo

`; + samples = measurements.map((measurement) => measurement.id); + tempoMeasure = filterAndSortMeasurementsByIds(measurements, samples); } - deletePlaceHolder.innerHTML = ` - - `; - document.getElementById("delete-video").addEventListener("click", () => { - showConfirmationAlert(videoId); - }); - tempoMeasure = filterAndSortMeasurementsByNumber(measurements, samples); } else { deletePlaceHolder.innerHTML = ""; videoPlaceHolder.innerHTML = ""; @@ -530,10 +559,19 @@ function filterAndSortMeasurementsByNumber(measurements, Numbers) { function checkVideoPath(videos, name) { let res = true; - videos.forEach((video) => { - const videoName = video.name; - if (videoName == name) res = false; - }); + + // Vérifier si videos est un tableau et s'il a une méthode forEach + if (videos && Array.isArray(videos) && videos.length > 0) { + videos.forEach((video) => { + const videoName = video.name; + if (videoName == name) res = false; + }); + } else { + // Si videos n'est pas un tableau valide, on considère qu'aucune vidéo n'existe + // et donc n'importe quel nom est valide + console.log("Aucune vidéo existante détectée"); + } + return res; } @@ -579,6 +617,11 @@ async function populateTimelapseLogic(placeholder, id) { placeholder.innerHTML = ``; + } else if (data.status == 3) { + // Affichage d'un message pour indiquer que l'arrêt est en cours + placeholder.innerHTML = ``; } else { placeholder.innerHTML = ``; }