From c9579f6346befa76eb1289922f5135a6610bcf29 Mon Sep 17 00:00:00 2001 From: Kerboul Date: Sun, 27 Apr 2025 15:07:26 +0200 Subject: [PATCH] =?UTF-8?q?Ajout=20de=20la=20gestion=20des=20projets=20act?= =?UTF-8?q?ifs=20pour=20la=20cam=C3=A9ra=20:=20v=C3=A9rification=20avant?= =?UTF-8?q?=20de=20d=C3=A9marrer=20un=20nouveau=20timelapse,=20r=C3=A9init?= =?UTF-8?q?ialisation=20lors=20de=20l'arr=C3=AAt=20de=20la=20cam=C3=A9ra?= =?UTF-8?q?=20et=20validation=20lors=20de=20l'upload=20manuel.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/core/routes.js | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/js/core/routes.js b/js/core/routes.js index 20a526e..22ef7ab 100644 --- a/js/core/routes.js +++ b/js/core/routes.js @@ -1,6 +1,7 @@ // Global variables let global_project_list; let current_project = ""; +let active_camera_project = null; // ID du projet actuellement utilisé par la caméra function formatDate(isoString) { const date = new Date(isoString); @@ -184,6 +185,16 @@ async function renderVideo(id){ async function start_timelapse(id,frequency,nbimages){ try { + // Vérifier si un autre projet est déjà actif avec la caméra + if (active_camera_project !== null && active_camera_project !== id) { + const confirmation = confirm(`Un autre projet (ID: ${active_camera_project}) est déjà en cours avec la caméra. Voulez-vous arrêter ce projet et configurer la caméra pour le projet actuel?`); + if (!confirmation) { + alert("Configuration annulée. La caméra reste configurée pour le projet précédent."); + return false; + } + // Si l'utilisateur confirme, on continue et on va redéfinir active_camera_project + } + // Utilisation de plusieurs formats possibles pour garantir que le backend reçoit l'ID const mydata = JSON.stringify({ project_id: id, // Format avec underscore (convention standard REST) @@ -203,6 +214,9 @@ async function start_timelapse(id,frequency,nbimages){ data: mydata }); + // Définir ce projet comme le projet actif pour la caméra + active_camera_project = id; + alert("Configuration de la caméra réussie"); return response; } catch (error) { @@ -225,6 +239,9 @@ async function stopCamera(id){ data: mydata }); + // Réinitialiser le statut du projet actif sur la caméra + active_camera_project = null; + alert("La caméra a été arrêtée avec succès"); return response; } catch (error) { @@ -235,6 +252,17 @@ async function stopCamera(id){ async function manualUpload(imageFile, projectId, timestamp, temperature, humidity) { try { + // Vérifier que l'upload est fait pour le projet actif de la caméra + if (active_camera_project === null) { + alert("Aucun projet n'est actif avec la caméra. Veuillez configurer un projet avant d'effectuer un upload manuel."); + return false; + } + + if (projectId !== active_camera_project) { + alert(`L'upload manuel n'est possible que pour le projet actif (ID: ${active_camera_project}). Vous essayez d'uploader pour le projet ${projectId}.`); + return false; + } + // Create FormData to send the file and metadata const formData = new FormData(); formData.append('image', imageFile); @@ -251,10 +279,10 @@ async function manualUpload(imageFile, projectId, timestamp, temperature, humidi contentType: false, // Lets browser set the content type with boundary }); - alert("Image uploaded successfully"); + alert("Image téléchargée avec succès"); return response; } catch (error) { - alert("Error uploading image: " + error); + alert("Erreur lors du téléchargement de l'image : " + error); throw error; } }