FUSIOONNNNN #1

Merged
kerboul merged 4 commits from dev into main 2025-04-27 12:36:19 +02:00
3 changed files with 85 additions and 30 deletions
Showing only changes of commit 091133ca99 - Show all commits

View File

@@ -197,8 +197,10 @@ async function start_timelapse(id,frequency,nbimages){
data: mydata data: mydata
}); });
alert("data retrieval started:", response); alert("Configuration de la caméra réussie");
return response;
} catch (error) { } catch (error) {
alert("Erreur lors de la configuration de la caméra: " + error);
throw error; throw error;
} }
} }
@@ -216,9 +218,10 @@ async function stopCamera(id){
data: mydata data: mydata
}); });
alert("Camera stopped succesfully :", response); alert("La caméra a été arrêtée avec succès");
return response;
} catch (error) { } catch (error) {
alert("Error stopping the camera :", error); alert("Erreur lors de l'arrêt de la caméra : " + error);
throw error; throw error;
} }
} }

View File

@@ -37,8 +37,9 @@ function formatStatusWithColor(status) {
colorClass = "status-idle"; colorClass = "status-idle";
break; break;
case 3: case 3:
statusText = "En cours d'arrêt"; statusText = "En cours d\'arrêt";
colorClass = "status-stopping"; colorClass = "status-stopping";
break; // Ajout du break manquant ici
default: default:
statusText = "Inconnu"; statusText = "Inconnu";
colorClass = "status-unknown"; colorClass = "status-unknown";
@@ -149,6 +150,14 @@ function setupCarousel(global_project_list) {
deleteButton.addEventListener('click', (event) => { deleteButton.addEventListener('click', (event) => {
event.stopPropagation(); event.stopPropagation();
const projectName = project.name; 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('alertMessage').textContent = `Veux-tu vraiment supprimer le projet : ${projectName} ?`;
document.getElementById('customAlert').style.display = 'block'; document.getElementById('customAlert').style.display = 'block';

View File

@@ -86,9 +86,13 @@ document.addEventListener("DOMContentLoaded", async () => {
const frequency = days * 1440 + hours * 60 + minutes; const frequency = days * 1440 + hours * 60 + minutes;
if(frequency >= 3) { if(frequency >= 3) {
const nbrimages = document.getElementById("totalImages").value; const nbrimages = document.getElementById("totalImages").value;
start_timelapse(projectId, frequency, nbrimages).then(() => { try {
// Attendre que la requête API soit terminée avant de recharger la page
await start_timelapse(projectId, frequency, nbrimages);
location.reload(); location.reload();
}); } catch (error) {
console.error("Erreur lors du démarrage du timelapse:", error);
}
} else { } else {
alert("La fréquence doit être supérieure à 3 minutes !"); alert("La fréquence doit être supérieure à 3 minutes !");
} }
@@ -98,8 +102,13 @@ document.addEventListener("DOMContentLoaded", async () => {
document document
.getElementById("stop-camera") .getElementById("stop-camera")
.addEventListener("click", async () => { .addEventListener("click", async () => {
stopCamera(projectId); try {
// Attendre que la requête API soit terminée avant de recharger la page
await stopCamera(projectId);
location.reload(); location.reload();
} catch (error) {
console.error("Erreur lors de l'arrêt de la caméra:", error);
}
}); });
} }
}); });
@@ -379,9 +388,14 @@ async function generateViewMetric(projectId) {
if (measurements != 404) { if (measurements != 404) {
let samples; let samples;
if (videoId != -1) { if (videoId != -1) {
try {
console.log("videoId", videoId);
currentVideoDatas = await getDataVideoFromApi(videoId); currentVideoDatas = await getDataVideoFromApi(videoId);
samples = JSON.parse(currentVideoDatas[0]["measurement_ids"]); console.log("currentVideoDatas", currentVideoDatas);
if (currentVideoDatas[0].status != 0) { // 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 = ` videoPlaceHolder.innerHTML = `
<video class="video" controls> <video class="video" controls>
<source src="${api_url}/videos/file/${videoId}" type="video/mp4"> <source src="${api_url}/videos/file/${videoId}" type="video/mp4">
@@ -397,6 +411,21 @@ async function generateViewMetric(projectId) {
showConfirmationAlert(videoId); showConfirmationAlert(videoId);
}); });
tempoMeasure = filterAndSortMeasurementsByNumber(measurements, samples); 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 = `<h2>Données de vidéo non disponibles</h2>`;
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 = `<h2>Erreur lors de la récupération des données vidéo</h2>`;
samples = measurements.map((measurement) => measurement.id);
tempoMeasure = filterAndSortMeasurementsByIds(measurements, samples);
}
} else { } else {
deletePlaceHolder.innerHTML = ""; deletePlaceHolder.innerHTML = "";
videoPlaceHolder.innerHTML = ""; videoPlaceHolder.innerHTML = "";
@@ -530,10 +559,19 @@ function filterAndSortMeasurementsByNumber(measurements, Numbers) {
function checkVideoPath(videos, name) { function checkVideoPath(videos, name) {
let res = true; let res = true;
// 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) => { videos.forEach((video) => {
const videoName = video.name; const videoName = video.name;
if (videoName == name) res = false; 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; return res;
} }
@@ -579,6 +617,11 @@ async function populateTimelapseLogic(placeholder, id) {
placeholder.innerHTML = `<button class="default-button" id="show-form-button-project"> placeholder.innerHTML = `<button class="default-button" id="show-form-button-project">
<span> Reconfigurer la caméra </span> <span> Reconfigurer la caméra </span>
</button>`; </button>`;
} else if (data.status == 3) {
// Affichage d'un message pour indiquer que l'arrêt est en cours
placeholder.innerHTML = `<button class="default-button" disabled>
<span> Arrêt en cours... </span>
</button>`;
} else { } else {
placeholder.innerHTML = ``; placeholder.innerHTML = ``;
} }